<?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>232870</bug_id>
          
          <creation_ts>2021-11-09 02:09:09 -0800</creation_ts>
          <short_desc>[RISCV64] Add assembly, disassembly infrastructure</short_desc>
          <delta_ts>2022-03-11 05:33:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813037</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-11-09 02:09:09 -0800</bug_when>
    <thetext>[RISCV64] Add assembly, disassembly infrastructure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813038</commentid>
    <comment_count>1</comment_count>
      <attachid>443664</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-11-09 02:09:39 -0800</bug_when>
    <thetext>Created attachment 443664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813271</commentid>
    <comment_count>2</comment_count>
      <attachid>443664</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-09 12:55:16 -0800</bug_when>
    <thetext>Comment on attachment 443664
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813310</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-09 13:53:10 -0800</bug_when>
    <thetext>Committed r285532 (244049@main): &lt;https://commits.webkit.org/244049@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443664.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813313</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 13:54:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85220317&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443664</attachid>
            <date>2021-11-09 02:09:39 -0800</date>
            <delta_ts>2021-11-09 13:53:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232870-20211109110937.patch</filename>
            <type>text/plain</type>
            <size>85193</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NjcyOWI4YWFhMWZiZjljYWM4NTBjMjY2MjkyODZhOGU2YzlkODRlLi4yNmE2MjlhNmMzN2ZjNGNj
OGIyNzc3Mzg1ZTVhODQzZWEwMzRhMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMjEtMTEtMDkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtSSVNDVjY0XSBBZGQgYXNzZW1ibHksIGRpc2Fzc2VtYmx5IGluZnJh
c3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzI4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHRoZSBuZWNlc3NhcnkgZmFjaWxpdGllcyBmb3IgYXNzZW1ibGluZyBhbmQgZGlz
YXNzZW1ibGluZworICAgICAgICBSSVNDLVYgaW5zdHJ1Y3Rpb25zLiBUaGlzIGlzIGp1c3QgYSBw
cmVsaW1pbmFyeSBwYXRjaCB0aGF0IGludHJvZHVjZXMKKyAgICAgICAgdGhlIG5lY2Vzc2FyeSBh
c3NlbWJseSBhbmQgZGlzYXNzZW1ibHkgaW5mcmFzdHJ1Y3R1cmUgd2hpbGUgYWN0dWFsCisgICAg
ICAgIGVuaGFuY2VtZW50cyB0byBSSVNDVjY0QXNzZW1ibGVyIGFuZCBNYWNyb0Fzc2VtYmxlclJJ
U0NWNjQgY2xhc3NlcyBhcmUKKyAgICAgICAgbGVmdCBmb3IgbGF0ZXIuCisKKyAgICAgICAgSW4g
UklTQ1Y2NEFzc2VtYmxlci5oIGhlYWRlciwgbmVjZXNzYXJ5IGhlbHBlciBmdW5jdGlvbnMsIGVu
dW1lcmF0aW9ucworICAgICAgICBhbmQgc3RydWN0cyBhcmUgaW50cm9kdWNlZCB0aGF0IGVuYWJs
ZSBjcmFmdGluZyBpbnN0cnVjdGlvbiB2YWx1ZXMgaW4KKyAgICAgICAgYWNjb3JkYW5jZSB3aXRo
IHRoZSBiYXNlIFJJU0MtViBzcGVjaWZpY2F0aW9uLiBBbGwgdGhlIG5lY2Vzc2FyeQorICAgICAg
ICBpbW1lZGlhdGUgYW5kIGluc3RydWN0aW9uIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIGFuZCB0aGUg
cmVsZXZhbnQKKyAgICAgICAgaW5zdHJ1Y3Rpb24gZGVmaW5pdGlvbnMgYXJlIGludHJvZHVjZWQg
YW5kIGJlY29tZSB1c2FibGUgaW4gZnV0dXJlIHdvcmsuCisKKyAgICAgICAgRm9yIGRlYnVnZ2lu
ZyBwdXJwb3NlcywgYSBjdXN0b20gUklTQy1WIGRpc2Fzc2VtYmxlciBpcyBhbHNvIGludHJvZHVj
ZWQKKyAgICAgICAgYW5kIGlzIGVuYWJsZWQgd2hlbiBhcHByb3ByaWF0ZS4gVGhlIGltcGxlbWVu
dGF0aW9uIHV0aWxpemVzCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBpbiBSSVND
VjY0QXNzZW1ibGVyLmgsIGFuZCBkaWZmZXJlbnQgZm9ybWF0dGVycworICAgICAgICBhcmUgaW50
cm9kdWNlZCB0byBoYW5kbGUgc3BlY2lhbCBjYXNlcyBldmVuIGFtb25nIHRoZSBlc3RhYmxpc2hl
ZAorICAgICAgICBpbnN0cnVjdGlvbiB0eXBlcy4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9SSVNDVjY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OlJJ
U0NWNjRJbnN0cnVjdGlvbnM6OnJlZ2lzdGVyVmFsdWUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlOjpJbnN0cnVjdGlvblZhbHVlKToKKyAgICAg
ICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6SW5zdHJ1Y3Rpb25WYWx1ZTo6ZmllbGQpOgor
ICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlOjpvcGNv
ZGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbW1lZGlhdGVCYXNlOjpp
c1ZhbGlkKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6SW1tZWRpYXRlQmFz
ZTo6dik6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OkltbWVkaWF0ZUJhc2U6
OkltbWVkaWF0ZUJhc2UpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbW1l
ZGlhdGVCYXNlOjpmaWVsZCk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OklJ
bW1lZGlhdGU6OklJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25z
OjpJSW1tZWRpYXRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6
OlNJbW1lZGlhdGU6OlNJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rp
b25zOjpTSW1tZWRpYXRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlv
bnM6OkJJbW1lZGlhdGU6OkJJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1
Y3Rpb25zOjpCSW1tZWRpYXRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVj
dGlvbnM6OlVJbW1lZGlhdGU6OlVJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpVSW1tZWRpYXRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0
cnVjdGlvbnM6OkpJbW1lZGlhdGU6OkpJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpKSW1tZWRpYXRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJ
bnN0cnVjdGlvbnM6OlJlZ2lzdGVyc0Jhc2U6OlNpemUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpSVHlwZUJhc2U6OmNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OlJJU0NW
NjRJbnN0cnVjdGlvbnM6OlJUeXBlQmFzZTo6bWF0Y2hlcyk6CisgICAgICAgIChKU0M6OlJJU0NW
NjRJbnN0cnVjdGlvbnM6OlJUeXBlQmFzZTo6cmQpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpSVHlwZUJhc2U6OnJzMSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVj
dGlvbnM6OlJUeXBlQmFzZTo6cnMyKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9u
czo6UlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
UklTQ1Y2NEluc3RydWN0aW9uczo6UlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTo6bWF0Y2hlcyk6
CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlJUeXBlQmFzZVdpdGhSb3VuZGlu
Z01vZGU6OnJkKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UlR5cGVCYXNl
V2l0aFJvdW5kaW5nTW9kZTo6cnMxKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9u
czo6UlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTo6cnMyKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2
NEluc3RydWN0aW9uczo6UlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTo6cm0pOgorICAgICAgICAo
SlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpSVHlwZUJhc2VXaXRoQXFSbDo6Y29uc3RydWN0KToK
KyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UlR5cGVCYXNlV2l0aEFxUmw6Om1h
dGNoZXMpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpSVHlwZUJhc2VXaXRo
QXFSbDo6cmQpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpSVHlwZUJhc2VX
aXRoQXFSbDo6cnMxKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UlR5cGVC
YXNlV2l0aEFxUmw6OnJzMik6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlJU
eXBlQmFzZVdpdGhBcVJsOjphcXJsKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9u
czo6UjRUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU6OmNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6
OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlI0VHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlOjptYXRjaGVz
KToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UjRUeXBlQmFzZVdpdGhSb3Vu
ZGluZ01vZGU6OnJkKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UjRUeXBl
QmFzZVdpdGhSb3VuZGluZ01vZGU6OnJzMSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVj
dGlvbnM6OlI0VHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlOjpyczIpOgorICAgICAgICAoSlNDOjpS
SVNDVjY0SW5zdHJ1Y3Rpb25zOjpSNFR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTo6cnMzKToKKyAg
ICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6UjRUeXBlQmFzZVdpdGhSb3VuZGluZ01v
ZGU6OnJtKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6SVR5cGVCYXNlOjpj
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJVHlwZUJhc2U6
Om1hdGNoZXMpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJVHlwZUJhc2U6
OnJkKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6SVR5cGVCYXNlOjpyczEp
OgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpTVHlwZUJhc2U6OmNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlNUeXBlQmFzZTo6bWF0Y2hl
cyk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlNUeXBlQmFzZTo6cnMxKToK
KyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6U1R5cGVCYXNlOjpyczIpOgorICAg
ICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpCVHlwZUJhc2U6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OkJUeXBlQmFzZTo6bWF0Y2hlcyk6Cisg
ICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OkJUeXBlQmFzZTo6cnMxKToKKyAgICAg
ICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0aW9uczo6QlR5cGVCYXNlOjpyczIpOgorICAgICAgICAo
SlNDOjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpVVHlwZUJhc2U6OmNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlVUeXBlQmFzZTo6bWF0Y2hlcyk6CisgICAgICAg
IChKU0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OlVUeXBlQmFzZTo6cmQpOgorICAgICAgICAoSlND
OjpSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpKVHlwZUJhc2U6OmNvbnN0cnVjdCk6CisgICAgICAgIChK
U0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OkpUeXBlQmFzZTo6bWF0Y2hlcyk6CisgICAgICAgIChK
U0M6OlJJU0NWNjRJbnN0cnVjdGlvbnM6OkpUeXBlQmFzZTo6cmQpOgorICAgICAgICAoSlNDOjpS
SVNDVjY0SW5zdHJ1Y3Rpb25zOjpTTExJOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpSSVND
VjY0SW5zdHJ1Y3Rpb25zOjpTUkxJOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpTUkFJOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpTTExJVzo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3Ry
dWN0aW9uczo6U1JMSVc6OmNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OlJJU0NWNjRJbnN0cnVj
dGlvbnM6OlNSQUlXOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpSSVNDVjY0SW5zdHJ1Y3Rp
b25zOjpGQ1ZUSW1wbDo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NEluc3RydWN0
aW9uczo6Rk1WSW1wbDo6Y29uc3RydWN0KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvUklTQ1Y2
NERpc2Fzc2VtYmxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1i
bGVyOjpTdHJpbmdCdWZmZXJCYXNlOjpkYXRhKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fz
c2VtYmxlcjo6U3RyaW5nQnVmZmVyQmFzZTo6c2l6ZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRE
aXNhc3NlbWJsZXI6OlN0cmluZ0J1ZmZlckJhc2U6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChK
U0M6OlJJU0NWNjREaXNhc3NlbWJsZXI6OnJlZ2lzdGVyTmFtZTxSSVNDVjY0SW5zdHJ1Y3Rpb25z
OjpSZWdpc3RlcnNCYXNlOjpHVHlwZT4pOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1i
bGVyOjpyZWdpc3Rlck5hbWU8UklTQ1Y2NEluc3RydWN0aW9uczo6UmVnaXN0ZXJzQmFzZTo6RlR5
cGU+KToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6cm91bmRpbmdNb2RlKToK
KyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6bWVtb3J5T3BlcmF0aW9uRmxhZ3Mp
OgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjphcXJsRmxhZ3MpOgorICAgICAg
ICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjpJbnN0cnVjdGlvbkxpc3Q6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6UlR5cGVEZWZhdWx0Rm9ybWF0dGlu
Zzo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjpSVHlw
ZVIyRm9ybWF0dGluZzo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNz
ZW1ibGVyOjpSVHlwZVdpdGhSb3VuZGluZ01vZGVEZWZhdWx0Rm9ybWF0dGluZzo6ZGlzYXNzZW1i
bGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjpSVHlwZVdpdGhSb3VuZGlu
Z01vZGVGU1FSVEZvcm1hdHRpbmc6OmRpc2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2
NERpc2Fzc2VtYmxlcjo6UlR5cGVXaXRoUm91bmRpbmdNb2RlRkNWVEZvcm1hdHRpbmc6OmRpc2Fz
c2VtYmxlKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6UlR5cGVXaXRoQXFS
bERlZmF1bHRGb3JtYXR0aW5nOjpkaXNhc3NlbWJsZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjRE
aXNhc3NlbWJsZXI6OlJUeXBlV2l0aEFxUmxMUkZvcm1hdHRpbmc6OmRpc2Fzc2VtYmxlKToKKyAg
ICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6UjRUeXBlV2l0aFJvdW5kaW5nTW9kZURl
ZmF1bHRGb3JtYXR0aW5nOjpkaXNhc3NlbWJsZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjREaXNh
c3NlbWJsZXI6OklUeXBlRGVmYXVsdEZvcm1hdHRpbmc6OmRpc2Fzc2VtYmxlKToKKyAgICAgICAg
KEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6SVR5cGVJbW1lZGlhdGVBc09mZnNldEZvcm1hdHRp
bmc6OmRpc2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6U1R5
cGVEZWZhdWx0Rm9ybWF0dGluZzo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0
RGlzYXNzZW1ibGVyOjpCVHlwZURlZmF1bHRGb3JtYXR0aW5nOjpkaXNhc3NlbWJsZSk6CisgICAg
ICAgIChKU0M6OlJJU0NWNjREaXNhc3NlbWJsZXI6OlVUeXBlRGVmYXVsdEZvcm1hdHRpbmc6OmRp
c2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6SlR5cGVEZWZh
dWx0Rm9ybWF0dGluZzo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNz
ZW1ibGVyOjpGZW5jZUluc3RydWN0aW9uRm9ybWF0dGluZzo6ZGlzYXNzZW1ibGUpOgorICAgICAg
ICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjpGZW5jZUlJbnN0cnVjdGlvbkZvcm1hdHRpbmc6
OmRpc2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6UklTQ1Y2NERpc2Fzc2VtYmxlcjo6RW52aXJv
bm1lbnRJbnN0cnVjdGlvbkZvcm1hdHRpbmc6OmRpc2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6
UklTQ1Y2NERpc2Fzc2VtYmxlcjo6RGlzYXNzZW1ibHlGb3JtYXR0aW5nOjpkaXNhc3NlbWJsZSk6
CisgICAgICAgIChKU0M6OlJJU0NWNjREaXNhc3NlbWJsZXI6OkRpc2Fzc2VtYmxlcjo6ZGlzYXNz
ZW1ibGUpOgorICAgICAgICAoSlNDOjpSSVNDVjY0RGlzYXNzZW1ibGVyOjpEaXNhc3NlbWJsZXI8
SW5zblR5cGU+OjpkaXNhc3NlbWJsZSk6CisgICAgICAgIChKU0M6OlJJU0NWNjREaXNhc3NlbWJs
ZXI6OmRpc2Fzc2VtYmxlT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZSk6
CisKIDIwMjEtMTEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBQYXJzZSByZWRpcmVjdCBhbmQgbW9kaWZ5LWhlYWRlcnMgYWN0aW9ucyBm
b3IgV0tDb250ZW50UnVsZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTEyN2UyNjlkMzc2Mzc0YjU3MGE2YjBjMjZmY2Rk
NzZmMzFhNzYxZS4uYzc2Yjg1YWVhNDA1NGZlZTgyNjczMjhiNjYyNDM1NDY5OGIyMzdjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMS0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1JJU0NWNjRdIEFkZCBhc3NlbWJseSwgZGlzYXNzZW1ibHkg
aW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMjg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6IEVuYWJsZSBSSVNDVjY0X0RJU0FTU0VNQkxF
UiB3aGVuIG5lY2Vzc2FyeS4KKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgV2ViR1BVLnhjb2RlcHJvaiBhbmQgV2Vi
R1BVLmZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBjZjNlYzUzNmQ4
Nzc3MWFkZjY2ZDA0ZWIxYzQ3NzVjM2UzMjg3M2MuLjc5M2Y0NmY3YmM1OGU1MDhjZGE2Y2I5MDE1
YWEwOTJlOGM5ODYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTQ0OCw2ICs0
NDgsNyBAQCBkZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKIGRpc2Fzc2VtYmxl
ci9BUk02NERpc2Fzc2VtYmxlci5jcHAKIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxl
ci5jcHAKIGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCitkaXNhc3NlbWJsZXIvUklTQ1Y2
NERpc2Fzc2VtYmxlci5jcHAKIGRpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCiBk
aXNhc3NlbWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JJU0NWNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUklTQ1Y2NEFzc2VtYmxlci5oCmluZGV4IGExMjVmMzE3Y2JlMDFk
NjRlYjhiNzA5MTNlOWE0ZTJjYTBlMTBmYTguLmQwNmNhZmM5OGZkYTVhYTExOGQ5NTNmZjFmZTU0
ZWM3MzgyZjVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UklTQ1Y2NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UklTQ1Y2NEFzc2VtYmxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBc3NlbWJs
ZXJCdWZmZXIuaCIKICNpbmNsdWRlICJSSVNDVjY0UmVnaXN0ZXJzLmgiCisjaW5jbHVkZSA8dHVw
bGU+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC02NCw2ICs2NSwxMzgzIEBAIHR5cGVkZWYgZW51
bSA6IGludDhfdCB7CiAKIH0gLy8gbmFtZXNwYWNlIFJJU0NWNjRSZWdpc3RlcnMKIAorbmFtZXNw
YWNlIFJJU0NWNjRJbnN0cnVjdGlvbnMgeworCitlbnVtIGNsYXNzIE9wY29kZSA6IHVuc2lnbmVk
IHsKKyAgICBMT0FEICAgICAgICA9IDBiMDAwMDAxMSwKKyAgICBMT0FEX0ZQICAgICA9IDBiMDAw
MDExMSwKKyAgICBNSVNDX01FTSAgICA9IDBiMDAwMTExMSwKKyAgICBPUF9JTU0gICAgICA9IDBi
MDAxMDAxMSwKKyAgICBBVUlQQyAgICAgICA9IDBiMDAxMDExMSwKKyAgICBPUF9JTU1fMzIgICA9
IDBiMDAxMTAxMSwKKyAgICBTVE9SRSAgICAgICA9IDBiMDEwMDAxMSwKKyAgICBTVE9SRV9GUCAg
ICA9IDBiMDEwMDExMSwKKyAgICBBTU8gICAgICAgICA9IDBiMDEwMTExMSwKKyAgICBPUCAgICAg
ICAgICA9IDBiMDExMDAxMSwKKyAgICBMVUkgICAgICAgICA9IDBiMDExMDExMSwKKyAgICBPUF8z
MiAgICAgICA9IDBiMDExMTAxMSwKKyAgICBNQUREICAgICAgICA9IDBiMTAwMDAxMSwKKyAgICBN
U1VCICAgICAgICA9IDBiMTAwMDExMSwKKyAgICBOTVNVQiAgICAgICA9IDBiMTAwMTAxMSwKKyAg
ICBOTUFERCAgICAgICA9IDBiMTAwMTExMSwKKyAgICBPUF9GUCAgICAgICA9IDBiMTAxMDAxMSwK
KyAgICBCUkFOQ0ggICAgICA9IDBiMTEwMDAxMSwKKyAgICBKQUxSICAgICAgICA9IDBiMTEwMDEx
MSwKKyAgICBKQUwgICAgICAgICA9IDBiMTEwMTExMSwKKyAgICBTWVNURU0gICAgICA9IDBiMTEx
MDAxMSwKK307CisKK2VudW0gY2xhc3MgRkNWVFR5cGUgeworICAgIFcsIFdVLAorICAgIEwsIExV
LAorICAgIFMsIEQsCit9OworCitlbnVtIGNsYXNzIEZNVlR5cGUgeworICAgIFgsIFcsIEQsCit9
OworCitlbnVtIGNsYXNzIEZQUm91bmRpbmdNb2RlIDogdW5zaWduZWQgeworICAgIFJORSA9IDBi
MDAwLAorICAgIFJUWiA9IDBiMDAxLAorICAgIFJETiA9IDBiMDEwLAorICAgIFJVUCA9IDBiMDEx
LAorICAgIFJNTSA9IDBiMTAwLAorICAgIERZTiA9IDBiMTExLAorfTsKKworZW51bSBjbGFzcyBN
ZW1vcnlPcGVyYXRpb24gOiB1aW50OF90IHsKKyAgICBJID0gMSA8PCAzLAorICAgIE8gPSAxIDw8
IDIsCisgICAgUiA9IDEgPDwgMSwKKyAgICBXID0gMSA8PCAwLAorICAgIFJXID0gUiB8IFcsCisg
ICAgSU9SVyA9IEkgfCBPIHwgUiB8IFcsCit9OworCitlbnVtIGNsYXNzIE1lbW9yeUFjY2VzcyA6
IHVpbnQ4X3QgeworICAgIEFjcXVpcmUgPSAxIDw8IDEsCisgICAgUmVsZWFzZSA9IDEgPDwgMCwK
KyAgICBBY3F1aXJlUmVsZWFzZSA9IEFjcXVpcmUgfCBSZWxlYXNlLAorfTsKKworLy8gUmVnaXN0
ZXIgaGVscGVycworCit1c2luZyBSZWdpc3RlcklEID0gUklTQ1Y2NFJlZ2lzdGVyczo6UmVnaXN0
ZXJJRDsKK3VzaW5nIEZQUmVnaXN0ZXJJRCA9IFJJU0NWNjRSZWdpc3RlcnM6OkZQUmVnaXN0ZXJJ
RDsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2F1dG8gcmVnaXN0ZXJWYWx1ZShUIHJlZ2lzdGVy
SUQpCisgICAgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19zYW1lX3Y8VCwgUmVnaXN0ZXJJ
RD4gfHwgc3RkOjppc19zYW1lX3Y8VCwgRlBSZWdpc3RlcklEPiksIHVuc2lnbmVkPgoreworICAg
IHJldHVybiB1bnNpZ25lZChyZWdpc3RlcklEKSAmICgoMSA8PCA1KSAtIDEpOworfQorCisvLyBJ
bnN0cnVjdGlvblZhbHVlIGNvbnRhaW5zIHRoZSAzMi1iaXQgaW5zdHJ1Y3Rpb24gdmFsdWUgYW5k
IGFsc28gcHJvdmlkZXMgYWNjZXNzIGludG8gdGhlIGRlc2lyZWQgZmllbGQuCisKK3N0cnVjdCBJ
bnN0cnVjdGlvblZhbHVlIHsKKyAgICBleHBsaWNpdCBJbnN0cnVjdGlvblZhbHVlKHVpbnQzMl90
IHZhbHVlKQorICAgICAgICA6IHZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8
dW5zaWduZWQgZmllbGRTdGFydCwgdW5zaWduZWQgZmllbGRTaXplPgorICAgIHVpbnQzMl90IGZp
ZWxkKCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoZmllbGRTdGFydCArIGZpZWxkU2l6
ZSA8PSAoc2l6ZW9mKHVpbnQzMl90KSAqIDgpKTsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA+PiBm
aWVsZFN0YXJ0KSAmICgoMSA8PCBmaWVsZFNpemUpIC0gMSk7CisgICAgfQorCisgICAgdWludDMy
X3Qgb3Bjb2RlKCkgeyByZXR1cm4gZmllbGQ8MCwgNz4oKTsgfQorCisgICAgdWludDMyX3QgdmFs
dWU7Cit9OworCisvLyBJbW1lZGlhdGUgdHlwZXMKKworLy8gSW1tZWRpYXRlQmFzZSBhY3RzIGFz
IHRoZSBiYXNlIHN0cnVjdCBmb3IgdGhlIGRpZmZlcmVudCB0eXBlcy4gVGhlIGJpdC1zaXplIG9m
IHRoZSBpbW1lZGlhdGUgaXMgZGV0ZXJtaW5lZCBhcyB0aGUKKy8vIHRlbXBsYXRlIHBhcmFtZXRl
ciBvbiB0aGUgSW1tZWRpYXRlQmFzZSBzdHJ1Y3QuIEludGVybmFsbHksIGV2ZXJ5IGltbWVkaWF0
ZSB2YWx1ZSBpcyByZXByZXNlbnRlZCB0aHJvdWdoIGEgdWludDMyX3QKKy8vIGZyb20gd2hpY2gg
dGhlIGFwcHJvcHJpYXRlIGJpdC1zZXRzIGFyZSB0aGVuIGNvcGllZCBpbnRvIHRoZSB0YXJnZXQg
aW5zdHJ1Y3Rpb24uCisKKy8vIEltbWVkaWF0ZUJhc2UgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byBj
b25zdHJ1Y3QgdGhlIHRhcmdldCBpbW1lZGlhdGUgKHRoZSB0eXBlIG9mIHdoaWNoIGlzIHNwZWNp
ZmllZCBhcyBhIHRlbXBsYXRlCisvLyBwYXJhbWV0ZXIgdG8gdGhlc2UgY29uc3RydWN0aW9uIG1l
dGhvZHMpOgorLy8gSW1tZWRpYXRlQmFzZTxOPjo6djxJbW1lZGlhdGVUeXBlLCBpbnQzMl90Pigp
IC0tIGZvciBjb25zdGFudCBpbW1lZGlhdGVzCisvLyBJbW1lZGlhdGVCYXNlPE4+Ojp2PEltbWVk
aWF0ZVR5cGU+KGludDMyX3QvaW50NjRfdCkgLS0gZm9yIHZhcmlhYmxlIGltbWVkaWF0ZXMgd2hv
c2UgdmFsdWVzIHdlcmUgdmFsaWRhdGVkIGJlZm9yZWhhbmQKKy8vIEltbWVkaWF0ZUJhc2U8Tj46
OkltbWVkaWF0ZUJhc2UodWludDMyX3QpIC0tIGZvciBpbW1lZGlhdGUgdmFsdWVzIGFscmVhZHkg
cGFja2VkIGluIHRoZSB1aW50MzJfdCBmb3JtYXQKKworLy8gVGhlcmUncyBhbHNvIEltbWVkaWF0
ZVR5cGU6OnZhbHVlKEluc3RydWN0aW9uVmFsdWUpIGhlbHBlcnMgdGhhdCBmb3IgYSBnaXZlbiBp
bnN0cnVjdGlvbiB2YWx1ZSByZXRyaWV2ZSB0aGUKKy8vIGFwcHJvcHJpYXRlIHNpZ25lZCBpbW1l
ZGlhdGUgdmFsdWUgdGhhdCB3YXMgZW5jb2RlZCBpbiB0aGF0IGluc3RydWN0aW9uIChleGNlcHQg
Zm9yIHRoZSBVLXR5cGUgaW1tZWRpYXRlIHdoaWNoIGlzCisvLyBhIDMyLWJpdCB1bnNpZ25lZCB2
YWx1ZSkuCisKK3RlbXBsYXRlPHVuc2lnbmVkIGltbWVkaWF0ZVNpemU+CitzdHJ1Y3QgSW1tZWRp
YXRlQmFzZSB7CisgICAgc3RhdGljX2Fzc2VydChpbW1lZGlhdGVTaXplIDw9IHNpemVvZih1aW50
MzJfdCkgKiA4KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIGF1dG8g
aXNWYWxpZChUIGltbVZhbHVlKQorICAgICAgICAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6Omlz
X3NhbWVfdjxULCBpbnQzMl90PiB8fCBzdGQ6OmlzX3NhbWVfdjxULCBpbnQ2NF90PiksIGJvb2w+
CisgICAgeworICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgc2hpZnQgPSBzaXplb2YoVCkgKiA4
IC0gaW1tZWRpYXRlU2l6ZTsKKyAgICAgICAgcmV0dXJuIGltbVZhbHVlID09ICgoaW1tVmFsdWUg
PDwgc2hpZnQpID4+IHNoaWZ0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbW1l
ZGlhdGVUeXBlLCBpbnQzMl90IGltbVZhbHVlPgorICAgIHN0YXRpYyBJbW1lZGlhdGVUeXBlIHYo
KQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCgoLSgxIDw8IChpbW1lZGlhdGVTaXplIC0g
MSkpIDw9IGltbVZhbHVlKSAmJiAoaW1tVmFsdWUgPD0gKCgxIDw8IChpbW1lZGlhdGVTaXplIC0g
MSkpIC0gMSkpKTsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IGltbVZhbHVlOworICAgICAgICBy
ZXR1cm4gSW1tZWRpYXRlVHlwZSgoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmdmFsdWUp
KSAmICgoMSA8PCBpbW1lZGlhdGVTaXplKSAtIDEpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbW1lZGlhdGVUeXBlPgorICAgIHN0YXRpYyBJbW1lZGlhdGVUeXBlIHYoaW50MzJf
dCBpbW1WYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKGltbVZhbHVlKSk7Cisg
ICAgICAgIHVpbnQzMl90IHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmaW1t
VmFsdWUpOworICAgICAgICByZXR1cm4gSW1tZWRpYXRlVHlwZSh2YWx1ZSAmICgoMSA8PCBpbW1l
ZGlhdGVTaXplKSAtIDEpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbW1lZGlh
dGVUeXBlPgorICAgIHN0YXRpYyBJbW1lZGlhdGVUeXBlIHYoaW50NjRfdCBpbW1WYWx1ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKGltbVZhbHVlKSk7CisgICAgICAgIHVpbnQ2NF90
IHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmaW1tVmFsdWUpOworICAgICAg
ICByZXR1cm4gSW1tZWRpYXRlVHlwZSh1aW50MzJfdCh2YWx1ZSAmICgodWludDY0X3QoMSkgPDwg
aW1tZWRpYXRlU2l6ZSkgLSAxKSkpOworICAgIH0KKworICAgIGV4cGxpY2l0IEltbWVkaWF0ZUJh
c2UodWludDMyX3QgaW1tVmFsdWUpCisgICAgICAgIDogaW1tKGltbVZhbHVlKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChpbW1lZGlhdGVTaXplIDwgc2l6ZW9mKHVpbnQzMl90KSAqIDgp
CisgICAgICAgICAgICBBU1NFUlQoaW1tIDwgKDEgPDwgaW1tZWRpYXRlU2l6ZSkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGZpZWxkU3RhcnQsIHVuc2lnbmVkIGZpZWxkU2l6ZT4K
KyAgICB1aW50MzJfdCBmaWVsZCgpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGZpZWxk
U3RhcnQgKyBmaWVsZFNpemUgPD0gaW1tZWRpYXRlU2l6ZSk7CisgICAgICAgIHJldHVybiAoaW1t
ID4+IGZpZWxkU3RhcnQpICYgKCgxIDw8IGZpZWxkU2l6ZSkgLSAxKTsKKyAgICB9CisKKyAgICB1
aW50MzJfdCBpbW07Cit9OworCitzdHJ1Y3QgSUltbWVkaWF0ZSA6IEltbWVkaWF0ZUJhc2U8MTI+
IHsKKyAgICBleHBsaWNpdCBJSW1tZWRpYXRlKHVpbnQzMl90IGltbVZhbHVlKQorICAgICAgICA6
IEltbWVkaWF0ZUJhc2U8MTI+KGltbVZhbHVlKQorICAgIHsgfQorCisgICAgc3RhdGljIGludDMy
X3QgdmFsdWUoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
YmFzZSA9IGluc24uZmllbGQ8MjAsIDEyPigpOworICAgICAgICBpbnQzMl90IGltbSA9ICpyZWlu
dGVycHJldF9jYXN0PGludDMyX3QqPigmYmFzZSk7CisgICAgICAgIHJldHVybiAoKGltbSA8PCAy
MCkgPj4gMjApOworICAgIH0KK307CisKK3N0cnVjdCBTSW1tZWRpYXRlIDogSW1tZWRpYXRlQmFz
ZTwxMj4geworICAgIGV4cGxpY2l0IFNJbW1lZGlhdGUodWludDMyX3QgaW1tVmFsdWUpCisgICAg
ICAgIDogSW1tZWRpYXRlQmFzZTwxMj4oaW1tVmFsdWUpCisgICAgeyB9CisKKyAgICBzdGF0aWMg
aW50MzJfdCB2YWx1ZShJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAgICB1aW50
MzJfdCBiYXNlID0gMAorICAgICAgICAgICAgfCAoaW5zbi5maWVsZDwzMSwgMT4oKSA8PCAxMSkK
KyAgICAgICAgICAgIHwgKGluc24uZmllbGQ8MjUsIDY+KCkgPDwgIDUpCisgICAgICAgICAgICB8
IChpbnNuLmZpZWxkPCA4LCA0PigpIDw8ICAxKQorICAgICAgICAgICAgfCAoaW5zbi5maWVsZDwg
NywgMT4oKSA8PCAgMCk7CisgICAgICAgIGludDMyX3QgaW1tID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdCo+KCZiYXNlKTsKKyAgICAgICAgcmV0dXJuICgoaW1tIDw8IDIwKSA+PiAyMCk7Cisg
ICAgfQorfTsKKworc3RydWN0IEJJbW1lZGlhdGUgOiBJbW1lZGlhdGVCYXNlPDEzPiB7CisgICAg
ZXhwbGljaXQgQkltbWVkaWF0ZSh1aW50MzJfdCBpbW1WYWx1ZSkKKyAgICAgICAgOiBJbW1lZGlh
dGVCYXNlPDEzPihpbW1WYWx1ZSkKKyAgICB7IH0KKworICAgIHN0YXRpYyBpbnQzMl90IHZhbHVl
KEluc3RydWN0aW9uVmFsdWUgaW5zbikKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGJhc2UgPSAw
CisgICAgICAgICAgICB8IChpbnNuLmZpZWxkPDMxLCAxPigpIDw8IDEyKQorICAgICAgICAgICAg
fCAoaW5zbi5maWVsZDwgNywgMT4oKSA8PCAxMSkKKyAgICAgICAgICAgIHwgKGluc24uZmllbGQ8
MjUsIDY+KCkgPDwgIDUpCisgICAgICAgICAgICB8IChpbnNuLmZpZWxkPCA4LCA0PigpIDw8ICAx
KTsKKyAgICAgICAgaW50MzJfdCBpbW0gPSAqcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oJmJh
c2UpOworICAgICAgICByZXR1cm4gKChpbW0gPDwgMTkpID4+IDE5KTsKKyAgICB9Cit9OworCitz
dHJ1Y3QgVUltbWVkaWF0ZSA6IEltbWVkaWF0ZUJhc2U8MzI+IHsKKyAgICBleHBsaWNpdCBVSW1t
ZWRpYXRlKHVpbnQzMl90IGltbVZhbHVlKQorICAgICAgICA6IEltbWVkaWF0ZUJhc2UoKGltbVZh
bHVlID4+IDEyKSA8PCAxMikKKyAgICB7IH0KKworICAgIHN0YXRpYyB1aW50MzJfdCB2YWx1ZShJ
bnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAgICByZXR1cm4gaW5zbi5maWVsZDwx
MiwgMjA+KCkgPDwgMTI7CisgICAgfQorfTsKKworc3RydWN0IEpJbW1lZGlhdGUgOiBJbW1lZGlh
dGVCYXNlPDIxPiB7CisgICAgZXhwbGljaXQgSkltbWVkaWF0ZSh1aW50MzJfdCBpbW1WYWx1ZSkK
KyAgICAgICAgOiBJbW1lZGlhdGVCYXNlPDIxPihpbW1WYWx1ZSkKKyAgICB7IH0KKworICAgIHN0
YXRpYyBpbnQzMl90IHZhbHVlKEluc3RydWN0aW9uVmFsdWUgaW5zbikKKyAgICB7CisgICAgICAg
IHVpbnQzMl90IGJhc2UgPSAwCisgICAgICAgICAgICB8IChpbnNuLmZpZWxkPDMxLCAxPigpIDw8
IDIwKQorICAgICAgICAgICAgfCAoaW5zbi5maWVsZDwxMiwgOD4oKSA8PCAxMikKKyAgICAgICAg
ICAgIHwgKGluc24uZmllbGQ8MjAsIDE+KCkgPDwgMTEpCisgICAgICAgICAgICB8IChpbnNuLmZp
ZWxkPDI1LCA2PigpIDw8ICA1KQorICAgICAgICAgICAgfCAoaW5zbi5maWVsZDwyMSwgND4oKSA8
PCAgMSk7CisgICAgICAgIGludDMyX3QgaW1tID0gKnJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+
KCZiYXNlKTsKKyAgICAgICAgcmV0dXJuICgoaW1tIDw8IDExKSA+PiAxMSk7CisgICAgfQorfTsK
KworLy8gSW5zdHJ1Y3Rpb24gdHlwZXMKKworLy8gSGVscGVyIHN0cnVjdCB0aGF0IHByb3ZpZGVz
IGRpZmZlcmVudCBncm91cGluZ3Mgb2YgcmVnaXN0ZXIgdHlwZXMgYXMgcmVxdWlyZWQgZm9yIGRp
ZmZlcmVudCBpbnN0cnVjdGlvbnMuCisvLyBUaGUgdHVwbGUgc2l6ZSBhbmQgY29udGFpbmVkIHR5
cGVzIGFyZSB1c2VkIGZvciBjb21waWxlLXRpbWUgY2hlY2tzIG9mIG1hdGNoaW5nIHJlZ2lzdGVy
IHR5cGVzIGJlaW5nIHBhc3NlZAorLy8gdG8gdGhvc2UgaW5zdHJ1Y3Rpb25zLgorCitzdHJ1Y3Qg
UmVnaXN0ZXJzQmFzZSB7CisgICAgc3RydWN0IEdUeXBlIHsgfTsgLy8gR2VuZXJhbC1wdXJwb3Nl
IHJlZ2lzdGVyCisgICAgc3RydWN0IEZUeXBlIHsgfTsgLy8gRmxvYXRpbmctcG9pbnQgcmVnaXN0
ZXIKKyAgICBzdHJ1Y3QgWlR5cGUgeyB9OyAvLyBaZXJvLXZhbHVlIHVudXNlZCByZWdpc3Rlcgor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUlR5cGVzPgorICAgIHVzaW5nIFR1cGxlID0gc3Rk
Ojp0dXBsZTxSVHlwZXMuLi4+OworICAgIHRlbXBsYXRlPHNpemVfdCBJLCB0eXBlbmFtZSBUdXBs
ZVR5cGU+CisgICAgdXNpbmcgVHlwZSA9IHN0ZDo6dHVwbGVfZWxlbWVudF90PEksIFR1cGxlVHlw
ZT47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZVR5cGU+CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZV9zaXpl
X3Y8VHVwbGVUeXBlPjsKKyAgICB9CisKKyAgICB1c2luZyBHID0gVHVwbGU8R1R5cGU+OworICAg
IHVzaW5nIEdHID0gVHVwbGU8R1R5cGUsIEdUeXBlPjsKKyAgICB1c2luZyBHRiA9IFR1cGxlPEdU
eXBlLCBGVHlwZT47CisgICAgdXNpbmcgR0dHID0gVHVwbGU8R1R5cGUsIEdUeXBlLCBHVHlwZT47
CisgICAgdXNpbmcgR0daID0gVHVwbGU8R1R5cGUsIEdUeXBlLCBaVHlwZT47CisgICAgdXNpbmcg
R0ZGID0gVHVwbGU8R1R5cGUsIEZUeXBlLCBGVHlwZT47CisgICAgdXNpbmcgR0ZaID0gVHVwbGU8
R1R5cGUsIEZUeXBlLCBaVHlwZT47CisgICAgdXNpbmcgRkcgPSBUdXBsZTxGVHlwZSwgR1R5cGU+
OworICAgIHVzaW5nIEZGID0gVHVwbGU8RlR5cGUsIEZUeXBlPjsKKyAgICB1c2luZyBGR1ogPSBU
dXBsZTxGVHlwZSwgR1R5cGUsIFpUeXBlPjsKKyAgICB1c2luZyBGRkYgPSBUdXBsZTxGVHlwZSwg
RlR5cGUsIEZUeXBlPjsKKyAgICB1c2luZyBGRlogPSBUdXBsZTxGVHlwZSwgRlR5cGUsIFpUeXBl
PjsKKyAgICB1c2luZyBGRkZGID0gVHVwbGU8RlR5cGUsIEZUeXBlLCBGVHlwZSwgRlR5cGU+Owor
ICAgIHVzaW5nIFpaID0gVHVwbGU8WlR5cGUsIFpUeXBlPjsKK307CisKKy8vIFRoZXNlIGFyZSB0
aGUgYmFzZSBpbnN0cnVjdGlvbiBzdHJ1Y3RzLiBGb3IgUi10eXBlIGluc3RydWN0aW9ucywgYWRk
aXRpb25hbCB2YXJpYXRpb25zIGFyZSBwcm92aWRlZC4KKworLy8gT3Bjb2RlLCBkaWZmZXJlbnQg
c3BlYy1kZWZpbmVkIGNvbnN0YW50IGluc3RydWN0aW9uIGZpZWxkcyBhbmQgdGhlIHJlcXVpcmVk
IHJlZ2lzdGVyIHR5cGVzIGFyZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUKKy8vIHRlbXBsYXRlIHBh
cmFtZXRlcnMuIFRoZSBjb25zdHJ1Y3QoKSBzdGF0aWMgbWV0aG9kcyBjb21wb3NlIGFuZCByZXR1
cm4gdGhlIGluc3RydWN0aW9uIHZhbHVlIGluIHRoZSAzMi1iaXQgdW5zaWduZWQKKy8vIGZvcm1h
dC4KKworLy8gVGhlIG1hdGNoZXMoKSBtZXRob2RzIGFyZSB1c2FibGUgdG8gbWF0Y2ggYSBnaXZl
biBJbnN0cnVjdGlvblZhbHVlIGFnYWluc3QgdGhlIHRhcmdldCBpbnN0cnVjdGlvbiB0eXBlLiBC
YXNlbGluZQorLy8gaW1wbGVtZW50YXRpb25zIHRlc3QgdGhlIG9wY29kZSBhbmQgY29uc3RhbnQg
ZmllbGRzLCBidXQgZGlmZmVyZW50IGluc3RydWN0aW9uIHNwZWNpYWxpemF0aW9ucyBjYW4gcHJv
dmlkZSBhIGJldHRlcgorLy8gbWF0Y2hpbmcgdGVjaG5pcXVlIGlmIG5lY2Vzc2FyeS4KKworLy8g
Rm9yIGVhY2ggYmFzZSBpbnN0cnVjdGlvbiB0eXBlIHRoZXJlJ3MgYWxzbyBzdGF0aWMgZ2V0dGVy
cyBmb3IgZHluYW1pYyBiaXQtZmllbGRzIGxpa2UgcmVnaXN0ZXIgdmFsdWVzLCByb3VuZGluZyBt
b2RlCisvLyBvciBkaWZmZXJlbnQgZmxhZyB0eXBlcy4gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgb24g
YW4gSW5zdHJ1Y3Rpb25WYWx1ZSBhZnRlciBhIG1hdGNoaW5nIGluc3RydWN0aW9uIHR5cGUgd2Fz
IGFscmVhZHkKKy8vIGNvbmZpcm1lZC4gVGhlc2UgYXJlIG1vc3RseSB1c2VkIGZvciBkaXNhc3Nl
bWJseSwgbGVhdmluZyBpdCB0byB0aGF0IGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZSB0aGUgcmV0
dXJuZWQgcmF3CisvLyBiaXQtZmllbGQgdmFsdWVzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdp
c3RlclR5cGVzPgorc3RydWN0IFJUeXBlUmVnaXN0ZXJzIHsKKyAgICBzdGF0aWNfYXNzZXJ0KFJl
Z2lzdGVyc0Jhc2U6OlNpemU8UmVnaXN0ZXJUeXBlcz4oKSA9PSAzKTsKKyAgICB1c2luZyBSRCA9
IFJlZ2lzdGVyc0Jhc2U6OlR5cGU8MCwgUmVnaXN0ZXJUeXBlcz47CisgICAgdXNpbmcgUlMxID0g
UmVnaXN0ZXJzQmFzZTo6VHlwZTwxLCBSZWdpc3RlclR5cGVzPjsKKyAgICB1c2luZyBSUzIgPSBS
ZWdpc3RlcnNCYXNlOjpUeXBlPDIsIFJlZ2lzdGVyVHlwZXM+OworfTsKKwordGVtcGxhdGU8T3Bj
b2RlIG9wY29kZSwgdW5zaWduZWQgZnVuY3QzLCB1bnNpZ25lZCBmdW5jdDcsIHR5cGVuYW1lIFJl
Z2lzdGVyVHlwZXM+CitzdHJ1Y3QgUlR5cGVCYXNlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHVuc2ln
bmVkKG9wY29kZSkgPCAoMSA8PCA3KSk7CisgICAgc3RhdGljX2Fzc2VydChmdW5jdDMgPCAoMSA8
PCAzKSk7CisgICAgc3RhdGljX2Fzc2VydChmdW5jdDcgPCAoMSA8PCA3KSk7CisKKyAgICB1c2lu
ZyBCYXNlID0gUlR5cGVCYXNlPG9wY29kZSwgZnVuY3QzLCBmdW5jdDcsIFJlZ2lzdGVyVHlwZXM+
OworICAgIHVzaW5nIFJlZ2lzdGVycyA9IFJUeXBlUmVnaXN0ZXJzPFJlZ2lzdGVyVHlwZXM+Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUkRUeXBlLCB0eXBlbmFtZSBSUzFUeXBlLCB0eXBlbmFt
ZSBSUzJUeXBlPgorICAgIHN0YXRpYyB1aW50MzJfdCBjb25zdHJ1Y3QoUkRUeXBlIHJkLCBSUzFU
eXBlIHJzMSwgUlMyVHlwZSByczIpCisgICAgeworICAgICAgICB1aW50MzJfdCBpbnN0cnVjdGlv
biA9IDAKKyAgICAgICAgICAgIHwgKGZ1bmN0NyAgICAgICAgICAgICA8PCAyNSkKKyAgICAgICAg
ICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMyKSA8PCAyMCkKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVy
VmFsdWUocnMxKSA8PCAxNSkKKyAgICAgICAgICAgIHwgKGZ1bmN0MyAgICAgICAgICAgICA8PCAx
MikKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocmQpICA8PCAgNykKKyAgICAgICAgICAg
IHwgdW5zaWduZWQob3Bjb2RlKTsKKyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIG1hdGNoZXMoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG9wY29kZSkgPT0gaW5zbi5vcGNvZGUoKSAmJiBmdW5j
dDMgPT0gaW5zbi5maWVsZDwxMiwgMz4oKSAmJiBmdW5jdDcgPT0gaW5zbi5maWVsZDwyNSwgNz4o
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDhfdCByZChJbnN0cnVjdGlvblZhbHVlIGluc24p
IHsgcmV0dXJuIGluc24uZmllbGQ8NywgNT4oKTsgfQorICAgIHN0YXRpYyB1aW50OF90IHJzMShJ
bnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmllbGQ8MTUsIDU+KCk7IH0KKyAg
ICBzdGF0aWMgdWludDhfdCByczIoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNu
LmZpZWxkPDIwLCA1PigpOyB9Cit9OworCit0ZW1wbGF0ZTxPcGNvZGUgb3Bjb2RlLCB1bnNpZ25l
ZCBmdW5jdDcsIHR5cGVuYW1lIFJlZ2lzdGVyVHlwZXM+CitzdHJ1Y3QgUlR5cGVCYXNlV2l0aFJv
dW5kaW5nTW9kZSB7CisgICAgc3RhdGljX2Fzc2VydCh1bnNpZ25lZChvcGNvZGUpIDwgKDEgPDwg
NykpOworICAgIHN0YXRpY19hc3NlcnQoZnVuY3Q3IDwgKDEgPDwgNykpOworCisgICAgdXNpbmcg
QmFzZSA9IFJUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8b3Bjb2RlLCBmdW5jdDcsIFJlZ2lzdGVy
VHlwZXM+OworICAgIHVzaW5nIFJlZ2lzdGVycyA9IFJUeXBlUmVnaXN0ZXJzPFJlZ2lzdGVyVHlw
ZXM+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUkRUeXBlLCB0eXBlbmFtZSBSUzFUeXBlLCB0
eXBlbmFtZSBSUzJUeXBlPgorICAgIHN0YXRpYyB1aW50MzJfdCBjb25zdHJ1Y3QoUkRUeXBlIHJk
LCBSUzFUeXBlIHJzMSwgUlMyVHlwZSByczIsIEZQUm91bmRpbmdNb2RlIHJtKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHVuc2lnbmVkKHJtKSA8ICgxIDw8IDMpKTsKKworICAgICAgICB1aW50MzJf
dCBpbnN0cnVjdGlvbiA9IDAKKyAgICAgICAgICAgIHwgKGZ1bmN0NyAgICAgICAgICAgICA8PCAy
NSkKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMyKSA8PCAyMCkKKyAgICAgICAgICAg
IHwgKHJlZ2lzdGVyVmFsdWUocnMxKSA8PCAxNSkKKyAgICAgICAgICAgIHwgKHVuc2lnbmVkKHJt
KSAgICAgICA8PCAxMikKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocmQpICA8PCAgNykK
KyAgICAgICAgICAgIHwgdW5zaWduZWQob3Bjb2RlKTsKKyAgICAgICAgcmV0dXJuIGluc3RydWN0
aW9uOworICAgIH0KKworICAgIHN0YXRpYyBib29sIG1hdGNoZXMoSW5zdHJ1Y3Rpb25WYWx1ZSBp
bnNuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG9wY29kZSkgPT0gaW5zbi5vcGNv
ZGUoKSAmJiBmdW5jdDcgPT0gaW5zbi5maWVsZDwyNSwgNz4oKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdWludDhfdCByZChJbnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmllbGQ8
NywgNT4oKTsgfQorICAgIHN0YXRpYyB1aW50OF90IHJzMShJbnN0cnVjdGlvblZhbHVlIGluc24p
IHsgcmV0dXJuIGluc24uZmllbGQ8MTUsIDU+KCk7IH0KKyAgICBzdGF0aWMgdWludDhfdCByczIo
SW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDIwLCA1PigpOyB9Cisg
ICAgc3RhdGljIHVpbnQ4X3Qgcm0oSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNu
LmZpZWxkPDEyLCAzPigpOyB9Cit9OworCit0ZW1wbGF0ZTxPcGNvZGUgb3Bjb2RlLCB1bnNpZ25l
ZCBmdW5jdDMsIHVuc2lnbmVkIGZ1bmN0NywgdHlwZW5hbWUgUmVnaXN0ZXJUeXBlcz4KK3N0cnVj
dCBSVHlwZUJhc2VXaXRoQXFSbCB7CisgICAgc3RhdGljX2Fzc2VydCh1bnNpZ25lZChvcGNvZGUp
IDwgKDEgPDwgNykpOworICAgIHN0YXRpY19hc3NlcnQoZnVuY3QzIDwgKDEgPDwgMykpOworICAg
IHN0YXRpY19hc3NlcnQoZnVuY3Q3IDwgKDEgPDwgNykpOworCisgICAgdXNpbmcgQmFzZSA9IFJU
eXBlQmFzZVdpdGhBcVJsPG9wY29kZSwgZnVuY3QzLCBmdW5jdDcsIFJlZ2lzdGVyVHlwZXM+Owor
ICAgIHVzaW5nIFJlZ2lzdGVycyA9IFJUeXBlUmVnaXN0ZXJzPFJlZ2lzdGVyVHlwZXM+OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUkRUeXBlLCB0eXBlbmFtZSBSUzFUeXBlLCB0eXBlbmFtZSBS
UzJUeXBlPgorICAgIHN0YXRpYyB1aW50MzJfdCBjb25zdHJ1Y3QoUkRUeXBlIHJkLCBSUzFUeXBl
IHJzMSwgUlMyVHlwZSByczIsIGNvbnN0IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxNZW1vcnlBY2Nl
c3M+JiBhY2Nlc3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBhcXJsID0gMDsKKyAgICAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IGFjY2VzcykKKyAgICAgICAgICAgIGFxcmwgfD0gdW5zaWduZWQo
dmFsdWUpOworICAgICAgICBBU1NFUlQoYXFybCA8ICgxIDw8IDIpKTsKKworICAgICAgICB1aW50
MzJfdCBpbnN0cnVjdGlvbiA9IDAKKyAgICAgICAgICAgIHwgKChmdW5jdDcgfCBhcXJsKSAgICA8
PCAyNSkKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMyKSA8PCAyMCkKKyAgICAgICAg
ICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMxKSA8PCAxNSkKKyAgICAgICAgICAgIHwgKGZ1bmN0MyAg
ICAgICAgICAgICA8PCAxMikKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocmQpICA8PCAg
NykKKyAgICAgICAgICAgIHwgdW5zaWduZWQob3Bjb2RlKTsKKyAgICAgICAgcmV0dXJuIGluc3Ry
dWN0aW9uOworICAgIH0KKworICAgIHN0YXRpYyBib29sIG1hdGNoZXMoSW5zdHJ1Y3Rpb25WYWx1
ZSBpbnNuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG9wY29kZSkgPT0gaW5zbi5v
cGNvZGUoKSAmJiBmdW5jdDMgPT0gaW5zbi5maWVsZDwxMiwgMz4oKSAmJiAoZnVuY3Q3ID4+IDIp
ID09IGluc24uZmllbGQ8MjcsIDU+KCk7CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ4X3QgcmQo
SW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDcsIDU+KCk7IH0KKyAg
ICBzdGF0aWMgdWludDhfdCByczEoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNu
LmZpZWxkPDE1LCA1PigpOyB9CisgICAgc3RhdGljIHVpbnQ4X3QgcnMyKEluc3RydWN0aW9uVmFs
dWUgaW5zbikgeyByZXR1cm4gaW5zbi5maWVsZDwyMCwgNT4oKTsgfQorICAgIHN0YXRpYyB1aW50
OF90IGFxcmwoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDI1LCAy
PigpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RlclR5cGVzPgorc3RydWN0IFI0
VHlwZVJlZ2lzdGVycyB7CisgICAgc3RhdGljX2Fzc2VydChSZWdpc3RlcnNCYXNlOjpTaXplPFJl
Z2lzdGVyVHlwZXM+KCkgPT0gNCk7CisgICAgdXNpbmcgUkQgPSBSZWdpc3RlcnNCYXNlOjpUeXBl
PDAsIFJlZ2lzdGVyVHlwZXM+OworICAgIHVzaW5nIFJTMSA9IFJlZ2lzdGVyc0Jhc2U6OlR5cGU8
MSwgUmVnaXN0ZXJUeXBlcz47CisgICAgdXNpbmcgUlMyID0gUmVnaXN0ZXJzQmFzZTo6VHlwZTwy
LCBSZWdpc3RlclR5cGVzPjsKKyAgICB1c2luZyBSUzMgPSBSZWdpc3RlcnNCYXNlOjpUeXBlPDMs
IFJlZ2lzdGVyVHlwZXM+OworfTsKKwordGVtcGxhdGU8T3Bjb2RlIG9wY29kZSwgdW5zaWduZWQg
ZnVuY3QyLCB0eXBlbmFtZSBSZWdpc3RlclR5cGVzPgorc3RydWN0IFI0VHlwZUJhc2VXaXRoUm91
bmRpbmdNb2RlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHVuc2lnbmVkKG9wY29kZSkgPCAoMSA8PCA3
KSk7CisgICAgc3RhdGljX2Fzc2VydChmdW5jdDIgPCAoMSA8PCAyKSk7CisKKyAgICB1c2luZyBC
YXNlID0gUjRUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8b3Bjb2RlLCBmdW5jdDIsIFJlZ2lzdGVy
VHlwZXM+OworICAgIHVzaW5nIFJlZ2lzdGVycyA9IFI0VHlwZVJlZ2lzdGVyczxSZWdpc3RlclR5
cGVzPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZSwg
dHlwZW5hbWUgUlMyVHlwZSwgdHlwZW5hbWUgUlMzVHlwZT4KKyAgICBzdGF0aWMgdWludDMyX3Qg
Y29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEsIFJTMlR5cGUgcnMyLCBSUzNUeXBlIHJz
MywgRlBSb3VuZGluZ01vZGUgcm0pCisgICAgeworICAgICAgICBBU1NFUlQodW5zaWduZWQocm0p
IDwgKDEgPDwgMykpOworCisgICAgICAgIHVpbnQzMl90IGluc3RydWN0aW9uID0gMAorICAgICAg
ICAgICAgfCAocmVnaXN0ZXJWYWx1ZShyczMpIDw8IDI3KQorICAgICAgICAgICAgfCAoZnVuY3Qy
ICAgICAgICAgICAgIDw8IDI1KQorICAgICAgICAgICAgfCAocmVnaXN0ZXJWYWx1ZShyczIpIDw8
IDIwKQorICAgICAgICAgICAgfCAocmVnaXN0ZXJWYWx1ZShyczEpIDw8IDE1KQorICAgICAgICAg
ICAgfCAodW5zaWduZWQocm0pICAgICAgIDw8IDEyKQorICAgICAgICAgICAgfCAocmVnaXN0ZXJW
YWx1ZShyZCkgIDw8ICA3KQorICAgICAgICAgICAgfCB1bnNpZ25lZChvcGNvZGUpOworICAgICAg
ICByZXR1cm4gaW5zdHJ1Y3Rpb247CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgbWF0Y2hlcyhJ
bnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAgICByZXR1cm4gdW5zaWduZWQob3Bj
b2RlKSA9PSBpbnNuLm9wY29kZSgpICYmIGZ1bmN0MiA9PSBpbnNuLmZpZWxkPDI1LCAyPigpOwor
ICAgIH0KKworICAgIHN0YXRpYyB1aW50OF90IHJkKEluc3RydWN0aW9uVmFsdWUgaW5zbikgeyBy
ZXR1cm4gaW5zbi5maWVsZDw3LCA1PigpOyB9CisgICAgc3RhdGljIHVpbnQ4X3QgcnMxKEluc3Ry
dWN0aW9uVmFsdWUgaW5zbikgeyByZXR1cm4gaW5zbi5maWVsZDwxNSwgNT4oKTsgfQorICAgIHN0
YXRpYyB1aW50OF90IHJzMihJbnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmll
bGQ8MjAsIDU+KCk7IH0KKyAgICBzdGF0aWMgdWludDhfdCByczMoSW5zdHJ1Y3Rpb25WYWx1ZSBp
bnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDI3LCA1PigpOyB9CisgICAgc3RhdGljIHVpbnQ4X3Qg
cm0oSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDEyLCAzPigpOyB9
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RlclR5cGVzPgorc3RydWN0IElUeXBlUmVn
aXN0ZXJzIHsKKyAgICBzdGF0aWNfYXNzZXJ0KFJlZ2lzdGVyc0Jhc2U6OlNpemU8UmVnaXN0ZXJU
eXBlcz4oKSA9PSAyKTsKKyAgICB1c2luZyBSRCA9IFJlZ2lzdGVyc0Jhc2U6OlR5cGU8MCwgUmVn
aXN0ZXJUeXBlcz47CisgICAgdXNpbmcgUlMxID0gUmVnaXN0ZXJzQmFzZTo6VHlwZTwxLCBSZWdp
c3RlclR5cGVzPjsKK307CisKK3RlbXBsYXRlPE9wY29kZSBvcGNvZGUsIHVuc2lnbmVkIGZ1bmN0
MywgdHlwZW5hbWUgUmVnaXN0ZXJUeXBlcz4KK3N0cnVjdCBJVHlwZUJhc2UgeworICAgIHN0YXRp
Y19hc3NlcnQodW5zaWduZWQob3Bjb2RlKSA8ICgxIDw8IDcpKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KGZ1bmN0MyA8ICgxIDw8IDMpKTsKKworICAgIHVzaW5nIEJhc2UgPSBJVHlwZUJhc2U8b3Bjb2Rl
LCBmdW5jdDMsIFJlZ2lzdGVyVHlwZXM+OworICAgIHVzaW5nIFJlZ2lzdGVycyA9IElUeXBlUmVn
aXN0ZXJzPFJlZ2lzdGVyVHlwZXM+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUkRUeXBlLCB0
eXBlbmFtZSBSUzFUeXBlPgorICAgIHN0YXRpYyB1aW50MzJfdCBjb25zdHJ1Y3QoUkRUeXBlIHJk
LCBSUzFUeXBlIHJzMSwgSUltbWVkaWF0ZSBpbW0pCisgICAgeworICAgICAgICB1aW50MzJfdCBp
bnN0cnVjdGlvbiA9IDAKKyAgICAgICAgICAgIHwgKGltbS5maWVsZDwwLCAxMj4oKSA8PCAyMCkK
KyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMxKSA8PCAxNSkKKyAgICAgICAgICAgIHwg
KGZ1bmN0MyAgICAgICAgICAgICA8PCAxMikKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVyVmFsdWUo
cmQpICA8PCAgNykKKyAgICAgICAgICAgIHwgdW5zaWduZWQob3Bjb2RlKTsKKyAgICAgICAgcmV0
dXJuIGluc3RydWN0aW9uOworICAgIH0KKworICAgIHN0YXRpYyBib29sIG1hdGNoZXMoSW5zdHJ1
Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG9wY29kZSkg
PT0gaW5zbi5vcGNvZGUoKSAmJiBmdW5jdDMgPT0gaW5zbi5maWVsZDwxMiwgMz4oKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdWludDhfdCByZChJbnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJu
IGluc24uZmllbGQ8NywgNT4oKTsgfQorICAgIHN0YXRpYyB1aW50OF90IHJzMShJbnN0cnVjdGlv
blZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmllbGQ8MTUsIDU+KCk7IH0KK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlZ2lzdGVyVHlwZXM+CitzdHJ1Y3QgU1R5cGVSZWdpc3RlcnMgeworICAg
IHN0YXRpY19hc3NlcnQoUmVnaXN0ZXJzQmFzZTo6U2l6ZTxSZWdpc3RlclR5cGVzPigpID09IDIp
OworICAgIHVzaW5nIFJTMSA9IFJlZ2lzdGVyc0Jhc2U6OlR5cGU8MCwgUmVnaXN0ZXJUeXBlcz47
CisgICAgdXNpbmcgUlMyID0gUmVnaXN0ZXJzQmFzZTo6VHlwZTwxLCBSZWdpc3RlclR5cGVzPjsK
K307CisKK3RlbXBsYXRlPE9wY29kZSBvcGNvZGUsIHVuc2lnbmVkIGZ1bmN0MywgdHlwZW5hbWUg
UmVnaXN0ZXJUeXBlcz4KK3N0cnVjdCBTVHlwZUJhc2UgeworICAgIHN0YXRpY19hc3NlcnQodW5z
aWduZWQob3Bjb2RlKSA8ICgxIDw8IDcpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGZ1bmN0MyA8ICgx
IDw8IDMpKTsKKworICAgIHVzaW5nIEJhc2UgPSBTVHlwZUJhc2U8b3Bjb2RlLCBmdW5jdDMsIFJl
Z2lzdGVyVHlwZXM+OworICAgIHVzaW5nIFJlZ2lzdGVycyA9IFNUeXBlUmVnaXN0ZXJzPFJlZ2lz
dGVyVHlwZXM+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUlMxVHlwZSwgdHlwZW5hbWUgUlMy
VHlwZT4KKyAgICBzdGF0aWMgdWludDMyX3QgY29uc3RydWN0KFJTMVR5cGUgcnMxLCBSUzJUeXBl
IHJzMiwgU0ltbWVkaWF0ZSBpbW0pCisgICAgeworICAgICAgICB1aW50MzJfdCBpbnN0cnVjdGlv
biA9IDAKKyAgICAgICAgICAgIHwgKGltbS5maWVsZDw1LCA3PigpICA8PCAyNSkKKyAgICAgICAg
ICAgIHwgKHJlZ2lzdGVyVmFsdWUocnMyKSA8PCAyMCkKKyAgICAgICAgICAgIHwgKHJlZ2lzdGVy
VmFsdWUocnMxKSA8PCAxNSkKKyAgICAgICAgICAgIHwgKGZ1bmN0MyAgICAgICAgICAgICA8PCAx
MikKKyAgICAgICAgICAgIHwgKGltbS5maWVsZDwwLCA1PigpICA8PCAgNykKKyAgICAgICAgICAg
IHwgdW5zaWduZWQob3Bjb2RlKTsKKyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIG1hdGNoZXMoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG9wY29kZSkgPT0gaW5zbi5vcGNvZGUoKSAmJiBmdW5j
dDMgPT0gaW5zbi5maWVsZDwxMiwgMz4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDhfdCBy
czEoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDE1LCA1PigpOyB9
CisgICAgc3RhdGljIHVpbnQ4X3QgcnMyKEluc3RydWN0aW9uVmFsdWUgaW5zbikgeyByZXR1cm4g
aW5zbi5maWVsZDwyMCwgNT4oKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0ZXJU
eXBlcz4KK3N0cnVjdCBCVHlwZVJlZ2lzdGVycyB7CisgICAgc3RhdGljX2Fzc2VydChSZWdpc3Rl
cnNCYXNlOjpTaXplPFJlZ2lzdGVyVHlwZXM+KCkgPT0gMik7CisgICAgdXNpbmcgUlMxID0gUmVn
aXN0ZXJzQmFzZTo6VHlwZTwwLCBSZWdpc3RlclR5cGVzPjsKKyAgICB1c2luZyBSUzIgPSBSZWdp
c3RlcnNCYXNlOjpUeXBlPDEsIFJlZ2lzdGVyVHlwZXM+OworfTsKKwordGVtcGxhdGU8T3Bjb2Rl
IG9wY29kZSwgdW5zaWduZWQgZnVuY3QzLCB0eXBlbmFtZSBSZWdpc3RlclR5cGVzPgorc3RydWN0
IEJUeXBlQmFzZSB7CisgICAgc3RhdGljX2Fzc2VydCh1bnNpZ25lZChvcGNvZGUpIDwgKDEgPDwg
NykpOworICAgIHN0YXRpY19hc3NlcnQoZnVuY3QzIDwgKDEgPDwgMykpOworCisgICAgdXNpbmcg
QmFzZSA9IFNUeXBlQmFzZTxvcGNvZGUsIGZ1bmN0MywgUmVnaXN0ZXJUeXBlcz47CisgICAgdXNp
bmcgUmVnaXN0ZXJzID0gU1R5cGVSZWdpc3RlcnM8UmVnaXN0ZXJUeXBlcz47CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSUzFUeXBlLCB0eXBlbmFtZSBSUzJUeXBlPgorICAgIHN0YXRpYyB1aW50
MzJfdCBjb25zdHJ1Y3QoUlMxVHlwZSByczEsIFJTMlR5cGUgcnMyLCBCSW1tZWRpYXRlIGltbSkK
KyAgICB7CisgICAgICAgIHVpbnQzMl90IGluc3RydWN0aW9uID0gMAorICAgICAgICAgICAgfCAo
aW1tLmZpZWxkPDEyLCAxPigpIDw8IDMxKQorICAgICAgICAgICAgfCAoaW1tLmZpZWxkPCA1LCA2
PigpIDw8IDI1KQorICAgICAgICAgICAgfCAocmVnaXN0ZXJWYWx1ZShyczIpIDw8IDIwKQorICAg
ICAgICAgICAgfCAocmVnaXN0ZXJWYWx1ZShyczEpIDw8IDE1KQorICAgICAgICAgICAgfCAoZnVu
Y3QzICAgICAgICAgICAgIDw8IDEyKQorICAgICAgICAgICAgfCAoaW1tLmZpZWxkPCAxLCA0Pigp
IDw8ICA4KQorICAgICAgICAgICAgfCAoaW1tLmZpZWxkPDExLCAxPigpIDw8ICA3KQorICAgICAg
ICAgICAgfCB1bnNpZ25lZChvcGNvZGUpOworICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb247Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgbWF0Y2hlcyhJbnN0cnVjdGlvblZhbHVlIGluc24pCisg
ICAgeworICAgICAgICByZXR1cm4gdW5zaWduZWQob3Bjb2RlKSA9PSBpbnNuLm9wY29kZSgpICYm
IGZ1bmN0MyA9PSBpbnNuLmZpZWxkPDEyLCAzPigpOworICAgIH0KKworICAgIHN0YXRpYyB1aW50
OF90IHJzMShJbnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmllbGQ8MTUsIDU+
KCk7IH0KKyAgICBzdGF0aWMgdWludDhfdCByczIoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJl
dHVybiBpbnNuLmZpZWxkPDIwLCA1PigpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdp
c3RlclR5cGVzPgorc3RydWN0IFVUeXBlUmVnaXN0ZXJzIHsKKyAgICBzdGF0aWNfYXNzZXJ0KFJl
Z2lzdGVyc0Jhc2U6OlNpemU8UmVnaXN0ZXJUeXBlcz4oKSA9PSAxKTsKKyAgICB1c2luZyBSRCA9
IFJlZ2lzdGVyc0Jhc2U6OlR5cGU8MCwgUmVnaXN0ZXJUeXBlcz47Cit9OworCit0ZW1wbGF0ZTxP
cGNvZGUgb3Bjb2RlLCB0eXBlbmFtZSBSZWdpc3RlclR5cGVzPgorc3RydWN0IFVUeXBlQmFzZSB7
CisgICAgc3RhdGljX2Fzc2VydCh1bnNpZ25lZChvcGNvZGUpIDwgKDEgPDwgNykpOworCisgICAg
dXNpbmcgQmFzZSA9IFVUeXBlQmFzZTxvcGNvZGUsIFJlZ2lzdGVyVHlwZXM+OworICAgIHVzaW5n
IFJlZ2lzdGVycyA9IFVUeXBlUmVnaXN0ZXJzPFJlZ2lzdGVyVHlwZXM+OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUkRUeXBlPgorICAgIHN0YXRpYyB1aW50MzJfdCBjb25zdHJ1Y3QoUkRUeXBl
IHJkLCBVSW1tZWRpYXRlIGltbSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGluc3RydWN0aW9u
ID0gaW1tLmltbSB8IChyZWdpc3RlclZhbHVlKHJkKSA8PCA3KSB8IHVuc2lnbmVkKG9wY29kZSk7
CisgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbjsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBt
YXRjaGVzKEluc3RydWN0aW9uVmFsdWUgaW5zbikKKyAgICB7CisgICAgICAgIHJldHVybiB1bnNp
Z25lZChvcGNvZGUpID09IGluc24ub3Bjb2RlKCk7CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ4
X3QgcmQoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKSB7IHJldHVybiBpbnNuLmZpZWxkPDcsIDU+KCk7
IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdGVyVHlwZXM+CitzdHJ1Y3QgSlR5cGVS
ZWdpc3RlcnMgeworICAgIHN0YXRpY19hc3NlcnQoUmVnaXN0ZXJzQmFzZTo6U2l6ZTxSZWdpc3Rl
clR5cGVzPigpID09IDEpOworICAgIHVzaW5nIFJEID0gUmVnaXN0ZXJzQmFzZTo6VHlwZTwwLCBS
ZWdpc3RlclR5cGVzPjsKK307CisKK3RlbXBsYXRlPE9wY29kZSBvcGNvZGUsIHR5cGVuYW1lIFJl
Z2lzdGVyVHlwZXM+CitzdHJ1Y3QgSlR5cGVCYXNlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHVuc2ln
bmVkKG9wY29kZSkgPCAoMSA8PCA3KSk7CisKKyAgICB1c2luZyBCYXNlID0gSlR5cGVCYXNlPG9w
Y29kZSwgUmVnaXN0ZXJUeXBlcz47CisgICAgdXNpbmcgUmVnaXN0ZXJzID0gVVR5cGVSZWdpc3Rl
cnM8UmVnaXN0ZXJUeXBlcz47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSRFR5cGU+CisgICAg
c3RhdGljIHVpbnQzMl90IGNvbnN0cnVjdChSRFR5cGUgcmQsIEpJbW1lZGlhdGUgaW1tKQorICAg
IHsKKyAgICAgICAgdWludDMyX3QgaW5zdHJ1Y3Rpb24gPSAwCisgICAgICAgICAgICB8IChpbW0u
ZmllbGQ8MjAsICAxPigpIDw8IDMxKQorICAgICAgICAgICAgfCAoaW1tLmZpZWxkPCAxLCAxMD4o
KSA8PCAyMSkKKyAgICAgICAgICAgIHwgKGltbS5maWVsZDwxMSwgIDE+KCkgPDwgMjApCisgICAg
ICAgICAgICB8IChpbW0uZmllbGQ8MTIsICA4PigpIDw8IDEyKQorICAgICAgICAgICAgfCAocmVn
aXN0ZXJWYWx1ZShyZCkgICA8PCAgNykKKyAgICAgICAgICAgIHwgdW5zaWduZWQob3Bjb2RlKTsK
KyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uOworICAgIH0KKworICAgIHN0YXRpYyBib29sIG1h
dGNoZXMoSW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuc2ln
bmVkKG9wY29kZSkgPT0gaW5zbi5vcGNvZGUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDhf
dCByZChJbnN0cnVjdGlvblZhbHVlIGluc24pIHsgcmV0dXJuIGluc24uZmllbGQ8NywgNT4oKTsg
fQorfTsKKworLy8gVGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucyB1dGlsaXpl
IHRoZSBiYXNlIGluc3RydWN0aW9uIHN0cnVjdHMsIGluIG1vc3QgY2FzZXMgc3BlY2lmeWluZyBl
dmVyeXRoaW5nCisvLyBuZWNlc3NhcnkgaW4gdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMgb2YgdGhl
IGJhc2UgaW5zdHJ1Y3Rpb24gc3RydWN0IHRoZXkgYXJlIGluaGVyaXRpbmcgZnJvbS4gRm9yIGVh
Y2ggaW5zdHJ1Y3Rpb24KKy8vIHRoZXJlJ3MgYWxzbyBhIHByZXR0eS1wcmludCBuYW1lIGNvbnN0
YW50IGluY2x1ZGVkIGluIHRoZSBkZWZpbml0aW9uLCBmb3IgdXNlIGJ5IHRoZSBkaXNhc3NlbWJs
ZXIuCisKKy8vIFJWMzJJIEJhc2UgSW5zdHJ1Y3Rpb24gU2V0CisKK3N0cnVjdCBMVUkgOiBVVHlw
ZUJhc2U8T3Bjb2RlOjpMVUksIFJlZ2lzdGVyc0Jhc2U6Okc+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibHVpIjsKK307CisKK3N0cnVjdCBBVUlQQyA6IFVUeXBl
QmFzZTxPcGNvZGU6OkFVSVBDLCBSZWdpc3RlcnNCYXNlOjpHPiB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImF1aXBjIjsKK307CisKK3N0cnVjdCBKQUwgOiBKVHlw
ZUJhc2U8T3Bjb2RlOjpKQUwsIFJlZ2lzdGVyc0Jhc2U6Okc+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiamFsIjsKK307CisKK3N0cnVjdCBKQUxSIDogSVR5cGVC
YXNlPE9wY29kZTo6SkFMUiwgMGIwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImphbHIiOworfTsKKworc3RydWN0IEJFUSA6
IEJUeXBlQmFzZTxPcGNvZGU6OkJSQU5DSCwgMGIwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImJlcSI7Cit9OworCitzdHJ1
Y3QgQk5FIDogQlR5cGVCYXNlPE9wY29kZTo6QlJBTkNILCAwYjAwMSwgUmVnaXN0ZXJzQmFzZTo6
R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYm5lIjsKK307
CisKK3N0cnVjdCBCTFQgOiBCVHlwZUJhc2U8T3Bjb2RlOjpCUkFOQ0gsIDBiMTAwLCBSZWdpc3Rl
cnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJi
bHQiOworfTsKKworc3RydWN0IEJHRSA6IEJUeXBlQmFzZTxPcGNvZGU6OkJSQU5DSCwgMGIxMDEs
IFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBu
YW1lID0gImJnZSI7Cit9OworCitzdHJ1Y3QgQkxUVSA6IEJUeXBlQmFzZTxPcGNvZGU6OkJSQU5D
SCwgMGIxMTAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBuYW1lID0gImJsdHUiOworfTsKKworc3RydWN0IEJHRVUgOiBCVHlwZUJhc2U8T3Bj
b2RlOjpCUkFOQ0gsIDBiMTExLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJiZ2V1IjsKK307CisKK3N0cnVjdCBMQiA6IElUeXBl
QmFzZTxPcGNvZGU6OkxPQUQsIDBiMDAwLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJsYiI7Cit9OworCitzdHJ1Y3QgTEggOiBJ
VHlwZUJhc2U8T3Bjb2RlOjpMT0FELCAwYjAwMSwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibGgiOworfTsKKworc3RydWN0IExX
IDogSVR5cGVCYXNlPE9wY29kZTo6TE9BRCwgMGIwMTAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImx3IjsKK307CisKK3N0cnVj
dCBMQlUgOiBJVHlwZUJhc2U8T3Bjb2RlOjpMT0FELCAwYjEwMCwgUmVnaXN0ZXJzQmFzZTo6R0c+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibGJ1IjsKK307CisK
K3N0cnVjdCBMSFUgOiBJVHlwZUJhc2U8T3Bjb2RlOjpMT0FELCAwYjEwMSwgUmVnaXN0ZXJzQmFz
ZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibGh1IjsK
K307CisKK3N0cnVjdCBTQiA6IFNUeXBlQmFzZTxPcGNvZGU6OlNUT1JFLCAwYjAwMCwgUmVnaXN0
ZXJzQmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAi
c2IiOworfTsKKworc3RydWN0IFNIIDogU1R5cGVCYXNlPE9wY29kZTo6U1RPUkUsIDBiMDAxLCBS
ZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFt
ZSA9ICJzaCI7Cit9OworCitzdHJ1Y3QgU1cgOiBTVHlwZUJhc2U8T3Bjb2RlOjpTVE9SRSwgMGIw
MTAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gInN3IjsKK307CisKK3N0cnVjdCBBRERJIDogSVR5cGVCYXNlPE9wY29kZTo6T1Bf
SU1NLCAwYjAwMCwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIqIG5hbWUgPSAiYWRkaSI7Cit9OworCitzdHJ1Y3QgU0xUSSA6IElUeXBlQmFzZTxP
cGNvZGU6Ok9QX0lNTSwgMGIwMTAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gInNsdGkiOworfTsKKworc3RydWN0IFNMVElVIDog
SVR5cGVCYXNlPE9wY29kZTo6T1BfSU1NLCAwYjAxMSwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAic2x0aXUiOworfTsKKworc3Ry
dWN0IFhPUkkgOiBJVHlwZUJhc2U8T3Bjb2RlOjpPUF9JTU0sIDBiMTAwLCBSZWdpc3RlcnNCYXNl
OjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJ4b3JpIjsK
K307CisKK3N0cnVjdCBPUkkgOiBJVHlwZUJhc2U8T3Bjb2RlOjpPUF9JTU0sIDBiMTEwLCBSZWdp
c3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9
ICJvcmkiOworfTsKKworc3RydWN0IEFOREkgOiBJVHlwZUJhc2U8T3Bjb2RlOjpPUF9JTU0sIDBi
MTExLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogbmFtZSA9ICJhbmRpIjsKK307CisKK3N0cnVjdCBTTExJIDogSVR5cGVCYXNlPE9wY29kZTo6
T1BfSU1NLCAwYjAwMSwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIG5hbWUgPSAic2xsaSI7CisKKyAgICB1c2luZyBCYXNlOjpjb25zdHJ1Y3Q7
CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2hpZnRBbW91bnQsIHR5cGVuYW1lIFJEVHlwZSwgdHlw
ZW5hbWUgUlMxVHlwZT4KKyAgICBzdGF0aWMgdWludDMyX3QgY29uc3RydWN0KFJEVHlwZSByZCwg
UlMxVHlwZSByczEpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNoaWZ0QW1vdW50IDwg
KDEgPDwgNikpOworICAgICAgICByZXR1cm4gQmFzZTo6Y29uc3RydWN0KHJkLCByczEsIElJbW1l
ZGlhdGU6OnY8SUltbWVkaWF0ZSwgKDBiMDAwMDAwIDw8IDYpIHwgc2hpZnRBbW91bnQ+KCkpOwor
ICAgIH0KK307CisKK3N0cnVjdCBTUkxJIDogSVR5cGVCYXNlPE9wY29kZTo6T1BfSU1NLCAwYjEw
MSwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IG5hbWUgPSAic3JsaSI7CisKKyAgICB1c2luZyBCYXNlOjpjb25zdHJ1Y3Q7CisgICAgdGVtcGxh
dGU8dW5zaWduZWQgc2hpZnRBbW91bnQsIHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlw
ZT4KKyAgICBzdGF0aWMgdWludDMyX3QgY29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEp
CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNoaWZ0QW1vdW50IDwgKDEgPDwgNikpOwor
ICAgICAgICByZXR1cm4gQmFzZTo6Y29uc3RydWN0KHJkLCByczEsIElJbW1lZGlhdGU6OnY8SUlt
bWVkaWF0ZSwgKDBiMDAwMDAwIDw8IDYpIHwgc2hpZnRBbW91bnQ+KCkpOworICAgIH0KK307CisK
K3N0cnVjdCBTUkFJIDogSVR5cGVCYXNlPE9wY29kZTo6T1BfSU1NLCAwYjEwMSwgUmVnaXN0ZXJz
QmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAic3Jh
aSI7CisKKyAgICB1c2luZyBCYXNlOjpjb25zdHJ1Y3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQg
c2hpZnRBbW91bnQsIHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZT4KKyAgICBzdGF0
aWMgdWludDMyX3QgY29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNoaWZ0QW1vdW50IDwgKDEgPDwgNikpOworICAgICAgICByZXR1
cm4gQmFzZTo6Y29uc3RydWN0KHJkLCByczEsIElJbW1lZGlhdGU6OnY8SUltbWVkaWF0ZSwgKDBi
MDEwMDAwIDw8IDYpIHwgc2hpZnRBbW91bnQ+KCkpOworICAgIH0KK307CisKK3N0cnVjdCBBREQg
OiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIwMDAsIDBiMDAwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6
R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImFkZCI7Cit9
OworCitzdHJ1Y3QgU1VCIDogUlR5cGVCYXNlPE9wY29kZTo6T1AsIDBiMDAwLCAwYjAxMDAwMDAs
IFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJzdWIiOworfTsKKworc3RydWN0IFNMTCA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QLCAw
YjAwMSwgMGIwMDAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAic2xsIjsKK307CisKK3N0cnVjdCBTTFQgOiBSVHlwZUJh
c2U8T3Bjb2RlOjpPUCwgMGIwMTAsIDBiMDAwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gInNsdCI7Cit9OworCitzdHJ1
Y3QgU0xUVSA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QLCAwYjAxMSwgMGIwMDAwMDAwLCBSZWdpc3Rl
cnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAi
c2x0dSI7Cit9OworCitzdHJ1Y3QgWE9SIDogUlR5cGVCYXNlPE9wY29kZTo6T1AsIDBiMTAwLCAw
YjAwMDAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogbmFtZSA9ICJ4b3IiOworfTsKKworc3RydWN0IFNSTCA6IFJUeXBlQmFzZTxPcGNv
ZGU6Ok9QLCAwYjEwMSwgMGIwMDAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAic3JsIjsKK307CisKK3N0cnVjdCBTUkEg
OiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIxMDEsIDBiMDEwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6
R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gInNyYSI7Cit9
OworCitzdHJ1Y3QgT1IgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIxMTAsIDBiMDAwMDAwMCwg
UmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBu
YW1lID0gIm9yIjsKK307CisKK3N0cnVjdCBBTkQgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIx
MTEsIDBiMDAwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBjaGFyKiBuYW1lID0gImFuZCI7Cit9OworCitzdHJ1Y3QgRkVOQ0UgOiBJVHlwZUJh
c2U8T3Bjb2RlOjpNSVNDX01FTSwgMGIwMDAsIFJlZ2lzdGVyc0Jhc2U6OlpaPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZlbmNlIjsKK307CisKK3N0cnVjdCBF
Q0FMTCA6IElUeXBlQmFzZTxPcGNvZGU6OlNZU1RFTSwgMGIwMDAsIFJlZ2lzdGVyc0Jhc2U6Olpa
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImVjYWxsIjsKK307
CisKK3N0cnVjdCBFQlJFQUsgOiBJVHlwZUJhc2U8T3Bjb2RlOjpTWVNURU0sIDBiMDAwLCBSZWdp
c3RlcnNCYXNlOjpaWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9
ICJlYnJlYWsiOworfTsKKworLy8gUlY2NEkgQmFzZSBJbnN0cnVjdGlvbiBTZXQgKGluIGFkZGl0
aW9uIHRvIFJWMzJJKQorCitzdHJ1Y3QgTFdVIDogSVR5cGVCYXNlPE9wY29kZTo6TE9BRCwgMGIx
MTAsIFJlZ2lzdGVyc0Jhc2U6OkdHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gImx3dSI7Cit9OworCitzdHJ1Y3QgTEQgOiBJVHlwZUJhc2U8T3Bjb2RlOjpMT0FE
LCAwYjAxMSwgUmVnaXN0ZXJzQmFzZTo6R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIG5hbWUgPSAibGQiOworfTsKKworc3RydWN0IFNEIDogU1R5cGVCYXNlPE9wY29kZTo6
U1RPUkUsIDBiMDExLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogbmFtZSA9ICJzZCI7Cit9OworCitzdHJ1Y3QgQURESVcgOiBJVHlwZUJhc2U8
T3Bjb2RlOjpPUF9JTU1fMzIsIDBiMDAwLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJhZGRpdyI7Cit9OworCitzdHJ1Y3QgU0xM
SVcgOiBJVHlwZUJhc2U8T3Bjb2RlOjpPUF9JTU1fMzIsIDBiMDAxLCBSZWdpc3RlcnNCYXNlOjpH
Rz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJzbGxpdyI7CisK
KyAgICB1c2luZyBCYXNlOjpjb25zdHJ1Y3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2hpZnRB
bW91bnQsIHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZT4KKyAgICBzdGF0aWMgdWlu
dDMyX3QgY29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEpCisgICAgeworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNoaWZ0QW1vdW50IDwgKDEgPDwgNSkpOworICAgICAgICByZXR1cm4gQmFz
ZTo6Y29uc3RydWN0KHJkLCByczEsIElJbW1lZGlhdGU6OnY8SUltbWVkaWF0ZSwgKDBiMDAwMDAw
MCA8PCA1KSB8IHNoaWZ0QW1vdW50PigpKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgU1JMSVcgOiBJ
VHlwZUJhc2U8T3Bjb2RlOjpPUF9JTU1fMzIsIDBiMTAxLCBSZWdpc3RlcnNCYXNlOjpHRz4gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJzcmxpdyI7CisKKyAgICB1
c2luZyBCYXNlOjpjb25zdHJ1Y3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2hpZnRBbW91bnQs
IHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZT4KKyAgICBzdGF0aWMgdWludDMyX3Qg
Y29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEpCisgICAgeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNoaWZ0QW1vdW50IDwgKDEgPDwgNSkpOworICAgICAgICByZXR1cm4gQmFzZTo6Y29u
c3RydWN0KHJkLCByczEsIElJbW1lZGlhdGU6OnY8SUltbWVkaWF0ZSwgKDBiMDAwMDAwMCA8PCA1
KSB8IHNoaWZ0QW1vdW50PigpKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgU1JBSVcgOiBJVHlwZUJh
c2U8T3Bjb2RlOjpPUF9JTU1fMzIsIDBiMTAxLCBSZWdpc3RlcnNCYXNlOjpHRz4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJzcmFpdyI7CisKKyAgICB1c2luZyBC
YXNlOjpjb25zdHJ1Y3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2hpZnRBbW91bnQsIHR5cGVu
YW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZT4KKyAgICBzdGF0aWMgdWludDMyX3QgY29uc3Ry
dWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNoaWZ0QW1vdW50IDwgKDEgPDwgNSkpOworICAgICAgICByZXR1cm4gQmFzZTo6Y29uc3RydWN0
KHJkLCByczEsIElJbW1lZGlhdGU6OnY8SUltbWVkaWF0ZSwgKDBiMDEwMDAwMCA8PCA1KSB8IHNo
aWZ0QW1vdW50PigpKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgQUREVyA6IFJUeXBlQmFzZTxPcGNv
ZGU6Ok9QXzMyLCAwYjAwMCwgMGIwMDAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYWRkdyI7Cit9OworCitzdHJ1Y3Qg
U1VCVyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QXzMyLCAwYjAwMCwgMGIwMTAwMDAwLCBSZWdpc3Rl
cnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAi
c3VidyI7Cit9OworCitzdHJ1Y3QgU0xMVyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QXzMyLCAwYjAw
MSwgMGIwMDAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIG5hbWUgPSAic2xsdyI7Cit9OworCitzdHJ1Y3QgU1JMVyA6IFJUeXBlQmFz
ZTxPcGNvZGU6Ok9QXzMyLCAwYjEwMSwgMGIwMDAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAic3JsdyI7Cit9OworCitz
dHJ1Y3QgU1JBVyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QXzMyLCAwYjEwMSwgMGIwMTAwMDAwLCBS
ZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5h
bWUgPSAic3JhdyI7Cit9OworCisvLyBSVjMyL1JWNjQgWmlmZW5jZWkgU3RhbmRhcmQgRXh0ZW5z
aW9uCisKK3N0cnVjdCBGRU5DRV9JIDogSVR5cGVCYXNlPE9wY29kZTo6TUlTQ19NRU0sIDBiMDAx
LCBSZWdpc3RlcnNCYXNlOjpaWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJmZW5jZS5pIjsKK307CisKKy8vIFJWMzJNIFN0YW5kYXJkIEV4dGVuc2lvbgorCitz
dHJ1Y3QgTVVMIDogUlR5cGVCYXNlPE9wY29kZTo6T1AsIDBiMDAwLCAwYjAwMDAwMDEsIFJlZ2lz
dGVyc0Jhc2U6OkdHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9
ICJtdWwiOworfTsKKworc3RydWN0IE1VTEggOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIwMDEs
IDBiMDAwMDAwMSwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gIm11bGgiOworfTsKKworc3RydWN0IE1VTEhTVSA6IFJUeXBlQmFz
ZTxPcGNvZGU6Ok9QLCAwYjAxMCwgMGIwMDAwMDAxLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibXVsaHN1IjsKK307CisKK3N0
cnVjdCBNVUxIVSA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QLCAwYjAxMSwgMGIwMDAwMDAxLCBSZWdp
c3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUg
PSAibXVsaHUiOworfTsKKworc3RydWN0IERJViA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QLCAwYjEw
MCwgMGIwMDAwMDAxLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIG5hbWUgPSAiZGl2IjsKK307CisKK3N0cnVjdCBESVZVIDogUlR5cGVCYXNl
PE9wY29kZTo6T1AsIDBiMTAxLCAwYjAwMDAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJkaXZ1IjsKK307CisKK3N0cnVj
dCBSRU0gOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUCwgMGIxMTAsIDBiMDAwMDAwMSwgUmVnaXN0ZXJz
QmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gInJl
bSI7Cit9OworCitzdHJ1Y3QgUkVNVSA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QLCAwYjExMSwgMGIw
MDAwMDAxLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIG5hbWUgPSAicmVtdSI7Cit9OworCisvLyBSVjY0TSBTdGFuZGFyZCBFeHRlbnNpb24g
KGluIGFkZGl0aW9uIHRvIFJWMzJNKQorCitzdHJ1Y3QgTVVMVyA6IFJUeXBlQmFzZTxPcGNvZGU6
Ok9QXzMyLCAwYjAwMCwgMGIwMDAwMDAxLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibXVsdyI7Cit9OworCitzdHJ1Y3QgRElW
VyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QXzMyLCAwYjEwMCwgMGIwMDAwMDAxLCBSZWdpc3RlcnNC
YXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZGl2
dyI7Cit9OworCitzdHJ1Y3QgRElWVVcgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF8zMiwgMGIxMDEs
IDBiMDAwMDAwMSwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gImRpdnV3IjsKK307CisKK3N0cnVjdCBSRU1XIDogUlR5cGVCYXNl
PE9wY29kZTo6T1BfMzIsIDBiMTEwLCAwYjAwMDAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJyZW13IjsKK307CisKK3N0
cnVjdCBSRU1VVyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QXzMyLCAwYjExMSwgMGIwMDAwMDAxLCBS
ZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5h
bWUgPSAicmVtdXciOworfTsKKworLy8gUlYzMkEgU3RhbmRhcmQgRXh0ZW5zaW9uCisKK3N0cnVj
dCBMUl9XIDogUlR5cGVCYXNlV2l0aEFxUmw8T3Bjb2RlOjpBTU8sIDBiMDEwLCAwYjAwMDEwMDAs
IFJlZ2lzdGVyc0Jhc2U6OkdHWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJsci53IjsKK307CisKK3N0cnVjdCBTQ19XIDogUlR5cGVCYXNlV2l0aEFxUmw8T3Bj
b2RlOjpBTU8sIDBiMDEwLCAwYjAwMDExMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJzYy53IjsKK307CisKK3N0cnVjdCBB
TU9TV0FQX1cgOiBSVHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTAsIDBiMDAwMDEw
MCwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gImFtb3N3YXAudyI7Cit9OworCitzdHJ1Y3QgQU1PQUREX1cgOiBSVHlwZUJhc2VX
aXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTAsIDBiMDAwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6R0dH
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImFtb2FkZC53IjsK
K307CisKK3N0cnVjdCBBTU9YT1JfVyA6IFJUeXBlQmFzZVdpdGhBcVJsPE9wY29kZTo6QU1PLCAw
YjAxMCwgMGIwMDEwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYW1veG9yLnciOworfTsKKworc3RydWN0IEFNT0FORF9X
IDogUlR5cGVCYXNlV2l0aEFxUmw8T3Bjb2RlOjpBTU8sIDBiMDEwLCAwYjAxMTAwMDAsIFJlZ2lz
dGVyc0Jhc2U6OkdHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9
ICJhbW9hbmQudyI7Cit9OworCitzdHJ1Y3QgQU1PT1JfVyA6IFJUeXBlQmFzZVdpdGhBcVJsPE9w
Y29kZTo6QU1PLCAwYjAxMCwgMGIwMTAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYW1vb3IudyI7Cit9OworCitzdHJ1
Y3QgQU1PTUlOX1cgOiBSVHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTAsIDBiMTAw
MDAwMCwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBuYW1lID0gImFtb21pbi53IjsKK307CisKK3N0cnVjdCBBTU9NQVhfVyA6IFJUeXBlQmFz
ZVdpdGhBcVJsPE9wY29kZTo6QU1PLCAwYjAxMCwgMGIxMDEwMDAwLCBSZWdpc3RlcnNCYXNlOjpH
R0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYW1vbWF4Lnci
OworfTsKKworc3RydWN0IEFNT01JTlVfVyA6IFJUeXBlQmFzZVdpdGhBcVJsPE9wY29kZTo6QU1P
LCAwYjAxMCwgMGIxMTAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYW1vbWludS53IjsKK307CisKK3N0cnVjdCBBTU9N
QVhVX1cgOiBSVHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTAsIDBiMTExMDAwMCwg
UmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBu
YW1lID0gImFtb21heHUudyI7Cit9OworCisvLyBSVjY0QSBTdGFuZGFyZCBFeHRlbnNpb24gKGlu
IGFkZGl0aW9uIHRvIFJWMzJBKQorCitzdHJ1Y3QgTFJfRCA6IFJUeXBlQmFzZVdpdGhBcVJsPE9w
Y29kZTo6QU1PLCAwYjAxMSwgMGIwMDAxMDAwLCBSZWdpc3RlcnNCYXNlOjpHR1o+IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAibHIuZCI7Cit9OworCitzdHJ1Y3Qg
U0NfRCA6IFJUeXBlQmFzZVdpdGhBcVJsPE9wY29kZTo6QU1PLCAwYjAxMSwgMGIwMDAxMTAwLCBS
ZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5h
bWUgPSAic2MuZCI7Cit9OworCitzdHJ1Y3QgQU1PU1dBUF9EIDogUlR5cGVCYXNlV2l0aEFxUmw8
T3Bjb2RlOjpBTU8sIDBiMDExLCAwYjAwMDAxMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJhbW9zd2FwLmQiOworfTsKKwor
c3RydWN0IEFNT0FERF9EIDogUlR5cGVCYXNlV2l0aEFxUmw8T3Bjb2RlOjpBTU8sIDBiMDExLCAw
YjAwMDAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogbmFtZSA9ICJhbW9hZGQuZCI7Cit9OworCitzdHJ1Y3QgQU1PWE9SX0QgOiBSVHlw
ZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTEsIDBiMDAxMDAwMCwgUmVnaXN0ZXJzQmFz
ZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImFtb3hv
ci5kIjsKK307CisKK3N0cnVjdCBBTU9BTkRfRCA6IFJUeXBlQmFzZVdpdGhBcVJsPE9wY29kZTo6
QU1PLCAwYjAxMSwgMGIwMTEwMDAwLCBSZWdpc3RlcnNCYXNlOjpHR0c+IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiYW1vYW5kLmQiOworfTsKKworc3RydWN0IEFN
T09SX0QgOiBSVHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTEsIDBiMDEwMDAwMCwg
UmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBu
YW1lID0gImFtb29yLmQiOworfTsKKworc3RydWN0IEFNT01JTl9EIDogUlR5cGVCYXNlV2l0aEFx
Umw8T3Bjb2RlOjpBTU8sIDBiMDExLCAwYjEwMDAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJhbW9taW4uZCI7Cit9Owor
CitzdHJ1Y3QgQU1PTUFYX0QgOiBSVHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTEs
IDBiMTAxMDAwMCwgUmVnaXN0ZXJzQmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gImFtb21heC5kIjsKK307CisKK3N0cnVjdCBBTU9NSU5VX0QgOiBS
VHlwZUJhc2VXaXRoQXFSbDxPcGNvZGU6OkFNTywgMGIwMTEsIDBiMTEwMDAwMCwgUmVnaXN0ZXJz
QmFzZTo6R0dHPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImFt
b21pbnUuZCI7Cit9OworCitzdHJ1Y3QgQU1PTUFYVV9EIDogUlR5cGVCYXNlV2l0aEFxUmw8T3Bj
b2RlOjpBTU8sIDBiMDExLCAwYjExMTAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdHRz4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJhbW9tYXh1LmQiOworfTsKKworLy8g
UlYzMkYgU3RhbmRhcmQgRXh0ZW5zaW9uCisKK3RlbXBsYXRlPEZDVlRUeXBlIFRvVHlwZSwgRkNW
VFR5cGUgRnJvbVR5cGU+CitzdHJ1Y3QgRkNWVEJhc2UgeworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2YWxpZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUkRSZWdpc3RlclR5
cGUsIHR5cGVuYW1lIFJTMVJlZ2lzdGVyVHlwZSwgdW5zaWduZWQgcnMyLCB1bnNpZ25lZCBmdW5j
dDcsIHR5cGVuYW1lIFJlZ2lzdGVyVHlwZXM+CitzdHJ1Y3QgRkNWVEltcGwgOiBSVHlwZUJhc2VX
aXRoUm91bmRpbmdNb2RlPE9wY29kZTo6T1BfRlAsIGZ1bmN0NywgUmVnaXN0ZXJUeXBlcz4gewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWxpZCA9IHRydWU7CisgICAgdXNpbmcgUkRUeXBl
ID0gUkRSZWdpc3RlclR5cGU7CisgICAgdXNpbmcgUlMxVHlwZSA9IFJTMVJlZ2lzdGVyVHlwZTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJEVHlwZSwgdHlwZW5hbWUgUlMxVHlwZT4KKyAgICBz
dGF0aWMgdWludDMyX3QgY29uc3RydWN0KFJEVHlwZSByZCwgUlMxVHlwZSByczEsIEZQUm91bmRp
bmdNb2RlIHJtKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChyczIgPCAoMSA8PCA1KSk7
CisgICAgICAgIHJldHVybiBSVHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlPE9wY29kZTo6T1BfRlAs
IGZ1bmN0NywgUmVnaXN0ZXJUeXBlcz46OmNvbnN0cnVjdChyZCwgcnMxLCBSZWdpc3RlcklEKHJz
MiksIHJtKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTxGTVZUeXBlIFRvVHlwZSwgRk1WVHlwZSBG
cm9tVHlwZT4KK3N0cnVjdCBGTVZCYXNlIHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFs
aWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJEUmVnaXN0ZXJUeXBlLCB0eXBl
bmFtZSBSUzFSZWdpc3RlclR5cGUsIHVuc2lnbmVkIGZ1bmN0NywgdHlwZW5hbWUgUmVnaXN0ZXJU
eXBlcz4KK3N0cnVjdCBGTVZJbXBsIDogUlR5cGVCYXNlPE9wY29kZTo6T1BfRlAsIDBiMDAwLCBm
dW5jdDcsIFJlZ2lzdGVyVHlwZXM+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsaWQg
PSB0cnVlOworICAgIHVzaW5nIFJEVHlwZSA9IFJEUmVnaXN0ZXJUeXBlOworICAgIHVzaW5nIFJT
MVR5cGUgPSBSUzFSZWdpc3RlclR5cGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSRFR5cGUs
IHR5cGVuYW1lIFJTMVR5cGU+CisgICAgc3RhdGljIHVpbnQzMl90IGNvbnN0cnVjdChSRFR5cGUg
cmQsIFJTMVR5cGUgcnMxKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJUeXBlQmFzZTxPcGNvZGU6
Ok9QX0ZQLCAwYjAwMCwgZnVuY3Q3LCBSZWdpc3RlclR5cGVzPjo6Y29uc3RydWN0KHJkLCByczEs
IFJlZ2lzdGVySUQoMCkpOworICAgIH0KK307CisKK3N0cnVjdCBGTFcgOiBJVHlwZUJhc2U8T3Bj
b2RlOjpMT0FEX0ZQLCAwYjAxMCwgUmVnaXN0ZXJzQmFzZTo6Rkc+IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZmx3IjsKK307CisKK3N0cnVjdCBGU1cgOiBTVHlw
ZUJhc2U8T3Bjb2RlOjpTVE9SRV9GUCwgMGIwMTAsIFJlZ2lzdGVyc0Jhc2U6OkdGPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZzdyI7Cit9OworCitzdHJ1Y3Qg
Rk1BRERfUyA6IFI0VHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlPE9wY29kZTo6TUFERCwgMGIwMCwg
UmVnaXN0ZXJzQmFzZTo6RkZGRj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJmbWFkZC5zIjsKK307CisKK3N0cnVjdCBGTVNVQl9TIDogUjRUeXBlQmFzZVdpdGhS
b3VuZGluZ01vZGU8T3Bjb2RlOjpNU1VCLCAwYjAwLCBSZWdpc3RlcnNCYXNlOjpGRkZGPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZtc3ViLnMiOworfTsKKwor
c3RydWN0IEZOTVNVQl9TIDogUjRUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8T3Bjb2RlOjpOTVNV
QiwgMGIwMCwgUmVnaXN0ZXJzQmFzZTo6RkZGRj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogbmFtZSA9ICJmbm1zdWIucyI7Cit9OworCitzdHJ1Y3QgRk5NQUREX1MgOiBSNFR5
cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTxPcGNvZGU6Ok5NQURELCAwYjAwLCBSZWdpc3RlcnNCYXNl
OjpGRkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZubWFk
ZC5zIjsKK307CisKK3N0cnVjdCBGQUREX1MgOiBSVHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlPE9w
Y29kZTo6T1BfRlAsIDBiMDAwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZhZGQucyI7Cit9OworCitzdHJ1Y3QgRlNV
Ql9TIDogUlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTxPcGNvZGU6Ok9QX0ZQLCAwYjAwMDAxMDAs
IFJlZ2lzdGVyc0Jhc2U6OkZGRj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJmc3ViLnMiOworfTsKKworc3RydWN0IEZNVUxfUyA6IFJUeXBlQmFzZVdpdGhSb3Vu
ZGluZ01vZGU8T3Bjb2RlOjpPUF9GUCwgMGIwMDAxMDAwLCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZm11bC5zIjsKK307CisK
K3N0cnVjdCBGRElWX1MgOiBSVHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlPE9wY29kZTo6T1BfRlAs
IDBiMDAwMTEwMCwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gImZkaXYucyI7Cit9OworCitzdHJ1Y3QgRlNRUlRfUyA6IFJUeXBl
QmFzZVdpdGhSb3VuZGluZ01vZGU8T3Bjb2RlOjpPUF9GUCwgMGIwMTAxMTAwLCBSZWdpc3RlcnNC
YXNlOjpGRlo+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZnNx
cnQucyI7Cit9OworCitzdHJ1Y3QgRlNHTkpfUyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAw
YjAwMCwgMGIwMDEwMDAwLCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZnNnbmoucyI7Cit9OworCitzdHJ1Y3QgRlNHTkpOX1Mg
OiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF9GUCwgMGIwMDEsIDBiMDAxMDAwMCwgUmVnaXN0ZXJzQmFz
ZTo6RkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZzZ25q
bi5zIjsKK307CisKK3N0cnVjdCBGU0dOSlhfUyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAw
YjAxMCwgMGIwMDEwMDAwLCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZnNnbmp4LnMiOworfTsKKworc3RydWN0IEZNSU5fUyA6
IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAwYjAwMCwgMGIwMDEwMTAwLCBSZWdpc3RlcnNCYXNl
OjpGRkY+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZm1pbi5z
IjsKK307CisKK3N0cnVjdCBGTUFYX1MgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF9GUCwgMGIwMDEs
IDBiMDAxMDEwMCwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gImZtYXgucyI7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNW
VEJhc2U8RkNWVFR5cGU6OlcsIEZDVlRUeXBlOjpTPiA6IEZDVlRJbXBsPFJlZ2lzdGVySUQsIEZQ
UmVnaXN0ZXJJRCwgMGIwMDAwMCwgMGIxMTAwMDAwLCBSZWdpc3RlcnNCYXNlOjpHRlo+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZmN2dC53LnMiOworfTsKK3Vz
aW5nIEZDVlRfV19TID0gRkNWVEJhc2U8RkNWVFR5cGU6OlcsIEZDVlRUeXBlOjpTPjsKKwordGVt
cGxhdGU8Pgorc3RydWN0IEZDVlRCYXNlPEZDVlRUeXBlOjpXVSwgRkNWVFR5cGU6OlM+IDogRkNW
VEltcGw8UmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklELCAwYjAwMDAxLCAwYjExMDAwMDAsIFJlZ2lz
dGVyc0Jhc2U6OkdGWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9
ICJmY3Z0Lnd1LnMiOworfTsKK3VzaW5nIEZDVlRfV1VfUyA9IEZDVlRCYXNlPEZDVlRUeXBlOjpX
VSwgRkNWVFR5cGU6OlM+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRk1WQmFzZTxGTVZUeXBlOjpY
LCBGTVZUeXBlOjpXPiA6IEZNVkltcGw8UmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklELCAwYjExMTAw
MDAsIFJlZ2lzdGVyc0Jhc2U6OkdGWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogbmFtZSA9ICJmbXYueC53IjsKK307Cit1c2luZyBGTVZfWF9XID0gRk1WQmFzZTxGTVZUeXBl
OjpYLCBGTVZUeXBlOjpXPjsKKworc3RydWN0IEZFUV9TIDogUlR5cGVCYXNlPE9wY29kZTo6T1Bf
RlAsIDBiMDEwLCAwYjEwMTAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdGRj4geworICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmZXEucyI7Cit9OworCitzdHJ1Y3QgRkxUX1Mg
OiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF9GUCwgMGIwMDEsIDBiMTAxMDAwMCwgUmVnaXN0ZXJzQmFz
ZTo6R0ZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZsdC5z
IjsKK307CisKK3N0cnVjdCBGTEVfUyA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAwYjAwMCwg
MGIxMDEwMDAwLCBSZWdpc3RlcnNCYXNlOjpHRkY+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIqIG5hbWUgPSAiZmxlLnMiOworfTsKKworc3RydWN0IEZDTEFTU19TIDogUlR5cGVC
YXNlPE9wY29kZTo6T1BfRlAsIDBiMDAxLCAwYjExMTAwMDAsIFJlZ2lzdGVyc0Jhc2U6OkdGWj4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmY2xhc3MucyI7Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8RkNWVFR5cGU6OlMsIEZDVlRUeXBlOjpX
PiA6IEZDVlRJbXBsPEZQUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgMGIwMDAwMCwgMGIxMTAxMDAw
LCBSZWdpc3RlcnNCYXNlOjpGR1o+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IG5hbWUgPSAiZmN2dC5zLnciOworfTsKK3VzaW5nIEZDVlRfU19XID0gRkNWVEJhc2U8RkNWVFR5
cGU6OlMsIEZDVlRUeXBlOjpXPjsKKwordGVtcGxhdGU8Pgorc3RydWN0IEZDVlRCYXNlPEZDVlRU
eXBlOjpTLCBGQ1ZUVHlwZTo6V1U+IDogRkNWVEltcGw8RlBSZWdpc3RlcklELCBSZWdpc3RlcklE
LCAwYjAwMDAxLCAwYjExMDEwMDAsIFJlZ2lzdGVyc0Jhc2U6OkZHWj4geworICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmY3Z0LnMud3UiOworfTsKK3VzaW5nIEZDVlRf
U19XVSA9IEZDVlRCYXNlPEZDVlRUeXBlOjpTLCBGQ1ZUVHlwZTo6V1U+OworCit0ZW1wbGF0ZTw+
CitzdHJ1Y3QgRk1WQmFzZTxGTVZUeXBlOjpXLCBGTVZUeXBlOjpYPiA6IEZNVkltcGw8RlBSZWdp
c3RlcklELCBSZWdpc3RlcklELCAwYjExMTEwMDAsIFJlZ2lzdGVyc0Jhc2U6OkZHWj4geworICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmbXYudy54IjsKK307Cit1c2lu
ZyBGTVZfV19YID0gRk1WQmFzZTxGTVZUeXBlOjpXLCBGTVZUeXBlOjpYPjsKKworLy8gUlY2NEYg
U3RhbmRhcmQgRXh0ZW5zaW9uIChpbiBhZGRpdGlvbiB0byBSVjMyRikKKwordGVtcGxhdGU8Pgor
c3RydWN0IEZDVlRCYXNlPEZDVlRUeXBlOjpMLCBGQ1ZUVHlwZTo6Uz4gOiBGQ1ZUSW1wbDxSZWdp
c3RlcklELCBGUFJlZ2lzdGVySUQsIDBiMDAwMTAsIDBiMTEwMDAwMCwgUmVnaXN0ZXJzQmFzZTo6
R0ZaPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZjdnQubC5z
IjsKK307Cit1c2luZyBGQ1ZUX0xfUyA9IEZDVlRCYXNlPEZDVlRUeXBlOjpMLCBGQ1ZUVHlwZTo6
Uz47CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6TFUsIEZDVlRUeXBl
OjpTPiA6IEZDVlRJbXBsPFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCwgMGIwMDAxMSwgMGIxMTAw
MDAwLCBSZWdpc3RlcnNCYXNlOjpHRlo+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNo
YXIqIG5hbWUgPSAiZmN2dC5sdS5zIjsKK307Cit1c2luZyBGQ1ZUX0xVX1MgPSBGQ1ZUQmFzZTxG
Q1ZUVHlwZTo6TFUsIEZDVlRUeXBlOjpTPjsKKwordGVtcGxhdGU8Pgorc3RydWN0IEZDVlRCYXNl
PEZDVlRUeXBlOjpTLCBGQ1ZUVHlwZTo6TD4gOiBGQ1ZUSW1wbDxGUFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIDBiMDAwMTAsIDBiMTEwMTAwMCwgUmVnaXN0ZXJzQmFzZTo6RkdaPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZjdnQucy5sIjsKK307Cit1c2luZyBG
Q1ZUX1NfTCA9IEZDVlRCYXNlPEZDVlRUeXBlOjpTLCBGQ1ZUVHlwZTo6TD47CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6UywgRkNWVFR5cGU6OkxVPiA6IEZDVlRJbXBs
PEZQUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgMGIwMDAxMSwgMGIxMTAxMDAwLCBSZWdpc3RlcnNC
YXNlOjpGR1o+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZmN2
dC5zLmx1IjsKK307Cit1c2luZyBGQ1ZUX1NfTFUgPSBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6UywgRkNW
VFR5cGU6OkxVPjsKKworLy8gUlYzMkQgU3RhbmRhcmQgRXh0ZW5zaW9uCisKK3N0cnVjdCBGTEQg
OiBJVHlwZUJhc2U8T3Bjb2RlOjpMT0FEX0ZQLCAwYjAxMSwgUmVnaXN0ZXJzQmFzZTo6Rkc+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZmxkIjsKK307CisKK3N0
cnVjdCBGU0QgOiBTVHlwZUJhc2U8T3Bjb2RlOjpTVE9SRV9GUCwgMGIwMTEsIFJlZ2lzdGVyc0Jh
c2U6OkdGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZzZCI7
Cit9OworCitzdHJ1Y3QgRk1BRERfRCA6IFI0VHlwZUJhc2VXaXRoUm91bmRpbmdNb2RlPE9wY29k
ZTo6TUFERCwgMGIwMSwgUmVnaXN0ZXJzQmFzZTo6RkZGRj4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogbmFtZSA9ICJmbWFkZC5kIjsKK307CisKK3N0cnVjdCBGTVNVQl9EIDog
UjRUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8T3Bjb2RlOjpNU1VCLCAwYjAxLCBSZWdpc3RlcnNC
YXNlOjpGRkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZt
c3ViLmQiOworfTsKKworc3RydWN0IEZOTVNVQl9EIDogUjRUeXBlQmFzZVdpdGhSb3VuZGluZ01v
ZGU8T3Bjb2RlOjpOTVNVQiwgMGIwMSwgUmVnaXN0ZXJzQmFzZTo6RkZGRj4geworICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmbm1zdWIuZCI7Cit9OworCitzdHJ1Y3Qg
Rk5NQUREX0QgOiBSNFR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTxPcGNvZGU6Ok5NQURELCAwYjAx
LCBSZWdpc3RlcnNCYXNlOjpGRkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gImZubWFkZC5kIjsKK307CisKK3N0cnVjdCBGQUREX0QgOiBSVHlwZUJhc2VXaXRo
Um91bmRpbmdNb2RlPE9wY29kZTo6T1BfRlAsIDBiMDAwMDAwMSwgUmVnaXN0ZXJzQmFzZTo6RkZG
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZhZGQuZCI7Cit9
OworCitzdHJ1Y3QgRlNVQl9EIDogUlR5cGVCYXNlV2l0aFJvdW5kaW5nTW9kZTxPcGNvZGU6Ok9Q
X0ZQLCAwYjAwMDAxMDEsIFJlZ2lzdGVyc0Jhc2U6OkZGRj4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogbmFtZSA9ICJmc3ViLmQiOworfTsKKworc3RydWN0IEZNVUxfRCA6IFJU
eXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8T3Bjb2RlOjpPUF9GUCwgMGIwMDAxMDAxLCBSZWdpc3Rl
cnNCYXNlOjpGRkY+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAi
Zm11bC5kIjsKK307CisKK3N0cnVjdCBGRElWX0QgOiBSVHlwZUJhc2VXaXRoUm91bmRpbmdNb2Rl
PE9wY29kZTo6T1BfRlAsIDBiMDAwMTEwMSwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZkaXYuZCI7Cit9OworCitzdHJ1Y3Qg
RlNRUlRfRCA6IFJUeXBlQmFzZVdpdGhSb3VuZGluZ01vZGU8T3Bjb2RlOjpPUF9GUCwgMGIwMTAx
MTAxLCBSZWdpc3RlcnNCYXNlOjpGRlo+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNo
YXIqIG5hbWUgPSAiZnNxcnQuZCI7Cit9OworCitzdHJ1Y3QgRlNHTkpfRCA6IFJUeXBlQmFzZTxP
cGNvZGU6Ok9QX0ZQLCAwYjAwMCwgMGIwMDEwMDAxLCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZnNnbmouZCI7Cit9OworCitz
dHJ1Y3QgRlNHTkpOX0QgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF9GUCwgMGIwMDEsIDBiMDAxMDAw
MSwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gImZzZ25qbi5kIjsKK307CisKK3N0cnVjdCBGU0dOSlhfRCA6IFJUeXBlQmFzZTxP
cGNvZGU6Ok9QX0ZQLCAwYjAxMCwgMGIwMDEwMDAxLCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZnNnbmp4LmQiOworfTsKKwor
c3RydWN0IEZNSU5fRCA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAwYjAwMCwgMGIwMDEwMTAx
LCBSZWdpc3RlcnNCYXNlOjpGRkY+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IG5hbWUgPSAiZm1pbi5kIjsKK307CisKK3N0cnVjdCBGTUFYX0QgOiBSVHlwZUJhc2U8T3Bjb2Rl
OjpPUF9GUCwgMGIwMDEsIDBiMDAxMDEwMSwgUmVnaXN0ZXJzQmFzZTo6RkZGPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZtYXguZCI7Cit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8RkNWVFR5cGU6OlMsIEZDVlRUeXBlOjpEPiA6IEZDVlRJbXBs
PEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklELCAwYjAwMDAxLCAwYjAxMDAwMDAsIFJlZ2lzdGVy
c0Jhc2U6OkZGWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJm
Y3Z0LnMuZCI7Cit9OwordXNpbmcgRkNWVF9TX0QgPSBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6UywgRkNW
VFR5cGU6OkQ+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8RkNWVFR5cGU6OkQsIEZD
VlRUeXBlOjpTPiA6IEZDVlRJbXBsPEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklELCAwYjAwMDAw
LCAwYjAxMDAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkZGWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogbmFtZSA9ICJmY3Z0LmQucyI7Cit9OwordXNpbmcgRkNWVF9EX1MgPSBGQ1ZU
QmFzZTxGQ1ZUVHlwZTo6RCwgRkNWVFR5cGU6OlM+OworCitzdHJ1Y3QgRkVRX0QgOiBSVHlwZUJh
c2U8T3Bjb2RlOjpPUF9GUCwgMGIwMTAsIDBiMTAxMDAwMSwgUmVnaXN0ZXJzQmFzZTo6R0ZGPiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZlcS5kIjsKK307CisK
K3N0cnVjdCBGTFRfRCA6IFJUeXBlQmFzZTxPcGNvZGU6Ok9QX0ZQLCAwYjAwMSwgMGIxMDEwMDAx
LCBSZWdpc3RlcnNCYXNlOjpHRkY+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IG5hbWUgPSAiZmx0LmQiOworfTsKKworc3RydWN0IEZMRV9EIDogUlR5cGVCYXNlPE9wY29kZTo6
T1BfRlAsIDBiMDAwLCAwYjEwMTAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkdGRj4geworICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmbGUuZCI7Cit9OworCitzdHJ1Y3QgRkNM
QVNTX0QgOiBSVHlwZUJhc2U8T3Bjb2RlOjpPUF9GUCwgMGIwMDEsIDBiMTExMDAwMSwgUmVnaXN0
ZXJzQmFzZTo6R0ZaPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0g
ImZjbGFzcy5kIjsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6
VywgRkNWVFR5cGU6OkQ+IDogRkNWVEltcGw8UmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklELCAwYjAw
MDAwLCAwYjExMDAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkdGWj4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogbmFtZSA9ICJmY3Z0LncuZCI7Cit9OwordXNpbmcgRkNWVF9XX0QgPSBG
Q1ZUQmFzZTxGQ1ZUVHlwZTo6VywgRkNWVFR5cGU6OkQ+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3Qg
RkNWVEJhc2U8RkNWVFR5cGU6OldVLCBGQ1ZUVHlwZTo6RD4gOiBGQ1ZUSW1wbDxSZWdpc3RlcklE
LCBGUFJlZ2lzdGVySUQsIDBiMDAwMDEsIDBiMTEwMDAwMSwgUmVnaXN0ZXJzQmFzZTo6R0ZaPiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZjdnQud3UuZCI7Cit9
OwordXNpbmcgRkNWVF9XVV9EID0gRkNWVEJhc2U8RkNWVFR5cGU6OldVLCBGQ1ZUVHlwZTo6RD47
CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6RCwgRkNWVFR5cGU6Olc+
IDogRkNWVEltcGw8RlBSZWdpc3RlcklELCBSZWdpc3RlcklELCAwYjAwMDAwLCAwYjExMDEwMDEs
IFJlZ2lzdGVyc0Jhc2U6OkZHWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
bmFtZSA9ICJmY3Z0LmQudyI7Cit9OwordXNpbmcgRkNWVF9EX1cgPSBGQ1ZUQmFzZTxGQ1ZUVHlw
ZTo6RCwgRkNWVFR5cGU6Olc+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8RkNWVFR5
cGU6OkQsIEZDVlRUeXBlOjpXVT4gOiBGQ1ZUSW1wbDxGUFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQs
IDBiMDAwMDEsIDBiMTEwMTAwMSwgUmVnaXN0ZXJzQmFzZTo6RkdaPiB7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBuYW1lID0gImZjdnQuZC53dSI7Cit9OwordXNpbmcgRkNWVF9E
X1dVID0gRkNWVEJhc2U8RkNWVFR5cGU6OkQsIEZDVlRUeXBlOjpXVT47CisKKy8vIFJWNjREIFN0
YW5kYXJkIEV4dGVuc2lvbiAoaW4gYWRkaXRpb24gdG8gUlYzMkQpCisKK3RlbXBsYXRlPD4KK3N0
cnVjdCBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6TCwgRkNWVFR5cGU6OkQ+IDogRkNWVEltcGw8UmVnaXN0
ZXJJRCwgRlBSZWdpc3RlcklELCAwYjAwMDEwLCAwYjExMDAwMDEsIFJlZ2lzdGVyc0Jhc2U6OkdG
Wj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmY3Z0LmwuZCI7
Cit9OwordXNpbmcgRkNWVF9MX0QgPSBGQ1ZUQmFzZTxGQ1ZUVHlwZTo6TCwgRkNWVFR5cGU6OkQ+
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8RkNWVFR5cGU6OkxVLCBGQ1ZUVHlwZTo6
RD4gOiBGQ1ZUSW1wbDxSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQsIDBiMDAwMTEsIDBiMTEwMDAw
MSwgUmVnaXN0ZXJzQmFzZTo6R0ZaPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBuYW1lID0gImZjdnQubHUuZCI7Cit9OwordXNpbmcgRkNWVF9MVV9EID0gRkNWVEJhc2U8RkNW
VFR5cGU6OkxVLCBGQ1ZUVHlwZTo6RD47CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBGTVZCYXNlPEZN
VlR5cGU6OlgsIEZNVlR5cGU6OkQ+IDogRk1WSW1wbDxSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQs
IDBiMTExMDAwMSwgUmVnaXN0ZXJzQmFzZTo6R0ZaPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBuYW1lID0gImZtdi54LmQiOworfTsKK3VzaW5nIEZNVl9YX0QgPSBGTVZCYXNl
PEZNVlR5cGU6OlgsIEZNVlR5cGU6OkQ+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRkNWVEJhc2U8
RkNWVFR5cGU6OkQsIEZDVlRUeXBlOjpMPiA6IEZDVlRJbXBsPEZQUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCwgMGIwMDAxMCwgMGIxMTAxMDAxLCBSZWdpc3RlcnNCYXNlOjpGR1o+IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG5hbWUgPSAiZmN2dC5kLmwiOworfTsKK3VzaW5nIEZD
VlRfRF9MID0gRkNWVEJhc2U8RkNWVFR5cGU6OkQsIEZDVlRUeXBlOjpMPjsKKwordGVtcGxhdGU8
Pgorc3RydWN0IEZDVlRCYXNlPEZDVlRUeXBlOjpELCBGQ1ZUVHlwZTo6TFU+IDogRkNWVEltcGw8
RlBSZWdpc3RlcklELCBSZWdpc3RlcklELCAwYjAwMDExLCAwYjExMDEwMDEsIFJlZ2lzdGVyc0Jh
c2U6OkZHWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFtZSA9ICJmY3Z0
LmQubHUiOworfTsKK3VzaW5nIEZDVlRfRF9MVSA9IEZDVlRCYXNlPEZDVlRUeXBlOjpELCBGQ1ZU
VHlwZTo6TFU+OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRk1WQmFzZTxGTVZUeXBlOjpELCBGTVZU
eXBlOjpYPiA6IEZNVkltcGw8RlBSZWdpc3RlcklELCBSZWdpc3RlcklELCAwYjExMTEwMDEsIFJl
Z2lzdGVyc0Jhc2U6OkZHWj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogbmFt
ZSA9ICJmbXYuZC54IjsKK307Cit1c2luZyBGTVZfRF9YID0gRk1WQmFzZTxGTVZUeXBlOjpELCBG
TVZUeXBlOjpYPjsKKworfSAvLyBuYW1lc3BhY2UgUklTQ1Y2NEluc3RydWN0aW9ucworCiBjbGFz
cyBSSVNDVjY0QXNzZW1ibGVyIHsKIHB1YmxpYzoKICAgICB1c2luZyBSZWdpc3RlcklEID0gUklT
Q1Y2NFJlZ2lzdGVyczo6UmVnaXN0ZXJJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvUklTQ1Y2NERpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGlzYXNzZW1ibGVyL1JJU0NWNjREaXNhc3NlbWJsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3YTE1MDJlZjM1YWNhMzdjZGRiOTM3ZGM5ZTZjYmZmYWZkNjdhNzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1JJU0NWNjREaXNhc3NlbWJs
ZXIuY3BwCkBAIC0wLDAgKzEsNjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShESVNBU1NFTUJMRVIpICYmIEVOQUJMRShSSVND
VjY0X0RJU0FTU0VNQkxFUikKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgor
I2luY2x1ZGUgIlJJU0NWNjRBc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDxtdXRleD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBSSVNDVjY0RGlzYXNzZW1i
bGVyIHsKKwordGVtcGxhdGU8c2l6ZV90IEJ1ZmZlclNpemU+CitzdHJ1Y3QgU3RyaW5nQnVmZmVy
QmFzZSB7CisgICAgY2hhciogZGF0YSgpIHsgcmV0dXJuIGJ1ZmZlci5kYXRhKCk7IH0KKyAgICBz
aXplX3Qgc2l6ZSgpIHsgcmV0dXJuIHNpemVvZihjaGFyKSAqIGJ1ZmZlci5zaXplKCk7IH0KKwor
ICAgIENTdHJpbmcgY3JlYXRlU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGJ1ZmZlcltCdWZmZXJT
aXplIC0gMV0gPSAnXDAnOworICAgICAgICByZXR1cm4geyBidWZmZXIuZGF0YSgpIH07CisgICAg
fQorCisgICAgc3RkOjphcnJheTxjaGFyLCBCdWZmZXJTaXplPiBidWZmZXI7Cit9OworCit1c2lu
ZyBTdHJpbmdCdWZmZXIgPSBTdHJpbmdCdWZmZXJCYXNlPDI1Nj47Cit1c2luZyBTbWFsbFN0cmlu
Z0J1ZmZlciA9IFN0cmluZ0J1ZmZlckJhc2U8MzI+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdp
c3RlclR5cGU+IGNvbnN0IGNoYXIqIHJlZ2lzdGVyTmFtZSh1aW50OF90KSA9IGRlbGV0ZTsKKwor
dGVtcGxhdGU8PgorY29uc3QgY2hhciogcmVnaXN0ZXJOYW1lPFJJU0NWNjRJbnN0cnVjdGlvbnM6
OlJlZ2lzdGVyc0Jhc2U6OkdUeXBlPih1aW50OF90IHZhbHVlKQoreworICAgIHN0YXRpYyBjb25z
dCBzdGQ6OmFycmF5PGNvbnN0IGNoYXIqLCAzMj4gc19ncFJlZ05hbWVzIHsKKyAgICAgICAgIngw
IiwgIngxIiwgIngyIiwgIngzIiwgIng0IiwgIng1IiwgIng2IiwgIng3IiwKKyAgICAgICAgIng4
IiwgIng5IiwgIngxMCIsICJ4MTEiLCAieDEyIiwgIngxMyIsICJ4MTQiLCAieDE1IiwKKyAgICAg
ICAgIngxNiIsICJ4MTciLCAieDE4IiwgIngxOSIsICJ4MjAiLCAieDIxIiwgIngyMiIsICJ4MjMi
LAorICAgICAgICAieDI0IiwgIngyNSIsICJ4MjYiLCAieDI3IiwgIngyOCIsICJ4MjkiLCAieDMw
IiwgIngzMSIsCisgICAgfTsKKworICAgIGlmICh2YWx1ZSA8IDMyKQorICAgICAgICByZXR1cm4g
c19ncFJlZ05hbWVzW3ZhbHVlXTsKKyAgICByZXR1cm4gIjx1bmtub3duPiI7Cit9CisKK3RlbXBs
YXRlPD4KK2NvbnN0IGNoYXIqIHJlZ2lzdGVyTmFtZTxSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpSZWdp
c3RlcnNCYXNlOjpGVHlwZT4odWludDhfdCB2YWx1ZSkKK3sKKyAgICBzdGF0aWMgY29uc3Qgc3Rk
OjphcnJheTxjb25zdCBjaGFyKiwgMzI+IHNfZnBSZWdOYW1lcyB7CisgICAgICAgICJmMCIsICJm
MSIsICJmMiIsICJmMyIsICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICJmOCIsICJm
OSIsICJmMTAiLCAiZjExIiwgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIsCisgICAgICAgICJm
MTYiLCAiZjE3IiwgImYxOCIsICJmMTkiLCAiZjIwIiwgImYyMSIsICJmMjIiLCAiZjIzIiwKKyAg
ICAgICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIsICJmMjgiLCAiZjI5IiwgImYzMCIsICJm
MzEiLAorICAgIH07CisKKyAgICBpZiAodmFsdWUgPCAzMikKKyAgICAgICAgcmV0dXJuIHNfZnBS
ZWdOYW1lc1t2YWx1ZV07CisgICAgcmV0dXJuICI8dW5rbm93bj4iOworfQorCitjb25zdCBjaGFy
KiByb3VuZGluZ01vZGUodWludDhfdCB2YWx1ZSkKK3sKKyAgICB1c2luZyBSSVNDVjY0SW5zdHJ1
Y3Rpb25zOjpGUFJvdW5kaW5nTW9kZTsKKworICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNl
IHVuc2lnbmVkKEZQUm91bmRpbmdNb2RlOjpSTkUpOgorICAgICAgICByZXR1cm4gInJuZSI7Cisg
ICAgY2FzZSB1bnNpZ25lZChGUFJvdW5kaW5nTW9kZTo6UlRaKToKKyAgICAgICAgcmV0dXJuICJy
dHoiOworICAgIGNhc2UgdW5zaWduZWQoRlBSb3VuZGluZ01vZGU6OlJETik6CisgICAgICAgIHJl
dHVybiAicmRuIjsKKyAgICBjYXNlIHVuc2lnbmVkKEZQUm91bmRpbmdNb2RlOjpSVVApOgorICAg
ICAgICByZXR1cm4gInJ1cCI7CisgICAgY2FzZSB1bnNpZ25lZChGUFJvdW5kaW5nTW9kZTo6Uk1N
KToKKyAgICAgICAgcmV0dXJuICJybW0iOworICAgIGNhc2UgdW5zaWduZWQoRlBSb3VuZGluZ01v
ZGU6OkRZTik6CisgICAgICAgIHJldHVybiAiZHluIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gIjx1bmtub3duPiI7Cit9CisKK1NtYWxsU3RyaW5n
QnVmZmVyIG1lbW9yeU9wZXJhdGlvbkZsYWdzKHVpbnQ4X3QgdmFsdWUpCit7CisgICAgdXNpbmcg
UklTQ1Y2NEluc3RydWN0aW9uczo6TWVtb3J5T3BlcmF0aW9uOworCisgICAgU21hbGxTdHJpbmdC
dWZmZXIgYnVmZmVyOworICAgIGlmICghIXZhbHVlKSB7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICIlcyVzJXMlcyIsCisgICAgICAgICAgICAodmFsdWUg
JiB1bnNpZ25lZChNZW1vcnlPcGVyYXRpb246OkkpKSA/ICJpIiA6ICIiLAorICAgICAgICAgICAg
KHZhbHVlICYgdW5zaWduZWQoTWVtb3J5T3BlcmF0aW9uOjpPKSkgPyAibyIgOiAiIiwKKyAgICAg
ICAgICAgICh2YWx1ZSAmIHVuc2lnbmVkKE1lbW9yeU9wZXJhdGlvbjo6UikpID8gInIiIDogIiIs
CisgICAgICAgICAgICAodmFsdWUgJiB1bnNpZ25lZChNZW1vcnlPcGVyYXRpb246OlcpKSA/ICJ3
IiA6ICIiKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSwgIjxub25lPiIpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK2NvbnN0IGNo
YXIqIGFxcmxGbGFncyh1aW50OF90IHZhbHVlKQoreworICAgIHVzaW5nIFJJU0NWNjRJbnN0cnVj
dGlvbnM6Ok1lbW9yeUFjY2VzczsKKworICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIDA6
CisgICAgICAgIHJldHVybiAiIjsKKyAgICBjYXNlIHVuc2lnbmVkKE1lbW9yeUFjY2Vzczo6QWNx
dWlyZSk6CisgICAgICAgIHJldHVybiAiLmFxIjsKKyAgICBjYXNlIHVuc2lnbmVkKE1lbW9yeUFj
Y2Vzczo6UmVsZWFzZSk6CisgICAgICAgIHJldHVybiAiLnJsIjsKKyAgICBjYXNlIHVuc2lnbmVk
KE1lbW9yeUFjY2Vzczo6QWNxdWlyZVJlbGVhc2UpOgorICAgICAgICByZXR1cm4gIi5hcXJsIjsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gIjx1bmtu
b3duPiI7Cit9CisKKy8vIEEgc2ltcGxlIHR5cGUgdGhhdCBoYW5kbGVzIGEgcGFyYW1ldGVyIHBh
Y2sgb2YgaW5zdHJ1Y3Rpb24gdHlwZXMsIGFsb25nIHdpdGggYSBjb250YWluczxUPigpIGhlbHBl
ciB0aGF0IHNlcnZlcyBhcyBhCisvLyBjb21waWxlLXRpbWUgY2hlY2sgd2hldGhlciBhIGdpdmVu
IHR5cGUgaXMgaW5jbHVkZWQgaW4gdGhhdCBwYXJhbWV0ZXIgcGFjay4KKwordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KK3N0cnVjdCBJbnN0cnVjdGlvbkxpc3QgeworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnRhaW5zKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAoc3RkOjppc19zYW1lX3Y8VCwgQXJncz4gfHwgLi4uKTsKKyAgICB9Cit9
OworCisvLyBUbyBlbmFibGUgc2hvd2luZyBzZW5zaWJsZSBkaXNhc3NlbWJseSwgZGlmZmVyZW50
IGluc3RydWN0aW9ucyBoYXZlIHRvIGJlIGZvcm1hdHRlZCBkaWZmZXJlbnRseS4gRWFjaCBzdWNo
IGZvcm1hdHRpbmcKKy8vIGNsYXNzIHNwZWNpZmllcyB0aGUgbGlzdCBvZiBpbnN0cnVjdGlvbnMg
aXQgY2FuIGZvcm1hdCwgYnV0IGdlbmVyYWxseSBpbnN0cnVjdGlvbnMgdW5kZXIgYSBnaXZlbiBm
b3JtYXR0ZXIgZmFsbCBpbnRvCisvLyB0aGUgc2FtZSBjbGFzcyBvZiBpbnN0cnVjdGlvbnMuIFRo
ZSBkaXNhc3NlbWJsZSgpIHN0YXRpYyBmdW5jdGlvbiByZXR1cm5zIGEgQ1N0cmluZyBob2xkaW5n
IHRoZSBmb3JtYXR0ZWQgZGF0YS4KKworc3RydWN0IFJUeXBlRGVmYXVsdEZvcm1hdHRpbmcgewor
ICAgIHVzaW5nIExpc3QgPSBJbnN0cnVjdGlvbkxpc3Q8CisgICAgICAgIFJJU0NWNjRJbnN0cnVj
dGlvbnM6OkFERCwgUklTQ1Y2NEluc3RydWN0aW9uczo6U1VCLAorICAgICAgICBSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpTTFQsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNMVFUsCisgICAgICAgIFJJU0NW
NjRJbnN0cnVjdGlvbnM6OlNMTCwgUklTQ1Y2NEluc3RydWN0aW9uczo6U1JMLCBSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpTUkEsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlhPUiwgUklTQ1Y2
NEluc3RydWN0aW9uczo6T1IsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkFORCwKKyAgICAgICAgUklT
Q1Y2NEluc3RydWN0aW9uczo6QUREVywgUklTQ1Y2NEluc3RydWN0aW9uczo6U1VCVywKKyAgICAg
ICAgUklTQ1Y2NEluc3RydWN0aW9uczo6U0xMVywgUklTQ1Y2NEluc3RydWN0aW9uczo6U1JMVywg
UklTQ1Y2NEluc3RydWN0aW9uczo6U1JBVywKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6
RlNHTkpfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6RlNHTkpfRCwKKyAgICAgICAgUklTQ1Y2NElu
c3RydWN0aW9uczo6RlNHTkpOX1MsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZTR05KTl9ELAorICAg
ICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGU0dOSlhfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6
RlNHTkpYX0QsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZNSU5fUywgUklTQ1Y2NElu
c3RydWN0aW9uczo6Rk1JTl9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGTUFYX1Ms
IFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZNQVhfRCwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9u
czo6RkVRX1MsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZFUV9ELAorICAgICAgICBSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpGTFRfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6RkxUX0QsCisgICAgICAgIFJJ
U0NWNjRJbnN0cnVjdGlvbnM6OkZMRV9TLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGTEVfRCwKKyAg
ICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6TVVMLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpNVUxI
LCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpNVUxIU1UsIFJJU0NWNjRJbnN0cnVjdGlvbnM6Ok1VTEhV
LAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpESVYsIFJJU0NWNjRJbnN0cnVjdGlvbnM6
OkRJVlUsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlJFTSwgUklTQ1Y2NEluc3RydWN0aW9uczo6UkVN
VSwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6TVVMVywgUklTQ1Y2NEluc3RydWN0aW9u
czo6RElWVywgUklTQ1Y2NEluc3RydWN0aW9uczo6RElWVVcsIFJJU0NWNjRJbnN0cnVjdGlvbnM6
OlJFTVcsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlJFTVVXPjsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgc3RhdGljIENTdHJpbmcgZGlzYXNzZW1ibGUoUklTQ1Y2NEluc3RydWN0aW9u
czo6SW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChM
aXN0Ojpjb250YWluczxUPigpKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyOworICAg
ICAgICBzbnByaW50ZihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAiJXMgJXMsICVzLCAl
cyIsCisgICAgICAgICAgICBUOjpuYW1lLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0
ZXJzOjpSRD4oVDo6cmQoaW5zbikpLAorICAgICAgICAgICAgcmVnaXN0ZXJOYW1lPHR5cGVuYW1l
IFQ6OlJlZ2lzdGVyczo6UlMxPihUOjpyczEoaW5zbikpLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUg
VDo6UmVnaXN0ZXJzOjpSUzI+KFQ6OnJzMihpbnNuKSkpOworICAgICAgICByZXR1cm4gYnVmZmVy
LmNyZWF0ZVN0cmluZygpOworICAgIH0KK307CisKK3N0cnVjdCBSVHlwZVIyRm9ybWF0dGluZyB7
CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDwKKyAgICAgICAgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6Rk1WX1hfVywgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk1WX1dfWCwKKyAgICAgICAg
UklTQ1Y2NEluc3RydWN0aW9uczo6Rk1WX1hfRCwgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk1WX0Rf
WCwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNMQVNTX1MsIFJJU0NWNjRJbnN0cnVj
dGlvbnM6OkZDTEFTU19EPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGlj
IENTdHJpbmcgZGlzYXNzZW1ibGUoUklTQ1Y2NEluc3RydWN0aW9uczo6SW5zdHJ1Y3Rpb25WYWx1
ZSBpbnNuKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChMaXN0Ojpjb250YWluczxUPigp
KTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyOworICAgICAgICBzbnByaW50ZihidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAiJXMgJXMsICVzIiwKKyAgICAgICAgICAgIFQ6Om5h
bWUsCisgICAgICAgICAgICByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSRD4o
VDo6cmQoaW5zbikpLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6
OnJzMShpbnNuKSkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmNyZWF0ZVN0cmluZygpOworICAg
IH0KK307CisKK3N0cnVjdCBSVHlwZVdpdGhSb3VuZGluZ01vZGVEZWZhdWx0Rm9ybWF0dGluZyB7
CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDwKKyAgICAgICAgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6RkFERF9TLAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGQUREX0QsCisg
ICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZTVUJfUywKKyAgICAgICAgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6RlNVQl9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGTVVMX1MsCisg
ICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZNVUxfRCwKKyAgICAgICAgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6RkRJVl9TLAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGRElWX0Q+Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJs
ZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworICAgICAgICB1aW50OF90
IHJtID0gVDo6cm0oaW5zbik7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAg
ICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgIiVzICVzLCAlcywgJXMl
cyVzIiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBUOjpSZWdp
c3RlcnM6OlJEPihUOjpyZChpbnNuKSksCisgICAgICAgICAgICByZWdpc3Rlck5hbWU8dHlwZW5h
bWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6OnJzMShpbnNuKSksIHJlZ2lzdGVyTmFtZTx0eXBlbmFt
ZSBUOjpSZWdpc3RlcnM6OlJTMj4oVDo6cnMyKGluc24pKSwKKyAgICAgICAgICAgIChybSA9PSB1
bnNpZ25lZChSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGUFJvdW5kaW5nTW9kZTo6RFlOKSkgPyAiIiA6
ICIsIHJtOiIsCisgICAgICAgICAgICAocm0gPT0gdW5zaWduZWQoUklTQ1Y2NEluc3RydWN0aW9u
czo6RlBSb3VuZGluZ01vZGU6OkRZTikpID8gIiIgOiByb3VuZGluZ01vZGUocm0pKTsKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jcmVhdGVTdHJpbmcoKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgUlR5
cGVXaXRoUm91bmRpbmdNb2RlRlNRUlRGb3JtYXR0aW5nIHsKKyAgICB1c2luZyBMaXN0ID0gSW5z
dHJ1Y3Rpb25MaXN0PAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGU1FSVF9TLCBSSVND
VjY0SW5zdHJ1Y3Rpb25zOjpGU1FSVF9EPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgc3RhdGljIENTdHJpbmcgZGlzYXNzZW1ibGUoUklTQ1Y2NEluc3RydWN0aW9uczo6SW5zdHJ1
Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChMaXN0Ojpjb250
YWluczxUPigpKTsKKyAgICAgICAgdWludDhfdCBybSA9IFQ6OnJtKGluc24pOworCisgICAgICAg
IFN0cmluZ0J1ZmZlciBidWZmZXI7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCksICIlcyAlcywgJXMlcyVzIiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIHJlZ2lz
dGVyTmFtZTx0eXBlbmFtZSBUOjpSZWdpc3RlcnM6OlJEPihUOjpyZChpbnNuKSksCisgICAgICAg
ICAgICByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6OnJzMShpbnNu
KSksCisgICAgICAgICAgICAocm0gPT0gdW5zaWduZWQoUklTQ1Y2NEluc3RydWN0aW9uczo6RlBS
b3VuZGluZ01vZGU6OkRZTikpID8gIiIgOiAiLCBybToiLAorICAgICAgICAgICAgKHJtID09IHVu
c2lnbmVkKFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZQUm91bmRpbmdNb2RlOjpEWU4pKSA/ICIiIDog
cm91bmRpbmdNb2RlKHJtKSk7CisgICAgICAgIHJldHVybiBidWZmZXIuY3JlYXRlU3RyaW5nKCk7
CisgICAgfQorfTsKKworc3RydWN0IFJUeXBlV2l0aFJvdW5kaW5nTW9kZUZDVlRGb3JtYXR0aW5n
IHsKKyAgICB1c2luZyBMaXN0ID0gSW5zdHJ1Y3Rpb25MaXN0PAorICAgICAgICBSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpGQ1ZUX1dfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNWVF9XVV9TLAorICAg
ICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGQ1ZUX1NfVywgUklTQ1Y2NEluc3RydWN0aW9uczo6
RkNWVF9TX1dVLAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGQ1ZUX1dfRCwgUklTQ1Y2
NEluc3RydWN0aW9uczo6RkNWVF9XVV9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpG
Q1ZUX0RfVywgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNWVF9EX1dVLAorICAgICAgICBSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpGQ1ZUX0xfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNWVF9MVV9TLAor
ICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGQ1ZUX1NfTCwgUklTQ1Y2NEluc3RydWN0aW9u
czo6RkNWVF9TX0xVLAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGQ1ZUX0xfRCwgUklT
Q1Y2NEluc3RydWN0aW9uczo6RkNWVF9MVV9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25z
OjpGQ1ZUX0RfTCwgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNWVF9EX0xVLAorICAgICAgICBSSVND
VjY0SW5zdHJ1Y3Rpb25zOjpGQ1ZUX1NfRCwgUklTQ1Y2NEluc3RydWN0aW9uczo6RkNWVF9EX1M+
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3Nl
bWJsZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworICAgICAgICB1aW50
OF90IHJtID0gVDo6cm0oaW5zbik7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAg
ICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgIiVzICVzLCAlcyVz
JXMiLAorICAgICAgICAgICAgVDo6bmFtZSwgcmVnaXN0ZXJOYW1lPHR5cGVuYW1lIFQ6OlJlZ2lz
dGVyczo6UkQ+KFQ6OnJkKGluc24pKSwgcmVnaXN0ZXJOYW1lPHR5cGVuYW1lIFQ6OlJlZ2lzdGVy
czo6UlMxPihUOjpyczEoaW5zbikpLAorICAgICAgICAgICAgKHJtID09IHVuc2lnbmVkKFJJU0NW
NjRJbnN0cnVjdGlvbnM6OkZQUm91bmRpbmdNb2RlOjpEWU4pKSA/ICIiIDogIiwgcm06IiwKKyAg
ICAgICAgICAgIChybSA9PSB1bnNpZ25lZChSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGUFJvdW5kaW5n
TW9kZTo6RFlOKSkgPyAiIiA6IHJvdW5kaW5nTW9kZShybSkpOworICAgICAgICByZXR1cm4gYnVm
ZmVyLmNyZWF0ZVN0cmluZygpOworICAgIH0KK307CisKK3N0cnVjdCBSVHlwZVdpdGhBcVJsRGVm
YXVsdEZvcm1hdHRpbmcgeworICAgIHVzaW5nIExpc3QgPSBJbnN0cnVjdGlvbkxpc3Q8CisgICAg
ICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNDX1csIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNDX0Qs
CisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkFNT1NXQVBfVywgUklTQ1Y2NEluc3RydWN0
aW9uczo6QU1PU1dBUF9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9BRERfVywg
UklTQ1Y2NEluc3RydWN0aW9uczo6QU1PQUREX0QsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlv
bnM6OkFNT1hPUl9XLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9YT1JfRCwKKyAgICAgICAgUklT
Q1Y2NEluc3RydWN0aW9uczo6QU1PQU5EX1csIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkFNT0FORF9E
LAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9PUl9XLCBSSVNDVjY0SW5zdHJ1Y3Rp
b25zOjpBTU9PUl9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9NSU5fVywgUklT
Q1Y2NEluc3RydWN0aW9uczo6QU1PTUlOX0QsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6
OkFNT01BWF9XLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9NQVhfRCwKKyAgICAgICAgUklTQ1Y2
NEluc3RydWN0aW9uczo6QU1PTUlOVV9XLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpBTU9NSU5VX0Qs
CisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkFNT01BWFVfVywgUklTQ1Y2NEluc3RydWN0
aW9uczo6QU1PTUFYVV9EPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGlj
IENTdHJpbmcgZGlzYXNzZW1ibGUoUklTQ1Y2NEluc3RydWN0aW9uczo6SW5zdHJ1Y3Rpb25WYWx1
ZSBpbnNuKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChMaXN0Ojpjb250YWluczxUPigp
KTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyOworICAgICAgICBzbnByaW50ZihidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAiJXMlcyAlcywgJXMsICVzIiwKKyAgICAgICAgICAg
IFQ6Om5hbWUsIGFxcmxGbGFncyhUOjphcXJsKGluc24pKSwgcmVnaXN0ZXJOYW1lPHR5cGVuYW1l
IFQ6OlJlZ2lzdGVyczo6UkQ+KFQ6OnJkKGluc24pKSwKKyAgICAgICAgICAgIHJlZ2lzdGVyTmFt
ZTx0eXBlbmFtZSBUOjpSZWdpc3RlcnM6OlJTMT4oVDo6cnMxKGluc24pKSwgcmVnaXN0ZXJOYW1l
PHR5cGVuYW1lIFQ6OlJlZ2lzdGVyczo6UlMyPihUOjpyczIoaW5zbikpKTsKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlci5jcmVhdGVTdHJpbmcoKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgUlR5cGVXaXRo
QXFSbExSRm9ybWF0dGluZyB7CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDwKKyAg
ICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6TFJfVywgUklTQ1Y2NEluc3RydWN0aW9uczo6TFJf
RD47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBDU3RyaW5nIGRpc2Fz
c2VtYmxlKFJJU0NWNjRJbnN0cnVjdGlvbnM6Okluc3RydWN0aW9uVmFsdWUgaW5zbikKKyAgICB7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoTGlzdDo6Y29udGFpbnM8VD4oKSk7CisKKyAgICAgICAg
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSwgIiVzJXMgJXMsICVzIiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIGFxcmxGbGFn
cyhUOjphcXJsKGluc24pKSwKKyAgICAgICAgICAgIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBUOjpS
ZWdpc3RlcnM6OlJEPihUOjpyZChpbnNuKSksIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBUOjpSZWdp
c3RlcnM6OlJTMT4oVDo6cnMxKGluc24pKSk7CisgICAgICAgIHJldHVybiBidWZmZXIuY3JlYXRl
U3RyaW5nKCk7CisgICAgfQorfTsKKworc3RydWN0IFI0VHlwZVdpdGhSb3VuZGluZ01vZGVEZWZh
dWx0Rm9ybWF0dGluZyB7CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDwKKyAgICAg
ICAgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk1BRERfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk1B
RERfRCwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk1TVUJfUywgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6Rk1TVUJfRCwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk5NU1VCX1Ms
IFJJU0NWNjRJbnN0cnVjdGlvbnM6OkZOTVNVQl9ELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rp
b25zOjpGTk1BRERfUywgUklTQ1Y2NEluc3RydWN0aW9uczo6Rk5NQUREX0Q+OworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJsZShSSVNDVjY0
SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworICAgICAgICB1aW50OF90IHJtID0gVDo6
cm0oaW5zbik7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgc25wcmlu
dGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgIiVzICVzLCAlcywgJXMsICVzJXMlcyIs
CisgICAgICAgICAgICBUOjpuYW1lLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJz
OjpSRD4oVDo6cmQoaW5zbikpLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpS
UzE+KFQ6OnJzMShpbnNuKSksCisgICAgICAgICAgICByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6
UmVnaXN0ZXJzOjpSUzI+KFQ6OnJzMihpbnNuKSksIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBUOjpS
ZWdpc3RlcnM6OlJTMz4oVDo6cnMzKGluc24pKSwKKyAgICAgICAgICAgIChybSA9PSB1bnNpZ25l
ZChSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGUFJvdW5kaW5nTW9kZTo6RFlOKSkgPyAiIiA6ICIsIHJt
OiIsCisgICAgICAgICAgICAocm0gPT0gdW5zaWduZWQoUklTQ1Y2NEluc3RydWN0aW9uczo6RlBS
b3VuZGluZ01vZGU6OkRZTikpID8gIiIgOiByb3VuZGluZ01vZGUocm0pKTsKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlci5jcmVhdGVTdHJpbmcoKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgSVR5cGVEZWZh
dWx0Rm9ybWF0dGluZyB7CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDwKKyAgICAg
ICAgUklTQ1Y2NEluc3RydWN0aW9uczo6QURESSwgUklTQ1Y2NEluc3RydWN0aW9uczo6U0xUSSwg
UklTQ1Y2NEluc3RydWN0aW9uczo6U0xUSVUsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6
OlhPUkksIFJJU0NWNjRJbnN0cnVjdGlvbnM6Ok9SSSwgUklTQ1Y2NEluc3RydWN0aW9uczo6QU5E
SSwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6U0xMSSwgUklTQ1Y2NEluc3RydWN0aW9u
czo6U1JMSSwgUklTQ1Y2NEluc3RydWN0aW9uczo6U1JBSSwKKyAgICAgICAgUklTQ1Y2NEluc3Ry
dWN0aW9uczo6QURESVcsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNMTElXLCBSSVNDVjY0SW5zdHJ1
Y3Rpb25zOjpTUkxJVywgUklTQ1Y2NEluc3RydWN0aW9uczo6U1JBSVc+OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJsZShSSVNDVjY0SW5z
dHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZm
ZXI7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICIlcyAl
cywgJXMsICVkIiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBU
OjpSZWdpc3RlcnM6OlJEPihUOjpyZChpbnNuKSksCisgICAgICAgICAgICByZWdpc3Rlck5hbWU8
dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6OnJzMShpbnNuKSksIFJJU0NWNjRJbnN0cnVj
dGlvbnM6OklJbW1lZGlhdGU6OnZhbHVlKGluc24pKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5j
cmVhdGVTdHJpbmcoKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgSVR5cGVJbW1lZGlhdGVBc09mZnNl
dEZvcm1hdHRpbmcgeworICAgIHVzaW5nIExpc3QgPSBJbnN0cnVjdGlvbkxpc3Q8CisgICAgICAg
IFJJU0NWNjRJbnN0cnVjdGlvbnM6OkpBTFIsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6
OkxCLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpMQlUsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlv
bnM6OkxILCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpMSFUsCisgICAgICAgIFJJU0NWNjRJbnN0cnVj
dGlvbnM6OkxXLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpMV1UsCisgICAgICAgIFJJU0NWNjRJbnN0
cnVjdGlvbnM6OkxELAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpGTFcsIFJJU0NWNjRJ
bnN0cnVjdGlvbnM6OkZMRD47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRp
YyBDU3RyaW5nIGRpc2Fzc2VtYmxlKFJJU0NWNjRJbnN0cnVjdGlvbnM6Okluc3RydWN0aW9uVmFs
dWUgaW5zbikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoTGlzdDo6Y29udGFpbnM8VD4o
KSk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgc25wcmludGYoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgIiVzICVzLCAlZCglcykiLAorICAgICAgICAgICAg
VDo6bmFtZSwgcmVnaXN0ZXJOYW1lPHR5cGVuYW1lIFQ6OlJlZ2lzdGVyczo6UkQ+KFQ6OnJkKGlu
c24pKSwKKyAgICAgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OklJbW1lZGlhdGU6OnZhbHVl
KGluc24pLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6OnJzMShp
bnNuKSkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmNyZWF0ZVN0cmluZygpOworICAgIH0KK307
CisKK3N0cnVjdCBTVHlwZURlZmF1bHRGb3JtYXR0aW5nIHsKKyAgICB1c2luZyBMaXN0ID0gSW5z
dHJ1Y3Rpb25MaXN0PAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpTQiwgUklTQ1Y2NElu
c3RydWN0aW9uczo6U0gsIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNXLCBSSVNDVjY0SW5zdHJ1Y3Rp
b25zOjpTRCwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6RlNXLCBSSVNDVjY0SW5zdHJ1
Y3Rpb25zOjpGU0Q+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0
cmluZyBkaXNhc3NlbWJsZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGlu
c24pCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOwor
CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXI7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCksICIlcyAlcywgJWQoJXMpIiwKKyAgICAgICAgICAgIFQ6Om5h
bWUsIHJlZ2lzdGVyTmFtZTx0eXBlbmFtZSBUOjpSZWdpc3RlcnM6OlJTMj4oVDo6cnMyKGluc24p
KSwKKyAgICAgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OlNJbW1lZGlhdGU6OnZhbHVlKGlu
c24pLCByZWdpc3Rlck5hbWU8dHlwZW5hbWUgVDo6UmVnaXN0ZXJzOjpSUzE+KFQ6OnJzMShpbnNu
KSkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmNyZWF0ZVN0cmluZygpOworICAgIH0KK307CisK
K3N0cnVjdCBCVHlwZURlZmF1bHRGb3JtYXR0aW5nIHsKKyAgICB1c2luZyBMaXN0ID0gSW5zdHJ1
Y3Rpb25MaXN0PAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpCRVEsCisgICAgICAgIFJJ
U0NWNjRJbnN0cnVjdGlvbnM6OkJORSwKKyAgICAgICAgUklTQ1Y2NEluc3RydWN0aW9uczo6QkxU
LAorICAgICAgICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpCR0UsCisgICAgICAgIFJJU0NWNjRJbnN0
cnVjdGlvbnM6OkJMVFUsCisgICAgICAgIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkJHRVU+OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJsZShS
SVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAgeworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworCisgICAgICAgIFN0cmluZ0J1
ZmZlciBidWZmZXI7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCksICIlcyAlcywgJXMsICVkIiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIHJlZ2lzdGVyTmFtZTx0
eXBlbmFtZSBUOjpSZWdpc3RlcnM6OlJTMT4oVDo6cnMxKGluc24pKSwgcmVnaXN0ZXJOYW1lPHR5
cGVuYW1lIFQ6OlJlZ2lzdGVyczo6UlMyPihUOjpyczIoaW5zbikpLAorICAgICAgICAgICAgUklT
Q1Y2NEluc3RydWN0aW9uczo6QkltbWVkaWF0ZTo6dmFsdWUoaW5zbikpOworICAgICAgICByZXR1
cm4gYnVmZmVyLmNyZWF0ZVN0cmluZygpOworICAgIH0KK307CisKK3N0cnVjdCBVVHlwZURlZmF1
bHRGb3JtYXR0aW5nIHsKKyAgICB1c2luZyBMaXN0ID0gSW5zdHJ1Y3Rpb25MaXN0PAorICAgICAg
ICBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpMVUksIFJJU0NWNjRJbnN0cnVjdGlvbnM6OkFVSVBDPjsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIENTdHJpbmcgZGlzYXNzZW1i
bGUoUklTQ1Y2NEluc3RydWN0aW9uczo6SW5zdHJ1Y3Rpb25WYWx1ZSBpbnNuKQorICAgIHsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChMaXN0Ojpjb250YWluczxUPigpKTsKKworICAgICAgICBTdHJp
bmdCdWZmZXIgYnVmZmVyOworICAgICAgICBzbnByaW50ZihidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpLCAiJXMgJXMsICV1IiwKKyAgICAgICAgICAgIFQ6Om5hbWUsIHJlZ2lzdGVyTmFtZTx0
eXBlbmFtZSBUOjpSZWdpc3RlcnM6OlJEPihUOjpyZChpbnNuKSksIFJJU0NWNjRJbnN0cnVjdGlv
bnM6OlVJbW1lZGlhdGU6OnZhbHVlKGluc24pKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jcmVh
dGVTdHJpbmcoKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgSlR5cGVEZWZhdWx0Rm9ybWF0dGluZyB7
CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDxSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpK
QUw+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNh
c3NlbWJsZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24pCisgICAg
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworCisgICAgICAg
IFN0cmluZ0J1ZmZlciBidWZmZXI7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCksICIlcyAlZCglcykiLAorICAgICAgICAgICAgVDo6bmFtZSwgUklTQ1Y2NElu
c3RydWN0aW9uczo6SkltbWVkaWF0ZTo6dmFsdWUoaW5zbiksIHJlZ2lzdGVyTmFtZTx0eXBlbmFt
ZSBUOjpSZWdpc3RlcnM6OlJEPihUOjpyZChpbnNuKSkpOworICAgICAgICByZXR1cm4gYnVmZmVy
LmNyZWF0ZVN0cmluZygpOworICAgIH0KK307CisKK3N0cnVjdCBGZW5jZUluc3RydWN0aW9uRm9y
bWF0dGluZyB7CisgICAgdXNpbmcgTGlzdCA9IEluc3RydWN0aW9uTGlzdDxSSVNDVjY0SW5zdHJ1
Y3Rpb25zOjpGRU5DRT47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBD
U3RyaW5nIGRpc2Fzc2VtYmxlKFJJU0NWNjRJbnN0cnVjdGlvbnM6Okluc3RydWN0aW9uVmFsdWUg
aW5zbikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoTGlzdDo6Y29udGFpbnM8VD4oKSk7
CisKKyAgICAgICAgYXV0byBpbW1WYWx1ZSA9IFJJU0NWNjRJbnN0cnVjdGlvbnM6OklJbW1lZGlh
dGU6OnZhbHVlKGluc24pOworICAgICAgICBhdXRvIHByZWRlY2Vzc29yRmxhZ3MgPSBtZW1vcnlP
cGVyYXRpb25GbGFncygoaW1tVmFsdWUgPj4gNCkgJiAoKDEgPDwgNCkgLSAxKSk7CisgICAgICAg
IGF1dG8gc3VjY2Vzc29yRmxhZ3MgPSBtZW1vcnlPcGVyYXRpb25GbGFncygoaW1tVmFsdWUgPj4g
MCkgJiAoKDEgPDwgNCkgLSAxKSk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAg
ICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgIiVzICVzLCVzIiwK
KyAgICAgICAgICAgIFQ6Om5hbWUsIHByZWRlY2Vzc29yRmxhZ3MuZGF0YSgpLCBzdWNjZXNzb3JG
bGFncy5kYXRhKCkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmNyZWF0ZVN0cmluZygpOworICAg
IH0KK307CisKK3N0cnVjdCBGZW5jZUlJbnN0cnVjdGlvbkZvcm1hdHRpbmcgeworICAgIHVzaW5n
IExpc3QgPSBJbnN0cnVjdGlvbkxpc3Q8UklTQ1Y2NEluc3RydWN0aW9uczo6RkVOQ0VfST47CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBDU3RyaW5nIGRpc2Fzc2VtYmxl
KFJJU0NWNjRJbnN0cnVjdGlvbnM6Okluc3RydWN0aW9uVmFsdWUpCisgICAgeworICAgICAgICBz
dGF0aWNfYXNzZXJ0KExpc3Q6OmNvbnRhaW5zPFQ+KCkpOworCisgICAgICAgIHJldHVybiB7IFQ6
Om5hbWUgfTsKKyAgICB9Cit9OworCitzdHJ1Y3QgRW52aXJvbm1lbnRJbnN0cnVjdGlvbkZvcm1h
dHRpbmcgeworICAgIHVzaW5nIExpc3QgPSBJbnN0cnVjdGlvbkxpc3Q8CisgICAgICAgIFJJU0NW
NjRJbnN0cnVjdGlvbnM6OkVDQUxMLCBSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpFQlJFQUs+OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJsZShS
SVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlKQorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChMaXN0Ojpjb250YWluczxUPigpKTsKKworICAgICAgICByZXR1cm4geyBUOjpu
YW1lIH07CisgICAgfQorfTsKKworLy8gVGhlIERpc2Fzc2VtYmxlciBzdHJ1Y3QgYmVsb3cgaGFz
IGEgdGVtcGxhdGUgcGFyYW1ldGVyIHBhY2ssIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGluc3RydWN0
aW9ucyB0aHJvdWdoIHdoaWNoIGl0CisvLyBzaG91bGQgY2FzY2FkZSBhbmQgZmluZCBhIG1hdGNo
aW5nIGluc3RydWN0aW9uIHR5cGUuIFdoZW4gZm91bmQsIHRoZSBEaXNhc3NlbWJseUZvcm1hdHRp
bmcgY2xhc3MgZmluZHMgYW4KKy8vIGFwcHJvcHJpYXRlIGZvcm1hdHRlciBhbmQgdXNlcyBpdCB0
byByZXR1cm4gdGhlIGRpc2Fzc2VtYmx5IHN0cmluZyBmb3IgdGhlIGdpdmVuIGluc3RydWN0aW9u
IHZhbHVlLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGb3JtYXR0aW5nVHlwZSwg
dHlwZW5hbWUuLi4gT3RoZXJGb3JtYXR0aW5nVHlwZXM+CitzdHJ1Y3QgRGlzYXNzZW1ibHlGb3Jt
YXR0aW5nSW1wbCB7CisgICAgdXNpbmcgVHlwZSA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxGb3JtYXR0
aW5nVHlwZTo6TGlzdDo6dGVtcGxhdGUgY29udGFpbnM8VD4oKSwKKyAgICAgICAgRm9ybWF0dGlu
Z1R5cGUsCisgICAgICAgIHR5cGVuYW1lIERpc2Fzc2VtYmx5Rm9ybWF0dGluZ0ltcGw8VCwgT3Ro
ZXJGb3JtYXR0aW5nVHlwZXMuLi4+OjpUeXBlPjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEZvcm1hdHRpbmdUeXBlPgorc3RydWN0IERpc2Fzc2VtYmx5Rm9ybWF0dGluZ0lt
cGw8VCwgRm9ybWF0dGluZ1R5cGU+IHsKKyAgICB1c2luZyBUeXBlID0gRm9ybWF0dGluZ1R5cGU7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IERpc2Fzc2VtYmx5Rm9ybWF0dGlu
ZyB7CisgICAgdXNpbmcgVHlwZSA9IHR5cGVuYW1lIERpc2Fzc2VtYmx5Rm9ybWF0dGluZ0ltcGw8
VCwKKyAgICAgICAgUlR5cGVEZWZhdWx0Rm9ybWF0dGluZywKKyAgICAgICAgUlR5cGVSMkZvcm1h
dHRpbmcsCisgICAgICAgIFJUeXBlV2l0aFJvdW5kaW5nTW9kZURlZmF1bHRGb3JtYXR0aW5nLAor
ICAgICAgICBSVHlwZVdpdGhSb3VuZGluZ01vZGVGU1FSVEZvcm1hdHRpbmcsCisgICAgICAgIFJU
eXBlV2l0aFJvdW5kaW5nTW9kZUZDVlRGb3JtYXR0aW5nLAorICAgICAgICBSVHlwZVdpdGhBcVJs
RGVmYXVsdEZvcm1hdHRpbmcsCisgICAgICAgIFJUeXBlV2l0aEFxUmxMUkZvcm1hdHRpbmcsCisg
ICAgICAgIFI0VHlwZVdpdGhSb3VuZGluZ01vZGVEZWZhdWx0Rm9ybWF0dGluZywKKyAgICAgICAg
SVR5cGVEZWZhdWx0Rm9ybWF0dGluZywKKyAgICAgICAgSVR5cGVJbW1lZGlhdGVBc09mZnNldEZv
cm1hdHRpbmcsCisgICAgICAgIFNUeXBlRGVmYXVsdEZvcm1hdHRpbmcsCisgICAgICAgIEJUeXBl
RGVmYXVsdEZvcm1hdHRpbmcsCisgICAgICAgIFVUeXBlRGVmYXVsdEZvcm1hdHRpbmcsCisgICAg
ICAgIEpUeXBlRGVmYXVsdEZvcm1hdHRpbmcsCisgICAgICAgIEZlbmNlSW5zdHJ1Y3Rpb25Gb3Jt
YXR0aW5nLAorICAgICAgICBGZW5jZUlJbnN0cnVjdGlvbkZvcm1hdHRpbmcsCisgICAgICAgIEVu
dmlyb25tZW50SW5zdHJ1Y3Rpb25Gb3JtYXR0aW5nPjo6VHlwZTsKKworICAgIHN0YXRpYyBDU3Ry
aW5nIGRpc2Fzc2VtYmxlKFJJU0NWNjRJbnN0cnVjdGlvbnM6Okluc3RydWN0aW9uVmFsdWUgaW5z
bikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoVHlwZTo6TGlzdDo6dGVtcGxhdGUgY29u
dGFpbnM8VD4oKSk7CisgICAgICAgIHJldHVybiBUeXBlOjp0ZW1wbGF0ZSBkaXNhc3NlbWJsZTxU
PihpbnNuKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnNuVHlwZSwgdHlwZW5h
bWUuLi4gT3RoZXJJbnNuVHlwZXM+CitzdHJ1Y3QgRGlzYXNzZW1ibGVyIHsKKyAgICBzdGF0aWMg
Q1N0cmluZyBkaXNhc3NlbWJsZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVl
IGluc24pCisgICAgeworICAgICAgICBpZiAoSW5zblR5cGU6Om1hdGNoZXMoaW5zbikpCisgICAg
ICAgICAgICByZXR1cm4gRGlzYXNzZW1ibHlGb3JtYXR0aW5nPEluc25UeXBlPjo6ZGlzYXNzZW1i
bGUoaW5zbik7CisgICAgICAgIHJldHVybiBEaXNhc3NlbWJsZXI8T3RoZXJJbnNuVHlwZXMuLi4+
OjpkaXNhc3NlbWJsZShpbnNuKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnNu
VHlwZT4KK3N0cnVjdCBEaXNhc3NlbWJsZXI8SW5zblR5cGU+IHsKKyAgICBzdGF0aWMgQ1N0cmlu
ZyBkaXNhc3NlbWJsZShSSVNDVjY0SW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvblZhbHVlIGluc24p
CisgICAgeworICAgICAgICBpZiAoSW5zblR5cGU6Om1hdGNoZXMoaW5zbikpCisgICAgICAgICAg
ICByZXR1cm4gRGlzYXNzZW1ibHlGb3JtYXR0aW5nPEluc25UeXBlPjo6ZGlzYXNzZW1ibGUoaW5z
bik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorfTsKKworQ1N0cmluZyBkaXNhc3NlbWJs
ZU9wY29kZSh1aW50MzJfdCAqcGMpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFJJU0NWNjRJbnN0
cnVjdGlvbnM7CisgICAgdXNpbmcgRGlzYXNzZW1ibGVyVHlwZSA9IERpc2Fzc2VtYmxlcjwKKyAg
ICAgICAgLy8gUlYzMkkgQmFzZSBJbnN0cnVjdGlvbiBTZXQKKyAgICAgICAgTFVJLCBBVUlQQywg
SkFMLCBKQUxSLAorICAgICAgICBCRVEsIEJORSwgQkxULCBCR0UsIEJMVFUsIEJHRVUsCisgICAg
ICAgIExCLCBMSCwgTFcsIExCVSwgTEhVLAorICAgICAgICBTQiwgU0gsIFNXLAorICAgICAgICBB
RERJLCBTTFRJLCBTTFRJVSwgWE9SSSwgT1JJLCBBTkRJLCBTTExJLCBTUkxJLCBTUkFJLAorICAg
ICAgICBBREQsIFNVQiwgU0xMLCBTTFQsIFNMVFUsIFhPUiwgU1JMLCBTUkEsIE9SLCBBTkQsCisg
ICAgICAgIEZFTkNFLCBFQ0FMTCwgRUJSRUFLLAorICAgICAgICAvLyBSVjY0SSBCYXNlIEluc3Ry
dWN0aW9uIFNldCAoaW4gYWRkaXRpb24gdG8gUlYzMkkpCisgICAgICAgIExXVSwgTEQsIFNELAor
ICAgICAgICBBRERJVywgU0xMSVcsIFNSTElXLCBTUkFJVywKKyAgICAgICAgQUREVywgU1VCVywg
U0xMVywgU1JMVywgU1JBVywKKyAgICAgICAgLy8gUlYzMi9SVjY0IFppZmVuY2VpIFN0YW5kYXJk
IEV4dGVuc2lvbgorICAgICAgICBGRU5DRV9JLAorICAgICAgICAvLyBSVjMyTSBTdGFuZGFyZCBF
eHRlbnNpb24KKyAgICAgICAgTVVMLCBNVUxILCBNVUxIU1UsIE1VTEhVLAorICAgICAgICBESVYs
IERJVlUsIFJFTSwgUkVNVSwKKyAgICAgICAgLy8gUlY2NE0gU3RhbmRhcmQgRXh0ZW5zaW9uIChp
biBhZGRpdGlvbiB0byBSVjMyTSkKKyAgICAgICAgTVVMVywgRElWVywgRElWVVcsIFJFTVcsIFJF
TVVXLAorICAgICAgICAvLyBSVjMyQSBTdGFuZGFyZCBFeHRlbnNpb24KKyAgICAgICAgTFJfVywg
U0NfVywKKyAgICAgICAgQU1PU1dBUF9XLCBBTU9BRERfVywgQU1PWE9SX1csIEFNT0FORF9XLCBB
TU9PUl9XLCBBTU9NSU5fVywgQU1PTUFYX1csIEFNT01JTlVfVywgQU1PTUFYVV9XLAorICAgICAg
ICAvLyBSVjY0QSBTdGFuZGFyZCBFeHRlbnNpb24gKGluIGFkZGl0aW9uIHRvIFJWMzJBKQorICAg
ICAgICBMUl9ELCBTQ19ELAorICAgICAgICBBTU9TV0FQX0QsIEFNT0FERF9ELCBBTU9YT1JfRCwg
QU1PQU5EX0QsIEFNT09SX0QsIEFNT01JTl9ELCBBTU9NQVhfRCwgQU1PTUlOVV9ELCBBTU9NQVhV
X0QsCisgICAgICAgIC8vIFJWMzJGIFN0YW5kYXJkIEV4dGVuc2lvbgorICAgICAgICBGTFcsIEZT
VywKKyAgICAgICAgRk1BRERfUywgRk1TVUJfUywgRk5NU1VCX1MsIEZOTUFERF9TLAorICAgICAg
ICBGQUREX1MsIEZTVUJfUywgRk1VTF9TLCBGRElWX1MsIEZTUVJUX1MsCisgICAgICAgIEZTR05K
X1MsIEZTR05KTl9TLCBGU0dOSlhfUywgRk1JTl9TLCBGTUFYX1MsCisgICAgICAgIEZDVlRfV19T
LCBGQ1ZUX1dVX1MsIEZNVl9YX1csCisgICAgICAgIEZFUV9TLCBGTFRfUywgRkxFX1MsIEZDTEFT
U19TLAorICAgICAgICBGQ1ZUX1NfVywgRkNWVF9TX1dVLCBGTVZfV19YLAorICAgICAgICAvLyBS
VjY0RiBTdGFuZGFyZCBFeHRlbnNpb24gKGluIGFkZGl0aW9uIHRvIFJWMzJGKQorICAgICAgICBG
Q1ZUX0xfUywgRkNWVF9MVV9TLCBGQ1ZUX1NfTCwgRkNWVF9TX0xVLAorICAgICAgICAvLyBSVjMy
RCBTdGFuZGFyZCBFeHRlbnNpb24KKyAgICAgICAgRkxELCBGU0QsCisgICAgICAgIEZNQUREX0Qs
IEZNU1VCX0QsIEZOTVNVQl9ELCBGTk1BRERfRCwKKyAgICAgICAgRkFERF9ELCBGU1VCX0QsIEZN
VUxfRCwgRkRJVl9ELCBGU1FSVF9ELAorICAgICAgICBGU0dOSl9ELCBGU0dOSk5fRCwgRlNHTkpY
X0QsIEZNSU5fRCwgRk1BWF9ELAorICAgICAgICBGQ1ZUX1NfRCwgRkNWVF9EX1MsCisgICAgICAg
IEZFUV9ELCBGTFRfRCwgRkxFX0QsIEZDTEFTU19ELAorICAgICAgICBGQ1ZUX1dfRCwgRkNWVF9X
VV9ELCBGQ1ZUX0RfVywgRkNWVF9EX1dVLAorICAgICAgICAvLyBSVjY0RCBTdGFuZGFyZCBFeHRl
bnNpb24gKGluIGFkZGl0aW9uIHRvIFJWMzJEKQorICAgICAgICBGQ1ZUX0xfRCwgRkNWVF9MVV9E
LCBGTVZfWF9ELAorICAgICAgICBGQ1ZUX0RfTCwgRkNWVF9EX0xVLCBGTVZfRF9YPjsKKworICAg
IGF1dG8gZGlzYXNzZW1ibHkgPSBEaXNhc3NlbWJsZXJUeXBlOjpkaXNhc3NlbWJsZShJbnN0cnVj
dGlvblZhbHVlIHsgKnBjIH0pOworICAgIGlmICghZGlzYXNzZW1ibHkuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBkaXNhc3NlbWJseTsKKyAgICByZXR1cm4gQ1N0cmluZyB7ICI8dW5yZWNvZ25p
emVkIG9wY29kZT4iIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFJJU0NWNjREaXNhc3NlbWJsZXIK
KworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNh
c3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgs
IFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdWludDMyX3QqIGN1cnJlbnRQQyA9IGNvZGVQdHIu
dW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50MzJfdCo+KCk7CisgICAgc2l6ZV90IGJ5dGVD
b3VudCA9IHNpemU7CisKKyAgICB3aGlsZSAoYnl0ZUNvdW50KSB7CisgICAgICAgIHN0ZDo6YXJy
YXk8Y2hhciwgMjA+IHBjU3RyaW5nOworICAgICAgICBzbnByaW50ZihwY1N0cmluZy5kYXRhKCks
IHBjU3RyaW5nLnNpemUoKSwgIjB4JWx4IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1
cnJlbnRQQykpOworCisgICAgICAgIG91dC5wcmludGYoIiVzJTE2czogPCUwOHg+ICVzXG4iLCBw
cmVmaXgsIHBjU3RyaW5nLmRhdGEoKSwgKmN1cnJlbnRQQywKKyAgICAgICAgICAgIFJJU0NWNjRE
aXNhc3NlbWJsZXI6OmRpc2Fzc2VtYmxlT3Bjb2RlKGN1cnJlbnRQQykuZGF0YSgpKTsKKworICAg
ICAgICArK2N1cnJlbnRQQzsKKyAgICAgICAgYnl0ZUNvdW50IC09IHNpemVvZih1aW50MzJfdCk7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKERJU0FTU0VNQkxFUikgJiYgRU5BQkxFKFJJU0NWNjRfRElTQVNTRU1C
TEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggYTg4NmM2NmM3N2U1ODkyMGRmYjQ5ZjMx
MDA5MjZiNzM3ZjA1YjFkZi4uYjQ5NjkwNjgyYWM3OTE4ZTNhNzQ5Yzg3Yjk3MzAxZGNmYTM1NzRl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC02MjUsNyArNjI1LDExIEBACiAjZGVmaW5l
IEVOQUJMRV9BUk02NF9ESVNBU1NFTUJMRVIgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFC
TEVfRElTQVNTRU1CTEVSKSAmJiAoRU5BQkxFKFVESVM4NikgfHwgRU5BQkxFKEFSTTY0X0RJU0FT
U0VNQkxFUikgfHwgKEVOQUJMRShKSVQpICYmIFVTRShDQVBTVE9ORSkpKQorI2lmICFkZWZpbmVk
KEVOQUJMRV9SSVNDVjY0X0RJU0FTU0VNQkxFUikgJiYgRU5BQkxFKEpJVCkgJiYgQ1BVKFJJU0NW
NjQpICYmICFVU0UoQ0FQU1RPTkUpCisjZGVmaW5lIEVOQUJMRV9SSVNDVjY0X0RJU0FTU0VNQkxF
UiAxCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEVOQUJMRV9ESVNBU1NFTUJMRVIpICYmIChFTkFC
TEUoVURJUzg2KSB8fCBFTkFCTEUoQVJNNjRfRElTQVNTRU1CTEVSKSB8fCBFTkFCTEUoUklTQ1Y2
NF9ESVNBU1NFTUJMRVIpIHx8IChFTkFCTEUoSklUKSAmJiBVU0UoQ0FQU1RPTkUpKSkKICNkZWZp
bmUgRU5BQkxFX0RJU0FTU0VNQkxFUiAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>