<?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>121651</bug_id>
          
          <creation_ts>2013-09-19 18:19:56 -0700</creation_ts>
          <short_desc>REGRESSION(r156120): Broke windows runtime and all tests (Requested by bfulgham on #webkit).</short_desc>
          <delta_ts>2013-09-20 10:15:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121637</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931151</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 18:19:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156120 broke the build:
Broke windows runtime and all tests (Requested by bfulgham on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931153</commentid>
    <comment_count>1</comment_count>
      <attachid>212113</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 18:20:23 -0700</bug_when>
    <thetext>Created attachment 212113
ROLLOUT of r156120

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931162</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-19 19:04:18 -0700</bug_when>
    <thetext>Committed r156136: &lt;http://trac.webkit.org/changeset/156136&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212113</attachid>
            <date>2013-09-19 18:20:23 -0700</date>
            <delta_ts>2013-09-20 10:15:44 -0700</delta_ts>
            <desc>ROLLOUT of r156120</desc>
            <filename>bug-121651-20130919182022.patch</filename>
            <type>text/plain</type>
            <size>261001</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODQxNmVhMWI2NDYxODZhYzUzM2M2M2U4YmY4ZjJkYTIwYWRiM2FjLi4zYTNhZjA2MTI5YmJjYzMy
YmYzN2JkODZmOTY2ZDBhOGE1MTQ2MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjcgQEAKKzIwMTMtMDktMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTYxMjAuCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NjEyMAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjUxCisKKyAgICAgICAgQnJv
a2Ugd2luZG93cyBydW50aW1lIGFuZCBhbGwgdGVzdHMgKFJlcXVlc3RlZCBieSBiZnVsZ2hhbSBv
bgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBi
eXRlY29kZS9WYWx1ZVJlY292ZXJ5Lmg6CisgICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmR1
bXBJbkNvbnRleHQpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwLgor
ICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpzZXRTYW1wbGluZ0ZsYWcpOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcpOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMik6CisgICAgICAg
IChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIpOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFt
ZSk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOiBSZW5hbWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaC4KKyAgICAgICAgKEpTQzo6
REZHOjpBc3NlbWJseUhlbHBlcnM6OkFzc2VtYmx5SGVscGVycyk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXNzZW1ibHlIZWxwZXJzOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFzc2Vt
Ymx5SGVscGVyczo6dm0pOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6YXNz
ZW1ibGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJz
OjpyZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cik6CisgICAgICAg
IChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dEltbWVkaWF0ZVRvQ2Fs
bEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90T2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIpOgorICAgICAgICAoSlND
OjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OkFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0NlbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6Ym94RG91YmxlKToKKyAgICAgICAgKEpTQzo6REZH
OjpBc3NlbWJseUhlbHBlcnM6OnVuYm94RG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3Nl
bWJseUhlbHBlcnM6OmJveEludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBl
cnM6OmVtaXRFeGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxw
ZXJzOjplbWl0Q291bnQpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6Z2xv
YmFsT2JqZWN0Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnN0cmlj
dE1vZGVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6YmFzZWxpbmVD
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6YmFzZWxp
bmVDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzUmVnaXN0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6c3lt
Ym9sVGFibGVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6b2Zmc2V0
T2ZMb2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6b2Zmc2V0T2ZB
cmd1bWVudHNJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKiBkZmcvREZHQmluYXJ5U3dpdGNoLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Q0NhbGxIZWxwZXJzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oLgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6Q0NhbGxIZWxw
ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnJlc2V0Q2FsbEFyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjphZGRDYWxsQXJndW1lbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFeGVjU3RhdGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwVHdvU3R1YkFyZ3MpOgor
ICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwUmVzdWx0cyk6CisgICAgICAgICog
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogZGZnL0RGR0ZQUkluZm8uaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oLgorICAgICAgICAo
SlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkZQUklu
Zm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvQXJndW1lbnRSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAg
KiBkZmcvREZHR1BSSW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmguCisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3M6OkpTVmFsdWVSZWdz
KToKKyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkpOgorICAgICAg
ICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpERkc6
OkpTVmFsdWVSZWdzOjpncHIpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzOjpwYXls
b2FkR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlU291cmNlOjpKU1ZhbHVlU291cmNl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SlNWYWx1ZVNvdXJjZTo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU1ZhbHVlU291cmNlOjppc0FkZHJlc3MpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFs
dWVTb3VyY2U6Om9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVNvdXJjZTo6YmFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVNvdXJjZTo6Z3ByKToKKyAgICAgICAgKEpT
Qzo6REZHOjpKU1ZhbHVlU291cmNlOjphc0FkZHJlc3MpOgorICAgICAgICAoSlNDOjpERkc6OkpT
VmFsdWVTb3VyY2U6Om5vdEFkZHJlc3MpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdz
Ojp0YWdHUFIpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVTb3VyY2U6OnRhZ0dQUik6Cisg
ICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVNvdXJjZTo6cGF5bG9hZEdQUik6CisgICAgICAgIChK
U0M6OkRGRzo6SlNWYWx1ZVNvdXJjZTo6aGFzS25vd25UYWcpOgorICAgICAgICAoSlNDOjpERkc6
OkpTVmFsdWVTb3VyY2U6OnRhZyk6CisgICAgICAgIChKU0M6OkRGRzo6R1BSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6R1BSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6R1BSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5oOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uaDoKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJCYW5rLmg6
CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR1JlcGF0
Y2guY3BwOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmg6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6
RlRMOjpDQXJndW1lbnRHZXR0ZXI6OkNBcmd1bWVudEdldHRlcik6CisgICAgICAgIChKU0M6OkZU
TDo6Q0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dDgpOgorICAgICAgICAoSlNDOjpGVEw6OkNBcmd1
bWVudEdldHRlcjo6bG9hZE5leHQzMik6CisgICAgICAgIChKU0M6OkZUTDo6Q0FyZ3VtZW50R2V0
dGVyOjpsb2FkTmV4dDY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpDQXJndW1lbnRHZXR0ZXI6Omxv
YWROZXh0UHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0
RG91YmxlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgICogZnRsL0ZU
TEV4aXRUaHVua0dlbmVyYXRvci5oOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpKSVQpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1
YkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
ICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjpw
cmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFj
ZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4pOgorICAgICAgICAqIGppdC9T
cGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6
OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklU
OjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmxpbmtGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nTGVuZ3RoVHJhbXBvbGluZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4
dXApOgorICAgICAgICAoSlNDOjpjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpjaGFyQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmZyb21DaGFyQ29kZVRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3FydFRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Zmxvb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNlaWxUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OnJvdW5kVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpleHBUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxvZ1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwb3dU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmltdWxUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorCiAy
MDEzLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgZml4IFdpbmRvd3MgYnVpbGQgcGFydCAyLiBtX2ppdENvZGVNYXAgc2hvdWxkIGFs
d2F5cyBiZSB0aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjZjgx
MDZlNTdjZGNiYzcwZjdlYjExZTdhMzlkNjVlZWRmN2MyNzA0Li5mMDIwYzNmNzY5YWYwYWYyYmYz
ZWQ1NWM1NzQ4YTBjYTViZGU0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04MCw2ICs4MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCiAgICAgZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwCiAgICAgZGZnL0RGR0FycmF5TW9kZS5jcHAKKyAgICBkZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcAogICAgIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcAogICAgIGRmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdCYXNpY0Jsb2NrLmNwcApA
QCAtMjA4LDcgKzIwOSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAogICAgIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAog
Ci0gICAgaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAgICBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBkMTQyMmY0ZWViNDllOTIzZGE3NzVjMzdlMTgzNmNiMzhhMWJk
MzhjLi43MTA3YjJjMjQzMjRkMzU1ZDI0NDIyNTc0MjExZWVjYjVkNGM2NzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkyLDYgKzE5Miw4IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJh
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAg
XApAQCAtMjA2LDYgKzIwOCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnJhbmNoRGlyZWN0aW9uLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggXApAQCAtMjU4LDYgKzI2MSw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRWRnZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0
ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpbHRyYXRpb25SZXN1bHQuaCBcCkBAIC0yNzAsNiArMjc0LDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aExpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5m
by5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIFwKQEAgLTU5OSwxOSArNjA0LDE0IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9WTUluc3BlY3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9WTUluc3BlY3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVQ
cmVmaXguaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
IFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIFwKLQlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0ZQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagppbmRleCA1ZGFmNDgxYTYwYTZmN2M3MjAzYjFmM2Y0ZDk1YjBjNDY1
Mzg1NDYyLi40OTVmN2E1NDdhNmRkOThlNWNhNDEwZWY1ZDFkYTk3ZTUzM2UwZjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSlNTdGFjay5jcHAiIC8+DQogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmNwcCIgLz4N
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxWTUluc3BlY3Rvci5jcHAi
IC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVycy5jcHAi
IC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxFeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmNwcCIgLz4NCkBAIC03NTIsMTQgKzc1MSwxMCBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcUmVnaXN0ZXIuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3IuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxWTUluc3BlY3Rvci5oIiAvPg0KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxBc3NlbWJseUhlbHBlcnMuaCIgLz4NCi0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcQ0NhbGxIZWxwZXJzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caml0XENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcQ29tcGFjdEpJVENvZGVNYXAuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcRXhlY3V0YWJsZUFsbG9jYXRvci5oIiAvPg0KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxGUFJJbmZvLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caml0XEdDQXdhcmVKSVRTdHViUm91dGluZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxHUFJJbmZvLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcSklULmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVENv
ZGUuaCIgLz4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmZjY1OGRkYjczNDNk
MWQxNTExMzAwNThhZjY3YTAzNDUxNDk5MjAuLjEwYjE1NjNjZmQ0MjRjYzJkMGQzMzM3M2Y5YWIz
MmJiOTczZWE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMsMTEgKzEx
Myw2IEBACiAJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
MzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi87IH07
CiAJCTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkVBMTcx
NzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURE
NEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRjI0RTU0MDE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNC
MTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3BwICovOyB9OwotCQkwRjI0RTU0
MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyog
QXNzZW1ibHlIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0QxN0VB
OUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0
RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMjRFNTQ0MTdFQTlGNTkwMEFCQjIxNyAvKiBH
UFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjI0RTUzRjE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAv
KiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNTZDMzQxNjI3QjBBQTAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQjY2QUMxN0I2QjUzRjAw
QTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBODE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNv
bWluZ1JlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2
Nyw2ICsyNjIsNyBAQAogCQkwRjc2NkQ0NDE1QjJBM0MwMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJT
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2
RDQyMTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDQ2MTVCMzcwMUYwMDhGMzYz
RSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDQ1MTVCMzcwMUQwMDhGMzYzRSAvKiBERkdT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9Owor
CQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdCMjk0ODE0QzNDRDIzMDA3
QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFi
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTREMTRDM0NENEMw
MDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgwMjNFQTE2
MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0
NCw2ICszNDAsOCBAQAogCQkwRkJFMEY3NjE2QzFEQjBGMDA4MkM1RTggLyogREZHVW5pZmljYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgKi87
IH07CiAJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY3MDE2
QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzA5NzZEMTQ2OEFC
NEUwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZDMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5
NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuY3BwICovOyB9OwogCQkw
RkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2RjE0NjkzQUVGMDBD
RjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQyIC8qIERGR09T
UkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAgKi87IH07CiAJCTBGQzA5Nzc2MTQ2OTQzQjAwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29t
cGlsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQu
Y3BwICovOyB9OwpAQCAtNzI3LDYgKzcyNSw4IEBACiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVFNUUx
QzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNI
NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2QzREMTM2QTExRTQw
MDk2MzAxMiAvKiBERkdGUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFFNkM0QjEzNkExMUU0MDA5NjMwMTIgLyogREZHRlBSSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2QzRF
MTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BS
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI1ODIyRTE0RDIzNzNCMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGUuY3BwICovOyB9OwogCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYg
LyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAzQ0VGMjE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5jcHAg
Ki87IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4
MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKQEAgLTEzMTMsMTEgKzEzMTMsNiBA
QAogCQkwRjIzNUJFOTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRQcmVwYXJh
dGlvbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMzVCRUExNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4
aXRQcmVwYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JF
eGl0UHJlcGFyYXRpb24uaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmx5SGVscGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMjRFNTNDMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMjRFNTNEMTdFQTlGNTkwMEFC
QjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMjRFNTNFMTdF
QTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyNEU1M0YxN0VB
OUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI1NkMzNDE2MjdC
MEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0
aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZBODE3QjZC
NTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NJ
bmNvbWluZ1JlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2
QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NjcsNiArMTQ2Miw3IEBACiAJCTBGNzY2RDQ1MTVCMzcwMUQwMDhG
MzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHBhdGggPSBkZmcv
REZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdD
b3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QjI5NDgxNEMzQ0Qy
MzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8q
IEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTMsNiArMTU0OSw4
IEBACiAJCTBGQkUwRjZGMTZDMURCMDEwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1VuaWZpY2F0aW9uUGhh
c2UuY3BwOyBwYXRoID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkJFMEY3MDE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRp
b25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdVbmlmaWNhdGlv
blBoYXNlLmg7IHBhdGggPSBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Lmg7IHBhdGggPSBk
ZmcvREZHT1NSRXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc2QjE0
NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fzc2VtYmx5SGVscGVycy5jcHA7IHBhdGggPSBkZmcv
REZHQXNzZW1ibHlIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZD
MDk3NkMxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBc3NlbWJseUhlbHBlcnMuaDsgcGF0aCA9IGRmZy9E
RkdBc3NlbWJseUhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3
NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXIuaDsgcGF0aCA9IGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NzAx
NDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlcjY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGls
ZXIzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxOSw2ICsxOTE3LDggQEAKIAkJODZBREQxNDQw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJT
SDQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJTSDQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEy
IC8qIFNINEFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTSDRB
c3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZBRTZDNEIxMzZBMTFF
NDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRlBSSW5mby5oOyBwYXRoID0gZGZnL0RGR0ZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHR1BSSW5mby5oOyBwYXRoID0gZGZn
L0RGR0dQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyMkMxNEQy
MkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyMkYxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA0LDExICsyNzA0LDYgQEAKIAkJMTQyOUQ5MkMw
RUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMEYyNEU1M0IxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVy
cy5jcHAgKi8sCi0JCQkJMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVy
cy5oICovLAotCQkJCTBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAq
LywKLQkJCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICovLAotCQkJCTBG
MjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggKi8sCiAJCQkJMEY3M0Q3QUIxNjVB
MTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBGNzNE
N0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8sCiAJCQkJ
MEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0z
NDcwLDYgKzM0NjUsOCBAQAogCQkJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8sCiAJCQkJMEY2Mzk0ODExNUU0ODExNDAwNkE1OTdD
IC8qIERGR0FycmF5TW9kZS5jcHAgKi8sCiAJCQkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5oICovLAorCQkJCTBGQzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuY3BwICovLAorCQkJCTBGQzA5NzZDMTQ2OEFCNEEwMENGMjQ0MiAvKiBE
RkdBc3NlbWJseUhlbHBlcnMuaCAqLywKIAkJCQlBN0Q5QTI4RjE3QTBCQzc0MDBFRTI2MTggLyog
REZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCiAJCQkJQTdEOUEyOTAxN0EwQkM3NDAwRUUy
NjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCAqLywKIAkJCQkwRjcxNENBMTE2RUE5MkVE
MDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCkBAIC0zNDg3
LDYgKzM0ODQsNyBAQAogCQkJCTBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovLAogCQkJCTBGRDgyRTFFMTQxNzJDMkYw
MDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovLAogCQkJCTBGRDgyRTFGMTQxNzJDMkYw
MDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwRjdCMjk0ODE0QzNDRDIzMDA3
QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8sCiAJCQkJMEZGRkM5NEIxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuaCAqLywKIAkJCQkwRjNCM0EyNDE1NDRDOTkxMDAzRUQwRkYgLyogREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8sCkBAIC0zNTQ3LDcgKzM1NDUsOSBAQAogCQkJ
CUE3RDg5Q0U5MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oICovLAogCQkJCUE3
RDg5Q0VBMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5j
cHAgKi8sCiAJCQkJQTdEODlDRUIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoTGl2ZW5lc3NB
bmFseXNpc1BoYXNlLmggKi8sCisJCQkJODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQ
UkluZm8uaCAqLywKIAkJCQk4NkVDOURCNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlv
bkluZm8uaCAqLywKKwkJCQk4NkFFNkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5o
ICovLAogCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJ
CQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi8sCiAJCQkJQTcwNEQ5
MDAxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCAqLywKQEAg
LTM5MDksNyArMzkwOSw2IEBACiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYz
IC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgy
RTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEYyNEU1NDQxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjQwRTE2RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGREIyQ0VBMTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJy
ZW50SklUTG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTUwLDYgKzM5NDksNyBAQAogCQkJCTBG
MTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0ODUxNUU0
ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMDk3
NkQxNDY4QUI0RTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdEOUEyOTUxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYzRUJFQiAvKiBERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NjE0M0ZD
RDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTYwLDYg
KzM5NjAsNyBAQAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERG
R0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MDE3QTBC
QkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTkzLDcg
KzM5OTQsOSBAQAogCQkJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1
c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZBMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZB
RTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODZBRTZDNEUxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUM5REM4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDYxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5
MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzUsNyArNDEzOCw2
IEBACiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3
IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
NDIxMCw3ICs0MjEyLDYgQEAKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpT
RnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
MjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMzE3QjZCNUFCMDBBN0FF
M0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDM3OSw3ICs0MzgwLDYgQEAKIAkJ
CQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMzkxMkMxNjc3MUMzRDAwOUNDQjA3IC8qIFByb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjRFNTQyMTdFQTlG
NTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkI2MTAw
MTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODk5LDYgKzQ4OTksNyBAQAogCQkJCTBGNTVDMTk0MTcy
NzZFNDYwMENFQUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMTYwMTVEMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBE
RkdBcnJheU1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDMDk3NkUxNDY4QUI1MTAwQ0Yy
NDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q5QTI5
NDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFn
YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNB
RDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ5NjEsNyArNDk2Miw2
IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8q
IERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1QjE0
RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYyNEU1
NDAxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAv
KiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKaW5kZXggYTQ1ODczMjE4MWVhMTE1MDkwNGQ4YTgwNTg1NmY5MDJl
N2JmYzFjNy4uMmZiZjdmYTZhZjZjZTU1ZWJkY2QyMmIxN2I1MTNhYzFhYzlmNjM3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTExNyw2ICsxMTcsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAgXAogICAgIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0FycmF5TW9kZS5jcHAgXAorICAgIGRmZy9E
RkdBc3NlbWJseUhlbHBlcnMuY3BwIFwKICAgICBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5j
cHAgXAogICAgIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZn
L0RGR0Jhc2ljQmxvY2suY3BwIFwKQEAgLTIwNSw3ICsyMDYsNiBAQCBTT1VSQ0VTICs9IFwKICAg
ICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL0pTU3RhY2su
Y3BwIFwKICAgICBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIFwKLSAgICBqaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcCBcCiAgICAgaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIFwKICAg
ICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5oCmluZGV4IGM2NjhhMjM2OTk3MGY2NGIwZWIwZTI3YzBmNjhiYzAwZTBi
YTgwZDguLjQzOTc3MGU4MGYwNmFlMDY3M2I2M2YxZjE0NzJlNDdhYWI0ZDFhOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaApAQCAtMjcsOCAr
MjcsNiBAQAogI2RlZmluZSBWYWx1ZVJlY292ZXJ5X2gKIAogI2luY2x1ZGUgIkRhdGFGb3JtYXQu
aCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCi0jaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZp
cnR1YWxSZWdpc3Rlci5oIgpAQCAtMzI1LDI5ICszMjMsMjkgQEAgcHVibGljOgogICAgICAgICAg
ICAgb3V0LnByaW50ZigiKGRvdWJsZSkiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludChncHIoKSk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIlJXIlZCIsIGdwcigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludCgiaW50MzIoIiwg
Z3ByKCksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6
Ci0gICAgICAgICAgICBvdXQucHJpbnQoImludDUzKCIsIGdwcigpLCAiKSIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiaW50NTIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgotICAgICAgICAgICAgb3V0
LnByaW50KCJzdHJpY3RJbnQ1MigiLCBncHIoKSwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoInN0cmljdEludDUyKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJi
b29sKCIsIGdwcigpLCAiKSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiYm9vbCglJXIlZCki
LCBncHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6
Ci0gICAgICAgICAgICBvdXQucHJpbnQoInVpbnQzMigiLCBncHIoKSwgIikiKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInVpbnQzMiglJXIlZCkiLCBncHIoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoZnByKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJSVmciVkIiwgZnByKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAg
ICAgICAgb3V0LnByaW50KCJwYWlyKCIsIHRhZ0dQUigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIp
Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJwYWlyKCUlciVkLCAlJXIlZCkiLCB0YWdHUFIo
KSwgcGF5bG9hZEdQUigpKTsKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgICAgICBj
YXNlIERpc3BsYWNlZEluSlNTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXNzZW1ibHlIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGJhNzcyYzdjMTU1MTJlN2ZkODcy
Yjc0ZjU3NmJhYmU5YWFmYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShERkdfSklU
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK0V4ZWN1dGFibGVCYXNlKiBB
c3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
bikKK3sKKyAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICByZXR1
cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAgIAorICAgIHJldHVybiBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKTsKK30KKworVmVjdG9yPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2Rl
QmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdENv
ZGVNYXAoKSk7CisgICAgCisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9kZWNvZGVkQ29kZU1hcHMu
YWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4oKSk7CisgICAg
CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBjb2RlQmxvY2stPmppdENvZGVN
YXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIAorICAgIHJldHVybiBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQor
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnNldFNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCit7Cisg
ICAgQVNTRVJUKGZsYWcgPj0gMSk7CisgICAgQVNTRVJUKGZsYWcgPD0gMzIpOworICAgIG9yMzIo
VHJ1c3RlZEltbTMyKDF1IDw8IChmbGFnIC0gMSkpLCBBYnNvbHV0ZUFkZHJlc3MoU2FtcGxpbmdG
bGFnczo6YWRkcmVzc09mRmxhZ3MoKSkpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2xl
YXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQoreworICAgIEFTU0VSVChmbGFnID49IDEpOwor
ICAgIEFTU0VSVChmbGFnIDw9IDMyKTsKKyAgICBhbmQzMihUcnVzdGVkSW1tMzIofigxdSA8PCAo
ZmxhZyAtIDEpKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0ZsYWdzOjphZGRyZXNzT2ZGbGFn
cygpKSk7Cit9CisjZW5kaWYKKworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyNpZiBVU0Uo
SlNWQUxVRTY0KQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVn
IGdwcikKK3sKKyNpZiBDUFUoWDg2XzY0KQorICAgIEp1bXAgY2hlY2tJbnQzMiA9IGJyYW5jaDY0
KEJlbG93T3JFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQoc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eEZGRkZGRkZGdSkpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tJbnQzMi5saW5rKHRo
aXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyNlbmRpZgorfQorCit2b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCit7CisgICAgSnVt
cCBjaGVja0pTSW50MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tKU0ludDMy
LmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTTnVt
YmVyKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTTnVtYmVyID0gYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsK
K30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdw
cikKK3sKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3By
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEp1bXAgY2hlY2tKU051bWJl
ciA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOworICAg
IGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0pTTnVtYmVyLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0NlbGwoR1BSUmVnIGdwcikKK3sKKyAgICBKdW1w
IGNoZWNrQ2VsbCA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0NlbGwu
bGluayh0aGlzKTsKK30KKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCit2b2lkIEFzc2VtYmx5SGVs
cGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQoreworICAgIFVOVVNFRF9QQVJBTShn
cHIpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJl
ZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTSW50MzIgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAg
Y2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRJc0pTTnVtYmVyKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTSW50MzIgPSBi
cmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAg
ICBKdW1wIGNoZWNrSlNEb3VibGUgPSBicmFuY2gzMihCZWxvdywgZ3ByLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6TG93ZXN0VGFnKSk7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNJbnQz
Mi5saW5rKHRoaXMpOworICAgIGNoZWNrSlNEb3VibGUubGluayh0aGlzKTsKK30KKwordm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdwcikKK3sKKyAgICBK
dW1wIGNoZWNrSlNEb3VibGUgPSBicmFuY2gzMihCZWxvdywgZ3ByLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSk7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNEb3VibGUu
bGluayh0aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChH
UFJSZWcgZ3ByKQoreworICAgIEp1bXAgY2hlY2tDZWxsID0gYnJhbmNoMzIoRXF1YWwsIGdwciwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAg
Y2hlY2tDZWxsLmxpbmsodGhpcyk7Cit9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKKwor
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCkKK3sKKyAg
ICBKdW1wIGNoZWNrQ0ZSID0gYnJhbmNoVGVzdFB0cihaZXJvLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgVHJ1c3RlZEltbTMyKDcpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tD
RlIubGluayh0aGlzKTsKK30KKyNlbmRpZiAvLyBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZTYxNWFkZTAwM2M2MjY1ZmNjMDhiYTQzY2FmNGEzOGRhODE1NWY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApA
QCAtMCwwICsxLDQzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERGR0Fzc2VtYmx5SGVscGVyc19oCisjZGVmaW5lIERGR0Fz
c2VtYmx5SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJM
RShERkdfSklUKQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiREZHRlBSSW5m
by5oIgorI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKKyNpbmNsdWRlICJERkdKSVRDb2RlLmgiCisj
aW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit0eXBlZGVmIHZv
aWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9uX0VQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKTsK
KworY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKK3B1Ymxp
YzoKKyAgICBBc3NlbWJseUhlbHBlcnMoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAg
ICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAg
ICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVW
ZXJzaW9uKCkgOiAwKQorICAgIHsKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrKSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAgICAgICBBU1NFUlQoIW1f
YmFzZWxpbmVDb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOworICAgICAgICAgICAgQVNTRVJUKG1f
YmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSB7IHJldHVy
biBtX2NvZGVCbG9jazsgfQorICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KKyAgICBBc3Nl
bWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0dXJuIG1fYXNzZW1ibGVyOyB9CisgICAgCisj
aWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKKyAgICB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVz
c0FmdGVyQ2FsbChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgcG9wKHJlZyk7CisgICAgfQor
CisgICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJSZWcgcmVnKQor
ICAgIHsKKyAgICAgICAgcHVzaChyZWcpOworICAgIH0KKworICAgIHZvaWQgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHVz
aChhZGRyZXNzKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKKwor
I2lmIENQVShBUk0pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVz
c0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUobGlua1JlZ2lz
dGVyLCByZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUo
cmVnLCBsaW5rUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBsb2FkUHRyKGFkZHJlc3MsIGxpbmtSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCisKKyNp
ZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRy
ZXNzUmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAg
ICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lz
dGVyKTsKKyAgICB9CisjZW5kaWYKKworI2lmIENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVn
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRzcHIocmVnKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0ckxpbmtSZWcoYWRkcmVzcyk7CisgICAg
fQorI2VuZGlmCisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIHRvKTsKKyAgICB9CisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdG9yZTY0KGZyb20sIEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwor
I2Vsc2UKKyAgICAgICAgc3RvcmUzMihmcm9tLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyNlbmRpZgorICAgIH0KKworICAg
IHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAgICB7CisgICAgICAgIHN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElm
Tm90Q2VsbChHUFJSZWcgcmVnKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCByZWcsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgc3RhdGljIEFkZHJlc3MgYWRkcmVzc0ZvcihWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihS
ZWdpc3RlcikpOworICAgIH0KKyAgICBzdGF0aWMgQWRkcmVzcyBhZGRyZXNzRm9yKGludCBvcGVy
YW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVh
bFJlZ2lzdGVyPihvcGVyYW5kKSk7CisgICAgfQorCisgICAgc3RhdGljIEFkZHJlc3MgdGFnRm9y
KFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJlZ2lzdGVyICogc2l6
ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSk7CisgICAgfQorICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihpbnQgb3BlcmFu
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lz
dGVyPihvcGVyYW5kKSk7CisgICAgfQorCisgICAgc3RhdGljIEFkZHJlc3MgcGF5bG9hZEZvcihW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVv
ZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKTsKKyAgICB9CisgICAgc3RhdGljIEFkZHJlc3MgcGF5bG9hZEZvcihpbnQg
b3BlcmFuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXlsb2FkRm9yKHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZOb3RP
YmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4
KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CisgICAgfQorCisgICAgc3RhdGljIEdQ
UlJlZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBwcmVzZXJ2ZTEgPSBJbnZhbGlkR1BSUmVnLCBH
UFJSZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMyA9IEludmFs
aWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAg
ICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5m
bzo6cmVnVDAgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNlcnZlNCAhPSBH
UFJJbmZvOjpyZWdUMCkKKyAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKKworICAg
ICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QxICYmIHByZXNlcnZlMiAhPSBHUFJJ
bmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVnVDEgJiYgcHJlc2VydmU0ICE9
IEdQUkluZm86OnJlZ1QxKQorICAgICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1QxOworCisg
ICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDIgJiYgcHJlc2VydmUyICE9IEdQ
UkluZm86OnJlZ1QyICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMiAmJiBwcmVzZXJ2ZTQg
IT0gR1BSSW5mbzo6cmVnVDIpCisgICAgICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDI7CisK
KyAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTIgIT0g
R1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJlZ1QzICYmIHByZXNlcnZl
NCAhPSBHUFJJbmZvOjpyZWdUMykKKyAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMzsK
KworICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDQ7CisgICAgfQorCisgICAgLy8gQWRkIGEg
ZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBlZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9u
IHN0YXRlLgorICAgIHZvaWQgZGVidWdDYWxsKFZfREZHRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0
aW9uLCB2b2lkKiBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSBtX3ZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7CisgICAg
ICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZm
ZXIgKyBpKTsKKyNlbHNlCisgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIo
aSksIGJ1ZmZlciArIGkpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIHN0b3JlRG91YmxlKEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMg
YWN0aXZlIGR1cmluZyBjYWxsLgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CisKKyNpZiBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyNlbGlmIENQVShYODYpCisgICAgICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIDApOworICAgICAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCAxKTsK
KyAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIDIpOworICAgICAgICBHUFJSZWcg
c2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOworI2Vsc2UKKyNlcnJvciAiREZHIEpJVCBub3Qgc3Vw
cG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKKyAgICAg
ICAgY2FsbChzY3JhdGNoKTsKKworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86OnJlZ1QwKTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAg
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGxvYWREb3VibGUoR1BS
SW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytp
KSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyNlbHNlCisgICAgICAgICAgICBsb2FkMzIoYnVmZmVy
ICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkg
Y2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgorI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAg
ICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydElzSlNJ
bnQzMihHUFJSZWcpOworICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpOworICAg
IHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpOworICAgIHZvaWQgaml0QXNzZXJ0SXND
ZWxsKEdQUlJlZyk7CisgICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOworI2Vs
c2UKKyAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKSB7IH0KKyAgICB2b2lkIGppdEFz
c2VydElzSlNJbnQzMihHUFJSZWcpIHsgfQorICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihH
UFJSZWcpIHsgfQorICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpIHsgfQorICAg
IHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZykgeyB9CisgICAgdm9pZCBqaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpIHsgfQorI2VuZGlmCisKKyAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZl
cnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hlZCBhbmQgSlNWYWx1ZXMuCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBHUFJSZWcgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyBn
cHIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlVG82NChmcHIsIGdwcik7CisgICAgICAgIHN1
YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgaml0QXNz
ZXJ0SXNKU0RvdWJsZShncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKyAgICBGUFJS
ZWcgdW5ib3hEb3VibGUoR1BSUmVnIGdwciwgRlBSUmVnIGZwcikKKyAgICB7CisgICAgICAgIGpp
dEFzc2VydElzSlNEb3VibGUoZ3ByKTsKKyAgICAgICAgYWRkNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBncHIpOworICAgICAgICBtb3ZlNjRUb0RvdWJsZShncHIsIGZwcik7Cisg
ICAgICAgIHJldHVybiBmcHI7CisgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NTIoR1BSUmVn
IHNvdXJjZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVnIHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gp
CisgICAgeworICAgICAgICAvLyBJcyBpdCBhbiBpbnQzMj8KKyAgICAgICAgc2lnbkV4dGVuZDMy
VG9QdHIoc291cmNlLCBzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQo
RXF1YWwsIHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIAorICAgICAgICAvLyBOb3BlLCBpdCdz
IG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgY29udmVy
dEludDY0VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0Y2gpOworICAgICAgICBib3hEb3VibGUoZnBT
Y3JhdGNoLCB0YXJnZXQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAor
ICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNv
dXJjZSwgdGFyZ2V0KTsKKyAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHRhcmdldCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQor
I2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHZvaWQgYm94RG91YmxlKEZQUlJl
ZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQorICAgIHsKKyAgICAgICAg
bW92ZURvdWJsZVRvSW50cyhmcHIsIHBheWxvYWRHUFIsIHRhZ0dQUik7CisgICAgfQorICAgIHZv
aWQgdW5ib3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIsIEZQUlJlZyBm
cHIsIEZQUlJlZyBzY3JhdGNoRlBSKQorICAgIHsKKyAgICAgICAgbW92ZUludHNUb0RvdWJsZShw
YXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRjaEZQUik7CisgICAgfQorI2VuZGlmCisgICAg
CisgICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52
ZXJ0ZWRFeGNlcHRpb25DaGVjayB9OworICAgIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2Vw
dGlvbkNoZWNrS2luZCBraW5kID0gTm9ybWFsRXhjZXB0aW9uQ2hlY2spCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChraW5kID09IE5vcm1hbEV4Y2Vw
dGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFic29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNz
T2ZFeGNlcHRpb24oKSkpOworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICByZXR1cm4gYnJh
bmNoMzIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/IE5vdEVxdWFsIDogRXF1YWwsIEFi
c29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNoYXIqPih2bSgpLT5hZGRyZXNzT2ZFeGNl
cHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisjZW5kaWYKKyAgICB9CisKKyNpZiBF
TkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCisgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90
IGluY3JlbWVudCA9IDEpCisgICAgeworICAgICAgICBqaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGlu
Y3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRl
ciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQorICAgIHsKKyAgICAgICAgYWRkNjQoVHJ1c3RlZElt
bTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIo
KSkpOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgIHZv
aWQgc2V0U2FtcGxpbmdGbGFnKGludDMyX3QpOworICAgIHZvaWQgY2xlYXJTYW1wbGluZ0ZsYWco
aW50MzJfdCBmbGFnKTsKKyNlbmRpZgorCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICByZXR1cm4gY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBzdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIGlm
ICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gY29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpOworICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKS0+
aXNTdHJpY3RNb2RlKCk7CisgICAgfQorICAgIAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOworICAgIAorICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5l
Q29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKCkpOworICAgIH0KKyAgICAK
KyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2soKTsKKyAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CisgICAgfQor
ICAgIAorICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7CisgICAgfQorICAgIAorICAgIGludCBhcmd1bWVu
dHNSZWdpc3RlckZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKKyAgICB7Cisg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9j
aygpLT5hcmd1bWVudHNSZWdpc3RlcigpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKAorICAgICAgICAgICAgaW5saW5lQ2FsbEZy
YW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7
CisgICAgfQorICAgIAorICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICB9CisgICAgCisgICAgU2hhcmVk
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
CisgICAgeworICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbikt
PnN5bWJvbFRhYmxlKCk7CisgICAgfQorCisgICAgaW50IG9mZnNldE9mTG9jYWxzKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpOwor
ICAgIH0KKworICAgIGludCBvZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMoMCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gKGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1l
bnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgfQorCisg
ICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwRm9yKENv
ZGVCbG9jayopOworICAgIAorcHJvdGVjdGVkOgorICAgIFZNKiBtX3ZtOworICAgIENvZGVCbG9j
ayogbV9jb2RlQmxvY2s7CisgICAgQ29kZUJsb2NrKiBtX2Jhc2VsaW5lQ29kZUJsb2NrOworCisg
ICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+
IG1fZGVjb2RlZENvZGVNYXBzOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdBc3NlbWJseUhlbHBlcnNf
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3aXRj
aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0Y2guaAppbmRleCBi
ZTM5Y2IxOWFiMTY2MzY1YjFjODk0NmVkOTMxODg4NDk0ZDQ0NTg5Li5mODNiYzI5YzU3YjQ0ZDI1
ODhjODYzNmYzYmMzZGFmMzcxNTczNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0JpbmFyeVN3aXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmluYXJ5U3dpdGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklU
KQogCi0jaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IGNjOTE3OWM5YmI3NjM1ZmU4OWI5NjE1YzViZjFkYmRmMWFhZTBmOTUuLjE5N2I5NjNjNTE4
NmM4NmIzZjg4YTNkMTFiMTU3ZjA2YzRhYmQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNp
bmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5j
bHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ND
YWxsSGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZDJlM2M4OGZlN2ZhM2FhODhkYzgyYTQyYTM2MGIy
YzZiMmQyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NDYWxsSGVscGVycy5oCkBAIC0wLDAgKzEsMTA5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NDYWxsSGVscGVyc19oCisjZGVm
aW5lIERGR0NDYWxsSGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiREZHR1BSSW5mby5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisK
K2NsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgeworcHVibGljOgor
ICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrID0gMCkKKyAgICAg
ICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykKKyAgICB7CisgICAgfQorCisgICAg
Ly8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3Qg
cmVnaXN0ZXJzLgorICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9u
cywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQorICAgIC8vIHN0YWNrLiBPbiBvdGhl
ciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCisgICAg
Ly8gY29ycmVjdCByZWdpc3RlcnMuCisjaWYgIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKKyAgICB2b2lkIHJlc2V0Q2FsbEFy
Z3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9CisKKyAgICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9wZXJhdGlv
biBtZXRob2RzLgorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAgIH0KKyAg
ICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAg
cG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAgIH0KKyAgICB2b2lkIGFkZENh
bGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCisgICAgeworICAgICAgICBwb2tlKHBv
aW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxB
cmd1bWVudChGUFJSZWcgdmFsdWUpCisgICAgeworICAgICAgICBzdG9yZURvdWJsZSh2YWx1ZSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQgKiBzaXpl
b2Yodm9pZCopKSk7CisgICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICs9IHNpemVvZihkb3Vi
bGUpIC8gc2l6ZW9mKHZvaWQqKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQorICAgIHsKKyAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7Cisg
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIg
YXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcy
LCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0
ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmc0KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisgICAgeworICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7Cisg
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7
CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorI2VuZGlm
IC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCisgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IK
KyAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQsIEFSTXY3
LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIHRlbXBsYXRlPEdQ
UlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhHUFJS
ZWcgc3JjQSwgR1BSUmVnIHNyY0IpCisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNy
Y0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMg
bWF5IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywg
dGhlIHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGlu
IGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRoZXIg
YXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBpbiBp
biBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJl
Y3QgcmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAg
ICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLworICAg
ICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMs
IHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAodGhl
IE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNo
IHdpbGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4g
Y2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisgICAg
ICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8g
YXZvaWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAgICAg
ICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAg
ICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgeworICAgICAgICAgICAgLy8gSGFu
ZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KKyAg
ICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0
QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOworICAg
IH0KKyNpZiBDUFUoWDg2XzY0KQorICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRl
c3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0Ip
CisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJl
IDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgorICAgICAgICAv
LyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQu
CisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcg
d2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcg
cmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisg
ICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLyAo
Nikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg3KSBzcmNCIGluIGlu
IHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgdHJpdmlhbCBh
cHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNl
IHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwg
b21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgorICAg
ICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3Jj
Qi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisgICAgICAgIC8vIChyZXF1aXJlcyBhIHN3
YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKKwor
ICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBl
YXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAgICAgICAgIG1vdmVEb3VibGUoc3Jj
QSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0Qik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzcmNBICE9IGRl
c3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1
dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0
Qik7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYmIHNyY0Eg
PT0gZGVzdEIpOworICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3JhcnkgcmVn
aXN0ZXIuCisgICAgICAgIEZQUlJlZyB0ZW1wOworICAgICAgICBpZiAoZGVzdEEgIT0gRlBSSW5m
bzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykKKyAgICAg
ICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7CisgICAgICAgIGVsc2UgaWYgKGRl
c3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVu
dEZQUjIpCisgICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQ
UjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgICAgIHRlbXAg
PSBGUFJJbmZvOjphcmd1bWVudEZQUjE7CisgICAgICAgIH0KKyAgICAgICAgbW92ZURvdWJsZShk
ZXN0QSwgdGVtcCk7CisgICAgICAgIG1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKKyAgICAgICAg
bW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7CisgICAgfQorI2VuZGlmCisgICAgdm9pZCBzZXR1cFN0
dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0
dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mj4oYXJnMSwgYXJnMik7CisgICAgfQorICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcx
IGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcyL2FyZzMuCisgICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgeworICAgICAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwg
YXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcy
IGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzMuCisgICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgeworICAgICAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwg
YXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcz
IGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzIuCisgICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgeworICAgICAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwg
YXJnMik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJnMS9hcmcy
L2FyZzMuCisgICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhlbiBhbGwg
dGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KKyAgICAgICAg
Ly8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPworCisgICAgICAgIC8vIEZpcnN0LCBl
bnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSB7CisgICAgICAgICAgICBzd2FwKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7CisKKyAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BSMSwgb25l
IG9mIGFyZzIvYXJnMyBtdXN0IGJlLgorICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIgaXMgKGR1
ZSB0byB0aGUgc3dhcCkuCisgICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0IGhhdmUg
YmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCisgICAgICAgICAgICBpZiAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpCisgICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxsIGRvbmUu
CisgICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwgYXJnMyA9
PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCisgICAgICAgICAgICB8fCAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKworICAg
ICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCisgICAgICAgICAgICBzd2Fw
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICB9CisK
KyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgNAorI2Vsc2UKKyNk
ZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAorI2VuZGlmCisKKyNpZiBDUFUoWDg2XzY0KQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7
CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQ
UlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1
bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7CisgICAgfQorICAg
IAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorI2VsaWYgQ1BVKEFSTSkKKyNpZiBDUFUoQVJNX0hBUkRGUCkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAgICBtb3ZlRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7CisgICAgICAgICAgICBtb3ZlRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAg
ICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAg
ICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcz
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJn
MSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMykKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmc0
KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmc0LCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSkKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAg
eworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMyk7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZzMpOworICAgICAg
ICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEZQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHBva2UoYXJnMywgUE9LRV9BUkdV
TUVOVF9PRkZTRVQpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCisgICAgeworICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIG1vdmUoYXJnMywg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBhcmc0KTsKKyAgICAgICAgcG9rZShH
UFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAgICBzd2FwRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1v
dihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMSk7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEs
IGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMsIDQpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzQpOworICAgIH0KKyNlbGlm
IENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZv
Ojphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50
RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1l
bnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorI2Vsc2UKKyNlcnJv
ciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCisgICAgewor
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOworICAgIH0KKyAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAg
IHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCisgICAgewor
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjaWYgQ1BVKFg4Nl82NCkgICAgCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbTY0IGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUgdGhp
cyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCisgICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZW5kaWYKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJbW1QdHIgYXJnMikKKyAgICB7Cisg
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3Qg
dHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAg
ICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0
LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbVB0ciBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEK
KyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7Cisg
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50
cyhhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMo
YXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsK
KyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMp
CisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwor
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIp
OworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczKQorICAg
IHsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Cisg
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShh
cmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1
YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIs
IGFyZzMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAg
ICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0K
KworI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQg
cHJvdmlkZXMgZm9yCisgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBB
Uk12Ny4KKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9r
ZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3Rl
ZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFy
ZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCAr
IDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQor
ICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBH
UFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShh
cmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorCisjaWYgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdz
PEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmc0
KTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBt
b3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorI2VuZGlm
CisKKyAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKKyAg
ICB7CisgICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7CisgICAg
ICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyOworCisgICAgICAgIGlm
IChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
CisgICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBt
b3ZlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgZWxzZSBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAg
ICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAg
ICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0
Qik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgeworICAgICAgICAgICAgLy8g
SGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4K
KyAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAgICAgICAgICAgbW92ZShzcmNBLCBk
ZXN0QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwor
ICAgIH0KK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQ0NhbGxIZWxwZXJzX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGI4ZDBjNmJlYzA5MmRm
OGI5ZWI1MDkyYjVkOWY2ZTI1OGQ3NjNhMjUuLmZlM2QyY2RjNDlkNzUwMTE4ZGQ1ZDFlOTc0YWFk
NjU2MTkwY2Q1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlz
YXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRU
eXBlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVj
MTI5ZWRhZWI1MmUzNjNiOTQyNTViZTY4Mzk5ZTczNjc1MDM5NmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMCwwICsxLDMwOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERGR0ZQUkluZm9faAorI2RlZmluZSBERkdGUFJJbmZvX2gKKworI2lmIEVOQUJMRShERkdfSklU
KQorCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOworI2RlZmluZSBJbnZhbGlkRlBSUmVnICgo
RlBSUmVnKS0xKQorCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKworY2xhc3MgRlBSSW5m
byB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSA4OworCisgICAgLy8gVGVtcG9y
YXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBYODZSZWdp
c3RlcnM6OnhtbTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gWDg2UmVnaXN0
ZXJzOjp4bW0xOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IFg4NlJlZ2lzdGVy
czo6eG1tMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBYODZSZWdpc3RlcnM6
OnhtbTM7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjp4
bW00OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFg4NlJlZ2lzdGVyczo6eG1t
NTsKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE9ubHkgWDg2XzY0IHBhc3NlcyBhZ3VtZW50cyBp
biB4bW0gcmVnaXN0ZXJzCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBY
ODZSZWdpc3RlcnM6OnhtbTA7IC8vIGZwUmVnVDAKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFy
Z3VtZW50RlBSMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsgLy8gZnBSZWdUMQorICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgYXJndW1lbnRGUFIyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOyAvLyBmcFJlZ1Qy
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjMgPSBYODZSZWdpc3RlcnM6Onht
bTM7IC8vIGZwUmVnVDMKKyNlbmRpZgorICAgIC8vIE9uIFg4NiB0aGUgcmV0dXJuIHdpbGwgYWN0
dWFsbHkgYmUgb24gdGhlIHg4NyBzdGFjaywKKyAgICAvLyBzbyB3ZSdsbCBjb3B5IHRvIHhtbTAg
Zm9yIHNhbml0eSEKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gWDg2
UmVnaXN0ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCisKKyAgICAvLyBGUFJSZWcgbWFwcGluZyBpcyBk
aXJlY3QsIHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCisgICAgLy8gYmUgdXNlZCBk
aXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0wID09IDAsIHhtbTBfaXNfMCk7CisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0xID09IDEsIHhtbTFfaXNfMSk7CisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0yID09IDIsIHhtbTJfaXNfMik7CisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0zID09IDMsIHhtbTNfaXNfMyk7CisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW00ID09IDQsIHhtbTRfaXNfNCk7CisgICAgQ09NUElM
RV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW01ID09IDUsIHhtbTVfaXNfNSk7CisgICAgc3RhdGlj
IEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IChGUFJSZWcpaW5kZXg7CisgICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJl
ZyByZWcpCisgICAgeworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICByZXR1cm4gKEZQUlJlZylpbmRleDsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRGUFJSZWcpOworI2lmIENQVShYODZfNjQpCisgICAgICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBu
YW1lRm9yUmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInhtbTAiLCAieG1tMSIsICJ4bW0y
IiwgInhtbTMiLAorICAgICAgICAgICAgInhtbTQiLCAieG1tNSIsICJ4bW02IiwgInhtbTciLAor
ICAgICAgICAgICAgInhtbTgiLCAieG1tOSIsICJ4bW0xMCIsICJ4bW0xMSIsCisgICAgICAgICAg
ICAieG1tMTIiLCAieG1tMTMiLCAieG1tMTQiLCAieG1tMTUiCisgICAgICAgIH07CisjZWxpZiBD
UFUoWDg2KQorICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbOF0gPSB7CisgICAgICAgICAg
ICAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsCisgICAgICAgICAgICAieG1tNCIsICJ4
bW01IiwgInhtbTYiLCAieG1tNyIKKyAgICAgICAgfTsKKyNlbmRpZgorICAgICAgICByZXR1cm4g
bmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorfTsKKworI2VuZGlmCisKKyNpZiBDUFUoQVJN
KQorCitjbGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3Rl
clR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsK
KworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgLy8gZDcgaXMgdXNlIGJ5IHRoZSBN
YWNyb0Fzc2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6OmQwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Qy
ID0gQVJNUmVnaXN0ZXJzOjpkMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBB
Uk1SZWdpc3RlcnM6OmQzOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IEFSTVJl
Z2lzdGVyczo6ZDQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gQVJNUmVnaXN0
ZXJzOjpkNTsKKyAgICAvLyBBUk12NyBkb2Vzbid0IHBhc3MgYXJndW1lbnRzIGluIGZwIHJlZ2lz
dGVycy4gVGhlIHJldHVybgorICAgIC8vIHZhbHVlIGlzIGFsc28gYWN0dWFsbHkgaW4gaW50ZWdl
ciByZWdpc3RlcnMsIGZvciBub3cKKyAgICAvLyB3ZSdsbCByZXR1cm4gaW4gZDAgZm9yIHNpbXBs
aWNpdHkuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IEFSTVJlZ2lz
dGVyczo6ZDA7IC8vIGZwUmVnVDAKKworI2lmIENQVShBUk1fSEFSREZQKQorICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gQVJNUmVnaXN0ZXJzOjpkMDsgLy8gZnBSZWdUMAor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gQVJNUmVnaXN0ZXJzOjpkMTsg
Ly8gZnBSZWdUMQorI2VuZGlmCisKKyAgICAvLyBGUFJSZWcgbWFwcGluZyBpcyBkaXJlY3QsIHRo
ZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCisgICAgLy8gYmUgdXNlZCBkaXJlY3RseSBh
cyBpbmRpY2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCisgICAgQ09NUElMRV9BU1NFUlQo
QVJNUmVnaXN0ZXJzOjpkMCA9PSAwLCBkMF9pc18wKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk1S
ZWdpc3RlcnM6OmQxID09IDEsIGQxX2lzXzEpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lz
dGVyczo6ZDIgPT0gMiwgZDJfaXNfMik7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJz
OjpkMyA9PSAzLCBkM19pc18zKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQ0
ID09IDQsIGQ0X2lzXzQpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDUgPT0g
NSwgZDVfaXNfNSk7CisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7CisgICAgfQorICAgIHN0YXRp
YyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICByZXR1cm4gKHVu
c2lnbmVkKXJlZzsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMzIpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJkMCIs
ICJkMSIsICJkMiIsICJkMyIsCisgICAgICAgICAgICAiZDQiLCAiZDUiLCAiZDYiLCAiZDciLAor
ICAgICAgICAgICAgImQ4IiwgImQ5IiwgImQxMCIsICJkMTEiLAorICAgICAgICAgICAgImQxMiIs
ICJkMTMiLCAiZDE0IiwgImQxNSIsCisgICAgICAgICAgICAiZDE2IiwgImQxNyIsICJkMTgiLCAi
ZDE5IiwKKyAgICAgICAgICAgICJkMjAiLCAiZDIxIiwgImQyMiIsICJkMjMiLAorICAgICAgICAg
ICAgImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCisgICAgICAgICAgICAiZDI4IiwgImQyOSIs
ICJkMzAiLCAiZDMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W3JlZ107CisgICAgfQorfTsKKworI2VuZGlmCisKKyNpZiBDUFUoTUlQUykKKworY2xhc3MgRlBS
SW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1w
b3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1JUFNS
ZWdpc3RlcnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNSZWdp
c3RlcnM6OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdpc3Rl
cnM6OmY2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3RlcnM6
OmY4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6OmYx
MDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7
CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lzdGVy
czo6ZjA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNSZWdp
c3RlcnM6OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1JUFNS
ZWdpc3RlcnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRl
eFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBm
cFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRl
eFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAg
IEFTU0VSVChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZv
clJlZ2lzdGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIEludmFs
aWRJbmRleCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4LAor
ICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUsIElu
dmFsaWRJbmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhG
b3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZh
bGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAiZjAiLCAiZjEi
LCAiZjIiLCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwKKyAgICAg
ICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJmMTIiLCAiZjEz
IiwgImYxNCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5Igor
ICAgICAgICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAgICAgICJmMjQi
LCAiZjI1IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAiLCAi
ZjMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Cisg
ICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXgg
PSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoU0g0KQorCitjbGFzcyBGUFJJ
bmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBv
cmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gU0g0UmVn
aXN0ZXJzOjpkcjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gU0g0UmVnaXN0
ZXJzOjpkcjI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gU0g0UmVnaXN0ZXJz
OjpkcjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpk
cjY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpkcjg7
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpkcjEwOwor
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IFNINFJlZ2lzdGVyczo6
ZHIwOworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBTSDRSZWdpc3Rl
cnM6OmRyNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IFNINFJlZ2lz
dGVyczo6ZHI2OworCisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251
bWJlck9mUmVnaXN0ZXJzXSA9IHsKKyAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVn
VDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsKKworICAgICAgICBBU1NFUlQoaW5kZXgg
PCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2lu
ZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNT
RVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVn
aXN0ZXJbMTZdID0geworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCAxLCBJbnZhbGlkSW5k
ZXgsCisgICAgICAgICAgICAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwKKyAgICAg
ICAgICAgIDQsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4CisgICAg
ICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsK
KyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAg
ICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9y
UmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgImRyMCIsICJmcjEiLCAiZHIyIiwgImZyMyIs
CisgICAgICAgICAgICAiZHI0IiwgImZyNSIsICJkcjYiLCAiZnI3IiwKKyAgICAgICAgICAgICJk
cjgiLCAiZnI5IiwgImRyMTAiLCAiZnIxMSIsCisgICAgICAgICAgICAiZHIxMiIsICJmcjEzIiwg
ImRyMTQiLCAiZnIxNSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52
YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCit0eXBlZGVmIFJlZ2lzdGVy
QmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJhdG9yOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BS
SW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNmZmNiNGUzMTY0MGM1ZmRkMjUwNjAxNjRlNmNlNjAwZTIxOTdm
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUklu
Zm8uaApAQCAtMCwwICsxLDY0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERGR0dQUkluZm9faAorI2RlZmluZSBERkdHUFJJbmZvX2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNp
bmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3R5cGVkZWYgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgR1BSUmVnOworI2RlZmluZSBJbnZhbGlkR1BSUmVnICgoOjpKU0M6OkRG
Rzo6R1BSUmVnKS0xKQorCisjaWYgVVNFKEpTVkFMVUU2NCkKK2NsYXNzIEpTVmFsdWVSZWdzIHsK
K3B1YmxpYzoKKyAgICBKU1ZhbHVlUmVncygpCisgICAgICAgIDogbV9ncHIoSW52YWxpZEdQUlJl
ZykKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IEpTVmFsdWVSZWdzKEdQUlJlZyBn
cHIpCisgICAgICAgIDogbV9ncHIoZ3ByKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCisgICAgeworICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9CisgICAgCisgICAgR1BSUmVn
IGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBj
b25zdCB7IHJldHVybiBtX2dwcjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBHUFJSZWcgbV9ncHI7
Cit9OworCitjbGFzcyBKU1ZhbHVlU291cmNlIHsKK3B1YmxpYzoKKyAgICBKU1ZhbHVlU291cmNl
KCkKKyAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCisgICAgICAgICwgbV9iYXNlKElu
dmFsaWRHUFJSZWcpCisgICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlU291cmNlKEpTVmFs
dWVSZWdzIHJlZ3MpCisgICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAgICAs
IG1fYmFzZShyZWdzLmdwcigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgSlNW
YWx1ZVNvdXJjZShHUFJSZWcgZ3ByKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkK
KyAgICAgICAgLCBtX2Jhc2UoZ3ByKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVNv
dXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQorICAgICAgICA6IG1fb2Zmc2V0
KGFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAsIG1fYmFzZShhZGRyZXNzLmJhc2UpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJU
KG1fYmFzZSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTVmFs
dWVTb3VyY2UgdW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCisgICAgeworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVNvdXJjZShwYXlsb2FkR1BSKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UgPT0gSW52YWxpZEdQUlJlZzsgfQorICAg
IAorICAgIGJvb2wgaXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQgIT0gbm90QWRk
cmVzcygpOyB9CisgICAgCisgICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgIH0K
KyAgICAKKyAgICBHUFJSZWcgYmFzZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNB
ZGRyZXNzKCkpOworICAgICAgICByZXR1cm4gbV9iYXNlOworICAgIH0KKyAgICAKKyAgICBHUFJS
ZWcgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOworICAg
ICAgICByZXR1cm4gbV9iYXNlOworICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlKCksIG9mZnNldCgpKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIGlu
dDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAorICAgICAgICAg
IAorICAgIGludDMyX3QgbV9vZmZzZXQ7CisgICAgR1BSUmVnIG1fYmFzZTsKK307CisjZW5kaWYK
KworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitjbGFzcyBKU1ZhbHVlUmVncyB7CitwdWJsaWM6Cisg
ICAgSlNWYWx1ZVJlZ3MoKQorICAgICAgICA6IG1fdGFnR1BSKHN0YXRpY19jYXN0PGludDhfdD4o
SW52YWxpZEdQUlJlZykpCisgICAgICAgICwgbV9wYXlsb2FkR1BSKHN0YXRpY19jYXN0PGludDhf
dD4oSW52YWxpZEdQUlJlZykpCisgICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlUmVncyhH
UFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKKyAgICAgICAgOiBtX3RhZ0dQUih0YWdH
UFIpCisgICAgICAgICwgbV9wYXlsb2FkR1BSKHBheWxvYWRHUFIpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikKKyAgICB7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhJbnZhbGlkR1BSUmVnLCBncHIpOworICAgIH0K
KyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUikgPT0gSW52YWxpZEdQUlJlZworICAgICAgICAg
ICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpID09IEludmFsaWRHUFJSZWc7
CisgICAgfQorICAgIAorICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxHUFJSZWc+KG1fdGFnR1BSKTsgfQorICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpOyB9CisgICAgR1BSUmVn
IGdwcihXaGljaFZhbHVlV29yZCB3aGljaCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
d2hpY2gpIHsKKyAgICAgICAgY2FzZSBUYWdXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0dQ
UigpOworICAgICAgICBjYXNlIFBheWxvYWRXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHBheWxv
YWRHUFIoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHRhZ0dQUigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQ4X3QgbV90YWdH
UFI7CisgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKK307CisKK2NsYXNzIEpTVmFsdWVTb3VyY2Ug
eworcHVibGljOgorICAgIEpTVmFsdWVTb3VyY2UoKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFk
ZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFs
aWRHUFJSZWcpKQorICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFs
aWRHUFJSZWcpKQorICAgICAgICAsIG1fdGFnVHlwZSgwKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVlUmVncyByZWdzKQorICAgICAgICA6IG1fb2Zmc2V0KG5v
dEFkZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhyZWdzLnRhZ0dQUigpKQorICAgICAg
ICAsIG1fcGF5bG9hZChyZWdzLnBheWxvYWRHUFIoKSkKKyAgICAgICAgLCBtX3RhZ1R5cGUoMCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVTb3VyY2UoR1BSUmVnIHRhZ0dQUiwgR1BS
UmVnIHBheWxvYWRHUFIpCisgICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAg
ICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0PGludDhfdD4odGFnR1BSKSkKKyAgICAgICAgLCBt
X3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihwYXlsb2FkR1BSKSkKKyAgICAgICAgLCBtX3Rh
Z1R5cGUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVTb3VyY2UoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MgYWRkcmVzcykKKyAgICAgICAgOiBtX29mZnNldChhZGRyZXNzLm9mZnNl
dCkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFkZHJlc3MuYmFz
ZSkpCisgICAgICAgICwgbV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJl
ZykpCisgICAgICAgICwgbV90YWdUeXBlKDApCisgICAgeworICAgICAgICBBU1NFUlQobV9vZmZz
ZXQgIT0gbm90QWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEdQUlJlZz4o
bV9iYXNlT3JUYWcpICE9IEludmFsaWRHUFJSZWcpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
SlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQUikKKyAgICB7CisgICAg
ICAgIEpTVmFsdWVTb3VyY2UgcmVzdWx0OworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RB
ZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdC5tX2Jhc2VPclRhZyA9IHN0YXRpY19jYXN0PGludDhf
dD4oSW52YWxpZEdQUlJlZyk7CisgICAgICAgIHJlc3VsdC5tX3BheWxvYWQgPSBzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHBheWxvYWRHUFIpOworICAgICAgICByZXN1bHQubV90YWdUeXBlID0gc3RhdGlj
X2Nhc3Q8aW50OF90PihKU1ZhbHVlOjpDZWxsVGFnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWcK
KyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKSA9PSBJbnZhbGlk
R1BSUmVnOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQWRkcmVzcygpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29mZnNldCAhPSBub3RB
ZGRyZXNzKCk7CisgICAgfQorICAgIAorICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBtX29mZnNldDsK
KyAgICB9CisgICAgCisgICAgR1BSUmVnIGJhc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9i
YXNlT3JUYWcpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jh
c2VPclRhZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
UFJSZWc+KG1fYmFzZU9yVGFnKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIHBheWxvYWRHUFIo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaGFzS25vd25UYWcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOwor
ICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWc7CisgICAgfQorICAgIAorICAg
IHVpbnQzMl90IHRhZygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50MzJfdD4obV90YWdUeXBlKTsKKyAgICB9CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBjb25zdCB7IHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpICsgYWRkaXRpb25h
bE9mZnNldCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5v
dEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAwOyB9ICAgICAKKyAgICAgICAgICAKKyAgICBp
bnQzMl90IG1fb2Zmc2V0OworICAgIGludDhfdCBtX2Jhc2VPclRhZzsKKyAgICBpbnQ4X3QgbV9w
YXlsb2FkOyAKKyAgICBpbnQ4X3QgbV90YWdUeXBlOyAvLyBDb250YWlucyB0aGUgbG93IGJpdHMg
b2YgdGhlIHRhZy4KK307CisjZW5kaWYKKworI2lmIENQVShYODYpCisjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgMAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mUmVnaXN0ZXJzID0gNTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisKKyAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBY
ODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gWDg2UmVn
aXN0ZXJzOjplZHg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lzdGVy
czo6ZWN4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6OmVi
eDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjplc2k7Cisg
ICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOworICAgIC8v
IFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9z
ZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdU
MQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWF4
OyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lz
dGVyczo6ZWJ4OyAvLyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9
IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVn
aXN0ZXJzOjplY3g7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lz
dGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCB9OworICAgICAgICBy
ZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2ln
bmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAs
IDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXggfTsK
KyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAg
ICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZUZvclJlZ2lzdGVyWzhdID0geworICAgICAgICAgICAgImVheCIsICJlY3giLCAiZWR4
IiwgImVieCIsCisgICAgICAgICAgICAiZXNwIiwgImVicCIsICJlc2kiLCAiZWRpIiwKKyAgICAg
ICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZh
dGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZm
ZjsKK307CisKKyNlbmRpZgorCisjaWYgQ1BVKFg4Nl82NCkKKyNkZWZpbmUgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA2CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVk
ZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSA5OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKKworICAgIC8vIFRo
ZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTM7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OnIxNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6cjE1OworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBY
ODZSZWdpc3RlcnM6OmVkaTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gWDg2UmVn
aXN0ZXJzOjplc2k7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IFg4NlJlZ2lzdGVy
czo6cjg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IFg4NlJlZ2lzdGVyczo6cjk7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFg4NlJlZ2lzdGVyczo6cjEwOworICAg
IC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVy
cG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDQKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyBy
ZWdUNQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJz
OjplZHg7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSNCA9IFg4NlJlZ2lzdGVyczo6cjg7ICAvLyByZWdUNgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFI1ID0gWDg2UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYng7
IC8vIHJlZ1QzCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OmVz
aTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsg
cmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCBy
ZWdUOCB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBHUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJP
ZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3Vt
ZW50R1BSMiwgYXJndW1lbnRHUFIzLCBhcmd1bWVudEdQUjQsIGFyZ3VtZW50R1BSNSB9OworICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorICAgIAorICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pihy
ZWcpIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rl
clsxNl0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCA0LCA2
LCA3LCA4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZv
clJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
ZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAg
ICAgICAgICJyYXgiLCAicmN4IiwgInJkeCIsICJyYngiLAorICAgICAgICAgICAgInJzcCIsICJy
YnAiLCAicnNpIiwgInJkaSIsCisgICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIs
CisgICAgICAgICAgICAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKwor
I2VuZGlmCisKKyNpZiBDUFUoQVJNKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVn
aXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9
IDg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMg
PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpyNDsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpyOTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2
ID0gQVJNUmVnaXN0ZXJzOjpyMTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IEFS
TVJlZ2lzdGVyczo6cjExOworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxp
bmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBy
ZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJl
Z1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdp
c3RlcnM6OnI1OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3Ig
dGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk1SZWdpc3RlcnM6OnIwOyAv
LyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNUmVnaXN0
ZXJzOjpyMTsgLy8gcmVnVDEKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9
IEFSTVJlZ2lzdGVyczo6cjI7IC8vIHJlZ1QyCisgICAgLy8gRklYTUU6IHIzIGlzIGN1cnJlbnRs
eSB1c2VkIGJlIHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0IHNlZW1zCisg
ICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0gaWYgdGhpcyBpcyB1
c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgorICAgIC8vIGJldHdlZW4gdGhlIGFyZ3VtZW50cyBiZWlu
ZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBUaGF0IHNhaWQsCisgICAgLy8gYW55
IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBpcyBsaWtlbHkgdG8gYmUgaW1tZWRp
YXRlbHkgYXBwYXJlbnQhCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBB
Uk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0OyAvLyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q0CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIyID0gQVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDUKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8g
cmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJlZ2lz
dGVyczo6cjE7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIgPSBBUk1SZWdpc3RlcnM6OnIyOworCisgICAgc3RhdGljIEdQUlJlZyB0b1Jl
Z2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9y
SW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywg
cmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9y
SW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJl
ZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVnKSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0
ZXJbMTZdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52
YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAicjAiLCAicjEi
LCAicjIiLCAicjMiLAorICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKKyAgICAg
ICAgICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwKKyAgICAgICAgICAgICJyMTIiLCAicjEz
IiwgInIxNCIsICJyMTUiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0
ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElu
dmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKworI2lmIENQVShNSVBTKQor
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0g
TUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1JUFNS
ZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0
ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4K
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6
czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEzOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJl
Z1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0g
cmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10g
PSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAg
cmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJv
IiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIs
CisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0Iiwg
InQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoU0g0KQor
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOworCisgICAgLy8gVGVtcG9yYXJ5
IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0ZXJz
OjpyMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpyMjsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpyMTA7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUNCA9IFNINFJlZ2lzdGVyczo6cjQ7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUNSA9IFNINFJlZ2lzdGVyczo6cjU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
NyA9IFNINFJlZ2lzdGVyczo6cjc7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFNI
NFJlZ2lzdGVyczo6cjg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOSA9IFNINFJlZ2lz
dGVyczo6cjk7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQu
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6
ZnA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIxID0gcmVnVDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjIgPSByZWdUNjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IHJlZ1Q3OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QzOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q4OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q5OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDI7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJl
Z2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJl
Z1Q2LCByZWdUNywgcmVnVDgsIHJlZ1Q5IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAg
ICAgQVNTRVJUKHJlZyA8IDE0KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4
Rm9yUmVnaXN0ZXJbMTRdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIDgs
IDksIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NF
UlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJl
ZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0g
PSB7CisgICAgICAgICAgICAicjAiLCAicjEiLCAicjIiLCAicjMiLCAicjQiLCAicjUiLCAicjYi
LCAicjciLAorICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLCAicjEyIiwgInIx
MyIsICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKK3R5cGVkZWYgUmVnaXN0
ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKaW5kZXggNmYwZGYyYzkxNmJkMzcwNzUyMzg4NmM3MTE3NjMyOTllNjhjMzgxNS4u
ZmQzOTA4YzM1ODdmNDhkZDdmZGQyNjRjMjkyMjYyNjU2MGU3NGYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRG
R0Nsb2JiZXJTZXQuaCIKLSNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAu
aCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAppbmRleCBmNTE2Y2YyNTIxZmFkODhmZDE5YWVhMjBkNzhiOGRlZjJjNDRkZThkLi5k
YmMxNzIxMTRhM2I2YzA2OWFmN2NhYjgzZWEyMmZkYjg0MTE1MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0zMCw5ICszMCw5IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0FyZ3VtZW50UG9zaXRpb24uaCIKKyNpbmNsdWRlICJERkdBc3NlbWJs
eUhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9t
aW5hdG9ycy5oIgogI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggMGM5NTEzMzQ1MzhmODA2Yzg2MjE5
YTIwNDliMDE5YmNmMTBjNDlmNC4uNjJhMDhiOTI1MDhjNjEzNTY5NTcwNTYxZTdjODc2NzlmYzI2
ZTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAt
MjgsMTcgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdEaXNh
c3NlbWJsZXIuaCIKKyNpbmNsdWRlICJERkdGUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5m
by5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCIKICNpbmNsdWRlICJERkdSZWdpc3Rl
ckJhbmsuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgotI2luY2x1ZGUgIkZQUkluZm8u
aCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggNDAyMmFiZjAwOGY4YzllMWUwNTBiOTY2
ZjljN2M4N2FhZDFjYzcxZC4uY2JjMzQ4OTE0NTM2ZTRhMjBjNWM2YmU4ZWFiYzk2YWY4NjYxZjdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
cy5oIgorI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDE5ZWU1MDQ2
OWY5OTJmNmFhNmNlZWNlNDU4NGNlYWNmYWU4YTRiMDQuLjUwYmRkZDRkMWYyMWVmNjY0Yzc2OTcy
YTk0OTQ4OGViYTZhNjMwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5o
CkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRG
R0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiREZHR1BS
SW5mby5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRCYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFsdWVS
ZWNvdmVyeU92ZXJyaWRlLmgiCi0jaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgog
I2luY2x1ZGUgIk9wZXJhbmRzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuaAppbmRleCA5N2VkZjUwMTJjZWMyNTg5MjZjOTg3MjU4NDkzZDQxMzFj
ZDJjZTFlLi44YTdlNDczODczOGM2ZDY5ZmJkZmZhM2Q2OGM0NjQyMWQzNmU5MTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgKQEAgLTMwLDgg
KzMwLDggQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxw
ZXJzLmgiCi0jaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHQXNzZW1ibHlI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdC5oIgogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggOGNlYjhi
NmQ0MThkMDRiYmE2ZThjYTMyMmZlM2FlMzA5YjNmNGRlOS4uMjc4ZmVmM2I5Mjk3NGZiZjQwNTE3
MzYwODYzNzJlYWJjMDY1OTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRG
R0NDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0
ZXJCYW5rLmgKaW5kZXggMGRiYWVjNGY3NTk2MWU4MjY4MDViNmUwMGU3N2EyMDJmMzdjYWJmNS4u
NGQxYmU0MDZhZjk4M2E3YTc1MDZmMWM2OTUyYWU5NjVkY2FjMzI1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlICJGUFJJ
bmZvLmgiCi0jaW5jbHVkZSAiR1BSSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKQEAgLTM2MCw5ICszNTgsNiBAQCBwcml2YXRlOgogICAgIE1hcEVudHJ5IG1fZGF0
YVtOVU1fUkVHU107CiB9OwogCi10eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0
b3IgZ3ByX2l0ZXJhdG9yOwotdHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9y
IGZwcl9pdGVyYXRvcjsKLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAppbmRleCA2OWI1ZTAxMjgw
MWY2ZTVkMTRiYTNhNjU2MmQ1YmMwOWFmZGU1M2YyLi5iYjM2MzU5ZjBlZDFjZjNkYTY4NDc3Y2E4
OWMxNTZkN2FhOTY2MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlZ2lzdGVyU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3Rl
clNldC5oCkBAIC0zMCw4ICszMCw4IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1
ZGUgIkZQUkluZm8uaCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHRlBSSW5m
by5oIgorI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCmluZGV4IDhkYWJkMTMyMmE5OTNmZjM1MjYzNjEyNGE3YTYxOGVmNDcw
YjY4M2IuLjBlM2EzM2Y4NjdmNWU1Yzg3NTRkOGZjYzFlNDkyYTI5NTQ2NmEzMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCiAjaW5j
bHVkZSAiREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHU3BlY3Vs
YXRpdmVKSVQuaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKaW5kZXggMzE5NDVj
ZWEwN2FlNTFjZWViMTY4MzEyZTBiMTZkMDJmMjM5ODY0MC4uOGFjODAwZDEzMzI4Yjg5ZmM2NmQ5
MjJlYWNmYzIxYWFmZmQ0ODU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKQEAgLTMxLDggKzMxLDggQEAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgIkZQUklu
Zm8uaCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHRlBSSW5mby5oIgorI2lu
Y2x1ZGUgIkRGR0dQUkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggZGU5MjY1NWFkMmIy
MjcwYjU2MTYwYjI1YTlhZThjYjE4NTUyZmY4NS4uMjEyMDFkN2Q0ZDJlMTVlMzA0ZWM1OGJmMjU0
NDQxMzM2ZTAzZWExYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApA
QCAtMjgsMTAgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkND
YWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRG
R0ZQUkluZm8uaCIKKyNpbmNsdWRlICJERkdHUFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhp
dENvbXBpbGVyLmgiCi0jaW5jbHVkZSAiRlBSSW5mby5oIgotI2luY2x1ZGUgIkdQUkluZm8uaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
RXZlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNw
cAppbmRleCA4NzE5Mjc3OTA5NTY3ZDE1NjNiYzhlNjE0ODQ5Y2IwNTk2YzdiYWVkLi5lZmZmYjE5
ZWE5NWZlNWQyOWFiY2I1ZDExMzI0MjNlNDA5ZTMzOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lm
IEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiRlBSSW5mby5oIgotI2luY2x1ZGUgIkdQUklu
Zm8uaCIKKyNpbmNsdWRlICJERkdGUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCmluZGV4IDczYjAxNWIxNmQ0MDViYWE5OGIy
NDU1MjE5NzIwMjc3NWU2Y2ZhZGYuLmY4MGZmY2M4N2YwN2U2MDk0NjczMzM5MmY4ZTkwOWE2NmFm
N2JiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50
R2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0
ZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRl
ICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNp
bmNsdWRlICJGVExWYWx1ZUZvcm1hdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQZWVrIG9mZnNldCBpcyB0aGUg
bnVtYmVyIG9mIHRoaW5ncyBvbiB0aGUgc3RhY2sgYmVsb3cgdGhlIGZpcnN0IGFyZ3VtZW50Lgog
ICAgIC8vIEl0IHdpbGwgYmUgMSBpZiB5b3UgaGF2ZW4ndCBwdXNoZWQgb3IgcG9wcGVkIGFmdGVy
IHRoZSBjYWxsOyBpLmUuIHRoZSBvbmx5CiAgICAgLy8gdGhpbmcgaXMgdGhlIHJldHVybiBhZGRy
ZXNzLgotICAgIENBcmd1bWVudEdldHRlcihBc3NlbWJseUhlbHBlcnMmIGppdCwgaW50IHBlZWtP
ZmZzZXQgPSAxKQorICAgIENBcmd1bWVudEdldHRlcihERkc6OkFzc2VtYmx5SGVscGVycyYgaml0
LCBpbnQgcGVla09mZnNldCA9IDEpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1f
cGVla09mZnNldChwZWVrT2Zmc2V0KQogICAgICAgICAsIG1fZ3ByQXJndW1lbnRJbmRleCgwKQpA
QCAtNjIsNTIgKzYyLDUyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQg
bG9hZE5leHQ4KEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGxvYWROZXh0OChERkc6OkdQ
UlJlZyBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJlZ2lz
dGVyPEdQUkluZm8+KGRlc3RpbmF0aW9uKSk7Ci0gICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5k
ZXggPCBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBt
X2ppdC5tb3ZlKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihtX2dwckFyZ3VtZW50SW5kZXgr
KyksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVnaXN0ZXI8REZH
OjpHUFJJbmZvPihkZXN0aW5hdGlvbikpOworICAgICAgICBpZiAobV9ncHJBcmd1bWVudEluZGV4
IDwgREZHOjpHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKERGRzo6R1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJndW1l
bnRJbmRleCsrKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOChuZXh0QWRkcmVzcygpLCBkZXN0aW5hdGlv
bik7CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZE5leHQzMihHUFJSZWcgZGVzdGluYXRpb24p
CisgICAgdm9pZCBsb2FkTmV4dDMyKERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVnaXN0ZXI8R1BSSW5mbz4oZGVzdGluYXRpb24pKTsK
LSAgICAgICAgaWYgKG1fZ3ByQXJndW1lbnRJbmRleCA8IEdQUkluZm86Om51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6dG9Bcmd1bWVu
dFJlZ2lzdGVyKG1fZ3ByQXJndW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24pOworICAgICAgICBB
U1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxERkc6OkdQUkluZm8+KGRlc3RpbmF0aW9uKSk7Cisg
ICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5kZXggPCBERkc6OkdQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoREZHOjpHUFJJbmZvOjp0
b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1faml0Lmxv
YWQzMihuZXh0QWRkcmVzcygpLCBkZXN0aW5hdGlvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQg
bG9hZE5leHQ2NChHUFJSZWcgZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dDY0KERGRzo6
R1BSUmVnIGRlc3RpbmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVn
aXN0ZXI8R1BSSW5mbz4oZGVzdGluYXRpb24pKTsKLSAgICAgICAgaWYgKG1fZ3ByQXJndW1lbnRJ
bmRleCA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJndW1lbnRJbmRl
eCsrKSwgZGVzdGluYXRpb24pOworICAgICAgICBBU1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxE
Rkc6OkdQUkluZm8+KGRlc3RpbmF0aW9uKSk7CisgICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5k
ZXggPCBERkc6OkdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoREZHOjpHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1
bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQ2NChuZXh0QWRkcmVzcygpLCBkZXN0aW5h
dGlvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZE5leHRQdHIoR1BSUmVnIGRlc3RpbmF0
aW9uKQorICAgIHZvaWQgbG9hZE5leHRQdHIoREZHOjpHUFJSZWcgZGVzdGluYXRpb24pCiAgICAg
ewogICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9uKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBsb2FkTmV4dERvdWJsZShGUFJSZWcgZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dERv
dWJsZShERkc6OkZQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCgKLSAg
ICAgICAgICAgICFpc0FyZ3VtZW50UmVnaXN0ZXI8RlBSSW5mbz4oZGVzdGluYXRpb24pCi0gICAg
ICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAg
ICAgICAgIWlzQXJndW1lbnRSZWdpc3RlcjxERkc6OkZQUkluZm8+KGRlc3RpbmF0aW9uKQorICAg
ICAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gREZHOjpGUFJJbmZvOjphcmd1bWVudEZQUjApOwog
ICAgICAgICAKLSAgICAgICAgaWYgKG1fZnByQXJndW1lbnRJbmRleCA8IEZQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBS
SW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZnByQXJndW1lbnRJbmRleCsrKSwgZGVzdGluYXRp
b24pOworICAgICAgICBpZiAobV9mcHJBcmd1bWVudEluZGV4IDwgREZHOjpGUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKERG
Rzo6RlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZnByQXJndW1lbnRJbmRleCsrKSwgZGVz
dGluYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTE1LDggKzExNSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdm9pZCBsb2FkTmV4dEFu
ZEJveCgKLSAgICAgICAgVmFsdWVGb3JtYXQsIEdQUlJlZyBkZXN0aW5hdGlvbiwKLSAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHNjcmF0Y2gyID0gSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgIFZhbHVlRm9ybWF0LCBERkc6OkdQUlJlZyBkZXN0aW5hdGlvbiwK
KyAgICAgICAgREZHOjpHUFJSZWcgc2NyYXRjaDEgPSBJbnZhbGlkR1BSUmVnLCBERkc6OkdQUlJl
ZyBzY3JhdGNoMiA9IEludmFsaWRHUFJSZWcpOwogCiBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzIG5leHRBZGRyZXNzKCkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgKG1fcGVla09mZnNldCArIG1fc3RhY2tBcmd1bWVudEluZGV4KyspICogc2l6
ZW9mKHZvaWQqKSk7CiAgICAgfQogICAgICAgICAgICAgCi0gICAgQXNzZW1ibHlIZWxwZXJzJiBt
X2ppdDsKKyAgICBERkc6OkFzc2VtYmx5SGVscGVycyYgbV9qaXQ7CiAgICAgdW5zaWduZWQgbV9w
ZWVrT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fZ3ByQXJndW1lbnRJbmRleDsKICAgICB1bnNpZ25l
ZCBtX2ZwckFyZ3VtZW50SW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAppbmRleCA0NjQ5NDc3NzJjOGIwOTg3YjIxMTFiYWEwOGY5ODE0NmZiNmVhZjhiLi4wZWZm
ZGVlODc5ZDA2N2JkOTU0NDRhZGIwYTBjNjE4N2MxZDJkMjljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoRlRM
X0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCi0jaW5jbHVkZSAiQ0Nh
bGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRlRMSklUQ29k
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VGh1bmtH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2VuZXJh
dG9yLmgKaW5kZXggNDM1MTYyZTk2Zjc2MThiNzE5MzA5YjZjYTgzN2JhZGQ0MDJiMTFmMy4uNjc1
NzhmNzdiYjRjMWQwM2I4ZWMyMjk2NzQzMGUwMmU0Zjk0Y2VmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VGh1bmtHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oCkBAIC0zMCwxNCArMzAs
MTQgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgi
CisjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKIAogY2xhc3MgU3RhdGU7CiBzdHJ1Y3QgT1NSRXhpdENvbXBpbGF0aW9uSW5mbzsK
IAotY2xhc3MgRXhpdFRodW5rR2VuZXJhdG9yIDogcHVibGljIENDYWxsSGVscGVycyB7CitjbGFz
cyBFeGl0VGh1bmtHZW5lcmF0b3IgOiBwdWJsaWMgREZHOjpDQ2FsbEhlbHBlcnMgewogcHVibGlj
OgogICAgIEV4aXRUaHVua0dlbmVyYXRvcihTdGF0ZSYgc3RhdGUpOwogICAgIH5FeGl0VGh1bmtH
ZW5lcmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGNjNDAw
OTk0MGI3M2QwMzI4MGZiMjUwZWIwMmUwNmYxYzY3OTBlZDAuLjVmOWQ0YjY4MmI0NGJmNDJlNGYz
ZTM2NDM0YjY4MmJiNzUzYzg5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJD
Q2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKICNp
bmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
SklUU3R1YnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCA2
Yzg0NmY1ZmRiYWM0NmIzZmM2OWRiMDg2NTc1MTNjODBjNTRiODY5Li4xMGQ1MmYwYzFhNWE1ZDc3
NzA2OGM1MTY2ZWI3MDlhMTBlY2E3ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExU
aHVua3MuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAotI2lu
Y2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZH
RlBSSW5mby5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgotI2luY2x1ZGUgIkdQ
UkluZm8uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjQwMTQzYjgwYzdiYTFhNWFkNWU5ODli
ZTdiNWJkMmEyNDk2ZGRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJB
c3NlbWJseUhlbHBlcnMuaCIKLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1FeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi17Ci0gICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKLSAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLSAg
ICAKLSAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0
KCk7Ci19Ci0KLVZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBl
cnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIEFTU0VS
VChjb2RlQmxvY2sgPT0gY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7Ci0gICAgQVNTRVJU
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICBBU1NF
UlQoY29kZUJsb2NrLT5qaXRDb2RlTWFwKCkpOwotICAgIAotICAgIEhhc2hNYXA8Q29kZUJsb2Nr
KiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ssIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+KCkpOwotICAgIAotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAg
Y29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLX0KLQotI2lmIEVOQUJM
RShTQU1QTElOR19GTEFHUykKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzZXRTYW1wbGluZ0ZsYWco
aW50MzJfdCBmbGFnKQotewotICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgIEFTU0VSVChmbGFn
IDw9IDMyKTsKLSAgICBvcjMyKFRydXN0ZWRJbW0zMigxdSA8PCAoZmxhZyAtIDEpKSwgQWJzb2x1
dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NPZkZsYWdzKCkpKTsKLX0KLQotdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmNsZWFyU2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKLXsKLSAgICBB
U1NFUlQoZmxhZyA+PSAxKTsKLSAgICBBU1NFUlQoZmxhZyA8PSAzMik7Ci0gICAgYW5kMzIoVHJ1
c3RlZEltbTMyKH4oMXUgPDwgKGZsYWcgLSAxKSkpLCBBYnNvbHV0ZUFkZHJlc3MoU2FtcGxpbmdG
bGFnczo6YWRkcmVzc09mRmxhZ3MoKSkpOwotfQotI2VuZGlmCi0KLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi0jaWYgVVNFKEpTVkFMVUU2NCkKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJ
c0ludDMyKEdQUlJlZyBncHIpCi17Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICBKdW1wIGNoZWNrSW50
MzIgPSBicmFuY2g2NChCZWxvd09yRXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMHhGRkZGRkZGRnUpKSk7Ci0gICAgYnJlYWtwb2ludCgpOwotICAgIGNoZWNr
SW50MzIubGluayh0aGlzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGdwcik7Ci0jZW5kaWYK
LX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNJbnQzMihHUFJSZWcgZ3By
KQotewotICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOwotICAg
IGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOwotfQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNKU051bWJlcihHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hlY2tKU051bWJlciA9
IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pTTnVtYmVy
LmxpbmsodGhpcyk7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91
YmxlKEdQUlJlZyBncHIpCi17Ci0gICAgSnVtcCBjaGVja0pTSW50MzIgPSBicmFuY2g2NChBYm92
ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBKdW1w
IGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdw
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBjaGVja0pTSW50MzIubGlu
ayh0aGlzKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU051bWJlci5saW5rKHRoaXMp
OwotfQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKEdQUlJlZyBncHIp
Ci17Ci0gICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICBicmVha3BvaW50KCk7Ci0g
ICAgY2hlY2tDZWxsLmxpbmsodGhpcyk7Ci19Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVnIGdwcikKLXsKLSAgICBV
TlVTRURfUEFSQU0oZ3ByKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElz
SlNJbnQzMihHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoMzIo
RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgYnJlYWtw
b2ludCgpOwotICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOwotfQotCi12b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hl
Y2tKU0ludDMyID0gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSk7Ci0gICAgSnVtcCBjaGVja0pTRG91YmxlID0gYnJhbmNoMzIoQmVsb3csIGdwciwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAg
ICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKLSAgICBjaGVja0pTRG91YmxlLmxpbmsodGhpcyk7
Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91YmxlKEdQUlJlZyBn
cHIpCi17Ci0gICAgSnVtcCBjaGVja0pTRG91YmxlID0gYnJhbmNoMzIoQmVsb3csIGdwciwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBj
aGVja0pTRG91YmxlLmxpbmsodGhpcyk7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRJc0NlbGwoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaDMy
KEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgYnJlYWtw
b2ludCgpOwotICAgIGNoZWNrQ2VsbC5saW5rKHRoaXMpOwotfQotI2VuZGlmIC8vIFVTRShKU1ZB
TFVFMzJfNjQpCi0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRIYXNWYWxpZENhbGxG
cmFtZSgpCi17Ci0gICAgSnVtcCBjaGVja0NGUiA9IGJyYW5jaFRlc3RQdHIoWmVybywgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJbW0zMig3KSk7Ci0gICAgYnJlYWtwb2ludCgp
OwotICAgIGNoZWNrQ0ZSLmxpbmsodGhpcyk7Ci19Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxF
RAotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlYTI1M2Y2YjJmZTZkZjI5ZTkxZWMyYTg5ZDdhYjRhOTAyZGM3NzMwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIEFzc2VtYmx5SGVscGVyc19oCi0jZGVmaW5lIEFzc2VtYmx5SGVscGVyc19o
Ci0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLSNpbmNs
dWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJGUFJJbmZvLmgiCi0jaW5jbHVkZSAiR1BSSW5m
by5oIgotI2luY2x1ZGUgIkpJVENvZGUuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgot
I2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi10eXBlZGVmIHZvaWQgKCpWX0Rl
YnVnT3BlcmF0aW9uX0VQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKLQotY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKLXB1YmxpYzoKLSAgICBBc3Nl
bWJseUhlbHBlcnMoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICAgICAgOiBtX3Zt
KHZtKQotICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2Vs
aW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgOiAw
KQotICAgIHsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9iYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVDb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpOwotICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKG1fYmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSkpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgeyByZXR1cm4gbV9jb2RlQmxv
Y2s7IH0KLSAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9Ci0gICAgQXNzZW1ibGVyVHlwZV9U
JiBhc3NlbWJsZXIoKSB7IHJldHVybiBtX2Fzc2VtYmxlcjsgfQotICAgIAotI2lmIENQVShYODZf
NjQpIHx8IENQVShYODYpCi0gICAgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
R1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIHBvcChyZWcpOwotICAgIH0KLQotICAgIHZvaWQg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSUmVnIHJlZykKLSAgICB7Ci0gICAg
ICAgIHB1c2gocmVnKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHB1c2goYWRkcmVzcyk7
Ci0gICAgfQotI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShYODYpCi0KLSNpZiBDUFUoQVJN
KQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
UmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBtb3ZlKGxpbmtSZWdpc3RlciwgcmVnKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBtb3ZlKHJlZywgbGlua1Jl
Z2lzdGVyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0
cihhZGRyZXNzLCBsaW5rUmVnaXN0ZXIpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgQ1BVKE1JUFMp
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVy
LCByZWcpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmVn
LCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCi0gICAg
ewotICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0gICAg
fQotI2VuZGlmCi0KLSNpZiBDUFUoU0g0KQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2
ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5zdHNwcihyZWcpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxkc3ByKHJlZyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIGxvYWRQdHJMaW5rUmVnKGFkZHJlc3MpOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQotICAgIHsKLSAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rl
cikpLCB0byk7Ci0gICAgfQotICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJl
ZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKLSAgICB7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RvcmU2NChmcm9tLCBBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKLSNlbHNlCi0gICAg
ICAgIHN0b3JlMzIoZnJvbSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50
cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGVtaXRQ
dXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnkpCi0gICAgewotICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1t
UHRyKHZhbHVlKSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBz
aXplb2YoUmVnaXN0ZXIpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hJZk5vdENlbGwoR1BS
UmVnIHJlZykKLSAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotI2VuZGlmCi0g
ICAgfQotICAgIAotICAgIHN0YXRpYyBBZGRyZXNzIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpKTsK
LSAgICB9Ci0gICAgc3RhdGljIEFkZHJlc3MgYWRkcmVzc0ZvcihpbnQgb3BlcmFuZCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4o
b3BlcmFuZCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3Rl
cikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
OwotICAgIH0KLSAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoaW50IG9wZXJhbmQpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFu
ZCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSk7Ci0gICAgfQotICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoaW50IG9wZXJhbmQpCi0g
ICAgewotICAgICAgICByZXR1cm4gcGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KG9wZXJhbmQpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJl
ZyBzdHJ1Y3R1cmVSZWcpCi0gICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRk
cmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoT2JqZWN0VHlwZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0
U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNl
cnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnLCBH
UFJSZWcgcHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykKLSAgICB7Ci0gICAgICAgIGlmIChwcmVz
ZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QwICYm
IHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVn
VDApCi0gICAgICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7Ci0KLSAgICAgICAgaWYgKHBy
ZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDEg
JiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJlZ1QxICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpy
ZWdUMSkKLSAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMTsKLQotICAgICAgICBpZiAo
cHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QyICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdU
MiAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVnVDIgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86
OnJlZ1QyKQotICAgICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1QyOwotCi0gICAgICAgIGlm
IChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJl
Z1QzICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5m
bzo6cmVnVDMpCi0gICAgICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDM7Ci0KLSAgICAgICAg
cmV0dXJuIEdQUkluZm86OnJlZ1Q0OwotICAgIH0KLQotICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwu
IFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KLSAg
ICB2b2lkIGRlYnVnQ2FsbChWX0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJn
dW1lbnQpCi0gICAgewotICAgICAgICBzaXplX3Qgc2NyYXRjaFNpemUgPSBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMpOwotICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gbV92
bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwotICAgICAgICBFbmNvZGVkSlNW
YWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVy
LT5kYXRhQnVmZmVyKCkpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZWxz
ZQotICAgICAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVy
KGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUZWxsIEdDIG1h
cmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcg
Y2FsbC4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxl
bmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1t
UHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwotCi0jaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTSkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCi0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0jZWxp
ZiBDUFUoWDg2KQotICAgICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsK
LSAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7Ci0gICAgICAgIHBva2Uo
VHJ1c3RlZEltbVB0cihidWZmZXIpLCAyKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJ
bmZvOjpyZWdUMDsKLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxh
dGZvcm0uIgotI2VuZGlmCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICAgICAgY2FsbChzY3JhdGNoKTsK
LQotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3Ro
UHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIo
MCksIEdQUkluZm86OnJlZ1QwKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
RlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVy
KGkpKTsKLSNlbHNlCi0gICAgICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9S
ZWdpc3RlcihpKSk7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZXNlIG1l
dGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0byBB
U1NFUlRzLgotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIo
R1BSUmVnKTsKLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpOwotICAgIHZvaWQg
aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJs
ZShHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZyk7Ci0gICAgdm9pZCBq
aXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwotI2Vsc2UKLSAgICB2b2lkIGppdEFzc2VydElz
SW50MzIoR1BSUmVnKSB7IH0KLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpIHsg
fQotICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0
QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQ
UlJlZykgeyB9Ci0gICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsgfQotI2Vu
ZGlmCi0KLSAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQg
ZG91YmxlcyBib3hlZCBhbmQgSlNWYWx1ZXMuCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJS
ZWcgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICBtb3Zl
RG91YmxlVG82NChmcHIsIGdwcik7Ci0gICAgICAgIHN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgZ3ByKTsKLSAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOwotICAg
ICAgICByZXR1cm4gZ3ByOwotICAgIH0KLSAgICBGUFJSZWcgdW5ib3hEb3VibGUoR1BSUmVnIGdw
ciwgRlBSUmVnIGZwcikKLSAgICB7Ci0gICAgICAgIGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsK
LSAgICAgICAgYWRkNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwotICAg
ICAgICBtb3ZlNjRUb0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAg
fQotICAgIAotICAgIHZvaWQgYm94SW50NTIoR1BSUmVnIHNvdXJjZSwgR1BSUmVnIHRhcmdldCwg
R1BSUmVnIHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCi0gICAgewotICAgICAgICAvLyBJcyBp
dCBhbiBpbnQzMj8KLSAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoc291cmNlLCBzY3JhdGNoKTsK
LSAgICAgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWwsIHNvdXJjZSwgc2NyYXRjaCk7
Ci0gICAgICAgIAotICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5z
IHRoZSBpbnQ2NCB2YWx1ZS4KLSAgICAgICAgY29udmVydEludDY0VG9Eb3VibGUoc291cmNlLCBm
cFNjcmF0Y2gpOwotICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNoLCB0YXJnZXQpOwotICAgICAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7Ci0gICAgICAgIAotICAgICAgICBpc0ludDMyLmxpbmsodGhp
cyk7Ci0gICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwgdGFyZ2V0KTsKLSAgICAgICAg
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldCk7Ci0gICAgICAgIAot
ICAgICAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxV
RTMyXzY0KQotICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQ
UlJlZyBwYXlsb2FkR1BSKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZVRvSW50cyhmcHIsIHBh
eWxvYWRHUFIsIHRhZ0dQUik7Ci0gICAgfQotICAgIHZvaWQgdW5ib3hEb3VibGUoR1BSUmVnIHRh
Z0dQUiwgR1BSUmVnIHBheWxvYWRHUFIsIEZQUlJlZyBmcHIsIEZQUlJlZyBzY3JhdGNoRlBSKQot
ICAgIHsKLSAgICAgICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwg
c2NyYXRjaEZQUik7Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgZW51bSBFeGNlcHRpb25DaGVj
a0tpbmQgeyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9Owot
ICAgIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kID0gTm9y
bWFsRXhjZXB0aW9uQ2hlY2spCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmV0dXJu
IGJyYW5jaFRlc3Q2NChraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFpl
cm8sIEFic29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICByZXR1cm4gYnJhbmNoMzIoa2luZCA9PSBOb3JtYWxFeGNl
cHRpb25DaGVjayA/IE5vdEVxdWFsIDogRXF1YWwsIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PGNoYXIqPih2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZh
bHVlVGFnKSk7Ci0jZW5kaWYKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMp
Ci0gICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0
U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCi0gICAgewot
ICAgICAgICBqaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVz
cyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSAgICB2b2lkIGVtaXRDb3Vu
dChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAx
KQotICAgIHsKLSAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRl
QWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHZvaWQgc2V0U2FtcGxpbmdGbGFnKGludDMy
X3QpOwotICAgIHZvaWQgY2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKTsKLSNlbmRpZgot
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCi0gICAgewotICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBzdHJpY3RNb2RlRm9yKENvZGVPcmln
aW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwot
ICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQot
ICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4pOwotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNl
bGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJh
c2VsaW5lQ29kZUJsb2NrKCkpOwotICAgIH0KLSAgICAKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQotICAgIHsKLSAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVD
b2RlQmxvY2soKTsKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2Fs
bEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgfQotICAgIAotICAgIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxv
Y2s7Ci0gICAgfQotICAgIAotICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZy
YW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3Rlcigp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2Fs
bEZyYW1lKAotICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIo
KSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIGludCBh
cmd1bWVudHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKTsKLSAgICB9Ci0gICAgCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
Rm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4g
YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7Ci0gICAgfQot
Ci0gICAgaW50IG9mZnNldE9mTG9jYWxzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0g
ICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIGludCBvZmZzZXRP
ZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAg
ICB7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAg
ICByZXR1cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgKiBzaXpl
b2YoUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
KSAqIHNpemVvZihSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwotICAgIAotcHJvdGVj
dGVkOgotICAgIFZNKiBtX3ZtOwotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgQ29k
ZUJsb2NrKiBtX2Jhc2VsaW5lQ29kZUJsb2NrOwotCi0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBW
ZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+IG1fZGVjb2RlZENvZGVNYXBzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYg
Ly8gQXNzZW1ibHlIZWxwZXJzX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MmE4ZmQwYTI1MjBjNWZjOGFh
NzAwMjBmZTBhNDNlZTg5N2NhODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENDYWxsSGVscGVyc19oCi0jZGVmaW5lIENDYWxs
SGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShKSVQp
Ci0KLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlI
ZWxwZXJzIHsKLXB1YmxpYzoKLSAgICBDQ2FsbEhlbHBlcnMoVk0qIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IDApCi0gICAgICAgIDogQXNzZW1ibHlIZWxwZXJzKHZtLCBjb2RlQmxvY2spCi0g
ICAgewotICAgIH0KLQotICAgIC8vIFRoZXNlIG1ldGhvZHMgdXNlZCB0byBzb3J0IGFyZ3VtZW50
cyBpbnRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycy4KLSAgICAvLyBPbiBYODYgd2UgdXNlIGNkZWNs
IGNhbGxpbmcgY29udmVudGlvbnMsIHdoaWNoIHBhc3MgYWxsIGFyZ3VtZW50cyBvbiB0aGUKLSAg
ICAvLyBzdGFjay4gT24gb3RoZXIgYXJjaGl0ZWN0dXJlcyB3ZSBtYXkgbmVlZCB0byBzb3J0IHZh
bHVlcyBpbnRvIHRoZQotICAgIC8vIGNvcnJlY3QgcmVnaXN0ZXJzLgotI2lmICFOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTCi0gICAgdW5zaWduZWQgbV9jYWxsQXJndW1lbnRPZmZzZXQ7Ci0g
ICAgdm9pZCByZXNldENhbGxBcmd1bWVudHMoKSB7IG1fY2FsbEFyZ3VtZW50T2Zmc2V0ID0gMDsg
fQotCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNpbmcgaW50ZXJuYWxseSB0byBpbXBsZW1l
bnQgdGhlIGNhbGxPcGVyYXRpb24gbWV0aG9kcy4KLSAgICB2b2lkIGFkZENhbGxBcmd1bWVudChH
UFJSZWcgdmFsdWUpCi0gICAgewotICAgICAgICBwb2tlKHZhbHVlLCBtX2NhbGxBcmd1bWVudE9m
ZnNldCsrKTsKLSAgICB9Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoVHJ1c3RlZEltbTMyIGlt
bSkKLSAgICB7Ci0gICAgICAgIHBva2UoaW1tLCBtX2NhbGxBcmd1bWVudE9mZnNldCsrKTsKLSAg
ICB9Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoVHJ1c3RlZEltbVB0ciBwb2ludGVyKQotICAg
IHsKLSAgICAgICAgcG9rZShwb2ludGVyLCBtX2NhbGxBcmd1bWVudE9mZnNldCsrKTsKLSAgICB9
Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoRlBSUmVnIHZhbHVlKQotICAgIHsKLSAgICAgICAg
c3RvcmVEb3VibGUodmFsdWUsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIG1fY2FsbEFy
Z3VtZW50T2Zmc2V0ICogc2l6ZW9mKHZvaWQqKSkpOwotICAgICAgICBtX2NhbGxBcmd1bWVudE9m
ZnNldCArPSBzaXplb2YoZG91YmxlKSAvIHNpemVvZih2b2lkKik7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJS
ZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIgYXJnMSkKLSAgICB7Ci0gICAgICAg
IHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkK
LSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCi0gICAg
ewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBh
cmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAg
ewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFy
ZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsK
LSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRy
IGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQot
ICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQotICAg
IHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMiBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1t
UHRyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3Rl
ZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzMpOwotICAgIH0KLSNlbmRpZiAvLyAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwotICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9u
IHRoYXQgcHJvdmlkZXMgZm9yCi0gICAgLy8gYXQgbGVhc3QgNCBhcmd1bWVudCByZWdpc3RlcnMs
IGUuZy4gWDg2XzY0LCBBUk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49
IDQKLSAgICB0ZW1wbGF0ZTxHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0Qj4KLSAgICB2b2lkIHNl
dHVwVHdvU3R1YkFyZ3MoR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCKQotICAgIHsKLSAgICAgICAg
Ly8gQXNzdW1pbmcgdGhhdCBzcmNBICE9IHNyY0IsIHRoZXJlIGFyZSA3IGludGVyZXN0aW5nIHN0
YXRlcyB0aGUgcmVnaXN0ZXJzIG1heSBiZSBpbjoKLSAgICAgICAgLy8gKDEpIGJvdGggYXJlIGFs
cmVhZHkgaW4gYXJnIHJlZ3MsIHRoZSByaWdodCB3YXkgYXJvdW5kLgotICAgICAgICAvLyAoMikg
Ym90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHdyb25nIHdheSBhcm91bmQuCi0gICAg
ICAgIC8vICgzKSBuZWl0aGVyIGFyZSBjdXJyZW50bHkgaW4gYXJnIHJlZ2lzdGVycy4KLSAgICAg
ICAgLy8gKDQpIHNyY0EgaW4gaW4gaXRzIGNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNSkgc3Jj
QSBpbiBpbiB0aGUgaW5jb3JyZWN0IHJlZy4KLSAgICAgICAgLy8gKDYpIHNyY0IgaW4gaW4gaXRz
IGNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNykgc3JjQiBpbiBpbiB0aGUgaW5jb3JyZWN0IHJl
Zy4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhlIHRyaXZpYWwgYXBwcm9hY2ggaXMgdG8gc2lt
cGx5IGVtaXQgdHdvIG1vdmVzLCB0byBwdXQgc3JjQSBpbiBwbGFjZSB0aGVuIHNyY0IgaW4KLSAg
ICAgICAgLy8gcGxhY2UgKHRoZSBNYWNyb0Fzc2VtYmxlciB3aWxsIG9taXQgcmVkdW5kYW50IG1v
dmVzKS4gVGhpcyBhcHBvcmFjaCB3aWxsIGJlIHNhZmUgaW4KLSAgICAgICAgLy8gY2FzZXMgMSwg
MywgNCwgNSwgNiwgYW5kIGluIGNhc2VzIHdoZXJlIHNyY0E9PXNyY0IuIFRoZSB0d28gcHJvYmxl
bSBjYXNlcyBhcmUgMgotICAgICAgICAvLyAocmVxdWlyZXMgYSBzd2FwKSBhbmQgNyAobXVzdCBt
b3ZlIHNyY0IgZmlyc3QsIHRvIGF2b2lkIHRyYW1wbGluZy4pCi0KLSAgICAgICAgaWYgKHNyY0Ig
IT0gZGVzdEEpIHsKLSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBjYXNlcyAtIHR3byBz
aW1wbGUgbW92ZXMuCi0gICAgICAgICAgICBtb3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAg
IG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICB9IGVsc2UgaWYgKHNyY0EgIT0gZGVzdEIpIHsK
LSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3YXAgY2FzZSAtIGp1c3QgcHV0IHNyY0Ig
aW4gcGxhY2UgZmlyc3QuCi0gICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RCKTsKLSAgICAgICAg
ICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN3YXAo
ZGVzdEEsIGRlc3RCKTsKLSAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICB0ZW1wbGF0ZTxGUFJS
ZWcgZGVzdEEsIEZQUlJlZyBkZXN0Qj4KLSAgICB2b2lkIHNldHVwVHdvU3R1YkFyZ3MoRlBSUmVn
IHNyY0EsIEZQUlJlZyBzcmNCKQotICAgIHsKLSAgICAgICAgLy8gQXNzdW1pbmcgdGhhdCBzcmNB
ICE9IHNyY0IsIHRoZXJlIGFyZSA3IGludGVyZXN0aW5nIHN0YXRlcyB0aGUgcmVnaXN0ZXJzIG1h
eSBiZSBpbjoKLSAgICAgICAgLy8gKDEpIGJvdGggYXJlIGFscmVhZHkgaW4gYXJnIHJlZ3MsIHRo
ZSByaWdodCB3YXkgYXJvdW5kLgotICAgICAgICAvLyAoMikgYm90aCBhcmUgYWxyZWFkeSBpbiBh
cmcgcmVncywgdGhlIHdyb25nIHdheSBhcm91bmQuCi0gICAgICAgIC8vICgzKSBuZWl0aGVyIGFy
ZSBjdXJyZW50bHkgaW4gYXJnIHJlZ2lzdGVycy4KLSAgICAgICAgLy8gKDQpIHNyY0EgaW4gaW4g
aXRzIGNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNSkgc3JjQSBpbiBpbiB0aGUgaW5jb3JyZWN0
IHJlZy4KLSAgICAgICAgLy8gKDYpIHNyY0IgaW4gaW4gaXRzIGNvcnJlY3QgcmVnLgotICAgICAg
ICAvLyAoNykgc3JjQiBpbiBpbiB0aGUgaW5jb3JyZWN0IHJlZy4KLSAgICAgICAgLy8KLSAgICAg
ICAgLy8gVGhlIHRyaXZpYWwgYXBwcm9hY2ggaXMgdG8gc2ltcGx5IGVtaXQgdHdvIG1vdmVzLCB0
byBwdXQgc3JjQSBpbiBwbGFjZSB0aGVuIHNyY0IgaW4KLSAgICAgICAgLy8gcGxhY2UgKHRoZSBN
YWNyb0Fzc2VtYmxlciB3aWxsIG9taXQgcmVkdW5kYW50IG1vdmVzKS4gVGhpcyBhcHBvcmFjaCB3
aWxsIGJlIHNhZmUgaW4KLSAgICAgICAgLy8gY2FzZXMgMSwgMywgNCwgNSwgNiwgYW5kIGluIGNh
c2VzIHdoZXJlIHNyY0E9PXNyY0IuIFRoZSB0d28gcHJvYmxlbSBjYXNlcyBhcmUgMgotICAgICAg
ICAvLyAocmVxdWlyZXMgYSBzd2FwKSBhbmQgNyAobXVzdCBtb3ZlIHNyY0IgZmlyc3QsIHRvIGF2
b2lkIHRyYW1wbGluZy4pCi0KLSAgICAgICAgaWYgKHNyY0IgIT0gZGVzdEEpIHsKLSAgICAgICAg
ICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBjYXNlcyAtIHR3byBzaW1wbGUgbW92ZXMuCi0gICAgICAg
ICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoc3Jj
QiwgZGVzdEIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24t
c3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAgICAgICAgICAgIG1v
dmVEb3VibGUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNBLCBkZXN0
QSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoc3Jj
QiA9PSBkZXN0QSAmJiBzcmNBID09IGRlc3RCKTsKLSAgICAgICAgLy8gTmVlZCB0byBzd2FwOyBw
aWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICBGUFJSZWcgdGVtcDsKLSAgICAgICAg
aWYgKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMyAmJiBkZXN0QSAhPSBGUFJJbmZvOjph
cmd1bWVudEZQUjMpCi0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIzOwot
ICAgICAgICBlbHNlIGlmIChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjIgJiYgZGVzdEEg
IT0gRlBSSW5mbzo6YXJndW1lbnRGUFIyKQotICAgICAgICAgICAgdGVtcCA9IEZQUkluZm86OmFy
Z3VtZW50RlBSMjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVzdEEgIT0g
RlBSSW5mbzo6YXJndW1lbnRGUFIxICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSk7
Ci0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIxOwotICAgICAgICB9Ci0g
ICAgICAgIG1vdmVEb3VibGUoZGVzdEEsIHRlbXApOwotICAgICAgICBtb3ZlRG91YmxlKGRlc3RC
LCBkZXN0QSk7Ci0gICAgICAgIG1vdmVEb3VibGUodGVtcCwgZGVzdEIpOwotICAgIH0KLSNlbmRp
ZgotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
LSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjI+KGFyZzEsIGFyZzIpOwotICAgIH0KLSAgICB2b2lkIHNldHVw
U3R1YkFyZ3VtZW50cyhHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAg
IHsKLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcyL2FyZzMgYXJlIGluIG91ciB3YXksIHRo
ZW4gd2UgY2FuIG1vdmUgYXJnMSBpbnRvIHBsYWNlLgotICAgICAgICAvLyBUaGVuIHdlIGNhbiB1
c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMi9hcmczLgotICAgICAgICBpZiAoYXJnMiAh
PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgYXJnMyAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjEp
IHsKLSAgICAgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAg
ICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcxL2FyZzMgYXJlIGluIG91ciB3YXksIHRo
ZW4gd2UgY2FuIG1vdmUgYXJnMiBpbnRvIHBsYWNlLgotICAgICAgICAvLyBUaGVuIHdlIGNhbiB1
c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMS9hcmczLgotICAgICAgICBpZiAoYXJnMSAh
PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgYXJnMyAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIp
IHsKLSAgICAgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAg
ICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcxL2FyZzIgYXJlIGluIG91ciB3YXksIHRo
ZW4gd2UgY2FuIG1vdmUgYXJnMyBpbnRvIHBsYWNlLgotICAgICAgICAvLyBUaGVuIHdlIGNhbiB1
c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMS9hcmcyLgotICAgICAgICBpZiAoYXJnMSAh
PSBHUFJJbmZvOjphcmd1bWVudEdQUjMgJiYgYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjMp
IHsKLSAgICAgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAg
ICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjI+KGFyZzEsIGFyZzIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmVuJ3QgYmVlbiBhYmxlIHRvIG1v
dmUgYW55IG9mIGFyZzEvYXJnMi9hcmczLgotICAgICAgICAvLyBTaW5jZSBhbGwgdGhyZWUgYXJl
IGJsb2NrZWQsIHRoZW4gYWxsIHRocmVlIG11c3QgYWxyZWFkeSBiZSBpbiB0aGUgYXJndW1lbnQg
cmVnaXN0ZXIuCi0gICAgICAgIC8vIEJ1dCBhcmUgdGhleSBpbiB0aGUgcmlnaHQgb25lcz8KLQot
ICAgICAgICAvLyBGaXJzdCwgZW5zdXJlIGFyZzEgaXMgaW4gcGxhY2UuCi0gICAgICAgIGlmIChh
cmcxICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAgICAgICAgICAgc3dhcChhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotCi0gICAgICAgICAgICAvLyBJZiBhcmcxIHdhc24ndCBp
biBhcmd1bWVudEdQUjEsIG9uZSBvZiBhcmcyL2FyZzMgbXVzdCBiZS4KLSAgICAgICAgICAgIEFT
U0VSVChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSB8fCBhcmczID09IEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgICAgICAgICAvLyBJZiBhcmcyIHdhcyBpbiBhcmd1bWVudEdQUjEg
aXQgbm8gbG9uZ2VyIGlzIChkdWUgdG8gdGhlIHN3YXApLgotICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIGFyZzMgbXVzdCBoYXZlIGJlZW4uIE1hcmsgaGltIGFzIG1vdmVkLgotICAgICAgICAgICAg
aWYgKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKQotICAgICAgICAgICAgICAgIGFyZzIg
PSBhcmcxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZzMgPSBhcmcxOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gRWl0aGVyIGFyZzIgJiBhcmczIG5lZWQgc3dhcHBpbmcs
IG9yIHdlJ3JlIGFsbCBkb25lLgotICAgICAgICBBU1NFUlQoKGFyZzIgPT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIyIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKQotICAgICAgICAgICAg
fHwgKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSk7Ci0KLSAgICAgICAgaWYgKGFyZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIy
KQotICAgICAgICAgICAgc3dhcChHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyk7Ci0gICAgfQotCi0jaWYgQ1BVKE1JUFMpCi0jZGVmaW5lIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUIDQKLSNlbHNlCi0jZGVmaW5lIFBPS0VfQVJHVU1FTlRfT0ZGU0VUIDAKLSNlbmRpZgot
Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1
YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEs
IGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAg
IG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMywg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEs
IGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIH0KLSNlbGlmIENQVShBUk0pCi0jaWYgQ1BVKEFSTV9IQVJE
RlApCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQot
ICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1
bWVudEZQUjApIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSkg
ewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwot
ICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBhcmcyLgotICAgICAgICAg
ICAgbW92ZURvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEFSTVJlZ2lzdGVyczo6ZDIpOwot
ICAgICAgICAgICAgbW92ZURvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKEFSTVJlZ2lzdGVyczo6ZDIsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAg
ICAgIG1vdmVEb3VibGUoYXJnMywgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgc2V0
dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyLCBG
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKGFyZzIs
IEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyLCBGUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFy
ZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIH0KLQotI2Vsc2UKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBhc3NlbWJsZXIoKS52bW92
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEs
IEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7Ci0gICAgICAgIGFzc2Vt
YmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMs
IGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBhc3NlbWJsZXIoKS52bW92
KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBhcmcxKTsKLSAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCi0gICAgewot
ICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdH
UFIwLCBhcmczKTsKLSAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBGUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICBw
b2tlKGFyZzMsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFy
Z3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcyKTsKLSAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQot
ICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIGFzc2Vt
YmxlcigpLnZtb3YoR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwgYXJn
NCk7Ci0gICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjEsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7Ci0gICAgfQotI2VuZGlmIC8vIENQVShBUk1fSEFSREZQKQotI2VsaWYgQ1BVKE1J
UFMpCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQot
ICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1
bWVudEZQUjApIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSkg
ewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwot
ICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBhcmcyLgotICAgICAgICAg
ICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBS
MSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMsIGFyZzEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwb2tlKGFyZzIsIDQpOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcG9rZShhcmczLCA0
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBGUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMiwgYXJnMyk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBGUFJSZWcgYXJnNCkK
LSAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmc0KTsKLSAgICB9Ci0jZWxpZiBDUFUoU0g0KQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAg
aWYgKGFyZzIgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIwKSB7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgICAgICBtb3ZlRG91Ymxl
KGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJnMSAh
PSBGUFJJbmZvOjphcmd1bWVudEZQUjEpIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzd2FwRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcg
YXJnMykKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMywgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIH0KLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0u
IgotI2VuZGlmCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVn
IGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwotICAg
IH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZElt
bVB0ciBhcmcxKQotICAgIHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNT
dGF0ZSgpCi0gICAgewotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcy
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewot
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jaWYgQ1BVKFg4
Nl82NCkgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTY0IGFyZzIpCi0gICAgewotICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJnMSwgR1BS
UmVnIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7IC8vIE1vdmUgdGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUh
Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICB9Ci0jZW5kaWYKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJbW1QdHIg
YXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5n
IGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8g
TW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKLSAgICAg
ICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAg
ICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKElt
bVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9l
cyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAg
IHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBt
b3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tMzIg
YXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNl
dHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJn
MiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKLSAgICAg
ICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAg
ICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQot
ICAgIHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BS
Myk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQ
UlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMiBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAg
ICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwg
VHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAg
ICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsK
LSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5m
bzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
Pj0gNAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBj
b252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCi0gICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJl
Z2lzdGVycywgZS5nLiBBUk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09
IDQKLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAg
ewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewot
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQotICAg
IHsKLSAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIg
YXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwot
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1t
MzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJl
ZyBhcmczLCBHUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdV
TUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBU
cnVzdGVkSW1tUHRyIGFyZzQpCi0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FS
R1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQpCi0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VU
KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3Rl
ZEltbVB0ciBhcmc0KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICBwb2tl
KGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAg
ICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQotICAgIHsK
LSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBw
b2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBh
cmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFy
ZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwot
ICAgIH0KLQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCi0j
aWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFI0PihhcmcxLCBhcmc0KTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwotICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQ
UlJlZyBkZXN0QikKLSAgICB7Ci0gICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFI7Ci0gICAgICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIy
OwotCi0gICAgICAgIGlmIChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgbW92
ZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRHUFJSZWcp
Ci0gICAgICAgICAgICBtb3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgZWxzZSBpZiAoc3JjQiAh
PSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNp
bXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAg
bW92ZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0Qikgewot
ICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBp
biBwbGFjZSBmaXJzdC4KLSAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAg
ICAgbW92ZShzcmNBLCBkZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChk
ZXN0QSwgZGVzdEIpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKLQotI2VuZGlmIC8vIENDYWxsSGVscGVyc19oCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9GUFJJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNTMwMTgw
YjMyOTNmMmQ3NmFlZWM0ZWMwMzMyZDY4OGQyODZiYWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZv
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZQUkluZm9faAotI2RlZmlu
ZSBGUFJJbmZvX2gKLQotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi10eXBlZGVmIE1hY3JvQXNzZW1i
bGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOwotI2RlZmluZSBJbnZhbGlkRlBSUmVnICgoOjpKU0M6
OkZQUlJlZyktMSkKLQotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0KLWNsYXNzIEZQUklu
Zm8gewotcHVibGljOgotICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gODsKLQotICAgIC8vIFRlbXBv
cmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gWDg2UmVn
aXN0ZXJzOjp4bW0wOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IFg4NlJlZ2lz
dGVyczo6eG1tMTsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBYODZSZWdpc3Rl
cnM6OnhtbTI7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gWDg2UmVnaXN0ZXJz
Ojp4bW0zOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IFg4NlJlZ2lzdGVyczo6
eG1tNDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBYODZSZWdpc3RlcnM6Onht
bTU7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAvLyBPbmx5IFg4Nl82NCBwYXNzZXMgYWd1bWVudHMg
aW4geG1tIHJlZ2lzdGVycwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0g
WDg2UmVnaXN0ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBh
cmd1bWVudEZQUjEgPSBYODZSZWdpc3RlcnM6OnhtbTE7IC8vIGZwUmVnVDEKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsgLy8gZnBSZWdU
MgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIzID0gWDg2UmVnaXN0ZXJzOjp4
bW0zOyAvLyBmcFJlZ1QzCi0jZW5kaWYKLSAgICAvLyBPbiBYODYgdGhlIHJldHVybiB3aWxsIGFj
dHVhbGx5IGJlIG9uIHRoZSB4ODcgc3RhY2ssCi0gICAgLy8gc28gd2UnbGwgY29weSB0byB4bW0w
IGZvciBzYW5pdHkhCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IFg4
NlJlZ2lzdGVyczo6eG1tMDsgLy8gZnBSZWdUMAotCi0gICAgLy8gRlBSUmVnIG1hcHBpbmcgaXMg
ZGlyZWN0LCB0aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNhbgotICAgIC8vIGJlIHVzZWQg
ZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0ZXJCYW5rLgotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMCA9PSAwLCB4bW0wX2lzXzApOwotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMSA9PSAxLCB4bW0xX2lzXzEpOwotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMiA9PSAyLCB4bW0yX2lzXzIpOwotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMyA9PSAzLCB4bW0zX2lzXzMpOwotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNCA9PSA0LCB4bW00X2lzXzQpOwotICAgIENPTVBJ
TEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNSA9PSA1LCB4bW01X2lzXzUpOwotICAgIHN0YXRp
YyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAoRlBSUmVnKWluZGV4OwotICAgIH0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJS
ZWcgcmVnKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7Ci0gICAgfQotICAg
IAotICAgIHN0YXRpYyBGUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7Ci0gICAgfQotCi0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciog
bmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAgICAgICAgICAgICJ4bW0wIiwgInhtbTEiLCAieG1t
MiIsICJ4bW0zIiwKLSAgICAgICAgICAgICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03IiwK
LSAgICAgICAgICAgICJ4bW04IiwgInhtbTkiLCAieG1tMTAiLCAieG1tMTEiLAotICAgICAgICAg
ICAgInhtbTEyIiwgInhtbTEzIiwgInhtbTE0IiwgInhtbTE1IgotICAgICAgICB9OwotI2VsaWYg
Q1BVKFg4NikKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOwotICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzhdID0gewotICAgICAgICAg
ICAgInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInhtbTMiLAotICAgICAgICAgICAgInhtbTQiLCAi
eG1tNSIsICJ4bW02IiwgInhtbTciCi0gICAgICAgIH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJu
IG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKEFS
TSkKLQotY2xhc3MgRlBSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0
ZXJUeXBlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7
Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIC8vIGQ3IGlzIHVzZSBieSB0aGUg
TWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCi0gICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZw
UmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
MiA9IEFSTVJlZ2lzdGVyczo6ZDI7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0g
QVJNUmVnaXN0ZXJzOjpkMzsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBBUk1S
ZWdpc3RlcnM6OmQ0OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IEFSTVJlZ2lz
dGVyczo6ZDU7Ci0gICAgLy8gQVJNdjcgZG9lc24ndCBwYXNzIGFyZ3VtZW50cyBpbiBmcCByZWdp
c3RlcnMuIFRoZSByZXR1cm4KLSAgICAvLyB2YWx1ZSBpcyBhbHNvIGFjdHVhbGx5IGluIGludGVn
ZXIgcmVnaXN0ZXJzLCBmb3Igbm93Ci0gICAgLy8gd2UnbGwgcmV0dXJuIGluIGQwIGZvciBzaW1w
bGljaXR5LgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBBUk1SZWdp
c3RlcnM6OmQwOyAvLyBmcFJlZ1QwCi0KLSNpZiBDUFUoQVJNX0hBUkRGUCkKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IEFSTVJlZ2lzdGVyczo6ZDA7IC8vIGZwUmVnVDAK
LSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IEFSTVJlZ2lzdGVyczo6ZDE7
IC8vIGZwUmVnVDEKLSNlbmRpZgotCi0gICAgLy8gRlBSUmVnIG1hcHBpbmcgaXMgZGlyZWN0LCB0
aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNhbgotICAgIC8vIGJlIHVzZWQgZGlyZWN0bHkg
YXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0ZXJCYW5rLgotICAgIENPTVBJTEVfQVNTRVJU
KEFSTVJlZ2lzdGVyczo6ZDAgPT0gMCwgZDBfaXNfMCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoQVJN
UmVnaXN0ZXJzOjpkMSA9PSAxLCBkMV9pc18xKTsKLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdp
c3RlcnM6OmQyID09IDIsIGQyX2lzXzIpOwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVy
czo6ZDMgPT0gMywgZDNfaXNfMyk7Ci0gICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpk
NCA9PSA0LCBkNF9pc180KTsKLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQ1ID09
IDUsIGQ1X2lzXzUpOwotICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRl
eCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4OwotICAgIH0KLSAgICBzdGF0
aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh1
bnNpZ25lZClyZWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShG
UFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsK
LSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDMyKTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7Ci0gICAgICAgICAgICAiZDAi
LCAiZDEiLCAiZDIiLCAiZDMiLAotICAgICAgICAgICAgImQ0IiwgImQ1IiwgImQ2IiwgImQ3IiwK
LSAgICAgICAgICAgICJkOCIsICJkOSIsICJkMTAiLCAiZDExIiwKLSAgICAgICAgICAgICJkMTIi
LCAiZDEzIiwgImQxNCIsICJkMTUiLAotICAgICAgICAgICAgImQxNiIsICJkMTciLCAiZDE4Iiwg
ImQxOSIsCi0gICAgICAgICAgICAiZDIwIiwgImQyMSIsICJkMjIiLCAiZDIzIiwKLSAgICAgICAg
ICAgICJkMjQiLCAiZDI1IiwgImQyNiIsICJkMjciLAotICAgICAgICAgICAgImQyOCIsICJkMjki
LCAiZDMwIiwgImQzMSIKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOwotICAgIH0KLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKE1JUFMpCi0KLWNsYXNzIEZQ
UkluZm8gewotcHVibGljOgotICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwotCi0gICAgLy8gVGVt
cG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBT
UmVnaXN0ZXJzOjpmMDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVn
aXN0ZXJzOjpmNDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0
ZXJzOjpmNjsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJz
OjpmODsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpm
MTA7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4
OwotCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3Rl
cnM6OmYwOwotCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVn
aXN0ZXJzOjpmMTI7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBT
UmVnaXN0ZXJzOjpmMTQ7Ci0KLSAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5k
ZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0gewotICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwg
ZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9OwotCi0gICAgICAgIEFTU0VSVChp
bmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5k
ZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyBy
ZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAgICAg
ICBBU1NFUlQocmVnIDwgMjApOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhG
b3JSZWdpc3RlclsyMF0gPSB7Ci0gICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LAotICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZh
bGlkSW5kZXgsCi0gICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwK
LSAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwKLSAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJ
bnZhbGlkSW5kZXgsCi0gICAgICAgIH07Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4
Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEZQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcgPCAzMik7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMzJdID0gewotICAgICAgICAgICAgImYwIiwgImYx
IiwgImYyIiwgImYzIiwKLSAgICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCi0gICAg
ICAgICAgICAiZjgiLCAiZjkiLCAiZjEwIiwgImYxMSIsCi0gICAgICAgICAgICAiZjEyIiwgImYx
MyIsICJmMTQiLCAiZjE1IgotICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIK
LSAgICAgICAgICAgICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCi0gICAgICAgICAgICAiZjI0
IiwgImYyNSIsICJmMjYiLCAiZjI3IgotICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwg
ImYzMSIKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwot
ICAgIH0KLXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4
ID0gMHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKFNINCkKLQotY2xhc3MgRlBS
SW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7Ci0KLSAgICAvLyBUZW1w
b3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IFNINFJl
Z2lzdGVyczo6ZHIwOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IFNINFJlZ2lz
dGVyczo6ZHIyOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IFNINFJlZ2lzdGVy
czo6ZHI0OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IFNINFJlZ2lzdGVyczo6
ZHI2OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IFNINFJlZ2lzdGVyczo6ZHI4
OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFNINFJlZ2lzdGVyczo6ZHIxMDsK
LQotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBTSDRSZWdpc3RlcnM6
OmRyMDsKLQotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gU0g0UmVnaXN0
ZXJzOjpkcjQ7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBTSDRSZWdp
c3RlcnM6OmRyNjsKLQotICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRl
eCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtu
dW1iZXJPZlJlZ2lzdGVyc10gPSB7Ci0gICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJl
Z1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07Ci0KLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtp
bmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAgICAgIEFT
U0VSVChyZWcgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJl
Z2lzdGVyWzE2XSA9IHsKLSAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgMSwgSW52YWxpZElu
ZGV4LAotICAgICAgICAgICAgMiwgSW52YWxpZEluZGV4LCAzLCBJbnZhbGlkSW5kZXgsCi0gICAg
ICAgICAgICA0LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRleCwKLSAgICAgICAgICAgIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleAotICAg
ICAgICB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107
Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJl
ZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAg
ICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZv
clJlZ2lzdGVyWzE2XSA9IHsKLSAgICAgICAgICAgICJkcjAiLCAiZnIxIiwgImRyMiIsICJmcjMi
LAotICAgICAgICAgICAgImRyNCIsICJmcjUiLCAiZHI2IiwgImZyNyIsCi0gICAgICAgICAgICAi
ZHI4IiwgImZyOSIsICJkcjEwIiwgImZyMTEiLAotICAgICAgICAgICAgImRyMTIiLCAiZnIxMyIs
ICJkcjE0IiwgImZyMTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0
ZXJbcmVnXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElu
dmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEpTQzo6RlBSUmVnIHJlZykKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIG91
dC5wcmludCgiJSIsIEpTQzo6RlBSSW5mbzo6ZGVidWdOYW1lKHJlZykpOwotI2Vsc2UKLSAgICBv
dXQucHJpbnRmKCIlJWZyJWQiLCByZWcpOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDljMzkwNGRmNzI2OTEyMTRhZGIwMTU4MGNiYWJhMWMzZWQ0NjBmNzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEdQUkluZm9faAotI2RlZmluZSBHUFJJbmZvX2gKLQotI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
ewotCi10eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIEdQUlJlZzsKLSNkZWZpbmUg
SW52YWxpZEdQUlJlZyAoKDo6SlNDOjpHUFJSZWcpLTEpCi0KLSNpZiBVU0UoSlNWQUxVRTY0KQot
Y2xhc3MgSlNWYWx1ZVJlZ3MgewotcHVibGljOgotICAgIEpTVmFsdWVSZWdzKCkKLSAgICAgICAg
OiBtX2dwcihJbnZhbGlkR1BSUmVnKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgZXhwbGljaXQg
SlNWYWx1ZVJlZ3MoR1BSUmVnIGdwcikKLSAgICAgICAgOiBtX2dwcihncHIpCi0gICAgewotICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIpOwotICAgIH0KLSAgICAKLSAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7
IH0KLSAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KLSAgICBH
UFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9Ci0gICAgCi1wcml2YXRl
OgotICAgIEdQUlJlZyBtX2dwcjsKLX07Ci0KLWNsYXNzIEpTVmFsdWVTb3VyY2UgewotcHVibGlj
OgotICAgIEpTVmFsdWVTb3VyY2UoKQotICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkK
LSAgICAgICAgLCBtX2Jhc2UoSW52YWxpZEdQUlJlZykKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IEpTVmFsdWVTb3VyY2UoSlNWYWx1ZVJlZ3MgcmVncykKLSAgICAgICAgOiBtX29mZnNldChub3RB
ZGRyZXNzKCkpCi0gICAgICAgICwgbV9iYXNlKHJlZ3MuZ3ByKCkpCi0gICAgewotICAgIH0KLSAg
ICAKLSAgICBleHBsaWNpdCBKU1ZhbHVlU291cmNlKEdQUlJlZyBncHIpCi0gICAgICAgIDogbV9v
ZmZzZXQobm90QWRkcmVzcygpKQotICAgICAgICAsIG1fYmFzZShncHIpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBKU1ZhbHVlU291cmNlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3Mp
Ci0gICAgICAgIDogbV9vZmZzZXQoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICwgbV9iYXNlKGFk
ZHJlc3MuYmFzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX29mZnNldCAhPSBub3RBZGRyZXNz
KCkpOwotICAgICAgICBBU1NFUlQobV9iYXNlICE9IEludmFsaWRHUFJSZWcpOwotICAgIH0KLSAg
ICAKLSAgICBzdGF0aWMgSlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQ
UikKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlU291cmNlKHBheWxvYWRHUFIpOwotICAg
IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZSA9PSBJ
bnZhbGlkR1BSUmVnOyB9Ci0gICAgCi0gICAgYm9vbCBpc0FkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldCAhPSBub3RBZGRyZXNzKCk7IH0KLSAgICAKLSAgICBpbnQzMl90IG9mZnNldCgp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNBZGRyZXNzKCkpOwotICAgICAgICByZXR1
cm4gbV9vZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIEdQUlJlZyBiYXNlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7Ci0gICAgICAgIHJldHVybiBtX2Jhc2U7Ci0g
ICAgfQotICAgIAotICAgIEdQUlJlZyBncHIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KCFpc0FkZHJlc3MoKSk7Ci0gICAgICAgIHJldHVybiBtX2Jhc2U7Ci0gICAgfQotICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UoKSwgb2Zmc2V0KCkpOyB9Ci0gICAgCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBub3RBZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAwMDAw
MDsgfSAgICAgCi0gICAgICAgICAgCi0gICAgaW50MzJfdCBtX29mZnNldDsKLSAgICBHUFJSZWcg
bV9iYXNlOwotfTsKLSNlbmRpZgotCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNsYXNzIEpTVmFs
dWVSZWdzIHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlUmVncygpCi0gICAgICAgIDogbV90YWdHUFIo
c3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKSkKLSAgICAgICAgLCBtX3BheWxvYWRH
UFIoc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKSkKLSAgICB7Ci0gICAgfQotICAg
IAotICAgIEpTVmFsdWVSZWdzKEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQotICAg
ICAgICA6IG1fdGFnR1BSKHRhZ0dQUikKLSAgICAgICAgLCBtX3BheWxvYWRHUFIocGF5bG9hZEdQ
UikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBKU1ZhbHVlUmVncyBwYXlsb2FkT25s
eShHUFJSZWcgZ3ByKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKEludmFsaWRH
UFJSZWcsIGdwcik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fdGFnR1BSKSA9PSBJbnZh
bGlkR1BSUmVnCi0gICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZEdQ
UikgPT0gSW52YWxpZEdQUlJlZzsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIHRhZ0dQUigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV90YWdHUFIpOyB9Ci0gICAgR1BSUmVn
IHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9h
ZEdQUik7IH0KLSAgICBHUFJSZWcgZ3ByKFdoaWNoVmFsdWVXb3JkIHdoaWNoKSBjb25zdAotICAg
IHsKLSAgICAgICAgc3dpdGNoICh3aGljaCkgewotICAgICAgICBjYXNlIFRhZ1dvcmQ6Ci0gICAg
ICAgICAgICByZXR1cm4gdGFnR1BSKCk7Ci0gICAgICAgIGNhc2UgUGF5bG9hZFdvcmQ6Ci0gICAg
ICAgICAgICByZXR1cm4gcGF5bG9hZEdQUigpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdGFnR1BSKCk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGludDhfdCBtX3RhZ0dQUjsKLSAgICBpbnQ4X3QgbV9wYXlsb2FkR1BSOwotfTsKLQot
Y2xhc3MgSlNWYWx1ZVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgSlNWYWx1ZVNvdXJjZSgpCi0gICAg
ICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQotICAgICAgICAsIG1fYmFzZU9yVGFnKHN0YXRp
Y19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCi0gICAgICAgICwgbV9wYXlsb2FkKHN0YXRp
Y19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCi0gICAgICAgICwgbV90YWdUeXBlKDApCi0g
ICAgewotICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlU291cmNlKEpTVmFsdWVSZWdzIHJlZ3MpCi0g
ICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQotICAgICAgICAsIG1fYmFzZU9yVGFnKHJl
Z3MudGFnR1BSKCkpCi0gICAgICAgICwgbV9wYXlsb2FkKHJlZ3MucGF5bG9hZEdQUigpKQotICAg
ICAgICAsIG1fdGFnVHlwZSgwKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZVNvdXJj
ZShHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKLSAgICAgICAgOiBtX29mZnNldChu
b3RBZGRyZXNzKCkpCi0gICAgICAgICwgbV9iYXNlT3JUYWcoc3RhdGljX2Nhc3Q8aW50OF90Pih0
YWdHUFIpKQotICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHBheWxvYWRH
UFIpKQotICAgICAgICAsIG1fdGFnVHlwZSgwKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgSlNW
YWx1ZVNvdXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQotICAgICAgICA6IG1f
b2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0
PGludDhfdD4oYWRkcmVzcy5iYXNlKSkKLSAgICAgICAgLCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8
aW50OF90PihJbnZhbGlkR1BSUmVnKSkKLSAgICAgICAgLCBtX3RhZ1R5cGUoMCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX29mZnNldCAhPSBub3RBZGRyZXNzKCkpOwotICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRhZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBKU1ZhbHVlU291cmNlIHVuYm94ZWRDZWxsKEdQUlJlZyBwYXls
b2FkR1BSKQotICAgIHsKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX29mZnNldCA9IG5vdEFkZHJlc3MoKTsKLSAgICAgICAgcmVzdWx0Lm1fYmFzZU9yVGFn
ID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgcmVzdWx0Lm1f
cGF5bG9hZCA9IHN0YXRpY19jYXN0PGludDhfdD4ocGF5bG9hZEdQUik7Ci0gICAgICAgIHJlc3Vs
dC5tX3RhZ1R5cGUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEpTVmFsdWU6OkNlbGxUYWcpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRh
ZykgPT0gSW52YWxpZEdQUlJlZwotICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPiht
X3BheWxvYWQpID09IEludmFsaWRHUFJSZWc7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNBZGRy
ZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghISp0aGlzKTsKLSAgICAgICAgcmV0
dXJuIG1fb2Zmc2V0ICE9IG5vdEFkZHJlc3MoKTsKLSAgICB9Ci0gICAgCi0gICAgaW50MzJfdCBv
ZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0OwotICAgIH0KLSAgICAKLSAgICBHUFJSZWcgYmFzZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNBZGRyZXNzKCkpOwotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRhZyk7Ci0gICAgfQotICAgIAotICAgIEdQUlJlZyB0
YWdHUFIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSAmJiBzdGF0
aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpOwotICAgIH0KLSAgICAKLSAg
ICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIWlzQWRk
cmVzcygpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBoYXNLbm93blRhZygpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQoISEqdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOwotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRhZykgPT0gSW52YWxpZEdQUlJl
ZzsKLSAgICB9Ci0gICAgCi0gICAgdWludDMyX3QgdGFnKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihtX3RhZ1R5cGUpOwotICAgIH0KLSAgICAKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3ModW5zaWduZWQgYWRkaXRpb25hbE9m
ZnNldCA9IDApIGNvbnN0IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UoKSwg
b2Zmc2V0KCkgKyBhZGRpdGlvbmFsT2Zmc2V0KTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdGF0
aWMgaW5saW5lIGludDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAg
IAotICAgICAgICAgIAotICAgIGludDMyX3QgbV9vZmZzZXQ7Ci0gICAgaW50OF90IG1fYmFzZU9y
VGFnOwotICAgIGludDhfdCBtX3BheWxvYWQ7IAotICAgIGludDhfdCBtX3RhZ1R5cGU7IC8vIENv
bnRhaW5zIHRoZSBsb3cgYml0cyBvZiB0aGUgdGFnLgotfTsKLSNlbmRpZgotCi0jaWYgQ1BVKFg4
NikKLSNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyAwCi0KLWNsYXNzIEdQUklu
Zm8gewotcHVibGljOgotICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA1OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUzsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBY
ODZSZWdpc3RlcnM6OmVzaTsKLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2Vs
aW5lIEpJVC4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0g
cmVnVDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSBy
ZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjplZGk7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZv
ciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4K
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWN4
OyAvLyByZWdUMgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gWDg2UmVn
aXN0ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIw
ID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBu
b25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYng7IC8vIHJlZ1QzCi0gICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBub25BcmdHUFIyID0gWDg2UmVnaXN0ZXJzOjplc2k7IC8vIHJlZ1Q0Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyBy
ZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0
ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OmVjeDsKLQotICAgIHN0YXRpYyBHUFJSZWcgdG9S
ZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG51
bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZv
ckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMs
IHJlZ1Q0IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PGludD4ocmVnKSA8IDgpOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhG
b3JSZWdpc3Rlcls4XSA9IHsgMCwgMiwgMSwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IDQsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJl
Z2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVi
dWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRH
UFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbOF0gPSB7Ci0gICAgICAgICAg
ICAiZWF4IiwgImVjeCIsICJlZHgiLCAiZWJ4IiwKLSAgICAgICAgICAgICJlc3AiLCAiZWJwIiwg
ImVzaSIsICJlZGkiLAotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W3JlZ107Ci0gICAgfQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZh
bGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoWDg2XzY0KQot
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDYKLQotY2xhc3MgR1BSSW5mbyB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDk7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTOwotCi0gICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQu
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6ZWF4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGFn
TWFza1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTU7Ci0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBYODZSZWdpc3RlcnM6OmVjeDsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gWDg2UmVnaXN0ZXJzOjplYng7Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUNCA9IFg4NlJlZ2lzdGVyczo6ZWRpOwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDUgPSBYODZSZWdpc3RlcnM6OmVzaTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1Q2ID0gWDg2UmVnaXN0ZXJzOjpyODsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q3
ID0gWDg2UmVnaXN0ZXJzOjpyOTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q4ID0gWDg2
UmVnaXN0ZXJzOjpyMTA7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVz
IGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVy
cy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6
ZWRpOyAvLyByZWdUNAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gWDg2
UmVnaXN0ZXJzOjplc2k7IC8vIHJlZ1Q1Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6ZWN4OyAvLyByZWdUMgotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFI0ID0gWDg2UmVnaXN0ZXJzOjpyODsgIC8vIHJlZ1Q2
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjUgPSBYODZSZWdpc3RlcnM6OnI5
OyAgLy8gcmVnVDcKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdp
c3RlcnM6OmVheDsgLy8gcmVnVDAKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEg
PSBYODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDgKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCi0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsg
Ly8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQ
UiA9IFg4NlJlZ2lzdGVyczo6ZXNpOwotCi0gICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVu
c2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdp
c3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVt
YmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJl
Z1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEdQUlJlZyB0b0FyZ3VtZW50UmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdp
c3RlckZvckluZGV4W251bWJlck9mQXJndW1lbnRSZWdpc3RlcnNdID0geyBhcmd1bWVudEdQUjAs
IGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyLCBhcmd1bWVudEdQUjMsIGFyZ3VtZW50R1BSNCwg
YXJndW1lbnRHUFI1IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsK
LSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsgMCwgMiwgMSwgMywgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIDUsIDQsIDYsIDcsIDgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07Ci0gICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgQVNTRVJUKHJlc3Vs
dCAhPSBJbnZhbGlkSW5kZXgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KHJlZykgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVn
aXN0ZXJbMTZdID0gewotICAgICAgICAgICAgInJheCIsICJyY3giLCAicmR4IiwgInJieCIsCi0g
ICAgICAgICAgICAicnNwIiwgInJicCIsICJyc2kiLCAicmRpIiwKLSAgICAgICAgICAgICJyOCIs
ICJyOSIsICJyMTAiLCAicjExIiwKLSAgICAgICAgICAgICJyMTIiLCAicjEzIiwgInIxNCIsICJy
MTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAg
ICB9Ci1wcml2YXRlOgotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9
IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5kaWYKLQotI2lmIENQVShBUk0pCi0jZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNAotCi1jbGFzcyBHUFJJbmZvIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mUmVnaXN0ZXJzID0gODsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7Ci0KLSAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAg
PSBBUk1SZWdpc3RlcnM6OnIwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBBUk1S
ZWdpc3RlcnM6OnIxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBBUk1SZWdpc3Rl
cnM6OnIyOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBBUk1SZWdpc3RlcnM6OnI0
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBBUk1SZWdpc3RlcnM6OnI4OwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBBUk1SZWdpc3RlcnM6OnI5OwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnVDYgPSBBUk1SZWdpc3RlcnM6OnIxMDsKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1Q3ID0gQVJNUmVnaXN0ZXJzOjpyMTE7Ci0gICAgLy8gVGhlc2UgcmVnaXN0
ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNo
ZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVk
UmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJh
bWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjU7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHBy
b3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJu
IHZhbHVlIHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9
IEFSTVJlZ2lzdGVyczo6cjA7IC8vIHJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjEgPSBBUk1SZWdpc3RlcnM6OnIxOyAvLyByZWdUMQotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIyID0gQVJNUmVnaXN0ZXJzOjpyMjsgLy8gcmVnVDIKLSAgICAvLyBG
SVhNRTogcjMgaXMgY3VycmVudGx5IHVzZWQgYmUgdGhlIE1hY3JvQXNzZW1ibGVyIGFzIGEgdGVt
cG9yYXJ5IC0gaXQgc2VlbXMKLSAgICAvLyBUaGlzIGNvdWxkIHRocmVvcmV0aWNhbGx5IGJlIGEg
cHJvYmxlbSBpZiB0aGlzIGlzIHVzZWQgaW4gY29kZSBnZW5lcmF0aW9uCi0gICAgLy8gYmV0d2Vl
biB0aGUgYXJndW1lbnRzIGJlaW5nIHNldCB1cCwgYW5kIHRoZSBjYWxsIGJlaW5nIG1hZGUuIFRo
YXQgc2FpZCwKLSAgICAvLyBhbnkgY2hhbmdlIGludHJvZHVjaW5nIGEgcHJvYmxlbSBoZXJlIGlz
IGxpa2VseSB0byBiZSBpbW1lZGlhdGVseSBhcHBhcmVudCEKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IEFSTVJlZ2lzdGVyczo6cjM7IC8vIEZJWE1FIQotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IEFSTVJlZ2lzdGVyczo6cjQ7IC8vIHJlZ1QzCi0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gQVJNUmVnaXN0ZXJzOjpyODsgLy8g
cmVnVDQKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSBBUk1SZWdpc3RlcnM6
OnI5OyAvLyByZWdUNQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBB
Uk1SZWdpc3RlcnM6OnIwOyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJu
VmFsdWVHUFIyID0gQVJNUmVnaXN0ZXJzOjpyMTsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTVJlZ2lzdGVyczo6cjI7Ci0KLSAg
ICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAg
ICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNyB9OwotICAgICAg
ICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHVu
c2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmVnKSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyZWcpIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IDAsIDEsIDIsIEludmFsaWRJbmRleCwgMywg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNCwgNSwgNiwgNywgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07Ci0g
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSAhPSBJbnZhbGlk
R1BSUmVnKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWcpIDwgMTYp
OwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAg
ICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsCi0gICAgICAgICAgICAicjQiLCAicjUi
LCAicjYiLCAicjciLAotICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLAotICAg
ICAgICAgICAgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKLSAgICAgICAgfTsKLSAgICAgICAg
cmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLXByaXZhdGU6Ci0KLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRp
ZgotCi0jaWYgQ1BVKE1JUFMpCi0jZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
NAotCi1jbGFzcyBHUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3Rl
clR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJz
LgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0OwotICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjp0NTsKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6dDY7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUNSA9IE1JUFNSZWdpc3RlcnM6OnQ3OwotICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRj
aCB0aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKLSAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0
aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUg
cmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gTUlQU1Jl
Z2lzdGVyczo6YTA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBNSVBT
UmVnaXN0ZXJzOjphMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IE1J
UFNSZWdpc3RlcnM6OmEyOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0g
TUlQU1JlZ2lzdGVyczo6YTM7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0g
cmVnVDI7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDM7Ci0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDQ7Ci0gICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUNTsKLQotICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9m
UmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4
W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0
LCByZWdUNSB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAg
fQotCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcgPCAx
Nik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9
IHsgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCA0LCA1IH07Ci0gICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgQVNTRVJU
KHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcg
PCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0g
ewotICAgICAgICAgICAgInplcm8iLCAiYXQiLCAidjAiLCAidjEiLAotICAgICAgICAgICAgImEw
IiwgImExIiwgImEyIiwgImEzIiwKLSAgICAgICAgICAgICJ0MCIsICJ0MSIsICJ0MiIsICJ0MyIs
Ci0gICAgICAgICAgICAidDQiLCAidDUiLCAidDYiLCAidDciCi0gICAgICAgIH07Ci0gICAgICAg
IHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5k
aWYKLQotI2lmIENQVShTSDQpCi0jZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
NAotCi1jbGFzcyBHUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3Rl
clR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7
Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDAgPSBTSDRSZWdpc3RlcnM6OnIwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEg
PSBTSDRSZWdpc3RlcnM6OnIxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBTSDRS
ZWdpc3RlcnM6OnIyOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBTSDRSZWdpc3Rl
cnM6OnIxMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpy
NDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpyNTsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2ID0gU0g0UmVnaXN0ZXJzOjpyNjsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1Q3ID0gU0g0UmVnaXN0ZXJzOjpyNzsKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1Q4ID0gU0g0UmVnaXN0ZXJzOjpyODsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1Q5ID0gU0g0UmVnaXN0ZXJzOjpyOTsKLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0
Y2ggdGhlIGJhc2VsaW5lIEpJVC4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3Vs
dFJlZ2lzdGVyID0gcmVnVDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRS
ZWdpc3RlcjIgPSByZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lz
dGVyID0gU0g0UmVnaXN0ZXJzOjpmcDsKLSAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0
aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUg
cmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gcmVnVDQ7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSByZWdUNTsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IHJlZ1Q2OwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIzID0gcmVnVDc7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25B
cmdHUFIwID0gcmVnVDM7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVn
VDg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDk7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKLQotICAgIHN0YXRpYyBHUFJSZWcg
dG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8
IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3Rl
ckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdUOCwgcmVnVDkgfTsKLSAgICAgICAg
cmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTQpOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNF0gPSB7IDAsIDEsIDIsIEludmFsaWRJ
bmRleCwgNCwgNSwgNiwgNywgOCwgOSwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVy
W3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1l
KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcp
OwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciog
bmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJy
MyIsICJyNCIsICJyNSIsICJyNiIsICJyNyIsCi0gICAgICAgICAgICAicjgiLCAicjkiLCAicjEw
IiwgInIxMSIsICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiCi0gICAgICAgIH07Ci0gICAgICAg
IHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1pbmxpbmUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6R1BSUmVnIHJlZykKLXsKLSNp
ZiBFTkFCTEUoSklUKQotICAgIG91dC5wcmludCgiJSIsIEpTQzo6R1BSSW5mbzo6ZGVidWdOYW1l
KHJlZykpOwotI2Vsc2UKLSAgICBvdXQucHJpbnRmKCIlJXIlZCIsIHJlZyk7Ci0jZW5kaWYKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDg2ZmM0MmM1ODhiNWZmNmE3ODhlZjBhYzRjMmNiYmIzZmM3OWZjMWEuLjJiZmZiNDUx
Yjc3ZTk0ODhjODM1MTE4ZWRlNjVkOGUyNzY0NzJiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
Q29kZUJsb2NrKiBjb2RlYmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWQKIH0KIAogSklU
OjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IEpTSW50ZXJmYWNlSklU
KHZtLCBjb2RlQmxvY2spCi0gICAgLCBtX2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKKyAg
ICA6IG1faW50ZXJwcmV0ZXIodm0tPmludGVycHJldGVyKQorICAgICwgbV92bSh2bSkKKyAgICAs
IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fbGFiZWxzKGNvZGVCbG9jayA/IGNvZGVC
bG9jay0+bnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSA6IDApCiAgICAgLCBtX2J5dGVjb2RlT2Zmc2V0
KCh1bnNpZ25lZCktMSkKICAgICAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KFVJ
TlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggOTRlMGRmYmRjOTYyMmQ1ZDM0YzU0
Yjk0MjZlMWQxYTUzZTM3ZDk4MS4uZDY2NTQ4ZDQxODk3OTAyZjU1NThhZWFhMjNhYmU2ODFkNjQ1
OTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC04ODYsNiArODg2LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsK
KyAgICAgICAgVk0qIG1fdm07CisgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAKICAg
ICAgICAgVmVjdG9yPENhbGxSZWNvcmQ+IG1fY2FsbHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4g
bV9sYWJlbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IGI1YjIwMjA2MTExZjZhNjQ3YjQwNmM5ZmEzOTBmZDM2YjE0ZjQwY2QuLjU1
ZjhjMDdmYTVhOGU4NjcxZmFhYjBlNjkwMzA3ZTMzMGY2MmUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJH
ZW5lcmF0b3IoVk0qIHZtKQogewotICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisgICAgSlNJ
bnRlcmZhY2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwogICAgIGZhaWx1cmVzLmFw
cGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCAyNDk3NmEyNThmMGYyMmVhZmU1MDU5ZDU1YzY0M2YzNjczMmYzNzIy
Li43OGE5ZTc5ZmVjZDE5MmFhODU2YTljYjRiMzg0Yjg2MTlkNDA5MjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1
YkdlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKKyAgICBK
U0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgZmFpbHVyZXMu
YXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKaW5k
ZXggNzA4ZDFhZDllZmRmZGM5ZDk4NWE2NWI4OGMwYWJlOWU1NTA0OWNlMi4uYzI4OWY1NDJhZDNj
YWZjN2JkZDRjMzhjMDg1OTI2NTkxNjE1ZDU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBKU0ludGVyZmFj
ZUpJVF9oCiAKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQ0Nh
bGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMzksMTMgKzM4LDggQEAKICNpZiBFTkFCTEUo
SklUKQogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU0ludGVyZmFjZUpJVCA6IHB1Ymxp
YyBDQ2FsbEhlbHBlcnMgeworICAgIGNsYXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTSW50ZXJmYWNlSklUKFZNKiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwKQotICAgICAgICAgICAgOiBDQ2FsbEhlbHBlcnModm0s
IGNvZGVCbG9jaykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICAvLyBO
T1RFUzoKICAgICAgICAgLy8KICAgICAgICAgLy8gcmVnVDAgaGFzIHR3byBzcGVjaWFsIG1lYW5p
bmdzLiAgVGhlIHJldHVybiB2YWx1ZSBmcm9tIGEgc3R1YgpAQCAtMjEyLDYgKzIwNiw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhl
YWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwogICAgICAg
ICB2b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7CiAKKyAgICAgICAgdm9pZCBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCk7CisgICAgICAgIHZvaWQgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCk7CisgICAgICAgIHZvaWQgcmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyk7CiAgICAgICAgIHZvaWQgcmVzdG9yZUFy
Z3VtZW50UmVmZXJlbmNlKCk7CiAKICAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTM5OSw2
ICszOTYsNzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2Us
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJl
Z2lzdGVyKSkpOwogICAgIH0KIAorI2lmIENQVShBUk0pCisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgSlNJbnRlcmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3Rl
cklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUobGlua1JlZ2lzdGVyLCByZWcpOworICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92
ZShyZWcsIGxpbmtSZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCBsaW5rUmVnaXN0ZXIp
OworICAgIH0KKyNlbGlmIENQVShTSDQpCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRl
cmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7CisgICAgfQorICAgIAorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
ZHNwcihyZWcpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZh
Y2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGxvYWRQdHJMaW5rUmVnKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyNl
bGlmIENQVShNSVBTKQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpw
cmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAg
ICAgICBtb3ZlKHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisgICAgCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVnLCByZXR1
cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
SlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1Jl
Z2lzdGVyKTsKKyAgICB9CisgICAgCisjZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBwb3AocmVnKTsK
KyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAg
ICAgIHB1c2gocmVnKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50
ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBwdXNoKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyNlbmRpZgor
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlQXJndW1lbnRS
ZWZlcmVuY2UoKQogICAgIHsKICAgICAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3RlciwgZmly
c3RBcmd1bWVudFJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVj
aWFsaXplZFRodW5rSklULmgKaW5kZXggZWYxNWRjMDc3OGVkZmE3OWJkMGY4ZDdmNWUwMTcxNTY4
MzAxNWY5Mi4uOWEwZTBhMzBlNWE2NGJhNTgzODkxZjJkY2VmMjU1MWQ5MjdjZjdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKQEAgLTM3
LDggKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJ
VCA6IHB1YmxpYyBKU0ludGVyZmFjZUpJVCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IFRoaXNBcmd1bWVudCA9IC0xOwotICAgICAgICBTcGVjaWFsaXplZFRodW5rSklU
KFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQpCi0gICAgICAgICAgICA6IEpTSW50ZXJmYWNl
SklUKHZtKQorICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKGludCBleHBlY3RlZEFyZ0NvdW50
KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVj
dGVkIG51bWJlciBvZiBhcmd1bWVudHMKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJy
YW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CkBAIC0xMzEsOSArMTMwLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXQoKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQorICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZmluYWxpemUoVk0mIHZtLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ss
IGNvbnN0IGNoYXIqIHRodW5rS2luZCkKICAgICAgICAgewotICAgICAgICAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqbV92bSwgdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sIHRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAgICAg
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZmFpbHVyZXMsIENvZGVMb2NhdGlvbkxhYmVsKGZh
bGxiYWNrKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5z
aXplKCk7IGkrKykKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0u
Zmlyc3QsIG1fY2FsbHNbaV0uc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCBkNzkxNGNiMGFiOGYzMTA5MGY3OWVlNDgyYWMxNjgx
NGNmNzA1ZmM4Li42MmI4ODk5Mzg1ZGU0Yjk3ZWUzMWE3NDk2Yjg4MTk4NzY5MWE3NGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBKU0ludGVyZmFjZUpJVDo6Q2FsbCBnZW5lcmF0ZVNsb3dDYXNlRm9y
KFZNKiB2bSwgSlNJbnRlcmZhY2VKSVQmIGppdCkKIAogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBsaW5rRm9yR2VuZXJhdG9yKFZNKiB2bSwgRnVuY3Rpb25QdHIgbGF6eUxpbmssIEZ1bmN0
aW9uUHRyIG5vdEpTRnVuY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgSlNJbnRlcmZh
Y2VKSVQgaml0KHZtKTsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgCiAgICAgSlNJbnRl
cmZhY2VKSVQ6Okp1bXBMaXN0IHNsb3dDYXNlOwogICAgIApAQCAtMTE0LDcgKzExNCw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxHZW5lcmF0b3IoVk0qIHZtKQogCiBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JHZW5lcmF0b3IoVk0qIHZtLCBG
dW5jdGlvblB0ciBjb21waWxlLCBGdW5jdGlvblB0ciBub3RKU0Z1bmN0aW9uLCBjb25zdCBjaGFy
KiBuYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7Ci0gICAgSlNJbnRlcmZhY2VK
SVQgaml0KHZtKTsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgCiAgICAgSlNJbnRlcmZh
Y2VKSVQ6Okp1bXBMaXN0IHNsb3dDYXNlOwogCkBAIC0xNjksNyArMTY5LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHZpcnR1YWxDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgc3RyaW5nTGVuZ3RoVHJhbXBvbGluZUdlbmVyYXRvcihWTSogdm0pCiB7
Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAg
ICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAvLyBDaGVjayBlYXggaXMgYSBzdHJpbmcKQEAg
LTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdl
bmVyYXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQgawogewogICAgIGludCBleGVj
dXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiA9IE5hdGl2ZUV4ZWN1dGFibGU6Om9mZnNldE9mTmF0aXZl
RnVuY3Rpb25Gb3Ioa2luZCk7CiAgICAgCi0gICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKKyAg
ICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgCiAgICAgaml0LmVtaXRQdXRJbW1lZGlhdGVUb0Nh
bGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIGppdC5zdG9yZVB0cihK
U0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS0+dG9wQ2FsbEZyYW1lKTsKQEAg
LTQyMSw3ICs0MjEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3RydWN0R2Vu
ZXJhdG9yKFZNKiB2bSkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qIHZt
KQogewotICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogCiAgICAgLy8gV2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBpbiByZWdUMAogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC01MzksNDEgKzUzOSw0MSBAQCBzdGF0aWMgdm9pZCBjaGFyVG9TdHJpbmco
U3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0sIE1hY3JvQXNzZW1ibGVyOjpSZWdpcwog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
IHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQoMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgaml0LnJl
dHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZp
bmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJjaGFyQ29kZUF0Iik7Cisg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2
bSksICJjaGFyQ29kZUF0Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGpp
dCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsK
LSAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSks
ICJjaGFyQXQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtKSwgImNoYXJBdCIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtLCAxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKICAgICAv
LyBsb2FkIGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZt
LCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CiB9CiAK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCgxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCiAgICAg
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
Zih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKIAogICAgIGppdC5sb2FkRG91Ymxl
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIGppdC5yZXR1cm5Eb3Vi
bGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAic3FydCIpOworICAgIHJldHVybiBq
aXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAic3FydCIp
OwogfQogCiAKQEAgLTY2OCw3ICs2NjgsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGhhbGZDb25z
dGFudCA9IDAuNTsKICAgICAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9u
SW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGZsb29yKSB8fCAhaml0LnN1
cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxs
KHZtKSk7CkBAIC02OTUsMTIgKzY5NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JU
aHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKICAgICBkb3VibGVSZXN1bHQubGluaygmaml0KTsKICAgICBqaXQucmV0
dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQu
ZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImZsb29yIik7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSks
ICJmbG9vciIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihj
ZWlsKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVt
cDsKQEAgLTcxNCwxMiArNzE0LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJldHVybkRv
dWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFs
aXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJjZWlsIik7CisgICAgcmV0dXJu
IGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJjZWls
Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQoMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihqc1JvdW5k
KSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsK
QEAgLTc0OCwzOCArNzQ4LDM4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDApOwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1cm5Eb3Vi
bGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAicm91bmQiKTsKKyAgICByZXR1cm4g
aml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgInJvdW5k
Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKQogICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOwogICAgIGlmICghaml0LnN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpm
cFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVU
b0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhwKSk7CiAgICAg
aml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJleHAiKTsK
KyAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxs
KHZtKSwgImV4cCIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSkKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwotICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKICAgICBpZiAo
IWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSkpOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5j
YWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGxv
ZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7
Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0p
LCAibG9nIik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSksICJsb2ciKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1Ro
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwg
MSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9y
dHNGbG9hdGluZ1BvaW50QWJzKCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0pKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwpAQCAtNzk0LDEyICs3
OTQsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkK
ICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuYWJzRG91YmxlKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOwog
ICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7Ci0gICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiYWJz
Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
Q2FsbCh2bSksICJhYnMiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMik7Cisg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMik7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9h
dGluZ1BvaW50KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKIApA
QCAtODQ2LDEyICs4NDYsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5rR2VuZXJh
dG9yKFZNKiB2bSkKICAgICB9IGVsc2UKICAgICAgICAgaml0LmFwcGVuZEZhaWx1cmUobm9uSW50
RXhwb25lbnQpOwogCi0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwodm0pLCAicG93Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJwb3ciKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVu
a0pJVCBqaXQodm0sIDIpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDIpOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZzBKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50QXJnMEp1bXApOwogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OkxhYmVsIGRvbmVMb2FkaW5nQXJnMCgmaml0KTsKQEAgLTg3
OSw3ICs4NzksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKICAgICB9IGVsc2UKICAgICAgICAgaml0LmFwcGVuZEZhaWx1cmUobm9uSW50QXJnMUp1
bXApOwogCi0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNh
bGwodm0pLCAiaW11bCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiaW11bCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCBhNzM4N2Q1NGM1YWQ1ZWVkYmZmYTE0
MmI5NGNhODkwNzMyYjExYzliLi5mZTU3YWEzNzQ1ODY0ZWExOTEyM2RlN2Q5MDE4NjVlY2IyYTI4
YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2
b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7Ci0gICAgSlNJbnRlcmZh
Y2VKSVQgaml0KHZtKTsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgCiAgICAgLy8gRklY
TUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEkn
bSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBiNjJi
OWM1N2I2NzQ2ZjkxZWQwN2RhZTEzMjcxNTExOWQ1Nzc1ZmQ1Li5mZjU1NzA3MzJjNTM2ODMzNTMx
ZTEwMzllZjAzZGFlMjZkMjJlNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC00MCwxMCArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIHZhbHVl
cyBhcyBiZWluZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRl
ZC4KICNkZWZpbmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKIAotY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlND
ZWxsOwotY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIFZNOwogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU09iamVjdDsKQEAgLTUzLDcgKzUxLDEwIEBAIGNsYXNzIFByb3BlcnR5U2xv
dDsKIGNsYXNzIFB1dFByb3BlcnR5U2xvdDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFj
ZSBERkcgeworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgSklUQ29tcGlsZXI7CitjbGFz
cyBKSVRDb2RlR2VuZXJhdG9yOworY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIE9TUkV4aXRD
b21waWxlcjsKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogfQpAQCAtMTE1LDE2ICsxMTYsMTcgQEAg
aW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCiAKIGNsYXNzIEpTVmFsdWUg
ewogICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOwotICAgIGZyaWVu
ZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmll
bmQgY2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAg
ICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNl
SklUOwotICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlU291cmNlOwogICAgIGZyaWVuZCBjbGFzcyBT
cGVjaWFsaXplZFRodW5rSklUOwogI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFz
cyBERkc6OkFzc2VtYmx5SGVscGVyczsKICAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxl
cjsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb2RlR2VuZXJhdG9yOworICAgIGZyaWVuZCBj
bGFzcyBERkc6OkpTVmFsdWVTb3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhpdENv
bXBpbGVyOwogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>