<?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>225603</bug_id>
          
          <creation_ts>2021-05-10 11:35:00 -0700</creation_ts>
          <short_desc>Implement a remote Internal Unit in GPUProcess for audio MediaStreamTrack rendering</short_desc>
          <delta_ts>2021-05-21 11:34:08 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225601</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226095</see_also>
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758571</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-10 11:35:00 -0700</bug_when>
    <thetext>Implement a remote Internal Unit in GPUProcess for audio MediaStreamTrack rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758577</commentid>
    <comment_count>1</comment_count>
      <attachid>428188</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-10 11:41:06 -0700</bug_when>
    <thetext>Created attachment 428188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759221</commentid>
    <comment_count>2</comment_count>
      <attachid>428367</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-12 03:36:14 -0700</bug_when>
    <thetext>Created attachment 428367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759227</commentid>
    <comment_count>3</comment_count>
      <attachid>428369</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-12 05:13:22 -0700</bug_when>
    <thetext>Created attachment 428369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759236</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-12 06:31:01 -0700</bug_when>
    <thetext>A follow-up patch will remove the code sending individual audio track content to GPUProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759269</commentid>
    <comment_count>5</comment_count>
      <attachid>428369</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-12 09:31:22 -0700</bug_when>
    <thetext>Comment on attachment 428369
Patch

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp:107
&gt; +    for (auto proxy : m_proxies.values())
&gt; +        proxy-&gt;restartIfNeeded();

Will we want to always relaunch the GPU process as soon as it exits, e.g. if under memory pressure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760818</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-17 11:35:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78114391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761109</commentid>
    <comment_count>7</comment_count>
      <attachid>428924</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-18 03:03:56 -0700</bug_when>
    <thetext>Created attachment 428924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761129</commentid>
    <comment_count>8</comment_count>
      <attachid>428929</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-18 04:45:10 -0700</bug_when>
    <thetext>Created attachment 428929
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761130</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-18 04:45:57 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #5)
&gt; Comment on attachment 428369 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428369&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp:107
&gt; &gt; +    for (auto proxy : m_proxies.values())
&gt; &gt; +        proxy-&gt;restartIfNeeded();
&gt; 
&gt; Will we want to always relaunch the GPU process as soon as it exits, e.g. if
&gt; under memory pressure?

Good point, GPU Process will only restart if playing audio.
Otherwise, it will wait for the unit to start to restart GPU Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761862</commentid>
    <comment_count>10</comment_count>
      <attachid>428929</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-20 00:58:08 -0700</bug_when>
    <thetext>Comment on attachment 428929
Patch for landing

iOS API test failure unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761870</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 01:53:03 -0700</bug_when>
    <thetext>Patch 428929 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761932</commentid>
    <comment_count>12</comment_count>
      <attachid>429164</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-20 06:45:02 -0700</bug_when>
    <thetext>Created attachment 429164
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762328</commentid>
    <comment_count>13</comment_count>
      <attachid>429273</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-21 02:01:27 -0700</bug_when>
    <thetext>Created attachment 429273
Fix small regression compared to previous approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762329</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-21 02:02:00 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; Created attachment 429273 [details]
&gt; Fix small regression compared to previous approach

Regression was introduced by start being called for every source added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762330</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 02:02:45 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762331</commentid>
    <comment_count>16</comment_count>
      <attachid>429274</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-21 02:04:02 -0700</bug_when>
    <thetext>Created attachment 429274
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762342</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 02:53:45 -0700</bug_when>
    <thetext>Committed r277852 (237994@main): &lt;https://commits.webkit.org/237994@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429274.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762405</commentid>
    <comment_count>18</comment_count>
      <attachid>429274</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 07:37:23 -0700</bug_when>
    <thetext>Comment on attachment 429274
Patch for landing

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

&gt; Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:111
&gt;          auto locker = holdLock(m_sourcesLock);

Is m_sourcesLock only protecting m_sourcesCopy and not m_sources? If so, can it be renamed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762458</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-21 10:06:17 -0700</bug_when>
    <thetext>Yes, it should be renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762494</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 11:31:11 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #19)
&gt; Yes, it should be renamed.

I am doing it now and adopting CheckedLock at the same time. Will cc you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762499</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 11:34:08 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; (In reply to youenn fablet from comment #19)
&gt; &gt; Yes, it should be renamed.
&gt; 
&gt; I am doing it now and adopting CheckedLock at the same time. Will cc you.

-&gt; https://bugs.webkit.org/show_bug.cgi?id=226095</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428188</attachid>
            <date>2021-05-10 11:41:06 -0700</date>
            <delta_ts>2021-05-12 03:36:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225603-20210510204104.patch</filename>
            <type>text/plain</type>
            <size>58965</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM5NzJmZDYzNzNkZjI2ZTIy
Y2FjMWUwYjZkMDdiYjA4ZjY3Nzg3YzUuLmNlNzlhYTAzOGY4Mzg4MjcwNDBiZDY4ZTViZGUxZGU2
ZDk5ZmFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDUtMTAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgYW4gSW50ZXJuYWxVbml0IGJ5IGNyZWF0aW5nIGEgcmluZyBidWZmZXIgdGhhdCBn
ZXRzIHdyaXR0ZW4gb24gV2ViUHJvY2VzcyBhbmQgcmVhZCBvbiBHUFVQcm9jZXNzIGJ5IGFuIGF1
ZGlvIHVuaXQuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpzdGFydCk6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjp+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVV
bml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpkZWxldGVVbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpzdGFy
dFVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnN0b3BVbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpzZXRB
dWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6OnJlbmRlckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpVbml0OjpVbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojp+VW5pdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0
b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpVbml0OjpyZW5kZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpzdGFydCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6YWRk
KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmNyZWF0ZVJlbW90ZUludGVybmFsVW5p
dCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
S2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5OjpQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6On5Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6
OmNyZWF0ZVJlbW90ZVVuaXQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eTo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6UHJveHk6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzZXRBdWRpb091dHB1dERl
dmljZSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlByb3h5OjpzdG9wVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnRUaHJlYWQp
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlByb3h5OjpyZXN0YXJ0SWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyk6CisK
IDIwMjEtMDUtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEhhdmUgSVBDOjpTZW1hcGhvcmU6OndhaXQgcmV0dXJuIGEgc3RhdGUgYm9vbGVhbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGY5ZmY3MTYy
MjQ2Zjc1MzFkYTE0YTc1NzQ3NDlmNThhMjI3YmRiNzEuLjM0NTcwOGEyNmU2ZWJmMjUzZjk5ZGI0
ZTkxODgxMmNiYjNkOTY2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTQ3LDYgKzQ3LDcgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNzU0N2JlYTllY2RhNjE1NDdmZGNiZjk5ODJi
MzU1MTk3OTJmMTM0NS4uZWYwMzI2ZjBkYTllYjA1OGExMWVmNThlY2Y4NDRjM2JmM2VhNzc5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC0xNTIsNiArMTUyLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWcKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5l
ck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvSGFyZHdhcmVM
aXN0ZW5lck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4YTU3YTQ1ZDVjZDc2MjY0OTllYzgz
NDBiYmIwMjlmY2MyODk2NWRjLi5iMzk4OTZjODMzMGIyYTE5YzIxZGVhYzQ2N2E4Y2Q3YmJjNjFl
MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNTEsNiArMjUxLDcgQEAgTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyIFwK
IAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBc
CisJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL0dQVVByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmOTAyMDhkN2Y2
Y2MwZmRmMmJjNTM3ODhhMGJlYmUwNWJiYzMxNTQwLi41ZDc1NDhkNmQ4MjI4NTg5YTM0ZjNiNDll
NTQ3ZjBiNzNjMWIwYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSAiUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKQEAgLTM4
MSw2ICszODMsMTQgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKIAogICAgIHJldHVybiAqbV91
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQorCitSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpCit7
CisgICAgaWYgKCFtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcikKKyAgICAgICAgbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcj4oKnRoaXMpOworCisgICAgcmV0dXJuICptX2F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKK30KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdS
SVRFUkRFTEVHQVRFKQpAQCAtNjAyLDYgKzYxMiwxMCBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
QwogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgYXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCmluZGV4IDJmYzBhMjQxNTIwZDI3MzJhYWVmY2E4MGQ5MTkyODZkM2U1MzEw
ZTAuLjk5NDMwOTlhN2MyYTE5Yzk3MzJkNDY2NDkxOWI4OTZhNDY3NTk0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApA
QCAtNjEsNiArNjEsNyBAQCBjbGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
OwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBjbGFzcyBSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Owog
Y2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OwpAQCAtMTU5LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5JiB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CisgICAgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBhdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgbWVkaWFSZWNv
cmRlck1hbmFnZXIoKTsKQEAgLTIzOCw2ICsyNDAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjsKICAgICBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXI7CiAgICAgUmVm
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLmNwcAppbmRleCBhOGY5YTg4MmQ0ZjFmYWQzMDY4NGQ1NjBjN2EzZTNjYWZhYjQ3
YWViLi5lZWJjOGM3MjIwYzA5YjU4OTU1NzEwMTYzNjZmZGNjNWRkNzc3Yjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyKCkKIAogdm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6c3RhcnQoKQogewotICAgIG1fcmVuZGVyZXItPnN0YXJ0KCk7CisgICAgbV9yZW5kZXJl
ci0+c3RhcnQoW10geyB9KTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ3
ZWY4ZjI3NzVkMmNhOTAwNjdjMTQ2ZGUxY2YzYzUyOTIzNjQ1YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxp
c3QuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6VW5pdD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+JiYpOwor
ICAgIH5Vbml0KCk7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc3RvcCgpOworICAgIHZv
aWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CisgICAgT1NTdGF0dXMgcmVu
ZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWludDY0X3Qgc2FtcGxl
VGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOworCitw
cml2YXRlOgorICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiwgY29uc3QgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKKworICAgIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gbV9sb2Nh
bFVuaXQ7CisgICAgdWludDY0X3QgbV9yZWFkT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1f
ZnJhbWVDaHVua1NpemUgeyAwIH07CisgICAgSVBDOjpTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhv
cmU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworI2VuZGlmCisgICAgYm9vbCBtX2lzUGxheWluZyB7
IGZhbHNlIH07Cit9OworCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcigpCit7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVVbml0KEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCk+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFtX3VuaXRzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3VuaXRzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVl
UmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6VW5pdD4oaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKSwgV1RGTW92ZShjYWxsYmFjaykpKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmRlbGV0ZVVuaXQoQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKCFtX3VuaXRzLnJlbW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fdW5pdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1
cmUoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OnN0YXJ0VW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYg
c2VtYXBob3JlKQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmll
cikpCisgICAgICAgIHVuaXQtPnN0YXJ0KGlwY0hhbmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBu
dW1iZXJPZkZyYW1lcywgV1RGTW92ZShzZW1hcGhvcmUpKTsKK30KKwordm9pZCBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnN0b3BVbml0KEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmllcikpCisg
ICAgICAgIHVuaXQtPnN0b3AoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRldmljZUlkKQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0
cy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHVuaXQtPnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRl
dmljZUlkKTsKK30KKworc3RhdGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0OjpSZW5kZXJDYWxsYmFjayByZW5kZXJDYWxsYmFjayhSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQmIHVuaXQpCit7CisgICAg
cmV0dXJuIFsmdW5pdF0oYXV0byBzYW1wbGVDb3VudCwgYXV0byYgbGlzdCwgYXV0byBzYW1wbGVU
aW1lLCBhdXRvIGhvc3RUaW1lLCBhdXRvJiBmbGFncykgeworICAgICAgICByZXR1cm4gdW5pdC5y
ZW5kZXIoc2FtcGxlQ291bnQsIGxpc3QsIHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBmbGFncyk7Cisg
ICAgfTsKK30KKworUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpVbml0OjpVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjaykKKyAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAg
LCBtX2xvY2FsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDo6Y3JlYXRlTG9jYWxJbnRlcm5hbFVuaXQocmVuZGVyQ2FsbGJhY2soKnRoaXMpKSkK
K3sKKyAgICBtX2xvY2FsVW5pdC0+cmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
YXV0byYmIGRlc2NyaXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAh
ZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSwgMCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9mcmFtZUNodW5rU2l6ZSA9IHN0ZDo6bWF4
KFdlYkNvcmU6OkF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkucHJlZmVycmVkQnVmZmVyU2l6ZSgpKTsKKyAgICAgICAgY2FsbGJh
Y2soKmRlc2NyaXB0aW9uLCBtX2ZyYW1lQ2h1bmtTaXplKTsKKyAgICB9KTsKK30KKworUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojp+
VW5pdCgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c3RhcnQoY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBo
b3JlJiYgc2VtYXBob3JlKQoreworICAgIGlmIChtX2lzUGxheWluZykKKyAgICAgICAgc3RvcCgp
OworCisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAg
bV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8UmVh
ZE9ubHlTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oaGFuZGxlKSwgZGVzY3JpcHRpb24sIG51bWJl
ck9mRnJhbWVzKTsKKyAgICBtX3JlbmRlclNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsK
KyAgICBtX2xvY2FsVW5pdC0+c3RhcnQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0b3AoKQoreworICAg
IG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgbV9sb2NhbFVuaXQtPnN0b3AoKTsKK30KKwordm9p
ZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlVuaXQ6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7Cisg
ICAgbV9sb2NhbFVuaXQtPnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKK30KKworT1NT
dGF0dXMgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpVbml0OjpyZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGxp
c3QsIHVpbnQ2NF90LCBkb3VibGUsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJikKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSAtMTsK
KworICAgIGlmIChtX3JpbmdCdWZmZXItPmZldGNoSWZIYXNFbm91Z2hEYXRhKCZsaXN0LCBzYW1w
bGVDb3VudCwgbV9yZWFkT2Zmc2V0KSkgeworICAgICAgICBtX3JlYWRPZmZzZXQgKz0gc2FtcGxl
Q291bnQ7CisgICAgICAgIHN0YXR1cyA9IG5vRXJyOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzYW1wbGVDb3VudDsgaSArPSBtX2ZyYW1lQ2h1bmtTaXplKQorICAgICAg
ICBtX3JlbmRlclNlbWFwaG9yZS5zaWduYWwoKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGRlNjI4NTcwMjg3ZDQzYWU0MTUxNGRjODQ5Y2VmNDNkYWZhZmRkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK30KKyNlbmRp
ZgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOwor
Y2xhc3MgU2VtYXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2Ns
YXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3MgVW5p
dDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFVu
aXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYm
KTsKKyAgICB2b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYpOworCisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWExZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKSAt
PiAoV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXplX3Qg
ZnJhbWVDaHVua1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisg
ICAgU3RhcnRVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVyU2Vt
YXBob3JlKQorICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091dHB1
dERldmljZShXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOWQ4ZWZhYTUzMDJmNjk3
ZmM5OTI2M2RjOWE4MjNmYjZhZmI1ZjE4Mi4uMTAxYWJmOGZlNTYwNjkxMGY3OTlmZDA1MGExN2Y3
NzNmYTNhMDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0zMDcsNiArMzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RGlz
cGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCA1OGNjODI1MzM1OTQyYjQ4OGI4ZWE3YTBhZjI5NzMxMmY3ZjI4MzU1Li41NzU5
OTBjMGI4MmJhNDZkMDE0YWUyZjg5MGFiYmIyMzk4NDZmNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcy
Niw1ICs3MjYsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
K1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCAwNGVhYTc5ZjYxNjA5NjU1NDEyNjc5ZjM2OTY3MTljNmYy
MWEwY2VjLi43YTAyOWQ4OTUwNjlhYjE0NzIxZDIzNzRhNGRjMTQ0ZWE3MDYwMjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tbSBAbm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2YvTW9k
dWxlQ0YuY3BwCiAKQEAgLTYxMyw2ICs2MTQsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2Nv
Y29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTc1ZTZiNjU0MzVmNzVlN2MyYmFmMDQzNDJjYjc3YThk
N2E1YzhmMS4uMTZhNjIxZGIyYzEzODA4ZDQzNDBkNjZmOWNmNTBlZWY5ZmRhN2RkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODI3
LDYgKzM4MjcsMTIgQEAKIAkJNDFCN0VENkYyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5T
UmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcw
MjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVn
aXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdp
c3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4ODUy
NjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFD
M0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg5MDI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg5MTI2NDkzQjdC
MDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM1Mzc4RjIxRjEzNjJEMDA4
QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclByaXZhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MzcsNiArODQ0Myw5IEBACiAJCQkJNDFGQ0Q2QUUyM0NDQzI2
MTAwQzYyNTY3IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLywKIAkJCQk0
MUZDRDZBRDIzQ0NDMjYwMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
aCAqLywKIAkJCQk0MUZDRDZBRjIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJZGVudGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERF
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5o
ICovLAorCQkJCTQxQzNCODg2MjY0NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwICovLAorCQkJCTQxQzNCODg1MjY0NDRB
QUIwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuaCAqLywKIAkJCQk0MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29k
ZWNzLmNwcCAqLywKIAkJCQk0MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29k
ZWNzLmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2MkM3QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVj
cy5tZXNzYWdlcy5pbiAqLywKQEAgLTg0NjgsNiArODQ3Nyw5IEBACiAJCQkJNDFENjQ1NTQyM0ND
QjkyMjAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAq
LywKIAkJCQk0MUQ2NDU1MzIzQ0NCOTIxMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuaCAqLywKIAkJCQk0MUQ2NDU1MjIzQ0NCOTIxMDA0ODZFMEUgLyogUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFD
M0I4OTEyNjQ5M0I3QjAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFDM0I4OTAyNjQ5M0I3QjAwNEVE
NERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5oICovLAorCQkJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDFENjQ1NTYyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlci5jcHAgKi8sCiAJCQkJNDFENjQ1NTcyM0NDQjk2OTAwNDg2RTBF
IC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oICovLAogCQkJ
CTQxRDY0NTU1MjNDQ0I5NjkwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMTY1M2I2N2RmZDQyOGE5
MTRkMzAzODEwNmFhOGE4ZjhiOWY3NjlhMi4uNTUwZjk5ZTViYTY5NmMzN2ZmYTZkMzYyYjVmOTJl
YjhmZTQ3NjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMjcsMTYgKzI3LDI2IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFw
LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Np
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTZW1hcGhvcmU7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRleCA2YjliMDY0
YmRiZGVjYjNmNDA4ZDY1OWVhNDU0MTUyN2JkYjY3ZDhmLi4wNzhhMDJmZDkzNjc1ZGYzMjQ0M2Vh
NjQyOTE5YTU5ZTFiM2NiOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuY3BwCkBAIC02NCwxMCArNjQsMTEgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6aW5pdGlhbGl6ZSgpCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OkNyZWF0ZVJlbmRlcmVyIHsg
bV9pZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjpzdGFydCgpCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdGFydChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9pc1BsYXlpbmcg
PSB0cnVlOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OlN0YXJ0IHsgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBjYWxs
YmFjaygpOwogfQogCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdG9wKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCmluZGV4IDk5ZTQ5Yzc3ODA4ZTIw
YzQ3MjI4NmJkMmQxYWVkMDg2OTcyMmE5YzUuLjcwODY5YTFmNWE0ZDlmMTM4OTY4NWIyOGY2OGI3
NDRlYjBlOGEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVt
b3J5KiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNp
emVfdCBmcmFtZUNvdW50KTsKIAogICAgIC8vIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyCi0gICAgdm9pZCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjZhZDhmOWQ4ZmQxMjFhMmY4NTYx
MzM0MmRmYzIzOGQ3ODRmNDJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRl
bnRpZmllclR5cGUgeyB9OwordXNpbmcgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjc2MjllMjUyMTRiMzc3
ZTJiYmM0MzNhYzdjNzY3Mjk5MGJmODZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJ
UENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dl
YkF1ZGlvQnVmZmVyTGlzdC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQcm94eShXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisgICAgflByb3h5
KCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAg
dm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkludGVybmFsVW5pdCBBUEkuCisgICAgdm9pZCBzdGFydCgp
IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVGb3JtYXRE
ZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2
aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBmcmFtZUNodW5rU2l6ZSk7
CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgdm9pZCBzdG9wVGhyZWFkKCk7CisgICAg
dm9pZCBzdGFydFRocmVhZCgpOworICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5pdCgpOworCisgICAg
V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRl
ckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworICAgIERlcXVlPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzOworCisgICAgU3RyaW5nIG1fZGV2aWNlSWQ7
CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZmZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIGludDY0
X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAg
fTsKKyAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRyPFRocmVhZD4gbV90
aHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9wVGhyZWFkIHsgZmFsc2Ug
fTsKK307CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjphZGQoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJveGllcy5hZGQocHJveHkuaWRl
bnRpZmllcigpLCBtYWtlV2Vha1B0cihwcm94eSkpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKFByb3h5JiBwcm94eSkK
K3sKKyAgICBtX3Byb3hpZXMucmVtb3ZlKHByb3h5LmlkZW50aWZpZXIoKSk7Cit9CisKK1VuaXF1
ZVJlZjxXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4g
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVS
ZW1vdGVJbnRlcm5hbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eT4oV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25D
bG9zZWQoKQoreworICAgIGZvciAoYXV0byBwcm94eSA6IG1fcHJveGllcy52YWx1ZXMoKSkKKyAg
ICAgICAgcHJveHktPnJlc3RhcnRJZk5lZWRlZCgpOworfQorCitBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94eShXZWJDb3JlOjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJiBy
ZW5kZXJDYWxsYmFjaykKKyAgICA6IG1fcmVuZGVyQ2FsbGJhY2soV1RGTW92ZShyZW5kZXJDYWxs
YmFjaykpCisgICAgLCBtX2lkZW50aWZpZXIoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cigpLmFkZCgqdGhpcyk7CisgICAgY3JlYXRlUmVtb3RlVW5pdCgpOworfQorCitBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojp+UHJveHkoKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcigpLnJlbW92ZSgqdGhpcyk7CisgICAgd2hpbGUgKCFtX2Rl
c2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxi
YWNrcy50YWtlRmlyc3QoKShudWxscHRyKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVSZW1vdGVVbml0KCkK
K3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Q3JlYXRlVW5pdCB7
IG1faWRlbnRpZmllciB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYmIGRl
c2NyaXB0aW9uLCBhdXRvIGZyYW1lQ2h1bmtTaXplKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAm
JiBmcmFtZUNodW5rU2l6ZSkKKyAgICAgICAgICAgIHdlYWtUaGlzLT5pbml0aWFsaXplKGRlc2Ny
aXB0aW9uLCBmcmFtZUNodW5rU2l6ZSk7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6aW5pdGlhbGl6
ZShjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBz
aXplX3QgZnJhbWVDaHVua1NpemUpCit7CisgICAgbV9zZW1hcGhvcmUgPSBtYWtlVW5pcXVlPElQ
Qzo6U2VtYXBob3JlPigpOworICAgIG1fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgICBt
X2ZyYW1lQ2h1bmtTaXplID0gZnJhbWVDaHVua1NpemU7CisKKyAgICB3aGlsZSAoIW1fZGVzY3Jp
cHRpb25DYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tz
LnRha2VGaXJzdCgpKCZkZXNjcmlwdGlvbik7CisKKyAgICBpZiAobV9pc1BsYXlpbmcpCisgICAg
ICAgIHN0YXJ0KCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnQoKQoreworICAgIGlmICghbV9kZXNjcmlwdGlv
bikgeworICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzdG9wVGhyZWFkKCk7CisKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisKKyAgICBt
X251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpICogMjsKKyAgICBt
X3JpbmdCdWZmZXIucmVzZXQoKTsKKyAgICBhdXRvIHN0b3JhZ2UgPSBtYWtlVW5pcXVlUmVmPFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlPihzdGQ6OmJpbmQoJkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VDaGFuZ2VkLCB0aGlzLCBz
dGQ6OnBsYWNlaG9sZGVyczo6XzEsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMiwgc3RkOjpwbGFjZWhv
bGRlcnM6Ol8zKSk7CisgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+
KFdURk1vdmUoc3RvcmFnZSksIG1fZGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1f
bnVtYmVyT2ZGcmFtZXMpOworCisgICAgbV9idWZmZXIgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVm
ZmVyTGlzdD4oKm1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fYnVmZmVy
LT5zZXRTYW1wbGVDb3VudChtX2ZyYW1lQ2h1bmtTaXplKTsKKworICAgIHN0YXJ0VGhyZWFkKCk7
Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBtZW1vcnksIGNvbnN0IENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJhbWVDb3VudCkKK3sKKyAg
ICBpZiAoIWZyYW1lQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIFNoYXJlZE1lbW9yeTo6
SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAobWVtb3J5KQorICAgICAgICBtZW1vcnktPmNyZWF0ZUhh
bmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworCisgICAg
Ly8gRklYTUU6IFNlbmQgdGhlIGFjdHVhbCBkYXRhIHNpemUgd2l0aCBJUENIYW5kbGUuCisjaWYg
T1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gaGFuZGxl
LnNpemUoKTsKKyNlbHNlCisgICAgdWludDY0X3QgZGF0YVNpemUgPSAwOworI2VuZGlmCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpTdGFydFVuaXQgeyBtX2lkZW50aWZpZXIsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCAgZGF0YVNpemUgfSwgZm9ybWF0LCBm
cmFtZUNvdW50LCAqbV9zZW1hcGhvcmUgfSwgMCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcCgpCit7CisgICAg
bV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlN0b3BVbml0
IHsgbV9pZGVudGlmaWVyIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQpCit7CisgICAgbV9kZXZpY2VJZCA9IGRldmljZUlkOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U2V0QXVkaW9PdXRwdXREZXZpY2UgeyBtX2lkZW50aWZp
ZXIsIGRldmljZUlkIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24qKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZGVzY3JpcHRpb24gfHwgIW1fZGVz
Y3JpcHRpb25DYWxsYmFja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZGVzY3JpcHRpb25DYWxs
YmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjYWxsYmFjaygmbV9kZXNjcmlwdGlvbi52YWx1ZSgpKTsKK30KKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wVGhy
ZWFkKCkKK3sKKyAgICBpZiAoIW1fdGhyZWFkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3No
b3VsZFN0b3BUaHJlYWQgPSB0cnVlOworICAgIG1fc2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICBt
X3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBtX3RocmVhZCA9IG51bGxwdHI7Cit9
CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpQcm94eTo6c3RhcnRUaHJlYWQoKQoreworICAgIEFTU0VSVCghbV90aHJlYWQpOworICAgIG1f
c2hvdWxkU3RvcFRocmVhZCA9IGZhbHNlOworICAgIGF1dG8gdGhyZWFkTG9vcCA9IFt0aGlzXSgp
IG11dGFibGUgeworICAgICAgICBtX3dyaXRlT2Zmc2V0ID0gMDsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgLy8gSWYgd2FpdCBmYWlscywgdGhlIHNlbWFwaG9yZSBvbiB0aGUgb3RoZXIgc2lk
ZSB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGFuZCB3ZSBzaG91bGQganVzdCBleGl0IGhlcmUgYW5k
IHdhaXQgdG8gbGF1bmNoIGEgbmV3IHRocmVhZC4KKyAgICAgICAgICAgIGlmICghbV9zZW1hcGhv
cmUtPndhaXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX3No
b3VsZFN0b3BUaHJlYWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlckxpc3QgPSAqbV9idWZmZXItPmxpc3QoKTsKKworICAgICAgICAgICAgQXVkaW9V
bml0UmVuZGVyQWN0aW9uRmxhZ3MgZmxhZ3MgPSAwOworICAgICAgICAgICAgbV9yZW5kZXJDYWxs
YmFjayhtX2ZyYW1lQ2h1bmtTaXplLCBidWZmZXJMaXN0LCBtX3dyaXRlT2Zmc2V0LCBtYWNoX2Fi
c29sdXRlX3RpbWUoKSwgZmxhZ3MpOworCisgICAgICAgICAgICBpZiAoZmxhZ3MgPT0ga0F1ZGlv
VW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2UpCisgICAgICAgICAgICAgICAgQXVkaW9T
YW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZlckxpc3QsIHN0YXRpY19jYXN0PHNpemVfdD4o
bV9mcmFtZUNodW5rU2l6ZSAqIG1fZGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKSkpOworCisg
ICAgICAgICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKCZidWZmZXJMaXN0LCBtX2ZyYW1lQ2h1bmtT
aXplLCBtX3dyaXRlT2Zmc2V0KTsKKyAgICAgICAgICAgIG1fd3JpdGVPZmZzZXQgKz0gbV9mcmFt
ZUNodW5rU2l6ZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fc2hvdWxkU3RvcFRocmVhZCk7CisgICAg
fTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdCB0aHJlYWQiLCBXVEZNb3ZlKHRocmVhZExvb3ApLCBUaHJlYWRU
eXBlOjpBdWRpbywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7Cit9CisKK3ZvaWQgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmVz
dGFydElmTmVlZGVkKCkKK3sKKyAgICBzdG9wVGhyZWFkKCk7CisgICAgY3JlYXRlUmVtb3RlVW5p
dCgpOworICAgIGlmICghbV9kZXZpY2VJZC5pc0VtcHR5KCkpCisgICAgICAgIHNldEF1ZGlvT3V0
cHV0RGV2aWNlKG1fZGV2aWNlSWQpOworICAgIGlmIChtX2lzUGxheWluZykKKyAgICAgICAgc3Rh
cnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZkZWU3MDk0ZDc1YTI0OWUyYzYwYjcyMDAw
YTc2MjQ0MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NP
QSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChX
ZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVy
Q2FsbGJhY2smJik7CisKKyAgICBjbGFzcyBQcm94eTsKKyAgICB2b2lkIGFkZChQcm94eSYpOwor
ICAgIHZvaWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9u
Q2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFdlYWtQdHI8UHJveHk+PiBtX3Byb3hpZXM7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIxOTIzN2Y3ZTk2NzVhNzFjODMwMzA2N2Iz
ZDYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworbWVzc2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6
OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3Qg
ZnJhbWVDaHVua1NpemUpOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGNhOWE5NzgwNjU5NzA2MjI5MDYzYjAxYTI0YjFhODczOGJjOTQ3
NmYuLjk4MGQzMGE5MGM1MmM2YWM5OGVkYjRjNmE0N2UxYWQ2MmE0N2NmOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBUElGcmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VHcm91cEhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYS5oIgpAQCAtMTI2Myw2ICsxMjY0LDE1IEBAIExpYldlYlJUQ0NvZGVjcyYg
V2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXImIFdlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpCit7CisgICAgaWYgKCFtX2F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcikKKyAgICAgICAgbV9hdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIgPSBtYWtlVW5pcXVlPEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4oKTsKKyAgICBy
ZXR1cm4gKm1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OworfQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOTQ3
Njk2MWViNzhkNDg5ZjEzYWNlMGVkMWYyM2M1Zjc5NWMxNDJkOC4uNTljNGU0MTQ2YmJmNjA0M2Qz
ZTYyODM3NzhlOWIzY2U0YjE0ZDE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0xMDksNiArMTA5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjsKIGNsYXNzIEV2ZW50RGlzcGF0Y2hlcjsKIGNsYXNzIEdh
bWVwYWREYXRhOwogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CkBAIC0yNDMsNiArMjQ0LDkg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIExp
YldlYlJUQ0NvZGVjcyYgbGliV2ViUlRDQ29kZWNzKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIGF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcigpOworI2VuZGlmCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCiAgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgbGVnYWN5Q0RNRmFjdG9yeSgp
OwogI2VuZGlmCkBAIC02MzYsNiArNjQwLDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgVVNFKExJQldFQlJUQykKICAgICBSZWZQdHI8TGliV2ViUlRDQ29kZWNzPiBtX2xpYldl
YlJUQ0NvZGVjczsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI+IG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBkYWUxMWUxMjgwMmEyYzhhYjEzNTU1ODJlMzUzZjI5
Yjc1MzhiZDJmLi5iZGFiMzczNWFkNTg4MTIxZThhZGRmNjM2ZGIyMmNhZjNiMTZlNzQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CkBAIC03Nyw4
ICs3OCwxMSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9j
ZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUAogICAgIG1fYXVkaW9GYWN0b3J5LnNl
dFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNz
KTsKICAgICBtX3ZpZGVvRmFjdG9yeS5zZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKHNob3Vs
ZENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzcyk7CiAKLSAgICBpZiAoc2hvdWxkQ2FwdHVyZUF1ZGlv
SW5HUFVQcm9jZXNzKQotICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0
Q3JlYXRvcihXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUpOwor
ICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpIHsKKyAgICAgICAgV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzZXRDcmVhdGVJbnRlcm5hbFVu
aXRGdW5jdGlvbihbXShhdXRvJiYgcmVuZGVyQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIHJldHVy
biBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKS5jcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQoV1RGTW92ZShyZW5k
ZXJDYWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVy
ZUF1ZGlvSW5VSVByb2Nlc3MgfHwgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKQogICAg
ICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1
cmVGYWN0b3J5KG1fYXVkaW9GYWN0b3J5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428367</attachid>
            <date>2021-05-12 03:36:14 -0700</date>
            <delta_ts>2021-05-12 05:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225603-20210512123612.patch</filename>
            <type>text/plain</type>
            <size>57433</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyODgzNDg3NTZlYTE5ZDA2
OWIwMzE3NzY4YzI2OTNhNWRkZTRkNDAuLjUwMzFlNjdlODg1YTM5MzE2OTI0MjlhZDQzOGMxNzJl
ZmJhZGQ2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMjEtMDUtMTIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgYW4gSW50ZXJuYWxVbml0IGJ5IGNyZWF0aW5nIGEgcmluZyBidWZmZXIgdGhhdCBn
ZXRzIHdyaXR0ZW4gb24gV2ViUHJvY2VzcyBhbmQgcmVhZCBvbiBHUFVQcm9jZXNzIGJ5IGFuIGF1
ZGlvIHVuaXQuCisgICAgICAgIEluIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgZWFjaCBh
dWRpbyB0cmFjayB3YXMgc2VudCB0byBHUFVQcm9jZXNzIHRoYXQgd2FzIGRvaW5nIHRoZSBtaXhp
bmcuCisgICAgICAgIFNlbmRpbmcgd2FzIGRvbmUgYnkgc2VuZGluZyBJUEMgbWVzc2FnZSBmb3Ig
ZWFjaCBhdWRpbyBzYW1wbGUsIHdoaWNoIHdhcyBhbHNvIHByb2Nlc3NpbmcgaW5lZmZpY2llbnQu
CisKKyAgICAgICAgV2UgYXJlIG5vdyBjcmVhdGluZyBhbiBBdWRpbyBVbml0IGluIEdQVVByb2Nl
c3MgYW5kIHNpbWlsYXJseSB0byBXZWJBdWRpbyBhc2tpbmcgV2ViUHJvY2VzcyB0byByZW5kZXIg
YXVkaW8gaW4gYSBidWZmZXIgdGhhdCB3aWxsIGJlIGFjdHVhbGx5IHJlbmRlcmVkIGJ5IHRoZSBh
dWRpbyB1bml0LgorICAgICAgICBUaGUgbWl4aW5nIGhhcHBlbnMgaW4gV2ViUHJvY2VzcyBzbyBv
bmx5IG9uZSBidWZmZXIgaXMgc2hhcmVkIGJldHdlZW4gR1BVUHJvY2VzcyBhbmQgV2ViUHJvY2Vz
cywgYW5kIG5vIElQQyBtZXNzYWdlIGlzIHNlbnQgZm9yIGVhY2ggY2h1bmsuCisKKyAgICAgICAg
VGhlIHBvdGVudGlhbCBkb3duc2lkZSBpcyB0aGF0IHRoZSBtaXhpbmcgaXMgZG9uZSB3aXRoIGZp
eGVkIGNodW5rIHNpemUgaW5zdGVhZCBvZiBjaHVuayBzaXplIHJlcXVlc3RlZCBieSB0aGUgYXVk
aW8gdW5pdC4KKyAgICAgICAgVGhpcyBtaWdodCB0cmlnZ2VyIHNvbWUgbGF0ZW5jeSBvciBzb21l
IG92ZXJoZWFkIGlmIHRoZSBmaXhlZCBjaHVuayBzaXplIGlzIHRvbyBmYXIgZnJvbSB3aGF0IHRo
ZSBhdWRpbyB1bml0IGlzIGFza2luZy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OnN0YXJ0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6On5SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmNyZWF0ZVVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmRlbGV0ZVVuaXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OnN0YXJ0VW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RvcFVuaXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6cmVuZGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlVuaXQ6On5Vbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdDo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXRE
ZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5p
bjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
ICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlUmVt
b3RlSW50ZXJuYWxVbml0KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6UHJveHk6OlByb3h5KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6flByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6Y3JlYXRlUmVtb3RlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnNl
dEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmV0cmlldmVGb3JtYXREZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3BUaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
OjpzdGFydFRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0dXJl
UHJvY2Vzc2VzKToKKwogMjAyMS0wNS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW50cm9kdWNlIGFuIGludGVybmFsIHVuaXQgdG8gcmVuZGVyIGF1ZGlv
IE1lZGlhU3RyZWFtVHJhY2socykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCBmOWZmNzE2MjI0NmY3NTMxZGExNGE3NTc0NzQ5ZjU4YTIyN2Jk
YjcxLi4zNDU3MDhhMjZlNmViZjI1M2Y5OWRiNGU5MTg4MTJjYmIzZDk2NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00Nyw2ICs0Nyw3
IEBAICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IDc1NDdiZWE5ZWNkYTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUuLmVmMDMyNmYwZGE5ZWIw
NThhMTFlZjU4ZWNmODQ0YzNiZjNlYTc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTUyLDYgKzE1Miw5IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyTWVzc2FnCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0hhcmR3YXJl
TGlzdGVuZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXNSZXBsaWVz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggOGE1N2E0NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJiMDI5ZmNjMjg5NjVkYy4uYjM5ODk2Yzgz
MzBiMmExOWMyMWRlYWM0NjdhOGNkN2JiYzYxZTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjUxLDYgKzI1MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciBcCiAJR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBiZWJlMDViYmMzMTU0
MC4uNWQ3NTQ4ZDZkODIyODU4OWEzNGYzYjQ5ZTU0N2YwYjczYzFiMGEwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlz
dGVuZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgiCkBAIC0zODEsNiArMzgzLDE0IEBAIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyCiAKICAgICByZXR1cm4gKm1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsK
IH0KKworUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCp0aGlzKTsK
KworICAgIHJldHVybiAqbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI7Cit9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKQEAgLTYwMiw2ICs2MTIs
MTAgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgdXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIGF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyZmMwYTI0MTUy
MGQyNzMyYWFlZmNhODBkOTE5Mjg2ZDNlNTMxMGUwLi45OTQzMDk5YTdjMmExOWM5NzMyZDQ2NjQ5
MTliODk2YTQ2NzU5NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgTG9jYWxB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlcjsKIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKQEAgLTE1OSw2ICsxNjAsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eSgpOworICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CkBAIC0yMzgsNiArMjQw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4g
bV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiAgICAg
UmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1Ry
YWNrUmVuZGVyZXJNYW5hZ2VyOwogICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMzMGViNWFjNWY5NzQ4OTlkZDE1
ZDA0NjY2ZTlkODQ5N2QxYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGll
cy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVW5pdChBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJik7CisgICAgflVuaXQoKTsKKworICAg
IHZvaWQgc3RhcnQoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpT
ZW1hcGhvcmUmJik7CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERl
dmljZShjb25zdCBTdHJpbmcmKTsKKyAgICBPU1N0YXR1cyByZW5kZXIoc2l6ZV90IHNhbXBsZUNv
dW50LCBBdWRpb0J1ZmZlckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRp
bWUsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBtX2xvY2FsVW5pdDsKKyAgICB1aW50NjRf
dCBtX3JlYWRPZmZzZXQgeyAwIH07CisgICAgdWludDY0X3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAg
fTsKKyAgICBJUEM6OlNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdC
dWZmZXI7CisjZW5kaWYKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKK307CisKK1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKK3sK
K30KKworUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjp+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyKCkKK3sKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OmNyZWF0ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBj
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQoIW1fdW5pdHMuY29udGFpbnMoaWRlbnRpZmllcikpOwor
ICAgIG1fdW5pdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVSZWY8UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PihpZGVudGlmaWVy
LCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKGNhbGxi
YWNrKSkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6ZGVsZXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fdW5pdHMu
cmVtb3ZlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91bml0cy5p
c0VtcHR5KCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNz
KCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOworfQorCit2b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3Rh
cnRVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAg
aWYgKGF1dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+
c3RhcnQoaXBjSGFuZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZN
b3ZlKHNlbWFwaG9yZSkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RvcFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1
dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RvcCgp
OworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6c2V0QXVkaW9PdXRwdXREZXZpY2UoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGV2
aWNlSWQpCit7CisgICAgaWYgKGF1dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkK
KyAgICAgICAgdW5pdC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitzdGF0
aWMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxi
YWNrIHJlbmRlckNhbGxiYWNrKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdCYgdW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XShhdXRv
IHNhbXBsZUNvdW50LCBhdXRvJiBsaXN0LCBhdXRvIHNhbXBsZVRpbWUsIGF1dG8gaG9zdFRpbWUs
IGF1dG8mIGZsYWdzKSB7CisgICAgICAgIHJldHVybiB1bml0LnJlbmRlcihzYW1wbGVDb3VudCwg
bGlzdCwgc2FtcGxlVGltZSwgaG9zdFRpbWUsIGZsYWdzKTsKKyAgICB9OworfQorCitSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVu
aXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXpl
X3QpPiYmIGNhbGxiYWNrKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fbG9jYWxVbml0KFdlYkNv
cmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2Nh
bEludGVybmFsVW5pdChyZW5kZXJDYWxsYmFjaygqdGhpcykpKQoreworICAgIG1fbG9jYWxVbml0
LT5yZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3JpcHRpb24p
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikgeworICAg
ICAgICAgICAgY2FsbGJhY2soeyB9LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBtX2ZyYW1lQ2h1bmtTaXplID0gc3RkOjptYXgoV2ViQ29yZTo6QXVkaW9VdGls
aXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5w
cmVmZXJyZWRCdWZmZXJTaXplKCkpOworICAgICAgICBjYWxsYmFjaygqZGVzY3JpcHRpb24sIG1f
ZnJhbWVDaHVua1NpemUpOworICAgIH0pOworfQorCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKK3sKKyAgICBzdG9w
KCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpVbml0OjpzdGFydChjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7
CisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICBzdG9wKCk7CisKKyAgICBtX3JlYWRPZmZz
ZXQgPSAwOworICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtl
VW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlPihoYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIG1f
cmVuZGVyU2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9jYWxVbml0LT5z
dGFydCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxz
ZTsKKyAgICBtX2xvY2FsVW5pdC0+c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRw
dXREZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2FsVW5pdC0+c2V0
QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcihz
aXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0X3QsIGRvdWJs
ZSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKKworICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYgKG1fcmluZ0J1
ZmZlci0+ZmV0Y2hJZkhhc0Vub3VnaERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBtX3JlYWRPZmZz
ZXQpKSB7CisgICAgICAgIG1fcmVhZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAgICAgICAgc3Rh
dHVzID0gbm9FcnI7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBs
ZUNvdW50OyBpICs9IG1fZnJhbWVDaHVua1NpemUpCisgICAgICAgIG1fcmVuZGVyU2VtYXBob3Jl
LnNpZ25hbCgpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYzNzZhOTdjMjFk
OWI2MGFjZGU4ZDFiM2NmMGFhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgU2VtYXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisK
K2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3Mg
VW5pdDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jiwgc2l6ZV90KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFy
dFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9y
ZSYmKTsKKyAgICB2b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYpOworCisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWEx
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CittZXNzYWdlcyAtPiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVy
KSAtPiAoV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXpl
X3QgZnJhbWVDaHVua1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQor
CisgICAgU3RhcnRVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVy
U2VtYXBob3JlKQorICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091
dHB1dERldmljZShXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOWQ4ZWZhYTUzMDJm
Njk3ZmM5OTI2M2RjOWE4MjNmYjZhZmI1ZjE4Mi4uMTAxYWJmOGZlNTYwNjkxMGY3OTlmZDA1MGEx
N2Y3NzNmYTNhMDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0zMDcsNiArMzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA1OGNjODI1MzM1OTQyYjQ4OGI4ZWE3YTBhZjI5NzMxMmY3ZjI4MzU1Li41
NzU5OTBjMGI4MmJhNDZkMDE0YWUyZjg5MGFiYmIyMzk4NDZmNGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTcyNiw1ICs3MjYsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwNGVhYTc5ZjYxNjA5NjU1NDEyNjc5ZjM2OTY3MTlj
NmYyMWEwY2VjLi43YTAyOWQ4OTUwNjlhYjE0NzIxZDIzNzRhNGRjMTQ0ZWE3MDYwMjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90
ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tbSBAbm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2Yv
TW9kdWxlQ0YuY3BwCiAKQEAgLTYxMyw2ICs2MTQsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29j
b2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlh
L2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTc1ZTZiNjU0MzVmNzVlN2MyYmFmMDQzNDJjYjc3
YThkN2E1YzhmMS4uMTZhNjIxZGIyYzEzODA4ZDQzNDBkNjZmOWNmNTBlZWY5ZmRhN2RkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
ODI3LDYgKzM4MjcsMTIgQEAKIAkJNDFCN0VENkYyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdF
RDcwMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5T
UmVnaXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNS
ZWdpc3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4
ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg5MDI2NDkzQjdCMDA0RUQ0REUgLyogUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg5MTI2NDkz
QjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM1Mzc4RjIxRjEzNjJE
MDA4QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclByaXZhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MzcsNiArODQ0Myw5IEBACiAJCQkJNDFGQ0Q2QUUyM0ND
QzI2MTAwQzYyNTY3IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLywKIAkJ
CQk0MUZDRDZBRDIzQ0NDMjYwMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuaCAqLywKIAkJCQk0MUZDRDZBRjIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVE
NERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmll
ci5oICovLAorCQkJCTQxQzNCODg2MjY0NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwICovLAorCQkJCTQxQzNCODg1MjY0
NDRBQUIwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuaCAqLywKIAkJCQk0MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRD
Q29kZWNzLmNwcCAqLywKIAkJCQk0MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRD
Q29kZWNzLmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2MkM3QzAwQUU1Njg2IC8qIExpYldlYlJUQ0Nv
ZGVjcy5tZXNzYWdlcy5pbiAqLywKQEAgLTg0NjgsNiArODQ3Nyw5IEBACiAJCQkJNDFENjQ1NTQy
M0NDQjkyMjAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNw
cCAqLywKIAkJCQk0MUQ2NDU1MzIzQ0NCOTIxMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIuaCAqLywKIAkJCQk0MUQ2NDU1MjIzQ0NCOTIxMDA0ODZFMEUgLyog
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NDFDM0I4OTEyNjQ5M0I3QjAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFDM0I4OTAyNjQ5M0I3QjAw
NEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oICovLAorCQkJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDFENjQ1NTYyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAgKi8sCiAJCQkJNDFENjQ1NTcyM0NDQjk2OTAwNDg2
RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oICovLAog
CQkJCTQxRDY0NTU1MjNDQ0I5NjkwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMTY1M2I2N2RmZDQy
OGE5MTRkMzAzODEwNmFhOGE4ZjhiOWY3NjlhMi4uNTUwZjk5ZTViYTY5NmMzN2ZmYTZkMzYyYjVm
OTJlYjhmZTQ3NjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMjcsMTYgKzI3LDI2IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
TWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNl
c3Npb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTZW1hcGhvcmU7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFu
YWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU0NjU1NjQyMjNkMjg1
Y2M5YjJlYzBlZjg3MDJjZTA5MmIwNjM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSAs
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworZW51bSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3NjI5ZTI1
MjE0YjM3N2UyYmJjNDMzYWM3Yzc2NzI5OTBiZjg2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eSBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUHJveHkoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrJiYpOworICAg
IH5Qcm94eSgpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgcmVzdGFydElmTmVlZGVkKCk7CisKK3ByaXZhdGU6CisgICAgLy8gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpJbnRlcm5hbFVuaXQgQVBJLgorICAgIHZvaWQg
c3RhcnQoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICB2b2lkIHJldHJpZXZl
Rm9ybWF0RGVzY3JpcHRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRBdWRpb091
dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgZnJhbWVDaHVu
a1NpemUpOworICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiwgY29uc3QgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKKworICAgIHZvaWQgc3RvcFRocmVhZCgp
OworICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICB2b2lkIGNyZWF0ZVJlbW90ZVVuaXQoKTsK
KworICAgIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
OjpSZW5kZXJDYWxsYmFjayBtX3JlbmRlckNhbGxiYWNrOworICAgIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisKKyAgICBE
ZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiopPj4gbV9kZXNjcmlwdGlvbkNhbGxiYWNrczsKKworICAgIFN0cmluZyBtX2Rl
dmljZUlkOworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworCisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2Rlc2NyaXB0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYnVmZmVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAg
ICBpbnQ2NF90IG1fd3JpdGVPZmZzZXQgeyAwIH07CisgICAgc2l6ZV90IG1fZnJhbWVDaHVua1Np
emUgeyAwIH07CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpTZW1hcGhvcmU+IG1fc2VtYXBob3JlOworICAgIFJlZlB0cjxUaHJl
YWQ+IG1fdGhyZWFkOworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcFRocmVhZCB7
IGZhbHNlIH07Cit9OworCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6YWRkKFByb3h5JiBwcm94eSkKK3sKKyAgICBtX3Byb3hpZXMuYWRkKHBy
b3h5LmlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIocHJveHkpKTsKK30KKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnJlbW92ZShQcm94eSYg
cHJveHkpCit7CisgICAgbV9wcm94aWVzLnJlbW92ZShwcm94eS5pZGVudGlmaWVyKCkpOworfQor
CitVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQ+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
Y3JlYXRlUmVtb3RlSW50ZXJuYWxVbml0KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHJl
dHVybiBtYWtlVW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6UHJveHk+KFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmdwdVByb2Nlc3NDb25u
ZWN0aW9uQ2xvc2VkKCkKK3sKKyAgICBmb3IgKGF1dG8gcHJveHkgOiBtX3Byb3hpZXMudmFsdWVz
KCkpCisgICAgICAgIHByb3h5LT5yZXN0YXJ0SWZOZWVkZWQoKTsKK30KKworQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6UHJveHkoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxi
YWNrJiYgcmVuZGVyQ2FsbGJhY2spCisgICAgOiBtX3JlbmRlckNhbGxiYWNrKFdURk1vdmUocmVu
ZGVyQ2FsbGJhY2spKQorICAgICwgbV9pZGVudGlmaWVyKEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIoKS5hZGQoKnRoaXMpOworICAgIGNyZWF0ZVJlbW90ZVVuaXQoKTsKK30KKworQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6flBy
b3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5yZW1vdmUoKnRoaXMpOworICAgIHdoaWxl
ICghbV9kZXNjcmlwdGlvbkNhbGxiYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVzY3JpcHRp
b25DYWxsYmFja3MudGFrZUZpcnN0KCkobnVsbHB0cik7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6Y3JlYXRlUmVtb3Rl
VW5pdCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OkNyZWF0
ZVVuaXQgeyBtX2lkZW50aWZpZXIgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1
dG8mJiBkZXNjcmlwdGlvbiwgYXV0byBmcmFtZUNodW5rU2l6ZSkgeworICAgICAgICBpZiAod2Vh
a1RoaXMgJiYgZnJhbWVDaHVua1NpemUpCisgICAgICAgICAgICB3ZWFrVGhpcy0+aW5pdGlhbGl6
ZShkZXNjcmlwdGlvbiwgZnJhbWVDaHVua1NpemUpOworICAgIH0sIDApOworfQorCit2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6Omlu
aXRpYWxpemUoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKQoreworICAgIG1fc2VtYXBob3JlID0gbWFrZVVu
aXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsKKyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247
CisgICAgbV9mcmFtZUNodW5rU2l6ZSA9IGZyYW1lQ2h1bmtTaXplOworCisgICAgd2hpbGUgKCFt
X2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNh
bGxiYWNrcy50YWtlRmlyc3QoKSgmZGVzY3JpcHRpb24pOworCisgICAgaWYgKG1faXNQbGF5aW5n
KQorICAgICAgICBzdGFydCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KCkKK3sKKyAgICBpZiAoIW1fZGVz
Y3JpcHRpb24pIHsKKyAgICAgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc3RvcFRocmVhZCgpOworCisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOwor
CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSAqIDI7
CisgICAgbV9yaW5nQnVmZmVyLnJlc2V0KCk7CisgICAgYXV0byBzdG9yYWdlID0gbWFrZVVuaXF1
ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oc3RkOjpiaW5kKCZBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9yYWdlQ2hhbmdlZCwg
dGhpcywgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzIsIHN0ZDo6
cGxhY2Vob2xkZXJzOjpfMykpOworICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5n
QnVmZmVyPihXVEZNb3ZlKHN0b3JhZ2UpLCBtX2Rlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlv
bigpLCBtX251bWJlck9mRnJhbWVzKTsKKworICAgIG1fYnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KCptX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKTsKKyAgICBt
X2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobV9mcmFtZUNodW5rU2l6ZSk7CisKKyAgICBzdGFydFRo
cmVhZCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBj
b25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQp
Cit7CisgICAgaWYgKCFmcmFtZUNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKG1lbW9yeSkKKyAgICAgICAgbWVtb3J5LT5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
KworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxl
LgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9
IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsKKyNlbmRp
ZgorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U3RhcnRVbml0IHsgbV9pZGVudGlmaWVyLCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgIGRhdGFTaXplIH0sIGZv
cm1hdCwgZnJhbWVDb3VudCwgKm1fc2VtYXBob3JlIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3AoKQor
eworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpT
dG9wVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzZXRBdWRpb091dHB1dERl
dmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQoreworICAgIG1fZGV2aWNlSWQgPSBkZXZpY2VJ
ZDsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlNldEF1ZGlvT3V0cHV0RGV2aWNlIHsgbV9p
ZGVudGlmaWVyLCBkZXZpY2VJZCB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpyZXRyaWV2ZUZvcm1hdERlc2Ny
aXB0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2Rlc2NyaXB0aW9uIHx8
ICFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2Rlc2NyaXB0
aW9uQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgY2FsbGJhY2soJm1fZGVzY3JpcHRpb24udmFsdWUoKSk7Cit9CisKK3ZvaWQg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6
c3RvcFRocmVhZCgpCit7CisgICAgaWYgKCFtX3RocmVhZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKKyAgICBtX3NlbWFwaG9yZS0+c2lnbmFsKCk7
CisgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV90aHJlYWQgPSBudWxs
cHRyOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGhyZWFkKTsK
KyAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSBmYWxzZTsKKyAgICBhdXRvIHRocmVhZExvb3AgPSBb
dGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIC8vIElmIHdhaXQgZmFpbHMsIHRoZSBzZW1hcGhvcmUgb24gdGhlIG90
aGVyIHNpZGUgd2FzIHByb2JhYmx5IGRlc3Ryb3llZCBhbmQgd2Ugc2hvdWxkIGp1c3QgZXhpdCBo
ZXJlIGFuZCB3YWl0IHRvIGxhdW5jaCBhIG5ldyB0aHJlYWQuCisgICAgICAgICAgICBpZiAoIW1f
c2VtYXBob3JlLT53YWl0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAobV9zaG91bGRTdG9wVGhyZWFkKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBhdXRvJiBidWZmZXJMaXN0ID0gKm1fYnVmZmVyLT5saXN0KCk7CisKKyAgICAgICAgICAg
IEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzIGZsYWdzID0gMDsKKyAgICAgICAgICAgIG1fcmVu
ZGVyQ2FsbGJhY2sobV9mcmFtZUNodW5rU2l6ZSwgYnVmZmVyTGlzdCwgbV93cml0ZU9mZnNldCwg
bWFjaF9hYnNvbHV0ZV90aW1lKCksIGZsYWdzKTsKKworICAgICAgICAgICAgaWYgKGZsYWdzID09
IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNTaWxlbmNlKQorICAgICAgICAgICAgICAg
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXJMaXN0LCBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1fZnJhbWVDaHVua1NpemUgKiBtX2Rlc2NyaXB0aW9uLT5ieXRlc1BlckZyYW1lKCkp
KTsKKworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5zdG9yZSgmYnVmZmVyTGlzdCwgbV9mcmFt
ZUNodW5rU2l6ZSwgbV93cml0ZU9mZnNldCk7CisgICAgICAgICAgICBtX3dyaXRlT2Zmc2V0ICs9
IG1fZnJhbWVDaHVua1NpemU7CisgICAgICAgIH0gd2hpbGUgKCFtX3Nob3VsZFN0b3BUaHJlYWQp
OworICAgIH07CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFkIiwgV1RGTW92ZSh0aHJlYWRMb29wKSwg
VGhyZWFkVHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOworfQorCit2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJv
eHk6OnJlc3RhcnRJZk5lZWRlZCgpCit7CisgICAgc3RvcFRocmVhZCgpOworICAgIGNyZWF0ZVJl
bW90ZVVuaXQoKTsKKyAgICBpZiAoIW1fZGV2aWNlSWQuaXNFbXB0eSgpKQorICAgICAgICBzZXRB
dWRpb091dHB1dERldmljZShtX2RldmljZUlkKTsKKyAgICBpZiAobV9pc1BsYXlpbmcpCisgICAg
ICAgIHN0YXJ0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQwZmE2ZGVlNzA5NGQ3NWEyNDllMmM2
MGI3MjAwMGE3NjI0NDA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Lmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTZW1hcGhv
cmU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVSZW1vdGVJbnRlcm5h
bFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrJiYpOworCisgICAgY2xhc3MgUHJveHk7CisgICAgdm9pZCBhZGQoUHJv
eHkmKTsKKyAgICB2b2lkIHJlbW92ZShQcm94eSYpOworCisgICAgdm9pZCBncHVQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZCgpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBXZWFrUHRyPFByb3h5Pj4gbV9w
cm94aWVzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGIxZTllYzIyMTkyMzdmN2U5Njc1YTcxYzgz
MDMwNjdiM2Q2MDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKK21lc3NhZ2VzIC0+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlciBOb3RSZWZDb3VudGVkIHsKKyAgICBBdWRpb1N0b3JhZ2VDaGFuZ2VkKFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cywgSVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFUaW1lIG1lZGlhVGltZSwg
c2l6ZV90IGZyYW1lQ2h1bmtTaXplKTsKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjYTlhOTc4MDY1OTcwNjIyOTA2M2IwMWEyNGIxYTg3
MzhiYzk0NzZmLi45ODBkMzBhOTBjNTJjNmFjOThlZGI0YzZhNDdlMWFkNjJhNDdjZjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlR3JvdXBIYW5kbGUu
aCIKICNpbmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKQEAgLTEyNjMsNiArMTI2NCwxNSBAQCBMaWJXZWJSVEND
b2RlY3MmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjcygpCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBXZWJQcm9jZXNzOjphdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1f
YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVu
aXF1ZTxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCk7
CisgICAgcmV0dXJuICptX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjsKK30KKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDk0NzY5NjFlYjc4ZDQ4OWYxM2FjZTBlZDFmMjNjNWY3OTVjMTQyZDguLjU5YzRlNDE0NmJi
ZjYwNDNkM2U2MjgzNzc4ZTliM2NlNGIxNGQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiBjbGFzcyBFdmVudERpc3BhdGNoZXI7CiBj
bGFzcyBHYW1lcGFkRGF0YTsKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwpAQCAtMjQzLDYg
KzI0NCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykK
ICAgICBMaWJXZWJSVENDb2RlY3MmIGxpYldlYlJUQ0NvZGVjcygpOwogI2VuZGlmCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBhdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIGxlZ2FjeUNETUZh
Y3RvcnkoKTsKICNlbmRpZgpAQCAtNjM2LDYgKzY0MCw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgUmVmUHRyPExpYldlYlJUQ0NvZGVjcz4g
bV9saWJXZWJSVENDb2RlY3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggZGFlMTFlMTI4MDJhMmM4YWIxMzU1NTgy
ZTM1M2YyOWI3NTM4YmQyZi4uYmRhYjM3MzVhZDU4ODEyMWU4YWRkZjYzNmRiMjJjYWYzYjE2ZTc0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0yOCwxMyArMjgsMTQgQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgpA
QCAtNzcsOCArNzgsMTEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0
dXJlUHJvY2Vzc2VzKGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVAKICAgICBtX2F1ZGlvRmFj
dG9yeS5zZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKHNob3VsZENhcHR1cmVBdWRpb0luR1BV
UHJvY2Vzcyk7CiAgICAgbV92aWRlb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cyhzaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MpOwogCi0gICAgaWYgKHNob3VsZENhcHR1
cmVBdWRpb0luR1BVUHJvY2VzcykKLSAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6OnNldENyZWF0b3IoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3Jl
YXRlKTsKKyAgICBpZiAoc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKSB7CisgICAgICAg
IFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2V0Q3JlYXRlSW50
ZXJuYWxVbml0RnVuY3Rpb24oW10oYXV0byYmIHJlbmRlckNhbGxiYWNrKSB7CisgICAgICAgICAg
ICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuY3JlYXRlUmVtb3RlSW50ZXJuYWxVbml0KFdURk1v
dmUocmVuZGVyQ2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgaWYgKHNob3Vs
ZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzIHx8IHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2Vz
cykKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVk
aW9DYXB0dXJlRmFjdG9yeShtX2F1ZGlvRmFjdG9yeSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428369</attachid>
            <date>2021-05-12 05:13:22 -0700</date>
            <delta_ts>2021-05-18 03:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225603-20210512141321.patch</filename>
            <type>text/plain</type>
            <size>58923</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5Mjg2ZGM0Y2I5NWFlNWVk
NDg3OGYwMThlOTYzODdkMWNhODI1NjguLjJlM2NhMDZlZmI0NjY4ZTI4NzYyNjk2ODE5OTc1N2Yx
YjU5MjBjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMjEtMDUtMTIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgYW4gSW50ZXJuYWxVbml0IGJ5IGNyZWF0aW5nIGEgcmluZyBidWZmZXIgdGhhdCBn
ZXRzIHdyaXR0ZW4gb24gV2ViUHJvY2VzcyBhbmQgcmVhZCBvbiBHUFVQcm9jZXNzIGJ5IGFuIGF1
ZGlvIHVuaXQuCisgICAgICAgIEluIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgZWFjaCBh
dWRpbyB0cmFjayB3YXMgc2VudCB0byBHUFVQcm9jZXNzIHRoYXQgd2FzIGRvaW5nIHRoZSBtaXhp
bmcuCisgICAgICAgIFNlbmRpbmcgd2FzIGRvbmUgYnkgc2VuZGluZyBJUEMgbWVzc2FnZSBmb3Ig
ZWFjaCBhdWRpbyBzYW1wbGUsIHdoaWNoIHdhcyBhbHNvIHByb2Nlc3NpbmcgaW5lZmZpY2llbnQu
CisKKyAgICAgICAgV2UgYXJlIG5vdyBjcmVhdGluZyBhbiBBdWRpbyBVbml0IGluIEdQVVByb2Nl
c3MgYW5kIHNpbWlsYXJseSB0byBXZWJBdWRpbyBhc2tpbmcgV2ViUHJvY2VzcyB0byByZW5kZXIg
YXVkaW8gaW4gYSBidWZmZXIgdGhhdCB3aWxsIGJlIGFjdHVhbGx5IHJlbmRlcmVkIGJ5IHRoZSBh
dWRpbyB1bml0LgorICAgICAgICBUaGUgbWl4aW5nIGhhcHBlbnMgaW4gV2ViUHJvY2VzcyBzbyBv
bmx5IG9uZSBidWZmZXIgaXMgc2hhcmVkIGJldHdlZW4gR1BVUHJvY2VzcyBhbmQgV2ViUHJvY2Vz
cywgYW5kIG5vIElQQyBtZXNzYWdlIGlzIHNlbnQgZm9yIGVhY2ggY2h1bmsuCisKKyAgICAgICAg
VGhlIHBvdGVudGlhbCBkb3duc2lkZSBpcyB0aGF0IHRoZSBtaXhpbmcgaXMgZG9uZSB3aXRoIGZp
eGVkIGNodW5rIHNpemUgaW5zdGVhZCBvZiBjaHVuayBzaXplIHJlcXVlc3RlZCBieSB0aGUgYXVk
aW8gdW5pdC4KKyAgICAgICAgVGhpcyBtaWdodCB0cmlnZ2VyIHNvbWUgbGF0ZW5jeSBvciBzb21l
IG92ZXJoZWFkIGlmIHRoZSBmaXhlZCBjaHVuayBzaXplIGlzIHRvbyBmYXIgZnJvbSB3aGF0IHRo
ZSBhdWRpbyB1bml0IGlzIGFza2luZy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OnN0YXJ0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6On5SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmNyZWF0ZVVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmRlbGV0ZVVuaXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OnN0YXJ0VW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RvcFVuaXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6cmVuZGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlVuaXQ6On5Vbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdDo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXRE
ZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5p
bjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
ICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlUmVt
b3RlSW50ZXJuYWxVbml0KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6UHJveHk6OlByb3h5KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6flByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6Y3JlYXRlUmVtb3RlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnNl
dEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmV0cmlldmVGb3JtYXREZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3BUaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
OjpzdGFydFRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0dXJl
UHJvY2Vzc2VzKToKKwogMjAyMS0wNS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW50cm9kdWNlIGFuIGludGVybmFsIHVuaXQgdG8gcmVuZGVyIGF1ZGlv
IE1lZGlhU3RyZWFtVHJhY2socykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDBjYWU0NWZkMzg0NGMz
NGJhZjcxMDBmNTA0YmNlNDk3NTY3Yzc1YjAuLjYwMjJjNTI5YjdmZDI5Njc5M2U0MTVkMjc2MDdj
MTdlMTM5NWU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKICAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKICAgICBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIKQEAgLTIzOCw2ICsyMzksNyBAQCBzZXQoV2ViS2l0X01F
U1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZQogCisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgogICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCBmOWZmNzE2MjI0NmY3NTMxZGExNGE3NTc0NzQ5ZjU4YTIyN2JkYjcxLi4zNDU3
MDhhMjZlNmViZjI1M2Y5OWRiNGU5MTg4MTJjYmIzZDk2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00Nyw2ICs0Nyw3IEBAICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1NDdiZWE5
ZWNkYTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUuLmVmMDMyNmYwZGE5ZWIwNThhMTFlZjU4
ZWNmODQ0YzNiZjNlYTc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdApAQCAtMTUyLDYgKzE1Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVz
c2FnCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOGE1
N2E0NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJiMDI5ZmNjMjg5NjVkYy4uYjM5ODk2YzgzMzBiMmExOWMy
MWRlYWM0NjdhOGNkN2JiYzYxZTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MjUxLDYgKzI1MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciBcCiAJR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IFwK
IAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBiZWJlMDViYmMzMTU0MC4uNWQ3NTQ4
ZDZkODIyODU4OWEzNGYzYjQ5ZTU0N2YwYjczYzFiMGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDEs
NiArNDEsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU92ZXJyaWRl
c0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgiCkBAIC0zODEsNiArMzgzLDE0IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
CiAKICAgICByZXR1cm4gKm1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIH0KKworUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCp0aGlzKTsKKworICAgIHJl
dHVybiAqbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7
Cit9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKQEAgLTYwMiw2ICs2MTIsMTAgQEAgYm9v
bCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyZmMwYTI0MTUyMGQyNzMyYWFl
ZmNhODBkOTE5Mjg2ZDNlNTMxMGUwLi45OTQzMDk5YTdjMmExOWM5NzMyZDQ2NjQ5MTliODk2YTQ2
NzU5NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OwogY2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiBjbGFzcyBSZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjsK
IGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKQEAgLTE1OSw2ICsxNjAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eSgpOworICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CkBAIC0yMzgsNiArMjQwLDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiAgICAgUmVmPFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVy
ZXJNYW5hZ2VyOwogICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
PiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMzMGViNWFjNWY5NzQ4OTlkZDE1ZDA0NjY2ZTlk
ODQ5N2QxYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuY3BwCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIkdQVVByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
QXVkaW9TZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OlVuaXQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVW5pdChBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJik7CisgICAgflVuaXQoKTsKKworICAgIHZvaWQgc3Rh
cnQoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUm
Jik7CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25z
dCBTdHJpbmcmKTsKKyAgICBPU1N0YXR1cyByZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRp
b0J1ZmZlckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRpbWUsIEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkZsYWdzJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdG9yYWdlQ2hh
bmdlZChTaGFyZWRNZW1vcnkqLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCBzaXplX3QpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0PiBtX2xvY2FsVW5pdDsKKyAgICB1aW50NjRfdCBtX3JlYWRP
ZmZzZXQgeyAwIH07CisgICAgdWludDY0X3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKKyAgICBJ
UEM6OlNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7Cisj
ZW5kaWYKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKK307CisKK1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKK3sKK30KKworUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjp+UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkKK3sK
K30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OmNyZWF0ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjaykK
K3sKKyAgICBBU1NFUlQoIW1fdW5pdHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fdW5p
dHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PihpZGVudGlmaWVyLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOwor
fQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6ZGVsZXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fdW5pdHMucmVtb3ZlKGlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91bml0cy5pc0VtcHR5KCkp
CisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhp
dElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYgKGF1dG8q
IHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RhcnQoaXBj
SGFuZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZNb3ZlKHNlbWFw
aG9yZSkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6c3RvcFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHVuaXQg
PSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RvcCgpOworfQorCit2
b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6c2V0QXVkaW9PdXRwdXREZXZpY2UoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7
CisgICAgaWYgKGF1dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAg
dW5pdC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitzdGF0aWMgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrIHJlbmRl
ckNhbGxiYWNrKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6VW5pdCYgdW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XShhdXRvIHNhbXBsZUNv
dW50LCBhdXRvJiBsaXN0LCBhdXRvIHNhbXBsZVRpbWUsIGF1dG8gaG9zdFRpbWUsIGF1dG8mIGZs
YWdzKSB7CisgICAgICAgIHJldHVybiB1bml0LnJlbmRlcihzYW1wbGVDb3VudCwgbGlzdCwgc2Ft
cGxlVGltZSwgaG9zdFRpbWUsIGZsYWdzKTsKKyAgICB9OworfQorCitSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQoQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNh
bGxiYWNrKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fbG9jYWxVbml0KFdlYkNvcmU6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2NhbEludGVybmFs
VW5pdChyZW5kZXJDYWxsYmFjaygqdGhpcykpKQoreworICAgIG1fbG9jYWxVbml0LT5yZXRyaWV2
ZUZvcm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3JpcHRpb24pIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikgeworICAgICAgICAgICAg
Y2FsbGJhY2soeyB9LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBtX2ZyYW1lQ2h1bmtTaXplID0gc3RkOjptYXgoV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJl
bmRlclF1YW50dW1TaXplLCBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRC
dWZmZXJTaXplKCkpOworICAgICAgICBjYWxsYmFjaygqZGVzY3JpcHRpb24sIG1fZnJhbWVDaHVu
a1NpemUpOworICAgIH0pOworfQorCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKK3sKKyAgICBzdG9wKCk7Cit9CisK
K3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpVbml0OjpzdGFydChjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCBjb25z
dCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYg
KG1faXNQbGF5aW5nKQorICAgICAgICBzdG9wKCk7CisKKyAgICBtX3JlYWRPZmZzZXQgPSAwOwor
ICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENB
UmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
PihoYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fcmVuZGVyU2Vt
YXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9jYWxVbml0LT5zdGFydCgpOwor
fQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6VW5pdDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBt
X2xvY2FsVW5pdC0+c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2Uo
Y29uc3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2FsVW5pdC0+c2V0QXVkaW9PdXRw
dXREZXZpY2UoZGV2aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcihzaXplX3Qgc2Ft
cGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0X3QsIGRvdWJsZSwgQXVkaW9V
bml0UmVuZGVyQWN0aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
KworICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0
Y2hJZkhhc0Vub3VnaERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBtX3JlYWRPZmZzZXQpKSB7Cisg
ICAgICAgIG1fcmVhZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAgICAgICAgc3RhdHVzID0gbm9F
cnI7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBp
ICs9IG1fZnJhbWVDaHVua1NpemUpCisgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgp
OworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYzNzZhOTdjMjFkOWI2MGFjZGU4
ZDFiM2NmMGFhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
U2VtYXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3MgVW5pdDsKKwor
cHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFVuaXQoQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmKTsKKyAg
ICB2b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOwor
CisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElk
ZW50aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWExZTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCittZXNzYWdl
cyAtPiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXplX3QgZnJhbWVD
aHVua1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisgICAgU3Rh
cnRVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3Rv
cmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVyU2VtYXBob3Jl
KQorICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091dHB1dERldmlj
ZShXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOWQ4ZWZhYTUzMDJmNjk3ZmM5OTI2
M2RjOWE4MjNmYjZhZmI1ZjE4Mi4uMTAxYWJmOGZlNTYwNjkxMGY3OTlmZDA1MGExN2Y3NzNmYTNh
MDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDcs
NiArMzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToK
ICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxp
bmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApp
bmRleCBlZTI1YTU0MDZlYTFlNDY0MzdkMGVlYTc0NmYxMjlkZWUwZTlhMDEzLi42MWY2MjkxYzdl
ZWExZmMxN2NiOTRhZjVhM2I1MTQxYjU4YzczYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcyNSw1ICs3
MjUsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCAwNGVhYTc5ZjYxNjA5NjU1NDEyNjc5ZjM2OTY3MTljNmYyMWEwY2Vj
Li43YTAyOWQ4OTUwNjlhYjE0NzIxZDIzNzRhNGRjMTQ0ZWE3MDYwMjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bSBAbm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0Yu
Y3BwCiAKQEAgLTYxMyw2ICs2MTQsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1Zp
ZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oCmluZGV4IGM5Y2NhN2JkNTE3ODcxZDk0YzM4NjgxODM5MWE5MGUxYzlkY2ZiNTEu
LjhlNDIxNTQ3ODUzYTc2NDUxZjRkZWY3NjExNDg1NzhhNzRjYjE1MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGll
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjgwMWZjNTEyMTcwY2JmOTlhNjI0
OTcxMjcwMWU0YTFmMDliMjA4Li5kODJjMjkzZGI2Nzg1ZTk0Nzg5YjE3NTIzZDhlMjlhOGZiNWY4
ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM4MjYsNiArMzgyNiwxMiBAQAogCQk0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyog
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0
d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3
b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkwMjY0OTNCN0IwMDRFRDRE
RSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNC
ODkxMjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzUzNzhG
MjFGMTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJp
dmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQzNCw2ICs4NDQwLDkgQEAKIAkJCQk0MUZD
RDZBRTIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
ICovLAogCQkJCTQxRkNENkFEMjNDQ0MyNjAwMEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oICovLAogCQkJCTQxRkNENkFGMjNDQ0MyNjEwMEM2MjU2NyAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0MUMzQjg4NzI2NDQ0
QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFD
M0I4ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5oICovLAogCQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBM
aWJXZWJSVENDb2RlY3MuY3BwICovLAogCQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBM
aWJXZWJSVENDb2RlY3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYyQzdDMDBBRTU2ODYgLyogTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluICovLApAQCAtODQ2NSw2ICs4NDc0LDkgQEAKIAkJCQk0
MUQ2NDU1NDIzQ0NCOTIyMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuY3BwICovLAogCQkJCTQxRDY0NTUzMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQxRDY0NTUyMjNDQ0I5MjEwMDQ4
NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbiAq
LywKKwkJCQk0MUMzQjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUMzQjg5MDI2
NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmggKi8sCisJCQkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNz
YWdlcy5pbiAqLywKIAkJCQk0MUQ2NDU1NjIzQ0NCOTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQk0MUQ2NDU1NzIzQ0NC
OTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
LmggKi8sCiAJCQkJNDFENjQ1NTUyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAxNjUz
YjY3ZGZkNDI4YTkxNGQzMDM4MTA2YWE4YThmOGI5Zjc2OWEyLi41NTBmOTllNWJhNjk2YzM3ZmZh
NmQzNjJiNWY5MmViOGZlNDc2M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0yNywxNiArMjcsMjYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJNZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9y
ZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJv
dmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTQ2NTU2
NDIyM2QyODVjYzliMmVjMGVmODcwMmNlMDkyYjA2MzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlPjsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
Yjc2MjllMjUyMTRiMzc3ZTJiYmM0MzNhYzdjNzY3Mjk5MGJmODZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNs
dWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90
aW1lLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJveHk+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQcm94eShXZWJDb3JlOjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sm
Jik7CisgICAgflByb3h5KCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCisgICAgdm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICAv
LyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkludGVybmFsVW5pdCBBUEkuCisg
ICAgdm9pZCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQg
cmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
dEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBm
cmFtZUNodW5rU2l6ZSk7CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBj
b25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgdm9pZCBzdG9w
VGhyZWFkKCk7CisgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgIHZvaWQgY3JlYXRlUmVtb3Rl
VW5pdCgpOworCisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
KworICAgIERlcXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzOworCisgICAgU3Ry
aW5nIG1fZGV2aWNlSWQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZm
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVm
ZmVyOworICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmFt
ZUNodW5rU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVm
UHRyPFRocmVhZD4gbV90aHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9w
VGhyZWFkIHsgZmFsc2UgfTsKK307CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjphZGQoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJveGll
cy5hZGQocHJveHkuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihwcm94eSkpOworfQorCit2b2lk
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3Zl
KFByb3h5JiBwcm94eSkKK3sKKyAgICBtX3Byb3hpZXMucmVtb3ZlKHByb3h5LmlkZW50aWZpZXIo
KSk7Cit9CisKK1VuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdD4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eT4oV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIGZvciAoYXV0byBwcm94eSA6IG1fcHJveGll
cy52YWx1ZXMoKSkKKyAgICAgICAgcHJveHktPnJlc3RhcnRJZk5lZWRlZCgpOworfQorCitBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94
eShXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVu
ZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxsYmFjaykKKyAgICA6IG1fcmVuZGVyQ2FsbGJhY2soV1RG
TW92ZShyZW5kZXJDYWxsYmFjaykpCisgICAgLCBtX2lkZW50aWZpZXIoQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcigpLmFkZCgqdGhpcyk7CisgICAgY3JlYXRlUmVtb3RlVW5pdCgpOwor
fQorCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5Ojp+UHJveHkoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLnJlbW92ZSgqdGhpcyk7Cisg
ICAgd2hpbGUgKCFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9k
ZXNjcmlwdGlvbkNhbGxiYWNrcy50YWtlRmlyc3QoKShudWxscHRyKTsKK30KKwordm9pZCBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVh
dGVSZW1vdGVVbml0KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6Q3JlYXRlVW5pdCB7IG1faWRlbnRpZmllciB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oYXV0byYmIGRlc2NyaXB0aW9uLCBhdXRvIGZyYW1lQ2h1bmtTaXplKSB7CisgICAgICAg
IGlmICh3ZWFrVGhpcyAmJiBmcmFtZUNodW5rU2l6ZSkKKyAgICAgICAgICAgIHdlYWtUaGlzLT5p
bml0aWFsaXplKGRlc2NyaXB0aW9uLCBmcmFtZUNodW5rU2l6ZSk7CisgICAgfSwgMCk7Cit9CisK
K3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQ
cm94eTo6aW5pdGlhbGl6ZShjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDaHVua1NpemUpCit7CisgICAgbV9zZW1hcGhvcmUg
PSBtYWtlVW5pcXVlPElQQzo6U2VtYXBob3JlPigpOworICAgIG1fZGVzY3JpcHRpb24gPSBkZXNj
cmlwdGlvbjsKKyAgICBtX2ZyYW1lQ2h1bmtTaXplID0gZnJhbWVDaHVua1NpemU7CisKKyAgICB3
aGlsZSAoIW1fZGVzY3JpcHRpb25DYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rlc2Ny
aXB0aW9uQ2FsbGJhY2tzLnRha2VGaXJzdCgpKCZkZXNjcmlwdGlvbik7CisKKyAgICBpZiAobV9p
c1BsYXlpbmcpCisgICAgICAgIHN0YXJ0KCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnQoKQoreworICAgIGlm
ICghbV9kZXNjcmlwdGlvbikgeworICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzdG9wVGhyZWFkKCk7CisKKyAgICBtX2lzUGxheWluZyA9
IHRydWU7CisKKyAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi0+c2FtcGxlUmF0
ZSgpICogMjsKKyAgICBtX3JpbmdCdWZmZXIucmVzZXQoKTsKKyAgICBhdXRvIHN0b3JhZ2UgPSBt
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihzdGQ6OmJpbmQoJkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VD
aGFuZ2VkLCB0aGlzLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIHN0ZDo6cGxhY2Vob2xkZXJzOjpf
Miwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8zKSk7CisgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1
ZTxDQVJpbmdCdWZmZXI+KFdURk1vdmUoc3RvcmFnZSksIG1fZGVzY3JpcHRpb24tPnN0cmVhbURl
c2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMpOworCisgICAgbV9idWZmZXIgPSBtYWtlVW5p
cXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oKm1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFtZXMp
OworICAgIG1fYnVmZmVyLT5zZXRTYW1wbGVDb3VudChtX2ZyYW1lQ2h1bmtTaXplKTsKKworICAg
IHN0YXJ0VGhyZWFkKCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBt
ZW1vcnksIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJh
bWVDb3VudCkKK3sKKyAgICBpZiAoIWZyYW1lQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAobWVtb3J5KQorICAgICAgICBt
ZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOworCisgICAgLy8gRklYTUU6IFNlbmQgdGhlIGFjdHVhbCBkYXRhIHNpemUgd2l0aCBJ
UENIYW5kbGUuCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHVpbnQ2NF90IGRh
dGFTaXplID0gaGFuZGxlLnNpemUoKTsKKyNlbHNlCisgICAgdWludDY0X3QgZGF0YVNpemUgPSAw
OworI2VuZGlmCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpTdGFydFVuaXQgeyBtX2lkZW50
aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCAgZGF0YVNp
emUgfSwgZm9ybWF0LCBmcmFtZUNvdW50LCAqbV9zZW1hcGhvcmUgfSwgMCk7Cit9CisKK3ZvaWQg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6
c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlN0b3BVbml0IHsgbV9pZGVudGlmaWVyIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnNldEF1ZGlv
T3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7CisgICAgbV9kZXZpY2VJZCA9
IGRldmljZUlkOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U2V0QXVkaW9PdXRwdXREZXZp
Y2UgeyBtX2lkZW50aWZpZXIsIGRldmljZUlkIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJldHJpZXZlRm9y
bWF0RGVzY3JpcHRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZGVzY3Jp
cHRpb24gfHwgIW1fZGVzY3JpcHRpb25DYWxsYmFja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIG1f
ZGVzY3JpcHRpb25DYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBjYWxsYmFjaygmbV9kZXNjcmlwdGlvbi52YWx1ZSgpKTsKK30K
Kwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5OjpzdG9wVGhyZWFkKCkKK3sKKyAgICBpZiAoIW1fdGhyZWFkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSB0cnVlOworICAgIG1fc2VtYXBob3JlLT5z
aWduYWwoKTsKKyAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBtX3RocmVh
ZCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnRUaHJlYWQoKQoreworICAgIEFTU0VSVCghbV90
aHJlYWQpOworICAgIG1fc2hvdWxkU3RvcFRocmVhZCA9IGZhbHNlOworICAgIGF1dG8gdGhyZWFk
TG9vcCA9IFt0aGlzXSgpIG11dGFibGUgeworICAgICAgICBtX3dyaXRlT2Zmc2V0ID0gMDsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgLy8gSWYgd2FpdCBmYWlscywgdGhlIHNlbWFwaG9yZSBv
biB0aGUgb3RoZXIgc2lkZSB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGFuZCB3ZSBzaG91bGQganVz
dCBleGl0IGhlcmUgYW5kIHdhaXQgdG8gbGF1bmNoIGEgbmV3IHRocmVhZC4KKyAgICAgICAgICAg
IGlmICghbV9zZW1hcGhvcmUtPndhaXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlckxpc3QgPSAqbV9idWZmZXItPmxpc3QoKTsKKworICAg
ICAgICAgICAgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MgZmxhZ3MgPSAwOworICAgICAgICAg
ICAgbV9yZW5kZXJDYWxsYmFjayhtX2ZyYW1lQ2h1bmtTaXplLCBidWZmZXJMaXN0LCBtX3dyaXRl
T2Zmc2V0LCBtYWNoX2Fic29sdXRlX3RpbWUoKSwgZmxhZ3MpOworCisgICAgICAgICAgICBpZiAo
ZmxhZ3MgPT0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2UpCisgICAgICAg
ICAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZlckxpc3QsIHN0YXRp
Y19jYXN0PHNpemVfdD4obV9mcmFtZUNodW5rU2l6ZSAqIG1fZGVzY3JpcHRpb24tPmJ5dGVzUGVy
RnJhbWUoKSkpOworCisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKCZidWZmZXJMaXN0
LCBtX2ZyYW1lQ2h1bmtTaXplLCBtX3dyaXRlT2Zmc2V0KTsKKyAgICAgICAgICAgIG1fd3JpdGVP
ZmZzZXQgKz0gbV9mcmFtZUNodW5rU2l6ZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fc2hvdWxkU3Rv
cFRocmVhZCk7CisgICAgfTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdCB0aHJlYWQiLCBXVEZNb3ZlKHRocmVh
ZExvb3ApLCBUaHJlYWRUeXBlOjpBdWRpbywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7
Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eTo6cmVzdGFydElmTmVlZGVkKCkKK3sKKyAgICBzdG9wVGhyZWFkKCk7CisgICAg
Y3JlYXRlUmVtb3RlVW5pdCgpOworICAgIGlmICghbV9kZXZpY2VJZC5pc0VtcHR5KCkpCisgICAg
ICAgIHNldEF1ZGlvT3V0cHV0RGV2aWNlKG1fZGV2aWNlSWQpOworICAgIGlmIChtX2lzUGxheWlu
ZykKKyAgICAgICAgc3RhcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZkZWU3MDk0ZDc1
YTI0OWUyYzYwYjcyMDAwYTc2MjQ0MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNlbWFwaG9yZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90
ZUludGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisKKyAgICBjbGFzcyBQcm94eTsKKyAgICB2b2lk
IGFkZChQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2b2lkIGdwdVBy
b2Nlc3NDb25uZWN0aW9uQ2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFdlYWtQdHI8UHJv
eHk+PiBtX3Byb3hpZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIxOTIzN2Y3ZTk2
NzVhNzFjODMwMzA2N2IzZDYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNo
YW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVk
aWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDIxNWFhYmIwZDU5MmE1NjQ1ZTUyYTBh
NGQ3YmRlMWEyMzI1MTcxYWIuLjlhZGQzNGMzZDE0ZGJiZjZmMzIzN2QyOGI5MTMzOGE5Y2ZmMjBl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJBUElGcmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VHcm91
cEhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRlICJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgpAQCAtMTI3Myw2ICsxMjc0LDE1IEBAIExp
YldlYlJUQ0NvZGVjcyYgV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzKCkKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCitBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIFdlYlByb2Nlc3M6OmF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpCit7CisgICAgaWYg
KCFtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcikKKyAg
ICAgICAgbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIg
PSBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcj4oKTsKKyAgICByZXR1cm4gKm1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOworfQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggYmMxNjM5NWIzYjk1M2IwZmY4NzZhMzM3ZjYxZmNmNjcwYzZhNGYwMC4uMjMw
N2M3MGIyMGMyYTdkNTE1YTlmNWY2NjBlZDNhNmJiNmE0ZDUyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMDksNiArMTA5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKIGNsYXNzIEV2ZW50RGlzcGF0
Y2hlcjsKIGNsYXNzIEdhbWVwYWREYXRhOwogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CkBA
IC0yNDUsNiArMjQ2LDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElC
V0VCUlRDKQogICAgIExpYldlYlJUQ0NvZGVjcyYgbGliV2ViUlRDQ29kZWNzKCk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIGF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpOworI2VuZGlmCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgbGVn
YWN5Q0RNRmFjdG9yeSgpOwogI2VuZGlmCkBAIC02NDAsNiArNjQ0LDkgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBSZWZQdHI8TGliV2ViUlRD
Q29kZWNzPiBtX2xpYldlYlJUQ0NvZGVjczsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+IG1fYXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBkYWUxMWUxMjgwMmEyYzhh
YjEzNTU1ODJlMzUzZjI5Yjc1MzhiZDJmLi5iZGFiMzczNWFkNTg4MTIxZThhZGRmNjM2ZGIyMmNh
ZjNiMTZlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKICNpbmNsdWRlICJVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmg+CkBAIC03Nyw4ICs3OCwxMSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpz
ZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUAogICAgIG1f
YXVkaW9GYWN0b3J5LnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVyZUF1
ZGlvSW5HUFVQcm9jZXNzKTsKICAgICBtX3ZpZGVvRmFjdG9yeS5zZXRTaG91bGRDYXB0dXJlSW5H
UFVQcm9jZXNzKHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzcyk7CiAKLSAgICBpZiAoc2hv
dWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKQotICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjpjcmVhdGUpOworICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpIHsK
KyAgICAgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzZXRD
cmVhdGVJbnRlcm5hbFVuaXRGdW5jdGlvbihbXShhdXRvJiYgcmVuZGVyQ2FsbGJhY2spIHsKKyAg
ICAgICAgICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5jcmVhdGVSZW1vdGVJbnRlcm5hbFVu
aXQoV1RGTW92ZShyZW5kZXJDYWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBp
ZiAoc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MgfHwgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5H
UFVQcm9jZXNzKQogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zZXRBdWRpb0NhcHR1cmVGYWN0b3J5KG1fYXVkaW9GYWN0b3J5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428924</attachid>
            <date>2021-05-18 03:03:56 -0700</date>
            <delta_ts>2021-05-18 04:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225603-20210518120354.patch</filename>
            <type>text/plain</type>
            <size>59459</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3OTA3N2M2ZWM2NzE1Yjk2
MzdkYjAxOWVkZGM4OTUzOTUzNzc3ZGQuLjMxNjNiMzQ5ZjcwM2FjYWRlYWQ0OGU0NjU2OGI4YjQ5
Zjk3ZDFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjEtMDUtMTggIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW1w
bGVtZW50IGFuIEludGVybmFsVW5pdCBieSBjcmVhdGluZyBhIHJpbmcgYnVmZmVyIHRoYXQgZ2V0
cyB3cml0dGVuIG9uIFdlYlByb2Nlc3MgYW5kIHJlYWQgb24gR1BVUHJvY2VzcyBieSBhbiBhdWRp
byB1bml0LgorICAgICAgICBJbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24sIGVhY2ggYXVk
aW8gdHJhY2sgd2FzIHNlbnQgdG8gR1BVUHJvY2VzcyB0aGF0IHdhcyBkb2luZyB0aGUgbWl4aW5n
LgorICAgICAgICBTZW5kaW5nIHdhcyBkb25lIGJ5IHNlbmRpbmcgSVBDIG1lc3NhZ2UgZm9yIGVh
Y2ggYXVkaW8gc2FtcGxlLCB3aGljaCB3YXMgYWxzbyBwcm9jZXNzaW5nIGluZWZmaWNpZW50Lgor
CisgICAgICAgIFdlIGFyZSBub3cgY3JlYXRpbmcgYW4gQXVkaW8gVW5pdCBpbiBHUFVQcm9jZXNz
IGFuZCBzaW1pbGFybHkgdG8gV2ViQXVkaW8gYXNraW5nIFdlYlByb2Nlc3MgdG8gcmVuZGVyIGF1
ZGlvIGluIGEgYnVmZmVyIHRoYXQgd2lsbCBiZSBhY3R1YWxseSByZW5kZXJlZCBieSB0aGUgYXVk
aW8gdW5pdC4KKyAgICAgICAgVGhlIG1peGluZyBoYXBwZW5zIGluIFdlYlByb2Nlc3Mgc28gb25s
eSBvbmUgYnVmZmVyIGlzIHNoYXJlZCBiZXR3ZWVuIEdQVVByb2Nlc3MgYW5kIFdlYlByb2Nlc3Ms
IGFuZCBubyBJUEMgbWVzc2FnZSBpcyBzZW50IGZvciBlYWNoIGNodW5rLgorCisgICAgICAgIFRo
ZSBwb3RlbnRpYWwgZG93bnNpZGUgaXMgdGhhdCB0aGUgbWl4aW5nIGlzIGRvbmUgd2l0aCBmaXhl
ZCBjaHVuayBzaXplIGluc3RlYWQgb2YgY2h1bmsgc2l6ZSByZXF1ZXN0ZWQgYnkgdGhlIGF1ZGlv
IHVuaXQuCisgICAgICAgIFRoaXMgbWlnaHQgdHJpZ2dlciBzb21lIGxhdGVuY3kgb3Igc29tZSBv
dmVyaGVhZCBpZiB0aGUgZml4ZWQgY2h1bmsgc2l6ZSBpcyB0b28gZmFyIGZyb20gd2hhdCB0aGUg
YXVkaW8gdW5pdCBpcyBhc2tpbmcuCisKKyAgICAgICAgSW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNy
YXNoLCB3ZSBrZWVwIHRoZSBzYW1lIGZvcm1hdCBkZXNjcmlwdGlvbiBidXQgd2UgZGVsYXkgcmVj
cmVhdGlvbiBvZiB0aGUgdW5pdCBpZiB0aGUgdW5pdCBpcyBzdG9wcGVkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
ZGVsZXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpzdG9wVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAg
ICAgICAoV2ViS2l0OjpyZW5kZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6VW5p
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6flVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpV
bml0OjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6cmVuZGVy
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQpOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmdwdVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6UHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5Ojp+UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVSZW1vdGVVbml0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eTo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAgICAgICAoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVh
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmVz
dGFydElmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMpOgorCiAyMDIxLTA1LTE4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN1cnJlY3QgV0tXZWJWaWV3IG1l
ZGlhIGNvbnRyb2xzIEFQSSByZW1vdmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE5MjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDBjYWU0NWZkMzg0NGMzNGJh
ZjcxMDBmNTA0YmNlNDk3NTY3Yzc1YjAuLjYwMjJjNTI5YjdmZDI5Njc5M2U0MTVkMjc2MDdjMTdl
MTM5NWU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKICAgICBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIKQEAgLTIzOCw2ICsyMzksNyBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFu
ZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZQogCisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgogICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBmOWZmNzE2MjI0NmY3NTMxZGExNGE3NTc0NzQ5ZjU4YTIyN2JkYjcxLi4zNDU3MDhh
MjZlNmViZjI1M2Y5OWRiNGU5MTg4MTJjYmIzZDk2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00Nyw2ICs0Nyw3IEBAICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1NDdiZWE5ZWNk
YTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUuLmVmMDMyNmYwZGE5ZWIwNThhMTFlZjU4ZWNm
ODQ0YzNiZjNlYTc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTUyLDYgKzE1Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2Fn
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOGE1N2E0
NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJiMDI5ZmNjMjg5NjVkYy4uYjM5ODk2YzgzMzBiMmExOWMyMWRl
YWM0NjdhOGNkN2JiYzYxZTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjUx
LDYgKzI1MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciBcCiAJR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IFwKIAlH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBiZWJlMDViYmMzMTU0MC4uNWQ3NTQ4ZDZk
ODIyODU4OWEzNGYzYjQ5ZTU0N2YwYjczYzFiMGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDEsNiAr
NDEsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU92ZXJyaWRlc0Zv
clRlc3RpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmgiCkBAIC0zODEsNiArMzgzLDE0IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCiAK
ICAgICByZXR1cm4gKm1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIH0KKworUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCp0aGlzKTsKKworICAgIHJldHVy
biAqbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7Cit9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKQEAgLTYwMiw2ICs2MTIsMTAgQEAgYm9vbCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgp
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyZmMwYTI0MTUyMGQyNzMyYWFlZmNh
ODBkOTE5Mjg2ZDNlNTMxMGUwLi45OTQzMDk5YTdjMmExOWM5NzMyZDQ2NjQ5MTliODk2YTQ2NzU5
NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
Y2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiBjbGFzcyBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjsKIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKQEAgLTE1OSw2ICsxNjAsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSgpOworICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
KCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CkBAIC0yMzgsNiArMjQwLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiAgICAgUmVmPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJN
YW5hZ2VyOwogICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMzMGViNWFjNWY5NzQ4OTlkZDE1ZDA0NjY2ZTlkODQ5
N2QxYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IkdQVVByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9TZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlVuaXQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVW5pdChBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KT4mJik7CisgICAgflVuaXQoKTsKKworICAgIHZvaWQgc3RhcnQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJik7
CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBT
dHJpbmcmKTsKKyAgICBPU1N0YXR1cyByZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1
ZmZlckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRpbWUsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdl
ZChTaGFyZWRNZW1vcnkqLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0PiBtX2xvY2FsVW5pdDsKKyAgICB1aW50NjRfdCBtX3JlYWRPZmZz
ZXQgeyAwIH07CisgICAgdWludDY0X3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKKyAgICBJUEM6
OlNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisjZW5k
aWYKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKK307CisKK1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKK3sKK30KKworUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjp+UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkKK3sKK30K
Kwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmNyZWF0ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjaykKK3sK
KyAgICBBU1NFUlQoIW1fdW5pdHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fdW5pdHMu
YWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PihpZGVudGlmaWVyLCBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQor
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6ZGVsZXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fdW5pdHMucmVtb3ZlKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91bml0cy5pc0VtcHR5KCkpCisg
ICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElm
VW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYgKGF1dG8qIHVu
aXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RhcnQoaXBjSGFu
ZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZNb3ZlKHNlbWFwaG9y
ZSkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6c3RvcFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHVuaXQgPSBt
X3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RvcCgpOworfQorCit2b2lk
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
c2V0QXVkaW9PdXRwdXREZXZpY2UoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7Cisg
ICAgaWYgKGF1dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5p
dC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitzdGF0aWMgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrIHJlbmRlckNh
bGxiYWNrKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdCYgdW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XShhdXRvIHNhbXBsZUNvdW50
LCBhdXRvJiBsaXN0LCBhdXRvIHNhbXBsZVRpbWUsIGF1dG8gaG9zdFRpbWUsIGF1dG8mIGZsYWdz
KSB7CisgICAgICAgIHJldHVybiB1bml0LnJlbmRlcihzYW1wbGVDb3VudCwgbGlzdCwgc2FtcGxl
VGltZSwgaG9zdFRpbWUsIGZsYWdzKTsKKyAgICB9OworfQorCitSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQoQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNhbGxi
YWNrKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fbG9jYWxVbml0KFdlYkNvcmU6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2NhbEludGVybmFsVW5p
dChyZW5kZXJDYWxsYmFjaygqdGhpcykpKQoreworICAgIG1fbG9jYWxVbml0LT5yZXRyaWV2ZUZv
cm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3JpcHRpb24pIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgY2Fs
bGJhY2soeyB9LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBt
X2ZyYW1lQ2h1bmtTaXplID0gc3RkOjptYXgoV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRl
clF1YW50dW1TaXplLCBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZm
ZXJTaXplKCkpOworICAgICAgICBjYWxsYmFjaygqZGVzY3JpcHRpb24sIG1fZnJhbWVDaHVua1Np
emUpOworICAgIH0pOworfQorCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3Zv
aWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpVbml0OjpzdGFydChjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYgKG1f
aXNQbGF5aW5nKQorICAgICAgICBzdG9wKCk7CisKKyAgICBtX3JlYWRPZmZzZXQgPSAwOworICAg
IG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmlu
Z0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPiho
YW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fcmVuZGVyU2VtYXBo
b3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9jYWxVbml0LT5zdGFydCgpOworfQor
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBtX2xv
Y2FsVW5pdC0+c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29u
c3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2FsVW5pdC0+c2V0QXVkaW9PdXRwdXRE
ZXZpY2UoZGV2aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcihzaXplX3Qgc2FtcGxl
Q291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0X3QsIGRvdWJsZSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0Y2hJ
Zkhhc0Vub3VnaERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBtX3JlYWRPZmZzZXQpKSB7CisgICAg
ICAgIG1fcmVhZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAgICAgICAgc3RhdHVzID0gbm9FcnI7
CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBpICs9
IG1fZnJhbWVDaHVua1NpemUpCisgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwor
CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYzNzZhOTdjMjFkOWI2MGFjZGU4ZDFi
M2NmMGFhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2Vt
YXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3MgVW5pdDsKKworcHJp
dmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4m
JiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFVuaXQoQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmKTsKKyAgICB2
b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRl
bnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworCisg
ICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWExZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCittZXNzYWdlcyAt
PiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDaHVu
a1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisgICAgU3RhcnRV
bml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVyU2VtYXBob3JlKQor
ICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091dHB1dERldmljZShX
ZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNmJlYTVkYjcyYjkxOTFlZWRhNzkzNTk2
MTY2ZDNjZjQ3N2UwNWJiOC4uYmI4N2IyMDY3OTY0Mjc2ODk4NmVmN2E4YTUyM2EzMmQ1YzM2NWRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDcsNiAr
MzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtP
YnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAwNDkzZjk1NjdkOGZmY2NmOTUyOGYwNDdmMTZlZWQ5MTYwM2JkM2VkLi45NjVlOTE0MjZiOWJj
NzFlNWQwMmRmMmQ2ZjFkYjk1MTA2NGM0NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcyMyw1ICs3MjMs
NiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBhODI4MzMzMGU1NGM5MWI4MzM4MTI4NmEwYmFhN2Q1YzRlNDFlMmZmLi5i
NmM4MmYzOTljMGQ3NzcwOWQ5Y2Q4YTEzZDA5YjdjZjkxZWRjZTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVy
UHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBA
bm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3Bw
CiAKQEAgLTYxMiw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVv
TGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5oCmluZGV4IGM5Y2NhN2JkNTE3ODcxZDk0YzM4NjgxODM5MWE5MGUxYzlkY2ZiNTEuLjhl
NDIxNTQ3ODUzYTc2NDUxZjRkZWY3NjExNDg1NzhhNzRjYjE1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwODcyN2Q5YmM4ZDQ4YmFmNWQyZjcyOWFk
MTMzYzc4M2ZhZTMzZmI0Li5mNmQwMmUyYmIzYmFlM2Q2NTAwYzBlMzUwMGEyMWVkZDkwMWUwNTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM4MTcsNiArMzgxNywxMiBAQAogCQk0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29y
a01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3Jr
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkwMjY0OTNCN0IwMDRFRDRERSAv
KiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkx
MjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzUzNzhGMjFG
MTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQxNiw2ICs4NDIyLDkgQEAKIAkJCQk0MUZDRDZB
RTIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICov
LAogCQkJCTQxRkNENkFEMjNDQ0MyNjAwMEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oICovLAogCQkJCTQxRkNENkFGMjNDQ0MyNjEwMEM2MjU2NyAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0MUMzQjg4NzI2NDQ0QUQz
MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFDM0I4
ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oICovLAogCQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBMaWJX
ZWJSVENDb2RlY3MuY3BwICovLAogCQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJX
ZWJSVENDb2RlY3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYyQzdDMDBBRTU2ODYgLyogTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluICovLApAQCAtODQ0Nyw2ICs4NDU2LDkgQEAKIAkJCQk0MUQ2
NDU1NDIzQ0NCOTIyMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuY3BwICovLAogCQkJCTQxRDY0NTUzMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQxRDY0NTUyMjNDQ0I5MjEwMDQ4NkUw
RSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbiAqLywK
KwkJCQk0MUMzQjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUMzQjg5MDI2NDkz
QjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmggKi8sCisJCQkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKIAkJCQk0MUQ2NDU1NjIzQ0NCOTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQk0MUQ2NDU1NzIzQ0NCOTY5
MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgg
Ki8sCiAJCQkJNDFENjQ1NTUyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAxNjUzYjY3
ZGZkNDI4YTkxNGQzMDM4MTA2YWE4YThmOGI5Zjc2OWEyLi41NTBmOTllNWJhNjk2YzM3ZmZhNmQz
NjJiNWY5MmViOGZlNDc2M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0yNywxNiArMjcsMjYgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJNZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTQ2NTU2NDIy
M2QyODVjYzliMmVjMGVmODcwMmNlMDkyYjA2MzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWYw
ZDJlOWQ1ZjFiNmY3YjMxYjhmMGViZGNlODFmNzcyYmMxNWU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1l
Lmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJveHk+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQcm94eShXZWJDb3JlOjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7
CisgICAgflByb3h5KCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkludGVybmFsVW5pdCBBUEkuCisgICAg
dm9pZCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgcmV0
cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF1
ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBpbml0aWFs
aXplKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBmcmFt
ZUNodW5rU2l6ZSk7CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgdm9pZCBzdG9wVGhy
ZWFkKCk7CisgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5p
dCgpOworCisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQ6OlJlbmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKwor
ICAgIERlcXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzOworCisgICAgU3RyaW5n
IG1fZGV2aWNlSWQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZmZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OworICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmFtZUNo
dW5rU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRy
PFRocmVhZD4gbV90aHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9wVGhy
ZWFkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkQ2xvc2UgeyBmYWxzZSB9OworfTsKKwordm9p
ZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZChQ
cm94eSYgcHJveHkpCit7CisgICAgbV9wcm94aWVzLmFkZChwcm94eS5pZGVudGlmaWVyKCksIG1h
a2VXZWFrUHRyKHByb3h5KSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZW1vdmUoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJv
eGllcy5yZW1vdmUocHJveHkuaWRlbnRpZmllcigpKTsKK30KKworVW5pcXVlUmVmPFdlYkNvcmU6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmNyZWF0ZVJlbW90ZUludGVybmFs
VW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6
UmVuZGVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5PihX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpCit7Cisg
ICAgZm9yIChhdXRvIHByb3h5IDogbV9wcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+
cmVzdGFydElmTmVlZGVkKCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OlByb3h5KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmIHJlbmRlckNhbGxiYWNr
KQorICAgIDogbV9yZW5kZXJDYWxsYmFjayhXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAs
IG1faWRlbnRpZmllcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuYWRkKCp0aGlz
KTsKKyAgICBjcmVhdGVSZW1vdGVVbml0KCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6On5Qcm94eSgpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyKCkucmVtb3ZlKCp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OkRl
bGV0ZVVuaXQgeyBtX2lkZW50aWZpZXIgfSwgMCk7CisKKyAgICB3aGlsZSAoIW1fZGVzY3JpcHRp
b25DYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLnRh
a2VGaXJzdCgpKG51bGxwdHIpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmNyZWF0ZVJlbW90ZVVuaXQoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpDcmVhdGVVbml0IHsgbV9pZGVu
dGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiYgZGVzY3JpcHRp
b24sIGF1dG8gZnJhbWVDaHVua1NpemUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIGZyYW1l
Q2h1bmtTaXplKQorICAgICAgICAgICAgd2Vha1RoaXMtPmluaXRpYWxpemUoZGVzY3JpcHRpb24s
IGZyYW1lQ2h1bmtTaXplKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojppbml0aWFsaXplKGNvbnN0
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBm
cmFtZUNodW5rU2l6ZSkKK3sKKyAgICBpZiAobV9zZW1hcGhvcmUpCisgICAgICAgIHN0b3BUaHJl
YWQoKTsKKworICAgIG1fc2VtYXBob3JlID0gbWFrZVVuaXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsK
KyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgbV9mcmFtZUNodW5rU2l6ZSA9
IGZyYW1lQ2h1bmtTaXplOworCisgICAgd2hpbGUgKCFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlz
RW1wdHkoKSkKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxiYWNrcy50YWtlRmlyc3QoKSgmZGVz
Y3JpcHRpb24pOworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICBzdGFydCgpOworfQor
Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
UHJveHk6OnN0YXJ0KCkKK3sKKyAgICBpZiAoIW1fZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9p
c1BsYXlpbmcgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fZGlk
Q2xvc2UpIHsKKyAgICAgICAgbV9kaWRDbG9zZSA9IGZhbHNlOworICAgICAgICBjcmVhdGVSZW1v
dGVVbml0KCk7CisgICAgICAgIGlmICghbV9kZXZpY2VJZC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBzZXRBdWRpb091dHB1dERldmljZShtX2RldmljZUlkKTsKKyAgICAgICAgbV9pc1BsYXlpbmcg
PSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RvcFRocmVhZCgpOworCisg
ICAgbV9pc1BsYXlpbmcgPSB0cnVlOworCisgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3Jp
cHRpb24tPnNhbXBsZVJhdGUoKSAqIDI7CisgICAgbV9yaW5nQnVmZmVyLnJlc2V0KCk7CisgICAg
YXV0byBzdG9yYWdlID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oc3Rk
OjpiaW5kKCZBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5OjpzdG9yYWdlQ2hhbmdlZCwgdGhpcywgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCBzdGQ6
OnBsYWNlaG9sZGVyczo6XzIsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMykpOworICAgIG1fcmluZ0J1
ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihXVEZNb3ZlKHN0b3JhZ2UpLCBtX2Rlc2Ny
aXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsKKworICAgIG1f
YnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KCptX2Rlc2NyaXB0aW9uLCBt
X251bWJlck9mRnJhbWVzKTsKKyAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobV9mcmFtZUNo
dW5rU2l6ZSk7CisKKyAgICBzdGFydFRocmVhZCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VDaGFuZ2Vk
KFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZv
cm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCit7CisgICAgaWYgKCFmcmFtZUNvdW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKG1l
bW9yeSkKKyAgICAgICAgbWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwg
ZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykK
KyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2
NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U3Rh
cnRVbml0IHsgbV9pZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCwgKm1fc2VtYXBob3JlIH0s
IDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6UHJveHk6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpTdG9wVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30K
Kwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQorewor
ICAgIG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlNl
dEF1ZGlvT3V0cHV0RGV2aWNlIHsgbV9pZGVudGlmaWVyLCBkZXZpY2VJZCB9LCAwKTsKK30KKwor
dm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYgY2FsbGJhY2spCit7Cisg
ICAgaWYgKCFtX2Rlc2NyaXB0aW9uIHx8ICFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHko
KSkgeworICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGJhY2soJm1fZGVzY3JpcHRp
b24udmFsdWUoKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVhZCgpCit7CisgICAgaWYgKCFtX3RocmVh
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKKyAg
ICBtX3NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9u
KCk7CisgICAgbV90aHJlYWQgPSBudWxscHRyOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKCkKK3sK
KyAgICBBU1NFUlQoIW1fdGhyZWFkKTsKKyAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSBmYWxzZTsK
KyAgICBhdXRvIHRocmVhZExvb3AgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgbV93cml0
ZU9mZnNldCA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIElmIHdhaXQgZmFpbHMs
IHRoZSBzZW1hcGhvcmUgb24gdGhlIG90aGVyIHNpZGUgd2FzIHByb2JhYmx5IGRlc3Ryb3llZCBh
bmQgd2Ugc2hvdWxkIGp1c3QgZXhpdCBoZXJlIGFuZCB3YWl0IHRvIGxhdW5jaCBhIG5ldyB0aHJl
YWQuCisgICAgICAgICAgICBpZiAoIW1fc2VtYXBob3JlLT53YWl0KCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFkKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhdXRvJiBidWZmZXJMaXN0ID0gKm1fYnVmZmVy
LT5saXN0KCk7CisKKyAgICAgICAgICAgIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzIGZsYWdz
ID0gMDsKKyAgICAgICAgICAgIG1fcmVuZGVyQ2FsbGJhY2sobV9mcmFtZUNodW5rU2l6ZSwgYnVm
ZmVyTGlzdCwgbV93cml0ZU9mZnNldCwgbWFjaF9hYnNvbHV0ZV90aW1lKCksIGZsYWdzKTsKKwor
ICAgICAgICAgICAgaWYgKGZsYWdzID09IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNT
aWxlbmNlKQorICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChi
dWZmZXJMaXN0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZnJhbWVDaHVua1NpemUgKiBtX2Rlc2Ny
aXB0aW9uLT5ieXRlc1BlckZyYW1lKCkpKTsKKworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5z
dG9yZSgmYnVmZmVyTGlzdCwgbV9mcmFtZUNodW5rU2l6ZSwgbV93cml0ZU9mZnNldCk7CisgICAg
ICAgICAgICBtX3dyaXRlT2Zmc2V0ICs9IG1fZnJhbWVDaHVua1NpemU7CisgICAgICAgIH0gd2hp
bGUgKCFtX3Nob3VsZFN0b3BUaHJlYWQpOworICAgIH07CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFk
IiwgV1RGTW92ZSh0aHJlYWRMb29wKSwgVGhyZWFkVHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpV
c2VySW50ZXJhY3RpdmUpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCgpCit7CisgICAgc3Rv
cFRocmVhZCgpOworICAgIG1fZGlkQ2xvc2UgPSB0cnVlOworICAgIGlmIChtX2lzUGxheWluZykK
KyAgICAgICAgc3RhcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZkZWU3MDk0ZDc1YTI0
OWUyYzYwYjcyMDAwYTc2MjQ0MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQ
TEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNl
bWFwaG9yZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90ZUlu
dGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisKKyAgICBjbGFzcyBQcm94eTsKKyAgICB2b2lkIGFk
ZChQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2b2lkIGdwdVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFdlYWtQdHI8UHJveHk+
PiBtX3Byb3hpZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIxOTIzN2Y3ZTk2NzVh
NzFjODMwMzA2N2IzZDYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNoYW5n
ZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFU
aW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDkyOGU0YTYyZGJkMDBiOGJkNjQ4MzQ1Nzdm
MmM3YjhlYmQxNmIxODYuLmJkNzg3M2Y0NjljZWM2NWUxOWY0ZDA1NTg1NDdkMWMzZGM2ZjZhZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkFQSUZyYW1lSGFuZGxlLmgiCiAjaW5jbHVkZSAiQVBJUGFnZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCkBA
IC0xMjcyLDYgKzEyNzMsMTUgQEAgTGliV2ViUlRDQ29kZWNzJiBXZWJQcm9jZXNzOjpsaWJXZWJS
VENDb2RlY3MoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFU
Rk9STShDT0NPQSkKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlciYgV2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlciA9IG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPigpOworICAgIHJldHVybiAqbV9hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7Cit9CisjZW5kaWYKKwogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiYzE2Mzk1YjNiOTUzYjBmZjg3NmEz
MzdmNjFmY2Y2NzBjNmE0ZjAwLi4yMzA3YzcwYjIwYzJhN2Q1MTVhOWY1ZjY2MGVkM2E2YmI2YTRk
NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEwOSw2ICsxMDks
NyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOwogY2xhc3MgRXZlbnREaXNwYXRjaGVyOwogY2xhc3MgR2FtZXBhZERhdGE7CiBjbGFzcyBH
UFVQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTI0NSw2ICsyNDYsOSBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgTGliV2ViUlRDQ29kZWNzJiBsaWJX
ZWJSVENDb2RlY3MoKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKENPQ09BKQorICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
KCk7CisjZW5kaWYKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5JiBsZWdhY3lDRE1GYWN0b3J5KCk7CiAjZW5kaWYKQEAgLTY0MCw2
ICs2NDQsOSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRD
KQogICAgIFJlZlB0cjxMaWJXZWJSVENDb2RlY3M+IG1fbGliV2ViUlRDQ29kZWNzOwogI2VuZGlm
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cj4gbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7Cisj
ZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
CmluZGV4IGRhZTExZTEyODAyYTJjOGFiMTM1NTU4MmUzNTNmMjliNzUzOGJkMmYuLmJkYWIzNzM1
YWQ1ODgxMjFlOGFkZGY2MzZkYjIyY2FmM2IxNmU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApA
QCAtMjgsMTMgKzI4LDE0IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAotI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisj
aW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVS
ZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KQEAgLTc3LDggKzc4LDExIEBAIHZvaWQgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENh
cHR1cmVBdWRpb0luVUlQCiAgICAgbV9hdWRpb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2VzcyhzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpOwogICAgIG1fdmlkZW9GYWN0
b3J5LnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQ
cm9jZXNzKTsKIAotICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpCi0gICAg
ICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9yKFdlYktpdDo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSk7CisgICAgaWYgKHNob3VsZENhcHR1
cmVBdWRpb0luR1BVUHJvY2VzcykgeworICAgICAgICBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQ6OnNldENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uKFtdKGF1dG8m
JiByZW5kZXJDYWxsYmFjaykgeworICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigp
LmNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSk7CisgICAg
ICAgIH0pOworICAgIH0KIAogICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyB8
fCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvQ2FwdHVyZUZhY3RvcnkobV9hdWRpb0Zh
Y3RvcnkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428929</attachid>
            <date>2021-05-18 04:45:10 -0700</date>
            <delta_ts>2021-05-20 06:44:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225603-20210518134508.patch</filename>
            <type>text/plain</type>
            <size>59923</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3OTA3N2M2ZWM2NzE1Yjk2
MzdkYjAxOWVkZGM4OTUzOTUzNzc3ZGQuLjMxNjNiMzQ5ZjcwM2FjYWRlYWQ0OGU0NjU2OGI4YjQ5
Zjk3ZDFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjEtMDUtMTggIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW1w
bGVtZW50IGFuIEludGVybmFsVW5pdCBieSBjcmVhdGluZyBhIHJpbmcgYnVmZmVyIHRoYXQgZ2V0
cyB3cml0dGVuIG9uIFdlYlByb2Nlc3MgYW5kIHJlYWQgb24gR1BVUHJvY2VzcyBieSBhbiBhdWRp
byB1bml0LgorICAgICAgICBJbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24sIGVhY2ggYXVk
aW8gdHJhY2sgd2FzIHNlbnQgdG8gR1BVUHJvY2VzcyB0aGF0IHdhcyBkb2luZyB0aGUgbWl4aW5n
LgorICAgICAgICBTZW5kaW5nIHdhcyBkb25lIGJ5IHNlbmRpbmcgSVBDIG1lc3NhZ2UgZm9yIGVh
Y2ggYXVkaW8gc2FtcGxlLCB3aGljaCB3YXMgYWxzbyBwcm9jZXNzaW5nIGluZWZmaWNpZW50Lgor
CisgICAgICAgIFdlIGFyZSBub3cgY3JlYXRpbmcgYW4gQXVkaW8gVW5pdCBpbiBHUFVQcm9jZXNz
IGFuZCBzaW1pbGFybHkgdG8gV2ViQXVkaW8gYXNraW5nIFdlYlByb2Nlc3MgdG8gcmVuZGVyIGF1
ZGlvIGluIGEgYnVmZmVyIHRoYXQgd2lsbCBiZSBhY3R1YWxseSByZW5kZXJlZCBieSB0aGUgYXVk
aW8gdW5pdC4KKyAgICAgICAgVGhlIG1peGluZyBoYXBwZW5zIGluIFdlYlByb2Nlc3Mgc28gb25s
eSBvbmUgYnVmZmVyIGlzIHNoYXJlZCBiZXR3ZWVuIEdQVVByb2Nlc3MgYW5kIFdlYlByb2Nlc3Ms
IGFuZCBubyBJUEMgbWVzc2FnZSBpcyBzZW50IGZvciBlYWNoIGNodW5rLgorCisgICAgICAgIFRo
ZSBwb3RlbnRpYWwgZG93bnNpZGUgaXMgdGhhdCB0aGUgbWl4aW5nIGlzIGRvbmUgd2l0aCBmaXhl
ZCBjaHVuayBzaXplIGluc3RlYWQgb2YgY2h1bmsgc2l6ZSByZXF1ZXN0ZWQgYnkgdGhlIGF1ZGlv
IHVuaXQuCisgICAgICAgIFRoaXMgbWlnaHQgdHJpZ2dlciBzb21lIGxhdGVuY3kgb3Igc29tZSBv
dmVyaGVhZCBpZiB0aGUgZml4ZWQgY2h1bmsgc2l6ZSBpcyB0b28gZmFyIGZyb20gd2hhdCB0aGUg
YXVkaW8gdW5pdCBpcyBhc2tpbmcuCisKKyAgICAgICAgSW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNy
YXNoLCB3ZSBrZWVwIHRoZSBzYW1lIGZvcm1hdCBkZXNjcmlwdGlvbiBidXQgd2UgZGVsYXkgcmVj
cmVhdGlvbiBvZiB0aGUgdW5pdCBpZiB0aGUgdW5pdCBpcyBzdG9wcGVkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
ZGVsZXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpzdG9wVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAg
ICAgICAoV2ViS2l0OjpyZW5kZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6VW5p
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6flVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpV
bml0OjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6cmVuZGVy
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQpOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmdwdVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6UHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5Ojp+UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVSZW1vdGVVbml0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eTo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAgICAgICAoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVh
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmVz
dGFydElmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMpOgorCiAyMDIxLTA1LTE4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN1cnJlY3QgV0tXZWJWaWV3IG1l
ZGlhIGNvbnRyb2xzIEFQSSByZW1vdmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE5MjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDBjYWU0NWZkMzg0NGMzNGJh
ZjcxMDBmNTA0YmNlNDk3NTY3Yzc1YjAuLjYwMjJjNTI5YjdmZDI5Njc5M2U0MTVkMjc2MDdjMTdl
MTM5NWU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKICAgICBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIKQEAgLTIzOCw2ICsyMzksNyBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFu
ZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZQogCisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgogICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBmOWZmNzE2MjI0NmY3NTMxZGExNGE3NTc0NzQ5ZjU4YTIyN2JkYjcxLi4zNDU3MDhh
MjZlNmViZjI1M2Y5OWRiNGU5MTg4MTJjYmIzZDk2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00Nyw2ICs0Nyw3IEBAICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1NDdiZWE5ZWNk
YTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUuLmVmMDMyNmYwZGE5ZWIwNThhMTFlZjU4ZWNm
ODQ0YzNiZjNlYTc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTUyLDYgKzE1Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2Fn
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOGE1N2E0
NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJiMDI5ZmNjMjg5NjVkYy4uYjM5ODk2YzgzMzBiMmExOWMyMWRl
YWM0NjdhOGNkN2JiYzYxZTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjUx
LDYgKzI1MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciBcCiAJR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IFwKIAlH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBiZWJlMDViYmMzMTU0MC4uNWQ3NTQ4ZDZk
ODIyODU4OWEzNGYzYjQ5ZTU0N2YwYjczYzFiMGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDEsNiAr
NDEsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU92ZXJyaWRlc0Zv
clRlc3RpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmgiCkBAIC0zODEsNiArMzgzLDE0IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCiAK
ICAgICByZXR1cm4gKm1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIH0KKworUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyJiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCp0aGlzKTsKKworICAgIHJldHVy
biAqbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7Cit9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKQEAgLTYwMiw2ICs2MTIsMTAgQEAgYm9vbCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgp
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyZmMwYTI0MTUyMGQyNzMyYWFlZmNh
ODBkOTE5Mjg2ZDNlNTMxMGUwLi45OTQzMDk5YTdjMmExOWM5NzMyZDQ2NjQ5MTliODk2YTQ2NzU5
NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
Y2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiBjbGFzcyBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjsKIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKQEAgLTE1OSw2ICsxNjAsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSgpOworICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
KCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CkBAIC0yMzgsNiArMjQwLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CiAgICAgUmVmPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJN
YW5hZ2VyOwogICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMzMGViNWFjNWY5NzQ4OTlkZDE1ZDA0NjY2ZTlkODQ5
N2QxYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IkdQVVByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9TZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlVuaXQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVW5pdChBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KT4mJik7CisgICAgflVuaXQoKTsKKworICAgIHZvaWQgc3RhcnQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJik7
CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBT
dHJpbmcmKTsKKyAgICBPU1N0YXR1cyByZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1
ZmZlckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRpbWUsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdl
ZChTaGFyZWRNZW1vcnkqLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0PiBtX2xvY2FsVW5pdDsKKyAgICB1aW50NjRfdCBtX3JlYWRPZmZz
ZXQgeyAwIH07CisgICAgdWludDY0X3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKKyAgICBJUEM6
OlNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisjZW5k
aWYKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKK307CisKK1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKK3sKK30KKworUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjp+UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkKK3sKK30K
Kwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmNyZWF0ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjaykKK3sK
KyAgICBBU1NFUlQoIW1fdW5pdHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fdW5pdHMu
YWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0PihpZGVudGlmaWVyLCBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQor
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6ZGVsZXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fdW5pdHMucmVtb3ZlKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91bml0cy5pc0VtcHR5KCkpCisg
ICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElm
VW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYgKGF1dG8qIHVu
aXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RhcnQoaXBjSGFu
ZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZNb3ZlKHNlbWFwaG9y
ZSkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6c3RvcFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHVuaXQgPSBt
X3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5pdC0+c3RvcCgpOworfQorCit2b2lk
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
c2V0QXVkaW9PdXRwdXREZXZpY2UoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7Cisg
ICAgaWYgKGF1dG8qIHVuaXQgPSBtX3VuaXRzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdW5p
dC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitzdGF0aWMgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrIHJlbmRlckNh
bGxiYWNrKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdCYgdW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XShhdXRvIHNhbXBsZUNvdW50
LCBhdXRvJiBsaXN0LCBhdXRvIHNhbXBsZVRpbWUsIGF1dG8gaG9zdFRpbWUsIGF1dG8mIGZsYWdz
KSB7CisgICAgICAgIHJldHVybiB1bml0LnJlbmRlcihzYW1wbGVDb3VudCwgbGlzdCwgc2FtcGxl
VGltZSwgaG9zdFRpbWUsIGZsYWdzKTsKKyAgICB9OworfQorCitSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQoQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNhbGxi
YWNrKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fbG9jYWxVbml0KFdlYkNvcmU6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2NhbEludGVybmFsVW5p
dChyZW5kZXJDYWxsYmFjaygqdGhpcykpKQoreworICAgIG1fbG9jYWxVbml0LT5yZXRyaWV2ZUZv
cm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3JpcHRpb24pIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgY2Fs
bGJhY2soeyB9LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBt
X2ZyYW1lQ2h1bmtTaXplID0gc3RkOjptYXgoV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRl
clF1YW50dW1TaXplLCBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZm
ZXJTaXplKCkpOworICAgICAgICBjYWxsYmFjaygqZGVzY3JpcHRpb24sIG1fZnJhbWVDaHVua1Np
emUpOworICAgIH0pOworfQorCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3Zv
aWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpVbml0OjpzdGFydChjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgaWYgKG1f
aXNQbGF5aW5nKQorICAgICAgICBzdG9wKCk7CisKKyAgICBtX3JlYWRPZmZzZXQgPSAwOworICAg
IG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmlu
Z0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPiho
YW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fcmVuZGVyU2VtYXBo
b3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9jYWxVbml0LT5zdGFydCgpOworfQor
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6VW5pdDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBtX2xv
Y2FsVW5pdC0+c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29u
c3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2FsVW5pdC0+c2V0QXVkaW9PdXRwdXRE
ZXZpY2UoZGV2aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcihzaXplX3Qgc2FtcGxl
Q291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0X3QsIGRvdWJsZSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0Y2hJ
Zkhhc0Vub3VnaERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBtX3JlYWRPZmZzZXQpKSB7CisgICAg
ICAgIG1fcmVhZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAgICAgICAgc3RhdHVzID0gbm9FcnI7
CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBpICs9
IG1fZnJhbWVDaHVua1NpemUpCisgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwor
CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYzNzZhOTdjMjFkOWI2MGFjZGU4ZDFi
M2NmMGFhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2Vt
YXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3MgVW5pdDsKKworcHJp
dmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4m
JiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFVuaXQoQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmKTsKKyAgICB2
b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRl
bnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworCisg
ICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWExZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCittZXNzYWdlcyAt
PiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDaHVu
a1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisgICAgU3RhcnRV
bml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVyU2VtYXBob3JlKQor
ICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091dHB1dERldmljZShX
ZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNmJlYTVkYjcyYjkxOTFlZWRhNzkzNTk2
MTY2ZDNjZjQ3N2UwNWJiOC4uYmI4N2IyMDY3OTY0Mjc2ODk4NmVmN2E4YTUyM2EzMmQ1YzM2NWRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDcsNiAr
MzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtP
YnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAwNDkzZjk1NjdkOGZmY2NmOTUyOGYwNDdmMTZlZWQ5MTYwM2JkM2VkLi45NjVlOTE0MjZiOWJj
NzFlNWQwMmRmMmQ2ZjFkYjk1MTA2NGM0NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcyMyw1ICs3MjMs
NiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBhODI4MzMzMGU1NGM5MWI4MzM4MTI4NmEwYmFhN2Q1YzRlNDFlMmZmLi5i
NmM4MmYzOTljMGQ3NzcwOWQ5Y2Q4YTEzZDA5YjdjZjkxZWRjZTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVy
UHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBA
bm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3Bw
CiAKQEAgLTYxMiw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVv
TGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5oCmluZGV4IGM5Y2NhN2JkNTE3ODcxZDk0YzM4NjgxODM5MWE5MGUxYzlkY2ZiNTEuLjhl
NDIxNTQ3ODUzYTc2NDUxZjRkZWY3NjExNDg1NzhhNzRjYjE1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwODcyN2Q5YmM4ZDQ4YmFmNWQyZjcyOWFk
MTMzYzc4M2ZhZTMzZmI0Li5mNmQwMmUyYmIzYmFlM2Q2NTAwYzBlMzUwMGEyMWVkZDkwMWUwNTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM4MTcsNiArMzgxNywxMiBAQAogCQk0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29y
a01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3Jr
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkwMjY0OTNCN0IwMDRFRDRERSAv
KiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkx
MjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzUzNzhGMjFG
MTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQxNiw2ICs4NDIyLDkgQEAKIAkJCQk0MUZDRDZB
RTIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICov
LAogCQkJCTQxRkNENkFEMjNDQ0MyNjAwMEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oICovLAogCQkJCTQxRkNENkFGMjNDQ0MyNjEwMEM2MjU2NyAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0MUMzQjg4NzI2NDQ0QUQz
MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFDM0I4
ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oICovLAogCQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBMaWJX
ZWJSVENDb2RlY3MuY3BwICovLAogCQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJX
ZWJSVENDb2RlY3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYyQzdDMDBBRTU2ODYgLyogTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluICovLApAQCAtODQ0Nyw2ICs4NDU2LDkgQEAKIAkJCQk0MUQ2
NDU1NDIzQ0NCOTIyMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuY3BwICovLAogCQkJCTQxRDY0NTUzMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQxRDY0NTUyMjNDQ0I5MjEwMDQ4NkUw
RSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbiAqLywK
KwkJCQk0MUMzQjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUMzQjg5MDI2NDkz
QjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmggKi8sCisJCQkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKIAkJCQk0MUQ2NDU1NjIzQ0NCOTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQk0MUQ2NDU1NzIzQ0NCOTY5
MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgg
Ki8sCiAJCQkJNDFENjQ1NTUyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAxNjUzYjY3
ZGZkNDI4YTkxNGQzMDM4MTA2YWE4YThmOGI5Zjc2OWEyLi41NTBmOTllNWJhNjk2YzM3ZmZhNmQz
NjJiNWY5MmViOGZlNDc2M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0yNywxNiArMjcsMjYgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJNZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTQ2NTU2NDIy
M2QyODVjYzliMmVjMGVmODcwMmNlMDkyYjA2MzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWYw
ZDJlOWQ1ZjFiNmY3YjMxYjhmMGViZGNlODFmNzcyYmMxNWU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1l
Lmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJveHk+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQcm94eShXZWJDb3JlOjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7
CisgICAgflByb3h5KCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkludGVybmFsVW5pdCBBUEkuCisgICAg
dm9pZCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgcmV0
cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF1
ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBpbml0aWFs
aXplKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBmcmFt
ZUNodW5rU2l6ZSk7CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgdm9pZCBzdG9wVGhy
ZWFkKCk7CisgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5p
dCgpOworCisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQ6OlJlbmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKwor
ICAgIERlcXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzOworCisgICAgU3RyaW5n
IG1fZGV2aWNlSWQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZmZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OworICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmFtZUNo
dW5rU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRy
PFRocmVhZD4gbV90aHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9wVGhy
ZWFkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkQ2xvc2UgeyBmYWxzZSB9OworfTsKKwordm9p
ZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZChQ
cm94eSYgcHJveHkpCit7CisgICAgbV9wcm94aWVzLmFkZChwcm94eS5pZGVudGlmaWVyKCksIG1h
a2VXZWFrUHRyKHByb3h5KSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZW1vdmUoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJv
eGllcy5yZW1vdmUocHJveHkuaWRlbnRpZmllcigpKTsKK30KKworVW5pcXVlUmVmPFdlYkNvcmU6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmNyZWF0ZVJlbW90ZUludGVybmFs
VW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6
UmVuZGVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5PihX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpCit7Cisg
ICAgZm9yIChhdXRvIHByb3h5IDogbV9wcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+
cmVzdGFydElmTmVlZGVkKCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OlByb3h5KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmIHJlbmRlckNhbGxiYWNr
KQorICAgIDogbV9yZW5kZXJDYWxsYmFjayhXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAs
IG1faWRlbnRpZmllcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuYWRkKCp0aGlz
KTsKKyAgICBjcmVhdGVSZW1vdGVVbml0KCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6On5Qcm94eSgpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyKCkucmVtb3ZlKCp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OkRl
bGV0ZVVuaXQgeyBtX2lkZW50aWZpZXIgfSwgMCk7CisKKyAgICB3aGlsZSAoIW1fZGVzY3JpcHRp
b25DYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLnRh
a2VGaXJzdCgpKG51bGxwdHIpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmNyZWF0ZVJlbW90ZVVuaXQoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpDcmVhdGVVbml0IHsgbV9pZGVu
dGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiYgZGVzY3JpcHRp
b24sIGF1dG8gZnJhbWVDaHVua1NpemUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIGZyYW1l
Q2h1bmtTaXplKQorICAgICAgICAgICAgd2Vha1RoaXMtPmluaXRpYWxpemUoZGVzY3JpcHRpb24s
IGZyYW1lQ2h1bmtTaXplKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojppbml0aWFsaXplKGNvbnN0
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBm
cmFtZUNodW5rU2l6ZSkKK3sKKyAgICBpZiAobV9zZW1hcGhvcmUpCisgICAgICAgIHN0b3BUaHJl
YWQoKTsKKworICAgIG1fc2VtYXBob3JlID0gbWFrZVVuaXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsK
KyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgbV9mcmFtZUNodW5rU2l6ZSA9
IGZyYW1lQ2h1bmtTaXplOworCisgICAgd2hpbGUgKCFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlz
RW1wdHkoKSkKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxiYWNrcy50YWtlRmlyc3QoKSgmZGVz
Y3JpcHRpb24pOworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICBzdGFydCgpOworfQor
Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
UHJveHk6OnN0YXJ0KCkKK3sKKyAgICBpZiAoIW1fZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9p
c1BsYXlpbmcgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fZGlk
Q2xvc2UpIHsKKyAgICAgICAgbV9kaWRDbG9zZSA9IGZhbHNlOworICAgICAgICBjcmVhdGVSZW1v
dGVVbml0KCk7CisgICAgICAgIGlmICghbV9kZXZpY2VJZC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBzZXRBdWRpb091dHB1dERldmljZShtX2RldmljZUlkKTsKKyAgICAgICAgbV9pc1BsYXlpbmcg
PSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RvcFRocmVhZCgpOworCisg
ICAgbV9pc1BsYXlpbmcgPSB0cnVlOworCisgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3Jp
cHRpb24tPnNhbXBsZVJhdGUoKSAqIDI7CisgICAgbV9yaW5nQnVmZmVyLnJlc2V0KCk7CisgICAg
YXV0byBzdG9yYWdlID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oc3Rk
OjpiaW5kKCZBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5OjpzdG9yYWdlQ2hhbmdlZCwgdGhpcywgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCBzdGQ6
OnBsYWNlaG9sZGVyczo6XzIsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMykpOworICAgIG1fcmluZ0J1
ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihXVEZNb3ZlKHN0b3JhZ2UpLCBtX2Rlc2Ny
aXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsKKworICAgIG1f
YnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KCptX2Rlc2NyaXB0aW9uLCBt
X251bWJlck9mRnJhbWVzKTsKKyAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobV9mcmFtZUNo
dW5rU2l6ZSk7CisKKyAgICBzdGFydFRocmVhZCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VDaGFuZ2Vk
KFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZv
cm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCit7CisgICAgaWYgKCFmcmFtZUNvdW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKG1l
bW9yeSkKKyAgICAgICAgbWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwg
ZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykK
KyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2
NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U3Rh
cnRVbml0IHsgbV9pZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCwgKm1fc2VtYXBob3JlIH0s
IDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6UHJveHk6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpTdG9wVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30K
Kwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQorewor
ICAgIG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlNl
dEF1ZGlvT3V0cHV0RGV2aWNlIHsgbV9pZGVudGlmaWVyLCBkZXZpY2VJZCB9LCAwKTsKK30KKwor
dm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYgY2FsbGJhY2spCit7Cisg
ICAgaWYgKCFtX2Rlc2NyaXB0aW9uIHx8ICFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHko
KSkgeworICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGJhY2soJm1fZGVzY3JpcHRp
b24udmFsdWUoKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVhZCgpCit7CisgICAgaWYgKCFtX3RocmVh
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKKyAg
ICBtX3NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9u
KCk7CisgICAgbV90aHJlYWQgPSBudWxscHRyOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKCkKK3sK
KyAgICBBU1NFUlQoIW1fdGhyZWFkKTsKKyAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSBmYWxzZTsK
KyAgICBhdXRvIHRocmVhZExvb3AgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgbV93cml0
ZU9mZnNldCA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIElmIHdhaXQgZmFpbHMs
IHRoZSBzZW1hcGhvcmUgb24gdGhlIG90aGVyIHNpZGUgd2FzIHByb2JhYmx5IGRlc3Ryb3llZCBh
bmQgd2Ugc2hvdWxkIGp1c3QgZXhpdCBoZXJlIGFuZCB3YWl0IHRvIGxhdW5jaCBhIG5ldyB0aHJl
YWQuCisgICAgICAgICAgICBpZiAoIW1fc2VtYXBob3JlLT53YWl0KCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFkKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhdXRvJiBidWZmZXJMaXN0ID0gKm1fYnVmZmVy
LT5saXN0KCk7CisKKyAgICAgICAgICAgIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzIGZsYWdz
ID0gMDsKKyAgICAgICAgICAgIG1fcmVuZGVyQ2FsbGJhY2sobV9mcmFtZUNodW5rU2l6ZSwgYnVm
ZmVyTGlzdCwgbV93cml0ZU9mZnNldCwgbWFjaF9hYnNvbHV0ZV90aW1lKCksIGZsYWdzKTsKKwor
ICAgICAgICAgICAgaWYgKGZsYWdzID09IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNT
aWxlbmNlKQorICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChi
dWZmZXJMaXN0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZnJhbWVDaHVua1NpemUgKiBtX2Rlc2Ny
aXB0aW9uLT5ieXRlc1BlckZyYW1lKCkpKTsKKworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5z
dG9yZSgmYnVmZmVyTGlzdCwgbV9mcmFtZUNodW5rU2l6ZSwgbV93cml0ZU9mZnNldCk7CisgICAg
ICAgICAgICBtX3dyaXRlT2Zmc2V0ICs9IG1fZnJhbWVDaHVua1NpemU7CisgICAgICAgIH0gd2hp
bGUgKCFtX3Nob3VsZFN0b3BUaHJlYWQpOworICAgIH07CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFk
IiwgV1RGTW92ZSh0aHJlYWRMb29wKSwgVGhyZWFkVHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpV
c2VySW50ZXJhY3RpdmUpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCgpCit7CisgICAgc3Rv
cFRocmVhZCgpOworICAgIG1fZGlkQ2xvc2UgPSB0cnVlOworICAgIGlmIChtX2lzUGxheWluZykK
KyAgICAgICAgc3RhcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZkZWU3MDk0ZDc1YTI0
OWUyYzYwYjcyMDAwYTc2MjQ0MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQ
TEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNl
bWFwaG9yZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90ZUlu
dGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisKKyAgICBjbGFzcyBQcm94eTsKKyAgICB2b2lkIGFk
ZChQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2b2lkIGdwdVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFdlYWtQdHI8UHJveHk+
PiBtX3Byb3hpZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIxOTIzN2Y3ZTk2NzVh
NzFjODMwMzA2N2IzZDYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNoYW5n
ZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFU
aW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDkyOGU0YTYyZGJkMDBiOGJkNjQ4MzQ1Nzdm
MmM3YjhlYmQxNmIxODYuLjQ3ODJhMjQ0ZjAzZWEwZjVjYjFhYmYyMmMwYjk4Njc0ZTY1N2E4ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkFQSUZyYW1lSGFuZGxlLmgiCiAjaW5jbHVkZSAiQVBJUGFnZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCkBA
IC0xMjYxLDYgKzEyNjIsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpncHVQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZChHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBBU1NFUlRfVU5V
U0VEKGNvbm5lY3Rpb24sIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb24pOwog
CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobV9hdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLT5ncHVQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZCgpOworI2VuZGlmCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldF
QlJUQykKQEAgLTEyNzIsNiArMTI3OCwxNSBAQCBMaWJXZWJSVENDb2RlY3MmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ0NvZGVjcygpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFBMQVRGT1JNKENPQ09BKQorQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyJiBXZWJQcm9jZXNzOjphdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKQoreworICAgIGlmICghbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCisgICAgICAgIG1fYXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+KCk7CisgICAgcmV0dXJuICptX2F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKK30KKyNlbmRp
ZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGJjMTYzOTViM2I5NTNi
MGZmODc2YTMzN2Y2MWZjZjY3MGM2YTRmMDAuLjIzMDdjNzBiMjBjMmE3ZDUxNWE5ZjVmNjYwZWQz
YTZiYjZhNGQ1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTA5
LDYgKzEwOSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI7CiBjbGFzcyBFdmVudERpc3BhdGNoZXI7CiBjbGFzcyBHYW1lcGFkRGF0YTsK
IGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwpAQCAtMjQ1LDYgKzI0Niw5IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBMaWJXZWJSVENDb2Rl
Y3MmIGxpYldlYlJUQ0NvZGVjcygpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oQ09DT0EpCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyJiBhdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIGxlZ2FjeUNETUZhY3RvcnkoKTsKICNlbmRpZgpA
QCAtNjQwLDYgKzY0NCw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShM
SUJXRUJSVEMpCiAgICAgUmVmUHRyPExpYldlYlJUQ0NvZGVjcz4gbV9saWJXZWJSVENDb2RlY3M7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHAKaW5kZXggZGFlMTFlMTI4MDJhMmM4YWIxMzU1NTgyZTM1M2YyOWI3NTM4YmQyZi4u
YmRhYjM3MzVhZDU4ODEyMWU4YWRkZjYzNmRiMjJjYWYzYjE2ZTc0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuY3BwCkBAIC0yOCwxMyArMjgsMTQgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgpAQCAtNzcsOCArNzgsMTEgQEAg
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0dXJlUHJvY2Vzc2VzKGJvb2wg
c2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVAKICAgICBtX2F1ZGlvRmFjdG9yeS5zZXRTaG91bGRDYXB0
dXJlSW5HUFVQcm9jZXNzKHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2Vzcyk7CiAgICAgbV92
aWRlb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyhzaG91bGRDYXB0dXJlVmlk
ZW9JbkdQVVByb2Nlc3MpOwogCi0gICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2Vz
cykKLSAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldENyZWF0b3IoV2Vi
S2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKTsKKyAgICBpZiAoc2hv
dWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKSB7CisgICAgICAgIFdlYkNvcmU6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2V0Q3JlYXRlSW50ZXJuYWxVbml0RnVuY3Rpb24o
W10oYXV0byYmIHJlbmRlckNhbGxiYWNrKSB7CisgICAgICAgICAgICByZXR1cm4gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyKCkuY3JlYXRlUmVtb3RlSW50ZXJuYWxVbml0KFdURk1vdmUocmVuZGVyQ2FsbGJhY2sp
KTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luVUlQ
cm9jZXNzIHx8IHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcykKICAgICAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9DYXB0dXJlRmFjdG9yeSht
X2F1ZGlvRmFjdG9yeSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429164</attachid>
            <date>2021-05-20 06:45:02 -0700</date>
            <delta_ts>2021-05-21 02:01:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225603-20210520154500.patch</filename>
            <type>text/plain</type>
            <size>59936</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ZGVjODJlZTYxNzcyMjlk
ZGRjM2NlMTZlNDAxYjU4ZGI4MzMxM2MuLmIxMGFiOWY4NTVjZTk5MzIyZDQwNTdhZjNlMmI2ODg5
MTg4OTBiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjEtMDUtMjAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJ
bnRlcm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVu
ZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW1w
bGVtZW50IGFuIEludGVybmFsVW5pdCBieSBjcmVhdGluZyBhIHJpbmcgYnVmZmVyIHRoYXQgZ2V0
cyB3cml0dGVuIG9uIFdlYlByb2Nlc3MgYW5kIHJlYWQgb24gR1BVUHJvY2VzcyBieSBhbiBhdWRp
byB1bml0LgorICAgICAgICBJbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24sIGVhY2ggYXVk
aW8gdHJhY2sgd2FzIHNlbnQgdG8gR1BVUHJvY2VzcyB0aGF0IHdhcyBkb2luZyB0aGUgbWl4aW5n
LgorICAgICAgICBTZW5kaW5nIHdhcyBkb25lIGJ5IHNlbmRpbmcgSVBDIG1lc3NhZ2UgZm9yIGVh
Y2ggYXVkaW8gc2FtcGxlLCB3aGljaCB3YXMgYWxzbyBwcm9jZXNzaW5nIGluZWZmaWNpZW50Lgor
CisgICAgICAgIFdlIGFyZSBub3cgY3JlYXRpbmcgYW4gQXVkaW8gVW5pdCBpbiBHUFVQcm9jZXNz
IGFuZCBzaW1pbGFybHkgdG8gV2ViQXVkaW8gYXNraW5nIFdlYlByb2Nlc3MgdG8gcmVuZGVyIGF1
ZGlvIGluIGEgYnVmZmVyIHRoYXQgd2lsbCBiZSBhY3R1YWxseSByZW5kZXJlZCBieSB0aGUgYXVk
aW8gdW5pdC4KKyAgICAgICAgVGhlIG1peGluZyBoYXBwZW5zIGluIFdlYlByb2Nlc3Mgc28gb25s
eSBvbmUgYnVmZmVyIGlzIHNoYXJlZCBiZXR3ZWVuIEdQVVByb2Nlc3MgYW5kIFdlYlByb2Nlc3Ms
IGFuZCBubyBJUEMgbWVzc2FnZSBpcyBzZW50IGZvciBlYWNoIGNodW5rLgorCisgICAgICAgIFRo
ZSBwb3RlbnRpYWwgZG93bnNpZGUgaXMgdGhhdCB0aGUgbWl4aW5nIGlzIGRvbmUgd2l0aCBmaXhl
ZCBjaHVuayBzaXplIGluc3RlYWQgb2YgY2h1bmsgc2l6ZSByZXF1ZXN0ZWQgYnkgdGhlIGF1ZGlv
IHVuaXQuCisgICAgICAgIFRoaXMgbWlnaHQgdHJpZ2dlciBzb21lIGxhdGVuY3kgb3Igc29tZSBv
dmVyaGVhZCBpZiB0aGUgZml4ZWQgY2h1bmsgc2l6ZSBpcyB0b28gZmFyIGZyb20gd2hhdCB0aGUg
YXVkaW8gdW5pdCBpcyBhc2tpbmcuCisKKyAgICAgICAgSW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNy
YXNoLCB3ZSBrZWVwIHRoZSBzYW1lIGZvcm1hdCBkZXNjcmlwdGlvbiBidXQgd2UgZGVsYXkgcmVj
cmVhdGlvbiBvZiB0aGUgdW5pdCBpZiB0aGUgdW5pdCBpcyBzdG9wcGVkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
ZGVsZXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpzdG9wVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAg
ICAgICAoV2ViS2l0OjpyZW5kZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6VW5p
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6flVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpV
bml0OjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6cmVuZGVy
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQpOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmdwdVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6UHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlByb3h5Ojp+UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVSZW1vdGVVbml0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wKToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eTo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAgICAgICAoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5
OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVh
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmVz
dGFydElmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMpOgorCiAyMDIxLTA1LTE5ICBUb21va2kgSW1h
aSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFNjcm9sbGluZyBtdXN0IGJlIGRv
bmUgYWZ0ZXIgdGhlIGxheW91dCB3aGVuIGRvaW5nIGZ1bGwgcGFnZSB6b29tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCAwY2FlNDVmZDM4NDRjMzRiYWY3MTAwZjUwNGJjZTQ5NzU2N2M3NWIwLi42MDIy
YzUyOWI3ZmQyOTY3OTNlNDE1ZDI3NjA3YzE3ZTEzOTVlOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTE0Myw2ICsxNDMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBH
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eQogICAgIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCisgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlcgog
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyCkBAIC0yMzgs
NiArMjM5LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUKIAorICAgIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKICAg
ICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzCiAgICAgV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZjlmZjcxNjIyNDZmNzUzMWRhMTRh
NzU3NDc0OWY1OGEyMjdiZGI3MS4uMzQ1NzA4YTI2ZTZlYmYyNTNmOTlkYjRlOTE4ODEyY2JiM2Q5
NjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtNDcsNiArNDcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvVHJhY2tQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA3NTQ3YmVhOWVjZGE2MTU0N2ZkY2JmOTk4MmIzNTUxOTc5MmYxMzQ1
Li5lZjAzMjZmMGRhOWViMDU4YTExZWY1OGVjZjg0NGMzYmYzZWE3Nzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE1Miw2ICsxNTIs
OSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDhhNTdhNDVkNWNkNzYyNjQ5OWVjODM0MGJiYjAyOWZjYzI4
OTY1ZGMuLmIzOTg5NmM4MzMwYjJhMTljMjFkZWFjNDY3YThjZDdiYmM2MWUxZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI1MSw2ICsyNTEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
XAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAogCUdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIgXAogCUdQVVByb2Nlc3MvR1BVUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGY5MDIwOGQ3ZjZjYzBmZGYyYmM1Mzc4
OGEwYmViZTA1YmJjMzE1NDAuLjVkNzU0OGQ2ZDgyMjg1ODlhMzRmM2I0OWU1NDdmMGI3M2MxYjBh
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
QXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgpAQCAtMzgxLDYgKzM4MywxNCBA
QCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1c2VyTWVkaWFDYXB0dXJlTWFuYWdlcgogCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk7CiB9CisKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1f
YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAg
ICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA9IG1h
a2VVbmlxdWU8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyPigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOworfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CkBAIC02MDIsNiArNjEyLDEwIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9j
ZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBhdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggMmZjMGEyNDE1MjBkMjczMmFhZWZjYTgwZDkxOTI4NmQzZTUzMTBlMC4uOTk0MzA5OWE3
YzJhMTljOTczMmQ0NjY0OTE5Yjg5NmE0Njc1OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02MSw2ICs2MSw3
IEBAIGNsYXNzIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I7CiBjbGFzcyBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyOworY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk7CiBjbGFzcyBSZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CkBA
IC0xNTksNiArMTYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkm
IHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKKyAgICBSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIGF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigp
OwpAQCAtMjM4LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI+IG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOwogICAgIFJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBSZWY8UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE2N2Uy
YTA3MDg1NTJhYzU4ZjM2YmZjM2EyYThhNDE0YTVmMTA2MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQXVkaW9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3Qu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6VW5pdD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+JiYpOworICAg
IH5Vbml0KCk7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwg
Y29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc3RvcCgpOworICAgIHZvaWQg
c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CisgICAgT1NTdGF0dXMgcmVuZGVy
KHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWludDY0X3Qgc2FtcGxlVGlt
ZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOworCitwcml2
YXRlOgorICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiwgY29uc3QgV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKKworICAgIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gbV9sb2NhbFVu
aXQ7CisgICAgdWludDY0X3QgbV9yZWFkT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fZnJh
bWVDaHVua1NpemUgeyAwIH07CisgICAgSVBDOjpTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmlu
Z0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworI2VuZGlmCisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZh
bHNlIH07Cit9OworCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcigpCit7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVVbml0KEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCk+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFtX3VuaXRzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKKyAgICBtX3VuaXRzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlUmVm
PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
VW5pdD4oaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24o
KSwgV1RGTW92ZShjYWxsYmFjaykpKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmRlbGV0ZVVuaXQoQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX3VuaXRzLnJlbW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fdW5pdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OnN0YXJ0VW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYgc2Vt
YXBob3JlKQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmllcikp
CisgICAgICAgIHVuaXQtPnN0YXJ0KGlwY0hhbmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcywgV1RGTW92ZShzZW1hcGhvcmUpKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnN0b3BVbml0KEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVy
KQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmllcikpCisgICAg
ICAgIHVuaXQtPnN0b3AoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRldmljZUlkKQoreworICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5n
ZXQoaWRlbnRpZmllcikpCisgICAgICAgIHVuaXQtPnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmlj
ZUlkKTsKK30KKworc3RhdGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0OjpSZW5kZXJDYWxsYmFjayByZW5kZXJDYWxsYmFjayhSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQmIHVuaXQpCit7CisgICAgcmV0
dXJuIFsmdW5pdF0oYXV0byBzYW1wbGVDb3VudCwgYXV0byYgbGlzdCwgYXV0byBzYW1wbGVUaW1l
LCBhdXRvIGhvc3RUaW1lLCBhdXRvJiBmbGFncykgeworICAgICAgICByZXR1cm4gdW5pdC5yZW5k
ZXIoc2FtcGxlQ291bnQsIGxpc3QsIHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBmbGFncyk7CisgICAg
fTsKK30KKworUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpVbml0OjpVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjaykKKyAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBt
X2xvY2FsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdDo6Y3JlYXRlTG9jYWxJbnRlcm5hbFVuaXQocmVuZGVyQ2FsbGJhY2soKnRoaXMpKSkKK3sK
KyAgICBtX2xvY2FsVW5pdC0+cmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYmIGRlc2NyaXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZGVz
Y3JpcHRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSwgMCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9mcmFtZUNodW5rU2l6ZSA9IHN0ZDo6bWF4KFdl
YkNvcmU6OkF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkucHJlZmVycmVkQnVmZmVyU2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2so
KmRlc2NyaXB0aW9uLCBtX2ZyYW1lQ2h1bmtTaXplKTsKKyAgICB9KTsKK30KKworUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojp+VW5p
dCgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c3RhcnQoY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3Jl
JiYgc2VtYXBob3JlKQoreworICAgIGlmIChtX2lzUGxheWluZykKKyAgICAgICAgc3RvcCgpOwor
CisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgbV9y
aW5nQnVmZmVyID0gQ0FSaW5nQnVmZmVyOjphZG9wdFN0b3JhZ2UobWFrZVVuaXF1ZVJlZjxSZWFk
T25seVNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihoYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVy
T2ZGcmFtZXMpLm1vdmVUb1VuaXF1ZVB0cigpOworICAgIG1fcmVuZGVyU2VtYXBob3JlID0gV1RG
TW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9jYWxVbml0LT5zdGFydCgpOworfQorCit2b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5p
dDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBtX2xvY2FsVW5pdC0+
c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5n
JiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2FsVW5pdC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2
aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnJlbmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1
ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0X3QsIGRvdWJsZSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKworICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0Y2hJZkhhc0Vub3Vn
aERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBtX3JlYWRPZmZzZXQpKSB7CisgICAgICAgIG1fcmVh
ZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAgICAgICAgc3RhdHVzID0gbm9FcnI7CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBpICs9IG1fZnJhbWVD
aHVua1NpemUpCisgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYzNzZhOTdjMjFkOWI2MGFjZGU4ZDFiM2NmMGFhOTQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworI2lmIFBMQVRG
T1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2VtYXBob3JlOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgY2xhc3MgVW5pdDsKKworcHJpdmF0ZToKKyAg
ICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFj
ayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFVuaXQoQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmKTsKKyAgICB2b2lkIHN0b3BV
bml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7
CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworCisgICAgSGFzaE1h
cDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFVu
aXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFj
MzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0ZjBiZWEzZWExZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM2
IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCittZXNzYWdlcyAtPiBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIgTm90UmVmQ291
bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDaHVua1NpemUpIEFz
eW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisgICAgU3RhcnRVbml0KFdlYktp
dDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgcmVuZGVyU2VtYXBob3JlKQorICAgIFN0b3BV
bml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBTZXRBdWRpb091dHB1dERldmljZShXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNmJlYTVkYjcyYjkxOTFlZWRhNzkzNTk2MTY2ZDNjZjQ3
N2UwNWJiOC4uYmI4N2IyMDY3OTY0Mjc2ODk4NmVmN2E4YTUyM2EzMmQ1YzM2NWRjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDcsNiArMzA3LDcgQEAg
ZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dl
YkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50
V29ybGRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklE
JywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAyNThmOWQz
YmY2ZmZhNzI2YTkzOTFkMTU1NTFjNzUwNGFmYWRiNjhhLi4wMjIyNTQ1M2MzMWE1YmE5MTg1OGZl
NzA1YzY1ZTk1NGMxNGQ3MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcyNCw1ICs3MjQsNiBAQCBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCiBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBhODI4MzMzMGU1NGM5MWI4MzM4MTI4NmEwYmFhN2Q1YzRlNDFlMmZmLi5iNmM4MmYzOTlj
MGQ3NzcwOWQ5Y2Q4YTEzZDA5YjdjZjkxZWRjZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2Nv
YS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHku
Y3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBAbm8tdW5pZnkK
K0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKQEAgLTYx
Miw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1v
dGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
bW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmlu
ZGV4IGM5Y2NhN2JkNTE3ODcxZDk0YzM4NjgxODM5MWE5MGUxYzlkY2ZiNTEuLjhlNDIxNTQ3ODUz
YTc2NDUxZjRkZWY3NjExNDg1NzhhNzRjYjE1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwMGZkOWQzNjA2NDRhMDdjYzdiMjIzNmMxNWYyZTRiNmI0
N2U2ODVmLi4xMWVjNmEwMTg5NjJmMDYxYjExZDI4OWJiMjFlNmUzYTVmODM3NWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MjEs
NiArMzgyMSwxMiBAQAogCQk0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNS
ZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
TUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAy
MDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdp
c3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lz
dGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg4NTI2
NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMz
Qjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkwMjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODkxMjY0OTNCN0Iw
MDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzUzNzhGMjFGMTM2MkQwMDhC
MUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODQyMSw2ICs4NDI3LDkgQEAKIAkJCQk0MUZDRDZBRTIzQ0NDMjYx
MDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICovLAogCQkJCTQx
RkNENkFEMjNDQ0MyNjAwMEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5o
ICovLAogCQkJCTQxRkNENkFGMjNDQ0MyNjEwMEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgg
Ki8sCisJCQkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8sCisJCQkJNDFDM0I4ODUyNjQ0NEFB
QjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5oICovLAogCQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2Rl
Y3MuY3BwICovLAogCQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2Rl
Y3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYyQzdDMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNz
Lm1lc3NhZ2VzLmluICovLApAQCAtODQ1Miw2ICs4NDYxLDkgQEAKIAkJCQk0MUQ2NDU1NDIzQ0NC
OTIyMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICov
LAogCQkJCTQxRDY0NTUzMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQxRDY0NTUyMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MUMz
Qjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUMzQjg5MDI2NDkzQjdCMDA0RUQ0
REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLmggKi8sCisJCQkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAqLywK
IAkJCQk0MUQ2NDU1NjIzQ0NCOTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQk0MUQ2NDU1NzIzQ0NCOTY5MDA0ODZFMEUg
LyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmggKi8sCiAJCQkJ
NDFENjQ1NTUyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAxNjUzYjY3ZGZkNDI4YTkx
NGQzMDM4MTA2YWE4YThmOGI5Zjc2OWEyLi41NTBmOTllNWJhNjk2YzM3ZmZhNmQzNjJiNWY5MmVi
OGZlNDc2M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0yNywxNiArMjcsMjYgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJN
ZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAu
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTQ2NTU2NDIyM2QyODVjYzli
MmVjMGVmODcwMmNlMDkyYjA2MzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjBiNzUyZmZlMjNm
NDU2MmRiOThjM2RhYzYwZmNhYTk2YjZlNjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQcm94eShXZWJDb3JlOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisgICAgflBy
b3h5KCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisg
ICAgdm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkludGVybmFsVW5pdCBBUEkuCisgICAgdm9pZCBzdGFy
dCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVGb3Jt
YXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0
RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBmcmFtZUNodW5rU2l6
ZSk7CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqLCBjb25zdCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCisgICAgdm9pZCBzdG9wVGhyZWFkKCk7Cisg
ICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5pdCgpOworCisg
ICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
bmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworICAgIERlcXVl
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzOworCisgICAgU3RyaW5nIG1fZGV2aWNl
SWQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZmZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIGlu
dDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7
IDAgfTsKKyAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRyPFRocmVhZD4g
bV90aHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9wVGhyZWFkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fZGlkQ2xvc2UgeyBmYWxzZSB9OworfTsKKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZChQcm94eSYgcHJv
eHkpCit7CisgICAgbV9wcm94aWVzLmFkZChwcm94eS5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRy
KHByb3h5KSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpyZW1vdmUoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJveGllcy5yZW1v
dmUocHJveHkuaWRlbnRpZmllcigpKTsKK30KKworVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChXZWJD
b3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5PihXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpCit7CisgICAgZm9yIChh
dXRvIHByb3h5IDogbV9wcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+cmVzdGFydElm
TmVlZGVkKCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6UHJveHk6OlByb3h5KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmIHJlbmRlckNhbGxiYWNrKQorICAgIDog
bV9yZW5kZXJDYWxsYmFjayhXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAsIG1faWRlbnRp
ZmllcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuYWRkKCp0aGlzKTsKKyAgICBj
cmVhdGVSZW1vdGVVbml0KCk7Cit9CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6On5Qcm94eSgpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
KCkucmVtb3ZlKCp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OkRlbGV0ZVVuaXQg
eyBtX2lkZW50aWZpZXIgfSwgMCk7CisKKyAgICB3aGlsZSAoIW1fZGVzY3JpcHRpb25DYWxsYmFj
a3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLnRha2VGaXJzdCgp
KG51bGxwdHIpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OmNyZWF0ZVJlbW90ZVVuaXQoKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpDcmVhdGVVbml0IHsgbV9pZGVudGlmaWVyIH0s
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiYgZGVzY3JpcHRpb24sIGF1dG8g
ZnJhbWVDaHVua1NpemUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIGZyYW1lQ2h1bmtTaXpl
KQorICAgICAgICAgICAgd2Vha1RoaXMtPmluaXRpYWxpemUoZGVzY3JpcHRpb24sIGZyYW1lQ2h1
bmtTaXplKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojppbml0aWFsaXplKGNvbnN0IFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBmcmFtZUNodW5r
U2l6ZSkKK3sKKyAgICBpZiAobV9zZW1hcGhvcmUpCisgICAgICAgIHN0b3BUaHJlYWQoKTsKKwor
ICAgIG1fc2VtYXBob3JlID0gbWFrZVVuaXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsKKyAgICBtX2Rl
c2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgbV9mcmFtZUNodW5rU2l6ZSA9IGZyYW1lQ2h1
bmtTaXplOworCisgICAgd2hpbGUgKCFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxiYWNrcy50YWtlRmlyc3QoKSgmZGVzY3JpcHRpb24p
OworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICBzdGFydCgpOworfQorCit2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0
YXJ0KCkKK3sKKyAgICBpZiAoIW1fZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pc1BsYXlpbmcg
PSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fZGlkQ2xvc2UpIHsK
KyAgICAgICAgbV9kaWRDbG9zZSA9IGZhbHNlOworICAgICAgICBjcmVhdGVSZW1vdGVVbml0KCk7
CisgICAgICAgIGlmICghbV9kZXZpY2VJZC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdWRp
b091dHB1dERldmljZShtX2RldmljZUlkKTsKKyAgICAgICAgbV9pc1BsYXlpbmcgPSB0cnVlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RvcFRocmVhZCgpOworCisgICAgbV9pc1Bs
YXlpbmcgPSB0cnVlOworCisgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRpb24tPnNh
bXBsZVJhdGUoKSAqIDI7CisgICAgbV9yaW5nQnVmZmVyLnJlc2V0KCk7CisgICAgbV9yaW5nQnVm
ZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KHN0ZDo6YmluZCgmQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQsIHRoaXMsIHN0ZDo6cGxhY2Vo
b2xkZXJzOjpfMSwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8yLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzMp
KSk7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShtX2Rlc2NyaXB0aW9uLT5zdHJlYW1EZXNj
cmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsKKworICAgIG1fYnVmZmVyID0gbWFrZVVuaXF1
ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KCptX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKTsK
KyAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobV9mcmFtZUNodW5rU2l6ZSk7CisKKyAgICBz
dGFydFRocmVhZCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVt
b3J5LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1l
Q291bnQpCit7CisgICAgaWYgKCFmcmFtZUNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKG1lbW9yeSkKKyAgICAgICAgbWVt
b3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBD
SGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRh
U2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsK
KyNlbmRpZgorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U3RhcnRVbml0IHsgbV9pZGVudGlm
aWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgIGRhdGFTaXpl
IH0sIGZvcm1hdCwgZnJhbWVDb3VudCwgKm1fc2VtYXBob3JlIH0sIDApOworfQorCit2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0
b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpTdG9wVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzZXRBdWRpb091
dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQoreworICAgIG1fZGV2aWNlSWQgPSBk
ZXZpY2VJZDsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlNldEF1ZGlvT3V0cHV0RGV2aWNl
IHsgbV9pZGVudGlmaWVyLCBkZXZpY2VJZCB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpyZXRyaWV2ZUZvcm1h
dERlc2NyaXB0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2Rlc2NyaXB0
aW9uIHx8ICFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2Rl
c2NyaXB0aW9uQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgY2FsbGJhY2soJm1fZGVzY3JpcHRpb24udmFsdWUoKSk7Cit9CisK
K3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQ
cm94eTo6c3RvcFRocmVhZCgpCit7CisgICAgaWYgKCFtX3RocmVhZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKKyAgICBtX3NlbWFwaG9yZS0+c2ln
bmFsKCk7CisgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV90aHJlYWQg
PSBudWxscHRyOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGhy
ZWFkKTsKKyAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSBmYWxzZTsKKyAgICBhdXRvIHRocmVhZExv
b3AgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIC8vIElmIHdhaXQgZmFpbHMsIHRoZSBzZW1hcGhvcmUgb24g
dGhlIG90aGVyIHNpZGUgd2FzIHByb2JhYmx5IGRlc3Ryb3llZCBhbmQgd2Ugc2hvdWxkIGp1c3Qg
ZXhpdCBoZXJlIGFuZCB3YWl0IHRvIGxhdW5jaCBhIG5ldyB0aHJlYWQuCisgICAgICAgICAgICBp
ZiAoIW1fc2VtYXBob3JlLT53YWl0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFkKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBhdXRvJiBidWZmZXJMaXN0ID0gKm1fYnVmZmVyLT5saXN0KCk7CisKKyAgICAg
ICAgICAgIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzIGZsYWdzID0gMDsKKyAgICAgICAgICAg
IG1fcmVuZGVyQ2FsbGJhY2sobV9mcmFtZUNodW5rU2l6ZSwgYnVmZmVyTGlzdCwgbV93cml0ZU9m
ZnNldCwgbWFjaF9hYnNvbHV0ZV90aW1lKCksIGZsYWdzKTsKKworICAgICAgICAgICAgaWYgKGZs
YWdzID09IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNTaWxlbmNlKQorICAgICAgICAg
ICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXJMaXN0LCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fZnJhbWVDaHVua1NpemUgKiBtX2Rlc2NyaXB0aW9uLT5ieXRlc1BlckZy
YW1lKCkpKTsKKworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5zdG9yZSgmYnVmZmVyTGlzdCwg
bV9mcmFtZUNodW5rU2l6ZSwgbV93cml0ZU9mZnNldCk7CisgICAgICAgICAgICBtX3dyaXRlT2Zm
c2V0ICs9IG1fZnJhbWVDaHVua1NpemU7CisgICAgICAgIH0gd2hpbGUgKCFtX3Nob3VsZFN0b3BU
aHJlYWQpOworICAgIH07CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFkIiwgV1RGTW92ZSh0aHJlYWRM
b29wKSwgVGhyZWFkVHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOwor
fQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCgpCit7CisgICAgc3RvcFRocmVhZCgpOworICAgIG1f
ZGlkQ2xvc2UgPSB0cnVlOworICAgIGlmIChtX2lzUGxheWluZykKKyAgICAgICAgc3RhcnQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZkZWU3MDk0ZDc1YTI0OWUyYzYwYjcyMDAwYTc2MjQ0
MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkKKwor
I2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIo
KSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChXZWJDb3Jl
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJh
Y2smJik7CisKKyAgICBjbGFzcyBQcm94eTsKKyAgICB2b2lkIGFkZChQcm94eSYpOworICAgIHZv
aWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2Vk
KCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdElkZW50aWZpZXIsIFdlYWtQdHI8UHJveHk+PiBtX3Byb3hpZXM7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIxOTIzN2Y3ZTk2NzVhNzFjODMwMzA2N2IzZDYwNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVz
c2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFw
aG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVD
aHVua1NpemUpOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IDBiMmMyMzAzZWM4OTRhOTdjNDhlNWQ4ZDNjZGNhYmE2Y2UzOTZlNzguLmJi
ZTIwMDVhZDZkYzFmNmMzZGNiMDdlYmM4MWQ2ZTRmNDNiYmVmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElG
cmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VHcm91cEhhbmRsZS5oIgogI2luY2x1ZGUg
IkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYS5oIgpAQCAtMTI2Miw2ICsxMjYzLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25DbG9zZWQoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAg
ICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID09ICZj
b25uZWN0aW9uKTsKIAogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1fYXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAgICBt
X2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKTsKKyNlbmRpZgogfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShMSUJXRUJSVEMpCkBAIC0xMjczLDYgKzEyNzksMTUgQEAgTGliV2ViUlRDQ29kZWNz
JiBXZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3MoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciYgV2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAgICBtX2F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA9IG1ha2VVbmlxdWU8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPigpOworICAg
IHJldHVybiAqbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXI7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBi
YzE2Mzk1YjNiOTUzYjBmZjg3NmEzMzdmNjFmY2Y2NzBjNmE0ZjAwLi4yMzA3YzcwYjIwYzJhN2Q1
MTVhOWY1ZjY2MGVkM2E2YmI2YTRkNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOwogY2xhc3MgRXZlbnREaXNwYXRjaGVyOwogY2xhc3Mg
R2FtZXBhZERhdGE7CiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTI0NSw2ICsyNDYs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAg
TGliV2ViUlRDQ29kZWNzJiBsaWJXZWJSVENDb2RlY3MoKTsKICNlbmRpZgorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisjZW5kaWYKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKICAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5JiBsZWdhY3lDRE1GYWN0b3J5
KCk7CiAjZW5kaWYKQEAgLTY0MCw2ICs2NDQsOSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIFJlZlB0cjxMaWJXZWJSVENDb2RlY3M+IG1fbGli
V2ViUlRDQ29kZWNzOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IGRhZTExZTEyODAyYTJjOGFiMTM1NTU4MmUzNTNm
MjliNzUzOGJkMmYuLmJkYWIzNzM1YWQ1ODgxMjFlOGFkZGY2MzZkYjIyY2FmM2IxNmU3NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KQEAgLTc3
LDggKzc4LDExIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVBy
b2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQCiAgICAgbV9hdWRpb0ZhY3Rvcnku
c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyhzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nl
c3MpOwogICAgIG1fdmlkZW9GYWN0b3J5LnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hv
dWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzKTsKIAotICAgIGlmIChzaG91bGRDYXB0dXJlQXVk
aW9JbkdQVVByb2Nlc3MpCi0gICAgICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpz
ZXRDcmVhdG9yKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSk7
CisgICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcykgeworICAgICAgICBXZWJD
b3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNldENyZWF0ZUludGVybmFs
VW5pdEZ1bmN0aW9uKFtdKGF1dG8mJiByZW5kZXJDYWxsYmFjaykgeworICAgICAgICAgICAgcmV0
dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChXVEZNb3ZlKHJl
bmRlckNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGlmIChzaG91bGRDYXB0
dXJlQXVkaW9JblVJUHJvY2VzcyB8fCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpCiAg
ICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvQ2Fw
dHVyZUZhY3RvcnkobV9hdWRpb0ZhY3RvcnkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429273</attachid>
            <date>2021-05-21 02:01:27 -0700</date>
            <delta_ts>2021-05-21 02:03:57 -0700</delta_ts>
            <desc>Fix small regression compared to previous approach</desc>
            <filename>bug-225603-20210521110125.patch</filename>
            <type>text/plain</type>
            <size>64469</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4NzI4ZDZmYjVmYzY1
ODY4NzE2ZTBjNTk2ODQxNDU4OGQxZmZmMS4uMzhlMzE0ZDJkN2NmNjhlYzY1Yzc1NjE4OTc3YjY0
YzE2N2MxMzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSByZW1v
dGUgSW50ZXJuYWwgVW5pdCBpbiBHUFVQcm9jZXNzIGZvciBhdWRpbyBNZWRpYVN0cmVhbVRyYWNr
IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83ODExNDM5MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgY2FzZSB3aGVy
ZSB3ZSB3ZXJlIGNhbGxpbmcgc3RhcnQgZXZlbiB0aG91Z2ggYSBzb3VyY2Ugd2FzIGFscmVhZHkg
YmVpbmcgcGxheWVkLgorICAgICAgICBUaGlzIGlzIG1vcmUgY29uc2lzdGVudCBzaW5jZSB3ZSBh
cmUgZG9pbmcgdGhvc2UgY2hlY2tzIGZvciBzdG9wLgorICAgICAgICBSZWR1Y2UgdGhlIGNvZGUg
d2hlcmUgd2UgbG9jayBzb3VyY2VzIHRvIHRoZSBtaW5pbXVtLgorCisgICAgICAgIEluIGNhc2Ug
d2Ugd2FudCB0byBsb2NrIHRoZSBzb3VyY2VzIGNvcHkgaW4gYXVkaW8gdGhyZWFkIGFuZCB3ZSBm
YWlsLCBjb250aW51ZSByZW5kZXJpbmcgYXVkaW8gaW5zdGVhZCBvZiBkcm9wcGluZyBldmVyeXRo
aW5nLgorICAgICAgICBBZGQgc29tZSBtYWluIHRocmVhZCBhc3NlcnRpb25zIGluIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCBtZXRob2RzLgorCisgICAgICAgIE1hbnVhbGx5IHRl
c3RlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmFkZFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbW92ZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbmRlcik6CisK
IDIwMjEtMDUtMjAgIEZlbGlwZSBFcmlhcyAgPGZlbGlwZWVyaWFzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW2Nzcy1mbGV4Ym94XSBXcm9uZyBoZWlnaHQgb2YgYW4gZW1wdHkgdGFibGUgaW5zaWRl
IGFuIG9ydGhvZ29uYWwgZmxleCBwYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOThkZWM4MmVlNjE3NzIyOWRk
ZGMzY2UxNmU0MDFiNThkYjgzMzEzYy4uYjEwYWI5Zjg1NWNlOTkzMjJkNDA1N2FmM2UyYjY4ODkx
ODg5MGI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAyMS0wNS0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGEgcmVtb3RlIElu
dGVybmFsIFVuaXQgaW4gR1BVUHJvY2VzcyBmb3IgYXVkaW8gTWVkaWFTdHJlYW1UcmFjayByZW5k
ZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYwMworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgYW4gSW50ZXJuYWxVbml0IGJ5IGNyZWF0aW5nIGEgcmluZyBidWZmZXIgdGhhdCBnZXRz
IHdyaXR0ZW4gb24gV2ViUHJvY2VzcyBhbmQgcmVhZCBvbiBHUFVQcm9jZXNzIGJ5IGFuIGF1ZGlv
IHVuaXQuCisgICAgICAgIEluIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgZWFjaCBhdWRp
byB0cmFjayB3YXMgc2VudCB0byBHUFVQcm9jZXNzIHRoYXQgd2FzIGRvaW5nIHRoZSBtaXhpbmcu
CisgICAgICAgIFNlbmRpbmcgd2FzIGRvbmUgYnkgc2VuZGluZyBJUEMgbWVzc2FnZSBmb3IgZWFj
aCBhdWRpbyBzYW1wbGUsIHdoaWNoIHdhcyBhbHNvIHByb2Nlc3NpbmcgaW5lZmZpY2llbnQuCisK
KyAgICAgICAgV2UgYXJlIG5vdyBjcmVhdGluZyBhbiBBdWRpbyBVbml0IGluIEdQVVByb2Nlc3Mg
YW5kIHNpbWlsYXJseSB0byBXZWJBdWRpbyBhc2tpbmcgV2ViUHJvY2VzcyB0byByZW5kZXIgYXVk
aW8gaW4gYSBidWZmZXIgdGhhdCB3aWxsIGJlIGFjdHVhbGx5IHJlbmRlcmVkIGJ5IHRoZSBhdWRp
byB1bml0LgorICAgICAgICBUaGUgbWl4aW5nIGhhcHBlbnMgaW4gV2ViUHJvY2VzcyBzbyBvbmx5
IG9uZSBidWZmZXIgaXMgc2hhcmVkIGJldHdlZW4gR1BVUHJvY2VzcyBhbmQgV2ViUHJvY2Vzcywg
YW5kIG5vIElQQyBtZXNzYWdlIGlzIHNlbnQgZm9yIGVhY2ggY2h1bmsuCisKKyAgICAgICAgVGhl
IHBvdGVudGlhbCBkb3duc2lkZSBpcyB0aGF0IHRoZSBtaXhpbmcgaXMgZG9uZSB3aXRoIGZpeGVk
IGNodW5rIHNpemUgaW5zdGVhZCBvZiBjaHVuayBzaXplIHJlcXVlc3RlZCBieSB0aGUgYXVkaW8g
dW5pdC4KKyAgICAgICAgVGhpcyBtaWdodCB0cmlnZ2VyIHNvbWUgbGF0ZW5jeSBvciBzb21lIG92
ZXJoZWFkIGlmIHRoZSBmaXhlZCBjaHVuayBzaXplIGlzIHRvbyBmYXIgZnJvbSB3aGF0IHRoZSBh
dWRpbyB1bml0IGlzIGFza2luZy4KKworICAgICAgICBJbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jh
c2gsIHdlIGtlZXAgdGhlIHNhbWUgZm9ybWF0IGRlc2NyaXB0aW9uIGJ1dCB3ZSBkZWxheSByZWNy
ZWF0aW9uIG9mIHRoZSB1bml0IGlmIHRoZSB1bml0IGlzIHN0b3BwZWQuCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdGFydCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjp+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVVbml0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpk
ZWxldGVVbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpzdGFydFVuaXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OnN0b3BVbml0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAg
ICAgIChXZWJLaXQ6OnJlbmRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpVbml0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojp+VW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVu
aXQ6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpyZW5kZXIp
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdGFydCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OmNyZWF0ZVJlbW90ZUludGVybmFsVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
UHJveHk6On5Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmNyZWF0ZVJlbW90ZVVuaXQpOgorICAg
ICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnQpOgorICAg
ICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3ApOgor
ICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OlByb3h5OjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6
OnJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wVGhyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RhcnRUaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpyZXN0
YXJ0SWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyk6CisKIDIwMjEtMDUtMTkgIFRvbW9raSBJbWFp
ICA8VG9tb2tpLkltYWlAc29ueS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5nIG11c3QgYmUgZG9u
ZSBhZnRlciB0aGUgbGF5b3V0IHdoZW4gZG9pbmcgZnVsbCBwYWdlIHpvb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCmluZGV4IDk4
MDQzZDk1Y2VmZjUyN2YyOGI3YWQyNDFmYzkzZjA3MzZiMTkzOGUuLjQwYzMwNmJhZjRjZGYyOTFm
ODlmMjA1M2U2OGZhZGFhZWRhZTVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcApAQCAtODIsMjkgKzgyLDM3IEBAIHZvaWQg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzZXRBdWRpb091dHB1dERldmljZShj
b25zdCBTdHJpbmcmIGRldmljCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6YWRkU291cmNlKFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+JiYgc291cmNlKQogewogICAg
IFJFTEVBU0VfTE9HKFdlYlJUQywgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6
YWRkU291cmNlIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIEFTU0VSVCgh
bV9zb3VyY2VzLmNvbnRhaW5zKHNvdXJjZS5nZXQoKSkpOworICAgIGJvb2wgc2hvdWxkU3RhcnQg
PSBtX3NvdXJjZXMuaXNFbXB0eSgpOworICAgIG1fc291cmNlcy5hZGQoV1RGTW92ZShzb3VyY2Up
KTsKIAogICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NvdXJjZXNMb2Nr
KTsKLSAgICAgICAgQVNTRVJUKCFtX3NvdXJjZXMuY29udGFpbnMoc291cmNlLmdldCgpKSk7Ci0g
ICAgICAgIG1fc291cmNlcy5hZGQoV1RGTW92ZShzb3VyY2UpKTsKICAgICAgICAgbV9zb3VyY2Vz
Q29weSA9IGNvcHlUb1ZlY3RvcihtX3NvdXJjZXMpOwogICAgICAgICBtX3Nob3VsZFVwZGF0ZVJl
bmRlclNvdXJjZXMgPSB0cnVlOwogICAgIH0KLSAgICBzdGFydCgpOworCisgICAgaWYgKHNob3Vs
ZFN0YXJ0KQorICAgICAgICBzdGFydCgpOwogfQogCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6cmVtb3ZlU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYgc291cmNl
KQogewogICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdDo6cmVtb3ZlU291cmNlIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGJvb2wgc2hvdWxkU3RvcCA9ICFtX3NvdXJjZXMuaXNFbXB0eSgpOworICAgIG1fc291cmNl
cy5yZW1vdmUoc291cmNlKTsKKyAgICBzaG91bGRTdG9wICY9IG1fc291cmNlcy5pc0VtcHR5KCk7
CiAKLSAgICBib29sIHNob3VsZFN0b3AgPSBmYWxzZTsKICAgICB7CiAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9zb3VyY2VzTG9jayk7Ci0gICAgICAgIG1fc291cmNlcy5yZW1vdmUo
c291cmNlKTsKLSAgICAgICAgc2hvdWxkU3RvcCA9IG1fc291cmNlcy5pc0VtcHR5KCk7CiAgICAg
ICAgIG1fc291cmNlc0NvcHkgPSBjb3B5VG9WZWN0b3IobV9zb3VyY2VzKTsKICAgICAgICAgbV9z
aG91bGRVcGRhdGVSZW5kZXJTb3VyY2VzID0gdHJ1ZTsKICAgICB9CisKICAgICBpZiAoc2hvdWxk
U3RvcCkKICAgICAgICAgc3RvcCgpOwogfQpAQCAtMTEyLDE3ICsxMjAsMjIgQEAgdm9pZCBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURh
dGFTb3VyY2UmIHNvdXIKIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojpz
dGFydCgpCiB7CiAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0OjpzdGFydCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAg
ICBtX2ludGVybmFsVW5pdC0+c3RhcnQoKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQ6OnN0b3AoKQogewogICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c3RvcCIpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKICAgICBtX2ludGVybmFsVW5pdC0+c3RvcCgpOwogfQogCiB2b2lkIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYm
IGNhbGxiYWNrKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9pbnRlcm5h
bFVuaXQtPnJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShjYWxsYmFjaykpOwogfQog
CkBAIC0xMzMsMTIgKzE0NiwxMCBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDo6cmVuZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaQogCiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fc2hvdWxkVXBkYXRlUmVuZGVyU291cmNl
cykgewotICAgICAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fc291cmNlc0xvY2spOwot
ICAgICAgICBpZiAoIWxvY2tlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3Jl
bmRlclNvdXJjZXMgPSBXVEZNb3ZlKG1fc291cmNlc0NvcHkpOwotICAgICAgICBtX3Nob3VsZFVw
ZGF0ZVJlbmRlclNvdXJjZXMgPSBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gbG9ja2VyID0gdHJ5
SG9sZExvY2sobV9zb3VyY2VzTG9jaykpIHsKKyAgICAgICAgICAgIG1fcmVuZGVyU291cmNlcyA9
IFdURk1vdmUobV9zb3VyY2VzQ29weSk7CisgICAgICAgICAgICBtX3Nob3VsZFVwZGF0ZVJlbmRl
clNvdXJjZXMgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtX3JlbmRlclNv
dXJjZXMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAwY2FlNDVmZDM4NDRjMzRi
YWY3MTAwZjUwNGJjZTQ5NzU2N2M3NWIwLi42MDIyYzUyOWI3ZmQyOTY3OTNlNDE1ZDI3NjA3YzE3
ZTEzOTVlOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTE0Myw2ICsxNDMsNyBAQCBzZXQoV2Vi
S2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eQogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyCiAgICAgR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlcgogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyCkBAIC0yMzgsNiArMjM5LDcgQEAgc2V0KFdlYktpdF9NRVNT
QUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUKIAorICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzCiAgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggZjlmZjcxNjIyNDZmNzUzMWRhMTRhNzU3NDc0OWY1OGEyMjdiZGI3MS4uMzQ1NzA4
YTI2ZTZlYmYyNTNmOTlkYjRlOTE4ODEyY2JiM2Q5NjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNDcsNiArNDcsNyBAQCAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3NTQ3YmVhOWVj
ZGE2MTU0N2ZkY2JmOTk4MmIzNTUxOTc5MmYxMzQ1Li5lZjAzMjZmMGRhOWViMDU4YTExZWY1OGVj
Zjg0NGMzYmYzZWE3Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTE1Miw2ICsxNTIsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3Nh
ZwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVk
aW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDhhNTdh
NDVkNWNkNzYyNjQ5OWVjODM0MGJiYjAyOWZjYzI4OTY1ZGMuLmIzOTg5NmM4MzMwYjJhMTljMjFk
ZWFjNDY3YThjZDdiYmM2MWUxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI1
MSw2ICsyNTEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIgXAogCUdQVVByb2Nlc3MvR1BVUHJv
Y2VzcyBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSBcCiAJ
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGY5MDIwOGQ3ZjZjYzBmZGYyYmM1Mzc4OGEwYmViZTA1YmJjMzE1NDAuLjVkNzU0OGQ2
ZDgyMjg1ODlhMzRmM2I0OWU1NDdmMGI3M2MxYjBhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQxLDYg
KzQxLDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFPdmVycmlkZXNG
b3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5oIgpAQCAtMzgxLDYgKzM4MywxNCBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFDYXB0dXJlTWFuYWdlcgog
CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiB9CisKK1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciA9IG1ha2VVbmlxdWU8UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPigqdGhpcyk7CisKKyAgICByZXR1
cm4gKm1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOwor
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCkBAIC02MDIsNiArNjEyLDEwIEBAIGJvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHko
KS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBh
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMmZjMGEyNDE1MjBkMjczMmFhZWZj
YTgwZDkxOTI4NmQzZTUzMTBlMC4uOTk0MzA5OWE3YzJhMTljOTczMmQ0NjY0OTE5Yjg5NmE0Njc1
OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIExvY2FsQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3I7CiBjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsK
IGNsYXNzIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5OwogY2xhc3MgUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CkBAIC0xNTksNiArMTYwLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkoKTsKKyAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXImIGF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cigpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOwpAQCAtMjM4LDYgKzI0MCw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+IG1fYXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOwogICAgIFJlZjxSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVy
TWFuYWdlcjsKICAgICBSZWY8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4g
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE2N2UyYTA3MDg1NTJhYzU4ZjM2YmZjM2EyYThhNDE0
YTVmMTA2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpVbml0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdD4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFVuaXQoQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIHNpemVfdCk+JiYpOworICAgIH5Vbml0KCk7CisKKyAgICB2b2lkIHN0YXJ0
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYp
OworICAgIHZvaWQgc3RvcCgpOworICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3Qg
U3RyaW5nJik7CisgICAgT1NTdGF0dXMgcmVuZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9C
dWZmZXJMaXN0JiwgdWludDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1Vu
aXRSZW5kZXJBY3Rpb25GbGFncyYpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RvcmFnZUNoYW5n
ZWQoU2hhcmVkTWVtb3J5KiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jiwgc2l6ZV90KTsKKworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdD4gbV9sb2NhbFVuaXQ7CisgICAgdWludDY0X3QgbV9yZWFkT2Zm
c2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fZnJhbWVDaHVua1NpemUgeyAwIH07CisgICAgSVBD
OjpTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworI2Vu
ZGlmCisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07Cit9OworCitSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcihHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgIDogbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7Cit9CisKK1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6flJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpCit7Cit9
CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpjcmVhdGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+JiYgY2FsbGJhY2spCit7
CisgICAgQVNTRVJUKCFtX3VuaXRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3VuaXRz
LmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlUmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdD4oaWRlbnRpZmllciwgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShjYWxsYmFjaykpKTsKK30K
Kwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmRlbGV0ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3VuaXRzLnJlbW92ZShpZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdW5pdHMuaXNFbXB0eSgpKQor
ICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJ
ZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OnN0YXJ0VW5pdChBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQoreworICAgIGlmIChhdXRvKiB1
bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHVuaXQtPnN0YXJ0KGlwY0hh
bmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcywgV1RGTW92ZShzZW1hcGhv
cmUpKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OnN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiB1bml0ID0g
bV91bml0cy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHVuaXQtPnN0b3AoKTsKK30KKwordm9p
ZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OnNldEF1ZGlvT3V0cHV0RGV2aWNlKEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRldmljZUlkKQorewor
ICAgIGlmIChhdXRvKiB1bml0ID0gbV91bml0cy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHVu
aXQtPnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKK30KKworc3RhdGljIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayByZW5kZXJD
YWxsYmFjayhSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlVuaXQmIHVuaXQpCit7CisgICAgcmV0dXJuIFsmdW5pdF0oYXV0byBzYW1wbGVDb3Vu
dCwgYXV0byYgbGlzdCwgYXV0byBzYW1wbGVUaW1lLCBhdXRvIGhvc3RUaW1lLCBhdXRvJiBmbGFn
cykgeworICAgICAgICByZXR1cm4gdW5pdC5yZW5kZXIoc2FtcGxlQ291bnQsIGxpc3QsIHNhbXBs
ZVRpbWUsIGhvc3RUaW1lLCBmbGFncyk7CisgICAgfTsKK30KKworUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpVbml0KEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxs
YmFjaykKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9u
KFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX2xvY2FsVW5pdChXZWJDb3JlOjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6Y3JlYXRlTG9jYWxJbnRlcm5hbFVu
aXQocmVuZGVyQ2FsbGJhY2soKnRoaXMpKSkKK3sKKyAgICBtX2xvY2FsVW5pdC0+cmV0cmlldmVG
b3JtYXREZXNjcmlwdGlvbihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGRlc2NyaXB0aW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKHsgfSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bV9mcmFtZUNodW5rU2l6ZSA9IHN0ZDo6bWF4KFdlYkNvcmU6OkF1ZGlvVXRpbGl0aWVzOjpyZW5k
ZXJRdWFudHVtU2l6ZSwgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucHJlZmVycmVkQnVm
ZmVyU2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2soKmRlc2NyaXB0aW9uLCBtX2ZyYW1lQ2h1bmtT
aXplKTsKKyAgICB9KTsKK30KKworUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojp+VW5pdCgpCit7CisgICAgc3RvcCgpOworfQorCit2
b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6VW5pdDo6c3RhcnQoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQoreworICAgIGlmICht
X2lzUGxheWluZykKKyAgICAgICAgc3RvcCgpOworCisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAg
ICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgbV9yaW5nQnVmZmVyID0gQ0FSaW5nQnVmZmVyOjph
ZG9wdFN0b3JhZ2UobWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
PihoYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpLm1vdmVUb1VuaXF1ZVB0cigp
OworICAgIG1fcmVuZGVyU2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOworICAgIG1fbG9j
YWxVbml0LT5zdGFydCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlp
bmcgPSBmYWxzZTsKKyAgICBtX2xvY2FsVW5pdC0+c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6c2V0
QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBtX2xvY2Fs
VW5pdC0+c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworfQorCitPU1N0YXR1cyBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6
OnJlbmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgbGlzdCwgdWludDY0
X3QsIGRvdWJsZSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKQoreworICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKKworICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOworCisgICAgaWYg
KG1fcmluZ0J1ZmZlci0+ZmV0Y2hJZkhhc0Vub3VnaERhdGEoJmxpc3QsIHNhbXBsZUNvdW50LCBt
X3JlYWRPZmZzZXQpKSB7CisgICAgICAgIG1fcmVhZE9mZnNldCArPSBzYW1wbGVDb3VudDsKKyAg
ICAgICAgc3RhdHVzID0gbm9FcnI7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNhbXBsZUNvdW50OyBpICs9IG1fZnJhbWVDaHVua1NpemUpCisgICAgICAgIG1fcmVuZGVy
U2VtYXBob3JlLnNpZ25hbCgpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVhN2RkMjYz
NzZhOTdjMjFkOWI2MGFjZGU4ZDFiM2NmMGFhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgU2VtYXBob3JlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb247CisKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisg
ICAgY2xhc3MgVW5pdDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3Jl
YXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBkZWxldGVVbml0KEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAg
dm9pZCBzdGFydFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6
OlNlbWFwaG9yZSYmKTsKKyAgICB2b2lkIHN0b3BVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERl
dmljZShBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYpOworCisgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFVuaXF1ZVJlZjxVbml0Pj4gbV91bml0czsKKyAg
ICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMzFkYjZiMTQ3ZWZjNTNjN2Q0NTAwNmM5YTI0
ZjBiZWEzZWExZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCittZXNzYWdlcyAtPiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlVW5pdChXZWJL
aXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uLCBzaXplX3QgZnJhbWVDaHVua1NpemUpIEFzeW5jCisgICAgRGVsZXRlVW5pdChXZWJLaXQ6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVu
dGlmaWVyKQorCisgICAgU3RhcnRVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhv
cmUgcmVuZGVyU2VtYXBob3JlKQorICAgIFN0b3BVbml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisKKyAgICBT
ZXRBdWRpb091dHB1dERldmljZShXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgZGV2aWNlSWQpCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNmJl
YTVkYjcyYjkxOTFlZWRhNzkzNTk2MTY2ZDNjZjQ3N2UwNWJiOC4uYmI4N2IyMDY3OTY0Mjc2ODk4
NmVmN2E4YTUyM2EzMmQ1YzM2NWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0zMDcsNiArMzA3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2Vi
S2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXInLAorICAgICAgICAn
V2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxv
YWRJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCAyNThmOWQzYmY2ZmZhNzI2YTkzOTFkMTU1NTFjNzUwNGFm
YWRiNjhhLi4wMjIyNTQ1M2MzMWE1YmE5MTg1OGZlNzA1YzY1ZTk1NGMxNGQ3MDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTcyNCw1ICs3MjQsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBhODI4MzMzMGU1NGM5MWI4MzM4MTI4
NmEwYmFhN2Q1YzRlNDFlMmZmLi5iNmM4MmYzOTljMGQ3NzcwOWQ5Y2Q4YTEzZDA5YjdjZjkxZWRj
ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02OCw2ICs2OCw3IEBAIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2Nv
Y29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbSBAbm8tdW5pZnkKK0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKIAogUGxh
dGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKQEAgLTYxMiw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3Bw
CiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1tCiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmluZGV4IGM5Y2NhN2JkNTE3ODcxZDk0YzM4Njgx
ODM5MWE5MGUxYzlkY2ZiNTEuLjhlNDIxNTQ3ODUzYTc2NDUxZjRkZWY3NjExNDg1NzhhNzRjYjE1
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMGZk
OWQzNjA2NDRhMDdjYzdiMjIzNmMxNWYyZTRiNmI0N2U2ODVmLi4xMWVjNmEwMTg5NjJmMDYxYjEx
ZDI4OWJiMjFlNmUzYTVmODM3NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MjEsNiArMzgyMSwxMiBAQAogCQk0MUI3RUQ2RjIw
Njk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01E
TlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2
NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODg3MjY0NDRBRDMw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNC
ODkwMjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxQzNCODkxMjY0OTNCN0IwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4OTQyNjQ5M0I3QzAw
NEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzUzNzhGMjFGMTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5
MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAv
KiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVj
b3JkZXJQcml2YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQyMSw2ICs4
NDI3LDkgQEAKIAkJCQk0MUZDRDZBRTIzQ0NDMjYxMDBDNjI1NjcgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwICovLAogCQkJCTQxRkNENkFEMjNDQ0MyNjAwMEM2MjU2NyAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQxRkNENkFGMjNDQ0MyNjEw
MEM2MjU2NyAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIuaCAqLywK
KwkJCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggKi8sCisJCQkJNDFDM0I4ODYyNjQ0NEFBQzAw
NEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ci5jcHAgKi8sCisJCQkJNDFDM0I4ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oICovLAogCQkJCTQxNzIxOThBMjNC
NjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MuY3BwICovLAogCQkJCTQxNzIxOTg5MjNC
NjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYy
QzdDMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluICovLApAQCAtODQ1Miw2
ICs4NDYxLDkgQEAKIAkJCQk0MUQ2NDU1NDIzQ0NCOTIyMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICovLAogCQkJCTQxRDY0NTUzMjNDQ0I5MjEwMDQ4
NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovLAogCQkJCTQx
RDY0NTUyMjNDQ0I5MjEwMDQ4NkUwRSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MUMzQjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAq
LywKKwkJCQk0MUMzQjg5MDI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8sCisJCQkJNDFDM0I4OTQyNjQ5
M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MUQ2NDU1NjIzQ0NCOTY5MDA0ODZF
MEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCAqLywK
IAkJCQk0MUQ2NDU1NzIzQ0NCOTY5MDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyLmggKi8sCiAJCQkJNDFENjQ1NTUyM0NDQjk2OTAwNDg2RTBFIC8q
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbiAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAppbmRleCAxNjUzYjY3ZGZkNDI4YTkxNGQzMDM4MTA2YWE4YThmOGI5Zjc2OWEyLi41
NTBmOTllNWJhNjk2YzM3ZmZhNmQzNjJiNWY5MmViOGZlNDc2M2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0yNywx
NiArMjcsMjYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNTQ2NTU2NDIyM2QyODVjYzliMmVjMGVmODcwMmNlMDkyYjA2MzVkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NjBiNzUyZmZlMjNmNDU2MmRiOThjM2RhYzYwZmNhYTk2YjZlNjNk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAt
MCwwICsxLDI3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRl
ICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJp
bmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2lu
Y2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OlByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJv
eHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBQcm94eShXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dDo6UmVuZGVyQ2FsbGJhY2smJik7CisgICAgflByb3h5KCk7CisKKyAgICBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdm9pZCByZXN0YXJ0SWZOZWVkZWQoKTsK
KworcHJpdmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6Oklu
dGVybmFsVW5pdCBBUEkuCisgICAgdm9pZCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgp
IGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCBmcmFtZUNodW5rU2l6ZSk7CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdl
ZChTaGFyZWRNZW1vcnkqLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
OworCisgICAgdm9pZCBzdG9wVGhyZWFkKCk7CisgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAg
IHZvaWQgY3JlYXRlUmVtb3RlVW5pdCgpOworCisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJh
Y2s7CisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKworICAgIERlcXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+PiBtX2Rlc2NyaXB0aW9uQ2Fs
bGJhY2tzOworCisgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7
IGZhbHNlIH07CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24+IG1fZGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlv
QnVmZmVyTGlzdD4gbV9idWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmlu
Z0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsK
KyAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9udW1iZXJP
ZkZyYW1lcyB7IDAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9z
ZW1hcGhvcmU7CisgICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CisgICAgc3RkOjphdG9taWM8
Ym9vbD4gbV9zaG91bGRTdG9wVGhyZWFkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkQ2xvc2Ug
eyBmYWxzZSB9OworfTsKKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXI6OmFkZChQcm94eSYgcHJveHkpCit7CisgICAgbV9wcm94aWVzLmFkZChw
cm94eS5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHByb3h5KSk7Cit9CisKK3ZvaWQgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZW1vdmUoUHJveHkm
IHByb3h5KQoreworICAgIG1fcHJveGllcy5yZW1vdmUocHJveHkuaWRlbnRpZmllcigpKTsKK30K
KworVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OmNyZWF0ZVJlbW90ZUludGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlByb3h5PihXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpncHVQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZCgpCit7CisgICAgZm9yIChhdXRvIHByb3h5IDogbV9wcm94aWVzLnZhbHVl
cygpKQorICAgICAgICBwcm94eS0+cmVzdGFydElmTmVlZGVkKCk7Cit9CisKK0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OlByb3h5KFdlYkNv
cmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxs
YmFjayYmIHJlbmRlckNhbGxiYWNrKQorICAgIDogbV9yZW5kZXJDYWxsYmFjayhXVEZNb3ZlKHJl
bmRlckNhbGxiYWNrKSkKKyAgICAsIG1faWRlbnRpZmllcihBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyKCkuYWRkKCp0aGlzKTsKKyAgICBjcmVhdGVSZW1vdGVVbml0KCk7Cit9CisKK0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6On5Q
cm94eSgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkucmVtb3ZlKCp0aGlzKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OkRlbGV0ZVVuaXQgeyBtX2lkZW50aWZpZXIgfSwgMCk7CisKKyAg
ICB3aGlsZSAoIW1fZGVzY3JpcHRpb25DYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX2Rl
c2NyaXB0aW9uQ2FsbGJhY2tzLnRha2VGaXJzdCgpKG51bGxwdHIpOworfQorCit2b2lkIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OmNyZWF0
ZVJlbW90ZVVuaXQoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpDcmVhdGVVbml0IHsgbV9pZGVudGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXShhdXRvJiYgZGVzY3JpcHRpb24sIGF1dG8gZnJhbWVDaHVua1NpemUpIHsKKyAgICAgICAg
aWYgKHdlYWtUaGlzICYmIGZyYW1lQ2h1bmtTaXplKQorICAgICAgICAgICAgd2Vha1RoaXMtPmlu
aXRpYWxpemUoZGVzY3JpcHRpb24sIGZyYW1lQ2h1bmtTaXplKTsKKyAgICB9LCAwKTsKK30KKwor
dm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5Ojppbml0aWFsaXplKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHNpemVfdCBmcmFtZUNodW5rU2l6ZSkKK3sKKyAgICBpZiAobV9zZW1hcGhv
cmUpCisgICAgICAgIHN0b3BUaHJlYWQoKTsKKworICAgIG1fc2VtYXBob3JlID0gbWFrZVVuaXF1
ZTxJUEM6OlNlbWFwaG9yZT4oKTsKKyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Cisg
ICAgbV9mcmFtZUNodW5rU2l6ZSA9IGZyYW1lQ2h1bmtTaXplOworCisgICAgd2hpbGUgKCFtX2Rl
c2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxi
YWNrcy50YWtlRmlyc3QoKSgmZGVzY3JpcHRpb24pOworCisgICAgaWYgKG1faXNQbGF5aW5nKQor
ICAgICAgICBzdGFydCgpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KCkKK3sKKyAgICBpZiAoIW1fZGVzY3Jp
cHRpb24pIHsKKyAgICAgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKG1fZGlkQ2xvc2UpIHsKKyAgICAgICAgbV9kaWRDbG9zZSA9IGZhbHNl
OworICAgICAgICBjcmVhdGVSZW1vdGVVbml0KCk7CisgICAgICAgIGlmICghbV9kZXZpY2VJZC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdWRpb091dHB1dERldmljZShtX2RldmljZUlkKTsK
KyAgICAgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RvcFRocmVhZCgpOworCisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworCisgICAgbV9udW1i
ZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSAqIDI7CisgICAgbV9yaW5n
QnVmZmVyLnJlc2V0KCk7CisgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZm
ZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHN0ZDo6YmluZCgmQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3Rv
cmFnZUNoYW5nZWQsIHRoaXMsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgc3RkOjpwbGFjZWhvbGRl
cnM6Ol8yLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzMpKSk7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxv
Y2F0ZShtX2Rlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVz
KTsKKworICAgIG1fYnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KCptX2Rl
c2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKTsKKyAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291
bnQobV9mcmFtZUNodW5rU2l6ZSk7CisKKyAgICBzdGFydFRocmVhZCgpOworfQorCit2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0
b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCit7CisgICAgaWYgKCFmcmFtZUNv
dW50KQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CisgICAgaWYgKG1lbW9yeSkKKyAgICAgICAgbWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5k
IHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwg
T1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxz
ZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcjo6U3RhcnRVbml0IHsgbV9pZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSB7IFdURk1vdmUoaGFuZGxlKSwgIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCwgKm1f
c2VtYXBob3JlIH0sIDApOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0g
ZmFsc2U7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpTdG9wVW5pdCB7IG1faWRlbnRpZmll
ciB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI6OlByb3h5OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRl
dmljZUlkKQoreworICAgIG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OlNldEF1ZGlvT3V0cHV0RGV2aWNlIHsgbV9pZGVudGlmaWVyLCBkZXZpY2VJZCB9
LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OlByb3h5OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYgY2Fs
bGJhY2spCit7CisgICAgaWYgKCFtX2Rlc2NyaXB0aW9uIHx8ICFtX2Rlc2NyaXB0aW9uQ2FsbGJh
Y2tzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmFwcGVuZChX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGJhY2so
Jm1fZGVzY3JpcHRpb24udmFsdWUoKSk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVhZCgpCit7CisgICAg
aWYgKCFtX3RocmVhZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTdG9wVGhyZWFk
ID0gdHJ1ZTsKKyAgICBtX3NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgbV90aHJlYWQtPndhaXRG
b3JDb21wbGV0aW9uKCk7CisgICAgbV90aHJlYWQgPSBudWxscHRyOworfQorCit2b2lkIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0
VGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGhyZWFkKTsKKyAgICBtX3Nob3VsZFN0b3BUaHJl
YWQgPSBmYWxzZTsKKyAgICBhdXRvIHRocmVhZExvb3AgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIElm
IHdhaXQgZmFpbHMsIHRoZSBzZW1hcGhvcmUgb24gdGhlIG90aGVyIHNpZGUgd2FzIHByb2JhYmx5
IGRlc3Ryb3llZCBhbmQgd2Ugc2hvdWxkIGp1c3QgZXhpdCBoZXJlIGFuZCB3YWl0IHRvIGxhdW5j
aCBhIG5ldyB0aHJlYWQuCisgICAgICAgICAgICBpZiAoIW1fc2VtYXBob3JlLT53YWl0KCkpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFk
KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhdXRvJiBidWZmZXJMaXN0
ID0gKm1fYnVmZmVyLT5saXN0KCk7CisKKyAgICAgICAgICAgIEF1ZGlvVW5pdFJlbmRlckFjdGlv
bkZsYWdzIGZsYWdzID0gMDsKKyAgICAgICAgICAgIG1fcmVuZGVyQ2FsbGJhY2sobV9mcmFtZUNo
dW5rU2l6ZSwgYnVmZmVyTGlzdCwgbV93cml0ZU9mZnNldCwgbWFjaF9hYnNvbHV0ZV90aW1lKCks
IGZsYWdzKTsKKworICAgICAgICAgICAgaWYgKGZsYWdzID09IGtBdWRpb1VuaXRSZW5kZXJBY3Rp
b25fT3V0cHV0SXNTaWxlbmNlKQorICAgICAgICAgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6emVyb0FCTChidWZmZXJMaXN0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZnJhbWVDaHVua1Np
emUgKiBtX2Rlc2NyaXB0aW9uLT5ieXRlc1BlckZyYW1lKCkpKTsKKworICAgICAgICAgICAgbV9y
aW5nQnVmZmVyLT5zdG9yZSgmYnVmZmVyTGlzdCwgbV9mcmFtZUNodW5rU2l6ZSwgbV93cml0ZU9m
ZnNldCk7CisgICAgICAgICAgICBtX3dyaXRlT2Zmc2V0ICs9IG1fZnJhbWVDaHVua1NpemU7Cisg
ICAgICAgIH0gd2hpbGUgKCFtX3Nob3VsZFN0b3BUaHJlYWQpOworICAgIH07CisgICAgbV90aHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQgdGhyZWFkIiwgV1RGTW92ZSh0aHJlYWRMb29wKSwgVGhyZWFkVHlwZTo6QXVkaW8sIFRo
cmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc3RhcnRJZk5lZWRlZCgp
Cit7CisgICAgc3RvcFRocmVhZCgpOworICAgIG1fZGlkQ2xvc2UgPSB0cnVlOworICAgIGlmICht
X2lzUGxheWluZykKKyAgICAgICAgc3RhcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDBmYTZk
ZWU3MDk0ZDc1YTI0OWUyYzYwYjcyMDAwYTc2MjQ0MDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNy
ZWF0ZVJlbW90ZUludGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisKKyAgICBjbGFzcyBQcm94eTsK
KyAgICB2b2lkIGFkZChQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlKFByb3h5Jik7CisKKyAgICB2
b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1h
cDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIsIFdl
YWtQdHI8UHJveHk+PiBtX3Byb3hpZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YjFlOWVjMjIx
OTIzN2Y3ZTk2NzVhNzFjODMwMzA2N2IzZDYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlv
U3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFu
ZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRp
YVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOworfQorCisjZW5kaWYKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDBiMmMyMzAzZWM4OTRh
OTdjNDhlNWQ4ZDNjZGNhYmE2Y2UzOTZlNzguLmJiZTIwMDVhZDZkYzFmNmMzZGNiMDdlYmM4MWQ2
ZTRmNDNiYmVmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElGcmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQ
SVBhZ2VHcm91cEhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgpAQCAtMTI2Miw2ICsxMjYz
LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9u
LCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID09ICZjb25uZWN0aW9uKTsKIAogICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
UExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyKQorICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKTsKKyNl
bmRpZgogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCkBAIC0xMjcz
LDYgKzEyNzksMTUgQEAgTGliV2ViUlRDQ29kZWNzJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENDb2Rl
Y3MoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShD
T0NPQSkKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciYg
V2ViUHJvY2Vzczo6YXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyKQorICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlciA9IG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPigpOworICAgIHJldHVybiAqbV9hdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiYzE2Mzk1YjNiOTUzYjBmZjg3NmEzMzdmNjFm
Y2Y2NzBjNmE0ZjAwLi4yMzA3YzcwYjIwYzJhN2Q1MTVhOWY1ZjY2MGVkM2E2YmI2YTRkNTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOwog
Y2xhc3MgRXZlbnREaXNwYXRjaGVyOwogY2xhc3MgR2FtZXBhZERhdGE7CiBjbGFzcyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjsKQEAgLTI0NSw2ICsyNDYsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgTGliV2ViUlRDQ29kZWNzJiBsaWJXZWJSVEND
b2RlY3MoKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENP
Q09BKQorICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ciYgYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5JiBsZWdhY3lDRE1GYWN0b3J5KCk7CiAjZW5kaWYKQEAgLTY0MCw2ICs2NDQs
OSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAg
IFJlZlB0cjxMaWJXZWJSVENDb2RlY3M+IG1fbGliV2ViUlRDQ29kZWNzOwogI2VuZGlmCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9h
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CisjZW5kaWYK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4
IGRhZTExZTEyODAyYTJjOGFiMTM1NTU4MmUzNTNmMjliNzUzOGJkMmYuLmJkYWIzNzM1YWQ1ODgx
MjFlOGFkZGY2MzZkYjIyY2FmM2IxNmU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgs
MTMgKzI4LDE0IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAotI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGlt
ZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgog
I2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KQEAgLTc3LDggKzc4LDExIEBAIHZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVB
dWRpb0luVUlQCiAgICAgbV9hdWRpb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cyhzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpOwogICAgIG1fdmlkZW9GYWN0b3J5LnNl
dFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNz
KTsKIAotICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpCi0gICAgICAgIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9yKFdlYktpdDo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSk7CisgICAgaWYgKHNob3VsZENhcHR1cmVBdWRp
b0luR1BVUHJvY2VzcykgeworICAgICAgICBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQ6OnNldENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uKFtdKGF1dG8mJiByZW5k
ZXJDYWxsYmFjaykgeworICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0
ZVJlbW90ZUludGVybmFsVW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSk7CisgICAgICAgIH0p
OworICAgIH0KIAogICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyB8fCBzaG91
bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvQ2FwdHVyZUZhY3RvcnkobV9hdWRpb0ZhY3Rvcnkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429274</attachid>
            <date>2021-05-21 02:04:02 -0700</date>
            <delta_ts>2021-05-21 02:53:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225603-20210521110401.patch</filename>
            <type>text/plain</type>
            <size>64467</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4NzI4ZDZmYjVmYzY1
ODY4NzE2ZTBjNTk2ODQxNDU4OGQxZmZmMS4uOWY5ZTNkODdhYmZlMTQ1MzNhY2QzZWE3MDE5NWZk
MGUxZjkzZTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSByZW1v
dGUgSW50ZXJuYWwgVW5pdCBpbiBHUFVQcm9jZXNzIGZvciBhdWRpbyBNZWRpYVN0cmVhbVRyYWNr
IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83ODExNDM5MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRml4ZWQgdGhlIGNhc2Ugd2hlcmUg
d2Ugd2VyZSBjYWxsaW5nIHN0YXJ0IGV2ZW4gdGhvdWdoIGEgc291cmNlIHdhcyBhbHJlYWR5IGJl
aW5nIHBsYXllZC4KKyAgICAgICAgVGhpcyBpcyBtb3JlIGNvbnNpc3RlbnQgc2luY2Ugd2UgYXJl
IGRvaW5nIHRob3NlIGNoZWNrcyBmb3Igc3RvcC4KKyAgICAgICAgUmVkdWNlIHRoZSBjb2RlIHdo
ZXJlIHdlIGxvY2sgc291cmNlcyB0byB0aGUgbWluaW11bS4KKworICAgICAgICBJbiBjYXNlIHdl
IHdhbnQgdG8gbG9jayB0aGUgc291cmNlcyBjb3B5IGluIGF1ZGlvIHRocmVhZCBhbmQgd2UgZmFp
bCwgY29udGludWUgcmVuZGVyaW5nIGF1ZGlvIGluc3RlYWQgb2YgZHJvcHBpbmcgZXZlcnl0aGlu
Zy4KKyAgICAgICAgQWRkIHNvbWUgbWFpbiB0aHJlYWQgYXNzZXJ0aW9ucyBpbiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgbWV0aG9kcy4KKworICAgICAgICBNYW51YWxseSB0ZXN0
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0OjphZGRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVTb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW5kZXIpOgorCiAy
MDIxLTA1LTIwICBGZWxpcGUgRXJpYXMgIDxmZWxpcGVlcmlhc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtjc3MtZmxleGJveF0gV3JvbmcgaGVpZ2h0IG9mIGFuIGVtcHR5IHRhYmxlIGluc2lkZSBh
biBvcnRob2dvbmFsIGZsZXggcGFyZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ZGVjODJlZTYxNzcyMjlkZGRj
M2NlMTZlNDAxYjU4ZGI4MzMxM2MuLmIxMGFiOWY4NTVjZTk5MzIyZDQwNTdhZjNlMmI2ODg5MTg4
OTBiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjEtMDUtMjAgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIHJlbW90ZSBJbnRl
cm5hbCBVbml0IGluIEdQVVByb2Nlc3MgZm9yIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2sgcmVuZGVy
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW1wbGVt
ZW50IGFuIEludGVybmFsVW5pdCBieSBjcmVhdGluZyBhIHJpbmcgYnVmZmVyIHRoYXQgZ2V0cyB3
cml0dGVuIG9uIFdlYlByb2Nlc3MgYW5kIHJlYWQgb24gR1BVUHJvY2VzcyBieSBhbiBhdWRpbyB1
bml0LgorICAgICAgICBJbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24sIGVhY2ggYXVkaW8g
dHJhY2sgd2FzIHNlbnQgdG8gR1BVUHJvY2VzcyB0aGF0IHdhcyBkb2luZyB0aGUgbWl4aW5nLgor
ICAgICAgICBTZW5kaW5nIHdhcyBkb25lIGJ5IHNlbmRpbmcgSVBDIG1lc3NhZ2UgZm9yIGVhY2gg
YXVkaW8gc2FtcGxlLCB3aGljaCB3YXMgYWxzbyBwcm9jZXNzaW5nIGluZWZmaWNpZW50LgorCisg
ICAgICAgIFdlIGFyZSBub3cgY3JlYXRpbmcgYW4gQXVkaW8gVW5pdCBpbiBHUFVQcm9jZXNzIGFu
ZCBzaW1pbGFybHkgdG8gV2ViQXVkaW8gYXNraW5nIFdlYlByb2Nlc3MgdG8gcmVuZGVyIGF1ZGlv
IGluIGEgYnVmZmVyIHRoYXQgd2lsbCBiZSBhY3R1YWxseSByZW5kZXJlZCBieSB0aGUgYXVkaW8g
dW5pdC4KKyAgICAgICAgVGhlIG1peGluZyBoYXBwZW5zIGluIFdlYlByb2Nlc3Mgc28gb25seSBv
bmUgYnVmZmVyIGlzIHNoYXJlZCBiZXR3ZWVuIEdQVVByb2Nlc3MgYW5kIFdlYlByb2Nlc3MsIGFu
ZCBubyBJUEMgbWVzc2FnZSBpcyBzZW50IGZvciBlYWNoIGNodW5rLgorCisgICAgICAgIFRoZSBw
b3RlbnRpYWwgZG93bnNpZGUgaXMgdGhhdCB0aGUgbWl4aW5nIGlzIGRvbmUgd2l0aCBmaXhlZCBj
aHVuayBzaXplIGluc3RlYWQgb2YgY2h1bmsgc2l6ZSByZXF1ZXN0ZWQgYnkgdGhlIGF1ZGlvIHVu
aXQuCisgICAgICAgIFRoaXMgbWlnaHQgdHJpZ2dlciBzb21lIGxhdGVuY3kgb3Igc29tZSBvdmVy
aGVhZCBpZiB0aGUgZml4ZWQgY2h1bmsgc2l6ZSBpcyB0b28gZmFyIGZyb20gd2hhdCB0aGUgYXVk
aW8gdW5pdCBpcyBhc2tpbmcuCisKKyAgICAgICAgSW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNyYXNo
LCB3ZSBrZWVwIHRoZSBzYW1lIGZvcm1hdCBkZXNjcmlwdGlvbiBidXQgd2UgZGVsYXkgcmVjcmVh
dGlvbiBvZiB0aGUgdW5pdCBpZiB0aGUgdW5pdCBpcyBzdG9wcGVkLgorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6ZGVs
ZXRlVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c3RhcnRVbml0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpz
dG9wVW5pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAgICAg
ICAoV2ViS2l0OjpyZW5kZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6VW5pdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6flVuaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0
YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0OjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0
OjpzZXRBdWRpb091dHB1dERldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6cmVuZGVyKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQp
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c3RhcnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQpOgorICAgICAgICAoV2ViS2l0OjpBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OmdwdVByb2Nlc3ND
b25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6UHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlBy
b3h5Ojp+UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVSZW1vdGVVbml0KToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpQcm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wKToKKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6c2V0QXVkaW9PdXRwdXREZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojpy
ZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6c3RvcFRocmVhZCk6
CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6UHJveHk6OnN0YXJ0VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6cmVzdGFy
dElmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMpOgorCiAyMDIxLTA1LTE5ICBUb21va2kgSW1haSAg
PFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFNjcm9sbGluZyBtdXN0IGJlIGRvbmUg
YWZ0ZXIgdGhlIGxheW91dCB3aGVuIGRvaW5nIGZ1bGwgcGFnZSB6b29tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcAppbmRleCA5ODA0
M2Q5NWNlZmY1MjdmMjhiN2FkMjQxZmM5M2YwNzM2YjE5MzhlLi40MGMzMDZiYWY0Y2RmMjkxZjg5
ZjIwNTNlNjhmYWRhYWVkYWU1ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKQEAgLTgyLDI5ICs4MiwzNyBAQCB2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29u
c3QgU3RyaW5nJiBkZXZpYwogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6
OmFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBS
RUxFQVNFX0xPRyhXZWJSVEMsICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmFk
ZFNvdXJjZSIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBBU1NFUlQoIW1f
c291cmNlcy5jb250YWlucyhzb3VyY2UuZ2V0KCkpKTsKKyAgICBib29sIHNob3VsZFN0YXJ0ID0g
bV9zb3VyY2VzLmlzRW1wdHkoKTsKKyAgICBtX3NvdXJjZXMuYWRkKFdURk1vdmUoc291cmNlKSk7
CiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zb3VyY2VzTG9jayk7
Ci0gICAgICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKHNvdXJjZS5nZXQoKSkpOwotICAg
ICAgICBtX3NvdXJjZXMuYWRkKFdURk1vdmUoc291cmNlKSk7CiAgICAgICAgIG1fc291cmNlc0Nv
cHkgPSBjb3B5VG9WZWN0b3IobV9zb3VyY2VzKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVSZW5k
ZXJTb3VyY2VzID0gdHJ1ZTsKICAgICB9Ci0gICAgc3RhcnQoKTsKKworICAgIGlmIChzaG91bGRT
dGFydCkKKyAgICAgICAgc3RhcnQoKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQ6OnJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmIHNvdXJjZSkK
IHsKICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQ6OnJlbW92ZVNvdXJjZSIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBib29sIHNob3VsZFN0b3AgPSAhbV9zb3VyY2VzLmlzRW1wdHkoKTsKKyAgICBtX3NvdXJjZXMu
cmVtb3ZlKHNvdXJjZSk7CisgICAgc2hvdWxkU3RvcCAmPSBtX3NvdXJjZXMuaXNFbXB0eSgpOwog
Ci0gICAgYm9vbCBzaG91bGRTdG9wID0gZmFsc2U7CiAgICAgewogICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fc291cmNlc0xvY2spOwotICAgICAgICBtX3NvdXJjZXMucmVtb3ZlKHNv
dXJjZSk7Ci0gICAgICAgIHNob3VsZFN0b3AgPSBtX3NvdXJjZXMuaXNFbXB0eSgpOwogICAgICAg
ICBtX3NvdXJjZXNDb3B5ID0gY29weVRvVmVjdG9yKG1fc291cmNlcyk7CiAgICAgICAgIG1fc2hv
dWxkVXBkYXRlUmVuZGVyU291cmNlcyA9IHRydWU7CiAgICAgfQorCiAgICAgaWYgKHNob3VsZFN0
b3ApCiAgICAgICAgIHN0b3AoKTsKIH0KQEAgLTExMiwxNyArMTIwLDIyIEBAIHZvaWQgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRh
U291cmNlJiBzb3VyCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c3Rh
cnQoKQogewogICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdDo6c3RhcnQiKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAg
bV9pbnRlcm5hbFVuaXQtPnN0YXJ0KCk7CiB9CiAKIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0OjpzdG9wKCkKIHsKICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnN0b3AiKTsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCiAgICAgbV9pbnRlcm5hbFVuaXQtPnN0b3AoKTsKIH0KIAogdm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJiBj
YWxsYmFjaykKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1faW50ZXJuYWxV
bml0LT5yZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIApA
QCAtMTMzLDEyICsxNDYsMTAgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnJlbmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGkKIAogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX3Nob3VsZFVwZGF0ZVJlbmRlclNvdXJjZXMp
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX3NvdXJjZXNMb2NrKTsKLSAg
ICAgICAgaWYgKCFsb2NrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9yZW5k
ZXJTb3VyY2VzID0gV1RGTW92ZShtX3NvdXJjZXNDb3B5KTsKLSAgICAgICAgbV9zaG91bGRVcGRh
dGVSZW5kZXJTb3VyY2VzID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvIGxvY2tlciA9IHRyeUhv
bGRMb2NrKG1fc291cmNlc0xvY2spKSB7CisgICAgICAgICAgICBtX3JlbmRlclNvdXJjZXMgPSBX
VEZNb3ZlKG1fc291cmNlc0NvcHkpOworICAgICAgICAgICAgbV9zaG91bGRVcGRhdGVSZW5kZXJT
b3VyY2VzID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJTb3Vy
Y2VzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMGNhZTQ1ZmQzODQ0YzM0YmFm
NzEwMGY1MDRiY2U0OTc1NjdjNzViMC4uNjAyMmM1MjliN2ZkMjk2NzkzZTQxNWQyNzYwN2MxN2Ux
Mzk1ZThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcgogICAgIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlcgpAQCAtMjM4LDYgKzIzOSw3IEBAIHNldChXZWJLaXRfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXIKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlCiAKKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcwogICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CmluZGV4IGY5ZmY3MTYyMjQ2Zjc1MzFkYTE0YTc1NzQ3NDlmNThhMjI3YmRiNzEuLjM0NTcwOGEy
NmU2ZWJmMjUzZjk5ZGI0ZTkxODgxMmNiYjNkOTY2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTQ3LDYgKzQ3LDcgQEAgJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNzU0N2JlYTllY2Rh
NjE1NDdmZGNiZjk5ODJiMzU1MTk3OTJmMTM0NS4uZWYwMzI2ZjBkYTllYjA1OGExMWVmNThlY2Y4
NDRjM2JmM2VhNzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0xNTIsNiArMTUyLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWcK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4YTU3YTQ1
ZDVjZDc2MjY0OTllYzgzNDBiYmIwMjlmY2MyODk2NWRjLi5iMzk4OTZjODMzMGIyYTE5YzIxZGVh
YzQ2N2E4Y2Q3YmJjNjFlMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNTEs
NiArMjUxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlciBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL0dQVVByb2Nl
c3MgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgXAogCUdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBmOTAyMDhkN2Y2Y2MwZmRmMmJjNTM3ODhhMGJlYmUwNWJiYzMxNTQwLi41ZDc1NDhkNmQ4
MjI4NTg5YTM0ZjNiNDllNTQ3ZjBiNzNjMWIwYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0
MSw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhT3ZlcnJpZGVzRm9y
VGVzdGluZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCIKQEAgLTM4MSw2ICszODMsMTQgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKIAog
ICAgIHJldHVybiAqbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQorCitSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcigpCit7CisgICAgaWYgKCFtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcikKKyAgICAgICAgbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4oKnRoaXMpOworCisgICAgcmV0dXJu
ICptX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKK30K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpAQCAtNjAyLDYgKzYxMiwxMCBAQCBib29sIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQwogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCku
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgYXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDJmYzBhMjQxNTIwZDI3MzJhYWVmY2E4
MGQ5MTkyODZkM2U1MzEwZTAuLjk5NDMwOTlhN2MyYTE5Yzk3MzJkNDY2NDkxOWI4OTZhNDY3NTk0
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yOwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOwogY2xh
c3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OwpAQCAtMTU5LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KCk7CisgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyJiBhdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIo
KTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlciYgbWVkaWFSZWNvcmRlck1hbmFnZXIoKTsKQEAgLTIzOCw2ICsyNDAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKICAgICBSZWY8UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlvVHJhY2tSZW5kZXJlck1h
bmFnZXI7CiAgICAgUmVmPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNjdlMmEwNzA4NTUyYWM1OGYzNmJmYzNhMmE4YTQxNGE1
ZjEwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
R1BVUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b1Nlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRpbGl0aWVzLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcjo6VW5pdCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBVbml0KEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpPiYmKTsKKyAgICB+VW5pdCgpOworCisgICAgdm9pZCBzdGFydChj
b25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmKTsK
KyAgICB2b2lkIHN0b3AoKTsKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0
cmluZyYpOworICAgIE9TU3RhdHVzIHJlbmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVm
ZmVyTGlzdCYsIHVpbnQ2NF90IHNhbXBsZVRpbWUsIGRvdWJsZSBob3N0VGltZSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2Vk
KFNoYXJlZE1lbW9yeSosIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQ+IG1fbG9jYWxVbml0OworICAgIHVpbnQ2NF90IG1fcmVhZE9mZnNl
dCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2ZyYW1lQ2h1bmtTaXplIHsgMCB9OworICAgIElQQzo6
U2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3JlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyNlbmRp
ZgorICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworfTsKKworUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworfQorCitSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6On5SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKQoreworfQor
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6Y3JlYXRlVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dElkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNhbGxiYWNrKQorewor
ICAgIEFTU0VSVCghbV91bml0cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV91bml0cy5h
ZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZVJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ+KGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpkZWxldGVVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmICghbV91bml0cy5yZW1vdmUoaWRlbnRp
ZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3VuaXRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS50cnlFeGl0SWZV
bnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpzdGFydFVuaXQoQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNvbnN0IFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyAgICBpZiAoYXV0byogdW5p
dCA9IG1fdW5pdHMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB1bml0LT5zdGFydChpcGNIYW5k
bGUuaGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMsIFdURk1vdmUoc2VtYXBob3Jl
KSk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpzdG9wVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogdW5pdCA9IG1f
dW5pdHMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB1bml0LT5zdG9wKCk7Cit9CisKK3ZvaWQg
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpz
ZXRBdWRpb091dHB1dERldmljZShBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAg
ICBpZiAoYXV0byogdW5pdCA9IG1fdW5pdHMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB1bml0
LT5zZXRBdWRpb091dHB1dERldmljZShkZXZpY2VJZCk7Cit9CisKK3N0YXRpYyBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sgcmVuZGVyQ2Fs
bGJhY2soUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpVbml0JiB1bml0KQoreworICAgIHJldHVybiBbJnVuaXRdKGF1dG8gc2FtcGxlQ291bnQs
IGF1dG8mIGxpc3QsIGF1dG8gc2FtcGxlVGltZSwgYXV0byBob3N0VGltZSwgYXV0byYgZmxhZ3Mp
IHsKKyAgICAgICAgcmV0dXJuIHVuaXQucmVuZGVyKHNhbXBsZUNvdW50LCBsaXN0LCBzYW1wbGVU
aW1lLCBob3N0VGltZSwgZmxhZ3MpOworICAgIH07Cit9CisKK1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6VW5pdChBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+JiYgY2FsbGJh
Y2spCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9sb2NhbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0
KHJlbmRlckNhbGxiYWNrKCp0aGlzKSkpCit7CisgICAgbV9sb2NhbFVuaXQtPnJldHJpZXZlRm9y
bWF0RGVzY3JpcHRpb24oW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBkZXNjcmlwdGlvbikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBjYWxs
YmFjayh7IH0sIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1f
ZnJhbWVDaHVua1NpemUgPSBzdGQ6Om1heChXZWJDb3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVy
UXVhbnR1bVNpemUsIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnByZWZlcnJlZEJ1ZmZl
clNpemUoKSk7CisgICAgICAgIGNhbGxiYWNrKCpkZXNjcmlwdGlvbiwgbV9mcmFtZUNodW5rU2l6
ZSk7CisgICAgfSk7Cit9CisKK1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6VW5pdDo6flVuaXQoKQoreworICAgIHN0b3AoKTsKK30KKwordm9p
ZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6
OlVuaXQ6OnN0YXJ0KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyAgICBpZiAobV9p
c1BsYXlpbmcpCisgICAgICAgIHN0b3AoKTsKKworICAgIG1fcmVhZE9mZnNldCA9IDA7CisgICAg
bV9pc1BsYXlpbmcgPSB0cnVlOworICAgIG1fcmluZ0J1ZmZlciA9IENBUmluZ0J1ZmZlcjo6YWRv
cHRTdG9yYWdlKG1ha2VVbmlxdWVSZWY8UmVhZE9ubHlTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4o
aGFuZGxlKSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKS5tb3ZlVG9VbmlxdWVQdHIoKTsK
KyAgICBtX3JlbmRlclNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsKKyAgICBtX2xvY2Fs
VW5pdC0+c3RhcnQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5n
ID0gZmFsc2U7CisgICAgbV9sb2NhbFVuaXQtPnN0b3AoKTsKK30KKwordm9pZCBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnNldEF1
ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCit7CisgICAgbV9sb2NhbFVu
aXQtPnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKK30KKworT1NTdGF0dXMgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpVbml0Ojpy
ZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGxpc3QsIHVpbnQ2NF90
LCBkb3VibGUsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJikKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSAtMTsKKworICAgIGlmICht
X3JpbmdCdWZmZXItPmZldGNoSWZIYXNFbm91Z2hEYXRhKCZsaXN0LCBzYW1wbGVDb3VudCwgbV9y
ZWFkT2Zmc2V0KSkgeworICAgICAgICBtX3JlYWRPZmZzZXQgKz0gc2FtcGxlQ291bnQ7CisgICAg
ICAgIHN0YXR1cyA9IG5vRXJyOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzYW1wbGVDb3VudDsgaSArPSBtX2ZyYW1lQ2h1bmtTaXplKQorICAgICAgICBtX3JlbmRlclNl
bWFwaG9yZS5zaWduYWwoKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk1YTdkZDI2Mzc2
YTk3YzIxZDliNjBhY2RlOGQxYjNjZjBhYTk0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK30KKyNlbmRpZgorCituYW1lc3Bh
Y2UgSVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uOworCitjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpOworcHVibGljOgorICAg
IGV4cGxpY2l0IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpOworCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAg
IGNsYXNzIFVuaXQ7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0
ZVVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZGVsZXRlVW5pdChBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIpOworICAgIHZv
aWQgc3RhcnRVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRl
bnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpT
ZW1hcGhvcmUmJik7CisgICAgdm9pZCBzdG9wVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdElkZW50aWZpZXIpOworICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZp
Y2UoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmKTsKKworICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBVbmlxdWVSZWY8VW5pdD4+IG1fdW5pdHM7CisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0OworCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzMxZGI2YjE0N2VmYzUzYzdkNDUwMDZjOWEyNGYw
YmVhM2VhMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZVVuaXQoV2ViS2l0
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRl
bnRpZmllcikgLT4gKFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKSBBc3luYworICAgIERlbGV0ZVVuaXQoV2ViS2l0OjpB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRp
ZmllcikKKworICAgIFN0YXJ0VW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3Jl
IHJlbmRlclNlbWFwaG9yZSkKKyAgICBTdG9wVW5pdChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorCisgICAgU2V0
QXVkaW9PdXRwdXREZXZpY2UoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGRldmljZUlkKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDZiZWE1
ZGI3MmI5MTkxZWVkYTc5MzU5NjE2NmQzY2Y0NzdlMDViYjguLmJiODdiMjA2Nzk2NDI3Njg5ODZl
ZjdhOGE1MjNhMzJkNWMzNjVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMzA3LDYgKzMwNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAgJ1dlYktp
dDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dl
YktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2Fk
SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggMjU4ZjlkM2JmNmZmYTcyNmE5MzkxZDE1NTUxYzc1MDRhZmFk
YjY4YS4uMDIyMjU0NTNjMzFhNWJhOTE4NThmZTcwNWM2NWU5NTRjMTRkNzA2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC03MjQsNSArNzI0LDYgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTgyODMzMzBlNTRjOTFiODMzODEyODZh
MGJhYTdkNWM0ZTQxZTJmZi4uYjZjODJmMzk5YzBkNzc3MDlkOWNkOGExM2QwOWI3Y2Y5MWVkY2Uw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjgsNiArNjgsNyBAQCBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9jb2Nv
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0gQG5vLXVuaWZ5CitHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCiAKIFBsYXRm
b3JtL2NmL01vZHVsZUNGLmNwcAogCkBAIC02MTIsNiArNjEzLDcgQEAgV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCitXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbQogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBjOWNjYTdiZDUxNzg3MWQ5NGMzODY4MTgz
OTFhOTBlMWM5ZGNmYjUxLi44ZTQyMTU0Nzg1M2E3NjQ1MWY0ZGVmNzYxMTQ4NTc4YTc0Y2IxNTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBmZDlk
MzYwNjQ0YTA3Y2M3YjIyMzZjMTVmMmU0YjZiNDdlNjg1Zi4uMTFlYzZhMDE4OTYyZjA2MWIxMWQy
ODliYjIxZTZlM2E1ZjgzNzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODIxLDYgKzM4MjEsMTIgQEAKIAkJNDFCN0VENkYyMDY5
NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcwMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTURO
U1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNRE5T
UmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5NjU5
MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg4NzI2NDQ0QUQzMDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMzQjg5
MDI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUMzQjg5MTI2NDkzQjdCMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzNCODk0MjY0OTNCN0MwMDRF
RDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUM1Mzc4RjIxRjEzNjJEMDA4QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM4NTgxOTFG
NTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyog
TWVkaWFSZWNvcmRlclByaXZhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29y
ZGVyUHJpdmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MjEsNiArODQy
Nyw5IEBACiAJCQkJNDFGQ0Q2QUUyM0NDQzI2MTAwQzYyNTY3IC8qIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcCAqLywKIAkJCQk0MUZDRDZBRDIzQ0NDMjYwMDBDNjI1NjcgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLywKIAkJCQk0MUZDRDZBRjIzQ0NDMjYxMDBD
NjI1NjcgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyLmggKi8sCisJ
CQkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovLAorCQkJCTQxQzNCODg2MjY0NDRBQUMwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
Y3BwICovLAorCQkJCTQxQzNCODg1MjY0NDRBQUIwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCAqLywKIAkJCQk0MTcyMTk4QTIzQjYx
MjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmNwcCAqLywKIAkJCQk0MTcyMTk4OTIzQjYx
MjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2MkM3
QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiAqLywKQEAgLTg0NTIsNiAr
ODQ2MSw5IEBACiAJCQkJNDFENjQ1NTQyM0NDQjkyMjAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLywKIAkJCQk0MUQ2NDU1MzIzQ0NCOTIxMDA0ODZF
MEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLywKIAkJCQk0MUQ2
NDU1MjIzQ0NCOTIxMDA0ODZFMEUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFDM0I4OTEyNjQ5M0I3QjAwNEVENERFIC8qIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8s
CisJCQkJNDFDM0I4OTAyNjQ5M0I3QjAwNEVENERFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oICovLAorCQkJCTQxQzNCODk0MjY0OTNC
N0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDFENjQ1NTYyM0NDQjk2OTAwNDg2RTBF
IC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAgKi8sCiAJ
CQkJNDFENjQ1NTcyM0NDQjk2OTAwNDg2RTBFIC8qIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlci5oICovLAogCQkJCTQxRDY0NTU1MjNDQ0I5NjkwMDQ4NkUwRSAvKiBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMTY1M2I2N2RmZDQyOGE5MTRkMzAzODEwNmFhOGE4ZjhiOWY3NjlhMi4uNTUw
Zjk5ZTViYTY5NmMzN2ZmYTZkMzYyYjVmOTJlYjhmZTQ3NjNjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMjcsMTYg
KzI3LDI2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBTZW1hcGhvcmU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzU0NjU1NjQyMjNkMjg1Y2M5YjJlYzBlZjg3MDJjZTA5MmIwNjM1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSAsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDYwYjc1MmZmZTIzZjQ1NjJkYjk4YzNkYWM2MGZjYWE5NmI2ZTYzZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKQEAgLTAs
MCArMSwyNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JN
KENPQ09BKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAi
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5n
QnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNpbmNs
dWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3h5
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
UHJveHkoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrJiYpOworICAgIH5Qcm94eSgpOworCisgICAgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgcmVzdGFydElmTmVlZGVkKCk7CisK
K3ByaXZhdGU6CisgICAgLy8gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpJbnRl
cm5hbFVuaXQgQVBJLgorICAgIHZvaWQgc3RhcnQoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKKyAgICB2b2lkIHJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJikgZmlu
YWw7CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOworICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQo
U2hhcmVkTWVtb3J5KiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsK
KworICAgIHZvaWQgc3RvcFRocmVhZCgpOworICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICB2
b2lkIGNyZWF0ZVJlbW90ZVVuaXQoKTsKKworICAgIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayBtX3JlbmRlckNhbGxiYWNr
OworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CisKKyAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPj4gbV9kZXNjcmlwdGlvbkNhbGxi
YWNrczsKKworICAgIFN0cmluZyBtX2RldmljZUlkOworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBm
YWxzZSB9OworCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PiBtX2Rlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1
ZmZlckxpc3Q+IG1fYnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdC
dWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBpbnQ2NF90IG1fd3JpdGVPZmZzZXQgeyAwIH07Cisg
ICAgc2l6ZV90IG1fZnJhbWVDaHVua1NpemUgeyAwIH07CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZG
cmFtZXMgeyAwIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpTZW1hcGhvcmU+IG1fc2Vt
YXBob3JlOworICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOworICAgIHN0ZDo6YXRvbWljPGJv
b2w+IG1fc2hvdWxkU3RvcFRocmVhZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZENsb3NlIHsg
ZmFsc2UgfTsKK307CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjphZGQoUHJveHkmIHByb3h5KQoreworICAgIG1fcHJveGllcy5hZGQocHJv
eHkuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihwcm94eSkpOworfQorCit2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKFByb3h5JiBw
cm94eSkKK3sKKyAgICBtX3Byb3hpZXMucmVtb3ZlKHByb3h5LmlkZW50aWZpZXIoKSk7Cit9CisK
K1VuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdD4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpj
cmVhdGVSZW1vdGVJbnRlcm5hbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eT4oV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQoKQoreworICAgIGZvciAoYXV0byBwcm94eSA6IG1fcHJveGllcy52YWx1ZXMo
KSkKKyAgICAgICAgcHJveHktPnJlc3RhcnRJZk5lZWRlZCgpOworfQorCitBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94eShXZWJDb3Jl
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJh
Y2smJiByZW5kZXJDYWxsYmFjaykKKyAgICA6IG1fcmVuZGVyQ2FsbGJhY2soV1RGTW92ZShyZW5k
ZXJDYWxsYmFjaykpCisgICAgLCBtX2lkZW50aWZpZXIoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcigpLmFkZCgqdGhpcyk7CisgICAgY3JlYXRlUmVtb3RlVW5pdCgpOworfQorCitBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5Ojp+UHJv
eHkoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLnJlbW92ZSgqdGhpcyk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpEZWxldGVVbml0IHsgbV9pZGVudGlmaWVyIH0sIDApOworCisgICAg
d2hpbGUgKCFtX2Rlc2NyaXB0aW9uQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kZXNj
cmlwdGlvbkNhbGxiYWNrcy50YWtlRmlyc3QoKShudWxscHRyKTsKK30KKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpjcmVhdGVS
ZW1vdGVVbml0KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6
Q3JlYXRlVW5pdCB7IG1faWRlbnRpZmllciB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oYXV0byYmIGRlc2NyaXB0aW9uLCBhdXRvIGZyYW1lQ2h1bmtTaXplKSB7CisgICAgICAgIGlm
ICh3ZWFrVGhpcyAmJiBmcmFtZUNodW5rU2l6ZSkKKyAgICAgICAgICAgIHdlYWtUaGlzLT5pbml0
aWFsaXplKGRlc2NyaXB0aW9uLCBmcmFtZUNodW5rU2l6ZSk7CisgICAgfSwgMCk7Cit9CisKK3Zv
aWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94
eTo6aW5pdGlhbGl6ZShjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDaHVua1NpemUpCit7CisgICAgaWYgKG1fc2VtYXBob3Jl
KQorICAgICAgICBzdG9wVGhyZWFkKCk7CisKKyAgICBtX3NlbWFwaG9yZSA9IG1ha2VVbmlxdWU8
SVBDOjpTZW1hcGhvcmU+KCk7CisgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOworICAg
IG1fZnJhbWVDaHVua1NpemUgPSBmcmFtZUNodW5rU2l6ZTsKKworICAgIHdoaWxlICghbV9kZXNj
cmlwdGlvbkNhbGxiYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVzY3JpcHRpb25DYWxsYmFj
a3MudGFrZUZpcnN0KCkoJmRlc2NyaXB0aW9uKTsKKworICAgIGlmIChtX2lzUGxheWluZykKKyAg
ICAgICAgc3RhcnQoKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydCgpCit7CisgICAgaWYgKCFtX2Rlc2NyaXB0
aW9uKSB7CisgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX2RpZENsb3NlKSB7CisgICAgICAgIG1fZGlkQ2xvc2UgPSBmYWxzZTsK
KyAgICAgICAgY3JlYXRlUmVtb3RlVW5pdCgpOworICAgICAgICBpZiAoIW1fZGV2aWNlSWQuaXNF
bXB0eSgpKQorICAgICAgICAgICAgc2V0QXVkaW9PdXRwdXREZXZpY2UobV9kZXZpY2VJZCk7Cisg
ICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHN0b3BUaHJlYWQoKTsKKworICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKworICAgIG1fbnVtYmVy
T2ZGcmFtZXMgPSBtX2Rlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkgKiAyOworICAgIG1fcmluZ0J1
ZmZlci5yZXNldCgpOworICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVy
PihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihzdGQ6OmJpbmQoJkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkLCB0aGlzLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIHN0ZDo6cGxhY2Vob2xkZXJz
OjpfMiwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8zKSkpOworICAgIG1fcmluZ0J1ZmZlci0+YWxsb2Nh
dGUobV9kZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7
CisKKyAgICBtX2J1ZmZlciA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PigqbV9kZXNj
cmlwdGlvbiwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgbV9idWZmZXItPnNldFNhbXBsZUNvdW50
KG1fZnJhbWVDaHVua1NpemUpOworCisgICAgc3RhcnRUaHJlYWQoKTsKK30KKwordm9pZCBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9y
YWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQoreworICAgIGlmICghZnJhbWVDb3Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwor
ICAgIGlmIChtZW1vcnkpCisgICAgICAgIG1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0
aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9T
KFdJTkRPV1MpCisgICAgdWludDY0X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UK
KyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5kaWYKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OlN0YXJ0VW5pdCB7IG1faWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
eyBXVEZNb3ZlKGhhbmRsZSksICBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQsICptX3Nl
bWFwaG9yZSB9LCAwKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdG9wKCkKK3sKKyAgICBtX2lzUGxheWluZyA9IGZh
bHNlOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6U3RvcFVuaXQgeyBtX2lkZW50aWZpZXIg
fSwgMCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eTo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZp
Y2VJZCkKK3sKKyAgICBtX2RldmljZUlkID0gZGV2aWNlSWQ7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpTZXRBdWRpb091dHB1dERldmljZSB7IG1faWRlbnRpZmllciwgZGV2aWNlSWQgfSwg
MCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eTo6cmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmIGNhbGxi
YWNrKQoreworICAgIGlmICghbV9kZXNjcmlwdGlvbiB8fCAhbV9kZXNjcmlwdGlvbkNhbGxiYWNr
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9kZXNjcmlwdGlvbkNhbGxiYWNrcy5hcHBlbmQoV1RG
TW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhbGxiYWNrKCZt
X2Rlc2NyaXB0aW9uLnZhbHVlKCkpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnN0b3BUaHJlYWQoKQoreworICAgIGlm
ICghbV90aHJlYWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkU3RvcFRocmVhZCA9
IHRydWU7CisgICAgbV9zZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fdGhyZWFkLT53YWl0Rm9y
Q29tcGxldGlvbigpOworICAgIG1fdGhyZWFkID0gbnVsbHB0cjsKK30KKwordm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydFRo
cmVhZCgpCit7CisgICAgQVNTRVJUKCFtX3RocmVhZCk7CisgICAgbV9zaG91bGRTdG9wVGhyZWFk
ID0gZmFsc2U7CisgICAgYXV0byB0aHJlYWRMb29wID0gW3RoaXNdKCkgbXV0YWJsZSB7CisgICAg
ICAgIG1fd3JpdGVPZmZzZXQgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICAvLyBJZiB3
YWl0IGZhaWxzLCB0aGUgc2VtYXBob3JlIG9uIHRoZSBvdGhlciBzaWRlIHdhcyBwcm9iYWJseSBk
ZXN0cm95ZWQgYW5kIHdlIHNob3VsZCBqdXN0IGV4aXQgaGVyZSBhbmQgd2FpdCB0byBsYXVuY2gg
YSBuZXcgdGhyZWFkLgorICAgICAgICAgICAgaWYgKCFtX3NlbWFwaG9yZS0+d2FpdCgpKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG1fc2hvdWxkU3RvcFRocmVhZCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgYXV0byYgYnVmZmVyTGlzdCA9
ICptX2J1ZmZlci0+bGlzdCgpOworCisgICAgICAgICAgICBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyBmbGFncyA9IDA7CisgICAgICAgICAgICBtX3JlbmRlckNhbGxiYWNrKG1fZnJhbWVDaHVu
a1NpemUsIGJ1ZmZlckxpc3QsIG1fd3JpdGVPZmZzZXQsIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBm
bGFncyk7CisKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSBrQXVkaW9Vbml0UmVuZGVyQWN0aW9u
X091dHB1dElzU2lsZW5jZSkKKyAgICAgICAgICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6
Onplcm9BQkwoYnVmZmVyTGlzdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2ZyYW1lQ2h1bmtTaXpl
ICogbV9kZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7CisKKyAgICAgICAgICAgIG1fcmlu
Z0J1ZmZlci0+c3RvcmUoJmJ1ZmZlckxpc3QsIG1fZnJhbWVDaHVua1NpemUsIG1fd3JpdGVPZmZz
ZXQpOworICAgICAgICAgICAgbV93cml0ZU9mZnNldCArPSBtX2ZyYW1lQ2h1bmtTaXplOworICAg
ICAgICB9IHdoaWxlICghbV9zaG91bGRTdG9wVGhyZWFkKTsKKyAgICB9OworICAgIG1fdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0IHRocmVhZCIsIFdURk1vdmUodGhyZWFkTG9vcCksIFRocmVhZFR5cGU6OkF1ZGlvLCBUaHJl
YWQ6OlFPUzo6VXNlckludGVyYWN0aXZlKTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpyZXN0YXJ0SWZOZWVkZWQoKQor
eworICAgIHN0b3BUaHJlYWQoKTsKKyAgICBtX2RpZENsb3NlID0gdHJ1ZTsKKyAgICBpZiAobV9p
c1BsYXlpbmcpCisgICAgICAgIHN0YXJ0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQwZmE2ZGVl
NzA5NGQ3NWEyNDllMmM2MGI3MjAwMGE3NjI0NDA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBTZW1hcGhvcmU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgVW5pcXVlUmVm
PFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVh
dGVSZW1vdGVJbnRlcm5hbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNrJiYpOworCisgICAgY2xhc3MgUHJveHk7Cisg
ICAgdm9pZCBhZGQoUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZShQcm94eSYpOworCisgICAgdm9p
ZCBncHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBXZWFr
UHRyPFByb3h5Pj4gbV9wcm94aWVzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGIxZTllYzIyMTky
MzdmN2U5Njc1YTcxYzgzMDMwNjdiM2Q2MDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKK21lc3NhZ2VzIC0+IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlciBOb3RSZWZDb3VudGVkIHsKKyAgICBBdWRpb1N0
b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRs
ZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFU
aW1lIG1lZGlhVGltZSwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKTsKK30KKworI2VuZGlmCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwYjJjMjMwM2VjODk0YTk3
YzQ4ZTVkOGQzY2RjYWJhNmNlMzk2ZTc4Li5iYmUyMDA1YWQ2ZGMxZjZjM2RjYjA3ZWJjODFkNmU0
ZjQzYmJlZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQ
YWdlR3JvdXBIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAi
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKQEAgLTEyNjIsNiArMTI2Mywx
MSBAQCB2b2lkIFdlYlByb2Nlc3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9PSAmY29ubmVjdGlvbik7CiAKICAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uID0gbnVsbHB0cjsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBM
QVRGT1JNKENPQ09BKQorICAgIGlmIChtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcikKKyAgICAgICAgbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXItPmdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKCk7CisjZW5k
aWYKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQpAQCAtMTI3Myw2
ICsxMjc5LDE1IEBAIExpYldlYlJUQ0NvZGVjcyYgV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNz
KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09D
T0EpCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXImIFdl
YlByb2Nlc3M6OmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cigpCit7CisgICAgaWYgKCFtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlcikKKyAgICAgICAgbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIgPSBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcj4oKTsKKyAgICByZXR1cm4gKm1fYXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOworfQorI2VuZGlmCisKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYmMxNjM5NWIzYjk1M2IwZmY4NzZhMzM3ZjYxZmNm
NjcwYzZhNGYwMC4uMjMwN2M3MGIyMGMyYTdkNTE1YTlmNWY2NjBlZDNhNmJiNmE0ZDUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMDksNiArMTA5LDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKIGNs
YXNzIEV2ZW50RGlzcGF0Y2hlcjsKIGNsYXNzIEdhbWVwYWREYXRhOwogY2xhc3MgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb247CkBAIC0yNDUsNiArMjQ2LDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIExpYldlYlJUQ0NvZGVjcyYgbGliV2ViUlRDQ29k
ZWNzKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NP
QSkKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIm
IGF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeSYgbGVnYWN5Q0RNRmFjdG9yeSgpOwogI2VuZGlmCkBAIC02NDAsNiArNjQ0LDkg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBS
ZWZQdHI8TGliV2ViUlRDQ29kZWNzPiBtX2xpYldlYlJUQ0NvZGVjczsKICNlbmRpZgorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI+IG1fYXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOworI2VuZGlmCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBk
YWUxMWUxMjgwMmEyYzhhYjEzNTU1ODJlMzUzZjI5Yjc1MzhiZDJmLi5iZGFiMzczNWFkNTg4MTIx
ZThhZGRmNjM2ZGIyMmNhZjNiMTZlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTI4LDEz
ICsyOCwxNCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKLSNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgorI2luY2x1ZGUg
IkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVB
dWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKICNp
bmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmg+CkBAIC03Nyw4ICs3OCwxMSBAQCB2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVk
aW9JblVJUAogICAgIG1fYXVkaW9GYWN0b3J5LnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mo
c2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKTsKICAgICBtX3ZpZGVvRmFjdG9yeS5zZXRT
aG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzcyk7
CiAKLSAgICBpZiAoc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKQotICAgICAgICBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUpOworICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9J
bkdQVVByb2Nlc3MpIHsKKyAgICAgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0OjpzZXRDcmVhdGVJbnRlcm5hbFVuaXRGdW5jdGlvbihbXShhdXRvJiYgcmVuZGVy
Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5jcmVhdGVS
ZW1vdGVJbnRlcm5hbFVuaXQoV1RGTW92ZShyZW5kZXJDYWxsYmFjaykpOworICAgICAgICB9KTsK
KyAgICB9CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MgfHwgc2hvdWxk
Q2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKQogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVGYWN0b3J5KG1fYXVkaW9GYWN0b3J5KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>