<?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>202733</bug_id>
          
          <creation_ts>2019-10-09 01:47:32 -0700</creation_ts>
          <short_desc>Add libwebrtc third-party pfft</short_desc>
          <delta_ts>2019-10-17 11:20:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>pnormand</cc>
    
    <cc>tsaunier</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578140</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 01:47:32 -0700</bug_when>
    <thetext>Add libwebrtc third-party pfft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578145</commentid>
    <comment_count>1</comment_count>
      <attachid>380516</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 01:51:18 -0700</bug_when>
    <thetext>Created attachment 380516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581062</commentid>
    <comment_count>2</comment_count>
      <attachid>380516</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-17 11:19:04 -0700</bug_when>
    <thetext>Comment on attachment 380516
Patch

Clearing flags on attachment: 380516

Committed r251248: &lt;https://trac.webkit.org/changeset/251248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581063</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-17 11:19:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581069</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-17 11:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/56377730&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380516</attachid>
            <date>2019-10-09 01:51:18 -0700</date>
            <delta_ts>2019-10-17 11:19:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202733-20191009105114.patch</filename>
            <type>text/plain</type>
            <size>274603</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1ZDE1Y2MxNDEyNTI5NmJhYjQ2NjdiMDQxZjM2ZWM4ODYzMzdkNDZlLi43MDQ0
OWNkZDAzNGIxY2FmNzZjNGYwNjJiMzcyZTY1MGQxYzhkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0wOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxpYndlYnJ0YyB0aGlyZC1w
YXJ0eSBwZmZ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDI3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbml0aWFsIGNoZWNrLWluIG9mIHBmZnQgd2hpY2ggaXMgbm93IHVzZWQgaW4gbGlid2VicnRj
LgorCisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0OiBBZGRlZC4KKwogMjAxOS0x
MC0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IGxpYndlYnJ0YyB0aGlyZC1wYXJ0eSBib3Jpbmdzc2wgdG8gTTc4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9C
VUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNjllZWM1NWE2YzI1MzgxNjlmMjNlY2E1MTBmMWExNTJiZmJk
MjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9wZmZmdC9CVUlMRC5nbgpAQCAtMCwwICsxLDExNCBAQAorIyBDb3B5cmln
aHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQoIi8vYnVp
bGQvY29uZmlnL2FybS5nbmkiKQoraW1wb3J0KCIvL3Rlc3RpbmcvbGliZnV6emVyL2Z1enplcl90
ZXN0LmduaSIpCitpbXBvcnQoIi8vdGVzdGluZy90ZXN0LmduaSIpCisKK2NvbmZpZygiY29tbW9u
X2NvbmZpZyIpIHsKKyAgaWYgKGlzX3dpbikgeworICAgIGRlZmluZXMgPSBbCisgICAgICAjIFJl
cXVpcmVkIHRvIHVzZSBtYXRoIGNvbnN0YW50cyBmcm9tIG1hdGguaC4KKyAgICAgICJfVVNFX01B
VEhfREVGSU5FUyIsCisgICAgXQorICB9CisKKyAgIyBQRkZGVCBkb2Vzbid0IHN1cHBvcnQgU0lN
RCBvbiBtaXBzZWwsIHNvIGJ1aWxkIGEgc2NhbGFyIHZlcnNpb24uCisgIGlmICgoY3VycmVudF9j
cHUgPT0gImFybSIgJiYgIWFybV91c2VfbmVvbikgfHwgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIp
IHsKKyAgICBkZWZpbmVzID0gWyAiUEZGRlRfU0lNRF9ESVNBQkxFIiBdCisgIH0KK30KKworc3Rh
dGljX2xpYnJhcnkoInBmZmZ0IikgeworICBjb25maWdzICs9IFsgIjpjb21tb25fY29uZmlnIiBd
CisgIHNvdXJjZXMgPSBbCisgICAgInNyYy9wZmZmdC5jIiwKKyAgICAic3JjL3BmZmZ0LmgiLAor
ICBdCit9CisKKyMgRnV6emluZy4KKworZ3JvdXAoImZ1enplcnMiKSB7CisgIHRlc3Rvbmx5ID0g
dHJ1ZQorICBkZXBzID0gWworICAgICI6cGZmZnRfY29tcGxleF9mdXp6ZXIiLAorICAgICI6cGZm
ZnRfcmVhbF9mdXp6ZXIiLAorICBdCit9CisKK2Z1enplcl90ZXN0ZGF0YV9kaXIgPSAiJHRhcmdl
dF9nZW5fZGlyL3Rlc3RkYXRhIgorCithY3Rpb24oImdlbmVyYXRlX3BmZmZ0X2Z1enplcl9jb3Jw
dXMiKSB7CisgIHNjcmlwdCA9ICJnZW5lcmF0ZV9zZWVkX2NvcnB1cy5weSIKKyAgc291cmNlcyA9
IFsKKyAgICAiZ2VuZXJhdGVfc2VlZF9jb3JwdXMucHkiLAorICBdCisgIGFyZ3MgPSBbIHJlYmFz
ZV9wYXRoKGZ1enplcl90ZXN0ZGF0YV9kaXIsIHJvb3RfYnVpbGRfZGlyKSBdCisgIG91dHB1dHMg
PSBbCisgICAgZnV6emVyX3Rlc3RkYXRhX2RpciwKKyAgXQorfQorCitmdXp6ZXJfdGVzdCgicGZm
ZnRfY29tcGxleF9mdXp6ZXIiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgInBmZmZ0X2Z1enplci5j
YyIsCisgIF0KKyAgY2ZsYWdzID0gWyAiLURUUkFOU0ZPUk1fQ09NUExFWCIgXQorICBkZXBzID0g
WworICAgICI6cGZmZnQiLAorICBdCisgIHNlZWRfY29ycHVzID0gZnV6emVyX3Rlc3RkYXRhX2Rp
cgorICBzZWVkX2NvcnB1c19kZXBzID0gWyAiOmdlbmVyYXRlX3BmZmZ0X2Z1enplcl9jb3JwdXMi
IF0KK30KKworZnV6emVyX3Rlc3QoInBmZmZ0X3JlYWxfZnV6emVyIikgeworICBzb3VyY2VzID0g
WworICAgICJwZmZmdF9mdXp6ZXIuY2MiLAorICBdCisgIGNmbGFncyA9IFsgIi1EVFJBTlNGT1JN
X1JFQUwiIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBmZmZ0IiwKKyAgXQorICBzZWVkX2NvcnB1cyA9
IGZ1enplcl90ZXN0ZGF0YV9kaXIKKyAgc2VlZF9jb3JwdXNfZGVwcyA9IFsgIjpnZW5lcmF0ZV9w
ZmZmdF9mdXp6ZXJfY29ycHVzIiBdCit9CisKKyMgVW5pdCB0ZXN0cyBhbmQgYmVuY2htYXJrLgor
CisjIFRoaXMgdGFyZ2V0IG11c3QgYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIGFuZCBiZW5jaG1h
cmsgcHVycG9zZXMuCitzdGF0aWNfbGlicmFyeSgiZmZ0cGFjayIpIHsKKyAgdGVzdG9ubHkgPSB0
cnVlCisgIGNvbmZpZ3MgKz0gWyAiOmNvbW1vbl9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAic3JjL2ZmdHBhY2suYyIsCisgICAgInNyYy9mZnRwYWNrLmgiLAorICBdCisgIHZpc2liaWxp
dHkgPSBbICI6KiIgXQorfQorCitleGVjdXRhYmxlKCJwZmZmdF9iZW5jaG1hcmsiKSB7CisgIHRl
c3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzICs9IFsgIjpjb21tb25fY29uZmlnIiBdCisgIHNvdXJj
ZXMgPSBbCisgICAgInNyYy90ZXN0X3BmZmZ0LmMiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpm
ZnRwYWNrIiwKKyAgICAiOnBmZmZ0IiwKKyAgXQorfQorCit0ZXN0KCJwZmZmdF91bml0dGVzdCIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIHNvdXJjZXMgPSBbCisgICAgInBmZmZ0X3VuaXR0ZXN0
LmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZmZ0cGFjayIsCisgICAgIjpwZmZmdCIsCisg
ICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgIi8vdGVzdGluZy9ndGVzdDpndGVzdF9tYWluIiwK
KyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9wZmZmdC9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9wZmZmdC9ERVBTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjYTYxZmNmNjRiNzFmMjE3NmIz
ZjgxMDUwMjc4NDA1ZGYyYTNjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L0RFUFMKQEAgLTAsMCArMSwzIEBA
CitpbmNsdWRlX3J1bGVzID0gWworICAiK3Rlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVzdCIsCitd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3BmZmZ0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3BmZmZ0L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4NjIzZjM1Y2JjMjg1M2UzMmEz
MzM1YjU2MzJjYWM5YTQwNzhlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvTElDRU5TRQpAQCAtMCwwICsxLDQ1
IEBACitDb3B5cmlnaHQgKGMpIDIwMTMgIEp1bGllbiBQb21taWVyICggcG9tbWllckBtb2RhcnR0
LmNvbSApCisKK0Jhc2VkIG9uIG9yaWdpbmFsIGZvcnRyYW4gNzcgY29kZSBmcm9tIEZGVFBBQ0t2
NCBmcm9tIE5FVExJQiwKK2F1dGhvcmVkIGJ5IERyIFBhdWwgU3dhcnp0cmF1YmVyIG9mIE5DQVIs
IGluIDE5ODUuCisKK0FzIGNvbmZpcm1lZCBieSB0aGUgTkNBUiBmZnRwYWNrIHNvZnR3YXJlIGN1
cmF0b3JzLCB0aGUgZm9sbG93aW5nCitGRlRQQUNLdjUgbGljZW5zZSBhcHBsaWVzIHRvIEZGVFBB
Q0t2NCBzb3VyY2VzLiBNeSBjaGFuZ2VzIGFyZQorcmVsZWFzZWQgdW5kZXIgdGhlIHNhbWUgdGVy
bXMuCisKK0ZGVFBBQ0sgbGljZW5zZToKKworaHR0cDovL3d3dy5jaXNsLnVjYXIuZWR1L2Nzcy9z
b2Z0d2FyZS9mZnRwYWNrNS9mdHBrLmh0bWwKKworQ29weXJpZ2h0IChjKSAyMDA0IHRoZSBVbml2
ZXJzaXR5IENvcnBvcmF0aW9uIGZvciBBdG1vc3BoZXJpYworUmVzZWFyY2ggKCJVQ0FSIikuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIERldmVsb3BlZCBieSBOQ0FSJ3MKK0NvbXB1dGF0aW9uYWwgYW5k
IEluZm9ybWF0aW9uIFN5c3RlbXMgTGFib3JhdG9yeSwgVUNBUiwKK3d3dy5jaXNsLnVjYXIuZWR1
LgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoZSBTb2Z0d2FyZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3JtcywKK3dpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZQorZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworLSBO
ZWl0aGVyIHRoZSBuYW1lcyBvZiBOQ0FSJ3MgQ29tcHV0YXRpb25hbCBhbmQgSW5mb3JtYXRpb24g
U3lzdGVtcworTGFib3JhdG9yeSwgdGhlIFVuaXZlcnNpdHkgQ29ycG9yYXRpb24gZm9yIEF0bW9z
cGhlcmljIFJlc2VhcmNoLAorbm9yIHRoZSBuYW1lcyBvZiBpdHMgc3BvbnNvcnMgb3IgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvCitlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMgU29mdHdhcmUgd2l0aG91dAorc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorCistIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2VzLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5k
IHRoZSBkaXNjbGFpbWVyIGJlbG93LgorCistIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zLCBhbmQgdGhlIGRpc2NsYWltZXIgYmVsb3cgaW4gdGhlCitkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlv
bi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELAorRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPTlRSSUJVVE9SUyBPUiBDT1BZUklHSFQKK0hPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOCitB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBP
RiBPUiBJTgorQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIFdJVEggVEhFCitTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvT1dORVJTIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9PV05FUlMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjk1NmEyMzQ5ZDQzOWRkZDkzNGY3NmZlZmM3ZmE4YmE2ZTRmZDIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
cGZmZnQvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorbWF4bW9yaW5AY2hyb21pdW0ub3JnCitvbGth
QGNocm9taXVtLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9SRUFETUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L1JFQURNRS5jaHJvbWl1bQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YzViMTljY2Y2NGE5MDkyYmIwNGRjNmY5MWQyZTJmYmZiNzI2OTZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9wZmZmdC9SRUFETUUuY2hyb21pdW0KQEAgLTAsMCArMSw0MSBAQAorTmFtZTogUEZGRlQ6IGEg
cHJldHR5IGZhc3QgRkZULgorU2hvcnQgTmFtZTogUEZGRlQKK1VSTDogaHR0cHM6Ly9iaXRidWNr
ZXQub3JnL2pwb21taWVyL3BmZmZ0LworVmVyc2lvbjogMAorRGF0ZTogMjAxNC0wOC0wOQorUmV2
aXNpb246IDQ4MzQ1M2Q4Zjc2NgorTGljZW5zZTogQlNELWxpa2UKK0xpY2Vuc2UgRmlsZTogTElD
RU5TRQorU2VjdXJpdHkgQ3JpdGljYWw6IFllcworTGljZW5zZSBBbmRyb2lkIENvbXBhdGlibGU6
IFllcworCitEZXNjcmlwdGlvbjoKK1BGRkZUIGRvZXMgMUQgRmFzdCBGb3VyaWVyIFRyYW5zZm9y
bXMsIG9mIHNpbmdsZSBwcmVjaXNpb24gcmVhbCBhbmQgY29tcGxleCB2ZWN0b3JzLiBJdCB0cmll
cyBkbyBpdCBmYXN0LCBpdCB0cmllcyB0byBiZSBjb3JyZWN0LCBhbmQgaXQgdHJpZXMgdG8gYmUg
c21hbGwuIENvbXB1dGF0aW9ucyBkbyB0YWtlIGFkdmFudGFnZSBvZiBTU0UxIGluc3RydWN0aW9u
cyBvbiB4ODYgY3B1cywgQWx0aXZlYyBvbiBwb3dlcnBjIGNwdXMsIGFuZCBORU9OIG9uIEFSTSBj
cHVzLgorCitOb3RlIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2YgLy90aGlyZF9wYXJ0eS9wZmZmdDoK
K1RoZSBpbXBvcnRlZCB0aGlyZCBwYXJ0eSBjb2RlICh3aXRoIHBhdGNoZXMgYXBwbGllZCwgc2Vl
ICJMb2NhbCBNb2RpZmljYXRpb25zIikgbGl2ZXMgaW4gLy90aGlyZF9wYXJ0eS9wZmZmdC9zcmMv
LCB3aGVyZWFzIHRoZSBmdXp6ZXIgYW5kIHVuaXQgdGVzdCBjb2RlIGxpdmVzIGluIC8vdGhpcmRf
cGFydHkvcGZmZnQuCisKK1JlbWFya3Mgb24gdGhlIEMgbGlicmFyeSBhbmQgcmVjb21tZW5kYXRp
b25zOgorLSBUaGUgQyBBUEkgaXMgdW5zYWZlOiBpbnB1dCBhbmQgb3V0cHV0IGFycmF5cyBhcmUg
cGFzc2VkIGFzIHBvaW50ZXJzIHdpdGhvdXQgc2l6ZQorLSBXaGVuIGEgc2NyYXRjaCBhcnJheSBp
cyBub3QgcHJvdmlkZWQgKGUuZy4sIHBmZmZ0X3RyYW5zZm9ybSgvKndvcms9Ki9udWxscHRyKSks
IFZMQSBpcyB1c2VkCisgICogTVNWQzogc3RhY2sgb3IgaGVhcCBkZXBlbmRpbmcgb24gc2l6ZQor
ICAqIG90aGVyIGNvbXBpbGVyczogYWx3YXlzIG9uIHRoZSBzdGFjaworLSBBY2NvcmRpbmcgdG8g
dGhlIFBGRkZUIGRvY3VtZW50YXRpb24sIHdoZW4gU0lNRCBpcyBlbmFibGVkLCBpbnB1dCwgb3V0
cHV0IGFuZCBzY3JhdGNoIGFycmF5cyBtdXN0IGJlIGFsbG9jYXRlZCBhcyBhbGlnbmVkIG1lbW9y
eSAoMTYtYnl0ZSBib3VuZGFyeSBvbiBpbnRlbCBhbmQgUG93ZXJQQyk7CisgIGFzIGxvbmcgYXMg
dGhlIFNJTUQgZXh0ZW5zaW9uIEFQSSByZXF1aXJlbWVudHMgYXJlIG1ldCwgb25lIG1heSB1c2Ug
ZGlmZmVyZW50IG9wdGlvbnMgKGFuZCBub3Qgb25seSBwZmZmdF9hbGlnbmVkX21hbGxvYykgc3Vj
aCBhcyBzdGQ6OnZlY3RvcgorLSBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IGEgQysr
IHdyYXBwZXIgaXMgdXNlZCB0bworICAoaSkgYXZvaWQgcG9pbnRlciBhcmd1bWVudHMgKGUuZy4s
IHVzaW5nIGFic2w6OlNwYW4pCisgIChpaSkgcHJlLWFsbG9jYXRlIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBmb3IgbGFyZ2UgRkZUIHNpemVzCisgIChpaWkpIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBjaGVj
ayBpZiBhbiBpbnRlZ2VyIGlzIGEgc3VwcG9ydGVkIEZGVCBzaXplCisKK0xvY2FsIE1vZGlmaWNh
dGlvbnM6CisKK0xvY2FsIG1vZGlmaWNhdGlvbnMgbGl2ZSBpbiAvL3RoaXJkX3BhcnR5L3BmZmZ0
L3BhdGNoZXMvLiBUbyBhcHBseSB0aGVtIHJ1bjoKKyQgZm9yIHBhdGNoIGluIHRoaXJkX3BhcnR5
L3BmZmZ0L3BhdGNoZXMvKjsgZG8gcGF0Y2ggLXMgLXAxIDwgJHBhdGNoOyBkb25lCisKK0luIGNh
c2Ugb2YgY29uZmxpY3QsIHVwZGF0ZSB0aG9zZSBwYXRjaGVzIGFjY29yZGluZ2x5IGFuZCBzYXZl
IHRoZW0gYmFjayBpbiAvL3RoaXJkX3BhcnR5L3BmZmZ0L3BhdGNoZXMvLgorCisgKiAwMS1ybXZf
cHJpbnRmLmRpZmY6IHJlbW92ZSBwcmludGYgYW5kIHN0b3AgaW5jbHVkaW5nIHN0ZGlvLmgKKyAq
IDAyLWRlY2xfdmFsaWRhdGVfc2ltZC5kaWZmOiBkZWNsYXJlIHZhbGlkYXRlX3BmZmZ0X3NpbWQo
KSBpbiBwZmZmdC5oCisgKiAwMy1tYWxsb2NhLmRpZmY6IHJlcGxhY2UgX2FsbG9jYSAoZGVwcmVj
YXRlZCkgd2l0aCBfbWFsbG9jYSAoTVNWQyBjYXNlIG9ubHkpICsgY2xlYW51cAorICogMDQtZml4
X3B0cl9jYXN0LmRpZmY6IGF2b2lkIE1TVkMgd2FybmluZ3MgYnkgZml4aW5nIHBvaW50ZXIgY2Fz
dAorICogMDUtZml4LWFyY2gtZGV0ZWN0aW9uLmRpZmY6IGJldHRlciBhcmNoIGRldGVjdGlvbiB0
byBhdm9pZCB0byBkZWZpbmUgUEZGRlRfU0lNRF9ESVNBQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L1JFQURNRS5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvUkVB
RE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzNzNhNTczZGEyOTcxZjE3ZjViNGJlMzQzOGQ2NmNjNWRjZjI3
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3BmZmZ0L1JFQURNRS5tZApAQCAtMCwwICsxLDY5IEBACisjIE5vdGVzIG9u
IFBGRkZUCitXZSBzdHJvbmdseSByZWNvbW1lbmQgdG8gKipyZWFkIHRoaXMgZmlsZSoqIGJlZm9y
ZSB1c2luZyBQRkZGVCBhbmQgdG8gKiphbHdheXMgd3JhcCoqIHRoZSBvcmlnaW5hbCBDIGxpYnJh
cnkgd2l0aGluIGEgQysrIHdyYXBwZXIuCisKK1tFeGFtcGxlIG9mIFBGRkZUIHdyYXBwZXJdKGh0
dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvcGZmZnRfd3JhcHBlci5oKS4KKworIyMgU2Ny
YXRjaCBidWZmZXIKK1RoZSBjYWxsZXIgY2FuIG9wdGlvbmFsbHkgcHJvdmlkZSBhIHNjcmF0Y2gg
YnVmZmVyLiBXaGVuIG5vdCBwcm92aWRlZCwgVkxBIGlzIHVzZWQgdG8gcHJvdmlkZSBhIHRocmVh
ZC1zYWZlIG9wdGlvbi4KK0hvd2V2ZXIsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHdyaXRlIGEgQysr
IHdyYXBwZXIgd2hpY2ggYWxsb2NhdGVzIGl0cyBvd24gc2NyYXRjaCBidWZmZXIuCitOb3RlIHRo
YXQgdGhlIHNjcmF0Y2ggYnVmZmVyIGhhcyB0aGUgc2FtZSBtZW1vcnkgYWxpZ25tZW50IHJlcXVp
cmVtZW50cyBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCB2ZWN0b3JzLgorCisjIyBPdXRwdXQgbGF5
b3V0CitQRkZGVCBjb21wdXRlcyB0aGUgZm9yd2FyZCB0cmFuc2Zvcm0gd2l0aCB0d28gcG9zc2li
bGUgb3V0cHV0IGxheW91dHM6CisxLiBvcmRlcmVkCisyLiB1bm9yZGVyZWQKKworIyMjIE9yZGVy
ZWQgbGF5b3V0CitDYWxsaW5nIGBwZmZmdF90cmFuc2Zvcm1fb3JkZXJlZGAgcHJvZHVjZXMgYW4g
YXJyYXkgb2YgKippbnRlcmxlYXZlZCByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMqKi4KK1RoZSBs
YXN0IEZvdXJpZXIgY29lZmZpY2llbnQgaXMgcHVyZWx5IHJlYWwgYW5kIHN0b3JlZCBpbiB0aGUg
aW1hZ2luYXJ5IHBhcnQgb2YgdGhlIERDIGNvbXBvbmVudCAod2hpY2ggaXMgYWxzbyBwdXJlbHkg
cmVhbCkuCisKKyMjIyBVbm9yZGVyZWQgbGF5b3V0CitDYWxsaW5nIGBwZmZmdF90cmFuc2Zvcm1g
IHByb2R1Y2VzIGFuIGFycmF5IHdpdGggYSBtb3JlIGNvbXBsZXggc3RydWN0dXJlLCBidXQgaW4g
YSBtb3JlIGVmZmljaWVudCB3YXkgdGhhbiBgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWRgLgorQmVs
b3csIHRoZSBvdXRwdXQgcHJvZHVjZWQgYnkgTWF0bGFiIGFuZCB0aGF0IHByb2R1Y2VkIGJ5IFBG
RkZUIGFyZSBjb21wYXJlZC4KK1RoZSBjb21wYXJpc29uIGlzIG1hZGUgZm9yIGEgMzIgcG9pbnQg
dHJhbnNmb3JtIG9mIGEgMTYgc2FtcGxlIGJ1ZmZlci4KK0EgMzIgcG9pbnQgdHJhbnNmb3JtIGhh
cyBiZWVuIGNob3NlbiBhcyB0aGlzIGlzIHRoZSBtaW5pbXVtIHN1cHBvcnRlZCBieSBQRkZGVC4K
KworSW1wb3J0YW50IG5vdGVzOgorLSBJbiBNYXRsYWIgdGhlIERDIChNYXRsYWIgaW5kZXggMSBb
UjEsIEkxXV0pIGFuZCBOeXF1aXN0IChNYXRsYWIgaW5kZXggMTcgW1IxNywgSTE3XSkgdmFsdWVz
IGFyZSBub3QgcmVwZWF0ZWQgYXMgY29tcGxleCBjb25qdWdhdGVzLgorLSBJbiBQRkZGVCB0aGUg
TnlxdWlzdCByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgKFtSMTcsIEkxN10pIGFyZSBvbWl0dGVk
IGVudGlyZWx5LgorLSBJbiBQRkZGVCB0aGUgZmluYWwgOCB2YWx1ZXMgKDQgcmVhbCBhbmQgNCBp
bWFnaW5hcnkpIGFyZSBub3QgaW4gdGhlIHNhbWUgb3JkZXIgYXMgYWxsIG9mIHRoZSBvdGhlcnMu
CistIEluIFBGRkZUIGFsbCBpbWFnaW5hcnkgcGFydHMgYXJlIHN0b3JlZCBhcyBuZWdhdGl2ZXMg
KGxpa2Ugc2Vjb25kIGhhbGYgaW4gTWF0bGFiKS4KKworYGBgCisrLS0tLS0tLSstLS0tLS0tLS0t
LSstLS0tLS0tKy0tLS0tLS0rCit8IEluZGV4IHwgIE1hdGxhYiAgIHwgSW5kZXggfCBQRkZGVCB8
CisrLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rCit8ICAgICAxIHwgUjEgKyBJ
MSAgIHwgICAgIDAgfCBSMSAgICB8Cit8ICAgICAyIHwgUjIrIEkyICAgIHwgICAgIDEgfCBSMiAg
ICB8Cit8ICAgICAzIHwgUjMgKyBJMyAgIHwgICAgIDIgfCBSMyAgICB8Cit8ICAgICA0IHwgUjQg
KyBJNCAgIHwgICAgIDMgfCBSNCAgICB8Cit8ICAgICA1IHwgUjUgKyBJNSAgIHwgICAgIDQgfCAt
STEgICB8Cit8ICAgICA2IHwgUjYgKyBJNiAgIHwgICAgIDUgfCAtSTIgICB8Cit8ICAgICA3IHwg
UjcgKyBJNyAgIHwgICAgIDYgfCAtSTMgICB8Cit8ICAgICA4IHwgUjggKyBJOCAgIHwgICAgIDcg
fCAtSTQgICB8Cit8ICAgICA5IHwgUjkgKyBJOSAgIHwgICAgIDggfCBSNSAgICB8Cit8ICAgIDEw
IHwgUjEwICsgSTEwIHwgICAgIDkgfCBSNiAgICB8Cit8ICAgIDExIHwgUjExICsgSTExIHwgICAg
MTAgfCBSNyAgICB8Cit8ICAgIDEyIHwgUjEyICsgSTEyIHwgICAgMTEgfCBSOCAgICB8Cit8ICAg
IDEzIHwgUjEzICsgSTEzIHwgICAgMTIgfCAtSTUgICB8Cit8ICAgIDE0IHwgUjE0ICsgSTE0IHwg
ICAgMTMgfCAtSTYgICB8Cit8ICAgIDE1IHwgUjE1ICsgSTE1IHwgICAgMTQgfCAtSTcgICB8Cit8
ICAgIDE2IHwgUjE2ICsgSTE2IHwgICAgMTUgfCAtSTggICB8Cit8ICAgIDE3IHwgUjE3ICsgSTE3
IHwgICAgMTYgfCBSOSAgICB8Cit8ICAgIDE4IHwgUjE2IC0gSTE2IHwgICAgMTcgfCBSMTAgICB8
Cit8ICAgIDE5IHwgUjE1IC0gSTE1IHwgICAgMTggfCBSMTEgICB8Cit8ICAgIDIwIHwgUjE0IC0g
STE0IHwgICAgMTkgfCBSMTIgICB8Cit8ICAgIDIxIHwgUjEzIC0gSTEzIHwgICAgMjAgfCAtSTkg
ICB8Cit8ICAgIDIyIHwgUjEyIC0gSTEyIHwgICAgMjEgfCAtSTEwICB8Cit8ICAgIDIzIHwgUjEx
IC0gSTExIHwgICAgMjIgfCAtSTExICB8Cit8ICAgIDI0IHwgUjEwIC0gSTEwIHwgICAgMjMgfCAt
STEyICB8Cit8ICAgIDI1IHwgUjkgLSBJOSAgIHwgICAgMjQgfCBSMTMgICB8Cit8ICAgIDI2IHwg
UjggLSBJOCAgIHwgICAgMjUgfCBSMTYgICB8Cit8ICAgIDI3IHwgUjcgLSBJNyAgIHwgICAgMjYg
fCBSMTUgICB8Cit8ICAgIDI4IHwgUjYgLSBJNiAgIHwgICAgMjcgfCBSMTQgICB8Cit8ICAgIDI5
IHwgUjUgLSBJNSAgIHwgICAgMjggfCAtSTEzICB8Cit8ICAgIDMwIHwgUjQgLSBJNCAgIHwgICAg
MjkgfCAtSTE2ICB8Cit8ICAgIDMxIHwgUjMgLSBJMyAgIHwgICAgMzAgfCAtSTE1ICB8Cit8ICAg
IDMyIHwgUjIgLSBJMiAgIHwgICAgMzEgfCAtSTE0ICB8CisrLS0tLS0tLSstLS0tLS0tLS0tLSst
LS0tLS0tKy0tLS0tLS0rCitgYGAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvUkVBRE1FLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvUkVBRE1FLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzhmNGE2N2VlNzYwMDMyMDRlODQyZDc2ZGYxNDhkZmE5ZTM2ZGZmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9w
ZmZmdC9SRUFETUUudHh0CkBAIC0wLDAgKzEsMzc5IEBACitQRkZGVDogYSBwcmV0dHkgZmFzdCBG
RlQuCisKK1RMO0RSCistLQorCitQRkZGVCBkb2VzIDFEIEZhc3QgRm91cmllciBUcmFuc2Zvcm1z
LCBvZiBzaW5nbGUgcHJlY2lzaW9uIHJlYWwgYW5kCitjb21wbGV4IHZlY3RvcnMuIEl0IHRyaWVz
IGRvIGl0IGZhc3QsIGl0IHRyaWVzIHRvIGJlIGNvcnJlY3QsIGFuZCBpdAordHJpZXMgdG8gYmUg
c21hbGwuIENvbXB1dGF0aW9ucyBkbyB0YWtlIGFkdmFudGFnZSBvZiBTU0UxIGluc3RydWN0aW9u
cworb24geDg2IGNwdXMsIEFsdGl2ZWMgb24gcG93ZXJwYyBjcHVzLCBhbmQgTkVPTiBvbiBBUk0g
Y3B1cy4gVGhlCitsaWNlbnNlIGlzIEJTRC1saWtlLgorCisKK1doeSBkb2VzIGl0IGV4aXN0Ogor
LS0KKworSSB3YXMgaW4gc2VhcmNoIG9mIGEgZ29vZCBwZXJmb3JtaW5nIEZGVCBsaWJyYXJ5ICwg
cHJlZmVyYWJseSB2ZXJ5CitzbWFsbCBhbmQgd2l0aCBhIHZlcnkgbGliZXJhbCBsaWNlbnNlLgor
CitXaGVuIG9uZSBzYXlzICJmZnQgbGlicmFyeSIsIEZGVFcgKCJGYXN0ZXN0IEZvdXJpZXIgVHJh
bnNmb3JtIGluIHRoZQorV2VzdCIpIGlzIHByb2JhYmx5IHRoZSBmaXJzdCBuYW1lIHRoYXQgY29t
ZXMgdG8gbWluZCAtLSBJIGd1ZXNzIHRoYXQKKzk5JSBvZiBvcGVuLXNvdXJjZSBwcm9qZWN0cyB0
aGF0IG5lZWQgYSBGRlQgZG8gdXNlIEZGVFcsIGFuZCBhcmUgaGFwcHkKK3dpdGggaXQuIEhvd2V2
ZXIsIGl0IGlzIHF1aXRlIGEgbGFyZ2UgbGlicmFyeSAsIHdoaWNoIGRvZXMgZXZlcnl0aGluZwor
ZmZ0IHJlbGF0ZWQgKDJkIHRyYW5zZm9ybXMsIDNkIHRyYW5zZm9ybXMsIG90aGVyIHRyYW5zZm9y
bWF0aW9ucyBzdWNoCithcyBkaXNjcmV0ZSBjb3NpbmUgLCBvciBmYXN0IGhhcnRsZXkpLiBBbmQg
aXQgaXMgbGljZW5zZWQgdW5kZXIgdGhlCitHTlUgR1BMICwgd2hpY2ggbWVhbnMgdGhhdCBpdCBj
YW5ub3QgYmUgdXNlZCBpbiBub24gb3Blbi1zb3VyY2UKK3Byb2R1Y3RzLgorCitBbiBhbHRlcm5h
dGl2ZSB0byBGRlRXIHRoYXQgaXMgcmVhbGx5IHNtYWxsLCBpcyB0aGUgdmVuZXJhYmxlIEZGVFBB
Q0sKK3Y0LCB3aGljaCBpcyBhdmFpbGFibGUgb24gTkVUTElCLiBBIG1vcmUgcmVjZW50IHZlcnNp
b24gKHY1KSBleGlzdHMsCitidXQgaXQgaXMgbGFyZ2VyIGFzIGl0IGRlYWxzIHdpdGggbXVsdGkt
ZGltZW5zaW9uYWwgdHJhbnNmb3Jtcy4gVGhpcworaXMgYSBsaWJyYXJ5IHRoYXQgaXMgd3JpdHRl
biBpbiBGT1JUUkFOIDc3LCBhIGxhbmd1YWdlIHRoYXQgaXMgbm93Citjb25zaWRlcmVkIGFzIGEg
Yml0IGFudGlxdWF0ZWQgYnkgbWFueS4gRkZUUEFDS3Y0IHdhcyB3cml0dGVuIGluIDE5ODUsCiti
eSBEciBQYXVsIFN3YXJ6dHJhdWJlciBvZiBOQ0FSLCBtb3JlIHRoYW4gMjUgeWVhcnMgYWdvICEg
QW5kIGRlc3BpdGUKK2l0cyBhZ2UsIGJlbmNobWFya3Mgc2hvdyBpdCB0aGF0IGl0IHN0aWxsIGEg
dmVyeSBnb29kIHBlcmZvcm1pbmcgRkZUCitsaWJyYXJ5LCBzZWUgZm9yIGV4YW1wbGUgdGhlIDFk
IHNpbmdsZSBwcmVjaXNpb24gYmVuY2htYXJrcyBoZXJlOgoraHR0cDovL3d3dy5mZnR3Lm9yZy9z
cGVlZC9vcHRlcm9uLTIuMkdIei0zMmJpdC8gLiBJdCBpcyBob3dldmVyIG5vdAorY29tcGV0aXRp
dmUgd2l0aCB0aGUgZmFzdGVzdCBvbmVzLCBzdWNoIGFzIEZGVFcsIEludGVsIE1LTCwgQU1EIEFD
TUwsCitBcHBsZSB2RFNQLiBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRoYXQgdGhvc2UgbGlicmFy
aWVzIGRvIHRha2UKK2FkdmFudGFnZSBvZiB0aGUgU1NFIFNJTUQgaW5zdHJ1Y3Rpb25zIGF2YWls
YWJsZSBvbiBJbnRlbCBDUFVzLAorYXZhaWxhYmxlIHNpbmNlIHRoZSBkYXlzIG9mIHRoZSBQZW50
aXVtIElJSS4gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRlYWwKK3dpdGggc21hbGwgdmVjdG9ycyBvZiA0
IGZsb2F0cyBhdCBhIHRpbWUsIGluc3RlYWQgb2YgYSBzaW5nbGUgZmxvYXQKK2ZvciBhIHRyYWRp
dGlvbm5hbCBGUFUsIHNvIHdoZW4gdXNpbmcgdGhlc2UgaW5zdHJ1Y3Rpb25zIG9uZSBtYXkgZXhw
ZWN0CithIDQtZm9sZCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4KKworVGhlIGlkZWEgd2FzIHRv
IHRha2UgdGhpcyBmb3J0cmFuIGZmdHBhY2sgdjQgY29kZSwgdHJhbnNsYXRlIHRvIEMsCittb2Rp
ZnkgaXQgdG8gZGVhbCB3aXRoIHRob3NlIFNTRSBpbnN0cnVjdGlvbnMsIGFuZCBjaGVjayB0aGF0
IHRoZQorZmluYWwgcGVyZm9ybWFuY2UgaXMgbm90IGNvbXBsZXRlbHkgcmlkaWN1bG91cyB3aGVu
IGNvbXBhcmVkIHRvIG90aGVyCitTSU1EIEZGVCBsaWJyYXJpZXMuIFRyYW5zbGF0aW9uIHRvIEMg
d2FzIHBlcmZvcm1lZCB3aXRoIGYyYyAoCitodHRwOi8vd3d3Lm5ldGxpYi5vcmcvZjJjLyApLiBU
aGUgcmVzdWx0aW5nIGZpbGUgd2FzIGEgYml0IGVkaXRlZCBpbgorb3JkZXIgdG8gcmVtb3ZlIHRo
ZSB0aG91c2FuZHMgb2YgZ290b3MgdGhhdCB3ZXJlIGludHJvZHVjZWQgYnkKK2YyYy4gWW91IHdp
bGwgZmluZCB0aGUgZmZ0cGFjay5oIGFuZCBmZnRwYWNrLmMgc291cmNlcyBpbiB0aGUKK3JlcG9z
aXRvcnksIHRoaXMgYSBjb21wbGV0ZSB0cmFuc2xhdGlvbiBvZgoraHR0cDovL3d3dy5uZXRsaWIu
b3JnL2ZmdHBhY2svICwgd2l0aCB0aGUgZGlzY3JldGUgY29zaW5lIHRyYW5zZm9ybQorYW5kIHRo
ZSB0ZXN0IHByb2dyYW0uIFRoZXJlIGlzIG5vIGxpY2Vuc2UgaW5mb3JtYXRpb24gaW4gdGhlIG5l
dGxpYgorcmVwb3NpdG9yeSwgYnV0IGl0IHdhcyBjb25maXJtZWQgdG8gbWUgYnkgdGhlIGZmdHBh
Y2sgdjUgY3VyYXRvcnMgdGhhdAordGhlIHNhbWUgdGVybXMgZG8gYXBwbHkgdG8gZmZ0cGFjayB2
NDoKK2h0dHA6Ly93d3cuY2lzbC51Y2FyLmVkdS9jc3Mvc29mdHdhcmUvZmZ0cGFjazUvZnRway5o
dG1sIC4gVGhpcyBpcyBhCisiQlNELWxpa2UiIGxpY2Vuc2UsIGl0IGlzIGNvbXBhdGlibGUgd2l0
aCBwcm9wcmlldGFyeSBwcm9qZWN0cy4KKworQWRhcHRpbmcgZmZ0cGFjayB0byBkZWFsIHdpdGgg
dGhlIFNJTUQgNC1lbGVtZW50IHZlY3RvcnMgaW5zdGVhZCBvZgorc2NhbGFyIHNpbmdsZSBwcmVj
aXNpb24gbnVtYmVycyB3YXMgbW9yZSBjb21wbGV4IHRoYW4gSSBvcmlnaW5hbGx5Cit0aG91Z2h0
LCBlc3BlY2lhbGx5IHdpdGggdGhlIHJlYWwgdHJhbnNmb3JtcywgYW5kIEkgZW5kZWQgdXAgd3Jp
dGluZworbW9yZSBjb2RlIHRoYW4gSSBwbGFubmVkLi4KKworCitUaGUgY29kZToKKy0tCisKK09u
bHkgdHdvIGZpbGVzLCBpbiBnb29kIG9sZCBDLCBwZmZmdC5jIGFuZCBwZmZmdC5oIC4gVGhlIEFQ
SSBpcyB2ZXJ5Cit2ZXJ5IHNpbXBsZSwganVzdCBtYWtlIHN1cmUgdGhhdCB5b3UgcmVhZCB0aGUg
Y29tbWVudHMgaW4gcGZmZnQuaC4KKworCitDb21wYXJpc29uIHdpdGggb3RoZXIgRkZUczoKKy0t
CisKK1RoZSBpZGVhIHdhcyBub3QgdG8gYnJlYWsgc3BlZWQgcmVjb3JkcywgYnV0IHRvIGdldCBh
IGRlY2VudGx5IGZhc3QKK2ZmdCB0aGF0IGlzIGF0IGxlYXN0IDUwJSBhcyBmYXN0IGFzIHRoZSBm
YXN0ZXN0IEZGVCAtLSBlc3BlY2lhbGx5IG9uCitzbG93ZXN0IGNvbXB1dGVycyAuIEknbSBtb3Jl
IGZvY3VzZWQgb24gZ2V0dGluZyB0aGUgYmVzdCBwZXJmb3JtYW5jZQorb24gc2xvdyBjcHVzIChB
dG9tLCBJbnRlbCBDb3JlIDEsIG9sZCBBdGhsb25zLCBBUk0gQ29ydGV4LUE5Li4uKSwgdGhhbgor
b24gZ2V0dGluZyB0b3AgcGVyZm9ybWFuY2Ugb24gdG9kYXkgZmFzdGVzdCBjcHVzLgorCitJdCBj
YW4gYmUgdXNlZCBpbiBhIHJlYWwtdGltZSBjb250ZXh0IGFzIHRoZSBmZnQgZnVuY3Rpb25zIGRv
IG5vdAorcGVyZm9ybSBhbnkgbWVtb3J5IGFsbG9jYXRpb24gLS0gdGhhdCBpcyB3aHkgdGhleSBh
Y2NlcHQgYSAnd29yaycKK2FycmF5IGluIHRoZWlyIGFyZ3VtZW50cy4KKworSXQgaXMgYWxzbyBh
IGJpdCBmb2N1c2VkIG9uIHBlcmZvcm1pbmcgMUQgY29udm9sdXRpb25zLCB0aGF0IGlzIHdoeSBp
dAorcHJvdmlkZXMgInVub3JkZXJlZCIgRkZUcyAsIGFuZCBhIGZvdXJpZXIgZG9tYWluIGNvbnZv
bHV0aW9uCitvcGVyYXRpb24uCisKKworQmVuY2htYXJrIHJlc3VsdHMgKGNwdSB0ZXN0ZWQ6IGNv
cmUgaTcgMjYwMCwgY29yZSAyIHF1YWQsIGNvcmUgMSBkdW8sIGF0b20gTjI3MCwgY29ydGV4LUE5
KQorLS0KKworVGhlIGJlbmNobWFyayBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2YgdmFyaW91cyBm
ZnQgaW1wbGVtZW50YXRpb25zIG1lYXN1cmVkIGluIAorTUZsb3BzLCB3aXRoIHRoZSBudW1iZXIg
b2YgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBiZWluZyBkZWZpbmVkIGFzIDVObG9nMihOKQor
Zm9yIGEgbGVuZ3RoIE4gY29tcGxleCBmZnQsIGFuZCAyLjUqTmxvZzIoTikgZm9yIGEgcmVhbCBm
ZnQuIAorU2VlIGh0dHA6Ly93d3cuZmZ0dy5vcmcvc3BlZWQvbWV0aG9kLmh0bWwgZm9yIGFuIGV4
cGxhbmF0aW9uIG9mIHRoZXNlIGZvcm11bGFzLgorCitNYWNPUyBMaW9uLCBnY2MgNC4yLCA2NC1i
aXQsIGZmdHcgMy4zIG9uIGEgMy40IEdIeiBjb3JlIGk3IDI2MDAKKworQnVpbHQgd2l0aDoKKwor
IGdjYy00LjIgLW8gdGVzdF9wZmZmdCAtYXJjaCB4ODZfNjQgLU8zIC1XYWxsIC1XIHBmZmZ0LmMg
dGVzdF9wZmZmdC5jIGZmdHBhY2suYyAtTC91c3IvbG9jYWwvbGliIC1JL3Vzci9sb2NhbC9pbmNs
dWRlLyAtREhBVkVfVkVDTElCIC1mcmFtZXdvcmsgdmVjbGliIC1ESEFWRV9GRlRXIC1sZmZ0dzNm
IAorCit8IGlucHV0IGxlbiB8cmVhbCBGRlRQYWNrfCAgcmVhbCB2RFNQIHwgIHJlYWwgRkZUVyB8
IHJlYWwgUEZGRlQgfCB8Y3BseCBGRlRQYWNrfCAgY3BseCB2RFNQIHwgIGNwbHggRkZUVyB8IGNw
bHggUEZGRlQgfAorfC0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLXwgfC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLXwKK3wgICAgICAgNjQgIHwgICAgIDI4MTYgICB8ICAgICA4NTk2ICAg
fCAgICAgNzMyOSAgIHwgICAgIDgxODcgICB8IHwgICAgIDI4ODcgICB8ICAgIDE0ODk4ICAgfCAg
ICAxNDY2OCAgIHwgICAgMTExMDggICB8Cit8ICAgICAgIDk2ICB8ICAgICAzMjk4ICAgfCAgICAg
IG4vYSAgIHwgICAgIDgzNzggICB8ICAgICA3NzI3ICAgfCB8ICAgICAzOTUzICAgfCAgICAgIG4v
YSAgIHwgICAgMTU2ODAgICB8ICAgIDEwODc4ICAgfAorfCAgICAgIDEyOCAgfCAgICAgMzUwNyAg
IHwgICAgMTE1NzUgICB8ICAgICA5MjY2ICAgfCAgICAxMDEwOCAgIHwgfCAgICAgNDIzMyAgIHwg
ICAgMTc1OTggICB8ICAgIDE2NDI3ICAgfCAgICAxMjAwMCAgIHwKK3wgICAgICAxNjAgIHwgICAg
IDMzOTEgICB8ICAgICAgbi9hICAgfCAgICAgOTgzOCAgIHwgICAgMTA3MTEgICB8IHwgICAgIDQy
MjAgICB8ICAgICAgbi9hICAgfCAgICAxNjY1MyAgIHwgICAgMTExODcgICB8Cit8ICAgICAgMTky
ICB8ICAgICAzOTE5ICAgfCAgICAgIG4vYSAgIHwgICAgIDk4NjggICB8ICAgIDEwOTU2ICAgfCB8
ICAgICA0Mjk3ICAgfCAgICAgIG4vYSAgIHwgICAgMTU3NzAgICB8ICAgIDEyNTQwICAgfAorfCAg
ICAgIDI1NiAgfCAgICAgNDI4MyAgIHwgICAgMTMxNzkgICB8ICAgIDEwNjk0ICAgfCAgICAxMzEy
OCAgIHwgfCAgICAgNDU0NSAgIHwgICAgMTk1NTAgICB8ICAgIDE2MzUwICAgfCAgICAxMzgyMiAg
IHwKK3wgICAgICAzODQgIHwgICAgIDMxMzYgICB8ICAgICAgbi9hICAgfCAgICAxMDgxMCAgIHwg
ICAgMTIwNjEgICB8IHwgICAgIDM2MDAgICB8ICAgICAgbi9hICAgfCAgICAxNjEwMyAgIHwgICAg
MTMyNDAgICB8Cit8ICAgICAgNDgwICB8ICAgICAzNDc3ICAgfCAgICAgIG4vYSAgIHwgICAgMTA2
MzIgICB8ICAgIDEyMDc0ICAgfCB8ICAgICAzNTM2ICAgfCAgICAgIG4vYSAgIHwgICAgMTE2MzAg
ICB8ICAgIDEyNTIyICAgfAorfCAgICAgIDUxMiAgfCAgICAgMzc4MyAgIHwgICAgMTUxNDEgICB8
ICAgIDExMjY3ICAgfCAgICAxMzgzOCAgIHwgfCAgICAgMzY0OSAgIHwgICAgMjAwMDIgICB8ICAg
IDE2NTYwICAgfCAgICAxMzU4MCAgIHwKK3wgICAgICA2NDAgIHwgICAgIDM2MzkgICB8ICAgICAg
bi9hICAgfCAgICAxMTE2NCAgIHwgICAgMTM5NDYgICB8IHwgICAgIDM2OTUgICB8ICAgICAgbi9h
ICAgfCAgICAxNTQxNiAgIHwgICAgMTM4OTAgICB8Cit8ICAgICAgNzY4ICB8ICAgICAzODAwICAg
fCAgICAgIG4vYSAgIHwgICAgMTEyNDUgICB8ICAgIDEzNDk1ICAgfCB8ICAgICAzNTkwICAgfCAg
ICAgIG4vYSAgIHwgICAgMTU4MDIgICB8ICAgIDE0NTUyICAgfAorfCAgICAgIDgwMCAgfCAgICAg
MzQ0MCAgIHwgICAgICBuL2EgICB8ICAgIDEwNDk5ICAgfCAgICAxMzMwMSAgIHwgfCAgICAgMzY1
OSAgIHwgICAgICBuL2EgICB8ICAgIDEyMDU2ICAgfCAgICAxMzI2OCAgIHwKK3wgICAgIDEwMjQg
IHwgICAgIDM5MjQgICB8ICAgIDE1NjA1ICAgfCAgICAxMTQ1MCAgIHwgICAgMTUzMzkgICB8IHwg
ICAgIDM3NjkgICB8ICAgIDIwOTYzICAgfCAgICAxMzk0MSAgIHwgICAgMTU0NjcgICB8Cit8ICAg
ICAyMDQ4ICB8ICAgICA0NTE4ICAgfCAgICAxNjE5NSAgIHwgICAgMTE1NTEgICB8ICAgIDE1NTMy
ICAgfCB8ICAgICA0MjU4ICAgfCAgICAyMDQxMyAgIHwgICAgMTM3MjMgICB8ICAgIDE1MDQyICAg
fAorfCAgICAgMjQwMCAgfCAgICAgNDI5NCAgIHwgICAgICBuL2EgICB8ICAgIDEwNjg1ICAgfCAg
ICAxMzA3OCAgIHwgfCAgICAgNDA5MyAgIHwgICAgICBuL2EgICB8ICAgIDEyNzc3ICAgfCAgICAx
MzExOSAgIHwKK3wgICAgIDQwOTYgIHwgICAgIDQ3NTAgICB8ICAgIDE2NTk2ICAgfCAgICAxMTY3
MiAgIHwgICAgMTU4MTcgICB8IHwgICAgIDQxNTcgICB8ICAgIDE5NjYyICAgfCAgICAxNDMxNiAg
IHwgICAgMTQzMzYgICB8Cit8ICAgICA4MTkyICB8ICAgICAzODIwICAgfCAgICAxNjIyNyAgIHwg
ICAgMTEwODQgICB8ICAgIDEyNTU1ICAgfCB8ICAgICAzNjkxICAgfCAgICAxODEzMiAgIHwgICAg
MTIxMDIgICB8ICAgIDEzODEzICAgfAorfCAgICAgOTIxNiAgfCAgICAgMzg2NCAgIHwgICAgICBu
L2EgICB8ICAgIDEwMjU0ICAgfCAgICAxMjg3MCAgIHwgfCAgICAgMzU4NiAgIHwgICAgICBuL2Eg
ICB8ICAgIDEyMTE5ICAgfCAgICAxMzk5NCAgIHwKK3wgICAgMTYzODQgIHwgICAgIDM4MjIgICB8
ICAgIDE1MTIzICAgfCAgICAxMDQ1NCAgIHwgICAgMTI4MjIgICB8IHwgICAgIDM2MTMgICB8ICAg
IDE2ODc0ICAgfCAgICAxMjM3MCAgIHwgICAgMTM4ODEgICB8Cit8ICAgIDMyNzY4ICB8ICAgICA0
MTc1ICAgfCAgICAxNDUxMiAgIHwgICAgMTA2NjIgICB8ICAgIDExMDk1ICAgfCB8ICAgICAzODgx
ICAgfCAgICAxNDcwMiAgIHwgICAgMTE2MTkgICB8ICAgIDExNTI0ICAgfAorfCAgIDI2MjE0NCAg
fCAgICAgMzMxNyAgIHwgICAgMTE0MjkgICB8ICAgICA2MjY5ICAgfCAgICAgOTUxNyAgIHwgfCAg
ICAgMjgxMCAgIHwgICAgMTE3MjkgICB8ICAgICA3NzU3ICAgfCAgICAxMDE3OSAgIHwKK3wgIDEw
NDg1NzYgIHwgICAgIDI5MTMgICB8ICAgIDEwNTUxICAgfCAgICAgNDczMCAgIHwgICAgIDU4Njcg
ICB8IHwgICAgIDI2NjEgICB8ICAgICA3ODgxICAgfCAgICAgMzUyMCAgIHwgICAgIDUzNTAgICB8
Cit8LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tfCB8LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tfAorCisKK0RlYmlhbiA2LCBnY2MgNC40LjUsIDY0LWJpdCwgZmZ0dyAzLjMuMSBvbiBh
IDMuNCBHSHogY29yZSBpNyAyNjAwCisKK0J1aWx0IHdpdGg6CitnY2MgLW8gdGVzdF9wZmZmdCAt
REhBVkVfRkZUVyAtbXNzZTIgLU8zIC1XYWxsIC1XIHBmZmZ0LmMgdGVzdF9wZmZmdC5jIGZmdHBh
Y2suYyAtTCRIT01FL2xvY2FsL2xpYiAtSSRIT01FL2xvY2FsL2luY2x1ZGUvIC1sZmZ0dzNmIC1s
bQorCit8IE4gKGlucHV0IGxlbmd0aCkgfCByZWFsIEZGVFBhY2sgfCAgIHJlYWwgRkZUVyAgfCAg
cmVhbCBQRkZGVCAgfCB8IGNwbHggRkZUUGFjayB8ICAgY3BseCBGRlRXICB8ICBjcGx4IFBGRkZU
ICB8Cit8LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tfCB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS18Cit8ICAgICAgICAgICA2NCAgICAgfCAgICAgIDM4NDAgICAgfCAgICAgIDc2ODAgICAgfCAg
ICAgIDg3NzcgICAgfCB8ICAgICAgNDM4OSAgICB8ICAgICAyMDQ4MCAgICB8ICAgICAxMTE3MSAg
ICB8Cit8ICAgICAgICAgICA5NiAgICAgfCAgICAgIDQyMTQgICAgfCAgICAgIDk2MzMgICAgfCAg
ICAgIDg0MjkgICAgfCB8ICAgICAgNDgxNiAgICB8ICAgICAyMjQ3NyAgICB8ICAgICAxMTIzOCAg
ICB8Cit8ICAgICAgICAgIDEyOCAgICAgfCAgICAgIDM1ODQgICAgfCAgICAgMTAyNDAgICAgfCAg
ICAgMTAyNDAgICAgfCB8ICAgICAgNTEyMCAgICB8ICAgICAyMzg5MyAgICB8ICAgICAxMTk0NyAg
ICB8Cit8ICAgICAgICAgIDE5MiAgICAgfCAgICAgIDQ4NTQgICAgfCAgICAgMTEwOTUgICAgfCAg
ICAgMTI5NDUgICAgfCB8ICAgICAgNDg1NCAgICB8ICAgICAyMjE5MSAgICB8ICAgICAxNDEyMSAg
ICB8Cit8ICAgICAgICAgIDI1NiAgICAgfCAgICAgIDQwOTYgICAgfCAgICAgMTE3MDMgICAgfCAg
ICAgMTYzODQgICAgfCB8ICAgICAgNTEyMCAgICB8ICAgICAyMzQwNiAgICB8ICAgICAxMzY1MyAg
ICB8Cit8ICAgICAgICAgIDM4NCAgICAgfCAgICAgIDQzOTUgICAgfCAgICAgMTQ2NTEgICAgfCAg
ICAgMTI1NTggICAgfCB8ICAgICAgNDg4NCAgICB8ICAgICAxOTUzNSAgICB8ICAgICAxNDY1MSAg
ICB8Cit8ICAgICAgICAgIDUxMiAgICAgfCAgICAgIDU3NjAgICAgfCAgICAgMTMxNjYgICAgfCAg
ICAgMTUzNjAgICAgfCB8ICAgICAgNDYwOCAgICB8ICAgICAyMzA0MCAgICB8ICAgICAxNTM2MCAg
ICB8Cit8ICAgICAgICAgIDc2OCAgICAgfCAgICAgIDQ5MDcgICAgfCAgICAgMTQwMjAgICAgfCAg
ICAgMTYzNTcgICAgfCB8ICAgICAgNDQ2MSAgICB8ICAgICAxOTYyOCAgICB8ICAgICAxNDAyMCAg
ICB8Cit8ICAgICAgICAgMTAyNCAgICAgfCAgICAgIDUxMjAgICAgfCAgICAgMTQ2MjkgICAgfCAg
ICAgMTQ2MjkgICAgfCB8ICAgICAgNTEyMCAgICB8ICAgICAyMDQ4MCAgICB8ICAgICAxNTc1NCAg
ICB8Cit8ICAgICAgICAgMjA0OCAgICAgfCAgICAgIDU2MzIgICAgfCAgICAgMTQwODAgICAgfCAg
ICAgMTg3NzMgICAgfCB8ICAgICAgNDY5MyAgICB8ICAgICAxMjUxNiAgICB8ICAgICAxNjA5MSAg
ICB8Cit8ICAgICAgICAgNDA5NiAgICAgfCAgICAgIDUxMjAgICAgfCAgICAgMTM2NTMgICAgfCAg
ICAgMTc1NTQgICAgfCB8ICAgICAgNDcyNiAgICB8ICAgICAgNzY4MCAgICB8ICAgICAxNDQ1NiAg
ICB8Cit8ICAgICAgICAgODE5MiAgICAgfCAgICAgIDQxNjAgICAgfCAgICAgIDczOTYgICAgfCAg
ICAgMTMzMTIgICAgfCB8ICAgICAgNDQzNyAgICB8ICAgICAxNDc5MSAgICB8ICAgICAxMzMxMiAg
ICB8Cit8ICAgICAgICAgOTIxNiAgICAgfCAgICAgIDQyMTAgICAgfCAgICAgIDYxMjQgICAgfCAg
ICAgMTM0NzMgICAgfCB8ICAgICAgNDQ5MSAgICB8ICAgICAgNzI4MiAgICB8ICAgICAxNDk3MCAg
ICB8Cit8ICAgICAgICAxNjM4NCAgICAgfCAgICAgIDM5NzYgICAgfCAgICAgMTEwMTAgICAgfCAg
ICAgMTQzMTMgICAgfCB8ICAgICAgNDIxMCAgICB8ICAgICAxMTQ1MCAgICB8ICAgICAxMzYzMSAg
ICB8Cit8ICAgICAgICAzMjc2OCAgICAgfCAgICAgIDQyNjAgICAgfCAgICAgMTAyMjQgICAgfCAg
ICAgMTA5NTQgICAgfCB8ICAgICAgNDI2MCAgICB8ICAgICAgNjgxNiAgICB8ICAgICAxMTc5NyAg
ICB8Cit8ICAgICAgIDI2MjE0NCAgICAgfCAgICAgIDM3MzYgICAgfCAgICAgIDY4OTYgICAgfCAg
ICAgIDk5NjEgICAgfCB8ICAgICAgMjM1OSAgICB8ICAgICAgODk2NSAgICB8ICAgICAgOTQzNyAg
ICB8Cit8ICAgICAgMTA0ODU3NiAgICAgfCAgICAgIDI3OTYgICAgfCAgICAgIDQ1MzQgICAgfCAg
ICAgIDY0NTMgICAgfCB8ICAgICAgMTg2NCAgICB8ICAgICAgMzA3OCAgICB8ICAgICAgNTU5MiAg
ICB8Cit8LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tfCB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS18CisKKworCitNYWNPUyBTbm93IExlb3BhcmQsIGdjYyA0LjAsIDMyLWJpdCwgZmZ0dyAzLjMg
b24gYSAxLjgzIEdIeiBjb3JlIDEgZHVvCisKK0J1aWx0IHdpdGg6CisKKyBnY2MgLW8gdGVzdF9w
ZmZmdCAtREhBVkVfRkZUVyAtREhBVkVfVkVDTElCIC1PMyAtV2FsbCAtVyBwZmZmdC5jIHRlc3Rf
cGZmZnQuYyBmZnRwYWNrLmMgLUwvdXNyL2xvY2FsL2xpYiAtSS91c3IvbG9jYWwvaW5jbHVkZS8g
LWxmZnR3M2YgLWZyYW1ld29yayB2ZWNsaWIKKworfCBpbnB1dCBsZW4gfHJlYWwgRkZUUGFja3wg
IHJlYWwgdkRTUCB8ICByZWFsIEZGVFcgfCByZWFsIFBGRkZUIHwgfGNwbHggRkZUUGFja3wgIGNw
bHggdkRTUCB8ICBjcGx4IEZGVFcgfCBjcGx4IFBGRkZUIHwKK3wtLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18IHwtLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18Cit8ICAgICAgNjQgICB8
ICAgICAgNzQ1ICAgfCAgICAgMjE0NSAgIHwgICAgIDE3MDYgICB8ICAgICAyMDI4ICAgfCB8ICAg
ICAgOTYxICAgfCAgICAgMzM1NiAgIHwgICAgIDMzMTMgICB8ICAgICAyMzAwICAgfAorfCAgICAg
IDk2ICAgfCAgICAgIDg3NyAgIHwgICAgICBuL2EgICB8ICAgICAxOTc2ICAgfCAgICAgMTk3OCAg
IHwgfCAgICAgMTA1OSAgIHwgICAgICBuL2EgICB8ICAgICAzMzMzICAgfCAgICAgMjIzMyAgIHwK
K3wgICAgIDEyOCAgIHwgICAgICA5NTEgICB8ICAgICAyODA4ICAgfCAgICAgMjIxMyAgIHwgICAg
IDIyNzkgICB8IHwgICAgIDEyMDIgICB8ICAgICAzODAzICAgfCAgICAgMzczOSAgIHwgICAgIDI0
OTQgICB8Cit8ICAgICAxOTIgICB8ICAgICAxMDAyICAgfCAgICAgIG4vYSAgIHwgICAgIDI0NTYg
ICB8ICAgICAyNDI5ICAgfCB8ICAgICAxMTg2ICAgfCAgICAgIG4vYSAgIHwgICAgIDM3MDEgICB8
ICAgICAyNTA4ICAgfAorfCAgICAgMjU2ICAgfCAgICAgMTA2NSAgIHwgICAgIDMyMDUgICB8ICAg
ICAyNjQxICAgfCAgICAgMjc5MyAgIHwgfCAgICAgMTMwMiAgIHwgICAgIDQwMTMgICB8ICAgICAz
OTEyICAgfCAgICAgMjY2MyAgIHwKK3wgICAgIDM4NCAgIHwgICAgICA4NDUgICB8ICAgICAgbi9h
ICAgfCAgICAgMjc1OSAgIHwgICAgIDI0OTkgICB8IHwgICAgICA5NDggICB8ICAgICAgbi9hICAg
fCAgICAgMzcyOSAgIHwgICAgIDI1MDQgICB8Cit8ICAgICA1MTIgICB8ICAgICAgOTAwICAgfCAg
ICAgMzQ3NiAgIHwgICAgIDI5NTYgICB8ICAgICAyNzU5ICAgfCB8ICAgICAgOTc0ICAgfCAgICAg
NDA1NyAgIHwgICAgIDM5NTQgICB8ICAgICAyNjQ1ICAgfAorfCAgICAgNzY4ICAgfCAgICAgIDkx
MCAgIHwgICAgICBuL2EgICB8ICAgICAyOTEyICAgfCAgICAgMjczNyAgIHwgfCAgICAgIDk3NSAg
IHwgICAgICBuL2EgICB8ICAgICAzODM3ICAgfCAgICAgMjYxNCAgIHwKK3wgICAgMTAyNCAgIHwg
ICAgICA5MzYgICB8ICAgICAzNTgzICAgfCAgICAgMzEwNyAgIHwgICAgIDMwMDkgICB8IHwgICAg
IDEwMDYgICB8ICAgICA0MTI0ICAgfCAgICAgMzgyMSAgIHwgICAgIDI2OTcgICB8Cit8ICAgIDIw
NDggICB8ICAgICAxMDU3ICAgfCAgICAgMzU4NSAgIHwgICAgIDMwOTEgICB8ICAgICAyODM3ICAg
fCB8ICAgICAxMDg5ICAgfCAgICAgMzg4OSAgIHwgICAgIDM3MDEgICB8ICAgICAyNTEzICAgfAor
fCAgICA0MDk2ICAgfCAgICAgMTA4MyAgIHwgICAgIDM1MjQgICB8ICAgICAzMDkyICAgfCAgICAg
MjczMyAgIHwgfCAgICAgMTAzOSAgIHwgICAgIDM2MTcgICB8ICAgICAzNDYyICAgfCAgICAgMjM2
NCAgIHwKK3wgICAgODE5MiAgIHwgICAgICA4NzQgICB8ICAgICAzMjUyICAgfCAgICAgMjk2NyAg
IHwgICAgIDIzNjMgICB8IHwgICAgICA5MTEgICB8ICAgICAzMTA2ICAgfCAgICAgMjc4OSAgIHwg
ICAgIDIzMDIgICB8Cit8ICAgIDkyMTYgICB8ICAgICAgODk4ICAgfCAgICAgIG4vYSAgIHwgICAg
IDI0MjAgICB8ICAgICAyMjkwICAgfCB8ICAgICAgODY1ICAgfCAgICAgIG4vYSAgIHwgICAgIDI2
NzYgICB8ICAgICAyMjA0ICAgfAorfCAgIDE2Mzg0ICAgfCAgICAgIDkwMyAgIHwgICAgIDI4OTIg
ICB8ICAgICAyNTA2ICAgfCAgICAgMjQyMSAgIHwgfCAgICAgIDg5OSAgIHwgICAgIDMwMjYgICB8
ICAgICAyNzk3ICAgfCAgICAgMjI4OSAgIHwKK3wgICAzMjc2OCAgIHwgICAgICA5NjUgICB8ICAg
ICAyODM3ICAgfCAgICAgMjU1MCAgIHwgICAgIDIzNTggICB8IHwgICAgICA5MjAgICB8ICAgICAy
OTIyICAgfCAgICAgMjc2MyAgIHwgICAgIDIyNDAgICB8Cit8ICAyNjIxNDQgICB8ICAgICAgNzM4
ICAgfCAgICAgMjQyMiAgIHwgICAgIDE1ODkgICB8ICAgICAxNzA4ICAgfCB8ICAgICAgNjEwICAg
fCAgICAgMjAzOCAgIHwgICAgIDE0MzYgICB8ICAgICAxMDkxICAgfAorfCAxMDQ4NTc2ICAgfCAg
ICAgIDUyOCAgIHwgICAgIDEyMDcgICB8ICAgICAgODQ1ICAgfCAgICAgIDg4MCAgIHwgfCAgICAg
IDYwNiAgIHwgICAgIDEwMjAgICB8ICAgICAgNjY5ICAgfCAgICAgMTAzNiAgIHwKK3wtLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18
IHwtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18CisK
KworCitVYnVudHUgMTEuMDQsIGdjYyA0LjUsIDMyLWJpdCwgZmZ0dyAzLjIgb24gYSAyLjY2IGNv
cmUgMiBxdWFkCisKK0J1aWx0IHdpdGg6CitnY2MgLW8gdGVzdF9wZmZmdCAtREhBVkVfRkZUVyAt
bXNzZSAtbWZwbWF0aD1zc2UgLU8zIC1XYWxsIC1XIHBmZmZ0LmMgdGVzdF9wZmZmdC5jIGZmdHBh
Y2suYyAtTC91c3IvbG9jYWwvbGliIC1JL3Vzci9sb2NhbC9pbmNsdWRlLyAtbGZmdHczZiAtbG0K
KworfCBpbnB1dCBsZW4gfHJlYWwgRkZUUGFja3wgIHJlYWwgRkZUVyB8IHJlYWwgUEZGRlQgfCB8
Y3BseCBGRlRQYWNrfCAgY3BseCBGRlRXIHwgY3BseCBQRkZGVCB8Cit8LS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18IHwtLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLXwKK3wgICAgICAgNjQgIHwgICAgIDE5MjAgICB8ICAgICAzNjE0
ICAgfCAgICAgNTEyMCAgIHwgfCAgICAgMjE5NCAgIHwgICAgIDc2ODAgICB8ICAgICA2NDY3ICAg
fAorfCAgICAgICA5NiAgfCAgICAgMTg3MyAgIHwgICAgIDM1NDkgICB8ICAgICA1MTg3ICAgfCB8
ICAgICAyMTA3ICAgfCAgICAgODQyOSAgIHwgICAgIDU4NjMgICB8Cit8ICAgICAgMTI4ICB8ICAg
ICAyMjQwICAgfCAgICAgMzc3MyAgIHwgICAgIDU1MTQgICB8IHwgICAgIDI1NjAgICB8ICAgICA3
OTY0ICAgfCAgICAgNjgyNyAgIHwKK3wgICAgICAxOTIgIHwgICAgIDE3NjUgICB8ICAgICA0NTY5
ICAgfCAgICAgNzc2NyAgIHwgfCAgICAgMjI4NCAgIHwgICAgIDkxMzcgICB8ICAgICA3MDYxICAg
fAorfCAgICAgIDI1NiAgfCAgICAgMjA0OCAgIHwgICAgIDU0NjEgICB8ICAgICA3NDQ3ICAgfCB8
ICAgICAyNzMxICAgfCAgICAgOTYzOCAgIHwgICAgIDc4MDIgICB8Cit8ICAgICAgMzg0ICB8ICAg
ICAxOTk4ICAgfCAgICAgNTg2MSAgIHwgICAgIDY3NjIgICB8IHwgICAgIDIzMTMgICB8ICAgICA5
MjUzICAgfCAgICAgNzY0NCAgIHwKK3wgICAgICA1MTIgIHwgICAgIDIwOTUgICB8ICAgICA2MTQ0
ICAgfCAgICAgNzY4MCAgIHwgfCAgICAgMjE5NCAgIHwgICAgMTAyNDAgICB8ICAgICA3MDg5ICAg
fAorfCAgICAgIDc2OCAgfCAgICAgMjIzMCAgIHwgICAgIDU3NzMgICB8ICAgICA3NTQ5ICAgfCB8
ICAgICAyMDQ1ICAgfCAgICAxMDMzMSAgIHwgICAgIDcwMTAgICB8Cit8ICAgICAxMDI0ICB8ICAg
ICAyMTMzICAgfCAgICAgNjQwMCAgIHwgICAgIDg1MzMgICB8IHwgICAgIDIxMzMgICB8ICAgIDEw
Nzc5ICAgfCAgICAgNzg3NyAgIHwKK3wgICAgIDIwNDggIHwgICAgIDIwMTEgICB8ICAgICA3MDQw
ICAgfCAgICAgODY2NSAgIHwgfCAgICAgMTk0MiAgIHwgICAgMTAyNDAgICB8ICAgICA3NzY4ICAg
fAorfCAgICAgNDA5NiAgfCAgICAgMjE5NCAgIHwgICAgIDY4MjcgICB8ICAgICA4Nzc3ICAgfCB8
ICAgICAxNzU1ICAgfCAgICAgOTQ1MiAgIHwgICAgIDY4MjcgICB8Cit8ICAgICA4MTkyICB8ICAg
ICAxODQ5ICAgfCAgICAgNjY1NiAgIHwgICAgIDY2NTYgICB8IHwgICAgIDE3NTIgICB8ICAgICA3
ODMxICAgfCAgICAgNjgyNyAgIHwKK3wgICAgIDkyMTYgIHwgICAgIDE4NzEgICB8ICAgICA1ODU4
ICAgfCAgICAgNjQxNiAgIHwgfCAgICAgMTY0MyAgIHwgICAgIDY5MDkgICB8ICAgICA2MjY2ICAg
fAorfCAgICAxNjM4NCAgfCAgICAgMTg4MyAgIHwgICAgIDYyMjMgICB8ICAgICA2NTA2ICAgfCB8
ICAgICAxNjY0ICAgfCAgICAgNzM0MCAgIHwgICAgIDY5ODIgICB8Cit8ICAgIDMyNzY4ICB8ICAg
ICAxODI2ICAgfCAgICAgNjM5MCAgIHwgICAgIDY2NjcgICB8IHwgICAgIDE2MzEgICB8ICAgICA3
NDgxICAgfCAgICAgNjk3MSAgIHwKK3wgICAyNjIxNDQgIHwgICAgIDE1NDYgICB8ICAgICA0MDc1
ICAgfCAgICAgNTk3NyAgIHwgfCAgICAgMTI5OSAgIHwgICAgIDM0MTUgICB8ICAgICAzNTUxICAg
fAorfCAgMTA0ODU3NiAgfCAgICAgMTEwNCAgIHwgICAgIDIwNzEgICB8ICAgICAxNzMwICAgfCB8
ICAgICAxMTA0ICAgfCAgICAgMTE0OSAgIHwgICAgIDE4MzQgICB8Cit8LS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18IHwtLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLXwKKworCisKK1VidW50dSAxMS4wNCwgZ2NjIDQuNSwgMzItYml0
LCBmZnR3IDMuMyBvbiBhIDEuNiBHSHogQXRvbSBOMjcwCisKK0J1aWx0IHdpdGg6CitnY2MgLW8g
dGVzdF9wZmZmdCAtREhBVkVfRkZUVyAtbXNzZSAtbWZwbWF0aD1zc2UgLU8zIC1XYWxsIC1XIHBm
ZmZ0LmMgdGVzdF9wZmZmdC5jIGZmdHBhY2suYyAtTC91c3IvbG9jYWwvbGliIC1JL3Vzci9sb2Nh
bC9pbmNsdWRlLyAtbGZmdHczZiAtbG0KKworfCBOIChpbnB1dCBsZW5ndGgpIHwgcmVhbCBGRlRQ
YWNrIHwgICByZWFsIEZGVFcgIHwgIHJlYWwgUEZGRlQgIHwgfCBjcGx4IEZGVFBhY2sgfCAgIGNw
bHggRkZUVyAgfCAgY3BseCBQRkZGVCAgfAorfC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLXwgfC0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tfAorfCAgICAgICAgICAgNjQgICAgIHwgICAgICAgNDUy
ICAgIHwgICAgICAxMDQxICAgIHwgICAgICAxMzM2ICAgIHwgfCAgICAgICA1NDkgICAgfCAgICAg
IDIzMTggICAgfCAgICAgIDE3ODEgICAgfAorfCAgICAgICAgICAgOTYgICAgIHwgICAgICAgNDQ0
ICAgIHwgICAgICAxMjk3ICAgIHwgICAgICAxMjk3ICAgIHwgfCAgICAgICA1MDMgICAgfCAgICAg
IDI0MDggICAgfCAgICAgIDE2ODYgICAgfAorfCAgICAgICAgICAxMjggICAgIHwgICAgICAgNTI3
ICAgIHwgICAgICAxNTI1ICAgIHwgICAgICAxNzA3ICAgIHwgfCAgICAgICA1NDMgICAgfCAgICAg
IDI2NTUgICAgfCAgICAgIDE4ODYgICAgfAorfCAgICAgICAgICAxOTIgICAgIHwgICAgICAgNDk4
ICAgIHwgICAgICAxNjUzICAgIHwgICAgICAxODQ5ICAgIHwgfCAgICAgICA1MzkgICAgfCAgICAg
IDI2NzggICAgfCAgICAgIDE5NDIgICAgfAorfCAgICAgICAgICAyNTYgICAgIHwgICAgICAgNTg1
ICAgIHwgICAgICAxODYyICAgIHwgICAgICAyMTU2ICAgIHwgfCAgICAgICA1OTQgICAgfCAgICAg
IDI3NzcgICAgfCAgICAgIDIyNDQgICAgfAorfCAgICAgICAgICAzODQgICAgIHwgICAgICAgNDk5
ICAgIHwgICAgICAxODcwICAgIHwgICAgICAxOTk4ICAgIHwgfCAgICAgICA1MTEgICAgfCAgICAg
IDI1ODYgICAgfCAgICAgIDE4OTAgICAgfAorfCAgICAgICAgICA1MTIgICAgIHwgICAgICAgNTYy
ICAgIHwgICAgICAyMDk1ICAgIHwgICAgICAyMTk0ICAgIHwgfCAgICAgICA1NDIgICAgfCAgICAg
IDI5NzMgICAgfCAgICAgIDIxOTQgICAgfAorfCAgICAgICAgICA3NjggICAgIHwgICAgICAgNTQ1
ICAgIHwgICAgICAyMDQ1ICAgIHwgICAgICAyMTMzICAgIHwgfCAgICAgICA1NDUgICAgfCAgICAg
IDIzNjUgICAgfCAgICAgIDIxMzMgICAgfAorfCAgICAgICAgIDEwMjQgICAgIHwgICAgICAgNTk1
ICAgIHwgICAgICAyMTMzICAgIHwgICAgICAyNDM4ICAgIHwgfCAgICAgICA1NjkgICAgfCAgICAg
IDI2OTUgICAgfCAgICAgIDIxNzkgICAgfAorfCAgICAgICAgIDIwNDggICAgIHwgICAgICAgNTg3
ICAgIHwgICAgICAyMTI1ICAgIHwgICAgICAyMzQ3ICAgIHwgfCAgICAgICA1MjEgICAgfCAgICAg
IDIyMzAgICAgfCAgICAgIDE3MDcgICAgfAorfCAgICAgICAgIDQwOTYgICAgIHwgICAgICAgNDk1
ICAgIHwgICAgICAxODkwICAgIHwgICAgICAxODM0ICAgIHwgfCAgICAgICA0OTIgICAgfCAgICAg
IDE4NzYgICAgfCAgICAgIDE2NzIgICAgfAorfCAgICAgICAgIDgxOTIgICAgIHwgICAgICAgNDY5
ICAgIHwgICAgICAxNTQ4ICAgIHwgICAgICAxNzI5ICAgIHwgfCAgICAgICA0MzggICAgfCAgICAg
IDE3NDAgICAgfCAgICAgIDE2NjQgICAgfAorfCAgICAgICAgIDkyMTYgICAgIHwgICAgICAgNDY4
ICAgIHwgICAgICAxNjYzICAgIHwgICAgICAxNjYzICAgIHwgfCAgICAgICA0NDYgICAgfCAgICAg
IDE1ODUgICAgfCAgICAgIDE1MzEgICAgfAorfCAgICAgICAgMTYzODQgICAgIHwgICAgICAgNDUz
ICAgIHwgICAgICAxNjA4ICAgIHwgICAgICAxNzY3ICAgIHwgfCAgICAgICAzOTggICAgfCAgICAg
IDE0NzYgICAgfCAgICAgIDE2NjQgICAgfAorfCAgICAgICAgMzI3NjggICAgIHwgICAgICAgNDU2
ICAgIHwgICAgICAxNDIwICAgIHwgICAgICAxNTAzICAgIHwgfCAgICAgICAzODcgICAgfCAgICAg
IDEzODggICAgfCAgICAgIDEzNDUgICAgfAorfCAgICAgICAyNjIxNDQgICAgIHwgICAgICAgMzA5
ICAgIHwgICAgICAgMzg1ICAgIHwgICAgICAgNzI2ICAgIHwgfCAgICAgICAyNjIgICAgfCAgICAg
ICA0MTUgICAgfCAgICAgICA4NDAgICAgfAorfCAgICAgIDEwNDg1NzYgICAgIHwgICAgICAgMjgw
ICAgIHwgICAgICAgMzUxICAgIHwgICAgICAgNzM5ICAgIHwgfCAgICAgICAyNjEgICAgfCAgICAg
ICAzMTMgICAgfCAgICAgICA3OTcgICAgfAorfC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLXwgfC0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tfAorCisKKworV2luZG93cyA3LCB2aXN1YWwgYysrIDIw
MTAgb24gYSAxLjYgR0h6IEF0b20gTjI3MAorCitCdWlsdCB3aXRoOgorY2wgL094IC1EX1VTRV9N
QVRIX0RFRklORVMgL2FyY2g6U1NFIHRlc3RfcGZmZnQuYyBwZmZmdC5jIGZmdHBhY2suYworCiso
dmlzdWFsIGMrKyBpcyBkZWZpbml0aXZlbHkgbm90IHZlcnkgZ29vZCB3aXRoIFNTRSBpbnRyaW5z
aWNzLi4uKQorCit8IE4gKGlucHV0IGxlbmd0aCkgfCByZWFsIEZGVFBhY2sgfCAgcmVhbCBQRkZG
VCAgfCB8IGNwbHggRkZUUGFjayB8ICBjcGx4IFBGRkZUICB8Cit8LS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tfCB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS18Cit8ICAgICAgICAgICA2NCAgICAgfCAgICAgICAxNzMgICAgfCAgICAgIDEwMDkgICAg
fCB8ICAgICAgIDE3NCAgICB8ICAgICAgMTE1OSAgICB8Cit8ICAgICAgICAgICA5NiAgICAgfCAg
ICAgICAxNjkgICAgfCAgICAgIDEwMjkgICAgfCB8ICAgICAgIDE4OCAgICB8ICAgICAgMTIwMSAg
ICB8Cit8ICAgICAgICAgIDEyOCAgICAgfCAgICAgICAxOTUgICAgfCAgICAgIDEyNDIgICAgfCB8
ICAgICAgIDE5MSAgICB8ICAgICAgMTI3NSAgICB8Cit8ICAgICAgICAgIDE5MiAgICAgfCAgICAg
ICAxNzggICAgfCAgICAgIDEzMTIgICAgfCB8ICAgICAgIDE4NCAgICB8ICAgICAgMTI3NiAgICB8
Cit8ICAgICAgICAgIDI1NiAgICAgfCAgICAgICAxOTYgICAgfCAgICAgIDE1OTEgICAgfCB8ICAg
ICAgIDE4NiAgICB8ICAgICAgMTI4MSAgICB8Cit8ICAgICAgICAgIDM4NCAgICAgfCAgICAgICAx
NzIgICAgfCAgICAgIDE0MDkgICAgfCB8ICAgICAgIDE4MSAgICB8ICAgICAgMTI4MSAgICB8Cit8
ICAgICAgICAgIDUxMiAgICAgfCAgICAgICAxODcgICAgfCAgICAgIDE2NDAgICAgfCB8ICAgICAg
IDE4MSAgICB8ICAgICAgMTMxMyAgICB8Cit8ICAgICAgICAgIDc2OCAgICAgfCAgICAgICAxNzEg
ICAgfCAgICAgIDE2MTQgICAgfCB8ICAgICAgIDE3NiAgICB8ICAgICAgMTI1OCAgICB8Cit8ICAg
ICAgICAgMTAyNCAgICAgfCAgICAgICAxODYgICAgfCAgICAgIDE4MTIgICAgfCB8ICAgICAgIDE3
OCAgICB8ICAgICAgMTIyMyAgICB8Cit8ICAgICAgICAgMjA0OCAgICAgfCAgICAgICAxOTAgICAg
fCAgICAgIDE3MDcgICAgfCB8ICAgICAgIDE4NiAgICB8ICAgICAgMTA5OSAgICB8Cit8ICAgICAg
ICAgNDA5NiAgICAgfCAgICAgICAxODIgICAgfCAgICAgIDE0NDYgICAgfCB8ICAgICAgIDE3NyAg
ICB8ICAgICAgIDk3NSAgICB8Cit8ICAgICAgICAgODE5MiAgICAgfCAgICAgICAxNzUgICAgfCAg
ICAgIDEzNDUgICAgfCB8ICAgICAgIDE2OSAgICB8ICAgICAgMTAzNCAgICB8Cit8ICAgICAgICAg
OTIxNiAgICAgfCAgICAgICAxNjUgICAgfCAgICAgIDEyNzEgICAgfCB8ICAgICAgIDE2OCAgICB8
ICAgICAgMTAyMyAgICB8Cit8ICAgICAgICAxNjM4NCAgICAgfCAgICAgICAxNjYgICAgfCAgICAg
IDEzOTYgICAgfCB8ICAgICAgIDE2NSAgICB8ICAgICAgIDk0OSAgICB8Cit8ICAgICAgICAzMjc2
OCAgICAgfCAgICAgICAxNzIgICAgfCAgICAgIDEzMTEgICAgfCB8ICAgICAgIDE2MSAgICB8ICAg
ICAgIDg4MSAgICB8Cit8ICAgICAgIDI2MjE0NCAgICAgfCAgICAgICAxMzYgICAgfCAgICAgICA2
MzIgICAgfCB8ICAgICAgIDEzNCAgICB8ICAgICAgIDYyOSAgICB8Cit8ICAgICAgMTA0ODU3NiAg
ICAgfCAgICAgICAxMzQgICAgfCAgICAgICA2OTggICAgfCB8ICAgICAgIDEyNyAgICB8ICAgICAg
IDYyMyAgICB8Cit8LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tfCB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS18CisKKworCitVYnVudHUgMTIuMDQs
IGdjYy00LjcuMywgMzItYml0LCB3aXRoIGZmdHcgMy4zLjMgKGJ1aWx0IHdpdGggLS1lbmFibGUt
bmVvbiksIG9uIGEgMS4yR0h6IEFSTSBDb3J0ZXggQTkgKFRlZ3JhIDMpCisKK0J1aWx0IHdpdGg6
CitnY2MtNC43IC1PMyAtREhBVkVfRkZUVyAtbWFyY2g9YXJtdjctYSAtbXR1bmU9Y29ydGV4LWE5
IC1tZmxvYXQtYWJpPWhhcmQgLW1mcHU9bmVvbiAtZmZhc3QtbWF0aCB0ZXN0X3BmZmZ0LmMgcGZm
ZnQuYyAtbyB0ZXN0X3BmZmZ0X2FybSBmZnRwYWNrLmMgLWxtIC1JL3Vzci9sb2NhbC9pbmNsdWRl
LyAtTC91c3IvbG9jYWwvbGliLyAtbGZmdHczZgorCit8IGlucHV0IGxlbiB8cmVhbCBGRlRQYWNr
fCAgcmVhbCBGRlRXIHwgcmVhbCBQRkZGVCB8IHxjcGx4IEZGVFBhY2t8ICBjcGx4IEZGVFcgfCBj
cGx4IFBGRkZUIHwKK3wtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLXwgfC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tfAorfCAgICAg
ICA2NCAgfCAgICAgIDU0OSAgIHwgICAgICA0NTIgICB8ICAgICAgNzMxICAgfCB8ICAgICAgNTEy
ICAgfCAgICAgIDYwMiAgIHwgICAgICA2NDAgICB8Cit8ICAgICAgIDk2ICB8ICAgICAgNDIxICAg
fCAgICAgIDI3MiAgIHwgICAgICA3MDIgICB8IHwgICAgICA0OTYgICB8ICAgICAgNTcxICAgfCAg
ICAgIDYwMiAgIHwKK3wgICAgICAxMjggIHwgICAgICA0OTggICB8ICAgICAgNTEyICAgfCAgICAg
IDgxNSAgIHwgfCAgICAgIDU5NyAgIHwgICAgICA2MTggICB8ICAgICAgNjUyICAgfAorfCAgICAg
IDE2MCAgfCAgICAgIDUyMSAgIHwgICAgICA1MzYgICB8ICAgICAgODE1ICAgfCB8ICAgICAgNTg2
ICAgfCAgICAgIDY2OSAgIHwgICAgICA2MjUgICB8Cit8ICAgICAgMTkyICB8ICAgICAgNTM5ICAg
fCAgICAgIDU3MSAgIHwgICAgICA4ODMgICB8IHwgICAgICA0ODUgICB8ICAgICAgNTk3ICAgfCAg
ICAgIDYyNiAgIHwKK3wgICAgICAyNTYgIHwgICAgICA2NDAgICB8ICAgICAgNTM5ICAgfCAgICAg
IDk3NSAgIHwgfCAgICAgIDU2OSAgIHwgICAgICA2MTEgICB8ICAgICAgNjcxICAgfAorfCAgICAg
IDM4NCAgfCAgICAgIDQ5OSAgIHwgICAgICA2MTAgICB8ICAgICAgODc5ICAgfCB8ICAgICAgNDk5
ICAgfCAgICAgIDYwMiAgIHwgICAgICA2MzcgICB8Cit8ICAgICAgNDgwICB8ICAgICAgNTE4ICAg
fCAgICAgIDUwNyAgIHwgICAgICA4NzcgICB8IHwgICAgICA0OTYgICB8ICAgICAgNjYxICAgfCAg
ICAgIDYxNiAgIHwKK3wgICAgICA1MTIgIHwgICAgICA1MjQgICB8ICAgICAgNTkxICAgfCAgICAg
MTAwMiAgIHwgfCAgICAgIDU0OSAgIHwgICAgICA2NzggICB8ICAgICAgNjY4ICAgfAorfCAgICAg
IDY0MCAgfCAgICAgIDU0MiAgIHwgICAgICA2MTIgICB8ICAgICAgOTU1ICAgfCB8ICAgICAgNTY4
ICAgfCAgICAgIDY2MyAgIHwgICAgICA2NDUgICB8Cit8ICAgICAgNzY4ICB8ICAgICAgNTU3ICAg
fCAgICAgIDYxMyAgIHwgICAgICA5ODEgICB8IHwgICAgICA0OTEgICB8ICAgICAgNjYzICAgfCAg
ICAgIDU5OCAgIHwKK3wgICAgICA4MDAgIHwgICAgICA1MTQgICB8ICAgICAgMzUzICAgfCAgICAg
IDg4MiAgIHwgfCAgICAgIDUxNCAgIHwgICAgICAzNjAgICB8ICAgICAgNTc0ICAgfAorfCAgICAg
MTAyNCAgfCAgICAgIDY0MCAgIHwgICAgICA2NDAgICB8ICAgICAxMDY3ICAgfCB8ICAgICAgNDky
ICAgfCAgICAgIDY4MyAgIHwgICAgICA2MDIgICB8Cit8ICAgICAyMDQ4ICB8ICAgICAgNTg3ICAg
fCAgICAgIDY0MCAgIHwgICAgICA5MDggICB8IHwgICAgICA0ODYgICB8ICAgICAgNjQwICAgfCAg
ICAgIDU1MiAgIHwKK3wgICAgIDI0MDAgIHwgICAgICA0NzkgICB8ICAgICAgMzY4ICAgfCAgICAg
IDc3NyAgIHwgfCAgICAgIDQyMiAgIHwgICAgICAzNzYgICB8ICAgICAgNTE4ICAgfAorfCAgICAg
NDA5NiAgfCAgICAgIDUxMSAgIHwgICAgICA2MTQgICB8ICAgICAgODUzICAgfCB8ICAgICAgNDI2
ICAgfCAgICAgIDY0MCAgIHwgICAgICA1MzQgICB8Cit8ICAgICA4MTkyICB8ICAgICAgNDE1ICAg
fCAgICAgIDU4NCAgIHwgICAgICA3MDggICB8IHwgICAgICAzODYgICB8ICAgICAgNjIyICAgfCAg
ICAgIDUxNiAgIHwKK3wgICAgIDkyMTYgIHwgICAgICA0MTkgICB8ICAgICAgNTcxICAgfCAgICAg
IDY4NyAgIHwgfCAgICAgIDM2NCAgIHwgICAgICA1ODYgICB8ICAgICAgNTA2ICAgfAorfCAgICAx
NjM4NCAgfCAgICAgIDQyNiAgIHwgICAgICA1NzcgICB8ICAgICAgNzE2ICAgfCB8ICAgICAgMzk4
ICAgfCAgICAgIDYwNiAgIHwgICAgICA1MzAgICB8Cit8ICAgIDMyNzY4ICB8ICAgICAgNDE3ICAg
fCAgICAgIDU3MiAgIHwgICAgICA2NzMgICB8IHwgICAgICAzOTkgICB8ICAgICAgNTcyICAgfCAg
ICAgIDQ2OCAgIHwKK3wgICAyNjIxNDQgIHwgICAgICAyMTkgICB8ICAgICAgMzgwICAgfCAgICAg
IDI5MyAgIHwgfCAgICAgIDI1NSAgIHwgICAgICA0MzEgICB8ICAgICAgMzQzICAgfAorfCAgMTA0
ODU3NiAgfCAgICAgIDIwMiAgIHwgICAgICAyNzQgICB8ICAgICAgMjM3ICAgfCB8ICAgICAgMjY1
ICAgfCAgICAgIDI4MiAgIHwgICAgICAzNTUgICB8Cit8LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS18IHwtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLXwKKworU2FtZSBwbGF0Zm9ybSBhcyBhYm92ZSwgYnV0IHRoaXMgdGltZSBwZmZm
dCBhbmQgZmZ0cGFjayBhcmUgYnVpbHQgd2l0aCBjbGFuZyAzLjI6CisKK2NsYW5nIC1PMyAtREhB
VkVfRkZUVyAtbWFyY2g9YXJtdjctYSAtbXR1bmU9Y29ydGV4LWE5IC1tZmxvYXQtYWJpPWhhcmQg
LW1mcHU9bmVvbiAtZmZhc3QtbWF0aCB0ZXN0X3BmZmZ0LmMgcGZmZnQuYyAtbyB0ZXN0X3BmZmZ0
X2FybSBmZnRwYWNrLmMgLWxtIC1JL3Vzci9sb2NhbC9pbmNsdWRlLyAtTC91c3IvbG9jYWwvbGli
LyAtbGZmdHczZgorCit8IGlucHV0IGxlbiB8cmVhbCBGRlRQYWNrfCAgcmVhbCBGRlRXIHwgcmVh
bCBQRkZGVCB8IHxjcGx4IEZGVFBhY2t8ICBjcGx4IEZGVFcgfCBjcGx4IFBGRkZUIHwKK3wtLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLXwgfC0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tfAorfCAgICAgICA2NCAgfCAgICAgIDQyNyAg
IHwgICAgICA0NTIgICB8ICAgICAgODUzICAgfCB8ICAgICAgNDI3ICAgfCAgICAgIDYwMiAgIHwg
ICAgIDEwMjQgICB8Cit8ICAgICAgIDk2ICB8ICAgICAgMzUxICAgfCAgICAgIDI3NiAgIHwgICAg
ICA4NDMgICB8IHwgICAgICAzMzcgICB8ICAgICAgNTcxICAgfCAgICAgIDk2MyAgIHwKK3wgICAg
ICAxMjggIHwgICAgICAzNzMgICB8ICAgICAgNTEyICAgfCAgICAgIDk5NiAgIHwgfCAgICAgIDM5
MCAgIHwgICAgICA2MTggICB8ICAgICAxMDU0ICAgfAorfCAgICAgIDE2MCAgfCAgICAgIDQyNiAg
IHwgICAgICA1MzYgICB8ICAgICAgOTg3ICAgfCB8ICAgICAgMzc1ICAgfCAgICAgIDY2OSAgIHwg
ICAgICA5MTQgICB8Cit8ICAgICAgMTkyICB8ICAgICAgNDA0ICAgfCAgICAgIDU3MSAgIHwgICAg
IDEwNzkgICB8IHwgICAgICAzODggICB8ICAgICAgNTg4ICAgfCAgICAgMTA3OSAgIHwKK3wgICAg
ICAyNTYgIHwgICAgICA0NjUgICB8ICAgICAgNTM5ICAgfCAgICAgMTIwNSAgIHwgfCAgICAgIDQ0
NSAgIHwgICAgICA2MDIgICB8ICAgICAxMTcwICAgfAorfCAgICAgIDM4NCAgfCAgICAgIDM2NiAg
IHwgICAgICA2MTAgICB8ICAgICAxMDk5ICAgfCB8ICAgICAgMzQzICAgfCAgICAgIDU5NCAgIHwg
ICAgIDEwOTkgICB8Cit8ICAgICAgNDgwICB8ICAgICAgMzU2ICAgfCAgICAgIDUwNyAgIHwgICAg
IDExNDAgICB8IHwgICAgICAzMzUgICB8ICAgICAgNjUxICAgfCAgICAgIDkzMSAgIHwKK3wgICAg
ICA1MTIgIHwgICAgICA0MTEgICB8ICAgICAgNTkxICAgfCAgICAgMTIxMyAgIHwgfCAgICAgIDM4
NCAgIHwgICAgICA2NDkgICB8ICAgICAxMTI0ICAgfAorfCAgICAgIDY0MCAgfCAgICAgIDM5OCAg
IHwgICAgICA2MTIgICB8ICAgICAxMTkzICAgfCB8ICAgICAgMzczICAgfCAgICAgIDY1NCAgIHwg
ICAgICA5MDEgICB8Cit8ICAgICAgNzY4ICB8ICAgICAgNDA5ICAgfCAgICAgIDYxMyAgIHwgICAg
IDEyMjcgICB8IHwgICAgICAzODMgICB8ICAgICAgNjYzICAgfCAgICAgMTA0NCAgIHwKK3wgICAg
ICA4MDAgIHwgICAgICA0MTEgICB8ICAgICAgMzQ4ICAgfCAgICAgMTA3MyAgIHwgfCAgICAgIDM1
MyAgIHwgICAgICAzNTggICB8ICAgICAgODA5ICAgfAorfCAgICAgMTAyNCAgfCAgICAgIDQyNyAg
IHwgICAgICA2NDAgICB8ICAgICAxMjgwICAgfCB8ICAgICAgNDEzICAgfCAgICAgIDY5MiAgIHwg
ICAgIDEwMDQgICB8Cit8ICAgICAyMDQ4ICB8ICAgICAgNDE0ICAgfCAgICAgIDYyNiAgIHwgICAg
IDExMjYgICB8IHwgICAgICAzNzEgICB8ICAgICAgNjQwICAgfCAgICAgIDg1MyAgIHwKK3wgICAg
IDI0MDAgIHwgICAgICAzOTkgICB8ICAgICAgMzczICAgfCAgICAgIDg5OCAgIHwgfCAgICAgIDMx
OSAgIHwgICAgICAzNjggICB8ICAgICAgNjUzICAgfAorfCAgICAgNDA5NiAgfCAgICAgIDQwNCAg
IHwgICAgICA2MDIgICB8ICAgICAxMDU5ICAgfCB8ICAgICAgMzU3ICAgfCAgICAgIDYzMyAgIHwg
ICAgICA3NzggICB8Cit8ICAgICA4MTkyICB8ICAgICAgMzMyICAgfCAgICAgIDU4NCAgIHwgICAg
ICA3OTIgICB8IHwgICAgICAzMDggICB8ICAgICAgNjE2ICAgfCAgICAgIDcxNiAgIHwKK3wgICAg
IDkyMTYgIHwgICAgICAzMjIgICB8ICAgICAgNTYxICAgfCAgICAgIDc4MyAgIHwgfCAgICAgIDI5
OSAgIHwgICAgICA1ODYgICB8ICAgICAgNjg3ICAgfAorfCAgICAxNjM4NCAgfCAgICAgIDM0NCAg
IHwgICAgICA1NjggICB8ICAgICAgNzc4ICAgfCB8ICAgICAgMzE0ICAgfCAgICAgIDYxNyAgIHwg
ICAgICA3NDUgICB8Cit8ICAgIDMyNzY4ICB8ICAgICAgMzQyICAgfCAgICAgIDU2NCAgIHwgICAg
ICA3MzcgICB8IHwgICAgICAzMTQgICB8ICAgICAgNTUyICAgfCAgICAgIDYyOSAgIHwKK3wgICAy
NjIxNDQgIHwgICAgICAyMDEgICB8ICAgICAgMzgzICAgfCAgICAgIDMxMyAgIHwgfCAgICAgIDIy
NyAgIHwgICAgICA0MzUgICB8ICAgICAgNDEzICAgfAorfCAgMTA0ODU3NiAgfCAgICAgIDE4NyAg
IHwgICAgICAyNjIgICB8ICAgICAgMjUxICAgfCB8ICAgICAgMjI4ICAgfCAgICAgIDI4MSAgIHwg
ICAgICA0MDkgICB8Cit8LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS18IHwtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLXwKKworU28g
aXQgbG9va3MgbGlrZSwgb24gQVJNLCBnY2MgNC43IGlzIHRoZSBiZXN0IGF0IHNjYWxhciBmbG9h
dGluZyBwb2ludAorKHRoZSBmZnRwYWNrIHBlcmZvcm1hbmNlIG51bWJlcnMgYXJlIGJldHRlciB3
aXRoIGdjYyksIHdoaWxlIGNsYW5nIGlzCit0aGUgYmVzdCB3aXRoIG5lb24gaW50cmluc2ljcyAo
c2VlIGhvdyBwZmZmdCBwZXJmIGhhcyBpbXByb3ZlZCB3aXRoCitjbGFuZyAzLjIpLgorCisKK05W
SURJQSBKZXRzb24gVEsxIGJvYXJkLCBnY2MtNC44LjIuIFRoZSBjcHUgaXMgYSAyLjNHSHogY29y
dGV4IEExNSAoVGVncmEgSzEpLgorCitCdWlsdCB3aXRoOgorZ2NjIC1PMyAtbWFyY2g9YXJtdjct
YSAtbXR1bmU9bmF0aXZlIC1tZmxvYXQtYWJpPWhhcmQgLW1mcHU9bmVvbiAtZmZhc3QtbWF0aCB0
ZXN0X3BmZmZ0LmMgcGZmZnQuYyAtbyB0ZXN0X3BmZmZ0X2FybSBmZnRwYWNrLmMgLWxtCisKK3wg
aW5wdXQgbGVuIHxyZWFsIEZGVFBhY2t8IHJlYWwgUEZGRlQgfCB8Y3BseCBGRlRQYWNrfCBjcGx4
IFBGRkZUIHwKK3wtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tfCB8LS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLXwKK3wgICAgICAgNjQgIHwgICAgIDE3MzUgICB8ICAgICAzMzA4
ICAgfCB8ICAgICAxOTk0ICAgfCAgICAgMzc0NCAgIHwKK3wgICAgICAgOTYgIHwgICAgIDE1OTYg
ICB8ICAgICAzNDQ4ICAgfCB8ICAgICAxOTg3ICAgfCAgICAgMzU3MiAgIHwKK3wgICAgICAxMjgg
IHwgICAgIDE4MDcgICB8ICAgICA0MDc2ICAgfCB8ICAgICAyMjU1ICAgfCAgICAgMzk2MCAgIHwK
K3wgICAgICAxNjAgIHwgICAgIDE3NjkgICB8ICAgICA0MDgzICAgfCB8ICAgICAyMDcxICAgfCAg
ICAgMzg0NSAgIHwKK3wgICAgICAxOTIgIHwgICAgIDE5OTAgICB8ICAgICA0MjMzICAgfCB8ICAg
ICAyMDE3ICAgfCAgICAgMzkzOSAgIHwKK3wgICAgICAyNTYgIHwgICAgIDIxOTEgICB8ICAgICA0
ODgyICAgfCB8ICAgICAyMjU0ICAgfCAgICAgNDM0NiAgIHwKK3wgICAgICAzODQgIHwgICAgIDE4
NzggICB8ICAgICA0NDkyICAgfCB8ICAgICAyMDczICAgfCAgICAgNDAxMiAgIHwKK3wgICAgICA0
ODAgIHwgICAgIDE3NDggICB8ICAgICA0Mzk4ICAgfCB8ICAgICAxOTIzICAgfCAgICAgMzk1MSAg
IHwKK3wgICAgICA1MTIgIHwgICAgIDIwMzAgICB8ICAgICA1MDY0ICAgfCB8ICAgICAyMjY3ICAg
fCAgICAgNDE5NSAgIHwKK3wgICAgICA2NDAgIHwgICAgIDE5MTggICB8ICAgICA0NzU2ICAgfCB8
ICAgICAyMDk0ICAgfCAgICAgNDE4NCAgIHwKK3wgICAgICA3NjggIHwgICAgIDIwOTkgICB8ICAg
ICA0OTA3ICAgfCB8ICAgICAyMDQ4ICAgfCAgICAgNDI5NyAgIHwKK3wgICAgICA4MDAgIHwgICAg
IDE4MjIgICB8ICAgICA0NTU1ICAgfCB8ICAgICAxODgwICAgfCAgICAgNDA2MyAgIHwKK3wgICAg
IDEwMjQgIHwgICAgIDIyMzIgICB8ICAgICA1MzU1ICAgfCB8ICAgICAyMTg3ICAgfCAgICAgNDQy
MCAgIHwKK3wgICAgIDIwNDggIHwgICAgIDIxNzYgICB8ICAgICA0OTgzICAgfCB8ICAgICAyMDI3
ICAgfCAgICAgMzYwMiAgIHwKK3wgICAgIDI0MDAgIHwgICAgIDE3NDEgICB8ICAgICA0MjU2ICAg
fCB8ICAgICAxNzEwICAgfCAgICAgMzM0NCAgIHwKK3wgICAgIDQwOTYgIHwgICAgIDE4MTYgICB8
ICAgICAzOTE0ICAgfCB8ICAgICAxODUxICAgfCAgICAgMzM0OSAgIHwKK3wgICAgIDgxOTIgIHwg
ICAgIDE3MTYgICB8ICAgICAzNDgxICAgfCB8ICAgICAxNzAwICAgfCAgICAgMzI1NSAgIHwKK3wg
ICAgIDkyMTYgIHwgICAgIDE3MzUgICB8ICAgICAzNTg5ICAgfCB8ICAgICAxNjUzICAgfCAgICAg
MzA5NCAgIHwKK3wgICAgMTYzODQgIHwgICAgIDE1NjcgICB8ICAgICAzNDgzICAgfCB8ICAgICAx
NjM3ICAgfCAgICAgMzI0NCAgIHwKK3wgICAgMzI3NjggIHwgICAgIDE2MjQgICB8ICAgICAzMjQw
ICAgfCB8ICAgICAxNjU1ICAgfCAgICAgMzE1NiAgIHwKK3wgICAyNjIxNDQgIHwgICAgIDEwMTIg
ICB8ICAgICAxODk4ICAgfCB8ICAgICAgOTgzICAgfCAgICAgMTUwMyAgIHwKK3wgIDEwNDg1NzYg
IHwgICAgICA4NzYgICB8ICAgICAxMTU0ICAgfCB8ICAgICAgODY4ICAgfCAgICAgMTM0MSAgIHwK
K3wtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tfCB8LS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLXwKKworVGhlIHBlcmZvcm1hbmNlIG9uIHRoZSB0ZWdyYSBLMSBpcyBwcmV0dHkg
aW1wcmVzc2l2ZS4gSSdtIG5vdAoraW5jbHVkaW5nIHRoZSBGRlRXIG51bWJlcnMgYXMgdGhleSBh
cyBzbGlnaHRseSBiZWxvdyB0aGUgc2NhbGFyCitmZnRwYWNrIG51bWJlcnMsIHNvIHNvbWV0aGlu
ZyBtdXN0IGJlIHdyb25nIChob3dldmVyIGl0IHNlZW1zIHRvIGJlCitjb3JyZWN0bHkgY29uZmln
dXJlZCBhbmQgaXMgdXNpbmcgbmVvbiBzaW1kIGluc3RydWN0aW9ucykuCisKK1doZW4gdXNpbmcg
Y2xhbmcgMy40IHRoZSBwZmZmdCB2ZXJzaW9uIGlzIGV2ZW4gYSBiaXQgZmFzdGVyLCByZWFjaGlu
ZworNS43IEdGbG9wcyBmb3IgcmVhbCBmZnRzIG9mIHNpemUgMTAyNC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvZ2VuZXJh
dGVfc2VlZF9jb3JwdXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3BmZmZ0L2dlbmVyYXRlX3NlZWRfY29ycHVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4Yzlk
MzE1YjE1YmE0MTY5NGYxOGFhMzgzMDllZWM3MzcyNTFmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L2dlbmVy
YXRlX3NlZWRfY29ycHVzLnB5CkBAIC0wLDAgKzEsNzQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHBy
aW50X2Z1bmN0aW9uCisKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5CitpbXBvcnQgb3MKK2ltcG9y
dCByYW5kb20KK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKKworTUFYX0lOUFVUX1NJWkUgPSA1
MDAwICAjIDwgMSBNQiBzbyB3ZSBkb24ndCBibG93IHVwIGZ1enplciBidWlsZCBzaXplcy4KK01B
WF9GTE9BVDMyID0gMy40MDI4MjM1ZSszOAorCisKK2RlZiBJc1ZhbGlkU2l6ZShuKToKKyAgaWYg
biA9PSAwOgorICAgIHJldHVybiBGYWxzZQorICAjIFBGRkZUIG9ubHkgc3VwcG9ydHMgdHJhbnNm
b3JtcyBmb3IgaW5wdXRzIG9mIGxlbmd0aCBOIG9mIHRoZSBmb3JtCisgICMgTiA9ICgyXmEpKigz
XmIpKig1XmMpIHdoZXJlIGEgPj0gNSwgYiA+PTAsIGMgPj0gMC4KKyAgRkFDVE9SUyA9IFsyLCAz
LCA1XQorICBmYWN0b3JpemF0aW9uID0gWzAsIDAsIDBdCisgIGZvciBpLCBmYWN0b3IgaW4gZW51
bWVyYXRlKEZBQ1RPUlMpOgorICAgIHdoaWxlIG4gJSBmYWN0b3IgPT0gMDoKKyAgICAgIG4gPSBu
IC8vIGZhY3RvcgorICAgICAgZmFjdG9yaXphdGlvbltpXSArPSAxCisgIHJldHVybiBmYWN0b3Jp
emF0aW9uWzBdID49IDUgYW5kIG4gPT0gMQorCisKK2RlZiBXcml0ZUZsb2F0MzJBcnJheVRvRmls
ZShmaWxlX3BhdGgsIHNpemUsIGdlbmVyYXRvcik6CisgICIiIkdlbmVyYXRlIGFuIGFycmF5IG9m
IGZsb2F0MzIgdmFsdWVzIGFuZCB3cml0ZXMgdG8gZmlsZS4iIiIKKyAgd2l0aCBvcGVuKGZpbGVf
cGF0aCwgJ3diJykgYXMgZjoKKyAgICBmbG9hdF9hcnJheSA9IGFycmF5KCdmJywgW2dlbmVyYXRv
cigpIGZvciBfIGluIHJhbmdlKHNpemUpXSkKKyAgICBmbG9hdF9hcnJheS50b2ZpbGUoZikKKwor
CitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICBwcmludCgnVXNhZ2U6
ICVzIDxwYXRoIHRvIG91dHB1dCBkaXJlY3Rvcnk+JyAlIHN5cy5hcmd2WzBdKQorICAgIHN5cy5l
eGl0KDEpCisKKyAgb3V0cHV0X3BhdGggPSBzeXMuYXJndlsxXQorICAjIFN0YXJ0IHdpdGggYSBj
bGVhbiBvdXRwdXQgZGlyZWN0b3J5LgorICBpZiBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfcGF0aCk6
CisgICAgc2h1dGlsLnJtdHJlZShvdXRwdXRfcGF0aCkKKyAgb3MubWFrZWRpcnMob3V0cHV0X3Bh
dGgpCisKKyAgIyBMaXN0IG9mIHZhbGlkIGlucHV0IHNpemVzLgorICBOID0gW24gZm9yIG4gaW4g
cmFuZ2UoTUFYX0lOUFVUX1NJWkUpIGlmIElzVmFsaWRTaXplKG4pXQorCisgICMgU2V0IHRoZSBz
ZWVkIHRvIGFsd2F5cyBnZW5lcmF0ZSB0aGUgc2FtZSByYW5kb20gZGF0YS4KKyAgcmFuZG9tLnNl
ZWQoMCkKKworICAjIEdlbmVyYXRlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBhcnJheXMgZm9y
IGVhY2ggdGFyZ2V0IGxlbmd0aC4KKyAgZm9yIG4gaW4gTjoKKyAgICAjIFplcm9zLgorICAgIFdy
aXRlRmxvYXQzMkFycmF5VG9GaWxlKAorICAgICAgICBvcy5wYXRoLmpvaW4ob3V0cHV0X3BhdGgs
ICd6ZXJvc18lZCcgJSBuKSwgbiwgbGFtYmRhOiAwKQorICAgICMgTWF4IGZsb2F0IDMyLgorICAg
IFdyaXRlRmxvYXQzMkFycmF5VG9GaWxlKAorICAgICAgICBvcy5wYXRoLmpvaW4ob3V0cHV0X3Bh
dGgsICdtYXhfJWQnICUgbiksIG4sIGxhbWJkYTogTUFYX0ZMT0FUMzIpCisgICAgIyBSYW5kb20g
dmFsdWVzIGluIHRoZSBzMTYgcmFuZ2UuCisgICAgcm5kX3MxNiA9IGxhbWJkYTogMzI3NjguMCAq
IDIuMCAqIChyYW5kb20ucmFuZG9tKCkgLSAwLjUpCisgICAgV3JpdGVGbG9hdDMyQXJyYXlUb0Zp
bGUoCisgICAgICAgIG9zLnBhdGguam9pbihvdXRwdXRfcGF0aCwgJ3JuZF9zMTZfJWQnICUgbiks
IG4sIHJuZF9zMTYpCisKKyAgc3lzLmV4aXQoMCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvcGF0Y2hlcy8wMS1ybXZfcHJpbnRmLmRpZmYgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3BhdGNoZXMv
MDEtcm12X3ByaW50Zi5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhOTE0OTQ2MWUyYzI3MzZhMjI3OWQzYjMw
ZDk1NmMyMDQ4Y2Q5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3BhdGNoZXMvMDEtcm12X3ByaW50Zi5kaWZm
CkBAIC0wLDAgKzEsNjAgQEAKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZm
ZnQuYyBiL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jCitpbmRleCA3OTM0ZGI0NDhhMDku
LjJlMGMyZjY1MTQzOCAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5j
CisrKysgYi90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworQEAgLTU5LDcgKzU5LDcgQEAK
KyAKKyAjaW5jbHVkZSAicGZmZnQuaCIKKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUg
PHN0ZGlvLmg+CisrLy8gI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAj
aW5jbHVkZSA8YXNzZXJ0Lmg+CisgCitAQCAtMjIyLDMxICsyMjIsMzUgQEAgdm9pZCB2YWxpZGF0
ZV9wZmZmdF9zaW1kKCkgeworICAgbWVtY3B5KGEzLmYsIGYrMTIsIDQqc2l6ZW9mKGZsb2F0KSk7
CisgCisgICB0ID0gYTA7IHUgPSBhMTsgdC52ID0gVlpFUk8oKTsKKy0gIHByaW50ZigiVlpFUk89
WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0sIHQuZlszXSk7IGFz
c2VydHY0KHQsIDAsIDAsIDAsIDApOworKyAgLy8gcHJpbnRmKCJWWkVSTz1bJTJnICUyZyAlMmcg
JTJnXVxuIiwgdC5mWzBdLCB0LmZbMV0sIHQuZlsyXSwgdC5mWzNdKTsKKysgIGFzc2VydHY0KHQs
IDAsIDAsIDAsIDApOworICAgdC52ID0gVkFERChhMS52LCBhMi52KTsKKy0gIHByaW50ZigiVkFE
RCg0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0s
IHQuZlszXSk7IGFzc2VydHY0KHQsIDEyLCAxNCwgMTYsIDE4KTsKKysgIC8vIHByaW50ZigiVkFE
RCg0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0s
IHQuZlszXSk7CisrICBhc3NlcnR2NCh0LCAxMiwgMTQsIDE2LCAxOCk7CisgICB0LnYgPSBWTVVM
KGExLnYsIGEyLnYpOworLSAgcHJpbnRmKCJWTVVMKDQ6Nyw4OjExKT1bJTJnICUyZyAlMmcgJTJn
XVxuIiwgdC5mWzBdLCB0LmZbMV0sIHQuZlsyXSwgdC5mWzNdKTsgYXNzZXJ0djQodCwgMzIsIDQ1
LCA2MCwgNzcpOworKyAgLy8gcHJpbnRmKCJWTVVMKDQ6Nyw4OjExKT1bJTJnICUyZyAlMmcgJTJn
XVxuIiwgdC5mWzBdLCB0LmZbMV0sIHQuZlsyXSwgdC5mWzNdKTsKKysgIGFzc2VydHY0KHQsIDMy
LCA0NSwgNjAsIDc3KTsKKyAgIHQudiA9IFZNQUREKGExLnYsIGEyLnYsYTAudik7CistICBwcmlu
dGYoIlZNQUREKDQ6Nyw4OjExLDA6Myk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5m
WzFdLCB0LmZbMl0sIHQuZlszXSk7IGFzc2VydHY0KHQsIDMyLCA0NiwgNjIsIDgwKTsKKysgIC8v
IHByaW50ZigiVk1BREQoNDo3LDg6MTEsMDozKT1bJTJnICUyZyAlMmcgJTJnXVxuIiwgdC5mWzBd
LCB0LmZbMV0sIHQuZlsyXSwgdC5mWzNdKTsKKysgIGFzc2VydHY0KHQsIDMyLCA0NiwgNjIsIDgw
KTsKKyAKKyAgIElOVEVSTEVBVkUyKGExLnYsYTIudix0LnYsdS52KTsKKy0gIHByaW50ZigiSU5U
RVJMRUFWRTIoNDo3LDg6MTEpPVslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUyZyAlMmddXG4i
LCB0LmZbMF0sIHQuZlsxXSwgdC5mWzJdLCB0LmZbM10sIHUuZlswXSwgdS5mWzFdLCB1LmZbMl0s
IHUuZlszXSk7CisrICAvLyBwcmludGYoIklOVEVSTEVBVkUyKDQ6Nyw4OjExKT1bJTJnICUyZyAl
MmcgJTJnXSBbJTJnICUyZyAlMmcgJTJnXVxuIiwgdC5mWzBdLCB0LmZbMV0sIHQuZlsyXSwgdC5m
WzNdLCB1LmZbMF0sIHUuZlsxXSwgdS5mWzJdLCB1LmZbM10pOworICAgYXNzZXJ0djQodCwgNCwg
OCwgNSwgOSk7IGFzc2VydHY0KHUsIDYsIDEwLCA3LCAxMSk7CisgICBVTklOVEVSTEVBVkUyKGEx
LnYsYTIudix0LnYsdS52KTsKKy0gIHByaW50ZigiVU5JTlRFUkxFQVZFMig0OjcsODoxMSk9WyUy
ZyAlMmcgJTJnICUyZ10gWyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZb
Ml0sIHQuZlszXSwgdS5mWzBdLCB1LmZbMV0sIHUuZlsyXSwgdS5mWzNdKTsKKysgIC8vIHByaW50
ZigiVU5JTlRFUkxFQVZFMig0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUyZ10gWyUyZyAlMmcgJTJn
ICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0sIHQuZlszXSwgdS5mWzBdLCB1LmZbMV0s
IHUuZlsyXSwgdS5mWzNdKTsKKyAgIGFzc2VydHY0KHQsIDQsIDYsIDgsIDEwKTsgYXNzZXJ0djQo
dSwgNSwgNywgOSwgMTEpOworIAorICAgdC52PUxEX1BTMShmWzE1XSk7CistICBwcmludGYoIkxE
X1BTMSgxNSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0sIHQu
ZlszXSk7CisrICAvLyBwcmludGYoIkxEX1BTMSgxNSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQu
ZlswXSwgdC5mWzFdLCB0LmZbMl0sIHQuZlszXSk7CisgICBhc3NlcnR2NCh0LCAxNSwgMTUsIDE1
LCAxNSk7CisgICB0LnYgPSBWU1dBUEhMKGExLnYsIGEyLnYpOworLSAgcHJpbnRmKCJWU1dBUEhM
KDQ6Nyw4OjExKT1bJTJnICUyZyAlMmcgJTJnXVxuIiwgdC5mWzBdLCB0LmZbMV0sIHQuZlsyXSwg
dC5mWzNdKTsKKysgIC8vIHByaW50ZigiVlNXQVBITCg0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUy
Z11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0sIHQuZlszXSk7CisgICBhc3NlcnR2NCh0LCA4
LCA5LCA2LCA3KTsKKyAgIFZUUkFOU1BPU0U0KGEwLnYsIGExLnYsIGEyLnYsIGEzLnYpOworLSAg
cHJpbnRmKCJWVFJBTlNQT1NFNCgwOjMsNDo3LDg6MTEsMTI6MTUpPVslMmcgJTJnICUyZyAlMmdd
IFslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUyZyAlMmddXG4i
LCAKKy0gICAgICAgICBhMC5mWzBdLCBhMC5mWzFdLCBhMC5mWzJdLCBhMC5mWzNdLCBhMS5mWzBd
LCBhMS5mWzFdLCBhMS5mWzJdLCBhMS5mWzNdLCAKKy0gICAgICAgICBhMi5mWzBdLCBhMi5mWzFd
LCBhMi5mWzJdLCBhMi5mWzNdLCBhMy5mWzBdLCBhMy5mWzFdLCBhMy5mWzJdLCBhMy5mWzNdKTsg
CisrICAvLyBwcmludGYoIlZUUkFOU1BPU0U0KDA6Myw0OjcsODoxMSwxMjoxNSk9WyUyZyAlMmcg
JTJnICUyZ10gWyUyZyAlMmcgJTJnICUyZ10gWyUyZyAlMmcgJTJnICUyZ10gWyUyZyAlMmcgJTJn
ICUyZ11cbiIsIAorKyAgLy8gICAgICAgIGEwLmZbMF0sIGEwLmZbMV0sIGEwLmZbMl0sIGEwLmZb
M10sIGExLmZbMF0sIGExLmZbMV0sIGExLmZbMl0sIGExLmZbM10sIAorKyAgLy8gICAgICAgIGEy
LmZbMF0sIGEyLmZbMV0sIGEyLmZbMl0sIGEyLmZbM10sIGEzLmZbMF0sIGEzLmZbMV0sIGEzLmZb
Ml0sIGEzLmZbM10pOyAKKyAgIGFzc2VydHY0KGEwLCAwLCA0LCA4LCAxMik7IGFzc2VydHY0KGEx
LCAxLCA1LCA5LCAxMyk7IGFzc2VydHY0KGEyLCAyLCA2LCAxMCwgMTQpOyBhc3NlcnR2NChhMywg
MywgNywgMTEsIDE1KTsKKyB9CisgI2VuZGlmIC8vIVBGRkZUX1NJTURfRElTQUJMRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZm
dC9wYXRjaGVzLzAyLWRlY2xfdmFsaWRhdGVfc2ltZC5kaWZmIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wYXRjaGVzLzAyLWRlY2xfdmFsaWRh
dGVfc2ltZC5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MzE1MTE3ZWVmY2NlMzVlYmQ5MzE4ZjUwM2JkNTFj
MmY5M2U1MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3BhdGNoZXMvMDItZGVjbF92YWxpZGF0ZV9zaW1kLmRp
ZmYKQEAgLTAsMCArMSwxNiBAQAorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9w
ZmZmdC5oIGIvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3BmZmZ0LmgKK2luZGV4IDJiZmE3YjNlYmNm
Yi4uYmI2Zjc4ZDRiNzk1IDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3BmZmZ0
LmgKKysrKyBiL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5oCitAQCAtODMsNiArODMsMTEg
QEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKysjaWZuZGVmIFBGRkZUX1NJTURfRElTQUJM
RQorKyAgLy8gRGV0ZWN0cyBjb21waWxlciBidWdzIHdpdGggcmVzcGVjdCB0byBzaW1kIGluc3Ry
dWN0aW9uLgorKyAgdm9pZCB2YWxpZGF0ZV9wZmZmdF9zaW1kKCk7CisrI2VuZGlmCisrCisgICAv
KiBvcGFxdWUgc3RydWN0IGhvbGRpbmcgaW50ZXJuYWwgc3R1ZmYgKHByZWNvbXB1dGVkIHR3aWRk
bGUgZmFjdG9ycykKKyAgICAgIHRoaXMgc3RydWN0IGNhbiBiZSBzaGFyZWQgYnkgbWFueSB0aHJl
YWRzIGFzIGl0IGNvbnRhaW5zIG9ubHkKKyAgICAgIHJlYWQtb25seSBkYXRhLiAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0
L3BhdGNoZXMvMDMtbWFsbG9jYS5kaWZmIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wYXRjaGVzLzAzLW1hbGxvY2EuZGlmZgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTdjNGNmY2ZmODRlMmE5ZDU3ZDcxOGM1YmYwYjlhOTM0NGVjMTc3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZm
dC9wYXRjaGVzLzAzLW1hbGxvY2EuZGlmZgpAQCAtMCwwICsxLDgyIEBACitkaWZmIC0tZ2l0IGEv
dGhpcmRfcGFydHkvcGZmZnQvc3JjL3BmZmZ0LmMgYi90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZm
ZnQuYworaW5kZXggNzc2ZjU2NGFhMjhjLi42NDM4MzY2MjZjMGYgMTAwNjQ0CistLS0gYS90aGly
ZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworKysrIGIvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3Bm
ZmZ0LmMKK0BAIC01OSw3ICs1OSw2IEBACisgCisgI2luY2x1ZGUgInBmZmZ0LmgiCisgI2luY2x1
ZGUgPHN0ZGxpYi5oPgorLS8vICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxtYXRoLmg+
CisgI2luY2x1ZGUgPGFzc2VydC5oPgorIAorQEAgLTc1LDExICs3NCwxNCBAQAorICMgIGRlZmlu
ZSBORVZFUl9JTkxJTkUocmV0dXJuX3R5cGUpIHJldHVybl90eXBlIF9fYXR0cmlidXRlX18gKChu
b2lubGluZSkpCisgIyAgZGVmaW5lIFJFU1RSSUNUIF9fcmVzdHJpY3QKKyAjICBkZWZpbmUgVkxB
X0FSUkFZX09OX1NUQUNLKHR5cGVfXywgdmFybmFtZV9fLCBzaXplX18pIHR5cGVfXyB2YXJuYW1l
X19bc2l6ZV9fXTsKKysjICBkZWZpbmUgVkxBX0FSUkFZX09OX1NUQUNLX0ZSRUUodmFybmFtZV9f
KQorICNlbGlmIGRlZmluZWQoQ09NUElMRVJfTVNWQykKKysjaW5jbHVkZSA8bWFsbG9jLmg+Cisg
IyAgZGVmaW5lIEFMV0FZU19JTkxJTkUocmV0dXJuX3R5cGUpIF9fZm9yY2VpbmxpbmUgcmV0dXJu
X3R5cGUKKyAjICBkZWZpbmUgTkVWRVJfSU5MSU5FKHJldHVybl90eXBlKSBfX2RlY2xzcGVjKG5v
aW5saW5lKSByZXR1cm5fdHlwZQorICMgIGRlZmluZSBSRVNUUklDVCBfX3Jlc3RyaWN0CistIyAg
ZGVmaW5lIFZMQV9BUlJBWV9PTl9TVEFDSyh0eXBlX18sIHZhcm5hbWVfXywgc2l6ZV9fKSB0eXBl
X18gKnZhcm5hbWVfXyA9ICh0eXBlX18qKV9hbGxvY2Eoc2l6ZV9fICogc2l6ZW9mKHR5cGVfXykp
CisrIyAgZGVmaW5lIFZMQV9BUlJBWV9PTl9TVEFDSyh0eXBlX18sIHZhcm5hbWVfXywgc2l6ZV9f
KSB0eXBlX18gKnZhcm5hbWVfXyA9ICh0eXBlX18qKV9tYWxsb2NhKHNpemVfXyAqIHNpemVvZih0
eXBlX18pKQorKyMgIGRlZmluZSBWTEFfQVJSQVlfT05fU1RBQ0tfRlJFRSh2YXJuYW1lX18pIF9m
cmVlYSh2YXJuYW1lX18pCisgI2VuZGlmCisgCisgCitAQCAtMjE5LDM1ICsyMjEsMjQgQEAgdm9p
ZCB2YWxpZGF0ZV9wZmZmdF9zaW1kKCkgeworICAgbWVtY3B5KGEzLmYsIGYrMTIsIDQqc2l6ZW9m
KGZsb2F0KSk7CisgCisgICB0ID0gYTA7IHUgPSBhMTsgdC52ID0gVlpFUk8oKTsKKy0gIC8vIHBy
aW50ZigiVlpFUk89WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0s
IHQuZlszXSk7CisgICBhc3NlcnR2NCh0LCAwLCAwLCAwLCAwKTsKKyAgIHQudiA9IFZBREQoYTEu
diwgYTIudik7CistICAvLyBwcmludGYoIlZBREQoNDo3LDg6MTEpPVslMmcgJTJnICUyZyAlMmdd
XG4iLCB0LmZbMF0sIHQuZlsxXSwgdC5mWzJdLCB0LmZbM10pOworICAgYXNzZXJ0djQodCwgMTIs
IDE0LCAxNiwgMTgpOworICAgdC52ID0gVk1VTChhMS52LCBhMi52KTsKKy0gIC8vIHByaW50Zigi
Vk1VTCg0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZb
Ml0sIHQuZlszXSk7CisgICBhc3NlcnR2NCh0LCAzMiwgNDUsIDYwLCA3Nyk7CisgICB0LnYgPSBW
TUFERChhMS52LCBhMi52LGEwLnYpOworLSAgLy8gcHJpbnRmKCJWTUFERCg0OjcsODoxMSwwOjMp
PVslMmcgJTJnICUyZyAlMmddXG4iLCB0LmZbMF0sIHQuZlsxXSwgdC5mWzJdLCB0LmZbM10pOwor
ICAgYXNzZXJ0djQodCwgMzIsIDQ2LCA2MiwgODApOworIAorICAgSU5URVJMRUFWRTIoYTEudixh
Mi52LHQudix1LnYpOworLSAgLy8gcHJpbnRmKCJJTlRFUkxFQVZFMig0OjcsODoxMSk9WyUyZyAl
MmcgJTJnICUyZ10gWyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwgdC5mWzFdLCB0LmZbMl0s
IHQuZlszXSwgdS5mWzBdLCB1LmZbMV0sIHUuZlsyXSwgdS5mWzNdKTsKKyAgIGFzc2VydHY0KHQs
IDQsIDgsIDUsIDkpOyBhc3NlcnR2NCh1LCA2LCAxMCwgNywgMTEpOworICAgVU5JTlRFUkxFQVZF
MihhMS52LGEyLnYsdC52LHUudik7CistICAvLyBwcmludGYoIlVOSU5URVJMRUFWRTIoNDo3LDg6
MTEpPVslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUyZyAlMmddXG4iLCB0LmZbMF0sIHQuZlsx
XSwgdC5mWzJdLCB0LmZbM10sIHUuZlswXSwgdS5mWzFdLCB1LmZbMl0sIHUuZlszXSk7CisgICBh
c3NlcnR2NCh0LCA0LCA2LCA4LCAxMCk7IGFzc2VydHY0KHUsIDUsIDcsIDksIDExKTsKKyAKKyAg
IHQudj1MRF9QUzEoZlsxNV0pOworLSAgLy8gcHJpbnRmKCJMRF9QUzEoMTUpPVslMmcgJTJnICUy
ZyAlMmddXG4iLCB0LmZbMF0sIHQuZlsxXSwgdC5mWzJdLCB0LmZbM10pOworICAgYXNzZXJ0djQo
dCwgMTUsIDE1LCAxNSwgMTUpOworICAgdC52ID0gVlNXQVBITChhMS52LCBhMi52KTsKKy0gIC8v
IHByaW50ZigiVlNXQVBITCg0OjcsODoxMSk9WyUyZyAlMmcgJTJnICUyZ11cbiIsIHQuZlswXSwg
dC5mWzFdLCB0LmZbMl0sIHQuZlszXSk7CisgICBhc3NlcnR2NCh0LCA4LCA5LCA2LCA3KTsKKyAg
IFZUUkFOU1BPU0U0KGEwLnYsIGExLnYsIGEyLnYsIGEzLnYpOworLSAgLy8gcHJpbnRmKCJWVFJB
TlNQT1NFNCgwOjMsNDo3LDg6MTEsMTI6MTUpPVslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUy
ZyAlMmddIFslMmcgJTJnICUyZyAlMmddIFslMmcgJTJnICUyZyAlMmddXG4iLCAKKy0gIC8vICAg
ICAgICBhMC5mWzBdLCBhMC5mWzFdLCBhMC5mWzJdLCBhMC5mWzNdLCBhMS5mWzBdLCBhMS5mWzFd
LCBhMS5mWzJdLCBhMS5mWzNdLCAKKy0gIC8vICAgICAgICBhMi5mWzBdLCBhMi5mWzFdLCBhMi5m
WzJdLCBhMi5mWzNdLCBhMy5mWzBdLCBhMy5mWzFdLCBhMy5mWzJdLCBhMy5mWzNdKTsgCisgICBh
c3NlcnR2NChhMCwgMCwgNCwgOCwgMTIpOyBhc3NlcnR2NChhMSwgMSwgNSwgOSwgMTMpOyBhc3Nl
cnR2NChhMiwgMiwgNiwgMTAsIDE0KTsgYXNzZXJ0djQoYTMsIDMsIDcsIDExLCAxNSk7CisgfQor
ICNlbmRpZiAvLyFQRkZGVF9TSU1EX0RJU0FCTEUKK0BAIC0xNjc0LDYgKzE2NjUsOCBAQCB2b2lk
IHBmZmZ0X3RyYW5zZm9ybV9pbnRlcm5hbChQRkZGVF9TZXR1cCAqc2V0dXAsIGNvbnN0IGZsb2F0
ICpmaW5wdXQsIGZsb2F0ICpmbworICAgICBpYiA9ICFpYjsKKyAgIH0KKyAgIGFzc2VydChidWZm
W2liXSA9PSB2b3V0cHV0KTsKKysKKysgIFZMQV9BUlJBWV9PTl9TVEFDS19GUkVFKHNjcmF0Y2hf
b25fc3RhY2spOworIH0KKyAKKyB2b2lkIHBmZmZ0X3pjb252b2x2ZV9hY2N1bXVsYXRlKFBGRkZU
X1NldHVwICpzLCBjb25zdCBmbG9hdCAqYSwgY29uc3QgZmxvYXQgKmIsIGZsb2F0ICphYiwgZmxv
YXQgc2NhbGluZykgeworQEAgLTE4NTEsNiArMTg0NCw4IEBAIHZvaWQgcGZmZnRfdHJhbnNmb3Jt
X2ludGVybmFsX25vc2ltZChQRkZGVF9TZXR1cCAqc2V0dXAsIGNvbnN0IGZsb2F0ICppbnB1dCwg
ZmxvCisgICAgIGliID0gIWliOworICAgfQorICAgYXNzZXJ0KGJ1ZmZbaWJdID09IG91dHB1dCk7
CisrCisrICBWTEFfQVJSQVlfT05fU1RBQ0tfRlJFRShzY3JhdGNoX29uX3N0YWNrKTsKKyB9Cisg
CisgI2RlZmluZSBwZmZmdF96Y29udm9sdmVfYWNjdW11bGF0ZV9ub3NpbWQgcGZmZnRfemNvbnZv
bHZlX2FjY3VtdWxhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvcGF0Y2hlcy8wNC1maXhfcHRyX2Nhc3QuZGlmZiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvcGF0Y2hl
cy8wNC1maXhfcHRyX2Nhc3QuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZThlYzBjOWRlZDc2NzBmZWQ3ZGU5
YTE3NWFiOTQzZDUxMzJlMzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wYXRjaGVzLzA0LWZpeF9wdHJfY2Fz
dC5kaWZmCkBAIC0wLDAgKzEsNDggQEAKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9wZmZmdC9z
cmMvcGZmZnQuYyBiL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jCitpbmRleCA2NDM4MzY2
MjZjMGYuLjMwMzNlNjFiODEzZSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9w
ZmZmdC5jCisrKysgYi90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworQEAgLTU4LDYgKzU4
LDcgQEAKKyAqLworIAorICNpbmNsdWRlICJwZmZmdC5oIgorKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8YXNz
ZXJ0Lmg+CitAQCAtMTI1LDcgKzEyNiw3IEBAIGlubGluZSB2NHNmIGxkX3BzMShjb25zdCBmbG9h
dCAqcCkgeyB2NHNmIHY9dmVjX2xkZSgwLHApOyByZXR1cm4gdmVjX3NwbGF0KHZlY19wCisgICAg
IHgzID0gdmVjX21lcmdlbCh5MSwgeTMpOyAgICAgICAgICAgICAgICAgICAgXAorICAgfQorICMg
IGRlZmluZSBWU1dBUEhMKGEsYikgdmVjX3Blcm0oYSxiLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIp
KDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDgsOSwxMCwxMSwxMiwxMywxNCwxNSkpCistIyAgZGVm
aW5lIFZBTElHTkVEKHB0cikgKCgoKGxvbmcpKHB0cikpICYgMHhGKSA9PSAwKQorKyMgIGRlZmlu
ZSBWQUxJR05FRChwdHIpICgoKCh1aW50cHRyX3QpKHB0cikpICYgMHhGKSA9PSAwKQorIAorIC8q
CisgICBTU0UxIHN1cHBvcnQgbWFjcm9zCitAQCAtMTQ1LDcgKzE0Niw3IEBAIHR5cGVkZWYgX19t
MTI4IHY0c2Y7CisgIyAgZGVmaW5lIFVOSU5URVJMRUFWRTIoaW4xLCBpbjIsIG91dDEsIG91dDIp
IHsgdjRzZiB0bXBfXyA9IF9tbV9zaHVmZmxlX3BzKGluMSwgaW4yLCBfTU1fU0hVRkZMRSgyLDAs
MiwwKSk7IG91dDIgPSBfbW1fc2h1ZmZsZV9wcyhpbjEsIGluMiwgX01NX1NIVUZGTEUoMywxLDMs
MSkpOyBvdXQxID0gdG1wX187IH0KKyAjICBkZWZpbmUgVlRSQU5TUE9TRTQoeDAseDEseDIseDMp
IF9NTV9UUkFOU1BPU0U0X1BTKHgwLHgxLHgyLHgzKQorICMgIGRlZmluZSBWU1dBUEhMKGEsYikg
X21tX3NodWZmbGVfcHMoYiwgYSwgX01NX1NIVUZGTEUoMywyLDEsMCkpCistIyAgZGVmaW5lIFZB
TElHTkVEKHB0cikgKCgoKGxvbmcpKHB0cikpICYgMHhGKSA9PSAwKQorKyMgIGRlZmluZSBWQUxJ
R05FRChwdHIpICgoKCh1aW50cHRyX3QpKHB0cikpICYgMHhGKSA9PSAwKQorIAorIC8qCisgICBB
Uk0gTkVPTiBzdXBwb3J0IG1hY3JvcworQEAgLTE3Miw3ICsxNzMsNyBAQCB0eXBlZGVmIGZsb2F0
MzJ4NF90IHY0c2Y7CisgLy8gbWFyZ2luYWxseSBmYXN0ZXIgdmVyc2lvbgorIC8vIyAgZGVmaW5l
IFZUUkFOU1BPU0U0KHgwLHgxLHgyLHgzKSB7IGFzbSgidnRybi4zMiAlcTAsICVxMTtcbiB2dHJu
LjMyICVxMiwlcTNcbiB2c3dwICVmMCwlZTJcbiB2c3dwICVmMSwlZTMiIDogIit3Iih4MCksICIr
dyIoeDEpLCAiK3ciKHgyKSwgIit3Iih4Myk6Oik7IH0KKyAjICBkZWZpbmUgVlNXQVBITChhLGIp
IHZjb21iaW5lX2YzMih2Z2V0X2xvd19mMzIoYiksIHZnZXRfaGlnaF9mMzIoYSkpCistIyAgZGVm
aW5lIFZBTElHTkVEKHB0cikgKCgoKGxvbmcpKHB0cikpICYgMHgzKSA9PSAwKQorKyMgIGRlZmlu
ZSBWQUxJR05FRChwdHIpICgoKCh1aW50cHRyX3QpKHB0cikpICYgMHgzKSA9PSAwKQorICNlbHNl
CisgIyAgaWYgIWRlZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxFKQorICMgICAgd2FybmluZyAiYnVp
bGRpbmcgd2l0aCBzaW1kIGRpc2FibGVkICFcbiI7CitAQCAtMTkwLDcgKzE5MSw3IEBAIHR5cGVk
ZWYgZmxvYXQgdjRzZjsKKyAjICBkZWZpbmUgVk1BREQoYSxiLGMpICgoYSkqKGIpKyhjKSkKKyAj
ICBkZWZpbmUgVlNVQihhLGIpICgoYSktKGIpKQorICMgIGRlZmluZSBMRF9QUzEocCkgKHApCist
IyAgZGVmaW5lIFZBTElHTkVEKHB0cikgKCgoKGxvbmcpKHB0cikpICYgMHgzKSA9PSAwKQorKyMg
IGRlZmluZSBWQUxJR05FRChwdHIpICgoKCh1aW50cHRyX3QpKHB0cikpICYgMHgzKSA9PSAwKQor
ICNlbmRpZgorIAorIC8vIHNob3J0Y3V0cyBmb3IgY29tcGxleCBtdWx0aXBsY2F0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9w
ZmZmdC9wYXRjaGVzLzA1LWZpeC1hcmNoLWRldGVjdGlvbi5kaWZmIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wYXRjaGVzLzA1LWZpeC1hcmNo
LWRldGVjdGlvbi5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OTAzZmY3Y2Y1ZTEwMTRmMTcwZmVlY2VlNTAw
Zjg4NWRmMDA3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3BhdGNoZXMvMDUtZml4LWFyY2gtZGV0ZWN0aW9u
LmRpZmYKQEAgLTAsMCArMSwyMiBAQAorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3BmZmZ0L3Ny
Yy9wZmZmdC5jIGIvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3BmZmZ0LmMKK2luZGV4IDMwMzNlNjFi
ODEzZS4uYmRhYzRkNzg0OTk5IDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3Bm
ZmZ0LmMKKysrKyBiL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jCitAQCAtMTMxLDcgKzEz
MSw3IEBAIGlubGluZSB2NHNmIGxkX3BzMShjb25zdCBmbG9hdCAqcCkgeyB2NHNmIHY9dmVjX2xk
ZSgwLHApOyByZXR1cm4gdmVjX3NwbGF0KHZlY19wCisgLyoKKyAgIFNTRTEgc3VwcG9ydCBtYWNy
b3MKKyAqLworLSNlbGlmICFkZWZpbmVkKFBGRkZUX1NJTURfRElTQUJMRSkgJiYgKGRlZmluZWQo
X194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoaTM4NikgfHwgZGVmaW5l
ZChfTV9JWDg2KSkKKysjZWxpZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpICYmIChkZWZp
bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKGkzODYpIHx8IGRl
ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCisgCisgI2luY2x1ZGUgPHhtbWlu
dHJpbi5oPgorIHR5cGVkZWYgX19tMTI4IHY0c2Y7CitAQCAtMTUxLDcgKzE1MSw3IEBAIHR5cGVk
ZWYgX19tMTI4IHY0c2Y7CisgLyoKKyAgIEFSTSBORU9OIHN1cHBvcnQgbWFjcm9zCisgKi8KKy0j
ZWxpZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpICYmIGRlZmluZWQoX19hcm1fXykgCisr
I2VsaWYgIWRlZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxFKSAmJiAoZGVmaW5lZChfX2FybV9fKSB8
fCBkZWZpbmVkKF9fQVJNRUxfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf
TV9BUk02NCkpCisgIyAgaW5jbHVkZSA8YXJtX25lb24uaD4KKyB0eXBlZGVmIGZsb2F0MzJ4NF90
IHY0c2Y7CisgIyAgZGVmaW5lIFNJTURfU1ogNApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wZmZmdF9mdXp6ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3BmZmZ0
X2Z1enplci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDRhZDk4NDU1M2U1ZWQ4YTFlNWU4NDUyOTEwMjVkNzY4
ZDBlYmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9wZmZmdF9mdXp6ZXIuY2MKQEAgLTAsMCArMSw4NSBAQAor
Ly8gQ29weXJpZ2h0IDIwMTkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNhc3NlcnQ+
CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgInRoaXJkX3BhcnR5L3BmZmZ0L3NyYy9w
ZmZmdC5oIgorCituYW1lc3BhY2UgeworCisjaWYgZGVmaW5lZChUUkFOU0ZPUk1fUkVBTCkKKy8v
IFJlYWwgRkZULgorY29uc3RleHByIHBmZmZ0X3RyYW5zZm9ybV90IGtUcmFuc2Zvcm0gPSBQRkZG
VF9SRUFMOworY29uc3RleHByIHNpemVfdCBrU2l6ZU9mT25lU2FtcGxlID0gc2l6ZW9mKGZsb2F0
KTsKKyNlbGlmIGRlZmluZWQoVFJBTlNGT1JNX0NPTVBMRVgpCisvLyBDb21wbGV4IEZGVC4KK2Nv
bnN0ZXhwciBwZmZmdF90cmFuc2Zvcm1fdCBrVHJhbnNmb3JtID0gUEZGRlRfQ09NUExFWDsKK2Nv
bnN0ZXhwciBzaXplX3Qga1NpemVPZk9uZVNhbXBsZSA9IDIgKiBzaXplb2YoZmxvYXQpOyAgLy8g
UmVhbCBwbHVzIGltYWdpbmFyeS4KKyNlbHNlCisjZXJyb3IgRkZUIHRyYW5zZm9ybSB0eXBlIG5v
dCBkZWZpbmVkLgorI2VuZGlmCisKK2Jvb2wgSXNWYWxpZFNpemUoc2l6ZV90IG4pIHsKKyAgaWYg
KG4gPT0gMCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAvLyBQRkZGVCBvbmx5IHN1cHBv
cnRzIHRyYW5zZm9ybXMgZm9yIGlucHV0cyBvZiBsZW5ndGggTiBvZiB0aGUgZm9ybQorICAvLyBO
ID0gKDJeYSkqKDNeYikqKDVeYykgd2hlcmUgYSA+PSA1LCBiID49MCwgYyA+PSAwLgorICBjb25z
dGV4cHIgc3RkOjphcnJheTxpbnQsIDM+IGtGYWN0b3JzID0gezIsIDMsIDV9OworICBzdGQ6OmFy
cmF5PGludCwga0ZhY3RvcnMuc2l6ZSgpPiBmYWN0b3JpemF0aW9ue307CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwga0ZhY3RvcnMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBpbnQgZmFjdG9y
ID0ga0ZhY3RvcnNbaV07CisgICAgd2hpbGUgKG4gJSBmYWN0b3IgPT0gMCkgeworICAgICAgbiAv
PSBmYWN0b3I7CisgICAgICBmYWN0b3JpemF0aW9uW2ldKys7CisgICAgfQorICB9CisgIHJldHVy
biBmYWN0b3JpemF0aW9uWzBdID49IDUgJiYgbiA9PSAxOworfQorCitmbG9hdCogQWxsb2NhdGVQ
ZmZmdEJ1ZmZlcihzaXplX3QgbnVtYmVyX29mX2J5dGVzKSB7CisgIHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdCo+KHBmZmZ0X2FsaWduZWRfbWFsbG9jKG51bWJlcl9vZl9ieXRlcykpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKKworLy8gRW50cnkgcG9pbnQgZm9yIExpYkZ1enplci4KK2V4dGVybiAi
QyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpIHsKKyAgLy8gU2V0IHRoZSBudW1iZXIgb2YgRkZUIHBvaW50cyB0byB1c2UgfGRhdGF8
IGFzIGlucHV0IHZlY3Rvci4KKyAgLy8gVGhlIGxhdHRlciBpcyB0cnVuY2F0ZWQgaWYgdGhlIG51
bWJlciBvZiBieXRlcyBpcyBub3QgYW4gaW50ZWdlcgorICAvLyBtdWx0aXBsZSBvZiB0aGUgc2l6
ZSBvZiBvbmUgc2FtcGxlICh3aGljaCBpcyBlaXRoZXIgYSByZWFsIG9yIGEgY29tcGxleAorICAv
LyBmbG9hdGluZyBwb2ludCBudW1iZXIpLgorICBjb25zdCBzaXplX3QgZmZ0X3NpemUgPSBzaXpl
IC8ga1NpemVPZk9uZVNhbXBsZTsKKyAgaWYgKCFJc1ZhbGlkU2l6ZShmZnRfc2l6ZSkpIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorCisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfYnl0ZXMgPSBmZnRf
c2l6ZSAqIGtTaXplT2ZPbmVTYW1wbGU7CisgIGFzc2VydChudW1iZXJfb2ZfYnl0ZXMgPD0gc2l6
ZSk7CisKKyAgLy8gQWxsb2NhdGUgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLgorICBmbG9hdCog
aW4gPSBBbGxvY2F0ZVBmZmZ0QnVmZmVyKG51bWJlcl9vZl9ieXRlcyk7CisgIGZsb2F0KiBvdXQg
PSBBbGxvY2F0ZVBmZmZ0QnVmZmVyKG51bWJlcl9vZl9ieXRlcyk7CisKKyAgLy8gQ29weSBpbnB1
dCBkYXRhLgorICBzdGQ6Om1lbWNweShpbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEpLCBudW1iZXJfb2ZfYnl0ZXMpOworCisgIC8vIFNldHVwIEZGVC4KKyAgUEZGRlRfU2V0
dXAqIHBmZmZ0X3NldHVwID0gcGZmZnRfbmV3X3NldHVwKGZmdF9zaXplLCBrVHJhbnNmb3JtKTsK
KworICAvLyBDYWxsIGRpZmZlcmVudCBQRkZGVCBmdW5jdGlvbnMgdG8gbWF4aW1pemUgdGhlIGNv
dmVyYWdlLgorICBwZmZmdF90cmFuc2Zvcm0ocGZmZnRfc2V0dXAsIGluLCBvdXQsIG51bGxwdHIs
IFBGRkZUX0ZPUldBUkQpOworICBwZmZmdF96Y29udm9sdmVfYWNjdW11bGF0ZShwZmZmdF9zZXR1
cCwgb3V0LCBvdXQsIG91dCwgMS5mKTsKKyAgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWQocGZmZnRf
c2V0dXAsIGluLCBvdXQsIG51bGxwdHIsIFBGRkZUX0JBQ0tXQVJEKTsKKworICAvLyBSZWxlYXNl
IG1lbW9yeS4KKyAgcGZmZnRfYWxpZ25lZF9mcmVlKGluKTsKKyAgcGZmZnRfYWxpZ25lZF9mcmVl
KG91dCk7CisgIHBmZmZ0X2Rlc3Ryb3lfc2V0dXAocGZmZnRfc2V0dXApOworCisgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9wZmZmdC9wZmZmdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvcGZmZnRfdW5pdHRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTU5NzIzNDM0ZWUyNzY5NDdlZmFlOWI2MDNmN2E0ZDdlZjkxMThjNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZm
ZnQvcGZmZnRfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxOTYgQEAKKy8vIENvcHlyaWdodCAyMDE5
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjbWF0aD4KKworI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvcGZmZnQvc3JjL2ZmdHBhY2su
aCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuaCIKKworbmFtZXNwYWNl
IHBmZmZ0IHsKK25hbWVzcGFjZSB0ZXN0IHsKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBjb25zdGV4
cHIgaW50IGtGZnRTaXplc1tdID0geworICAgIDE2LCAgMzIsICAgICAgNjQsICA5NiwgIDEyOCwg
IDE2MCwgIDE5MiwgIDI1NiwgIDI4OCwgIDM4NCwgICA1ICogOTYsIDUxMiwKKyAgICA1NzYsIDUg
KiAxMjgsIDgwMCwgODY0LCAxMDI0LCAyMDQ4LCAyNTkyLCA0MDAwLCA0MDk2LCAxMjAwMCwgMzY4
NjR9OworCitkb3VibGUgZnJhbmQoKSB7CisgIHJldHVybiByYW5kKCkgLyAoZG91YmxlKVJBTkRf
TUFYOworfQorCit2b2lkIFBmZmZ0VmFsaWRhdGUoaW50IGZmdF9zaXplLCBib29sIGNvbXBsZXhf
ZmZ0KSB7CisgIFBGRkZUX1NldHVwKiBwZmZmdF9zdGF0dXMgPQorICAgICAgcGZmZnRfbmV3X3Nl
dHVwKGZmdF9zaXplLCBjb21wbGV4X2ZmdCA/IFBGRkZUX0NPTVBMRVggOiBQRkZGVF9SRUFMKTsK
KyAgQVNTRVJUX1RSVUUocGZmZnRfc3RhdHVzKSA8PCAiRkZUIHNpemUgKCIgPDwgZmZ0X3NpemUg
PDwgIikgbm90IHN1cHBvcnRlZC4iOworCisgIGludCBudW1fZmxvYXRzID0gZmZ0X3NpemUgKiAo
Y29tcGxleF9mZnQgPyAyIDogMSk7CisgIGludCBudW1fYnl0ZXMgPSBudW1fZmxvYXRzICogc2l6
ZW9mKGZsb2F0KTsKKyAgZmxvYXQqIHJlZiA9IHN0YXRpY19jYXN0PGZsb2F0Kj4ocGZmZnRfYWxp
Z25lZF9tYWxsb2MobnVtX2J5dGVzKSk7CisgIGZsb2F0KiBpbiA9IHN0YXRpY19jYXN0PGZsb2F0
Kj4ocGZmZnRfYWxpZ25lZF9tYWxsb2MobnVtX2J5dGVzKSk7CisgIGZsb2F0KiBvdXQgPSBzdGF0
aWNfY2FzdDxmbG9hdCo+KHBmZmZ0X2FsaWduZWRfbWFsbG9jKG51bV9ieXRlcykpOworICBmbG9h
dCogdG1wID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPihwZmZmdF9hbGlnbmVkX21hbGxvYyhudW1fYnl0
ZXMpKTsKKyAgZmxvYXQqIHRtcDIgPSBzdGF0aWNfY2FzdDxmbG9hdCo+KHBmZmZ0X2FsaWduZWRf
bWFsbG9jKG51bV9ieXRlcykpOworCisgIGZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMjsgKytw
YXNzKSB7CisgICAgU0NPUEVEX1RSQUNFKHBhc3MpOworICAgIGZsb2F0IHJlZl9tYXggPSAwOwor
ICAgIGludCBrOworCisgICAgLy8gQ29tcHV0ZSByZWZlcmVuY2Ugc29sdXRpb24gd2l0aCBGRlRQ
QUNLLgorICAgIGlmIChwYXNzID09IDApIHsKKyAgICAgIGZsb2F0KiBmZnRwYWNrX2J1ZmYgPQor
ICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Kj4obWFsbG9jKDIgKiBudW1fYnl0ZXMgKyAxNSAq
IHNpemVvZihmbG9hdCkpKTsKKyAgICAgIGZvciAoayA9IDA7IGsgPCBudW1fZmxvYXRzOyArK2sp
IHsKKyAgICAgICAgcmVmW2tdID0gaW5ba10gPSBmcmFuZCgpICogMiAtIDE7CisgICAgICAgIG91
dFtrXSA9IDFlMzA7CisgICAgICB9CisKKyAgICAgIGlmICghY29tcGxleF9mZnQpIHsKKyAgICAg
ICAgcmZmdGkoZmZ0X3NpemUsIGZmdHBhY2tfYnVmZik7CisgICAgICAgIHJmZnRmKGZmdF9zaXpl
LCByZWYsIGZmdHBhY2tfYnVmZik7CisgICAgICAgIC8vIFVzZSBvdXIgb3JkZXJpbmcgZm9yIHJl
YWwgRkZUcyBpbnN0ZWFkIG9mIHRoZSBvbmUgb2YgZmZ0cGFjay4KKyAgICAgICAgeworICAgICAg
ICAgIGZsb2F0IHJlZk4gPSByZWZbZmZ0X3NpemUgLSAxXTsKKyAgICAgICAgICBmb3IgKGsgPSBm
ZnRfc2l6ZSAtIDI7IGsgPj0gMTsgLS1rKQorICAgICAgICAgICAgcmVmW2sgKyAxXSA9IHJlZltr
XTsKKyAgICAgICAgICByZWZbMV0gPSByZWZOOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBjZmZ0aShmZnRfc2l6ZSwgZmZ0cGFja19idWZmKTsKKyAgICAgICAgY2ZmdGYoZmZ0
X3NpemUsIHJlZiwgZmZ0cGFja19idWZmKTsKKyAgICAgIH0KKworICAgICAgZnJlZShmZnRwYWNr
X2J1ZmYpOworICAgIH0KKworICAgIGZvciAoayA9IDA7IGsgPCBudW1fZmxvYXRzOyArK2spIHsK
KyAgICAgIHJlZl9tYXggPSBzdGQ6Om1heChyZWZfbWF4LCBmYWJzKHJlZltrXSkpOworICAgIH0K
KworICAgIC8vIFBhc3MgMDogbm9uIGNhbm9uaWNhbCBvcmRlcmluZyBvZiB0cmFuc2Zvcm0gY29l
ZmZpY2llbnRzLgorICAgIGlmIChwYXNzID09IDApIHsKKyAgICAgIC8vIFRlc3QgZm9yd2FyZCB0
cmFuc2Zvcm0sIHdpdGggZGlmZmVyZW50IGlucHV0IC8gb3V0cHV0LgorICAgICAgcGZmZnRfdHJh
bnNmb3JtKHBmZmZ0X3N0YXR1cywgaW4sIHRtcCwgbnVsbHB0ciwgUEZGRlRfRk9SV0FSRCk7Cisg
ICAgICBtZW1jcHkodG1wMiwgdG1wLCBudW1fYnl0ZXMpOworICAgICAgbWVtY3B5KHRtcCwgaW4s
IG51bV9ieXRlcyk7CisgICAgICBwZmZmdF90cmFuc2Zvcm0ocGZmZnRfc3RhdHVzLCB0bXAsIHRt
cCwgbnVsbHB0ciwgUEZGRlRfRk9SV0FSRCk7CisgICAgICBmb3IgKGsgPSAwOyBrIDwgbnVtX2Zs
b2F0czsgKytrKSB7CisgICAgICAgIFNDT1BFRF9UUkFDRShrKTsKKyAgICAgICAgRVhQRUNUX0VR
KHRtcDJba10sIHRtcFtrXSk7CisgICAgICB9CisKKyAgICAgIC8vIFRlc3QgcmVvcmRlcmluZy4K
KyAgICAgIHBmZmZ0X3pyZW9yZGVyKHBmZmZ0X3N0YXR1cywgdG1wLCBvdXQsIFBGRkZUX0ZPUldB
UkQpOworICAgICAgcGZmZnRfenJlb3JkZXIocGZmZnRfc3RhdHVzLCBvdXQsIHRtcCwgUEZGRlRf
QkFDS1dBUkQpOworICAgICAgZm9yIChrID0gMDsgayA8IG51bV9mbG9hdHM7ICsraykgeworICAg
ICAgICBTQ09QRURfVFJBQ0Uoayk7CisgICAgICAgIEVYUEVDVF9FUSh0bXAyW2tdLCB0bXBba10p
OworICAgICAgfQorICAgICAgcGZmZnRfenJlb3JkZXIocGZmZnRfc3RhdHVzLCB0bXAsIG91dCwg
UEZGRlRfRk9SV0FSRCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFBhc3MgMTogY2Fub25pY2Fs
IG9yZGVyaW5nIG9mIHRyYW5zZm9ybSBjb2VmZmljaWVudHMuCisgICAgICBwZmZmdF90cmFuc2Zv
cm1fb3JkZXJlZChwZmZmdF9zdGF0dXMsIGluLCB0bXAsIG51bGxwdHIsIFBGRkZUX0ZPUldBUkQp
OworICAgICAgbWVtY3B5KHRtcDIsIHRtcCwgbnVtX2J5dGVzKTsKKyAgICAgIG1lbWNweSh0bXAs
IGluLCBudW1fYnl0ZXMpOworICAgICAgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWQocGZmZnRfc3Rh
dHVzLCB0bXAsIHRtcCwgbnVsbHB0ciwgUEZGRlRfRk9SV0FSRCk7CisgICAgICBmb3IgKGsgPSAw
OyBrIDwgbnVtX2Zsb2F0czsgKytrKSB7CisgICAgICAgIFNDT1BFRF9UUkFDRShrKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHRtcDJba10sIHRtcFtrXSk7CisgICAgICB9CisgICAgICBtZW1jcHkob3V0
LCB0bXAsIG51bV9ieXRlcyk7CisgICAgfQorCisgICAgeworICAgICAgZm9yIChrID0gMDsgayA8
IG51bV9mbG9hdHM7ICsraykgeworICAgICAgICBTQ09QRURfVFJBQ0Uoayk7CisgICAgICAgIEVY
UEVDVF9ORUFSKHJlZltrXSwgb3V0W2tdLCAxZS0zICogcmVmX21heCkgPDwgIkZvcndhcmQgRkZU
IG1pc21hdGNoIjsKKyAgICAgIH0KKworICAgICAgaWYgKHBhc3MgPT0gMCkgeworICAgICAgICBw
ZmZmdF90cmFuc2Zvcm0ocGZmZnRfc3RhdHVzLCB0bXAsIG91dCwgbnVsbHB0ciwgUEZGRlRfQkFD
S1dBUkQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWQo
cGZmZnRfc3RhdHVzLCB0bXAsIG91dCwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUEZGRlRfQkFDS1dBUkQpOworICAgICAgfQorICAgICAgbWVtY3B5KHRtcDIsIG91
dCwgbnVtX2J5dGVzKTsKKyAgICAgIG1lbWNweShvdXQsIHRtcCwgbnVtX2J5dGVzKTsKKyAgICAg
IGlmIChwYXNzID09IDApIHsKKyAgICAgICAgcGZmZnRfdHJhbnNmb3JtKHBmZmZ0X3N0YXR1cywg
b3V0LCBvdXQsIG51bGxwdHIsIFBGRkZUX0JBQ0tXQVJEKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHBmZmZ0X3RyYW5zZm9ybV9vcmRlcmVkKHBmZmZ0X3N0YXR1cywgb3V0LCBvdXQsIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGRkZUX0JBQ0tXQVJEKTsKKyAg
ICAgIH0KKyAgICAgIGZvciAoayA9IDA7IGsgPCBudW1fZmxvYXRzOyArK2spIHsKKyAgICAgICAg
YXNzZXJ0KHRtcDJba10gPT0gb3V0W2tdKTsKKyAgICAgICAgb3V0W2tdICo9IDEuZiAvIGZmdF9z
aXplOworICAgICAgfQorICAgICAgZm9yIChrID0gMDsgayA8IG51bV9mbG9hdHM7ICsraykgewor
ICAgICAgICBTQ09QRURfVFJBQ0Uoayk7CisgICAgICAgIEVYUEVDVF9ORUFSKGluW2tdLCBvdXRb
a10sIDFlLTMgKiByZWZfbWF4KSA8PCAiUmV2ZXJzZSBGRlQgbWlzbWF0Y2giOworICAgICAgfQor
ICAgIH0KKworICAgIC8vIFF1aWNrIHRlc3Qgb2YgdGhlIGNpcmN1bGFyIGNvbnZvbHV0aW9uIGlu
IEZGVCBkb21haW4uCisgICAgeworICAgICAgZmxvYXQgY29udl9lcnIgPSAwLCBjb252X21heCA9
IDA7CisKKyAgICAgIHBmZmZ0X3pyZW9yZGVyKHBmZmZ0X3N0YXR1cywgcmVmLCB0bXAsIFBGRkZU
X0ZPUldBUkQpOworICAgICAgbWVtc2V0KG91dCwgMCwgbnVtX2J5dGVzKTsKKyAgICAgIHBmZmZ0
X3pjb252b2x2ZV9hY2N1bXVsYXRlKHBmZmZ0X3N0YXR1cywgcmVmLCByZWYsIG91dCwgMS4wKTsK
KyAgICAgIHBmZmZ0X3pyZW9yZGVyKHBmZmZ0X3N0YXR1cywgb3V0LCB0bXAyLCBQRkZGVF9GT1JX
QVJEKTsKKworICAgICAgZm9yIChrID0gMDsgayA8IG51bV9mbG9hdHM7IGsgKz0gMikgeworICAg
ICAgICBmbG9hdCBhciA9IHRtcFtrXSwgYWkgPSB0bXBbayArIDFdOworICAgICAgICBpZiAoY29t
cGxleF9mZnQgfHwgayA+IDApIHsKKyAgICAgICAgICB0bXBba10gPSBhciAqIGFyIC0gYWkgKiBh
aTsKKyAgICAgICAgICB0bXBbayArIDFdID0gMiAqIGFyICogYWk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgdG1wWzBdID0gYXIgKiBhcjsKKyAgICAgICAgICB0bXBbMV0gPSBhaSAqIGFp
OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZvciAoayA9IDA7IGsgPCBudW1fZmxvYXRz
OyArK2spIHsKKyAgICAgICAgZmxvYXQgZCA9IGZhYnModG1wW2tdIC0gdG1wMltrXSksIGUgPSBm
YWJzKHRtcFtrXSk7CisgICAgICAgIGlmIChkID4gY29udl9lcnIpCisgICAgICAgICAgY29udl9l
cnIgPSBkOworICAgICAgICBpZiAoZSA+IGNvbnZfbWF4KQorICAgICAgICAgIGNvbnZfbWF4ID0g
ZTsKKyAgICAgIH0KKyAgICAgIEVYUEVDVF9MVChjb252X2VyciwgMWUtNSAqIGNvbnZfbWF4KSA8
PCAiemNvbnZvbHZlIGVycm9yIjsKKyAgICB9CisgIH0KKworICBwZmZmdF9kZXN0cm95X3NldHVw
KHBmZmZ0X3N0YXR1cyk7CisgIHBmZmZ0X2FsaWduZWRfZnJlZShyZWYpOworICBwZmZmdF9hbGln
bmVkX2ZyZWUoaW4pOworICBwZmZmdF9hbGlnbmVkX2ZyZWUob3V0KTsKKyAgcGZmZnRfYWxpZ25l
ZF9mcmVlKHRtcCk7CisgIHBmZmZ0X2FsaWduZWRfZnJlZSh0bXAyKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK1RFU1QoUGZmZnRUZXN0LCBWYWxpZGF0ZVJlYWwpIHsKKyAgZm9yIChpbnQgZmZ0
X3NpemUgOiBrRmZ0U2l6ZXMpIHsKKyAgICBTQ09QRURfVFJBQ0UoZmZ0X3NpemUpOworICAgIGlm
IChmZnRfc2l6ZSA9PSAxNikgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIFBmZmZ0VmFs
aWRhdGUoZmZ0X3NpemUsIC8qY29tcGxleF9mZnQ9Ki9mYWxzZSk7CisgIH0KK30KKworVEVTVChQ
ZmZmdFRlc3QsIFZhbGlkYXRlQ29tcGxleCkgeworICBmb3IgKGludCBmZnRfc2l6ZSA6IGtGZnRT
aXplcykgeworICAgIFNDT1BFRF9UUkFDRShmZnRfc2l6ZSk7CisgICAgUGZmZnRWYWxpZGF0ZShm
ZnRfc2l6ZSwgLypjb21wbGV4X2ZmdD0qL3RydWUpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2UgcGZmZnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvc3JjL2ZmdHBhY2suYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvc3JjL2Zm
dHBhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNjM3NWE4MGRhYjRlYjJmNDNiMDUzZGE5ZDVjNDkzYjdkNDRi
Y2E1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvZmZ0cGFjay5jCkBAIC0wLDAgKzEsMzExMiBAQAorLyoK
KyAgY29tcGlsZSB3aXRoIGNjIC1EVEVTVElOR19GRlRQQUNLIGZmdHBhY2suYyBpbiBvcmRlciB0
byBidWlsZCB0aGUKKyAgdGVzdCBhcHBsaWNhdGlvbi4KKworICBUaGlzIGlzIGFuIGYyYyB0cmFu
c2xhdGlvbiBvZiB0aGUgZnVsbCBmZnRwYWNrIHNvdXJjZXMgYXMgZm91bmQgb24KKyAgaHR0cDov
L3d3dy5uZXRsaWIub3JnL2ZmdHBhY2svIFRoZSB0cmFuc2xhdGVkIGNvZGUgaGFzIGJlZW4KKyAg
c2xpZ2h0bHR5IGVkaXRlZCB0byByZW1vdmUgdGhlIHVnbGllc3QgYXJ0ZWZhY3RzIG9mIHRoZSB0
cmFuc2xhdGlvbgorICAoYSBodW5kcmVkIG9mIHdpbGQgR09UT3Mgd2VyZSB3aXBlZCBkdXJpbmcg
dGhhdCBvcGVyYXRpb24pLgorCisgIFRoZSBvcmlnaW5hbCBmZnRwYWNrIGZpbGUgd2FzIHdyaXR0
ZW4gYnkgUGF1bCBOLiBTd2FyenRyYXViZXIKKyAgKFZlcnNpb24gNCwgMTk4NSksIGluIGZvcnRy
YW4gNzcuCisKKyAgIEZGVFBBQ0sgbGljZW5zZToKKworICAgaHR0cDovL3d3dy5jaXNsLnVjYXIu
ZWR1L2Nzcy9zb2Z0d2FyZS9mZnRwYWNrNS9mdHBrLmh0bWwKKworICAgQ29weXJpZ2h0IChjKSAy
MDA0IHRoZSBVbml2ZXJzaXR5IENvcnBvcmF0aW9uIGZvciBBdG1vc3BoZXJpYworICAgUmVzZWFy
Y2ggKCJVQ0FSIikuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIERldmVsb3BlZCBieSBOQ0FSJ3MKKyAg
IENvbXB1dGF0aW9uYWwgYW5kIEluZm9ybWF0aW9uIFN5c3RlbXMgTGFib3JhdG9yeSwgVUNBUiwK
KyAgIHd3dy5jaXNsLnVjYXIuZWR1LgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRo
ZSBTb2Z0d2FyZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyAgIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQorICAgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgLSBOZWl0aGVyIHRoZSBuYW1lcyBvZiBOQ0FS
J3MgQ29tcHV0YXRpb25hbCBhbmQgSW5mb3JtYXRpb24gU3lzdGVtcworICAgTGFib3JhdG9yeSwg
dGhlIFVuaXZlcnNpdHkgQ29ycG9yYXRpb24gZm9yIEF0bW9zcGhlcmljIFJlc2VhcmNoLAorICAg
bm9yIHRoZSBuYW1lcyBvZiBpdHMgc3BvbnNvcnMgb3IgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvCisgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29m
dHdhcmUgd2l0aG91dAorICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAgCisK
KyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZXMsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhl
IGRpc2NsYWltZXIgYmVsb3cuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUgZGlzY2xhaW1lciBiZWxvdyBpbiB0aGUKKyAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICAgZGlz
dHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICBNRVJDSEFOVEFCSUxJ
VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICAgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09OVFJJQlVUT1JTIE9SIENPUFlSSUdIVAorICAg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKyAgIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCisgICBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgV0lUSCBUSEUKKyAgIFNP
RlRXQVJFLgorCisgICBDaGFuZ2VMb2c6CisgICAyMDExLzEwLzAyOiB0aGlzIGlzIG15IGZpcnN0
IHJlbGVhc2Ugb2YgdGhpcyBmaWxlLgorKi8KKworI2luY2x1ZGUgImZmdHBhY2suaCIKKyNpbmNs
dWRlIDxtYXRoLmg+CisKK3R5cGVkZWYgZmZ0cGFja19yZWFsIHJlYWw7Cit0eXBlZGVmIGZmdHBh
Y2tfaW50ICBpbnRlZ2VyOworCit0eXBlZGVmIHN0cnVjdCBmNzdjb21wbGV4IHsgICAgCisgIHJl
YWwgciwgaTsKK30gZjc3Y29tcGxleDsgICAKKworI2lmZGVmIFRFU1RJTkdfRkZUUEFDSworc3Rh
dGljIHJlYWwgY19hYnMoZjc3Y29tcGxleCAqYykgeyByZXR1cm4gc3FydChjLT5yKmMtPnIgKyBj
LT5pKmMtPmkpOyB9CitzdGF0aWMgZG91YmxlIGRtYXgoZG91YmxlIGEsIGRvdWJsZSBiKSB7IHJl
dHVybiBhIDwgYiA/IGIgOiBhOyB9CisjZW5kaWYKKworLyogdHJhbnNsYXRlZCBieSBmMmMgKHZl
cnNpb24gMjAwNjEwMDgpLCBhbmQgc2xpZ2h0bHkgZWRpdGVkICovCisKK3N0YXRpYyB2b2lkIHBh
c3NmYihpbnRlZ2VyICpuYWMsIGludGVnZXIgaWRvLCBpbnRlZ2VyIGlwLCBpbnRlZ2VyIGwxLCBp
bnRlZ2VyIGlkbDEsIAorICAgICAgICAgICAgICAgICAgIHJlYWwgKmNjLCByZWFsICpjMSwgcmVh
bCAqYzIsIHJlYWwgKmNoLCByZWFsICpjaDIsIGNvbnN0IHJlYWwgKndhLCByZWFsIGZzaWduKQor
eworICAvKiBTeXN0ZW0gZ2VuZXJhdGVkIGxvY2FscyAqLworICBpbnRlZ2VyIGNoX29mZnNldCwg
Y2Nfb2Zmc2V0LAorICAgIGMxX29mZnNldCwgYzJfb2Zmc2V0LCBjaDJfb2Zmc2V0OworCisgIC8q
IExvY2FsIHZhcmlhYmxlcyAqLworICBpbnRlZ2VyIGksIGosIGssIGwsIGpjLCBsYywgaWssIGlk
aiwgaWRsLCBpbmMsIGlkcDsKKyAgcmVhbCB3YWksIHdhcjsKKyAgaW50ZWdlciBpcHAyLCBpZGlq
LCBpZGxqLCBpZG90LCBpcHBoOworCisKKyNkZWZpbmUgYzFfcmVmKGFfMSxhXzIsYV8zKSBjMVso
KGFfMykqbDEgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjMl9yZWYoYV8xLGFfMikgYzJb
KGFfMikqaWRsMSArIGFfMV0KKyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIsYV8zKSBjY1soKGFfMykq
aXAgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygo
YV8zKSpsMSArIChhXzIpKSppZG8gKyBhXzFdCisjZGVmaW5lIGNoMl9yZWYoYV8xLGFfMikgY2gy
WyhhXzIpKmlkbDEgKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNo
X29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjMV9v
ZmZzZXQgPSAxICsgaWRvICogKDEgKyBsMSk7CisgIGMxIC09IGMxX29mZnNldDsKKyAgY2Nfb2Zm
c2V0ID0gMSArIGlkbyAqICgxICsgaXApOworICBjYyAtPSBjY19vZmZzZXQ7CisgIGNoMl9vZmZz
ZXQgPSAxICsgaWRsMTsKKyAgY2gyIC09IGNoMl9vZmZzZXQ7CisgIGMyX29mZnNldCA9IDEgKyBp
ZGwxOworICBjMiAtPSBjMl9vZmZzZXQ7CisgIC0td2E7CisKKyAgLyogRnVuY3Rpb24gQm9keSAq
LworICBpZG90ID0gaWRvIC8gMjsKKyAgaXBwMiA9IGlwICsgMjsKKyAgaXBwaCA9IChpcCArIDEp
IC8gMjsKKyAgaWRwID0gaXAgKiBpZG87CisKKyAgaWYgKGlkbyA+PSBsMSkgeworICAgIGZvciAo
aiA9IDI7IGogPD0gaXBwaDsgKytqKSB7CisgICAgICBqYyA9IGlwcDIgLSBqOworICAgICAgZm9y
IChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gaWRvOyAr
K2kpIHsKKyAgICAgICAgICBjaF9yZWYoaSwgaywgaikgPSBjY19yZWYoaSwgaiwgaykgKyBjY19y
ZWYoaSwgamMsIGspOworICAgICAgICAgIGNoX3JlZihpLCBrLCBqYykgPSBjY19yZWYoaSwgaiwg
aykgLSBjY19yZWYoaSwgamMsIGspOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGZv
ciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAgZm9yIChpID0gMTsgaSA8PSBpZG87ICsr
aSkgeworICAgICAgICBjaF9yZWYoaSwgaywgMSkgPSBjY19yZWYoaSwgMSwgayk7CisgICAgICB9
CisgICAgfQorICB9IGVsc2UgeworICAgIGZvciAoaiA9IDI7IGogPD0gaXBwaDsgKytqKSB7Cisg
ICAgICBqYyA9IGlwcDIgLSBqOworICAgICAgZm9yIChpID0gMTsgaSA8PSBpZG87ICsraSkgewor
ICAgICAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgICAgICBjaF9yZWYoaSwg
aywgaikgPSBjY19yZWYoaSwgaiwgaykgKyBjY19yZWYoaSwgamMsIGspOworICAgICAgICAgIGNo
X3JlZihpLCBrLCBqYykgPSBjY19yZWYoaSwgaiwgaykgLSBjY19yZWYoaSwgamMsIGspOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICAgIGZvciAoaSA9IDE7IGkgPD0gaWRvOyArK2kpIHsK
KyAgICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAgICBjaF9yZWYoaSwgaywg
MSkgPSBjY19yZWYoaSwgMSwgayk7CisgICAgICB9CisgICAgfQorICB9CisgIGlkbCA9IDIgLSBp
ZG87CisgIGluYyA9IDA7CisgIGZvciAobCA9IDI7IGwgPD0gaXBwaDsgKytsKSB7CisgICAgbGMg
PSBpcHAyIC0gbDsKKyAgICBpZGwgKz0gaWRvOworICAgIGZvciAoaWsgPSAxOyBpayA8PSBpZGwx
OyArK2lrKSB7CisgICAgICBjMl9yZWYoaWssIGwpID0gY2gyX3JlZihpaywgMSkgKyB3YVtpZGwg
LSAxXSAqIGNoMl9yZWYoaWssIDIpOworICAgICAgYzJfcmVmKGlrLCBsYykgPSBmc2lnbip3YVtp
ZGxdICogY2gyX3JlZihpaywgaXApOworICAgIH0KKyAgICBpZGxqID0gaWRsOworICAgIGluYyAr
PSBpZG87CisgICAgZm9yIChqID0gMzsgaiA8PSBpcHBoOyArK2opIHsKKyAgICAgIGpjID0gaXBw
MiAtIGo7CisgICAgICBpZGxqICs9IGluYzsKKyAgICAgIGlmIChpZGxqID4gaWRwKSB7CisgICAg
ICAgIGlkbGogLT0gaWRwOworICAgICAgfQorICAgICAgd2FyID0gd2FbaWRsaiAtIDFdOworICAg
ICAgd2FpID0gd2FbaWRsal07CisgICAgICBmb3IgKGlrID0gMTsgaWsgPD0gaWRsMTsgKytpaykg
eworICAgICAgICBjMl9yZWYoaWssIGwpID0gYzJfcmVmKGlrLCBsKSArIHdhciAqIGNoMl9yZWYo
aWssIGopOworICAgICAgICBjMl9yZWYoaWssIGxjKSA9IGMyX3JlZihpaywgbGMpICsgZnNpZ24q
d2FpICogY2gyX3JlZihpaywgamMpOworICAgICAgfQorICAgIH0KKyAgfQorICBmb3IgKGogPSAy
OyBqIDw9IGlwcGg7ICsraikgeworICAgIGZvciAoaWsgPSAxOyBpayA8PSBpZGwxOyArK2lrKSB7
CisgICAgICBjaDJfcmVmKGlrLCAxKSA9IGNoMl9yZWYoaWssIDEpICsgY2gyX3JlZihpaywgaik7
CisgICAgfQorICB9CisgIGZvciAoaiA9IDI7IGogPD0gaXBwaDsgKytqKSB7CisgICAgamMgPSBp
cHAyIC0gajsKKyAgICBmb3IgKGlrID0gMjsgaWsgPD0gaWRsMTsgaWsgKz0gMikgeworICAgICAg
Y2gyX3JlZihpayAtIDEsIGopID0gYzJfcmVmKGlrIC0gMSwgaikgLSBjMl9yZWYoaWssIGpjKTsK
KyAgICAgIGNoMl9yZWYoaWsgLSAxLCBqYykgPSBjMl9yZWYoaWsgLSAxLCBqKSArIGMyX3JlZihp
aywgamMpOworICAgICAgY2gyX3JlZihpaywgaikgPSBjMl9yZWYoaWssIGopICsgYzJfcmVmKGlr
IC0gMSwgamMpOworICAgICAgY2gyX3JlZihpaywgamMpID0gYzJfcmVmKGlrLCBqKSAtIGMyX3Jl
ZihpayAtIDEsIGpjKTsKKyAgICB9CisgIH0KKyAgKm5hYyA9IDE7CisgIGlmIChpZG8gPT0gMikg
eworICAgIHJldHVybjsKKyAgfQorICAqbmFjID0gMDsKKyAgZm9yIChpayA9IDE7IGlrIDw9IGlk
bDE7ICsraWspIHsKKyAgICBjMl9yZWYoaWssIDEpID0gY2gyX3JlZihpaywgMSk7CisgIH0KKyAg
Zm9yIChqID0gMjsgaiA8PSBpcDsgKytqKSB7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytr
KSB7CisgICAgICBjMV9yZWYoMSwgaywgaikgPSBjaF9yZWYoMSwgaywgaik7CisgICAgICBjMV9y
ZWYoMiwgaywgaikgPSBjaF9yZWYoMiwgaywgaik7CisgICAgfQorICB9CisgIGlmIChpZG90IDw9
IGwxKSB7CisgICAgaWRpaiA9IDA7CisgICAgZm9yIChqID0gMjsgaiA8PSBpcDsgKytqKSB7Cisg
ICAgICBpZGlqICs9IDI7CisgICAgICBmb3IgKGkgPSA0OyBpIDw9IGlkbzsgaSArPSAyKSB7Cisg
ICAgICAgIGlkaWogKz0gMjsKKyAgICAgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7Cisg
ICAgICAgICAgYzFfcmVmKGkgLSAxLCBrLCBqKSA9IHdhW2lkaWogLSAxXSAqIGNoX3JlZihpIC0g
MSwgaywgaikgLSBmc2lnbip3YVtpZGlqXSAqIGNoX3JlZihpLCBrLCBqKTsKKyAgICAgICAgICBj
MV9yZWYoaSwgaywgaikgPSB3YVtpZGlqIC0gMV0gKiBjaF9yZWYoaSwgaywgaikgKyBmc2lnbip3
YVtpZGlqXSAqIGNoX3JlZihpIC0gMSwgaywgaik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuOworICB9CisgIGlkaiA9IDIgLSBpZG87CisgIGZvciAoaiA9IDI7IGogPD0g
aXA7ICsraikgeworICAgIGlkaiArPSBpZG87CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytr
KSB7CisgICAgICBpZGlqID0gaWRqOworICAgICAgZm9yIChpID0gNDsgaSA8PSBpZG87IGkgKz0g
MikgeworICAgICAgICBpZGlqICs9IDI7CisgICAgICAgIGMxX3JlZihpIC0gMSwgaywgaikgPSB3
YVtpZGlqIC0gMV0gKiBjaF9yZWYoaSAtIDEsIGssIGopIC0gZnNpZ24qd2FbaWRpal0gKiBjaF9y
ZWYoaSwgaywgaik7CisgICAgICAgIGMxX3JlZihpLCBrLCBqKSA9IHdhW2lkaWogLSAxXSAqIGNo
X3JlZihpLCBrLCBqKSArIGZzaWduKndhW2lkaWpdICogY2hfcmVmKGkgLSAxLCBrLCBqKTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30gLyogcGFzc2IgKi8KKworI3VuZGVmIGNoMl9yZWYKKyN1bmRl
ZiBjaF9yZWYKKyN1bmRlZiBjY19yZWYKKyN1bmRlZiBjMl9yZWYKKyN1bmRlZiBjMV9yZWYKKwor
CitzdGF0aWMgdm9pZCBwYXNzYjIoaW50ZWdlciBpZG8sIGludGVnZXIgbDEsIGNvbnN0IHJlYWwg
KmNjLCByZWFsICpjaCwgY29uc3QgcmVhbCAqd2ExKQoreworICAvKiBTeXN0ZW0gZ2VuZXJhdGVk
IGxvY2FscyAqLworICBpbnRlZ2VyIGNjX29mZnNldCwgY2hfb2Zmc2V0OworCisgIC8qIExvY2Fs
IHZhcmlhYmxlcyAqLworICBpbnRlZ2VyIGksIGs7CisgIHJlYWwgdGkyLCB0cjI7CisKKworI2Rl
ZmluZSBjY19yZWYoYV8xLGFfMixhXzMpIGNjWygoYV8zKSoyICsgKGFfMikpKmlkbyArIGFfMV0K
KyNkZWZpbmUgY2hfcmVmKGFfMSxhXzIsYV8zKSBjaFsoKGFfMykqbDEgKyAoYV8yKSkqaWRvICsg
YV8xXQorCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICBjaF9vZmZzZXQgPSAxICsg
aWRvICogKDEgKyBsMSk7CisgIGNoIC09IGNoX29mZnNldDsKKyAgY2Nfb2Zmc2V0ID0gMSArIGlk
byAqIDM7CisgIGNjIC09IGNjX29mZnNldDsKKyAgLS13YTE7CisKKyAgLyogRnVuY3Rpb24gQm9k
eSAqLworICBpZiAoaWRvIDw9IDIpIHsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsK
KyAgICAgIGNoX3JlZigxLCBrLCAxKSA9IGNjX3JlZigxLCAxLCBrKSArIGNjX3JlZigxLCAyLCBr
KTsKKyAgICAgIGNoX3JlZigxLCBrLCAyKSA9IGNjX3JlZigxLCAxLCBrKSAtIGNjX3JlZigxLCAy
LCBrKTsKKyAgICAgIGNoX3JlZigyLCBrLCAxKSA9IGNjX3JlZigyLCAxLCBrKSArIGNjX3JlZigy
LCAyLCBrKTsKKyAgICAgIGNoX3JlZigyLCBrLCAyKSA9IGNjX3JlZigyLCAxLCBrKSAtIGNjX3Jl
ZigyLCAyLCBrKTsKKyAgICB9CisgICAgcmV0dXJuOworICB9CisgIGZvciAoayA9IDE7IGsgPD0g
bDE7ICsraykgeworICAgIGZvciAoaSA9IDI7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgIGNo
X3JlZihpIC0gMSwgaywgMSkgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgY2NfcmVmKGkgLSAxLCAy
LCBrKTsKKyAgICAgIHRyMiA9IGNjX3JlZihpIC0gMSwgMSwgaykgLSBjY19yZWYoaSAtIDEsIDIs
IGspOworICAgICAgY2hfcmVmKGksIGssIDEpID0gY2NfcmVmKGksIDEsIGspICsgY2NfcmVmKGks
IDIsIGspOworICAgICAgdGkyID0gY2NfcmVmKGksIDEsIGspIC0gY2NfcmVmKGksIDIsIGspOwor
ICAgICAgY2hfcmVmKGksIGssIDIpID0gd2ExW2kgLSAxXSAqIHRpMiArIHdhMVtpXSAqIHRyMjsK
KyAgICAgIGNoX3JlZihpIC0gMSwgaywgMikgPSB3YTFbaSAtIDFdICogdHIyIC0gd2ExW2ldICog
dGkyOworICAgIH0KKyAgfQorfSAvKiBwYXNzYjIgKi8KKworI3VuZGVmIGNoX3JlZgorI3VuZGVm
IGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHBhc3NiMyhpbnRlZ2VyIGlkbywgaW50ZWdlciBsMSwg
Y29uc3QgcmVhbCAqY2MsIHJlYWwgKmNoLCBjb25zdCByZWFsICp3YTEsIGNvbnN0IHJlYWwgKndh
MikKK3sKKyAgc3RhdGljIGNvbnN0IHJlYWwgdGF1ciA9IC0uNWY7CisgIHN0YXRpYyBjb25zdCBy
ZWFsIHRhdWkgPSAuODY2MDI1NDAzNzg0NDM5ZjsKKworICAvKiBTeXN0ZW0gZ2VuZXJhdGVkIGxv
Y2FscyAqLworICBpbnRlZ2VyIGNjX29mZnNldCwgY2hfb2Zmc2V0OworCisgIC8qIExvY2FsIHZh
cmlhYmxlcyAqLworICBpbnRlZ2VyIGksIGs7CisgIHJlYWwgY2kyLCBjaTMsIGRpMiwgZGkzLCBj
cjIsIGNyMywgZHIyLCBkcjMsIHRpMiwgdHIyOworCisKKyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIs
YV8zKSBjY1soKGFfMykqMyArIChhXzIpKSppZG8gKyBhXzFdCisjZGVmaW5lIGNoX3JlZihhXzEs
YV8yLGFfMykgY2hbKChhXzMpKmwxICsgKGFfMikpKmlkbyArIGFfMV0KKworICAvKiBQYXJhbWV0
ZXIgYWRqdXN0bWVudHMgKi8KKyAgY2hfb2Zmc2V0ID0gMSArIGlkbyAqICgxICsgbDEpOworICBj
aCAtPSBjaF9vZmZzZXQ7CisgIGNjX29mZnNldCA9IDEgKyAoaWRvIDw8IDIpOworICBjYyAtPSBj
Y19vZmZzZXQ7CisgIC0td2ExOworICAtLXdhMjsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisg
IGlmIChpZG8gPT0gMikgeworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAg
dHIyID0gY2NfcmVmKDEsIDIsIGspICsgY2NfcmVmKDEsIDMsIGspOworICAgICAgY3IyID0gY2Nf
cmVmKDEsIDEsIGspICsgdGF1ciAqIHRyMjsKKyAgICAgIGNoX3JlZigxLCBrLCAxKSA9IGNjX3Jl
ZigxLCAxLCBrKSArIHRyMjsKKyAgICAgIHRpMiA9IGNjX3JlZigyLCAyLCBrKSArIGNjX3JlZigy
LCAzLCBrKTsKKyAgICAgIGNpMiA9IGNjX3JlZigyLCAxLCBrKSArIHRhdXIgKiB0aTI7CisgICAg
ICBjaF9yZWYoMiwgaywgMSkgPSBjY19yZWYoMiwgMSwgaykgKyB0aTI7CisgICAgICBjcjMgPSB0
YXVpICogKGNjX3JlZigxLCAyLCBrKSAtIGNjX3JlZigxLCAzLCBrKSk7CisgICAgICBjaTMgPSB0
YXVpICogKGNjX3JlZigyLCAyLCBrKSAtIGNjX3JlZigyLCAzLCBrKSk7CisgICAgICBjaF9yZWYo
MSwgaywgMikgPSBjcjIgLSBjaTM7CisgICAgICBjaF9yZWYoMSwgaywgMykgPSBjcjIgKyBjaTM7
CisgICAgICBjaF9yZWYoMiwgaywgMikgPSBjaTIgKyBjcjM7CisgICAgICBjaF9yZWYoMiwgaywg
MykgPSBjaTIgLSBjcjM7CisgICAgfQorICB9IGVsc2UgeworICAgIGZvciAoayA9IDE7IGsgPD0g
bDE7ICsraykgeworICAgICAgZm9yIChpID0gMjsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAg
ICB0cjIgPSBjY19yZWYoaSAtIDEsIDIsIGspICsgY2NfcmVmKGkgLSAxLCAzLCBrKTsKKyAgICAg
ICAgY3IyID0gY2NfcmVmKGkgLSAxLCAxLCBrKSArIHRhdXIgKiB0cjI7CisgICAgICAgIGNoX3Jl
ZihpIC0gMSwgaywgMSkgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgdHIyOworICAgICAgICB0aTIg
PSBjY19yZWYoaSwgMiwgaykgKyBjY19yZWYoaSwgMywgayk7CisgICAgICAgIGNpMiA9IGNjX3Jl
ZihpLCAxLCBrKSArIHRhdXIgKiB0aTI7CisgICAgICAgIGNoX3JlZihpLCBrLCAxKSA9IGNjX3Jl
ZihpLCAxLCBrKSArIHRpMjsKKyAgICAgICAgY3IzID0gdGF1aSAqIChjY19yZWYoaSAtIDEsIDIs
IGspIC0gY2NfcmVmKGkgLSAxLCAzLCBrKSk7CisgICAgICAgIGNpMyA9IHRhdWkgKiAoY2NfcmVm
KGksIDIsIGspIC0gY2NfcmVmKGksIDMsIGspKTsKKyAgICAgICAgZHIyID0gY3IyIC0gY2kzOwor
ICAgICAgICBkcjMgPSBjcjIgKyBjaTM7CisgICAgICAgIGRpMiA9IGNpMiArIGNyMzsKKyAgICAg
ICAgZGkzID0gY2kyIC0gY3IzOworICAgICAgICBjaF9yZWYoaSwgaywgMikgPSB3YTFbaSAtIDFd
ICogZGkyICsgd2ExW2ldICogZHIyOworICAgICAgICBjaF9yZWYoaSAtIDEsIGssIDIpID0gd2Ex
W2kgLSAxXSAqIGRyMiAtIHdhMVtpXSAqIGRpMjsKKyAgICAgICAgY2hfcmVmKGksIGssIDMpID0g
d2EyW2kgLSAxXSAqIGRpMyArIHdhMltpXSAqIGRyMzsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBr
LCAzKSA9IHdhMltpIC0gMV0gKiBkcjMgLSB3YTJbaV0gKiBkaTM7CisgICAgICB9CisgICAgfQor
ICB9Cit9IC8qIHBhc3NiMyAqLworCisjdW5kZWYgY2hfcmVmCisjdW5kZWYgY2NfcmVmCisKKwor
c3RhdGljIHZvaWQgcGFzc2I0KGludGVnZXIgaWRvLCBpbnRlZ2VyIGwxLCBjb25zdCByZWFsICpj
YywgcmVhbCAqY2gsIAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWwgKndhMSwgY29uc3Qg
cmVhbCAqd2EyLCBjb25zdCByZWFsICp3YTMpCit7CisgIC8qIFN5c3RlbSBnZW5lcmF0ZWQgbG9j
YWxzICovCisgIGludGVnZXIgY2Nfb2Zmc2V0LCBjaF9vZmZzZXQ7CisKKyAgLyogTG9jYWwgdmFy
aWFibGVzICovCisgIGludGVnZXIgaSwgazsKKyAgcmVhbCBjaTIsIGNpMywgY2k0LCBjcjIsIGNy
MywgY3I0LCB0aTEsIHRpMiwgdGkzLCB0aTQsIHRyMSwgdHIyLCB0cjMsIHRyNDsKKworCisjZGVm
aW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjQgKyAoYV8yKSkqaWRvICsgYV8xXQor
I2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSpsMSArIChhXzIpKSppZG8gKyBh
XzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNldCA9IDEgKyBp
ZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjY19vZmZzZXQgPSAxICsgaWRv
ICogNTsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKyAgLS13YTI7CisgIC0td2EzOwor
CisgIC8qIEZ1bmN0aW9uIEJvZHkgKi8KKyAgaWYgKGlkbyA9PSAyKSB7CisgICAgZm9yIChrID0g
MTsgayA8PSBsMTsgKytrKSB7CisgICAgICB0aTEgPSBjY19yZWYoMiwgMSwgaykgLSBjY19yZWYo
MiwgMywgayk7CisgICAgICB0aTIgPSBjY19yZWYoMiwgMSwgaykgKyBjY19yZWYoMiwgMywgayk7
CisgICAgICB0cjQgPSBjY19yZWYoMiwgNCwgaykgLSBjY19yZWYoMiwgMiwgayk7CisgICAgICB0
aTMgPSBjY19yZWYoMiwgMiwgaykgKyBjY19yZWYoMiwgNCwgayk7CisgICAgICB0cjEgPSBjY19y
ZWYoMSwgMSwgaykgLSBjY19yZWYoMSwgMywgayk7CisgICAgICB0cjIgPSBjY19yZWYoMSwgMSwg
aykgKyBjY19yZWYoMSwgMywgayk7CisgICAgICB0aTQgPSBjY19yZWYoMSwgMiwgaykgLSBjY19y
ZWYoMSwgNCwgayk7CisgICAgICB0cjMgPSBjY19yZWYoMSwgMiwgaykgKyBjY19yZWYoMSwgNCwg
ayk7CisgICAgICBjaF9yZWYoMSwgaywgMSkgPSB0cjIgKyB0cjM7CisgICAgICBjaF9yZWYoMSwg
aywgMykgPSB0cjIgLSB0cjM7CisgICAgICBjaF9yZWYoMiwgaywgMSkgPSB0aTIgKyB0aTM7Cisg
ICAgICBjaF9yZWYoMiwgaywgMykgPSB0aTIgLSB0aTM7CisgICAgICBjaF9yZWYoMSwgaywgMikg
PSB0cjEgKyB0cjQ7CisgICAgICBjaF9yZWYoMSwgaywgNCkgPSB0cjEgLSB0cjQ7CisgICAgICBj
aF9yZWYoMiwgaywgMikgPSB0aTEgKyB0aTQ7CisgICAgICBjaF9yZWYoMiwgaywgNCkgPSB0aTEg
LSB0aTQ7CisgICAgfQorICB9IGVsc2UgeworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykg
eworICAgICAgZm9yIChpID0gMjsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAgICB0aTEgPSBj
Y19yZWYoaSwgMSwgaykgLSBjY19yZWYoaSwgMywgayk7CisgICAgICAgIHRpMiA9IGNjX3JlZihp
LCAxLCBrKSArIGNjX3JlZihpLCAzLCBrKTsKKyAgICAgICAgdGkzID0gY2NfcmVmKGksIDIsIGsp
ICsgY2NfcmVmKGksIDQsIGspOworICAgICAgICB0cjQgPSBjY19yZWYoaSwgNCwgaykgLSBjY19y
ZWYoaSwgMiwgayk7CisgICAgICAgIHRyMSA9IGNjX3JlZihpIC0gMSwgMSwgaykgLSBjY19yZWYo
aSAtIDEsIDMsIGspOworICAgICAgICB0cjIgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgY2NfcmVm
KGkgLSAxLCAzLCBrKTsKKyAgICAgICAgdGk0ID0gY2NfcmVmKGkgLSAxLCAyLCBrKSAtIGNjX3Jl
ZihpIC0gMSwgNCwgayk7CisgICAgICAgIHRyMyA9IGNjX3JlZihpIC0gMSwgMiwgaykgKyBjY19y
ZWYoaSAtIDEsIDQsIGspOworICAgICAgICBjaF9yZWYoaSAtIDEsIGssIDEpID0gdHIyICsgdHIz
OworICAgICAgICBjcjMgPSB0cjIgLSB0cjM7CisgICAgICAgIGNoX3JlZihpLCBrLCAxKSA9IHRp
MiArIHRpMzsKKyAgICAgICAgY2kzID0gdGkyIC0gdGkzOworICAgICAgICBjcjIgPSB0cjEgKyB0
cjQ7CisgICAgICAgIGNyNCA9IHRyMSAtIHRyNDsKKyAgICAgICAgY2kyID0gdGkxICsgdGk0Owor
ICAgICAgICBjaTQgPSB0aTEgLSB0aTQ7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMikgPSB3
YTFbaSAtIDFdICogY3IyIC0gd2ExW2ldICogY2kyOworICAgICAgICBjaF9yZWYoaSwgaywgMikg
PSB3YTFbaSAtIDFdICogY2kyICsgd2ExW2ldICogY3IyOworICAgICAgICBjaF9yZWYoaSAtIDEs
IGssIDMpID0gd2EyW2kgLSAxXSAqIGNyMyAtIHdhMltpXSAqIGNpMzsKKyAgICAgICAgY2hfcmVm
KGksIGssIDMpID0gd2EyW2kgLSAxXSAqIGNpMyArIHdhMltpXSAqIGNyMzsKKyAgICAgICAgY2hf
cmVmKGkgLSAxLCBrLCA0KSA9IHdhM1tpIC0gMV0gKiBjcjQgLSB3YTNbaV0gKiBjaTQ7CisgICAg
ICAgIGNoX3JlZihpLCBrLCA0KSA9IHdhM1tpIC0gMV0gKiBjaTQgKyB3YTNbaV0gKiBjcjQ7Cisg
ICAgICB9CisgICAgfQorICB9Cit9IC8qIHBhc3NiNCAqLworCisjdW5kZWYgY2hfcmVmCisjdW5k
ZWYgY2NfcmVmCisKKy8qIHBhc3NmNSBhbmQgcGFzc2I1IG1lcmdlZCAqLworc3RhdGljIHZvaWQg
cGFzc2ZiNShpbnRlZ2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJlYWwgKmNo
LCAKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbCAqd2ExLCBjb25zdCByZWFsICp3YTIs
IGNvbnN0IHJlYWwgKndhMywgY29uc3QgcmVhbCAqd2E0LCByZWFsIGZzaWduKQoreworICBjb25z
dCByZWFsIHRyMTEgPSAuMzA5MDE2OTk0Mzc0OTQ3ZjsKKyAgY29uc3QgcmVhbCB0aTExID0gLjk1
MTA1NjUxNjI5NTE1NGYqZnNpZ247CisgIGNvbnN0IHJlYWwgdHIxMiA9IC0uODA5MDE2OTk0Mzc0
OTQ3ZjsKKyAgY29uc3QgcmVhbCB0aTEyID0gLjU4Nzc4NTI1MjI5MjQ3M2YqZnNpZ247CisKKyAg
LyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50ZWdlciBjY19vZmZzZXQsIGNoX29m
ZnNldDsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBpLCBrOworICByZWFs
IGNpMiwgY2kzLCBjaTQsIGNpNSwgZGkzLCBkaTQsIGRpNSwgZGkyLCBjcjIsIGNyMywgY3I1LCBj
cjQsIHRpMiwgdGkzLAorICAgIHRpNCwgdGk1LCBkcjMsIGRyNCwgZHI1LCBkcjIsIHRyMiwgdHIz
LCB0cjQsIHRyNTsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjUg
KyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8z
KSpsMSArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICov
CisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0Owor
ICBjY19vZmZzZXQgPSAxICsgaWRvICogNjsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsK
KyAgLS13YTI7CisgIC0td2EzOworICAtLXdhNDsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisg
IGlmIChpZG8gPT0gMikgeworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAg
dGk1ID0gY2NfcmVmKDIsIDIsIGspIC0gY2NfcmVmKDIsIDUsIGspOworICAgICAgdGkyID0gY2Nf
cmVmKDIsIDIsIGspICsgY2NfcmVmKDIsIDUsIGspOworICAgICAgdGk0ID0gY2NfcmVmKDIsIDMs
IGspIC0gY2NfcmVmKDIsIDQsIGspOworICAgICAgdGkzID0gY2NfcmVmKDIsIDMsIGspICsgY2Nf
cmVmKDIsIDQsIGspOworICAgICAgdHI1ID0gY2NfcmVmKDEsIDIsIGspIC0gY2NfcmVmKDEsIDUs
IGspOworICAgICAgdHIyID0gY2NfcmVmKDEsIDIsIGspICsgY2NfcmVmKDEsIDUsIGspOworICAg
ICAgdHI0ID0gY2NfcmVmKDEsIDMsIGspIC0gY2NfcmVmKDEsIDQsIGspOworICAgICAgdHIzID0g
Y2NfcmVmKDEsIDMsIGspICsgY2NfcmVmKDEsIDQsIGspOworICAgICAgY2hfcmVmKDEsIGssIDEp
ID0gY2NfcmVmKDEsIDEsIGspICsgdHIyICsgdHIzOworICAgICAgY2hfcmVmKDIsIGssIDEpID0g
Y2NfcmVmKDIsIDEsIGspICsgdGkyICsgdGkzOworICAgICAgY3IyID0gY2NfcmVmKDEsIDEsIGsp
ICsgdHIxMSAqIHRyMiArIHRyMTIgKiB0cjM7CisgICAgICBjaTIgPSBjY19yZWYoMiwgMSwgaykg
KyB0cjExICogdGkyICsgdHIxMiAqIHRpMzsKKyAgICAgIGNyMyA9IGNjX3JlZigxLCAxLCBrKSAr
IHRyMTIgKiB0cjIgKyB0cjExICogdHIzOworICAgICAgY2kzID0gY2NfcmVmKDIsIDEsIGspICsg
dHIxMiAqIHRpMiArIHRyMTEgKiB0aTM7CisgICAgICBjcjUgPSB0aTExICogdHI1ICsgdGkxMiAq
IHRyNDsKKyAgICAgIGNpNSA9IHRpMTEgKiB0aTUgKyB0aTEyICogdGk0OworICAgICAgY3I0ID0g
dGkxMiAqIHRyNSAtIHRpMTEgKiB0cjQ7CisgICAgICBjaTQgPSB0aTEyICogdGk1IC0gdGkxMSAq
IHRpNDsKKyAgICAgIGNoX3JlZigxLCBrLCAyKSA9IGNyMiAtIGNpNTsKKyAgICAgIGNoX3JlZigx
LCBrLCA1KSA9IGNyMiArIGNpNTsKKyAgICAgIGNoX3JlZigyLCBrLCAyKSA9IGNpMiArIGNyNTsK
KyAgICAgIGNoX3JlZigyLCBrLCAzKSA9IGNpMyArIGNyNDsKKyAgICAgIGNoX3JlZigxLCBrLCAz
KSA9IGNyMyAtIGNpNDsKKyAgICAgIGNoX3JlZigxLCBrLCA0KSA9IGNyMyArIGNpNDsKKyAgICAg
IGNoX3JlZigyLCBrLCA0KSA9IGNpMyAtIGNyNDsKKyAgICAgIGNoX3JlZigyLCBrLCA1KSA9IGNp
MiAtIGNyNTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytr
KSB7CisgICAgICBmb3IgKGkgPSAyOyBpIDw9IGlkbzsgaSArPSAyKSB7CisgICAgICAgIHRpNSA9
IGNjX3JlZihpLCAyLCBrKSAtIGNjX3JlZihpLCA1LCBrKTsKKyAgICAgICAgdGkyID0gY2NfcmVm
KGksIDIsIGspICsgY2NfcmVmKGksIDUsIGspOworICAgICAgICB0aTQgPSBjY19yZWYoaSwgMywg
aykgLSBjY19yZWYoaSwgNCwgayk7CisgICAgICAgIHRpMyA9IGNjX3JlZihpLCAzLCBrKSArIGNj
X3JlZihpLCA0LCBrKTsKKyAgICAgICAgdHI1ID0gY2NfcmVmKGkgLSAxLCAyLCBrKSAtIGNjX3Jl
ZihpIC0gMSwgNSwgayk7CisgICAgICAgIHRyMiA9IGNjX3JlZihpIC0gMSwgMiwgaykgKyBjY19y
ZWYoaSAtIDEsIDUsIGspOworICAgICAgICB0cjQgPSBjY19yZWYoaSAtIDEsIDMsIGspIC0gY2Nf
cmVmKGkgLSAxLCA0LCBrKTsKKyAgICAgICAgdHIzID0gY2NfcmVmKGkgLSAxLCAzLCBrKSArIGNj
X3JlZihpIC0gMSwgNCwgayk7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMSkgPSBjY19yZWYo
aSAtIDEsIDEsIGspICsgdHIyICsgdHIzOworICAgICAgICBjaF9yZWYoaSwgaywgMSkgPSBjY19y
ZWYoaSwgMSwgaykgKyB0aTIgKyB0aTM7CisgICAgICAgIGNyMiA9IGNjX3JlZihpIC0gMSwgMSwg
aykgKyB0cjExICogdHIyICsgdHIxMiAqIHRyMzsKKyAgICAgICAgY2kyID0gY2NfcmVmKGksIDEs
IGspICsgdHIxMSAqIHRpMiArIHRyMTIgKiB0aTM7CisgICAgICAgIGNyMyA9IGNjX3JlZihpIC0g
MSwgMSwgaykgKyB0cjEyICogdHIyICsgdHIxMSAqIHRyMzsKKyAgICAgICAgY2kzID0gY2NfcmVm
KGksIDEsIGspICsgdHIxMiAqIHRpMiArIHRyMTEgKiB0aTM7CisgICAgICAgIGNyNSA9IHRpMTEg
KiB0cjUgKyB0aTEyICogdHI0OworICAgICAgICBjaTUgPSB0aTExICogdGk1ICsgdGkxMiAqIHRp
NDsKKyAgICAgICAgY3I0ID0gdGkxMiAqIHRyNSAtIHRpMTEgKiB0cjQ7CisgICAgICAgIGNpNCA9
IHRpMTIgKiB0aTUgLSB0aTExICogdGk0OworICAgICAgICBkcjMgPSBjcjMgLSBjaTQ7CisgICAg
ICAgIGRyNCA9IGNyMyArIGNpNDsKKyAgICAgICAgZGkzID0gY2kzICsgY3I0OworICAgICAgICBk
aTQgPSBjaTMgLSBjcjQ7CisgICAgICAgIGRyNSA9IGNyMiArIGNpNTsKKyAgICAgICAgZHIyID0g
Y3IyIC0gY2k1OworICAgICAgICBkaTUgPSBjaTIgLSBjcjU7CisgICAgICAgIGRpMiA9IGNpMiAr
IGNyNTsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCAyKSA9IHdhMVtpIC0gMV0gKiBkcjIgLSBm
c2lnbip3YTFbaV0gKiBkaTI7CisgICAgICAgIGNoX3JlZihpLCBrLCAyKSA9IHdhMVtpIC0gMV0g
KiBkaTIgKyBmc2lnbip3YTFbaV0gKiBkcjI7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMykg
PSB3YTJbaSAtIDFdICogZHIzIC0gZnNpZ24qd2EyW2ldICogZGkzOworICAgICAgICBjaF9yZWYo
aSwgaywgMykgPSB3YTJbaSAtIDFdICogZGkzICsgZnNpZ24qd2EyW2ldICogZHIzOworICAgICAg
ICBjaF9yZWYoaSAtIDEsIGssIDQpID0gd2EzW2kgLSAxXSAqIGRyNCAtIGZzaWduKndhM1tpXSAq
IGRpNDsKKyAgICAgICAgY2hfcmVmKGksIGssIDQpID0gd2EzW2kgLSAxXSAqIGRpNCArIGZzaWdu
KndhM1tpXSAqIGRyNDsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCA1KSA9IHdhNFtpIC0gMV0g
KiBkcjUgLSBmc2lnbip3YTRbaV0gKiBkaTU7CisgICAgICAgIGNoX3JlZihpLCBrLCA1KSA9IHdh
NFtpIC0gMV0gKiBkaTUgKyBmc2lnbip3YTRbaV0gKiBkcjU7CisgICAgICB9CisgICAgfQorICB9
Cit9IC8qIHBhc3NiNSAqLworCisjdW5kZWYgY2hfcmVmCisjdW5kZWYgY2NfcmVmCisKK3N0YXRp
YyB2b2lkIHBhc3NmMihpbnRlZ2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJl
YWwgKmNoLCBjb25zdCByZWFsICp3YTEpCit7CisgIC8qIFN5c3RlbSBnZW5lcmF0ZWQgbG9jYWxz
ICovCisgIGludGVnZXIgY2Nfb2Zmc2V0LCBjaF9vZmZzZXQ7CisKKyAgLyogTG9jYWwgdmFyaWFi
bGVzICovCisgIGludGVnZXIgaSwgazsKKyAgcmVhbCB0aTIsIHRyMjsKKworCisjZGVmaW5lIGNj
X3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjIgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmlu
ZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSpsMSArIChhXzIpKSppZG8gKyBhXzFdCisK
KyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiAo
MSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjY19vZmZzZXQgPSAxICsgaWRvICogMzsK
KyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisg
IGlmIChpZG8gPT0gMikgeworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAg
Y2hfcmVmKDEsIGssIDEpID0gY2NfcmVmKDEsIDEsIGspICsgY2NfcmVmKDEsIDIsIGspOworICAg
ICAgY2hfcmVmKDEsIGssIDIpID0gY2NfcmVmKDEsIDEsIGspIC0gY2NfcmVmKDEsIDIsIGspOwor
ICAgICAgY2hfcmVmKDIsIGssIDEpID0gY2NfcmVmKDIsIDEsIGspICsgY2NfcmVmKDIsIDIsIGsp
OworICAgICAgY2hfcmVmKDIsIGssIDIpID0gY2NfcmVmKDIsIDEsIGspIC0gY2NfcmVmKDIsIDIs
IGspOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsK
KyAgICAgIGZvciAoaSA9IDI7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgY2hfcmVmKGkg
LSAxLCBrLCAxKSA9IGNjX3JlZihpIC0gMSwgMSwgaykgKyBjY19yZWYoaSAtIDEsIDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsp
OworICAgICAgICB0cjIgPSBjY19yZWYoaSAtIDEsIDEsIGspIC0gY2NfcmVmKGkgLSAxLCAyLCBr
KTsKKyAgICAgICAgY2hfcmVmKGksIGssIDEpID0gY2NfcmVmKGksIDEsIGspICsgY2NfcmVmKGks
IDIsIGspOworICAgICAgICB0aTIgPSBjY19yZWYoaSwgMSwgaykgLSBjY19yZWYoaSwgMiwgayk7
CisgICAgICAgIGNoX3JlZihpLCBrLCAyKSA9IHdhMVtpIC0gMV0gKiB0aTIgLSB3YTFbaV0gKiB0
cjI7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMikgPSB3YTFbaSAtIDFdICogdHIyICsgd2Ex
W2ldICogdGkyOworICAgICAgfQorICAgIH0KKyAgfQorfSAvKiBwYXNzZjIgKi8KKworI3VuZGVm
IGNoX3JlZgorI3VuZGVmIGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHBhc3NmMyhpbnRlZ2VyIGlk
bywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJlYWwgKmNoLCAKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCByZWFsICp3YTEsIGNvbnN0IHJlYWwgKndhMikKK3sKKyAgc3RhdGljIGNvbnN0
IHJlYWwgdGF1ciA9IC0uNWY7CisgIHN0YXRpYyBjb25zdCByZWFsIHRhdWkgPSAtLjg2NjAyNTQw
Mzc4NDQzOWY7CisKKyAgLyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50ZWdlciBj
Y19vZmZzZXQsIGNoX29mZnNldDsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdl
ciBpLCBrOworICByZWFsIGNpMiwgY2kzLCBkaTIsIGRpMywgY3IyLCBjcjMsIGRyMiwgZHIzLCB0
aTIsIHRyMjsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjMgKyAo
YV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSps
MSArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisg
IGNoX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBj
Y19vZmZzZXQgPSAxICsgKGlkbyA8PCAyKTsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsK
KyAgLS13YTI7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBpZiAoaWRvID09IDIpIHsKKyAg
ICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgIHRyMiA9IGNjX3JlZigxLCAyLCBr
KSArIGNjX3JlZigxLCAzLCBrKTsKKyAgICAgIGNyMiA9IGNjX3JlZigxLCAxLCBrKSArIHRhdXIg
KiB0cjI7CisgICAgICBjaF9yZWYoMSwgaywgMSkgPSBjY19yZWYoMSwgMSwgaykgKyB0cjI7Cisg
ICAgICB0aTIgPSBjY19yZWYoMiwgMiwgaykgKyBjY19yZWYoMiwgMywgayk7CisgICAgICBjaTIg
PSBjY19yZWYoMiwgMSwgaykgKyB0YXVyICogdGkyOworICAgICAgY2hfcmVmKDIsIGssIDEpID0g
Y2NfcmVmKDIsIDEsIGspICsgdGkyOworICAgICAgY3IzID0gdGF1aSAqIChjY19yZWYoMSwgMiwg
aykgLSBjY19yZWYoMSwgMywgaykpOworICAgICAgY2kzID0gdGF1aSAqIChjY19yZWYoMiwgMiwg
aykgLSBjY19yZWYoMiwgMywgaykpOworICAgICAgY2hfcmVmKDEsIGssIDIpID0gY3IyIC0gY2kz
OworICAgICAgY2hfcmVmKDEsIGssIDMpID0gY3IyICsgY2kzOworICAgICAgY2hfcmVmKDIsIGss
IDIpID0gY2kyICsgY3IzOworICAgICAgY2hfcmVmKDIsIGssIDMpID0gY2kyIC0gY3IzOworICAg
IH0KKyAgfSBlbHNlIHsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgIGZv
ciAoaSA9IDI7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgdHIyID0gY2NfcmVmKGkgLSAx
LCAyLCBrKSArIGNjX3JlZihpIC0gMSwgMywgayk7CisgICAgICAgIGNyMiA9IGNjX3JlZihpIC0g
MSwgMSwgaykgKyB0YXVyICogdHIyOworICAgICAgICBjaF9yZWYoaSAtIDEsIGssIDEpID0gY2Nf
cmVmKGkgLSAxLCAxLCBrKSArIHRyMjsKKyAgICAgICAgdGkyID0gY2NfcmVmKGksIDIsIGspICsg
Y2NfcmVmKGksIDMsIGspOworICAgICAgICBjaTIgPSBjY19yZWYoaSwgMSwgaykgKyB0YXVyICog
dGkyOworICAgICAgICBjaF9yZWYoaSwgaywgMSkgPSBjY19yZWYoaSwgMSwgaykgKyB0aTI7Cisg
ICAgICAgIGNyMyA9IHRhdWkgKiAoY2NfcmVmKGkgLSAxLCAyLCBrKSAtIGNjX3JlZihpIC0gMSwg
MywgaykpOworICAgICAgICBjaTMgPSB0YXVpICogKGNjX3JlZihpLCAyLCBrKSAtIGNjX3JlZihp
LCAzLCBrKSk7CisgICAgICAgIGRyMiA9IGNyMiAtIGNpMzsKKyAgICAgICAgZHIzID0gY3IyICsg
Y2kzOworICAgICAgICBkaTIgPSBjaTIgKyBjcjM7CisgICAgICAgIGRpMyA9IGNpMiAtIGNyMzsK
KyAgICAgICAgY2hfcmVmKGksIGssIDIpID0gd2ExW2kgLSAxXSAqIGRpMiAtIHdhMVtpXSAqIGRy
MjsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCAyKSA9IHdhMVtpIC0gMV0gKiBkcjIgKyB3YTFb
aV0gKiBkaTI7CisgICAgICAgIGNoX3JlZihpLCBrLCAzKSA9IHdhMltpIC0gMV0gKiBkaTMgLSB3
YTJbaV0gKiBkcjM7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMykgPSB3YTJbaSAtIDFdICog
ZHIzICsgd2EyW2ldICogZGkzOworICAgICAgfQorICAgIH0KKyAgfQorfSAvKiBwYXNzZjMgKi8K
KworI3VuZGVmIGNoX3JlZgorI3VuZGVmIGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHBhc3NmNChp
bnRlZ2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJlYWwgKmNoLCAKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCByZWFsICp3YTEsIGNvbnN0IHJlYWwgKndhMiwgY29uc3QgcmVh
bCAqd2EzKQoreworICAvKiBTeXN0ZW0gZ2VuZXJhdGVkIGxvY2FscyAqLworICBpbnRlZ2VyIGNj
X29mZnNldCwgY2hfb2Zmc2V0OworCisgIC8qIExvY2FsIHZhcmlhYmxlcyAqLworICBpbnRlZ2Vy
IGksIGs7CisgIHJlYWwgY2kyLCBjaTMsIGNpNCwgY3IyLCBjcjMsIGNyNCwgdGkxLCB0aTIsIHRp
MywgdGk0LCB0cjEsIHRyMiwgdHIzLCB0cjQ7CisKKworI2RlZmluZSBjY19yZWYoYV8xLGFfMixh
XzMpIGNjWygoYV8zKSo0ICsgKGFfMikpKmlkbyArIGFfMV0KKyNkZWZpbmUgY2hfcmVmKGFfMSxh
XzIsYV8zKSBjaFsoKGFfMykqbDEgKyAoYV8yKSkqaWRvICsgYV8xXQorCisgIC8qIFBhcmFtZXRl
ciBhZGp1c3RtZW50cyAqLworICBjaF9vZmZzZXQgPSAxICsgaWRvICogKDEgKyBsMSk7CisgIGNo
IC09IGNoX29mZnNldDsKKyAgY2Nfb2Zmc2V0ID0gMSArIGlkbyAqIDU7CisgIGNjIC09IGNjX29m
ZnNldDsKKyAgLS13YTE7CisgIC0td2EyOworICAtLXdhMzsKKworICAvKiBGdW5jdGlvbiBCb2R5
ICovCisgIGlmIChpZG8gPT0gMikgeworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgewor
ICAgICAgdGkxID0gY2NfcmVmKDIsIDEsIGspIC0gY2NfcmVmKDIsIDMsIGspOworICAgICAgdGky
ID0gY2NfcmVmKDIsIDEsIGspICsgY2NfcmVmKDIsIDMsIGspOworICAgICAgdHI0ID0gY2NfcmVm
KDIsIDIsIGspIC0gY2NfcmVmKDIsIDQsIGspOworICAgICAgdGkzID0gY2NfcmVmKDIsIDIsIGsp
ICsgY2NfcmVmKDIsIDQsIGspOworICAgICAgdHIxID0gY2NfcmVmKDEsIDEsIGspIC0gY2NfcmVm
KDEsIDMsIGspOworICAgICAgdHIyID0gY2NfcmVmKDEsIDEsIGspICsgY2NfcmVmKDEsIDMsIGsp
OworICAgICAgdGk0ID0gY2NfcmVmKDEsIDQsIGspIC0gY2NfcmVmKDEsIDIsIGspOworICAgICAg
dHIzID0gY2NfcmVmKDEsIDIsIGspICsgY2NfcmVmKDEsIDQsIGspOworICAgICAgY2hfcmVmKDEs
IGssIDEpID0gdHIyICsgdHIzOworICAgICAgY2hfcmVmKDEsIGssIDMpID0gdHIyIC0gdHIzOwor
ICAgICAgY2hfcmVmKDIsIGssIDEpID0gdGkyICsgdGkzOworICAgICAgY2hfcmVmKDIsIGssIDMp
ID0gdGkyIC0gdGkzOworICAgICAgY2hfcmVmKDEsIGssIDIpID0gdHIxICsgdHI0OworICAgICAg
Y2hfcmVmKDEsIGssIDQpID0gdHIxIC0gdHI0OworICAgICAgY2hfcmVmKDIsIGssIDIpID0gdGkx
ICsgdGk0OworICAgICAgY2hfcmVmKDIsIGssIDQpID0gdGkxIC0gdGk0OworICAgIH0KKyAgfSBl
bHNlIHsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgIGZvciAoaSA9IDI7
IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgdGkxID0gY2NfcmVmKGksIDEsIGspIC0gY2Nf
cmVmKGksIDMsIGspOworICAgICAgICB0aTIgPSBjY19yZWYoaSwgMSwgaykgKyBjY19yZWYoaSwg
Mywgayk7CisgICAgICAgIHRpMyA9IGNjX3JlZihpLCAyLCBrKSArIGNjX3JlZihpLCA0LCBrKTsK
KyAgICAgICAgdHI0ID0gY2NfcmVmKGksIDIsIGspIC0gY2NfcmVmKGksIDQsIGspOworICAgICAg
ICB0cjEgPSBjY19yZWYoaSAtIDEsIDEsIGspIC0gY2NfcmVmKGkgLSAxLCAzLCBrKTsKKyAgICAg
ICAgdHIyID0gY2NfcmVmKGkgLSAxLCAxLCBrKSArIGNjX3JlZihpIC0gMSwgMywgayk7CisgICAg
ICAgIHRpNCA9IGNjX3JlZihpIC0gMSwgNCwgaykgLSBjY19yZWYoaSAtIDEsIDIsIGspOworICAg
ICAgICB0cjMgPSBjY19yZWYoaSAtIDEsIDIsIGspICsgY2NfcmVmKGkgLSAxLCA0LCBrKTsKKyAg
ICAgICAgY2hfcmVmKGkgLSAxLCBrLCAxKSA9IHRyMiArIHRyMzsKKyAgICAgICAgY3IzID0gdHIy
IC0gdHIzOworICAgICAgICBjaF9yZWYoaSwgaywgMSkgPSB0aTIgKyB0aTM7CisgICAgICAgIGNp
MyA9IHRpMiAtIHRpMzsKKyAgICAgICAgY3IyID0gdHIxICsgdHI0OworICAgICAgICBjcjQgPSB0
cjEgLSB0cjQ7CisgICAgICAgIGNpMiA9IHRpMSArIHRpNDsKKyAgICAgICAgY2k0ID0gdGkxIC0g
dGk0OworICAgICAgICBjaF9yZWYoaSAtIDEsIGssIDIpID0gd2ExW2kgLSAxXSAqIGNyMiArIHdh
MVtpXSAqIGNpMjsKKyAgICAgICAgY2hfcmVmKGksIGssIDIpID0gd2ExW2kgLSAxXSAqIGNpMiAt
IHdhMVtpXSAqIGNyMjsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCAzKSA9IHdhMltpIC0gMV0g
KiBjcjMgKyB3YTJbaV0gKiBjaTM7CisgICAgICAgIGNoX3JlZihpLCBrLCAzKSA9IHdhMltpIC0g
MV0gKiBjaTMgLSB3YTJbaV0gKiBjcjM7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgNCkgPSB3
YTNbaSAtIDFdICogY3I0ICsgd2EzW2ldICogY2k0OworICAgICAgICBjaF9yZWYoaSwgaywgNCkg
PSB3YTNbaSAtIDFdICogY2k0IC0gd2EzW2ldICogY3I0OworICAgICAgfQorICAgIH0KKyAgfQor
fSAvKiBwYXNzZjQgKi8KKworI3VuZGVmIGNoX3JlZgorI3VuZGVmIGNjX3JlZgorCitzdGF0aWMg
dm9pZCByYWRiMihpbnRlZ2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJlYWwg
KmNoLCBjb25zdCByZWFsICp3YTEpCit7CisgIC8qIFN5c3RlbSBnZW5lcmF0ZWQgbG9jYWxzICov
CisgIGludGVnZXIgY2Nfb2Zmc2V0LCBjaF9vZmZzZXQ7CisKKyAgLyogTG9jYWwgdmFyaWFibGVz
ICovCisgIGludGVnZXIgaSwgaywgaWM7CisgIHJlYWwgdGkyLCB0cjI7CisgIGludGVnZXIgaWRw
MjsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjIgKyAoYV8yKSkq
aWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSpsMSArIChh
XzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29m
ZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjY19vZmZz
ZXQgPSAxICsgaWRvICogMzsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKworICAvKiBG
dW5jdGlvbiBCb2R5ICovCisgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgIGNoX3Jl
ZigxLCBrLCAxKSA9IGNjX3JlZigxLCAxLCBrKSArIGNjX3JlZihpZG8sIDIsIGspOworICAgIGNo
X3JlZigxLCBrLCAyKSA9IGNjX3JlZigxLCAxLCBrKSAtIGNjX3JlZihpZG8sIDIsIGspOworICB9
CisgIGlmIChpZG8gPCAyKSByZXR1cm47CisgIGVsc2UgaWYgKGlkbyAhPSAyKSB7CisgICAgaWRw
MiA9IGlkbyArIDI7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICBmb3Ig
KGkgPSAzOyBpIDw9IGlkbzsgaSArPSAyKSB7CisgICAgICAgIGljID0gaWRwMiAtIGk7CisgICAg
ICAgIGNoX3JlZihpIC0gMSwgaywgMSkgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgY2NfcmVmKGlj
IC0gMSwgMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGspOworICAgICAgICB0cjIgPSBjY19yZWYoaSAtIDEsIDEsIGspIC0gY2Nf
cmVmKGljIC0gMSwgMiwgayk7CisgICAgICAgIGNoX3JlZihpLCBrLCAxKSA9IGNjX3JlZihpLCAx
LCBrKSAtIGNjX3JlZihpYywgMiwgayk7CisgICAgICAgIHRpMiA9IGNjX3JlZihpLCAxLCBrKSAr
IGNjX3JlZihpYywgMiwgayk7CisgICAgICAgIGNoX3JlZihpIC0gMSwgaywgMikgPSB3YTFbaSAt
IDJdICogdHIyIC0gd2ExW2kgLSAxXSAqIHRpMjsKKyAgICAgICAgY2hfcmVmKGksIGssIDIpID0g
d2ExW2kgLSAyXSAqIHRpMiArIHdhMVtpIC0gMV0gKiB0cjI7CisgICAgICB9CisgICAgfQorICAg
IGlmIChpZG8gJSAyID09IDEpIHJldHVybjsKKyAgfQorICBmb3IgKGsgPSAxOyBrIDw9IGwxOyAr
K2spIHsKKyAgICBjaF9yZWYoaWRvLCBrLCAxKSA9IGNjX3JlZihpZG8sIDEsIGspICsgY2NfcmVm
KGlkbywgMSwgayk7CisgICAgY2hfcmVmKGlkbywgaywgMikgPSAtKGNjX3JlZigxLCAyLCBrKSAr
IGNjX3JlZigxLCAyLCBrKSk7CisgIH0KK30gLyogcmFkYjIgKi8KKworI3VuZGVmIGNoX3JlZgor
I3VuZGVmIGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHJhZGIzKGludGVnZXIgaWRvLCBpbnRlZ2Vy
IGwxLCBjb25zdCByZWFsICpjYywgcmVhbCAqY2gsIAorICAgICAgICAgICAgICAgICAgY29uc3Qg
cmVhbCAqd2ExLCBjb25zdCByZWFsICp3YTIpCit7CisgIC8qIEluaXRpYWxpemVkIGRhdGEgKi8K
KworICBzdGF0aWMgY29uc3QgcmVhbCB0YXVyID0gLS41ZjsKKyAgc3RhdGljIGNvbnN0IHJlYWwg
dGF1aSA9IC44NjYwMjU0MDM3ODQ0MzlmOworCisgIC8qIFN5c3RlbSBnZW5lcmF0ZWQgbG9jYWxz
ICovCisgIGludGVnZXIgY2Nfb2Zmc2V0LCBjaF9vZmZzZXQ7CisKKyAgLyogTG9jYWwgdmFyaWFi
bGVzICovCisgIGludGVnZXIgaSwgaywgaWM7CisgIHJlYWwgY2kyLCBjaTMsIGRpMiwgZGkzLCBj
cjIsIGNyMywgZHIyLCBkcjMsIHRpMiwgdHIyOworICBpbnRlZ2VyIGlkcDI7CisKKworI2RlZmlu
ZSBjY19yZWYoYV8xLGFfMixhXzMpIGNjWygoYV8zKSozICsgKGFfMikpKmlkbyArIGFfMV0KKyNk
ZWZpbmUgY2hfcmVmKGFfMSxhXzIsYV8zKSBjaFsoKGFfMykqbDEgKyAoYV8yKSkqaWRvICsgYV8x
XQorCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICBjaF9vZmZzZXQgPSAxICsgaWRv
ICogKDEgKyBsMSk7CisgIGNoIC09IGNoX29mZnNldDsKKyAgY2Nfb2Zmc2V0ID0gMSArIChpZG8g
PDwgMik7CisgIGNjIC09IGNjX29mZnNldDsKKyAgLS13YTE7CisgIC0td2EyOworCisgIC8qIEZ1
bmN0aW9uIEJvZHkgKi8KKyAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgdHIyID0g
Y2NfcmVmKGlkbywgMiwgaykgKyBjY19yZWYoaWRvLCAyLCBrKTsKKyAgICBjcjIgPSBjY19yZWYo
MSwgMSwgaykgKyB0YXVyICogdHIyOworICAgIGNoX3JlZigxLCBrLCAxKSA9IGNjX3JlZigxLCAx
LCBrKSArIHRyMjsKKyAgICBjaTMgPSB0YXVpICogKGNjX3JlZigxLCAzLCBrKSArIGNjX3JlZigx
LCAzLCBrKSk7CisgICAgY2hfcmVmKDEsIGssIDIpID0gY3IyIC0gY2kzOworICAgIGNoX3JlZigx
LCBrLCAzKSA9IGNyMiArIGNpMzsKKyAgfQorICBpZiAoaWRvID09IDEpIHsKKyAgICByZXR1cm47
CisgIH0KKyAgaWRwMiA9IGlkbyArIDI7CisgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgewor
ICAgIGZvciAoaSA9IDM7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgIGljID0gaWRwMiAtIGk7
CisgICAgICB0cjIgPSBjY19yZWYoaSAtIDEsIDMsIGspICsgY2NfcmVmKGljIC0gMSwgMiwgayk7
CisgICAgICBjcjIgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgdGF1ciAqIHRyMjsKKyAgICAgIGNo
X3JlZihpIC0gMSwgaywgMSkgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgdHIyOworICAgICAgdGky
ID0gY2NfcmVmKGksIDMsIGspIC0gY2NfcmVmKGljLCAyLCBrKTsKKyAgICAgIGNpMiA9IGNjX3Jl
ZihpLCAxLCBrKSArIHRhdXIgKiB0aTI7CisgICAgICBjaF9yZWYoaSwgaywgMSkgPSBjY19yZWYo
aSwgMSwgaykgKyB0aTI7CisgICAgICBjcjMgPSB0YXVpICogKGNjX3JlZihpIC0gMSwgMywgaykg
LSBjY19yZWYoaWMgLSAxLCAyLCBrKSk7CisgICAgICBjaTMgPSB0YXVpICogKGNjX3JlZihpLCAz
LCBrKSArIGNjX3JlZihpYywgMiwgaykpOworICAgICAgZHIyID0gY3IyIC0gY2kzOworICAgICAg
ZHIzID0gY3IyICsgY2kzOworICAgICAgZGkyID0gY2kyICsgY3IzOworICAgICAgZGkzID0gY2ky
IC0gY3IzOworICAgICAgY2hfcmVmKGkgLSAxLCBrLCAyKSA9IHdhMVtpIC0gMl0gKiBkcjIgLSB3
YTFbaSAtIDFdICogZGkyOworICAgICAgY2hfcmVmKGksIGssIDIpID0gd2ExW2kgLSAyXSAqIGRp
MiArIHdhMVtpIC0gMV0gKiBkcjI7CisgICAgICBjaF9yZWYoaSAtIDEsIGssIDMpID0gd2EyW2kg
LSAyXSAqIGRyMyAtIHdhMltpIC0gMV0gKiBkaTM7CisgICAgICBjaF9yZWYoaSwgaywgMykgPSB3
YTJbaSAtIDJdICogZGkzICsgd2EyW2kgLSAxXSAqIGRyMzsKKyAgICB9CisgIH0KK30gLyogcmFk
YjMgKi8KKworI3VuZGVmIGNoX3JlZgorI3VuZGVmIGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHJh
ZGI0KGludGVnZXIgaWRvLCBpbnRlZ2VyIGwxLCBjb25zdCByZWFsICpjYywgcmVhbCAqY2gsIAor
ICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbCAqd2ExLCBjb25zdCByZWFsICp3YTIsIGNvbnN0
IHJlYWwgKndhMykKK3sKKyAgLyogSW5pdGlhbGl6ZWQgZGF0YSAqLworCisgIHN0YXRpYyBjb25z
dCByZWFsIHNxcnQyID0gMS40MTQyMTM1NjIzNzMwOTVmOworCisgIC8qIFN5c3RlbSBnZW5lcmF0
ZWQgbG9jYWxzICovCisgIGludGVnZXIgY2Nfb2Zmc2V0LCBjaF9vZmZzZXQ7CisKKyAgLyogTG9j
YWwgdmFyaWFibGVzICovCisgIGludGVnZXIgaSwgaywgaWM7CisgIHJlYWwgY2kyLCBjaTMsIGNp
NCwgY3IyLCBjcjMsIGNyNCwgdGkxLCB0aTIsIHRpMywgdGk0LCB0cjEsIHRyMiwgdHIzLCB0cjQ7
CisgIGludGVnZXIgaWRwMjsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChh
XzMpKjQgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNo
WygoYV8zKSpsMSArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1l
bnRzICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zm
c2V0OworICBjY19vZmZzZXQgPSAxICsgaWRvICogNTsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAt
LXdhMTsKKyAgLS13YTI7CisgIC0td2EzOworCisgIC8qIEZ1bmN0aW9uIEJvZHkgKi8KKyAgZm9y
IChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgdHIxID0gY2NfcmVmKDEsIDEsIGspIC0gY2Nf
cmVmKGlkbywgNCwgayk7CisgICAgdHIyID0gY2NfcmVmKDEsIDEsIGspICsgY2NfcmVmKGlkbywg
NCwgayk7CisgICAgdHIzID0gY2NfcmVmKGlkbywgMiwgaykgKyBjY19yZWYoaWRvLCAyLCBrKTsK
KyAgICB0cjQgPSBjY19yZWYoMSwgMywgaykgKyBjY19yZWYoMSwgMywgayk7CisgICAgY2hfcmVm
KDEsIGssIDEpID0gdHIyICsgdHIzOworICAgIGNoX3JlZigxLCBrLCAyKSA9IHRyMSAtIHRyNDsK
KyAgICBjaF9yZWYoMSwgaywgMykgPSB0cjIgLSB0cjM7CisgICAgY2hfcmVmKDEsIGssIDQpID0g
dHIxICsgdHI0OworICB9CisgIGlmIChpZG8gPCAyKSByZXR1cm47CisgIGlmIChpZG8gIT0gMikg
eworICAgIGlkcDIgPSBpZG8gKyAyOworICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgewor
ICAgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAgICBpYyA9IGlkcDIg
LSBpOworICAgICAgICB0aTEgPSBjY19yZWYoaSwgMSwgaykgKyBjY19yZWYoaWMsIDQsIGspOwor
ICAgICAgICB0aTIgPSBjY19yZWYoaSwgMSwgaykgLSBjY19yZWYoaWMsIDQsIGspOworICAgICAg
ICB0aTMgPSBjY19yZWYoaSwgMywgaykgLSBjY19yZWYoaWMsIDIsIGspOworICAgICAgICB0cjQg
PSBjY19yZWYoaSwgMywgaykgKyBjY19yZWYoaWMsIDIsIGspOworICAgICAgICB0cjEgPSBjY19y
ZWYoaSAtIDEsIDEsIGspIC0gY2NfcmVmKGljIC0gMSwgNCwgayk7CisgICAgICAgIHRyMiA9IGNj
X3JlZihpIC0gMSwgMSwgaykgKyBjY19yZWYoaWMgLSAxLCA0LCBrKTsKKyAgICAgICAgdGk0ID0g
Y2NfcmVmKGkgLSAxLCAzLCBrKSAtIGNjX3JlZihpYyAtIDEsIDIsIGspOworICAgICAgICB0cjMg
PSBjY19yZWYoaSAtIDEsIDMsIGspICsgY2NfcmVmKGljIC0gMSwgMiwgayk7CisgICAgICAgIGNo
X3JlZihpIC0gMSwgaywgMSkgPSB0cjIgKyB0cjM7CisgICAgICAgIGNyMyA9IHRyMiAtIHRyMzsK
KyAgICAgICAgY2hfcmVmKGksIGssIDEpID0gdGkyICsgdGkzOworICAgICAgICBjaTMgPSB0aTIg
LSB0aTM7CisgICAgICAgIGNyMiA9IHRyMSAtIHRyNDsKKyAgICAgICAgY3I0ID0gdHIxICsgdHI0
OworICAgICAgICBjaTIgPSB0aTEgKyB0aTQ7CisgICAgICAgIGNpNCA9IHRpMSAtIHRpNDsKKyAg
ICAgICAgY2hfcmVmKGkgLSAxLCBrLCAyKSA9IHdhMVtpIC0gMl0gKiBjcjIgLSB3YTFbaSAtIDFd
ICogY2kyOworICAgICAgICBjaF9yZWYoaSwgaywgMikgPSB3YTFbaSAtIDJdICogY2kyICsgd2Ex
W2kgLSAxXSAqIGNyMjsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCAzKSA9IHdhMltpIC0gMl0g
KiBjcjMgLSB3YTJbaSAtIDFdICogY2kzOworICAgICAgICBjaF9yZWYoaSwgaywgMykgPSB3YTJb
aSAtIDJdICogY2kzICsgd2EyW2kgLSAxXSAqIGNyMzsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCBr
LCA0KSA9IHdhM1tpIC0gMl0gKiBjcjQgLSB3YTNbaSAtIDFdICogY2k0OworICAgICAgICBjaF9y
ZWYoaSwgaywgNCkgPSB3YTNbaSAtIDJdICogY2k0ICsgd2EzW2kgLSAxXSAqIGNyNDsKKyAgICAg
IH0KKyAgICB9CisgICAgaWYgKGlkbyAlIDIgPT0gMSkgcmV0dXJuOworICB9CisgIGZvciAoayA9
IDE7IGsgPD0gbDE7ICsraykgeworICAgIHRpMSA9IGNjX3JlZigxLCAyLCBrKSArIGNjX3JlZigx
LCA0LCBrKTsKKyAgICB0aTIgPSBjY19yZWYoMSwgNCwgaykgLSBjY19yZWYoMSwgMiwgayk7Cisg
ICAgdHIxID0gY2NfcmVmKGlkbywgMSwgaykgLSBjY19yZWYoaWRvLCAzLCBrKTsKKyAgICB0cjIg
PSBjY19yZWYoaWRvLCAxLCBrKSArIGNjX3JlZihpZG8sIDMsIGspOworICAgIGNoX3JlZihpZG8s
IGssIDEpID0gdHIyICsgdHIyOworICAgIGNoX3JlZihpZG8sIGssIDIpID0gc3FydDIgKiAodHIx
IC0gdGkxKTsKKyAgICBjaF9yZWYoaWRvLCBrLCAzKSA9IHRpMiArIHRpMjsKKyAgICBjaF9yZWYo
aWRvLCBrLCA0KSA9IC1zcXJ0MiAqICh0cjEgKyB0aTEpOworICB9Cit9IC8qIHJhZGI0ICovCisK
KyN1bmRlZiBjaF9yZWYKKyN1bmRlZiBjY19yZWYKKworCitzdGF0aWMgdm9pZCByYWRiNShpbnRl
Z2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVhbCAqY2MsIHJlYWwgKmNoLCAKKyAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJlYWwgKndhMSwgY29uc3QgcmVhbCAqd2EyLCBjb25zdCByZWFsICp3
YTMsIGNvbnN0IHJlYWwgKndhNCkKK3sKKyAgLyogSW5pdGlhbGl6ZWQgZGF0YSAqLworCisgIHN0
YXRpYyBjb25zdCByZWFsIHRyMTEgPSAuMzA5MDE2OTk0Mzc0OTQ3ZjsKKyAgc3RhdGljIGNvbnN0
IHJlYWwgdGkxMSA9IC45NTEwNTY1MTYyOTUxNTRmOworICBzdGF0aWMgY29uc3QgcmVhbCB0cjEy
ID0gLS44MDkwMTY5OTQzNzQ5NDdmOworICBzdGF0aWMgY29uc3QgcmVhbCB0aTEyID0gLjU4Nzc4
NTI1MjI5MjQ3M2Y7CisKKyAgLyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50ZWdl
ciBjY19vZmZzZXQsIGNoX29mZnNldDsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50
ZWdlciBpLCBrLCBpYzsKKyAgcmVhbCBjaTIsIGNpMywgY2k0LCBjaTUsIGRpMywgZGk0LCBkaTUs
IGRpMiwgY3IyLCBjcjMsIGNyNSwgY3I0LCB0aTIsIHRpMywKKyAgICB0aTQsIHRpNSwgZHIzLCBk
cjQsIGRyNSwgZHIyLCB0cjIsIHRyMywgdHI0LCB0cjU7CisgIGludGVnZXIgaWRwMjsKKworCisj
ZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMpKjUgKyAoYV8yKSkqaWRvICsgYV8x
XQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSpsMSArIChhXzIpKSppZG8g
KyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNldCA9IDEg
KyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjY19vZmZzZXQgPSAxICsg
aWRvICogNjsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKyAgLS13YTI7CisgIC0td2Ez
OworICAtLXdhNDsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIGZvciAoayA9IDE7IGsgPD0g
bDE7ICsraykgeworICAgIHRpNSA9IGNjX3JlZigxLCAzLCBrKSArIGNjX3JlZigxLCAzLCBrKTsK
KyAgICB0aTQgPSBjY19yZWYoMSwgNSwgaykgKyBjY19yZWYoMSwgNSwgayk7CisgICAgdHIyID0g
Y2NfcmVmKGlkbywgMiwgaykgKyBjY19yZWYoaWRvLCAyLCBrKTsKKyAgICB0cjMgPSBjY19yZWYo
aWRvLCA0LCBrKSArIGNjX3JlZihpZG8sIDQsIGspOworICAgIGNoX3JlZigxLCBrLCAxKSA9IGNj
X3JlZigxLCAxLCBrKSArIHRyMiArIHRyMzsKKyAgICBjcjIgPSBjY19yZWYoMSwgMSwgaykgKyB0
cjExICogdHIyICsgdHIxMiAqIHRyMzsKKyAgICBjcjMgPSBjY19yZWYoMSwgMSwgaykgKyB0cjEy
ICogdHIyICsgdHIxMSAqIHRyMzsKKyAgICBjaTUgPSB0aTExICogdGk1ICsgdGkxMiAqIHRpNDsK
KyAgICBjaTQgPSB0aTEyICogdGk1IC0gdGkxMSAqIHRpNDsKKyAgICBjaF9yZWYoMSwgaywgMikg
PSBjcjIgLSBjaTU7CisgICAgY2hfcmVmKDEsIGssIDMpID0gY3IzIC0gY2k0OworICAgIGNoX3Jl
ZigxLCBrLCA0KSA9IGNyMyArIGNpNDsKKyAgICBjaF9yZWYoMSwgaywgNSkgPSBjcjIgKyBjaTU7
CisgIH0KKyAgaWYgKGlkbyA9PSAxKSB7CisgICAgcmV0dXJuOworICB9CisgIGlkcDIgPSBpZG8g
KyAyOworICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICBmb3IgKGkgPSAzOyBpIDw9
IGlkbzsgaSArPSAyKSB7CisgICAgICBpYyA9IGlkcDIgLSBpOworICAgICAgdGk1ID0gY2NfcmVm
KGksIDMsIGspICsgY2NfcmVmKGljLCAyLCBrKTsKKyAgICAgIHRpMiA9IGNjX3JlZihpLCAzLCBr
KSAtIGNjX3JlZihpYywgMiwgayk7CisgICAgICB0aTQgPSBjY19yZWYoaSwgNSwgaykgKyBjY19y
ZWYoaWMsIDQsIGspOworICAgICAgdGkzID0gY2NfcmVmKGksIDUsIGspIC0gY2NfcmVmKGljLCA0
LCBrKTsKKyAgICAgIHRyNSA9IGNjX3JlZihpIC0gMSwgMywgaykgLSBjY19yZWYoaWMgLSAxLCAy
LCBrKTsKKyAgICAgIHRyMiA9IGNjX3JlZihpIC0gMSwgMywgaykgKyBjY19yZWYoaWMgLSAxLCAy
LCBrKTsKKyAgICAgIHRyNCA9IGNjX3JlZihpIC0gMSwgNSwgaykgLSBjY19yZWYoaWMgLSAxLCA0
LCBrKTsKKyAgICAgIHRyMyA9IGNjX3JlZihpIC0gMSwgNSwgaykgKyBjY19yZWYoaWMgLSAxLCA0
LCBrKTsKKyAgICAgIGNoX3JlZihpIC0gMSwgaywgMSkgPSBjY19yZWYoaSAtIDEsIDEsIGspICsg
dHIyICsgdHIzOworICAgICAgY2hfcmVmKGksIGssIDEpID0gY2NfcmVmKGksIDEsIGspICsgdGky
ICsgdGkzOworICAgICAgY3IyID0gY2NfcmVmKGkgLSAxLCAxLCBrKSArIHRyMTEgKiB0cjIgKyB0
cjEyICogdHIzOworICAgICAgY2kyID0gY2NfcmVmKGksIDEsIGspICsgdHIxMSAqIHRpMiArIHRy
MTIgKiB0aTM7CisgICAgICBjcjMgPSBjY19yZWYoaSAtIDEsIDEsIGspICsgdHIxMiAqIHRyMiAr
IHRyMTEgKiB0cjM7CisgICAgICBjaTMgPSBjY19yZWYoaSwgMSwgaykgKyB0cjEyICogdGkyICsg
dHIxMSAqIHRpMzsKKyAgICAgIGNyNSA9IHRpMTEgKiB0cjUgKyB0aTEyICogdHI0OworICAgICAg
Y2k1ID0gdGkxMSAqIHRpNSArIHRpMTIgKiB0aTQ7CisgICAgICBjcjQgPSB0aTEyICogdHI1IC0g
dGkxMSAqIHRyNDsKKyAgICAgIGNpNCA9IHRpMTIgKiB0aTUgLSB0aTExICogdGk0OworICAgICAg
ZHIzID0gY3IzIC0gY2k0OworICAgICAgZHI0ID0gY3IzICsgY2k0OworICAgICAgZGkzID0gY2kz
ICsgY3I0OworICAgICAgZGk0ID0gY2kzIC0gY3I0OworICAgICAgZHI1ID0gY3IyICsgY2k1Owor
ICAgICAgZHIyID0gY3IyIC0gY2k1OworICAgICAgZGk1ID0gY2kyIC0gY3I1OworICAgICAgZGky
ID0gY2kyICsgY3I1OworICAgICAgY2hfcmVmKGkgLSAxLCBrLCAyKSA9IHdhMVtpIC0gMl0gKiBk
cjIgLSB3YTFbaSAtIDFdICogZGkyOworICAgICAgY2hfcmVmKGksIGssIDIpID0gd2ExW2kgLSAy
XSAqIGRpMiArIHdhMVtpIC0gMV0gKiBkcjI7CisgICAgICBjaF9yZWYoaSAtIDEsIGssIDMpID0g
d2EyW2kgLSAyXSAqIGRyMyAtIHdhMltpIC0gMV0gKiBkaTM7CisgICAgICBjaF9yZWYoaSwgaywg
MykgPSB3YTJbaSAtIDJdICogZGkzICsgd2EyW2kgLSAxXSAqIGRyMzsKKyAgICAgIGNoX3JlZihp
IC0gMSwgaywgNCkgPSB3YTNbaSAtIDJdICogZHI0IC0gd2EzW2kgLSAxXSAqIGRpNDsKKyAgICAg
IGNoX3JlZihpLCBrLCA0KSA9IHdhM1tpIC0gMl0gKiBkaTQgKyB3YTNbaSAtIDFdICogZHI0Owor
ICAgICAgY2hfcmVmKGkgLSAxLCBrLCA1KSA9IHdhNFtpIC0gMl0gKiBkcjUgLSB3YTRbaSAtIDFd
ICogZGk1OworICAgICAgY2hfcmVmKGksIGssIDUpID0gd2E0W2kgLSAyXSAqIGRpNSArIHdhNFtp
IC0gMV0gKiBkcjU7CisgICAgfQorICB9Cit9IC8qIHJhZGI1ICovCisKKyN1bmRlZiBjaF9yZWYK
KyN1bmRlZiBjY19yZWYKKworCitzdGF0aWMgdm9pZCByYWRiZyhpbnRlZ2VyIGlkbywgaW50ZWdl
ciBpcCwgaW50ZWdlciBsMSwgaW50ZWdlciBpZGwxLCAKKyAgICAgICAgICAgICAgICAgIGNvbnN0
IHJlYWwgKmNjLCByZWFsICpjMSwgcmVhbCAqYzIsIHJlYWwgKmNoLCByZWFsICpjaDIsIGNvbnN0
IHJlYWwgKndhKQoreworICAvKiBTeXN0ZW0gZ2VuZXJhdGVkIGxvY2FscyAqLworICBpbnRlZ2Vy
IGNoX29mZnNldCwgY2Nfb2Zmc2V0LAorICAgIGMxX29mZnNldCwgYzJfb2Zmc2V0LCBjaDJfb2Zm
c2V0OworCisgIC8qIExvY2FsIHZhcmlhYmxlcyAqLworICBpbnRlZ2VyIGksIGosIGssIGwsIGoy
LCBpYywgamMsIGxjLCBpaywgaXM7CisgIHJlYWwgZGMyLCBhaTEsIGFpMiwgYXIxLCBhcjIsIGRz
MjsKKyAgaW50ZWdlciBuYmQ7CisgIHJlYWwgZGNwLCBhcmcsIGRzcCwgYXIxaCwgYXIyaDsKKyAg
aW50ZWdlciBpZHAyLCBpcHAyLCBpZGlqLCBpcHBoOworCisKKyNkZWZpbmUgYzFfcmVmKGFfMSxh
XzIsYV8zKSBjMVsoKGFfMykqbDEgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjMl9yZWYo
YV8xLGFfMikgYzJbKGFfMikqaWRsMSArIGFfMV0KKyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIsYV8z
KSBjY1soKGFfMykqaXAgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFf
MixhXzMpIGNoWygoYV8zKSpsMSArIChhXzIpKSppZG8gKyBhXzFdCisjZGVmaW5lIGNoMl9yZWYo
YV8xLGFfMikgY2gyWyhhXzIpKmlkbDEgKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1l
bnRzICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zm
c2V0OworICBjMV9vZmZzZXQgPSAxICsgaWRvICogKDEgKyBsMSk7CisgIGMxIC09IGMxX29mZnNl
dDsKKyAgY2Nfb2Zmc2V0ID0gMSArIGlkbyAqICgxICsgaXApOworICBjYyAtPSBjY19vZmZzZXQ7
CisgIGNoMl9vZmZzZXQgPSAxICsgaWRsMTsKKyAgY2gyIC09IGNoMl9vZmZzZXQ7CisgIGMyX29m
ZnNldCA9IDEgKyBpZGwxOworICBjMiAtPSBjMl9vZmZzZXQ7CisgIC0td2E7CisKKyAgLyogRnVu
Y3Rpb24gQm9keSAqLworICBhcmcgPSAoMipNX1BJKSAvIChyZWFsKSAoaXApOworICBkY3AgPSBj
b3MoYXJnKTsKKyAgZHNwID0gc2luKGFyZyk7CisgIGlkcDIgPSBpZG8gKyAyOworICBuYmQgPSAo
aWRvIC0gMSkgLyAyOworICBpcHAyID0gaXAgKyAyOworICBpcHBoID0gKGlwICsgMSkgLyAyOwor
ICBpZiAoaWRvID49IGwxKSB7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAg
ICBmb3IgKGkgPSAxOyBpIDw9IGlkbzsgKytpKSB7CisgICAgICAgIGNoX3JlZihpLCBrLCAxKSA9
IGNjX3JlZihpLCAxLCBrKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgZm9yIChp
ID0gMTsgaSA8PSBpZG87ICsraSkgeworICAgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7
CisgICAgICAgIGNoX3JlZihpLCBrLCAxKSA9IGNjX3JlZihpLCAxLCBrKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKyAgZm9yIChqID0gMjsgaiA8PSBpcHBoOyArK2opIHsKKyAgICBqYyA9IGlwcDIg
LSBqOworICAgIGoyID0gaiArIGo7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7Cisg
ICAgICBjaF9yZWYoMSwgaywgaikgPSBjY19yZWYoaWRvLCBqMiAtIDIsIGspICsgY2NfcmVmKGlk
bywgajIgLSAyLCBrKTsKKyAgICAgIGNoX3JlZigxLCBrLCBqYykgPSBjY19yZWYoMSwgajIgLSAx
LCBrKSArIGNjX3JlZigxLCBqMiAtIDEsIGspOworICAgIH0KKyAgfQorICBpZiAoaWRvICE9IDEp
IHsKKyAgICBpZiAobmJkID49IGwxKSB7CisgICAgICBmb3IgKGogPSAyOyBqIDw9IGlwcGg7ICsr
aikgeworICAgICAgICBqYyA9IGlwcDIgLSBqOworICAgICAgICBmb3IgKGsgPSAxOyBrIDw9IGwx
OyArK2spIHsKKyAgICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAyKSB7CisgICAg
ICAgICAgICBpYyA9IGlkcDIgLSBpOworICAgICAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCBqKSA9
IGNjX3JlZihpIC0gMSwgKGogPDwgMSkgLSAxLCBrKSArIGNjX3JlZihpYyAtIDEsIChqIDw8IDEp
IC0gMiwgayk7CisgICAgICAgICAgICBjaF9yZWYoaSAtIDEsIGssIGpjKSA9IGNjX3JlZihpIC0g
MSwgKGogPDwgMSkgLSAxLCBrKSAtIGNjX3JlZihpYyAtIDEsIChqIDw8IDEpIC0gMiwgayk7Cisg
ICAgICAgICAgICBjaF9yZWYoaSwgaywgaikgPSBjY19yZWYoaSwgKGogPDwgMSkgLSAxLCBrKSAt
IGNjX3JlZihpYywgKGogPDwgMSkgLSAyLCBrKTsKKyAgICAgICAgICAgIGNoX3JlZihpLCBrLCBq
YykgPSBjY19yZWYoaSwgKGogPDwgMSkgLSAxLCBrKSArIGNjX3JlZihpYywgKGogPDwgMSkgLSAy
LCBrKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgZm9yIChqID0gMjsgaiA8PSBpcHBoOyArK2opIHsKKyAgICAgICAgamMgPSBpcHAyIC0gajsK
KyAgICAgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAgICAgIGljID0g
aWRwMiAtIGk7CisgICAgICAgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICAg
ICAgICBjaF9yZWYoaSAtIDEsIGssIGopID0gY2NfcmVmKGkgLSAxLCAoaiA8PCAxKSAtIDEsIGsp
ICsgY2NfcmVmKGljIC0gMSwgKGogPDwgMSkgLSAyLCBrKTsKKyAgICAgICAgICAgIGNoX3JlZihp
IC0gMSwgaywgamMpID0gY2NfcmVmKGkgLSAxLCAoaiA8PCAxKSAtIDEsIGspIC0gY2NfcmVmKGlj
IC0gMSwgKGogPDwgMSkgLSAyLCBrKTsKKyAgICAgICAgICAgIGNoX3JlZihpLCBrLCBqKSA9IGNj
X3JlZihpLCAoaiA8PCAxKSAtIDEsIGspIC0gY2NfcmVmKGljLCAoaiA8PCAxKSAtIDIsIGspOwor
ICAgICAgICAgICAgY2hfcmVmKGksIGssIGpjKSA9IGNjX3JlZihpLCAoaiA8PCAxKSAtIDEsIGsp
ICsgY2NfcmVmKGljLCAoaiA8PCAxKSAtIDIsIGspOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKyAgfQorICBhcjEgPSAxLmY7CisgIGFpMSA9IDAuZjsKKyAgZm9yIChs
ID0gMjsgbCA8PSBpcHBoOyArK2wpIHsKKyAgICBsYyA9IGlwcDIgLSBsOworICAgIGFyMWggPSBk
Y3AgKiBhcjEgLSBkc3AgKiBhaTE7CisgICAgYWkxID0gZGNwICogYWkxICsgZHNwICogYXIxOwor
ICAgIGFyMSA9IGFyMWg7CisgICAgZm9yIChpayA9IDE7IGlrIDw9IGlkbDE7ICsraWspIHsKKyAg
ICAgIGMyX3JlZihpaywgbCkgPSBjaDJfcmVmKGlrLCAxKSArIGFyMSAqIGNoMl9yZWYoaWssIDIp
OworICAgICAgYzJfcmVmKGlrLCBsYykgPSBhaTEgKiBjaDJfcmVmKGlrLCBpcCk7CisgICAgfQor
ICAgIGRjMiA9IGFyMTsKKyAgICBkczIgPSBhaTE7CisgICAgYXIyID0gYXIxOworICAgIGFpMiA9
IGFpMTsKKyAgICBmb3IgKGogPSAzOyBqIDw9IGlwcGg7ICsraikgeworICAgICAgamMgPSBpcHAy
IC0gajsKKyAgICAgIGFyMmggPSBkYzIgKiBhcjIgLSBkczIgKiBhaTI7CisgICAgICBhaTIgPSBk
YzIgKiBhaTIgKyBkczIgKiBhcjI7CisgICAgICBhcjIgPSBhcjJoOworICAgICAgZm9yIChpayA9
IDE7IGlrIDw9IGlkbDE7ICsraWspIHsKKyAgICAgICAgYzJfcmVmKGlrLCBsKSA9IGMyX3JlZihp
aywgbCkgKyBhcjIgKiBjaDJfcmVmKGlrLCBqKTsKKyAgICAgICAgYzJfcmVmKGlrLCBsYykgPSBj
Ml9yZWYoaWssIGxjKSArIGFpMiAqIGNoMl9yZWYoaWssIGpjKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KKyAgZm9yIChqID0gMjsgaiA8PSBpcHBoOyArK2opIHsKKyAgICBmb3IgKGlrID0gMTsgaWsg
PD0gaWRsMTsgKytpaykgeworICAgICAgY2gyX3JlZihpaywgMSkgPSBjaDJfcmVmKGlrLCAxKSAr
IGNoMl9yZWYoaWssIGopOworICAgIH0KKyAgfQorICBmb3IgKGogPSAyOyBqIDw9IGlwcGg7ICsr
aikgeworICAgIGpjID0gaXBwMiAtIGo7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7
CisgICAgICBjaF9yZWYoMSwgaywgaikgPSBjMV9yZWYoMSwgaywgaikgLSBjMV9yZWYoMSwgaywg
amMpOworICAgICAgY2hfcmVmKDEsIGssIGpjKSA9IGMxX3JlZigxLCBrLCBqKSArIGMxX3JlZigx
LCBrLCBqYyk7CisgICAgfQorICB9CisgIGlmIChpZG8gIT0gMSkgeworICAgIGlmIChuYmQgPj0g
bDEpIHsKKyAgICAgIGZvciAoaiA9IDI7IGogPD0gaXBwaDsgKytqKSB7CisgICAgICAgIGpjID0g
aXBwMiAtIGo7CisgICAgICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgICAgICAg
IGZvciAoaSA9IDM7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgICAgIGNoX3JlZihpIC0g
MSwgaywgaikgPSBjMV9yZWYoaSAtIDEsIGssIGopIC0gYzFfcmVmKGksIGssIGpjKTsKKyAgICAg
ICAgICAgIGNoX3JlZihpIC0gMSwgaywgamMpID0gYzFfcmVmKGkgLSAxLCBrLCBqKSArIGMxX3Jl
ZihpLCBrLCBqYyk7CisgICAgICAgICAgICBjaF9yZWYoaSwgaywgaikgPSBjMV9yZWYoaSwgaywg
aikgKyBjMV9yZWYoaSAtIDEsIGssIGpjKTsKKyAgICAgICAgICAgIGNoX3JlZihpLCBrLCBqYykg
PSBjMV9yZWYoaSwgaywgaikgLSBjMV9yZWYoaSAtIDEsIGssIGpjKTsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZm9yIChqID0gMjsgaiA8PSBp
cHBoOyArK2opIHsKKyAgICAgICAgamMgPSBpcHAyIC0gajsKKyAgICAgICAgZm9yIChpID0gMzsg
aSA8PSBpZG87IGkgKz0gMikgeworICAgICAgICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykg
eworICAgICAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCBqKSA9IGMxX3JlZihpIC0gMSwgaywgaikg
LSBjMV9yZWYoaSwgaywgamMpOworICAgICAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCBqYykgPSBj
MV9yZWYoaSAtIDEsIGssIGopICsgYzFfcmVmKGksIGssIGpjKTsKKyAgICAgICAgICAgIGNoX3Jl
ZihpLCBrLCBqKSA9IGMxX3JlZihpLCBrLCBqKSArIGMxX3JlZihpIC0gMSwgaywgamMpOworICAg
ICAgICAgICAgY2hfcmVmKGksIGssIGpjKSA9IGMxX3JlZihpLCBrLCBqKSAtIGMxX3JlZihpIC0g
MSwgaywgamMpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQor
ICBpZiAoaWRvID09IDEpIHsKKyAgICByZXR1cm47CisgIH0KKyAgZm9yIChpayA9IDE7IGlrIDw9
IGlkbDE7ICsraWspIHsKKyAgICBjMl9yZWYoaWssIDEpID0gY2gyX3JlZihpaywgMSk7CisgIH0K
KyAgZm9yIChqID0gMjsgaiA8PSBpcDsgKytqKSB7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsg
KytrKSB7CisgICAgICBjMV9yZWYoMSwgaywgaikgPSBjaF9yZWYoMSwgaywgaik7CisgICAgfQor
ICB9CisgIGlmIChuYmQgPD0gbDEpIHsKKyAgICBpcyA9IC0oaWRvKTsKKyAgICBmb3IgKGogPSAy
OyBqIDw9IGlwOyArK2opIHsKKyAgICAgIGlzICs9IGlkbzsKKyAgICAgIGlkaWogPSBpczsKKyAg
ICAgIGZvciAoaSA9IDM7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgaWRpaiArPSAyOwor
ICAgICAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgICAgICBjMV9yZWYoaSAt
IDEsIGssIGopID0gd2FbaWRpaiAtIDFdICogY2hfcmVmKGkgLSAxLCBrLCBqKSAKKyAgICAgICAg
ICAgIC0gd2FbaWRpal0gKiBjaF9yZWYoaSwgaywgaik7CisgICAgICAgICAgYzFfcmVmKGksIGss
IGopID0gd2FbaWRpaiAtIDFdICogY2hfcmVmKGksIGssIGopICsgd2FbaWRpal0gKiBjaF9yZWYo
aSAtIDEsIGssIGopOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9IGVsc2UgeworICAg
IGlzID0gLShpZG8pOworICAgIGZvciAoaiA9IDI7IGogPD0gaXA7ICsraikgeworICAgICAgaXMg
Kz0gaWRvOworICAgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICAgIGlkaWog
PSBpczsKKyAgICAgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAgICAg
IGlkaWogKz0gMjsKKyAgICAgICAgICBjMV9yZWYoaSAtIDEsIGssIGopID0gd2FbaWRpaiAtIDFd
ICogY2hfcmVmKGkgLSAxLCBrLCBqKSAKKyAgICAgICAgICAgIC0gd2FbaWRpal0gKiBjaF9yZWYo
aSwgaywgaik7CisgICAgICAgICAgYzFfcmVmKGksIGssIGopID0gd2FbaWRpaiAtIDFdICogY2hf
cmVmKGksIGssIGopICsgd2FbaWRpal0gKiBjaF9yZWYoaSAtIDEsIGssIGopOworICAgICAgICB9
CisgICAgICB9CisgICAgfQorICB9Cit9IC8qIHJhZGJnICovCisKKyN1bmRlZiBjaDJfcmVmCisj
dW5kZWYgY2hfcmVmCisjdW5kZWYgY2NfcmVmCisjdW5kZWYgYzJfcmVmCisjdW5kZWYgYzFfcmVm
CisKKworc3RhdGljIHZvaWQgcmFkZjIoaW50ZWdlciBpZG8sIGludGVnZXIgbDEsIGNvbnN0IHJl
YWwgKmNjLCByZWFsICpjaCwgCisgICAgICAgICAgICAgICAgICBjb25zdCByZWFsICp3YTEpCit7
CisgIC8qIFN5c3RlbSBnZW5lcmF0ZWQgbG9jYWxzICovCisgIGludGVnZXIgY2hfb2Zmc2V0LCBj
Y19vZmZzZXQ7CisKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisgIGludGVnZXIgaSwgaywgaWM7
CisgIHJlYWwgdGkyLCB0cjI7CisgIGludGVnZXIgaWRwMjsKKworCisjZGVmaW5lIGNjX3JlZihh
XzEsYV8yLGFfMykgY2NbKChhXzMpKmwxICsgKGFfMikpKmlkbyArIGFfMV0KKyNkZWZpbmUgY2hf
cmVmKGFfMSxhXzIsYV8zKSBjaFsoKGFfMykqMiArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyog
UGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiAzOworICBj
aCAtPSBjaF9vZmZzZXQ7CisgIGNjX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2Mg
LT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIGZvciAo
ayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgIGNoX3JlZigxLCAxLCBrKSA9IGNjX3JlZigxLCBr
LCAxKSArIGNjX3JlZigxLCBrLCAyKTsKKyAgICBjaF9yZWYoaWRvLCAyLCBrKSA9IGNjX3JlZigx
LCBrLCAxKSAtIGNjX3JlZigxLCBrLCAyKTsKKyAgfQorICBpZiAoaWRvIDwgMikgcmV0dXJuOwor
ICBpZiAoaWRvICE9IDIpIHsKKyAgICBpZHAyID0gaWRvICsgMjsKKyAgICBmb3IgKGsgPSAxOyBr
IDw9IGwxOyArK2spIHsKKyAgICAgIGZvciAoaSA9IDM7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAg
ICAgICAgaWMgPSBpZHAyIC0gaTsKKyAgICAgICAgdHIyID0gd2ExW2kgLSAyXSAqIGNjX3JlZihp
IC0gMSwgaywgMikgKyB3YTFbaSAtIDFdICogCisgICAgICAgICAgY2NfcmVmKGksIGssIDIpOwor
ICAgICAgICB0aTIgPSB3YTFbaSAtIDJdICogY2NfcmVmKGksIGssIDIpIC0gd2ExW2kgLSAxXSAq
IGNjX3JlZigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaSAtIDEsIGssIDIpOworICAgICAgICBjaF9yZWYoaSwgMSwgaykg
PSBjY19yZWYoaSwgaywgMSkgKyB0aTI7CisgICAgICAgIGNoX3JlZihpYywgMiwgaykgPSB0aTIg
LSBjY19yZWYoaSwgaywgMSk7CisgICAgICAgIGNoX3JlZihpIC0gMSwgMSwgaykgPSBjY19yZWYo
aSAtIDEsIGssIDEpICsgdHIyOworICAgICAgICBjaF9yZWYoaWMgLSAxLCAyLCBrKSA9IGNjX3Jl
ZihpIC0gMSwgaywgMSkgLSB0cjI7CisgICAgICB9CisgICAgfQorICAgIGlmIChpZG8gJSAyID09
IDEpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKyAgZm9yIChrID0gMTsgayA8PSBsMTsg
KytrKSB7CisgICAgY2hfcmVmKDEsIDIsIGspID0gLWNjX3JlZihpZG8sIGssIDIpOworICAgIGNo
X3JlZihpZG8sIDEsIGspID0gY2NfcmVmKGlkbywgaywgMSk7CisgIH0KK30gLyogcmFkZjIgKi8K
KworI3VuZGVmIGNoX3JlZgorI3VuZGVmIGNjX3JlZgorCisKK3N0YXRpYyB2b2lkIHJhZGYzKGlu
dGVnZXIgaWRvLCBpbnRlZ2VyIGwxLCBjb25zdCByZWFsICpjYywgcmVhbCAqY2gsIAorICAgICAg
ICAgICAgICAgICAgY29uc3QgcmVhbCAqd2ExLCBjb25zdCByZWFsICp3YTIpCit7CisgIHN0YXRp
YyBjb25zdCByZWFsIHRhdXIgPSAtLjVmOworICBzdGF0aWMgY29uc3QgcmVhbCB0YXVpID0gLjg2
NjAyNTQwMzc4NDQzOWY7CisKKyAgLyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50
ZWdlciBjaF9vZmZzZXQsIGNjX29mZnNldDsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAg
aW50ZWdlciBpLCBrLCBpYzsKKyAgcmVhbCBjaTIsIGRpMiwgZGkzLCBjcjIsIGRyMiwgZHIzLCB0
aTIsIHRpMywgdHIyLCB0cjM7CisgIGludGVnZXIgaWRwMjsKKworCisjZGVmaW5lIGNjX3JlZihh
XzEsYV8yLGFfMykgY2NbKChhXzMpKmwxICsgKGFfMikpKmlkbyArIGFfMV0KKyNkZWZpbmUgY2hf
cmVmKGFfMSxhXzIsYV8zKSBjaFsoKGFfMykqMyArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyog
UGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNldCA9IDEgKyAoaWRvIDw8IDIpOwor
ICBjaCAtPSBjaF9vZmZzZXQ7CisgIGNjX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAg
Y2MgLT0gY2Nfb2Zmc2V0OworICAtLXdhMTsKKyAgLS13YTI7CisKKyAgLyogRnVuY3Rpb24gQm9k
eSAqLworICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICBjcjIgPSBjY19yZWYoMSwg
aywgMikgKyBjY19yZWYoMSwgaywgMyk7CisgICAgY2hfcmVmKDEsIDEsIGspID0gY2NfcmVmKDEs
IGssIDEpICsgY3IyOworICAgIGNoX3JlZigxLCAzLCBrKSA9IHRhdWkgKiAoY2NfcmVmKDEsIGss
IDMpIC0gY2NfcmVmKDEsIGssIDIpKTsKKyAgICBjaF9yZWYoaWRvLCAyLCBrKSA9IGNjX3JlZigx
LCBrLCAxKSArIHRhdXIgKiBjcjI7CisgIH0KKyAgaWYgKGlkbyA9PSAxKSB7CisgICAgcmV0dXJu
OworICB9CisgIGlkcDIgPSBpZG8gKyAyOworICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsK
KyAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAyKSB7CisgICAgICBpYyA9IGlkcDIgLSBp
OworICAgICAgZHIyID0gd2ExW2kgLSAyXSAqIGNjX3JlZihpIC0gMSwgaywgMikgKyB3YTFbaSAt
IDFdICogCisgICAgICAgIGNjX3JlZihpLCBrLCAyKTsKKyAgICAgIGRpMiA9IHdhMVtpIC0gMl0g
KiBjY19yZWYoaSwgaywgMikgLSB3YTFbaSAtIDFdICogY2NfcmVmKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtIDEsIGss
IDIpOworICAgICAgZHIzID0gd2EyW2kgLSAyXSAqIGNjX3JlZihpIC0gMSwgaywgMykgKyB3YTJb
aSAtIDFdICogCisgICAgICAgIGNjX3JlZihpLCBrLCAzKTsKKyAgICAgIGRpMyA9IHdhMltpIC0g
Ml0gKiBjY19yZWYoaSwgaywgMykgLSB3YTJbaSAtIDFdICogY2NfcmVmKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtIDEs
IGssIDMpOworICAgICAgY3IyID0gZHIyICsgZHIzOworICAgICAgY2kyID0gZGkyICsgZGkzOwor
ICAgICAgY2hfcmVmKGkgLSAxLCAxLCBrKSA9IGNjX3JlZihpIC0gMSwgaywgMSkgKyBjcjI7Cisg
ICAgICBjaF9yZWYoaSwgMSwgaykgPSBjY19yZWYoaSwgaywgMSkgKyBjaTI7CisgICAgICB0cjIg
PSBjY19yZWYoaSAtIDEsIGssIDEpICsgdGF1ciAqIGNyMjsKKyAgICAgIHRpMiA9IGNjX3JlZihp
LCBrLCAxKSArIHRhdXIgKiBjaTI7CisgICAgICB0cjMgPSB0YXVpICogKGRpMiAtIGRpMyk7Cisg
ICAgICB0aTMgPSB0YXVpICogKGRyMyAtIGRyMik7CisgICAgICBjaF9yZWYoaSAtIDEsIDMsIGsp
ID0gdHIyICsgdHIzOworICAgICAgY2hfcmVmKGljIC0gMSwgMiwgaykgPSB0cjIgLSB0cjM7Cisg
ICAgICBjaF9yZWYoaSwgMywgaykgPSB0aTIgKyB0aTM7CisgICAgICBjaF9yZWYoaWMsIDIsIGsp
ID0gdGkzIC0gdGkyOworICAgIH0KKyAgfQorfSAvKiByYWRmMyAqLworCisjdW5kZWYgY2hfcmVm
CisjdW5kZWYgY2NfcmVmCisKKworc3RhdGljIHZvaWQgcmFkZjQoaW50ZWdlciBpZG8sIGludGVn
ZXIgbDEsIGNvbnN0IHJlYWwgKmNjLCByZWFsICpjaCwgCisgICAgICAgICAgICAgICAgICBjb25z
dCByZWFsICp3YTEsIGNvbnN0IHJlYWwgKndhMiwgY29uc3QgcmVhbCAqd2EzKQoreworICAvKiBJ
bml0aWFsaXplZCBkYXRhICovCisKKyAgc3RhdGljIGNvbnN0IHJlYWwgaHNxdDIgPSAuNzA3MTA2
NzgxMTg2NTQ3NWY7CisKKyAgLyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50ZWdl
ciBjY19vZmZzZXQsIGNoX29mZnNldDsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50
ZWdlciBpLCBrLCBpYzsKKyAgcmVhbCBjaTIsIGNpMywgY2k0LCBjcjIsIGNyMywgY3I0LCB0aTEs
IHRpMiwgdGkzLCB0aTQsIHRyMSwgdHIyLCB0cjMsIHRyNDsKKyAgaW50ZWdlciBpZHAyOworCisK
KyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIsYV8zKSBjY1soKGFfMykqbDEgKyAoYV8yKSkqaWRvICsg
YV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSo0ICsgKGFfMikpKmlk
byArIGFfMV0KKworICAvKiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAgY2hfb2Zmc2V0ID0g
MSArIGlkbyAqIDU7CisgIGNoIC09IGNoX29mZnNldDsKKyAgY2Nfb2Zmc2V0ID0gMSArIGlkbyAq
ICgxICsgbDEpOworICBjYyAtPSBjY19vZmZzZXQ7CisgIC0td2ExOworICAtLXdhMjsKKyAgLS13
YTM7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2sp
IHsKKyAgICB0cjEgPSBjY19yZWYoMSwgaywgMikgKyBjY19yZWYoMSwgaywgNCk7CisgICAgdHIy
ID0gY2NfcmVmKDEsIGssIDEpICsgY2NfcmVmKDEsIGssIDMpOworICAgIGNoX3JlZigxLCAxLCBr
KSA9IHRyMSArIHRyMjsKKyAgICBjaF9yZWYoaWRvLCA0LCBrKSA9IHRyMiAtIHRyMTsKKyAgICBj
aF9yZWYoaWRvLCAyLCBrKSA9IGNjX3JlZigxLCBrLCAxKSAtIGNjX3JlZigxLCBrLCAzKTsKKyAg
ICBjaF9yZWYoMSwgMywgaykgPSBjY19yZWYoMSwgaywgNCkgLSBjY19yZWYoMSwgaywgMik7Cisg
IH0gIAorICBpZiAoaWRvIDwgMikgcmV0dXJuOworICBpZiAoaWRvICE9IDIpIHsKKyAgICBpZHAy
ID0gaWRvICsgMjsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICAgIGZvciAo
aSA9IDM7IGkgPD0gaWRvOyBpICs9IDIpIHsKKyAgICAgICAgaWMgPSBpZHAyIC0gaTsKKyAgICAg
ICAgY3IyID0gd2ExW2kgLSAyXSAqIGNjX3JlZihpIC0gMSwgaywgMikgKyB3YTFbaSAtIDFdICog
CisgICAgICAgICAgY2NfcmVmKGksIGssIDIpOworICAgICAgICBjaTIgPSB3YTFbaSAtIDJdICog
Y2NfcmVmKGksIGssIDIpIC0gd2ExW2kgLSAxXSAqIGNjX3JlZigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtIDEsIGss
IDIpOworICAgICAgICBjcjMgPSB3YTJbaSAtIDJdICogY2NfcmVmKGkgLSAxLCBrLCAzKSArIHdh
MltpIC0gMV0gKiAKKyAgICAgICAgICBjY19yZWYoaSwgaywgMyk7CisgICAgICAgIGNpMyA9IHdh
MltpIC0gMl0gKiBjY19yZWYoaSwgaywgMykgLSB3YTJbaSAtIDFdICogY2NfcmVmKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpIC0gMSwgaywgMyk7CisgICAgICAgIGNyNCA9IHdhM1tpIC0gMl0gKiBjY19yZWYoaSAtIDEs
IGssIDQpICsgd2EzW2kgLSAxXSAqIAorICAgICAgICAgIGNjX3JlZihpLCBrLCA0KTsKKyAgICAg
ICAgY2k0ID0gd2EzW2kgLSAyXSAqIGNjX3JlZihpLCBrLCA0KSAtIHdhM1tpIC0gMV0gKiBjY19y
ZWYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGkgLSAxLCBrLCA0KTsKKyAgICAgICAgdHIxID0gY3IyICsgY3I0OworICAg
ICAgICB0cjQgPSBjcjQgLSBjcjI7CisgICAgICAgIHRpMSA9IGNpMiArIGNpNDsKKyAgICAgICAg
dGk0ID0gY2kyIC0gY2k0OworICAgICAgICB0aTIgPSBjY19yZWYoaSwgaywgMSkgKyBjaTM7Cisg
ICAgICAgIHRpMyA9IGNjX3JlZihpLCBrLCAxKSAtIGNpMzsKKyAgICAgICAgdHIyID0gY2NfcmVm
KGkgLSAxLCBrLCAxKSArIGNyMzsKKyAgICAgICAgdHIzID0gY2NfcmVmKGkgLSAxLCBrLCAxKSAt
IGNyMzsKKyAgICAgICAgY2hfcmVmKGkgLSAxLCAxLCBrKSA9IHRyMSArIHRyMjsKKyAgICAgICAg
Y2hfcmVmKGljIC0gMSwgNCwgaykgPSB0cjIgLSB0cjE7CisgICAgICAgIGNoX3JlZihpLCAxLCBr
KSA9IHRpMSArIHRpMjsKKyAgICAgICAgY2hfcmVmKGljLCA0LCBrKSA9IHRpMSAtIHRpMjsKKyAg
ICAgICAgY2hfcmVmKGkgLSAxLCAzLCBrKSA9IHRpNCArIHRyMzsKKyAgICAgICAgY2hfcmVmKGlj
IC0gMSwgMiwgaykgPSB0cjMgLSB0aTQ7CisgICAgICAgIGNoX3JlZihpLCAzLCBrKSA9IHRyNCAr
IHRpMzsKKyAgICAgICAgY2hfcmVmKGljLCAyLCBrKSA9IHRyNCAtIHRpMzsKKyAgICAgIH0KKyAg
ICB9CisgICAgaWYgKGlkbyAlIDIgPT0gMSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQor
ICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICB0aTEgPSAtaHNxdDIgKiAoY2NfcmVm
KGlkbywgaywgMikgKyBjY19yZWYoaWRvLCBrLCA0KSk7CisgICAgdHIxID0gaHNxdDIgKiAoY2Nf
cmVmKGlkbywgaywgMikgLSBjY19yZWYoaWRvLCBrLCA0KSk7CisgICAgY2hfcmVmKGlkbywgMSwg
aykgPSB0cjEgKyBjY19yZWYoaWRvLCBrLCAxKTsKKyAgICBjaF9yZWYoaWRvLCAzLCBrKSA9IGNj
X3JlZihpZG8sIGssIDEpIC0gdHIxOworICAgIGNoX3JlZigxLCAyLCBrKSA9IHRpMSAtIGNjX3Jl
ZihpZG8sIGssIDMpOworICAgIGNoX3JlZigxLCA0LCBrKSA9IHRpMSArIGNjX3JlZihpZG8sIGss
IDMpOworICB9Cit9IC8qIHJhZGY0ICovCisKKyN1bmRlZiBjaF9yZWYKKyN1bmRlZiBjY19yZWYK
KworCitzdGF0aWMgdm9pZCByYWRmNShpbnRlZ2VyIGlkbywgaW50ZWdlciBsMSwgY29uc3QgcmVh
bCAqY2MsIHJlYWwgKmNoLCAKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWwgKndhMSwgY29u
c3QgcmVhbCAqd2EyLCBjb25zdCByZWFsICp3YTMsIGNvbnN0IHJlYWwgKndhNCkKK3sKKyAgLyog
SW5pdGlhbGl6ZWQgZGF0YSAqLworCisgIHN0YXRpYyBjb25zdCByZWFsIHRyMTEgPSAuMzA5MDE2
OTk0Mzc0OTQ3ZjsKKyAgc3RhdGljIGNvbnN0IHJlYWwgdGkxMSA9IC45NTEwNTY1MTYyOTUxNTRm
OworICBzdGF0aWMgY29uc3QgcmVhbCB0cjEyID0gLS44MDkwMTY5OTQzNzQ5NDdmOworICBzdGF0
aWMgY29uc3QgcmVhbCB0aTEyID0gLjU4Nzc4NTI1MjI5MjQ3M2Y7CisKKyAgLyogU3lzdGVtIGdl
bmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50ZWdlciBjY19vZmZzZXQsIGNoX29mZnNldDsKKworICAv
KiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBpLCBrLCBpYzsKKyAgcmVhbCBjaTIsIGRp
MiwgY2k0LCBjaTUsIGRpMywgZGk0LCBkaTUsIGNpMywgY3IyLCBjcjMsIGRyMiwgZHIzLCBkcjQs
IGRyNSwKKyAgICBjcjUsIGNyNCwgdGkyLCB0aTMsIHRpNSwgdGk0LCB0cjIsIHRyMywgdHI0LCB0
cjU7CisgIGludGVnZXIgaWRwMjsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2Nb
KChhXzMpKmwxICsgKGFfMikpKmlkbyArIGFfMV0KKyNkZWZpbmUgY2hfcmVmKGFfMSxhXzIsYV8z
KSBjaFsoKGFfMykqNSArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVz
dG1lbnRzICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiA2OworICBjaCAtPSBjaF9vZmZzZXQ7
CisgIGNjX29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2MgLT0gY2Nfb2Zmc2V0Owor
ICAtLXdhMTsKKyAgLS13YTI7CisgIC0td2EzOworICAtLXdhNDsKKworICAvKiBGdW5jdGlvbiBC
b2R5ICovCisgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAgIGNyMiA9IGNjX3JlZigx
LCBrLCA1KSArIGNjX3JlZigxLCBrLCAyKTsKKyAgICBjaTUgPSBjY19yZWYoMSwgaywgNSkgLSBj
Y19yZWYoMSwgaywgMik7CisgICAgY3IzID0gY2NfcmVmKDEsIGssIDQpICsgY2NfcmVmKDEsIGss
IDMpOworICAgIGNpNCA9IGNjX3JlZigxLCBrLCA0KSAtIGNjX3JlZigxLCBrLCAzKTsKKyAgICBj
aF9yZWYoMSwgMSwgaykgPSBjY19yZWYoMSwgaywgMSkgKyBjcjIgKyBjcjM7CisgICAgY2hfcmVm
KGlkbywgMiwgaykgPSBjY19yZWYoMSwgaywgMSkgKyB0cjExICogY3IyICsgdHIxMiAqIGNyMzsK
KyAgICBjaF9yZWYoMSwgMywgaykgPSB0aTExICogY2k1ICsgdGkxMiAqIGNpNDsKKyAgICBjaF9y
ZWYoaWRvLCA0LCBrKSA9IGNjX3JlZigxLCBrLCAxKSArIHRyMTIgKiBjcjIgKyB0cjExICogY3Iz
OworICAgIGNoX3JlZigxLCA1LCBrKSA9IHRpMTIgKiBjaTUgLSB0aTExICogY2k0OworICB9Cisg
IGlmIChpZG8gPT0gMSkgeworICAgIHJldHVybjsKKyAgfQorICBpZHAyID0gaWRvICsgMjsKKyAg
Zm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkg
Kz0gMikgeworICAgICAgaWMgPSBpZHAyIC0gaTsKKyAgICAgIGRyMiA9IHdhMVtpIC0gMl0gKiBj
Y19yZWYoaSAtIDEsIGssIDIpICsgd2ExW2kgLSAxXSAqIGNjX3JlZihpLCBrLCAyKTsKKyAgICAg
IGRpMiA9IHdhMVtpIC0gMl0gKiBjY19yZWYoaSwgaywgMikgLSB3YTFbaSAtIDFdICogY2NfcmVm
KGkgLSAxLCBrLCAyKTsKKyAgICAgIGRyMyA9IHdhMltpIC0gMl0gKiBjY19yZWYoaSAtIDEsIGss
IDMpICsgd2EyW2kgLSAxXSAqIGNjX3JlZihpLCBrLCAzKTsKKyAgICAgIGRpMyA9IHdhMltpIC0g
Ml0gKiBjY19yZWYoaSwgaywgMykgLSB3YTJbaSAtIDFdICogY2NfcmVmKGkgLSAxLCBrLCAzKTsK
KyAgICAgIGRyNCA9IHdhM1tpIC0gMl0gKiBjY19yZWYoaSAtIDEsIGssIDQpICsgd2EzW2kgLSAx
XSAqIGNjX3JlZihpLCBrLCA0KTsKKyAgICAgIGRpNCA9IHdhM1tpIC0gMl0gKiBjY19yZWYoaSwg
aywgNCkgLSB3YTNbaSAtIDFdICogY2NfcmVmKGkgLSAxLCBrLCA0KTsKKyAgICAgIGRyNSA9IHdh
NFtpIC0gMl0gKiBjY19yZWYoaSAtIDEsIGssIDUpICsgd2E0W2kgLSAxXSAqIGNjX3JlZihpLCBr
LCA1KTsKKyAgICAgIGRpNSA9IHdhNFtpIC0gMl0gKiBjY19yZWYoaSwgaywgNSkgLSB3YTRbaSAt
IDFdICogY2NfcmVmKGkgLSAxLCBrLCA1KTsKKyAgICAgIGNyMiA9IGRyMiArIGRyNTsKKyAgICAg
IGNpNSA9IGRyNSAtIGRyMjsKKyAgICAgIGNyNSA9IGRpMiAtIGRpNTsKKyAgICAgIGNpMiA9IGRp
MiArIGRpNTsKKyAgICAgIGNyMyA9IGRyMyArIGRyNDsKKyAgICAgIGNpNCA9IGRyNCAtIGRyMzsK
KyAgICAgIGNyNCA9IGRpMyAtIGRpNDsKKyAgICAgIGNpMyA9IGRpMyArIGRpNDsKKyAgICAgIGNo
X3JlZihpIC0gMSwgMSwgaykgPSBjY19yZWYoaSAtIDEsIGssIDEpICsgY3IyICsgY3IzOworICAg
ICAgY2hfcmVmKGksIDEsIGspID0gY2NfcmVmKGksIGssIDEpICsgY2kyICsgY2kzOworICAgICAg
dHIyID0gY2NfcmVmKGkgLSAxLCBrLCAxKSArIHRyMTEgKiBjcjIgKyB0cjEyICogY3IzOworICAg
ICAgdGkyID0gY2NfcmVmKGksIGssIDEpICsgdHIxMSAqIGNpMiArIHRyMTIgKiBjaTM7CisgICAg
ICB0cjMgPSBjY19yZWYoaSAtIDEsIGssIDEpICsgdHIxMiAqIGNyMiArIHRyMTEgKiBjcjM7Cisg
ICAgICB0aTMgPSBjY19yZWYoaSwgaywgMSkgKyB0cjEyICogY2kyICsgdHIxMSAqIGNpMzsKKyAg
ICAgIHRyNSA9IHRpMTEgKiBjcjUgKyB0aTEyICogY3I0OworICAgICAgdGk1ID0gdGkxMSAqIGNp
NSArIHRpMTIgKiBjaTQ7CisgICAgICB0cjQgPSB0aTEyICogY3I1IC0gdGkxMSAqIGNyNDsKKyAg
ICAgIHRpNCA9IHRpMTIgKiBjaTUgLSB0aTExICogY2k0OworICAgICAgY2hfcmVmKGkgLSAxLCAz
LCBrKSA9IHRyMiArIHRyNTsKKyAgICAgIGNoX3JlZihpYyAtIDEsIDIsIGspID0gdHIyIC0gdHI1
OworICAgICAgY2hfcmVmKGksIDMsIGspID0gdGkyICsgdGk1OworICAgICAgY2hfcmVmKGljLCAy
LCBrKSA9IHRpNSAtIHRpMjsKKyAgICAgIGNoX3JlZihpIC0gMSwgNSwgaykgPSB0cjMgKyB0cjQ7
CisgICAgICBjaF9yZWYoaWMgLSAxLCA0LCBrKSA9IHRyMyAtIHRyNDsKKyAgICAgIGNoX3JlZihp
LCA1LCBrKSA9IHRpMyArIHRpNDsKKyAgICAgIGNoX3JlZihpYywgNCwgaykgPSB0aTQgLSB0aTM7
CisgICAgfQorICB9Cit9IC8qIHJhZGY1ICovCisKKyN1bmRlZiBjaF9yZWYKKyN1bmRlZiBjY19y
ZWYKKworCitzdGF0aWMgdm9pZCByYWRmZyhpbnRlZ2VyIGlkbywgaW50ZWdlciBpcCwgaW50ZWdl
ciBsMSwgaW50ZWdlciBpZGwxLCAKKyAgICAgICAgICAgICAgICAgIHJlYWwgKmNjLCByZWFsICpj
MSwgcmVhbCAqYzIsIHJlYWwgKmNoLCByZWFsICpjaDIsIGNvbnN0IHJlYWwgKndhKQoreworICAv
KiBTeXN0ZW0gZ2VuZXJhdGVkIGxvY2FscyAqLworICBpbnRlZ2VyIGNoX29mZnNldCwgY2Nfb2Zm
c2V0LAorICAgIGMxX29mZnNldCwgYzJfb2Zmc2V0LCBjaDJfb2Zmc2V0OworCisgIC8qIExvY2Fs
IHZhcmlhYmxlcyAqLworICBpbnRlZ2VyIGksIGosIGssIGwsIGoyLCBpYywgamMsIGxjLCBpaywg
aXM7CisgIHJlYWwgZGMyLCBhaTEsIGFpMiwgYXIxLCBhcjIsIGRzMjsKKyAgaW50ZWdlciBuYmQ7
CisgIHJlYWwgZGNwLCBhcmcsIGRzcCwgYXIxaCwgYXIyaDsKKyAgaW50ZWdlciBpZHAyLCBpcHAy
LCBpZGlqLCBpcHBoOworCisKKyNkZWZpbmUgYzFfcmVmKGFfMSxhXzIsYV8zKSBjMVsoKGFfMykq
bDEgKyAoYV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjMl9yZWYoYV8xLGFfMikgYzJbKGFfMikq
aWRsMSArIGFfMV0KKyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIsYV8zKSBjY1soKGFfMykqaXAgKyAo
YV8yKSkqaWRvICsgYV8xXQorI2RlZmluZSBjaF9yZWYoYV8xLGFfMixhXzMpIGNoWygoYV8zKSps
MSArIChhXzIpKSppZG8gKyBhXzFdCisjZGVmaW5lIGNoMl9yZWYoYV8xLGFfMikgY2gyWyhhXzIp
KmlkbDEgKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIGNoX29mZnNl
dCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2ggLT0gY2hfb2Zmc2V0OworICBjMV9vZmZzZXQg
PSAxICsgaWRvICogKDEgKyBsMSk7CisgIGMxIC09IGMxX29mZnNldDsKKyAgY2Nfb2Zmc2V0ID0g
MSArIGlkbyAqICgxICsgaXApOworICBjYyAtPSBjY19vZmZzZXQ7CisgIGNoMl9vZmZzZXQgPSAx
ICsgaWRsMTsKKyAgY2gyIC09IGNoMl9vZmZzZXQ7CisgIGMyX29mZnNldCA9IDEgKyBpZGwxOwor
ICBjMiAtPSBjMl9vZmZzZXQ7CisgIC0td2E7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBh
cmcgPSAoMipNX1BJKSAvIChyZWFsKSAoaXApOworICBkY3AgPSBjb3MoYXJnKTsKKyAgZHNwID0g
c2luKGFyZyk7CisgIGlwcGggPSAoaXAgKyAxKSAvIDI7CisgIGlwcDIgPSBpcCArIDI7CisgIGlk
cDIgPSBpZG8gKyAyOworICBuYmQgPSAoaWRvIC0gMSkgLyAyOworICBpZiAoaWRvID09IDEpIHsK
KyAgICBmb3IgKGlrID0gMTsgaWsgPD0gaWRsMTsgKytpaykgeworICAgICAgYzJfcmVmKGlrLCAx
KSA9IGNoMl9yZWYoaWssIDEpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBmb3IgKGlrID0gMTsg
aWsgPD0gaWRsMTsgKytpaykgeworICAgICAgY2gyX3JlZihpaywgMSkgPSBjMl9yZWYoaWssIDEp
OworICAgIH0KKyAgICBmb3IgKGogPSAyOyBqIDw9IGlwOyArK2opIHsKKyAgICAgIGZvciAoayA9
IDE7IGsgPD0gbDE7ICsraykgeworICAgICAgICBjaF9yZWYoMSwgaywgaikgPSBjMV9yZWYoMSwg
aywgaik7CisgICAgICB9CisgICAgfQorICAgIGlmIChuYmQgPD0gbDEpIHsKKyAgICAgIGlzID0g
LShpZG8pOworICAgICAgZm9yIChqID0gMjsgaiA8PSBpcDsgKytqKSB7CisgICAgICAgIGlzICs9
IGlkbzsKKyAgICAgICAgaWRpaiA9IGlzOworICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsg
aSArPSAyKSB7CisgICAgICAgICAgaWRpaiArPSAyOworICAgICAgICAgIGZvciAoayA9IDE7IGsg
PD0gbDE7ICsraykgeworICAgICAgICAgICAgY2hfcmVmKGkgLSAxLCBrLCBqKSA9IHdhW2lkaWog
LSAxXSAqIGMxX3JlZihpIC0gMSwgaywgaikKKyAgICAgICAgICAgICAgKyB3YVtpZGlqXSAqIGMx
X3JlZihpLCBrLCBqKTsKKyAgICAgICAgICAgIGNoX3JlZihpLCBrLCBqKSA9IHdhW2lkaWogLSAx
XSAqIGMxX3JlZihpLCBrLCBqKSAtIHdhWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRpal0gKiBjMV9yZWYoaSAtIDEs
IGssIGopOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICBpcyA9IC0oaWRvKTsKKyAgICAgIGZvciAoaiA9IDI7IGogPD0gaXA7ICsraikgeworICAg
ICAgICBpcyArPSBpZG87CisgICAgICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgeworICAg
ICAgICAgIGlkaWogPSBpczsKKyAgICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAy
KSB7CisgICAgICAgICAgICBpZGlqICs9IDI7CisgICAgICAgICAgICBjaF9yZWYoaSAtIDEsIGss
IGopID0gd2FbaWRpaiAtIDFdICogYzFfcmVmKGkgLSAxLCBrLCBqKSAKKyAgICAgICAgICAgICAg
KyB3YVtpZGlqXSAqIGMxX3JlZihpLCBrLCBqKTsKKyAgICAgICAgICAgIGNoX3JlZihpLCBrLCBq
KSA9IHdhW2lkaWogLSAxXSAqIGMxX3JlZihpLCBrLCBqKSAtIHdhWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRpal0g
KiBjMV9yZWYoaSAtIDEsIGssIGopOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0KKyAgICBpZiAobmJkID49IGwxKSB7CisgICAgICBmb3IgKGogPSAyOyBqIDw9IGlwcGg7
ICsraikgeworICAgICAgICBqYyA9IGlwcDIgLSBqOworICAgICAgICBmb3IgKGsgPSAxOyBrIDw9
IGwxOyArK2spIHsKKyAgICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAyKSB7Cisg
ICAgICAgICAgICBjMV9yZWYoaSAtIDEsIGssIGopID0gY2hfcmVmKGkgLSAxLCBrLCBqKSArIGNo
X3JlZihpIC0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLCBrLCBqYyk7CisgICAgICAgICAgICBjMV9yZWYoaSAtIDEsIGss
IGpjKSA9IGNoX3JlZihpLCBrLCBqKSAtIGNoX3JlZihpLCBrLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjKTsKKyAgICAgICAg
ICAgIGMxX3JlZihpLCBrLCBqKSA9IGNoX3JlZihpLCBrLCBqKSArIGNoX3JlZihpLCBrLCBqYyk7
CisgICAgICAgICAgICBjMV9yZWYoaSwgaywgamMpID0gY2hfcmVmKGkgLSAxLCBrLCBqYykgLSBj
aF9yZWYoaSAtIDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGssIGopOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICBmb3IgKGogPSAyOyBqIDw9IGlwcGg7ICsraikgeworICAg
ICAgICBqYyA9IGlwcDIgLSBqOworICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAy
KSB7CisgICAgICAgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICAgICAgICBj
MV9yZWYoaSAtIDEsIGssIGopID0gY2hfcmVmKGkgLSAxLCBrLCBqKSArIGNoX3JlZihpIC0gCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLCBrLCBqYyk7CisgICAgICAgICAgICBjMV9yZWYoaSAtIDEsIGssIGpjKSA9IGNoX3Jl
ZihpLCBrLCBqKSAtIGNoX3JlZihpLCBrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjKTsKKyAgICAgICAgICAgIGMxX3JlZihp
LCBrLCBqKSA9IGNoX3JlZihpLCBrLCBqKSArIGNoX3JlZihpLCBrLCBqYyk7CisgICAgICAgICAg
ICBjMV9yZWYoaSwgaywgamMpID0gY2hfcmVmKGkgLSAxLCBrLCBqYykgLSBjaF9yZWYoaSAtIDEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGssIGopOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAg
fQorICBmb3IgKGogPSAyOyBqIDw9IGlwcGg7ICsraikgeworICAgIGpjID0gaXBwMiAtIGo7Cisg
ICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgICBjMV9yZWYoMSwgaywgaikgPSBj
aF9yZWYoMSwgaywgaikgKyBjaF9yZWYoMSwgaywgamMpOworICAgICAgYzFfcmVmKDEsIGssIGpj
KSA9IGNoX3JlZigxLCBrLCBqYykgLSBjaF9yZWYoMSwgaywgaik7CisgICAgfQorICB9CisKKyAg
YXIxID0gMS5mOworICBhaTEgPSAwLmY7CisgIGZvciAobCA9IDI7IGwgPD0gaXBwaDsgKytsKSB7
CisgICAgbGMgPSBpcHAyIC0gbDsKKyAgICBhcjFoID0gZGNwICogYXIxIC0gZHNwICogYWkxOwor
ICAgIGFpMSA9IGRjcCAqIGFpMSArIGRzcCAqIGFyMTsKKyAgICBhcjEgPSBhcjFoOworICAgIGZv
ciAoaWsgPSAxOyBpayA8PSBpZGwxOyArK2lrKSB7CisgICAgICBjaDJfcmVmKGlrLCBsKSA9IGMy
X3JlZihpaywgMSkgKyBhcjEgKiBjMl9yZWYoaWssIDIpOworICAgICAgY2gyX3JlZihpaywgbGMp
ID0gYWkxICogYzJfcmVmKGlrLCBpcCk7CisgICAgfQorICAgIGRjMiA9IGFyMTsKKyAgICBkczIg
PSBhaTE7CisgICAgYXIyID0gYXIxOworICAgIGFpMiA9IGFpMTsKKyAgICBmb3IgKGogPSAzOyBq
IDw9IGlwcGg7ICsraikgeworICAgICAgamMgPSBpcHAyIC0gajsKKyAgICAgIGFyMmggPSBkYzIg
KiBhcjIgLSBkczIgKiBhaTI7CisgICAgICBhaTIgPSBkYzIgKiBhaTIgKyBkczIgKiBhcjI7Cisg
ICAgICBhcjIgPSBhcjJoOworICAgICAgZm9yIChpayA9IDE7IGlrIDw9IGlkbDE7ICsraWspIHsK
KyAgICAgICAgY2gyX3JlZihpaywgbCkgPSBjaDJfcmVmKGlrLCBsKSArIGFyMiAqIGMyX3JlZihp
aywgaik7CisgICAgICAgIGNoMl9yZWYoaWssIGxjKSA9IGNoMl9yZWYoaWssIGxjKSArIGFpMiAq
IGMyX3JlZihpaywgamMpOworICAgICAgfQorICAgIH0KKyAgfQorICBmb3IgKGogPSAyOyBqIDw9
IGlwcGg7ICsraikgeworICAgIGZvciAoaWsgPSAxOyBpayA8PSBpZGwxOyArK2lrKSB7CisgICAg
ICBjaDJfcmVmKGlrLCAxKSA9IGNoMl9yZWYoaWssIDEpICsgYzJfcmVmKGlrLCBqKTsKKyAgICB9
CisgIH0KKworICBpZiAoaWRvID49IGwxKSB7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsgKytr
KSB7CisgICAgICBmb3IgKGkgPSAxOyBpIDw9IGlkbzsgKytpKSB7CisgICAgICAgIGNjX3JlZihp
LCAxLCBrKSA9IGNoX3JlZihpLCBrLCAxKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgZm9yIChpID0gMTsgaSA8PSBpZG87ICsraSkgeworICAgICAgZm9yIChrID0gMTsgayA8PSBs
MTsgKytrKSB7CisgICAgICAgIGNjX3JlZihpLCAxLCBrKSA9IGNoX3JlZihpLCBrLCAxKTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKyAgZm9yIChqID0gMjsgaiA8PSBpcHBoOyArK2opIHsKKyAgICBq
YyA9IGlwcDIgLSBqOworICAgIGoyID0gaiArIGo7CisgICAgZm9yIChrID0gMTsgayA8PSBsMTsg
KytrKSB7CisgICAgICBjY19yZWYoaWRvLCBqMiAtIDIsIGspID0gY2hfcmVmKDEsIGssIGopOwor
ICAgICAgY2NfcmVmKDEsIGoyIC0gMSwgaykgPSBjaF9yZWYoMSwgaywgamMpOworICAgIH0KKyAg
fQorICBpZiAoaWRvID09IDEpIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKG5iZCA+PSBsMSkg
eworICAgIGZvciAoaiA9IDI7IGogPD0gaXBwaDsgKytqKSB7CisgICAgICBqYyA9IGlwcDIgLSBq
OworICAgICAgajIgPSBqICsgajsKKyAgICAgIGZvciAoayA9IDE7IGsgPD0gbDE7ICsraykgewor
ICAgICAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAyKSB7CisgICAgICAgICAgaWMgPSBp
ZHAyIC0gaTsKKyAgICAgICAgICBjY19yZWYoaSAtIDEsIGoyIC0gMSwgaykgPSBjaF9yZWYoaSAt
IDEsIGssIGopICsgY2hfcmVmKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtIDEsIGssIGpjKTsKKyAgICAgICAgICBj
Y19yZWYoaWMgLSAxLCBqMiAtIDIsIGspID0gY2hfcmVmKGkgLSAxLCBrLCBqKSAtIGNoX3JlZigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpIC0gMSwgaywgamMpOworICAgICAgICAgIGNjX3JlZihpLCBqMiAtIDEsIGsp
ID0gY2hfcmVmKGksIGssIGopICsgY2hfcmVmKGksIGssIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjKTsKKyAgICAgICAgICBjY19y
ZWYoaWMsIGoyIC0gMiwgaykgPSBjaF9yZWYoaSwgaywgamMpIC0gY2hfcmVmKGksIGssIGopCisg
ICAgICAgICAgICA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAg
Zm9yIChqID0gMjsgaiA8PSBpcHBoOyArK2opIHsKKyAgICAgIGpjID0gaXBwMiAtIGo7CisgICAg
ICBqMiA9IGogKyBqOworICAgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkgKz0gMikgeworICAg
ICAgICBpYyA9IGlkcDIgLSBpOworICAgICAgICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsK
KyAgICAgICAgICBjY19yZWYoaSAtIDEsIGoyIC0gMSwgaykgPSBjaF9yZWYoaSAtIDEsIGssIGop
ICsgY2hfcmVmKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaSAtIDEsIGssIGpjKTsKKyAgICAgICAgICBjY19yZWYoaWMg
LSAxLCBqMiAtIDIsIGspID0gY2hfcmVmKGkgLSAxLCBrLCBqKSAtIGNoX3JlZigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpIC0gMSwgaywgamMpOworICAgICAgICAgIGNjX3JlZihpLCBqMiAtIDEsIGspID0gY2hfcmVm
KGksIGssIGopICsgY2hfcmVmKGksIGssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjKTsKKyAgICAgICAgICBjY19yZWYoaWMsIGoy
IC0gMiwgaykgPSBjaF9yZWYoaSwgaywgamMpIC0gY2hfcmVmKGksIGssIGopCisgICAgICAgICAg
ICA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30gLyogcmFkZmcgKi8KKworI3Vu
ZGVmIGNoMl9yZWYKKyN1bmRlZiBjaF9yZWYKKyN1bmRlZiBjY19yZWYKKyN1bmRlZiBjMl9yZWYK
KyN1bmRlZiBjMV9yZWYKKworCitzdGF0aWMgdm9pZCBjZmZ0YjEoaW50ZWdlciBuLCByZWFsICpj
LCByZWFsICpjaCwgY29uc3QgcmVhbCAqd2EsIGludGVnZXIgKmlmYWMpCit7CisgIGludGVnZXIg
aSwgazEsIGwxLCBsMiwgbmEsIG5mLCBpcCwgaXcsIGl4MiwgaXgzLCBpeDQsIG5hYywgaWRvLCAK
KyAgICBpZGwxLCBpZG90OworCisgIC8qIEZ1bmN0aW9uIEJvZHkgKi8KKyAgbmYgPSBpZmFjWzFd
OworICBuYSA9IDA7CisgIGwxID0gMTsKKyAgaXcgPSAwOworICBmb3IgKGsxID0gMTsgazEgPD0g
bmY7ICsrazEpIHsKKyAgICBpcCA9IGlmYWNbazEgKyAxXTsKKyAgICBsMiA9IGlwICogbDE7Cisg
ICAgaWRvID0gbiAvIGwyOworICAgIGlkb3QgPSBpZG8gKyBpZG87CisgICAgaWRsMSA9IGlkb3Qg
KiBsMTsKKyAgICBzd2l0Y2ggKGlwKSB7CisgICAgICBjYXNlIDQ6CisgICAgICAgIGl4MiA9IGl3
ICsgaWRvdDsKKyAgICAgICAgaXgzID0gaXgyICsgaWRvdDsKKyAgICAgICAgcGFzc2I0KGlkb3Qs
IGwxLCBuYT9jaDpjLCBuYT9jOmNoLCAmd2FbaXddLCAmd2FbaXgyXSwgJndhW2l4M10pOworICAg
ICAgICBuYSA9IDEgLSBuYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAg
IHBhc3NiMihpZG90LCBsMSwgbmE/Y2g6YywgbmE/YzpjaCwgJndhW2l3XSk7CisgICAgICAgIG5h
ID0gMSAtIG5hOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgaXgyID0g
aXcgKyBpZG90OworICAgICAgICBwYXNzYjMoaWRvdCwgbDEsIG5hP2NoOmMsIG5hP2M6Y2gsICZ3
YVtpd10sICZ3YVtpeDJdKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSA1OgorICAgICAgICBpeDIgPSBpdyArIGlkb3Q7CisgICAgICAgIGl4MyA9IGl4
MiArIGlkb3Q7CisgICAgICAgIGl4NCA9IGl4MyArIGlkb3Q7CisgICAgICAgIHBhc3NmYjUoaWRv
dCwgbDEsIG5hP2NoOmMsIG5hP2M6Y2gsICZ3YVtpd10sICZ3YVtpeDJdLCAmd2FbaXgzXSwgJndh
W2l4NF0sICsxKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7CisgICAgICAgIGJyZWFrOworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgaWYgKG5hID09IDApIHsKKyAgICAgICAgICBwYXNzZmIoJm5hYywg
aWRvdCwgaXAsIGwxLCBpZGwxLCBjLCBjLCBjLCBjaCwgY2gsICZ3YVtpd10sICsxKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXNzZmIoJm5hYywgaWRvdCwgaXAsIGwxLCBpZGwxLCBj
aCwgY2gsIGNoLCBjLCBjLCAmd2FbaXddLCArMSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5h
YyAhPSAwKSB7CisgICAgICAgICAgbmEgPSAxIC0gbmE7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGwxID0gbDI7CisgICAgaXcgKz0gKGlwIC0gMSkgKiBpZG90OworICB9
CisgIGlmIChuYSA9PSAwKSB7CisgICAgcmV0dXJuOworICB9CisgIGZvciAoaSA9IDA7IGkgPCAy
Km47ICsraSkgeworICAgIGNbaV0gPSBjaFtpXTsKKyAgfQorfSAvKiBjZmZ0YjEgKi8KKwordm9p
ZCBjZmZ0YihpbnRlZ2VyIG4sIHJlYWwgKmMsIHJlYWwgKndzYXZlKQoreworICBpbnRlZ2VyIGl3
MSwgaXcyOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXdzYXZlOworICAt
LWM7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBpZiAobiA9PSAxKSB7CisgICAgcmV0dXJu
OworICB9CisgIGl3MSA9IDIqbiArIDE7CisgIGl3MiA9IGl3MSArIDIqbjsKKyAgY2ZmdGIxKG4s
ICZjWzFdLCAmd3NhdmVbMV0sICZ3c2F2ZVtpdzFdLCAoaW50Kikmd3NhdmVbaXcyXSk7Cit9IC8q
IGNmZnRiICovCisKK3N0YXRpYyB2b2lkIGNmZnRmMShpbnRlZ2VyIG4sIHJlYWwgKmMsIHJlYWwg
KmNoLCBjb25zdCByZWFsICp3YSwgaW50ZWdlciAqaWZhYykKK3sKKyAgLyogTG9jYWwgdmFyaWFi
bGVzICovCisgIGludGVnZXIgaSwgazEsIGwxLCBsMiwgbmEsIG5mLCBpcCwgaXcsIGl4MiwgaXgz
LCBpeDQsIG5hYywgaWRvLCAKKyAgICBpZGwxLCBpZG90OworCisgIC8qIEZ1bmN0aW9uIEJvZHkg
Ki8KKyAgbmYgPSBpZmFjWzFdOworICBuYSA9IDA7CisgIGwxID0gMTsKKyAgaXcgPSAwOworICBm
b3IgKGsxID0gMTsgazEgPD0gbmY7ICsrazEpIHsKKyAgICBpcCA9IGlmYWNbazEgKyAxXTsKKyAg
ICBsMiA9IGlwICogbDE7CisgICAgaWRvID0gbiAvIGwyOworICAgIGlkb3QgPSBpZG8gKyBpZG87
CisgICAgaWRsMSA9IGlkb3QgKiBsMTsKKyAgICBzd2l0Y2ggKGlwKSB7CisgICAgICBjYXNlIDQ6
CisgICAgICAgIGl4MiA9IGl3ICsgaWRvdDsKKyAgICAgICAgaXgzID0gaXgyICsgaWRvdDsKKyAg
ICAgICAgcGFzc2Y0KGlkb3QsIGwxLCBuYT9jaDpjLCBuYT9jOmNoLCAmd2FbaXddLCAmd2FbaXgy
XSwgJndhW2l4M10pOworICAgICAgICBuYSA9IDEgLSBuYTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDI6CisgICAgICAgIHBhc3NmMihpZG90LCBsMSwgbmE/Y2g6YywgbmE/YzpjaCwgJndh
W2l3XSk7CisgICAgICAgIG5hID0gMSAtIG5hOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MzoKKyAgICAgICAgaXgyID0gaXcgKyBpZG90OworICAgICAgICBwYXNzZjMoaWRvdCwgbDEsIG5h
P2NoOmMsIG5hP2M6Y2gsICZ3YVtpd10sICZ3YVtpeDJdKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1OgorICAgICAgICBpeDIgPSBpdyArIGlkb3Q7
CisgICAgICAgIGl4MyA9IGl4MiArIGlkb3Q7CisgICAgICAgIGl4NCA9IGl4MyArIGlkb3Q7Cisg
ICAgICAgIHBhc3NmYjUoaWRvdCwgbDEsIG5hP2NoOmMsIG5hP2M6Y2gsICZ3YVtpd10sICZ3YVtp
eDJdLCAmd2FbaXgzXSwgJndhW2l4NF0sIC0xKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7CisgICAg
ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKG5hID09IDApIHsKKyAgICAg
ICAgICBwYXNzZmIoJm5hYywgaWRvdCwgaXAsIGwxLCBpZGwxLCBjLCBjLCBjLCBjaCwgY2gsICZ3
YVtpd10sIC0xKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXNzZmIoJm5hYywgaWRv
dCwgaXAsIGwxLCBpZGwxLCBjaCwgY2gsIGNoLCBjLCBjLCAmd2FbaXddLCAtMSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG5hYyAhPSAwKSB7CisgICAgICAgICAgbmEgPSAxIC0gbmE7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGwxID0gbDI7CisgICAgaXcgKz0gKGlw
IC0gMSkqaWRvdDsKKyAgfQorICBpZiAobmEgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQorICBm
b3IgKGkgPSAwOyBpIDwgMipuOyArK2kpIHsKKyAgICBjW2ldID0gY2hbaV07CisgIH0KK30gLyog
Y2ZmdGYxICovCisKK3ZvaWQgY2ZmdGYoaW50ZWdlciBuLCByZWFsICpjLCByZWFsICp3c2F2ZSkK
K3sKKyAgaW50ZWdlciBpdzEsIGl3MjsKKworICAvKiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8K
KyAgLS13c2F2ZTsKKyAgLS1jOworCisgIC8qIEZ1bmN0aW9uIEJvZHkgKi8KKyAgaWYgKG4gPT0g
MSkgeworICAgIHJldHVybjsKKyAgfQorICBpdzEgPSAyKm4gKyAxOworICBpdzIgPSBpdzEgKyAy
Km47CisgIGNmZnRmMShuLCAmY1sxXSwgJndzYXZlWzFdLCAmd3NhdmVbaXcxXSwgKGludCopJndz
YXZlW2l3Ml0pOworfSAvKiBjZmZ0ZiAqLworCitzdGF0aWMgaW50IGRlY29tcG9zZShpbnRlZ2Vy
IG4sIGludGVnZXIgKmlmYWMsIGludGVnZXIgbnRyeWhbNF0pIHsgIAorICBpbnRlZ2VyIG50cnk9
MCwgbmwgPSBuLCBuZiA9IDAsIG5xLCBuciwgaSwgaiA9IDA7CisgIGRvIHsKKyAgICBpZiAoaiA8
IDQpIHsKKyAgICAgIG50cnkgPSBudHJ5aFtqXTsKKyAgICB9IGVsc2UgeworICAgICAgbnRyeSAr
PSAyOworICAgIH0KKyAgICArK2o7CisgIEwxMDQ6CisgICAgbnEgPSBubCAvIG50cnk7CisgICAg
bnIgPSBubCAtIG50cnkgKiBucTsKKyAgICBpZiAobnIgIT0gMCkgY29udGludWU7CisgICAgKytu
ZjsKKyAgICBpZmFjW25mICsgMl0gPSBudHJ5OworICAgIG5sID0gbnE7CisgICAgaWYgKG50cnkg
PT0gMiAmJiBuZiAhPSAxKSB7CisgICAgICBmb3IgKGkgPSAyOyBpIDw9IG5mOyArK2kpIHsKKyAg
ICAgICAgaW50ZWdlciBpYiA9IG5mIC0gaSArIDI7CisgICAgICAgIGlmYWNbaWIgKyAyXSA9IGlm
YWNbaWIgKyAxXTsKKyAgICAgIH0KKyAgICAgIGlmYWNbM10gPSAyOworICAgIH0KKyAgICBpZiAo
bmwgIT0gMSkgeworICAgICAgZ290byBMMTA0OworICAgIH0KKyAgfSB3aGlsZSAobmwgIT0gMSk7
CisgIGlmYWNbMV0gPSBuOworICBpZmFjWzJdID0gbmY7ICAKKyAgcmV0dXJuIG5mOworfQorCitz
dGF0aWMgdm9pZCBjZmZ0aTEoaW50ZWdlciBuLCByZWFsICp3YSwgaW50ZWdlciAqaWZhYykKK3sK
KyAgc3RhdGljIGludGVnZXIgbnRyeWhbNF0gPSB7IDMsNCwyLDUgfTsKKworICAvKiBMb2NhbCB2
YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBpLCBqLCBpMSwgazEsIGwxLCBsMjsKKyAgcmVhbCBmaTsK
KyAgaW50ZWdlciBsZCwgaWksIG5mLCBpcDsKKyAgcmVhbCBhcmc7CisgIGludGVnZXIgaWRvLCBp
cG07CisgIHJlYWwgYXJnaDsKKyAgaW50ZWdlciBpZG90OworICByZWFsIGFyZ2xkOworCisgIC8q
IFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLWlmYWM7CisgIC0td2E7CisKKyAgbmYgPSBk
ZWNvbXBvc2UobiwgaWZhYywgbnRyeWgpOworCisgIGFyZ2ggPSAoMipNX1BJKSAvIChyZWFsKSAo
bik7CisgIGkgPSAyOworICBsMSA9IDE7CisgIGZvciAoazEgPSAxOyBrMSA8PSBuZjsgKytrMSkg
eworICAgIGlwID0gaWZhY1trMSArIDJdOworICAgIGxkID0gMDsKKyAgICBsMiA9IGwxICogaXA7
CisgICAgaWRvID0gbiAvIGwyOworICAgIGlkb3QgPSBpZG8gKyBpZG8gKyAyOworICAgIGlwbSA9
IGlwIC0gMTsKKyAgICBmb3IgKGogPSAxOyBqIDw9IGlwbTsgKytqKSB7CisgICAgICBpMSA9IGk7
CisgICAgICB3YVtpIC0gMV0gPSAxLmY7CisgICAgICB3YVtpXSA9IDAuZjsKKyAgICAgIGxkICs9
IGwxOworICAgICAgZmkgPSAwLmY7CisgICAgICBhcmdsZCA9IChyZWFsKSBsZCAqIGFyZ2g7Cisg
ICAgICBmb3IgKGlpID0gNDsgaWkgPD0gaWRvdDsgaWkgKz0gMikgeworICAgICAgICBpICs9IDI7
CisgICAgICAgIGZpICs9IDEuZjsKKyAgICAgICAgYXJnID0gZmkgKiBhcmdsZDsKKyAgICAgICAg
d2FbaSAtIDFdID0gY29zKGFyZyk7CisgICAgICAgIHdhW2ldID0gc2luKGFyZyk7CisgICAgICB9
CisgICAgICBpZiAoaXAgPiA1KSB7CisgICAgICAgIHdhW2kxIC0gMV0gPSB3YVtpIC0gMV07Cisg
ICAgICAgIHdhW2kxXSA9IHdhW2ldOworICAgICAgfTsKKyAgICB9CisgICAgbDEgPSBsMjsKKyAg
fQorfSAvKiBjZmZ0aTEgKi8KKwordm9pZCBjZmZ0aShpbnRlZ2VyIG4sIHJlYWwgKndzYXZlKQor
eworICBpbnRlZ2VyIGl3MSwgaXcyOworICAvKiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAg
LS13c2F2ZTsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIGlmIChuID09IDEpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgaXcxID0gMipuICsgMTsKKyAgaXcyID0gaXcxICsgMipuOworICBjZmZ0
aTEobiwgJndzYXZlW2l3MV0sIChpbnQqKSZ3c2F2ZVtpdzJdKTsKKyAgcmV0dXJuOworfSAvKiBj
ZmZ0aSAqLworCitzdGF0aWMgdm9pZCByZmZ0YjEoaW50ZWdlciBuLCByZWFsICpjLCByZWFsICpj
aCwgY29uc3QgcmVhbCAqd2EsIGludGVnZXIgKmlmYWMpCit7CisgIC8qIExvY2FsIHZhcmlhYmxl
cyAqLworICBpbnRlZ2VyIGksIGsxLCBsMSwgbDIsIG5hLCBuZiwgaXAsIGl3LCBpeDIsIGl4Mywg
aXg0LCBpZG8sIGlkbDE7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBuZiA9IGlmYWNbMV07
CisgIG5hID0gMDsKKyAgbDEgPSAxOworICBpdyA9IDA7CisgIGZvciAoazEgPSAxOyBrMSA8PSBu
ZjsgKytrMSkgeworICAgIGlwID0gaWZhY1trMSArIDFdOworICAgIGwyID0gaXAgKiBsMTsKKyAg
ICBpZG8gPSBuIC8gbDI7CisgICAgaWRsMSA9IGlkbyAqIGwxOworICAgIHN3aXRjaCAoaXApIHsK
KyAgICAgIGNhc2UgNDoKKyAgICAgICAgaXgyID0gaXcgKyBpZG87CisgICAgICAgIGl4MyA9IGl4
MiArIGlkbzsKKyAgICAgICAgcmFkYjQoaWRvLCBsMSwgbmE/Y2g6YywgbmE/YzpjaCwgJndhW2l3
XSwgJndhW2l4Ml0sICZ3YVtpeDNdKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICByYWRiMihpZG8sIGwxLCBuYT9jaDpjLCBuYT9j
OmNoLCAmd2FbaXddKTsKKyAgICAgICAgbmEgPSAxIC0gbmE7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAzOgorICAgICAgICBpeDIgPSBpdyArIGlkbzsKKyAgICAgICAgcmFkYjMoaWRvLCBs
MSwgbmE/Y2g6YywgbmE/YzpjaCwgJndhW2l3XSwgJndhW2l4Ml0pOworICAgICAgICBuYSA9IDEg
LSBuYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDU6CisgICAgICAgIGl4MiA9IGl3ICsg
aWRvOworICAgICAgICBpeDMgPSBpeDIgKyBpZG87CisgICAgICAgIGl4NCA9IGl4MyArIGlkbzsK
KyAgICAgICAgcmFkYjUoaWRvLCBsMSwgbmE/Y2g6YywgbmE/YzpjaCwgJndhW2l3XSwgJndhW2l4
Ml0sICZ3YVtpeDNdLCAmd2FbaXg0XSk7CisgICAgICAgIG5hID0gMSAtIG5hOworICAgICAgICBi
cmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChuYSA9PSAwKSB7CisgICAgICAgICAg
cmFkYmcoaWRvLCBpcCwgbDEsIGlkbDEsIGMsIGMsIGMsIGNoLCBjaCwgJndhW2l3XSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgcmFkYmcoaWRvLCBpcCwgbDEsIGlkbDEsIGNoLCBjaCwg
Y2gsIGMsIGMsICZ3YVtpd10pOworICAgICAgICB9CisgICAgICAgIGlmIChpZG8gPT0gMSkgewor
ICAgICAgICAgIG5hID0gMSAtIG5hOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBsMSA9IGwyOworICAgIGl3ICs9IChpcCAtIDEpICogaWRvOworICB9CisgIGlmIChuYSA9
PSAwKSB7CisgICAgcmV0dXJuOworICB9CisgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAg
ICBjW2ldID0gY2hbaV07CisgIH0KK30gLyogcmZmdGIxICovCisKK3N0YXRpYyB2b2lkIHJmZnRm
MShpbnRlZ2VyIG4sIHJlYWwgKmMsIHJlYWwgKmNoLCBjb25zdCByZWFsICp3YSwgaW50ZWdlciAq
aWZhYykKK3sKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisgIGludGVnZXIgaSwgazEsIGwxLCBs
MiwgbmEsIGtoLCBuZiwgaXAsIGl3LCBpeDIsIGl4MywgaXg0LCBpZG8sIGlkbDE7CisKKyAgLyog
RnVuY3Rpb24gQm9keSAqLworICBuZiA9IGlmYWNbMV07CisgIG5hID0gMTsKKyAgbDIgPSBuOwor
ICBpdyA9IG4tMTsKKyAgZm9yIChrMSA9IDE7IGsxIDw9IG5mOyArK2sxKSB7CisgICAga2ggPSBu
ZiAtIGsxOworICAgIGlwID0gaWZhY1traCArIDJdOworICAgIGwxID0gbDIgLyBpcDsKKyAgICBp
ZG8gPSBuIC8gbDI7CisgICAgaWRsMSA9IGlkbyAqIGwxOworICAgIGl3IC09IChpcCAtIDEpICog
aWRvOworICAgIG5hID0gMSAtIG5hOworICAgIHN3aXRjaCAoaXApIHsKKyAgICAgIGNhc2UgNDoK
KyAgICAgICAgaXgyID0gaXcgKyBpZG87CisgICAgICAgIGl4MyA9IGl4MiArIGlkbzsKKyAgICAg
ICAgcmFkZjQoaWRvLCBsMSwgbmEgPyBjaCA6IGMsIG5hID8gYyA6IGNoLCAmd2FbaXddLCAmd2Fb
aXgyXSwgJndhW2l4M10pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAg
cmFkZjIoaWRvLCBsMSwgbmEgPyBjaCA6IGMsIG5hID8gYyA6IGNoLCAmd2FbaXddKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIDM6ICAgICAgICAKKyAgICAgICAgaXgyID0gaXcgKyBpZG87
CisgICAgICAgIHJhZGYzKGlkbywgbDEsIG5hID8gY2ggOiBjLCBuYSA/IGMgOiBjaCwgJndhW2l3
XSwgJndhW2l4Ml0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNToKKyAgICAgICAgaXgy
ID0gaXcgKyBpZG87CisgICAgICAgIGl4MyA9IGl4MiArIGlkbzsKKyAgICAgICAgaXg0ID0gaXgz
ICsgaWRvOworICAgICAgICByYWRmNShpZG8sIGwxLCBuYSA/IGNoIDogYywgbmEgPyBjIDogY2gs
ICZ3YVtpd10sICZ3YVtpeDJdLCAmd2FbaXgzXSwgJndhW2l4NF0pOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChpZG8gPT0gMSkgeworICAgICAgICAgIG5hID0g
MSAtIG5hOworICAgICAgICB9CisgICAgICAgIGlmIChuYSA9PSAwKSB7CisgICAgICAgICAgcmFk
ZmcoaWRvLCBpcCwgbDEsIGlkbDEsIGMsIGMsIGMsIGNoLCBjaCwgJndhW2l3XSk7CisgICAgICAg
ICAgbmEgPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJhZGZnKGlkbywgaXAsIGwx
LCBpZGwxLCBjaCwgY2gsIGNoLCBjLCBjLCAmd2FbaXddKTsKKyAgICAgICAgICBuYSA9IDA7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGwyID0gbDE7CisgIH0KKyAgaWYg
KG5hID09IDEpIHsKKyAgICByZXR1cm47CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IG47ICsraSkg
eworICAgIGNbaV0gPSBjaFtpXTsKKyAgfQorfQorCit2b2lkIHJmZnRiKGludGVnZXIgbiwgcmVh
bCAqciwgcmVhbCAqd3NhdmUpCit7CisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisg
IC0td3NhdmU7CisgIC0tcjsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIGlmIChuID09IDEp
IHsKKyAgICByZXR1cm47CisgIH0KKyAgcmZmdGIxKG4sICZyWzFdLCAmd3NhdmVbMV0sICZ3c2F2
ZVtuICsgMV0sIChpbnQqKSZ3c2F2ZVsobiA8PCAxKSArIDFdKTsKK30gLyogcmZmdGIgKi8KKwor
c3RhdGljIHZvaWQgcmZmdGkxKGludGVnZXIgbiwgcmVhbCAqd2EsIGludGVnZXIgKmlmYWMpCit7
CisgIHN0YXRpYyBpbnRlZ2VyIG50cnloWzRdID0geyA0LDIsMyw1IH07CisKKyAgLyogTG9jYWwg
dmFyaWFibGVzICovCisgIGludGVnZXIgaSwgaiwgazEsIGwxLCBsMjsKKyAgcmVhbCBmaTsKKyAg
aW50ZWdlciBsZCwgaWksIG5mLCBpcCwgaXM7CisgIHJlYWwgYXJnOworICBpbnRlZ2VyIGlkbywg
aXBtOworICBpbnRlZ2VyIG5mbTE7CisgIHJlYWwgYXJnaDsKKyAgcmVhbCBhcmdsZDsKKworICAv
KiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAgLS1pZmFjOworICAtLXdhOworCisgIG5mID0g
ZGVjb21wb3NlKG4sIGlmYWMsIG50cnloKTsKKworICBhcmdoID0gKDIqTV9QSSkgLyAocmVhbCkg
KG4pOworICBpcyA9IDA7CisgIG5mbTEgPSBuZiAtIDE7CisgIGwxID0gMTsKKyAgaWYgKG5mbTEg
PT0gMCkgeworICAgIHJldHVybjsKKyAgfQorICBmb3IgKGsxID0gMTsgazEgPD0gbmZtMTsgKytr
MSkgeworICAgIGlwID0gaWZhY1trMSArIDJdOworICAgIGxkID0gMDsKKyAgICBsMiA9IGwxICog
aXA7CisgICAgaWRvID0gbiAvIGwyOworICAgIGlwbSA9IGlwIC0gMTsKKyAgICBmb3IgKGogPSAx
OyBqIDw9IGlwbTsgKytqKSB7CisgICAgICBsZCArPSBsMTsKKyAgICAgIGkgPSBpczsKKyAgICAg
IGFyZ2xkID0gKHJlYWwpIGxkICogYXJnaDsKKyAgICAgIGZpID0gMC5mOworICAgICAgZm9yIChp
aSA9IDM7IGlpIDw9IGlkbzsgaWkgKz0gMikgeworICAgICAgICBpICs9IDI7CisgICAgICAgIGZp
ICs9IDEuZjsKKyAgICAgICAgYXJnID0gZmkgKiBhcmdsZDsKKyAgICAgICAgd2FbaSAtIDFdID0g
Y29zKGFyZyk7CisgICAgICAgIHdhW2ldID0gc2luKGFyZyk7CisgICAgICB9CisgICAgICBpcyAr
PSBpZG87CisgICAgfQorICAgIGwxID0gbDI7CisgIH0KK30gLyogcmZmdGkxICovCisKK3ZvaWQg
cmZmdGYoaW50ZWdlciBuLCByZWFsICpyLCByZWFsICp3c2F2ZSkKK3sKKworICAvKiBQYXJhbWV0
ZXIgYWRqdXN0bWVudHMgKi8KKyAgLS13c2F2ZTsKKyAgLS1yOworCisgIC8qIEZ1bmN0aW9uIEJv
ZHkgKi8KKyAgaWYgKG4gPT0gMSkgeworICAgIHJldHVybjsKKyAgfQorICByZmZ0ZjEobiwgJnJb
MV0sICZ3c2F2ZVsxXSwgJndzYXZlW24gKyAxXSwgKGludCopJndzYXZlWyhuIDw8IDEpICsgMV0p
OworfSAvKiByZmZ0ZiAqLworCit2b2lkIHJmZnRpKGludGVnZXIgbiwgcmVhbCAqd3NhdmUpCit7
CisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXdzYXZlOworCisgIC8qIEZ1bmN0
aW9uIEJvZHkgKi8KKyAgaWYgKG4gPT0gMSkgeworICAgIHJldHVybjsKKyAgfQorICByZmZ0aTEo
biwgJndzYXZlW24gKyAxXSwgKGludCopJndzYXZlWyhuIDw8IDEpICsgMV0pOworICByZXR1cm47
Cit9IC8qIHJmZnRpICovCisKK3N0YXRpYyB2b2lkIGNvc3FiMShpbnRlZ2VyIG4sIHJlYWwgKngs
IHJlYWwgKncsIHJlYWwgKnhoKQoreworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdl
ciBpLCBrLCBrYywgbnAyLCBuczI7CisgIHJlYWwgeGltMTsKKyAgaW50ZWdlciBtb2RuOworCisg
IC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXhoOworICAtLXc7CisgIC0teDsKKwor
ICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIG5zMiA9IChuICsgMSkgLyAyOworICBucDIgPSBuICsg
MjsKKyAgZm9yIChpID0gMzsgaSA8PSBuOyBpICs9IDIpIHsKKyAgICB4aW0xID0geFtpIC0gMV0g
KyB4W2ldOworICAgIHhbaV0gLT0geFtpIC0gMV07CisgICAgeFtpIC0gMV0gPSB4aW0xOworICB9
CisgIHhbMV0gKz0geFsxXTsKKyAgbW9kbiA9IG4gJSAyOworICBpZiAobW9kbiA9PSAwKSB7Cisg
ICAgeFtuXSArPSB4W25dOworICB9CisgIHJmZnRiKG4sICZ4WzFdLCAmeGhbMV0pOworICBmb3Ig
KGsgPSAyOyBrIDw9IG5zMjsgKytrKSB7CisgICAga2MgPSBucDIgLSBrOworICAgIHhoW2tdID0g
d1trIC0gMV0gKiB4W2tjXSArIHdba2MgLSAxXSAqIHhba107CisgICAgeGhba2NdID0gd1trIC0g
MV0gKiB4W2tdIC0gd1trYyAtIDFdICogeFtrY107CisgIH0KKyAgaWYgKG1vZG4gPT0gMCkgewor
ICAgIHhbbnMyICsgMV0gPSB3W25zMl0gKiAoeFtuczIgKyAxXSArIHhbbnMyICsgMV0pOworICB9
CisgIGZvciAoayA9IDI7IGsgPD0gbnMyOyArK2spIHsKKyAgICBrYyA9IG5wMiAtIGs7CisgICAg
eFtrXSA9IHhoW2tdICsgeGhba2NdOworICAgIHhba2NdID0geGhba10gLSB4aFtrY107CisgIH0K
KyAgeFsxXSArPSB4WzFdOworfSAvKiBjb3NxYjEgKi8KKwordm9pZCBjb3NxYihpbnRlZ2VyIG4s
IHJlYWwgKngsIHJlYWwgKndzYXZlKQoreworICBzdGF0aWMgY29uc3QgcmVhbCB0c3FydDIgPSAy
LjgyODQyNzEyNDc0NjE5ZjsKKworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgcmVhbCB4MTsK
KworICAvKiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAgLS13c2F2ZTsKKyAgLS14OworCisg
IGlmIChuIDwgMikgeworICAgIHhbMV0gKj0gNC5mOworICB9IGVsc2UgaWYgKG4gPT0gMikgewor
ICAgIHgxID0gKHhbMV0gKyB4WzJdKSAqIDQuZjsKKyAgICB4WzJdID0gdHNxcnQyICogKHhbMV0g
LSB4WzJdKTsKKyAgICB4WzFdID0geDE7CisgIH0gZWxzZSB7CisgICAgY29zcWIxKG4sICZ4WzFd
LCAmd3NhdmVbMV0sICZ3c2F2ZVtuICsgMV0pOworICB9Cit9IC8qIGNvc3FiICovCisKK3N0YXRp
YyB2b2lkIGNvc3FmMShpbnRlZ2VyIG4sIHJlYWwgKngsIHJlYWwgKncsIHJlYWwgKnhoKQorewor
ICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBpLCBrLCBrYywgbnAyLCBuczI7Cisg
IHJlYWwgeGltMTsKKyAgaW50ZWdlciBtb2RuOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50
cyAqLworICAtLXhoOworICAtLXc7CisgIC0teDsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisg
IG5zMiA9IChuICsgMSkgLyAyOworICBucDIgPSBuICsgMjsKKyAgZm9yIChrID0gMjsgayA8PSBu
czI7ICsraykgeworICAgIGtjID0gbnAyIC0gazsKKyAgICB4aFtrXSA9IHhba10gKyB4W2tjXTsK
KyAgICB4aFtrY10gPSB4W2tdIC0geFtrY107CisgIH0KKyAgbW9kbiA9IG4gJSAyOworICBpZiAo
bW9kbiA9PSAwKSB7CisgICAgeGhbbnMyICsgMV0gPSB4W25zMiArIDFdICsgeFtuczIgKyAxXTsK
KyAgfQorICBmb3IgKGsgPSAyOyBrIDw9IG5zMjsgKytrKSB7CisgICAga2MgPSBucDIgLSBrOwor
ICAgIHhba10gPSB3W2sgLSAxXSAqIHhoW2tjXSArIHdba2MgLSAxXSAqIHhoW2tdOworICAgIHhb
a2NdID0gd1trIC0gMV0gKiB4aFtrXSAtIHdba2MgLSAxXSAqIHhoW2tjXTsKKyAgfQorICBpZiAo
bW9kbiA9PSAwKSB7CisgICAgeFtuczIgKyAxXSA9IHdbbnMyXSAqIHhoW25zMiArIDFdOworICB9
CisgIHJmZnRmKG4sICZ4WzFdLCAmeGhbMV0pOworICBmb3IgKGkgPSAzOyBpIDw9IG47IGkgKz0g
MikgeworICAgIHhpbTEgPSB4W2kgLSAxXSAtIHhbaV07CisgICAgeFtpXSA9IHhbaSAtIDFdICsg
eFtpXTsKKyAgICB4W2kgLSAxXSA9IHhpbTE7CisgIH0KK30gLyogY29zcWYxICovCisKK3ZvaWQg
Y29zcWYoaW50ZWdlciBuLCByZWFsICp4LCByZWFsICp3c2F2ZSkKK3sKKyAgc3RhdGljIGNvbnN0
IHJlYWwgc3FydDIgPSAxLjQxNDIxMzU2MjM3MzFmOworCisgIC8qIExvY2FsIHZhcmlhYmxlcyAq
LworICByZWFsIHRzcXg7CisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIC0td3Nh
dmU7CisgIC0teDsKKworICBpZiAobiA9PSAyKSB7CisgICAgdHNxeCA9IHNxcnQyICogeFsyXTsK
KyAgICB4WzJdID0geFsxXSAtIHRzcXg7CisgICAgeFsxXSArPSB0c3F4OworICB9IGVsc2UgaWYg
KG4gPiAyKSB7CisgICAgY29zcWYxKG4sICZ4WzFdLCAmd3NhdmVbMV0sICZ3c2F2ZVtuICsgMV0p
OworICB9Cit9IC8qIGNvc3FmICovCisKK3ZvaWQgY29zcWkoaW50ZWdlciBuLCByZWFsICp3c2F2
ZSkKK3sKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisgIGludGVnZXIgazsKKyAgcmVhbCBmaywg
ZHQ7CisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIC0td3NhdmU7CisKKyAgZHQg
PSBNX1BJLzIgLyAocmVhbCkgKG4pOworICBmayA9IDAuZjsKKyAgZm9yIChrID0gMTsgayA8PSBu
OyArK2spIHsKKyAgICBmayArPSAxLmY7CisgICAgd3NhdmVba10gPSBjb3MoZmsgKiBkdCk7Cisg
IH0KKyAgcmZmdGkobiwgJndzYXZlW24gKyAxXSk7Cit9IC8qIGNvc3FpICovCisKK3ZvaWQgY29z
dChpbnRlZ2VyIG4sIHJlYWwgKngsIHJlYWwgKndzYXZlKQoreworICAvKiBMb2NhbCB2YXJpYWJs
ZXMgKi8KKyAgaW50ZWdlciBpLCBrOworICByZWFsIGMxLCB0MSwgdDI7CisgIGludGVnZXIga2M7
CisgIHJlYWwgeGk7CisgIGludGVnZXIgbm0xLCBucDE7CisgIHJlYWwgeDFoOworICBpbnRlZ2Vy
IG5zMjsKKyAgcmVhbCB0eDIsIHgxcDMsIHhpbTI7CisgIGludGVnZXIgbW9kbjsKKworICAvKiBQ
YXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAgLS13c2F2ZTsKKyAgLS14OworCisgIC8qIEZ1bmN0
aW9uIEJvZHkgKi8KKyAgbm0xID0gbiAtIDE7CisgIG5wMSA9IG4gKyAxOworICBuczIgPSBuIC8g
MjsKKyAgaWYgKG4gPCAyKSB7CisgIH0gZWxzZSBpZiAobiA9PSAyKSB7CisgICAgeDFoID0geFsx
XSArIHhbMl07CisgICAgeFsyXSA9IHhbMV0gLSB4WzJdOworICAgIHhbMV0gPSB4MWg7CisgIH0g
ZWxzZSBpZiAobiA9PSAzKSB7CisgICAgeDFwMyA9IHhbMV0gKyB4WzNdOworICAgIHR4MiA9IHhb
Ml0gKyB4WzJdOworICAgIHhbMl0gPSB4WzFdIC0geFszXTsKKyAgICB4WzFdID0geDFwMyArIHR4
MjsKKyAgICB4WzNdID0geDFwMyAtIHR4MjsKKyAgfSBlbHNlIHsKKyAgICBjMSA9IHhbMV0gLSB4
W25dOworICAgIHhbMV0gKz0geFtuXTsKKyAgICBmb3IgKGsgPSAyOyBrIDw9IG5zMjsgKytrKSB7
CisgICAgICBrYyA9IG5wMSAtIGs7CisgICAgICB0MSA9IHhba10gKyB4W2tjXTsKKyAgICAgIHQy
ID0geFtrXSAtIHhba2NdOworICAgICAgYzEgKz0gd3NhdmVba2NdICogdDI7CisgICAgICB0MiA9
IHdzYXZlW2tdICogdDI7CisgICAgICB4W2tdID0gdDEgLSB0MjsKKyAgICAgIHhba2NdID0gdDEg
KyB0MjsKKyAgICB9CisgICAgbW9kbiA9IG4gJSAyOworICAgIGlmIChtb2RuICE9IDApIHsKKyAg
ICAgIHhbbnMyICsgMV0gKz0geFtuczIgKyAxXTsKKyAgICB9CisgICAgcmZmdGYobm0xLCAmeFsx
XSwgJndzYXZlW24gKyAxXSk7CisgICAgeGltMiA9IHhbMl07CisgICAgeFsyXSA9IGMxOworICAg
IGZvciAoaSA9IDQ7IGkgPD0gbjsgaSArPSAyKSB7CisgICAgICB4aSA9IHhbaV07CisgICAgICB4
W2ldID0geFtpIC0gMl0gLSB4W2kgLSAxXTsKKyAgICAgIHhbaSAtIDFdID0geGltMjsKKyAgICAg
IHhpbTIgPSB4aTsKKyAgICB9CisgICAgaWYgKG1vZG4gIT0gMCkgeworICAgICAgeFtuXSA9IHhp
bTI7CisgICAgfQorICB9Cit9IC8qIGNvc3QgKi8KKwordm9pZCBjb3N0aShpbnRlZ2VyIG4sIHJl
YWwgKndzYXZlKQoreworICAvKiBJbml0aWFsaXplZCBkYXRhICovCisKKyAgLyogTG9jYWwgdmFy
aWFibGVzICovCisgIGludGVnZXIgaywga2M7CisgIHJlYWwgZmssIGR0OworICBpbnRlZ2VyIG5t
MSwgbnAxLCBuczI7CisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCisgIC0td3NhdmU7
CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBpZiAobiA8PSAzKSB7CisgICAgcmV0dXJuOwor
ICB9CisgIG5tMSA9IG4gLSAxOworICBucDEgPSBuICsgMTsKKyAgbnMyID0gbiAvIDI7CisgIGR0
ID0gTV9QSSAvIChyZWFsKSBubTE7CisgIGZrID0gMC5mOworICBmb3IgKGsgPSAyOyBrIDw9IG5z
MjsgKytrKSB7CisgICAga2MgPSBucDEgLSBrOworICAgIGZrICs9IDEuZjsKKyAgICB3c2F2ZVtr
XSA9IHNpbihmayAqIGR0KSAqIDIuZjsKKyAgICB3c2F2ZVtrY10gPSBjb3MoZmsgKiBkdCkgKiAy
LmY7CisgIH0KKyAgcmZmdGkobm0xLCAmd3NhdmVbbiArIDFdKTsKK30gLyogY29zdGkgKi8KKwor
dm9pZCBzaW5xYihpbnRlZ2VyIG4sIHJlYWwgKngsIHJlYWwgKndzYXZlKQoreworICAvKiBMb2Nh
bCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBrLCBrYywgbnMyOworICByZWFsIHhob2xkOworCisg
IC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXdzYXZlOworICAtLXg7CisKKyAgLyog
RnVuY3Rpb24gQm9keSAqLworICBpZiAobiA8PSAxKSB7CisgICAgeFsxXSAqPSA0LmY7CisgICAg
cmV0dXJuOworICB9CisgIG5zMiA9IG4gLyAyOworICBmb3IgKGsgPSAyOyBrIDw9IG47IGsgKz0g
MikgeworICAgIHhba10gPSAteFtrXTsKKyAgfQorICBjb3NxYihuLCAmeFsxXSwgJndzYXZlWzFd
KTsKKyAgZm9yIChrID0gMTsgayA8PSBuczI7ICsraykgeworICAgIGtjID0gbiAtIGs7CisgICAg
eGhvbGQgPSB4W2tdOworICAgIHhba10gPSB4W2tjICsgMV07CisgICAgeFtrYyArIDFdID0geGhv
bGQ7CisgIH0KK30gLyogc2lucWIgKi8KKwordm9pZCBzaW5xZihpbnRlZ2VyIG4sIHJlYWwgKngs
IHJlYWwgKndzYXZlKQoreworICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBrLCBr
YywgbnMyOworICByZWFsIHhob2xkOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLwor
ICAtLXdzYXZlOworICAtLXg7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBpZiAobiA9PSAx
KSB7CisgICAgcmV0dXJuOworICB9CisgIG5zMiA9IG4gLyAyOworICBmb3IgKGsgPSAxOyBrIDw9
IG5zMjsgKytrKSB7CisgICAga2MgPSBuIC0gazsKKyAgICB4aG9sZCA9IHhba107CisgICAgeFtr
XSA9IHhba2MgKyAxXTsKKyAgICB4W2tjICsgMV0gPSB4aG9sZDsKKyAgfQorICBjb3NxZihuLCAm
eFsxXSwgJndzYXZlWzFdKTsKKyAgZm9yIChrID0gMjsgayA8PSBuOyBrICs9IDIpIHsKKyAgICB4
W2tdID0gLXhba107CisgIH0KK30gLyogc2lucWYgKi8KKwordm9pZCBzaW5xaShpbnRlZ2VyIG4s
IHJlYWwgKndzYXZlKQoreworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXdz
YXZlOworCisgIC8qIEZ1bmN0aW9uIEJvZHkgKi8KKyAgY29zcWkobiwgJndzYXZlWzFdKTsKK30g
Lyogc2lucWkgKi8KKworc3RhdGljIHZvaWQgc2ludDEoaW50ZWdlciBuLCByZWFsICp3YXIsIHJl
YWwgKndhcywgcmVhbCAqeGgsIHJlYWwgKgorICAgICAgICAgICAgICAgICAgeCwgaW50ZWdlciAq
aWZhYykKK3sKKyAgLyogSW5pdGlhbGl6ZWQgZGF0YSAqLworCisgIHN0YXRpYyBjb25zdCByZWFs
IHNxcnQzID0gMS43MzIwNTA4MDc1Njg4OGY7CisKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisg
IGludGVnZXIgaSwgazsKKyAgcmVhbCB0MSwgdDI7CisgIGludGVnZXIga2MsIG5wMSwgbnMyLCBt
b2RuOworICByZWFsIHhob2xkOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAt
LWlmYWM7CisgIC0teDsKKyAgLS14aDsKKyAgLS13YXM7CisgIC0td2FyOworCisgIC8qIEZ1bmN0
aW9uIEJvZHkgKi8KKyAgZm9yIChpID0gMTsgaSA8PSBuOyArK2kpIHsKKyAgICB4aFtpXSA9IHdh
cltpXTsKKyAgICB3YXJbaV0gPSB4W2ldOworICB9CisgIAorICBpZiAobiA8IDIpIHsKKyAgICB4
aFsxXSArPSB4aFsxXTsKKyAgfSBlbHNlIGlmIChuID09IDIpIHsKKyAgICB4aG9sZCA9IHNxcnQz
ICogKHhoWzFdICsgeGhbMl0pOworICAgIHhoWzJdID0gc3FydDMgKiAoeGhbMV0gLSB4aFsyXSk7
CisgICAgeGhbMV0gPSB4aG9sZDsKKyAgfSBlbHNlIHsKKyAgICBucDEgPSBuICsgMTsKKyAgICBu
czIgPSBuIC8gMjsKKyAgICB4WzFdID0gMC5mOworICAgIGZvciAoayA9IDE7IGsgPD0gbnMyOyAr
K2spIHsKKyAgICAgIGtjID0gbnAxIC0gazsKKyAgICAgIHQxID0geGhba10gLSB4aFtrY107Cisg
ICAgICB0MiA9IHdhc1trXSAqICh4aFtrXSArIHhoW2tjXSk7CisgICAgICB4W2sgKyAxXSA9IHQx
ICsgdDI7CisgICAgICB4W2tjICsgMV0gPSB0MiAtIHQxOworICAgIH0KKyAgICBtb2RuID0gbiAl
IDI7CisgICAgaWYgKG1vZG4gIT0gMCkgeworICAgICAgeFtuczIgKyAyXSA9IHhoW25zMiArIDFd
ICogNC5mOworICAgIH0KKyAgICByZmZ0ZjEobnAxLCAmeFsxXSwgJnhoWzFdLCAmd2FyWzFdLCAm
aWZhY1sxXSk7CisgICAgeGhbMV0gPSB4WzFdICogLjVmOworICAgIGZvciAoaSA9IDM7IGkgPD0g
bjsgaSArPSAyKSB7CisgICAgICB4aFtpIC0gMV0gPSAteFtpXTsKKyAgICAgIHhoW2ldID0geGhb
aSAtIDJdICsgeFtpIC0gMV07CisgICAgfQorICAgIGlmIChtb2RuID09IDApIHsKKyAgICAgIHho
W25dID0gLXhbbiArIDFdOworICAgIH0KKyAgfQorICBmb3IgKGkgPSAxOyBpIDw9IG47ICsraSkg
eworICAgIHhbaV0gPSB3YXJbaV07CisgICAgd2FyW2ldID0geGhbaV07CisgIH0KK30gLyogc2lu
dDEgKi8KKwordm9pZCBzaW50aShpbnRlZ2VyIG4sIHJlYWwgKndzYXZlKQoreworICAvKiBMb2Nh
bCB2YXJpYWJsZXMgKi8KKyAgaW50ZWdlciBrOworICByZWFsIGR0OworICBpbnRlZ2VyIG5wMSwg
bnMyOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLworICAtLXdzYXZlOworCisgIC8q
IEZ1bmN0aW9uIEJvZHkgKi8KKyAgaWYgKG4gPD0gMSkgeworICAgIHJldHVybjsKKyAgfQorICBu
czIgPSBuIC8gMjsKKyAgbnAxID0gbiArIDE7CisgIGR0ID0gTV9QSSAvIChyZWFsKSBucDE7Cisg
IGZvciAoayA9IDE7IGsgPD0gbnMyOyArK2spIHsKKyAgICB3c2F2ZVtrXSA9IHNpbihrICogZHQp
ICogMi5mOworICB9CisgIHJmZnRpKG5wMSwgJndzYXZlW25zMiArIDFdKTsKK30gLyogc2ludGkg
Ki8KKwordm9pZCBzaW50KGludGVnZXIgbiwgcmVhbCAqeCwgcmVhbCAqd3NhdmUpCit7CisgIGlu
dGVnZXIgbnAxLCBpdzEsIGl3MiwgaXczOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAq
LworICAtLXdzYXZlOworICAtLXg7CisKKyAgLyogRnVuY3Rpb24gQm9keSAqLworICBucDEgPSBu
ICsgMTsKKyAgaXcxID0gbiAvIDIgKyAxOworICBpdzIgPSBpdzEgKyBucDE7CisgIGl3MyA9IGl3
MiArIG5wMTsKKyAgc2ludDEobiwgJnhbMV0sICZ3c2F2ZVsxXSwgJndzYXZlW2l3MV0sICZ3c2F2
ZVtpdzJdLCAoaW50Kikmd3NhdmVbaXczXSk7Cit9IC8qIHNpbnQgKi8KKworI2lmZGVmIFRFU1RJ
TkdfRkZUUEFDSworI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2ludCBtYWluKHZvaWQpCit7CisgIHN0
YXRpYyBpbnRlZ2VyIG5kW10gPSB7IDEyMCw5MSw1NCw0OSwzMiwyOCwyNCw4LDQsMywyIH07CisK
KyAgLyogU3lzdGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgcmVhbCByMSwgcjIsIHIzOworICBm
Nzdjb21wbGV4IHExLCBxMiwgcTM7CisKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisgIGludGVn
ZXIgaSwgaiwgaywgbjsKKyAgcmVhbCB3WzIwMDBdLCB4WzIwMF0sIHlbMjAwXSwgY2YsIGZuLCBk
dDsKKyAgZjc3Y29tcGxleCBjeFsyMDBdLCBjeVsyMDBdOworICByZWFsIHhoWzIwMF07CisgIGlu
dGVnZXIgbnosIG5tMSwgbnAxLCBuczI7CisgIHJlYWwgYXJnLCB0Zm47CisgIHJlYWwgc3VtLCBh
cmcxLCBhcmcyOworICByZWFsIHN1bTEsIHN1bTIsIGRjZmI7CisgIGludGVnZXIgbW9kbjsKKyAg
cmVhbCByZnRiLCByZnRmOworICByZWFsIHNxcnQyOworICByZWFsIHJmdGZiOworICByZWFsIGNv
c3R0LCBzaW50dCwgZGNmZnRiLCBkY2ZmdGYsIGNvc3FmYiwgY29zdGZiOworICByZWFsIHNpbnFm
YjsKKyAgcmVhbCBzaW50ZmI7CisgIHJlYWwgY29zcWJ0LCBjb3NxZnQsIHNpbnFidCwgc2lucWZ0
OworCisKKworICAvKiAgICAgKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKi8KKworICAvKiAgICAgICAgICAgICAgICAgICAg
ICAgVkVSU0lPTiA0ICBBUFJJTCAxOTg1ICovCisKKyAgLyogICAgICAgICAgICAgICAgICAgICAg
ICAgQSBURVNUIERSSVZFUiBGT1IgKi8KKyAgLyogICAgICAgICAgQSBQQUNLQUdFIE9GIEZPUlRS
QU4gU1VCUFJPR1JBTVMgRk9SIFRIRSBGQVNUIEZPVVJJRVIgKi8KKyAgLyogICAgICAgICAgIFRS
QU5TRk9STSBPRiBQRVJJT0RJQyBBTkQgT1RIRVIgU1lNTUVUUklDIFNFUVVFTkNFUyAqLworCisg
IC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlkgKi8KKworICAvKiAgICAgICAgICAg
ICAgICAgICAgICAgUEFVTCBOIFNXQVJaVFJBVUJFUiAqLworCisgIC8qICAgICAgIE5BVElPTkFM
IENFTlRFUiBGT1IgQVRNT1NQSEVSSUMgUkVTRUFSQ0ggIEJPVUxERVIsQ09MT1JBRE8gODAzMDcg
Ki8KKworICAvKiAgICAgICAgV0hJQ0ggSVMgU1BPTlNPUkVEIEJZIFRIRSBOQVRJT05BTCBTQ0lF
TkNFIEZPVU5EQVRJT04gKi8KKworICAvKiAgICAgKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKi8KKworCisgIC8qICAgICAg
ICAgICAgIFRISVMgUFJPR1JBTSBURVNUUyBUSEUgUEFDS0FHRSBPRiBGQVNUIEZPVVJJRVIgKi8K
KyAgLyogICAgIFRSQU5TRk9STVMgRk9SIEJPVEggQ09NUExFWCBBTkQgUkVBTCBQRVJJT0RJQyBT
RVFVRU5DRVMgQU5EICovCisgIC8qICAgICBDRVJUSUFOIE9USEVSIFNZTU1FVFJJQyBTRVFVRU5D
RVMgVEhBVCBBUkUgTElTVEVEIEJFTE9XLiAqLworCisgIC8qICAgICAxLiAgIFJGRlRJICAgICBJ
TklUSUFMSVpFICBSRkZURiBBTkQgUkZGVEIgKi8KKyAgLyogICAgIDIuICAgUkZGVEYgICAgIEZP
UldBUkQgVFJBTlNGT1JNIE9GIEEgUkVBTCBQRVJJT0RJQyBTRVFVRU5DRSAqLworICAvKiAgICAg
My4gICBSRkZUQiAgICAgQkFDS1dBUkQgVFJBTlNGT1JNIE9GIEEgUkVBTCBDT0VGRklDSUVOVCBB
UlJBWSAqLworCisgIC8qICAgICA0LiAgIEVaRkZUSSAgICBJTklUSUFMSVpFIEVaRkZURiBBTkQg
RVpGRlRCICovCisgIC8qICAgICA1LiAgIEVaRkZURiAgICBBIFNJTVBMSUZJRUQgUkVBTCBQRVJJ
T0RJQyBGT1JXQVJEIFRSQU5TRk9STSAqLworICAvKiAgICAgNi4gICBFWkZGVEIgICAgQSBTSU1Q
TElGSUVEIFJFQUwgUEVSSU9ESUMgQkFDS1dBUkQgVFJBTlNGT1JNICovCisKKyAgLyogICAgIDcu
ICAgU0lOVEkgICAgIElOSVRJQUxJWkUgU0lOVCAqLworICAvKiAgICAgOC4gICBTSU5UICAgICAg
U0lORSBUUkFOU0ZPUk0gT0YgQSBSRUFMIE9ERCBTRVFVRU5DRSAqLworCisgIC8qICAgICA5LiAg
IENPU1RJICAgICBJTklUSUFMSVpFIENPU1QgKi8KKyAgLyogICAgIDEwLiAgQ09TVCAgICAgIENP
U0lORSBUUkFOU0ZPUk0gT0YgQSBSRUFMIEVWRU4gU0VRVUVOQ0UgKi8KKworICAvKiAgICAgMTEu
ICBTSU5RSSAgICAgSU5JVElBTElaRSBTSU5RRiBBTkQgU0lOUUIgKi8KKyAgLyogICAgIDEyLiAg
U0lOUUYgICAgIEZPUldBUkQgU0lORSBUUkFOU0ZPUk0gV0lUSCBPREQgV0FWRSBOVU1CRVJTICov
CisgIC8qICAgICAxMy4gIFNJTlFCICAgICBVTk5PUk1BTElaRUQgSU5WRVJTRSBPRiBTSU5RRiAq
LworCisgIC8qICAgICAxNC4gIENPU1FJICAgICBJTklUSUFMSVpFIENPU1FGIEFORCBDT1NRQiAq
LworICAvKiAgICAgMTUuICBDT1NRRiAgICAgRk9SV0FSRCBDT1NJTkUgVFJBTlNGT1JNIFdJVEgg
T0REIFdBVkUgTlVNQkVSUyAqLworICAvKiAgICAgMTYuICBDT1NRQiAgICAgVU5OT1JNQUxJWkVE
IElOVkVSU0UgT0YgQ09TUUYgKi8KKworICAvKiAgICAgMTcuICBDRkZUSSAgICAgSU5JVElBTEla
RSBDRkZURiBBTkQgQ0ZGVEIgKi8KKyAgLyogICAgIDE4LiAgQ0ZGVEYgICAgIEZPUldBUkQgVFJB
TlNGT1JNIE9GIEEgQ09NUExFWCBQRVJJT0RJQyBTRVFVRU5DRSAqLworICAvKiAgICAgMTkuICBD
RkZUQiAgICAgVU5OT1JNQUxJWkVEIElOVkVSU0UgT0YgQ0ZGVEYgKi8KKworCisgIHNxcnQyID0g
c3FydCgyLmYpOworICBpbnQgYWxsX29rID0gMTsKKyAgZm9yIChueiA9IDE7IG56IDw9IChpbnQp
KHNpemVvZiBuZC9zaXplb2YgbmRbMF0pOyArK256KSB7CisgICAgbiA9IG5kW256IC0gMV07Cisg
ICAgbW9kbiA9IG4gJSAyOworICAgIGZuID0gKHJlYWwpIG47CisgICAgdGZuID0gZm4gKyBmbjsK
KyAgICBucDEgPSBuICsgMTsKKyAgICBubTEgPSBuIC0gMTsKKyAgICBmb3IgKGogPSAxOyBqIDw9
IG5wMTsgKytqKSB7CisgICAgICB4W2ogLSAxXSA9IHNpbigocmVhbCkgaiAqIHNxcnQyKTsKKyAg
ICAgIHlbaiAtIDFdID0geFtqIC0gMV07CisgICAgICB4aFtqIC0gMV0gPSB4W2ogLSAxXTsKKyAg
ICB9CisKKyAgICAvKiAgICAgVEVTVCBTVUJST1VUSU5FUyBSRkZUSSxSRkZURiBBTkQgUkZGVEIg
Ki8KKworICAgIHJmZnRpKG4sIHcpOworICAgIGR0ID0gKDIqTV9QSSkgLyBmbjsKKyAgICBuczIg
PSAobiArIDEpIC8gMjsKKyAgICBpZiAobnMyIDwgMikgeworICAgICAgZ290byBMMTA0OworICAg
IH0KKyAgICBmb3IgKGsgPSAyOyBrIDw9IG5zMjsgKytrKSB7CisgICAgICBzdW0xID0gMC5mOwor
ICAgICAgc3VtMiA9IDAuZjsKKyAgICAgIGFyZyA9IChyZWFsKSAoayAtIDEpICogZHQ7CisgICAg
ICBmb3IgKGkgPSAxOyBpIDw9IG47ICsraSkgeworICAgICAgICBhcmcxID0gKHJlYWwpIChpIC0g
MSkgKiBhcmc7CisgICAgICAgIHN1bTEgKz0geFtpIC0gMV0gKiBjb3MoYXJnMSk7CisgICAgICAg
IHN1bTIgKz0geFtpIC0gMV0gKiBzaW4oYXJnMSk7CisgICAgICB9CisgICAgICB5WyhrIDw8IDEp
IC0gM10gPSBzdW0xOworICAgICAgeVsoayA8PCAxKSAtIDJdID0gLXN1bTI7CisgICAgfQorICBM
MTA0OgorICAgIHN1bTEgPSAwLmY7CisgICAgc3VtMiA9IDAuZjsKKyAgICBmb3IgKGkgPSAxOyBp
IDw9IG5tMTsgaSArPSAyKSB7CisgICAgICBzdW0xICs9IHhbaSAtIDFdOworICAgICAgc3VtMiAr
PSB4W2ldOworICAgIH0KKyAgICBpZiAobW9kbiA9PSAxKSB7CisgICAgICBzdW0xICs9IHhbbiAt
IDFdOworICAgIH0KKyAgICB5WzBdID0gc3VtMSArIHN1bTI7CisgICAgaWYgKG1vZG4gPT0gMCkg
eworICAgICAgeVtuIC0gMV0gPSBzdW0xIC0gc3VtMjsKKyAgICB9CisgICAgcmZmdGYobiwgeCwg
dyk7CisgICAgcmZ0ZiA9IDAuZjsKKyAgICBmb3IgKGkgPSAxOyBpIDw9IG47ICsraSkgeworICAg
ICAgLyogQ29tcHV0aW5nIE1BWCAqLworICAgICAgcjIgPSByZnRmLCByMyA9IChyMSA9IHhbaSAt
IDFdIC0geVtpIC0gMV0sIGZhYnMocjEpKTsKKyAgICAgIHJmdGYgPSBkbWF4KHIyLHIzKTsKKyAg
ICAgIHhbaSAtIDFdID0geGhbaSAtIDFdOworICAgIH0KKyAgICByZnRmIC89IGZuOworICAgIGZv
ciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICBzdW0gPSB4WzBdICogLjVmOworICAgICAg
YXJnID0gKHJlYWwpIChpIC0gMSkgKiBkdDsKKyAgICAgIGlmIChuczIgPCAyKSB7CisgICAgICAg
IGdvdG8gTDEwODsKKyAgICAgIH0KKyAgICAgIGZvciAoayA9IDI7IGsgPD0gbnMyOyArK2spIHsK
KyAgICAgICAgYXJnMSA9IChyZWFsKSAoayAtIDEpICogYXJnOworICAgICAgICBzdW0gPSBzdW0g
KyB4WyhrIDw8IDEpIC0gM10gKiBjb3MoYXJnMSkgLSB4WyhrIDw8IDEpIC0gMl0gKiAKKyAgICAg
ICAgICBzaW4oYXJnMSk7CisgICAgICB9CisgICAgTDEwODoKKyAgICAgIGlmIChtb2RuID09IDAp
IHsKKyAgICAgICAgc3VtICs9IChyZWFsKXBvdygtMSwgaS0xKSAqIC41ZiAqIHhbbiAtIDFdOwor
ICAgICAgfQorICAgICAgeVtpIC0gMV0gPSBzdW0gKyBzdW07CisgICAgfQorICAgIHJmZnRiKG4s
IHgsIHcpOworICAgIHJmdGIgPSAwLmY7CisgICAgZm9yIChpID0gMTsgaSA8PSBuOyArK2kpIHsK
KyAgICAgIC8qIENvbXB1dGluZyBNQVggKi8KKyAgICAgIHIyID0gcmZ0YiwgcjMgPSAocjEgPSB4
W2kgLSAxXSAtIHlbaSAtIDFdLCBmYWJzKHIxKSk7CisgICAgICByZnRiID0gZG1heChyMixyMyk7
CisgICAgICB4W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICAgIHlbaSAtIDFdID0geGhbaSAtIDFd
OworICAgIH0KKyAgICByZmZ0YihuLCB5LCB3KTsKKyAgICByZmZ0ZihuLCB5LCB3KTsKKyAgICBj
ZiA9IDEuZiAvIGZuOworICAgIHJmdGZiID0gMC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsg
KytpKSB7CisgICAgICAvKiBDb21wdXRpbmcgTUFYICovCisgICAgICByMiA9IHJmdGZiLCByMyA9
IChyMSA9IGNmICogeVtpIC0gMV0gLSB4W2kgLSAxXSwgZmFicygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIxKSk7CisgICAgICBy
ZnRmYiA9IGRtYXgocjIscjMpOworICAgIH0KKworICAgIC8qICAgICBURVNUIFNVQlJPVVRJTkVT
IFNJTlRJIEFORCBTSU5UICovCisKKyAgICBkdCA9IE1fUEkgLyBmbjsKKyAgICBmb3IgKGkgPSAx
OyBpIDw9IG5tMTsgKytpKSB7CisgICAgICB4W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICB9Cisg
ICAgZm9yIChpID0gMTsgaSA8PSBubTE7ICsraSkgeworICAgICAgeVtpIC0gMV0gPSAwLmY7Cisg
ICAgICBhcmcxID0gKHJlYWwpIGkgKiBkdDsKKyAgICAgIGZvciAoayA9IDE7IGsgPD0gbm0xOyAr
K2spIHsKKyAgICAgICAgeVtpIC0gMV0gKz0geFtrIC0gMV0gKiBzaW4oKHJlYWwpIGsgKiBhcmcx
KTsKKyAgICAgIH0KKyAgICAgIHlbaSAtIDFdICs9IHlbaSAtIDFdOworICAgIH0KKyAgICBzaW50
aShubTEsIHcpOworICAgIHNpbnQobm0xLCB4LCB3KTsKKyAgICBjZiA9IC41ZiAvIGZuOworICAg
IHNpbnR0ID0gMC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbm0xOyArK2kpIHsKKyAgICAgIC8q
IENvbXB1dGluZyBNQVggKi8KKyAgICAgIHIyID0gc2ludHQsIHIzID0gKHIxID0geFtpIC0gMV0g
LSB5W2kgLSAxXSwgZmFicyhyMSkpOworICAgICAgc2ludHQgPSBkbWF4KHIyLHIzKTsKKyAgICAg
IHhbaSAtIDFdID0geGhbaSAtIDFdOworICAgICAgeVtpIC0gMV0gPSB4W2kgLSAxXTsKKyAgICB9
CisgICAgc2ludHQgPSBjZiAqIHNpbnR0OworICAgIHNpbnQobm0xLCB4LCB3KTsKKyAgICBzaW50
KG5tMSwgeCwgdyk7CisgICAgc2ludGZiID0gMC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbm0x
OyArK2kpIHsKKyAgICAgIC8qIENvbXB1dGluZyBNQVggKi8KKyAgICAgIHIyID0gc2ludGZiLCBy
MyA9IChyMSA9IGNmICogeFtpIC0gMV0gLSB5W2kgLSAxXSwgZmFicygKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMSkpOworICAg
ICAgc2ludGZiID0gZG1heChyMixyMyk7CisgICAgfQorCisgICAgLyogICAgIFRFU1QgU1VCUk9V
VElORVMgQ09TVEkgQU5EIENPU1QgKi8KKworICAgIGZvciAoaSA9IDE7IGkgPD0gbnAxOyArK2kp
IHsKKyAgICAgIHhbaSAtIDFdID0geGhbaSAtIDFdOworICAgIH0KKyAgICBmb3IgKGkgPSAxOyBp
IDw9IG5wMTsgKytpKSB7CisgICAgICB5W2kgLSAxXSA9ICh4WzBdICsgKHJlYWwpIHBvdygtMSwg
aSsxKSAqIHhbbl0pICogLjVmOworICAgICAgYXJnID0gKHJlYWwpIChpIC0gMSkgKiBkdDsKKyAg
ICAgIGZvciAoayA9IDI7IGsgPD0gbjsgKytrKSB7CisgICAgICAgIHlbaSAtIDFdICs9IHhbayAt
IDFdICogY29zKChyZWFsKSAoayAtIDEpICogYXJnKTsKKyAgICAgIH0KKyAgICAgIHlbaSAtIDFd
ICs9IHlbaSAtIDFdOworICAgIH0KKyAgICBjb3N0aShucDEsIHcpOworICAgIGNvc3QobnAxLCB4
LCB3KTsKKyAgICBjb3N0dCA9IDAuZjsKKyAgICBmb3IgKGkgPSAxOyBpIDw9IG5wMTsgKytpKSB7
CisgICAgICAvKiBDb21wdXRpbmcgTUFYICovCisgICAgICByMiA9IGNvc3R0LCByMyA9IChyMSA9
IHhbaSAtIDFdIC0geVtpIC0gMV0sIGZhYnMocjEpKTsKKyAgICAgIGNvc3R0ID0gZG1heChyMixy
Myk7CisgICAgICB4W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICAgIHlbaSAtIDFdID0geGhbaSAt
IDFdOworICAgIH0KKyAgICBjb3N0dCA9IGNmICogY29zdHQ7CisgICAgY29zdChucDEsIHgsIHcp
OworICAgIGNvc3QobnAxLCB4LCB3KTsKKyAgICBjb3N0ZmIgPSAwLmY7CisgICAgZm9yIChpID0g
MTsgaSA8PSBucDE7ICsraSkgeworICAgICAgLyogQ29tcHV0aW5nIE1BWCAqLworICAgICAgcjIg
PSBjb3N0ZmIsIHIzID0gKHIxID0gY2YgKiB4W2kgLSAxXSAtIHlbaSAtIDFdLCBmYWJzKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHIxKSk7CisgICAgICBjb3N0ZmIgPSBkbWF4KHIyLHIzKTsKKyAgICB9CisKKyAgICAvKiAgICAg
VEVTVCBTVUJST1VUSU5FUyBTSU5RSSxTSU5RRiBBTkQgU0lOUUIgKi8KKworICAgIGNmID0gLjI1
ZiAvIGZuOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICB5W2kgLSAxXSA9
IHhoW2kgLSAxXTsKKyAgICB9CisgICAgZHQgPSBNX1BJIC8gKGZuICsgZm4pOworICAgIGZvciAo
aSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICB4W2kgLSAxXSA9IDAuZjsKKyAgICAgIGFyZyA9
IGR0ICogKHJlYWwpIGk7CisgICAgICBmb3IgKGsgPSAxOyBrIDw9IG47ICsraykgeworICAgICAg
ICB4W2kgLSAxXSArPSB5W2sgLSAxXSAqIHNpbigocmVhbCkgKGsgKyBrIC0gMSkgKiBhcmcpOwor
ICAgICAgfQorICAgICAgeFtpIC0gMV0gKj0gNC5mOworICAgIH0KKyAgICBzaW5xaShuLCB3KTsK
KyAgICBzaW5xYihuLCB5LCB3KTsKKyAgICBzaW5xYnQgPSAwLmY7CisgICAgZm9yIChpID0gMTsg
aSA8PSBuOyArK2kpIHsKKyAgICAgIC8qIENvbXB1dGluZyBNQVggKi8KKyAgICAgIHIyID0gc2lu
cWJ0LCByMyA9IChyMSA9IHlbaSAtIDFdIC0geFtpIC0gMV0sIGZhYnMocjEpKQorICAgICAgICA7
CisgICAgICBzaW5xYnQgPSBkbWF4KHIyLHIzKTsKKyAgICAgIHhbaSAtIDFdID0geGhbaSAtIDFd
OworICAgIH0KKyAgICBzaW5xYnQgPSBjZiAqIHNpbnFidDsKKyAgICBmb3IgKGkgPSAxOyBpIDw9
IG47ICsraSkgeworICAgICAgYXJnID0gKHJlYWwpIChpICsgaSAtIDEpICogZHQ7CisgICAgICB5
W2kgLSAxXSA9IChyZWFsKSBwb3coLTEsIGkrMSkgKiAuNWYgKiB4W24gLSAxXTsKKyAgICAgIGZv
ciAoayA9IDE7IGsgPD0gbm0xOyArK2spIHsKKyAgICAgICAgeVtpIC0gMV0gKz0geFtrIC0gMV0g
KiBzaW4oKHJlYWwpIGsgKiBhcmcpOworICAgICAgfQorICAgICAgeVtpIC0gMV0gKz0geVtpIC0g
MV07CisgICAgfQorICAgIHNpbnFmKG4sIHgsIHcpOworICAgIHNpbnFmdCA9IDAuZjsKKyAgICBm
b3IgKGkgPSAxOyBpIDw9IG47ICsraSkgeworICAgICAgLyogQ29tcHV0aW5nIE1BWCAqLworICAg
ICAgcjIgPSBzaW5xZnQsIHIzID0gKHIxID0geFtpIC0gMV0gLSB5W2kgLSAxXSwgZmFicyhyMSkp
CisgICAgICAgIDsKKyAgICAgIHNpbnFmdCA9IGRtYXgocjIscjMpOworICAgICAgeVtpIC0gMV0g
PSB4aFtpIC0gMV07CisgICAgICB4W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICB9CisgICAgc2lu
cWYobiwgeSwgdyk7CisgICAgc2lucWIobiwgeSwgdyk7CisgICAgc2lucWZiID0gMC5mOworICAg
IGZvciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICAvKiBDb21wdXRpbmcgTUFYICovCisg
ICAgICByMiA9IHNpbnFmYiwgcjMgPSAocjEgPSBjZiAqIHlbaSAtIDFdIC0geFtpIC0gMV0sIGZh
YnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcjEpKTsKKyAgICAgIHNpbnFmYiA9IGRtYXgocjIscjMpOworICAgIH0KKworICAg
IC8qICAgICBURVNUIFNVQlJPVVRJTkVTIENPU1FJLENPU1FGIEFORCBDT1NRQiAqLworCisgICAg
Zm9yIChpID0gMTsgaSA8PSBuOyArK2kpIHsKKyAgICAgIHlbaSAtIDFdID0geGhbaSAtIDFdOwor
ICAgIH0KKyAgICBmb3IgKGkgPSAxOyBpIDw9IG47ICsraSkgeworICAgICAgeFtpIC0gMV0gPSAw
LmY7CisgICAgICBhcmcgPSAocmVhbCkgKGkgLSAxKSAqIGR0OworICAgICAgZm9yIChrID0gMTsg
ayA8PSBuOyArK2spIHsKKyAgICAgICAgeFtpIC0gMV0gKz0geVtrIC0gMV0gKiBjb3MoKHJlYWwp
IChrICsgayAtIDEpICogYXJnKTsKKyAgICAgIH0KKyAgICAgIHhbaSAtIDFdICo9IDQuZjsKKyAg
ICB9CisgICAgY29zcWkobiwgdyk7CisgICAgY29zcWIobiwgeSwgdyk7CisgICAgY29zcWJ0ID0g
MC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICAvKiBDb21wdXRpbmcg
TUFYICovCisgICAgICByMiA9IGNvc3FidCwgcjMgPSAocjEgPSB4W2kgLSAxXSAtIHlbaSAtIDFd
LCBmYWJzKHIxKSkKKyAgICAgICAgOworICAgICAgY29zcWJ0ID0gZG1heChyMixyMyk7CisgICAg
ICB4W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICB9CisgICAgY29zcWJ0ID0gY2YgKiBjb3NxYnQ7
CisgICAgZm9yIChpID0gMTsgaSA8PSBuOyArK2kpIHsKKyAgICAgIHlbaSAtIDFdID0geFswXSAq
IC41ZjsKKyAgICAgIGFyZyA9IChyZWFsKSAoaSArIGkgLSAxKSAqIGR0OworICAgICAgZm9yIChr
ID0gMjsgayA8PSBuOyArK2spIHsKKyAgICAgICAgeVtpIC0gMV0gKz0geFtrIC0gMV0gKiBjb3Mo
KHJlYWwpIChrIC0gMSkgKiBhcmcpOworICAgICAgfQorICAgICAgeVtpIC0gMV0gKz0geVtpIC0g
MV07CisgICAgfQorICAgIGNvc3FmKG4sIHgsIHcpOworICAgIGNvc3FmdCA9IDAuZjsKKyAgICBm
b3IgKGkgPSAxOyBpIDw9IG47ICsraSkgeworICAgICAgLyogQ29tcHV0aW5nIE1BWCAqLworICAg
ICAgcjIgPSBjb3NxZnQsIHIzID0gKHIxID0geVtpIC0gMV0gLSB4W2kgLSAxXSwgZmFicyhyMSkp
CisgICAgICAgIDsKKyAgICAgIGNvc3FmdCA9IGRtYXgocjIscjMpOworICAgICAgeFtpIC0gMV0g
PSB4aFtpIC0gMV07CisgICAgICB5W2kgLSAxXSA9IHhoW2kgLSAxXTsKKyAgICB9CisgICAgY29z
cWZ0ID0gY2YgKiBjb3NxZnQ7CisgICAgY29zcWIobiwgeCwgdyk7CisgICAgY29zcWYobiwgeCwg
dyk7CisgICAgY29zcWZiID0gMC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7Cisg
ICAgICAvKiBDb21wdXRpbmcgTUFYICovCisgICAgICByMiA9IGNvc3FmYiwgcjMgPSAocjEgPSBj
ZiAqIHhbaSAtIDFdIC0geVtpIC0gMV0sIGZhYnMocjEpKTsKKyAgICAgIGNvc3FmYiA9IGRtYXgo
cjIscjMpOworICAgIH0KKworICAgIC8qICAgICBURVNUICBDRkZUSSxDRkZURixDRkZUQiAqLwor
CisgICAgZm9yIChpID0gMTsgaSA8PSBuOyArK2kpIHsKKyAgICAgIHIxID0gY29zKHNxcnQyICog
KHJlYWwpIGkpOworICAgICAgcjIgPSBzaW4oc3FydDIgKiAocmVhbCkgKGkgKiBpKSk7CisgICAg
ICBxMS5yID0gcjEsIHExLmkgPSByMjsKKyAgICAgIGN4W2ktMV0uciA9IHExLnIsIGN4W2ktMV0u
aSA9IHExLmk7CisgICAgfQorICAgIGR0ID0gKDIqTV9QSSkgLyBmbjsKKyAgICBmb3IgKGkgPSAx
OyBpIDw9IG47ICsraSkgeworICAgICAgYXJnMSA9IC0oKHJlYWwpIChpIC0gMSkpICogZHQ7Cisg
ICAgICBjeVtpLTFdLnIgPSAwLmYsIGN5W2ktMV0uaSA9IDAuZjsKKyAgICAgIGZvciAoayA9IDE7
IGsgPD0gbjsgKytrKSB7CisgICAgICAgIGFyZzIgPSAocmVhbCkgKGsgLSAxKSAqIGFyZzE7Cisg
ICAgICAgIHIxID0gY29zKGFyZzIpOworICAgICAgICByMiA9IHNpbihhcmcyKTsKKyAgICAgICAg
cTMuciA9IHIxLCBxMy5pID0gcjI7CisgICAgICAgIHEyLnIgPSBxMy5yICogY3hbay0xXS5yIC0g
cTMuaSAqIGN4W2stMV0uaSwgcTIuaSA9IAorICAgICAgICAgIHEzLnIgKiBjeFtrLTFdLmkgKyBx
My5pICogY3hbay0xXS5yOworICAgICAgICBxMS5yID0gY3lbaS0xXS5yICsgcTIuciwgcTEuaSA9
IGN5W2ktMV0uaSArIHEyLmk7CisgICAgICAgIGN5W2ktMV0uciA9IHExLnIsIGN5W2ktMV0uaSA9
IHExLmk7CisgICAgICB9CisgICAgfQorICAgIGNmZnRpKG4sIHcpOworICAgIGNmZnRmKG4sIChy
ZWFsKiljeCwgdyk7CisgICAgZGNmZnRmID0gMC5mOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsg
KytpKSB7CisgICAgICAvKiBDb21wdXRpbmcgTUFYICovCisgICAgICBxMS5yID0gY3hbaS0xXS5y
IC0gY3lbaS0xXS5yLCBxMS5pID0gY3hbaS0xXS5pIC0gY3lbaS0xXQorICAgICAgICAuaTsKKyAg
ICAgIHIxID0gZGNmZnRmLCByMiA9IGNfYWJzKCZxMSk7CisgICAgICBkY2ZmdGYgPSBkbWF4KHIx
LHIyKTsKKyAgICAgIHExLnIgPSBjeFtpLTFdLnIgLyBmbiwgcTEuaSA9IGN4W2ktMV0uaSAvIGZu
OworICAgICAgY3hbaS0xXS5yID0gcTEuciwgY3hbaS0xXS5pID0gcTEuaTsKKyAgICB9CisgICAg
ZGNmZnRmIC89IGZuOworICAgIGZvciAoaSA9IDE7IGkgPD0gbjsgKytpKSB7CisgICAgICBhcmcx
ID0gKHJlYWwpIChpIC0gMSkgKiBkdDsKKyAgICAgIGN5W2ktMV0uciA9IDAuZiwgY3lbaS0xXS5p
ID0gMC5mOworICAgICAgZm9yIChrID0gMTsgayA8PSBuOyArK2spIHsKKyAgICAgICAgYXJnMiA9
IChyZWFsKSAoayAtIDEpICogYXJnMTsKKyAgICAgICAgcjEgPSBjb3MoYXJnMik7CisgICAgICAg
IHIyID0gc2luKGFyZzIpOworICAgICAgICBxMy5yID0gcjEsIHEzLmkgPSByMjsKKyAgICAgICAg
cTIuciA9IHEzLnIgKiBjeFtrLTFdLnIgLSBxMy5pICogY3hbay0xXS5pLCBxMi5pID0gCisgICAg
ICAgICAgcTMuciAqIGN4W2stMV0uaSArIHEzLmkgKiBjeFtrLTFdLnI7CisgICAgICAgIHExLnIg
PSBjeVtpLTFdLnIgKyBxMi5yLCBxMS5pID0gY3lbaS0xXS5pICsgcTIuaTsKKyAgICAgICAgY3lb
aS0xXS5yID0gcTEuciwgY3lbaS0xXS5pID0gcTEuaTsKKyAgICAgIH0KKyAgICB9CisgICAgY2Zm
dGIobiwgKHJlYWwqKWN4LCB3KTsKKyAgICBkY2ZmdGIgPSAwLmY7CisgICAgZm9yIChpID0gMTsg
aSA8PSBuOyArK2kpIHsKKyAgICAgIC8qIENvbXB1dGluZyBNQVggKi8KKyAgICAgIHExLnIgPSBj
eFtpLTFdLnIgLSBjeVtpLTFdLnIsIHExLmkgPSBjeFtpLTFdLmkgLSBjeVtpLTFdLmk7CisgICAg
ICByMSA9IGRjZmZ0YiwgcjIgPSBjX2FicygmcTEpOworICAgICAgZGNmZnRiID0gZG1heChyMSxy
Mik7CisgICAgICBjeFtpLTFdLnIgPSBjeVtpLTFdLnIsIGN4W2ktMV0uaSA9IGN5W2ktMV0uaTsK
KyAgICB9CisgICAgY2YgPSAxLmYgLyBmbjsKKyAgICBjZmZ0ZihuLCAocmVhbCopY3gsIHcpOwor
ICAgIGNmZnRiKG4sIChyZWFsKiljeCwgdyk7CisgICAgZGNmYiA9IDAuZjsKKyAgICBmb3IgKGkg
PSAxOyBpIDw9IG47ICsraSkgeworICAgICAgLyogQ29tcHV0aW5nIE1BWCAqLworICAgICAgcTIu
ciA9IGNmICogY3hbaS0xXS5yLCBxMi5pID0gY2YgKiBjeFtpLTFdLmk7CisgICAgICBxMS5yID0g
cTIuciAtIGN5W2ktMV0uciwgcTEuaSA9IHEyLmkgLSBjeVtpLTFdLmk7CisgICAgICByMSA9IGRj
ZmIsIHIyID0gY19hYnMoJnExKTsKKyAgICAgIGRjZmIgPSBkbWF4KHIxLHIyKTsKKyAgICB9Cisg
ICAgcHJpbnRmKCIlZFx0UkZGVEYgICUxMC4zZ1x0UkZGVEIgICUxMC5nZVx0UkZGVEZCICUxMC4z
ZyIsIG4sIHJmdGYsIHJmdGIsIHJmdGZiKTsKKyAgICBwcmludGYoICAiXHRTSU5UICAgJTEwLjNn
XHRTSU5URkIgJTEwLmdlXHRDT1NUICAgJTEwLjNnXG4iLCBzaW50dCwgc2ludGZiLCBjb3N0dCk7
CisgICAgcHJpbnRmKCAgIlx0Q09TVEZCICUxMC4zZ1x0U0lOUUYgICUxMC5nZVx0U0lOUUIgICUx
MC4zZyIsIGNvc3RmYiwgc2lucWZ0LCBzaW5xYnQpOworICAgIHByaW50ZiggICJcdFNJTlFGQiAl
MTAuM2dcdENPU1FGICAlMTAuZ2VcdENPU1FCICAlMTAuM2dcbiIsIHNpbnFmYiwgY29zcWZ0LCBj
b3NxYnQpOworICAgIHByaW50ZiggICJcdENPU1FGQiAlMTAuM2dcdCIsIGNvc3FmYik7CisgICAg
cHJpbnRmKCAgIlx0Q0ZGVEYgICUxMC5nZVx0Q0ZGVEIgICUxMC4zZ1xuIiwgZGNmZnRmLCBkY2Zm
dGIpOworICAgIHByaW50ZiggICJcdENGRlRGQiAlMTAuM2dcbiIsIGRjZmIpOworCisjZGVmaW5l
IENIRUNLKHgpIGlmICh4ID4gMWUtMykgeyBwcmludGYoI3ggIiBmYWlsZWQ6ICVnXG4iLCB4KTsg
YWxsX29rID0gMDsgfQorICAgIENIRUNLKHJmdGYpOyBDSEVDSyhyZnRiKTsgQ0hFQ0socmZ0ZmIp
OyBDSEVDSyhzaW50dCk7IENIRUNLKHNpbnRmYik7IENIRUNLKGNvc3R0KTsKKyAgICBDSEVDSyhj
b3N0ZmIpOyBDSEVDSyhzaW5xZnQpOyBDSEVDSyhzaW5xYnQpOyBDSEVDSyhzaW5xZmIpOyBDSEVD
Syhjb3NxZnQpOyBDSEVDSyhjb3NxYnQpOworICAgIENIRUNLKGNvc3FmYik7IENIRUNLKGRjZmZ0
Zik7IENIRUNLKGRjZmZ0Yik7CisgIH0KKworICBpZiAoYWxsX29rKSBwcmludGYoIkV2ZXJ5dGhp
bmcgbG9va3MgZmluZS5cbiIpOyAKKyAgZWxzZSBwcmludGYoIkVSUk9SUyBXRVJFIERFVEVDVEVE
LlxuIik7CisgIC8qCisgICAgZXhwZWN0ZWQ6CisgICAgMTIwICAgICBSRkZURiAgIDIuNzg2ZS0w
NiAgICAgICBSRkZUQiAgIDYuODQ3ZS0wNCAgICAgICBSRkZURkIgIDIuNzk1ZS0wNyAgICAgICBT
SU5UICAgIDEuMzEyZS0wNiAgICAgICBTSU5URkIgIDEuMjM3ZS0wNiAgICAgICBDT1NUICAgIDEu
MzE5ZS0wNgorICAgIENPU1RGQiAgNC4zNTVlLTA2ICAgICAgIFNJTlFGICAgMy4yODFlLTA0ICAg
ICAgIFNJTlFCICAgMS44NzZlLTA2ICAgICAgIFNJTlFGQiAgMi4xOThlLTA3ICAgICAgIENPU1FG
ICAgNi4xOTllLTA3ICAgICAgIENPU1FCICAgMi4xOTNlLTA2CisgICAgQ09TUUZCICAyLjMwMGUt
MDcgICAgICAgREVaRiAgICA1LjU3M2UtMDYgICAgICAgREVaQiAgICAxLjM2M2UtMDUgICAgICAg
REVaRkIgICAxLjM3MWUtMDYgICAgICAgQ0ZGVEYgICA1LjU5MGUtMDYgICAgICAgQ0ZGVEIgICA0
Ljc1MWUtMDUKKyAgICBDRkZURkIgIDQuMjE1ZS0wNworICAgIDU0ICAgICAgUkZGVEYgICA0Ljcw
OGUtMDcgICAgICAgUkZGVEIgICAzLjA1MmUtMDUgICAgICAgUkZGVEZCICAzLjQzOWUtMDcgICAg
ICAgU0lOVCAgICAzLjUzMmUtMDcgICAgICAgU0lOVEZCICA0LjE0NWUtMDcgICAgICAgQ09TVCAg
ICAzLjAwMmUtMDcKKyAgICBDT1NURkIgIDYuMzQzZS0wNyAgICAgICBTSU5RRiAgIDQuOTU5ZS0w
NSAgICAgICBTSU5RQiAgIDQuNDE1ZS0wNyAgICAgICBTSU5RRkIgIDIuODgyZS0wNyAgICAgICBD
T1NRRiAgIDIuODI2ZS0wNyAgICAgICBDT1NRQiAgIDIuNDcyZS0wNworICAgIENPU1FGQiAgMy40
MzllLTA3ICAgICAgIERFWkYgICAgOS4zODhlLTA3ICAgICAgIERFWkIgICAgNS4wNjZlLTA2ICAg
ICAgIERFWkZCICAgNS45NjBlLTA3ICAgICAgIENGRlRGICAgMS40MjZlLTA2ICAgICAgIENGRlRC
ICAgOS40ODJlLTA2CisgICAgQ0ZGVEZCICAyLjk4MGUtMDcKKyAgICA0OSAgICAgIFJGRlRGICAg
NC40NzZlLTA3ICAgICAgIFJGRlRCICAgNS4zNDFlLTA1ICAgICAgIFJGRlRGQiAgMi41NzRlLTA3
ICAgICAgIFNJTlQgICAgOS4xOTZlLTA3ICAgICAgIFNJTlRGQiAgOS40MDFlLTA3ICAgICAgIENP
U1QgICAgOC4xNzRlLTA3CisgICAgQ09TVEZCICAxLjMzMWUtMDYgICAgICAgU0lOUUYgICA0LjAw
NWUtMDUgICAgICAgU0lOUUIgICA5LjM0MmUtMDcgICAgICAgU0lOUUZCICAzLjA1N2UtMDcgICAg
ICAgQ09TUUYgICAyLjUzMGUtMDcgICAgICAgQ09TUUIgICA2LjIyOGUtMDcKKyAgICBDT1NRRkIg
IDQuODI2ZS0wNyAgICAgICBERVpGICAgIDkuMDcxZS0wNyAgICAgICBERVpCICAgIDQuNTkwZS0w
NiAgICAgICBERVpGQiAgIDUuOTYwZS0wNyAgICAgICBDRkZURiAgIDIuMDk1ZS0wNiAgICAgICBD
RkZUQiAgIDEuNDE0ZS0wNQorICAgIENGRlRGQiAgNy4zOThlLTA3CisgICAgMzIgICAgICBSRkZU
RiAgIDQuNjE5ZS0wNyAgICAgICBSRkZUQiAgIDIuODYxZS0wNSAgICAgICBSRkZURkIgIDEuMTky
ZS0wNyAgICAgICBTSU5UICAgIDMuODc0ZS0wNyAgICAgICBTSU5URkIgIDQuMTcyZS0wNyAgICAg
ICBDT1NUICAgIDQuMTcyZS0wNworICAgIENPU1RGQiAgMS42OTllLTA2ICAgICAgIFNJTlFGICAg
Mi41NTFlLTA1ICAgICAgIFNJTlFCICAgNi40MDdlLTA3ICAgICAgIFNJTlFGQiAgMi45ODBlLTA3
ICAgICAgIENPU1FGICAgMS42MzllLTA3ICAgICAgIENPU1FCICAgMS43MTRlLTA3CisgICAgQ09T
UUZCICAyLjM4NGUtMDcgICAgICAgREVaRiAgICAxLjAxM2UtMDYgICAgICAgREVaQiAgICAyLjMz
OWUtMDYgICAgICAgREVaRkIgICA3Ljc0OWUtMDcgICAgICAgQ0ZGVEYgICAxLjEyN2UtMDYgICAg
ICAgQ0ZGVEIgICA2Ljc0NGUtMDYKKyAgICBDRkZURkIgIDIuNjY2ZS0wNworICAgIDQgICAgICAg
UkZGVEYgICAxLjQ5MGUtMDggICAgICAgUkZGVEIgICAxLjQ5MGUtMDcgICAgICAgUkZGVEZCICA1
Ljk2MGUtMDggICAgICAgU0lOVCAgICA3LjQ1MWUtMDkgICAgICAgU0lOVEZCICAwLjAwMGUrMDAg
ICAgICAgQ09TVCAgICAyLjk4MGUtMDgKKyAgICBDT1NURkIgIDEuMTkyZS0wNyAgICAgICBTSU5R
RiAgIDQuNzY4ZS0wNyAgICAgICBTSU5RQiAgIDIuOTgwZS0wOCAgICAgICBTSU5RRkIgIDUuOTYw
ZS0wOCAgICAgICBDT1NRRiAgIDIuNjA4ZS0wOCAgICAgICBDT1NRQiAgIDUuOTYwZS0wOAorICAg
IENPU1FGQiAgMS4xOTJlLTA3ICAgICAgIERFWkYgICAgMi45ODBlLTA4ICAgICAgIERFWkIgICAg
NS45NjBlLTA4ICAgICAgIERFWkZCICAgMC4wMDBlKzAwICAgICAgIENGRlRGICAgNi42NjRlLTA4
ICAgICAgIENGRlRCICAgNS45NjBlLTA4CisgICAgQ0ZGVEZCICA2LjE0NGUtMDgKKyAgICAzICAg
ICAgIFJGRlRGICAgMy45NzRlLTA4ICAgICAgIFJGRlRCICAgMS4xOTJlLTA3ICAgICAgIFJGRlRG
QiAgMy4zMDNlLTA4ICAgICAgIFNJTlQgICAgMS45ODdlLTA4ICAgICAgIFNJTlRGQiAgMS4wNjll
LTA4ICAgICAgIENPU1QgICAgNC45NjdlLTA4CisgICAgQ09TVEZCICA1LjcyMWUtMDggICAgICAg
U0lOUUYgICA4Ljk0MWUtMDggICAgICAgU0lOUUIgICAyLjk4MGUtMDggICAgICAgU0lOUUZCICAx
LjI1OWUtMDcgICAgICAgQ09TUUYgICA3LjQ1MWUtMDkgICAgICAgQ09TUUIgICA0Ljk2N2UtMDgK
KyAgICBDT1NRRkIgIDcuMDI5ZS0wOCAgICAgICBERVpGICAgIDEuMTkyZS0wNyAgICAgICBERVpC
ICAgIDUuOTYwZS0wOCAgICAgICBERVpGQiAgIDUuOTYwZS0wOCAgICAgICBDRkZURiAgIDcuOTQ3
ZS0wOCAgICAgICBDRkZUQiAgIDguNDI5ZS0wOAorICAgIENGRlRGQiAgOS4wNjRlLTA4CisgICAg
MiAgICAgICBSRkZURiAgIDAuMDAwZSswMCAgICAgICBSRkZUQiAgIDAuMDAwZSswMCAgICAgICBS
RkZURkIgIDAuMDAwZSswMCAgICAgICBTSU5UICAgIDAuMDAwZSswMCAgICAgICBTSU5URkIgIDAu
MDAwZSswMCAgICAgICBDT1NUICAgIDAuMDAwZSswMAorICAgIENPU1RGQiAgMC4wMDBlKzAwICAg
ICAgIFNJTlFGICAgMS4xOTJlLTA3ICAgICAgIFNJTlFCICAgMi45ODBlLTA4ICAgICAgIFNJTlFG
QiAgNS45NjBlLTA4ICAgICAgIENPU1FGICAgNy40NTFlLTA5ICAgICAgIENPU1FCICAgMS40OTBl
LTA4CisgICAgQ09TUUZCICAwLjAwMGUrMDAgICAgICAgREVaRiAgICAwLjAwMGUrMDAgICAgICAg
REVaQiAgICAwLjAwMGUrMDAgICAgICAgREVaRkIgICAwLjAwMGUrMDAgICAgICAgQ0ZGVEYgICAw
LjAwMGUrMDAgICAgICAgQ0ZGVEIgICA1Ljk2MGUtMDgKKyAgICBDRkZURkIgIDUuOTYwZS0wOAor
ICAgIEV2ZXJ5dGhpbmcgbG9va3MgZmluZS4KKworICAqLworCisgIHJldHVybiBhbGxfb2sgPyAw
IDogMTsKK30KKyNlbmRpZiAvL1RFU1RJTkdfRkZUUEFDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvZmZ0cGFjay5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9z
cmMvZmZ0cGFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MWJjYzYxZGE4NDc5NWM4YTBkOWVlZjM0ZTViNGE0
MTA4NTIwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9mZnRwYWNrLmgKQEAgLTAsMCArMSw3OTkgQEAK
Ky8qCisgIEludGVyZmFjZSBmb3IgdGhlIGYyYyB0cmFuc2xhdGlvbiBvZiBmZnRwYWNrIGFzIGZv
dW5kIG9uIGh0dHA6Ly93d3cubmV0bGliLm9yZy9mZnRwYWNrLworICAKKyAgIEZGVFBBQ0sgbGlj
ZW5zZToKKworICAgaHR0cDovL3d3dy5jaXNsLnVjYXIuZWR1L2Nzcy9zb2Z0d2FyZS9mZnRwYWNr
NS9mdHBrLmh0bWwKKworICAgQ29weXJpZ2h0IChjKSAyMDA0IHRoZSBVbml2ZXJzaXR5IENvcnBv
cmF0aW9uIGZvciBBdG1vc3BoZXJpYworICAgUmVzZWFyY2ggKCJVQ0FSIikuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIERldmVsb3BlZCBieSBOQ0FSJ3MKKyAgIENvbXB1dGF0aW9uYWwgYW5kIEluZm9y
bWF0aW9uIFN5c3RlbXMgTGFib3JhdG9yeSwgVUNBUiwKKyAgIHd3dy5jaXNsLnVjYXIuZWR1Lgor
CisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoZSBTb2Z0d2FyZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3JtcywKKyAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
KworICAgLSBOZWl0aGVyIHRoZSBuYW1lcyBvZiBOQ0FSJ3MgQ29tcHV0YXRpb25hbCBhbmQgSW5m
b3JtYXRpb24gU3lzdGVtcworICAgTGFib3JhdG9yeSwgdGhlIFVuaXZlcnNpdHkgQ29ycG9yYXRp
b24gZm9yIEF0bW9zcGhlcmljIFJlc2VhcmNoLAorICAgbm9yIHRoZSBuYW1lcyBvZiBpdHMgc3Bv
bnNvcnMgb3IgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvCisgICBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29mdHdhcmUgd2l0aG91dAorICAgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAgCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZXMs
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGRpc2NsYWltZXIgYmVsb3cuCisKKyAg
IC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUg
ZGlzY2xhaW1lciBiZWxvdyBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICAgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
CisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORAorICAgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09OVFJJQlVUT1JTIE9SIENPUFlSSUdIVAorICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4K
KyAgIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwg
T1VUIE9GIE9SIElOCisgICBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIgREVBTElOR1MgV0lUSCBUSEUKKyAgIFNPRlRXQVJFLgorCisgICBDaGFuZ2VMb2c6
CisgICAyMDExLzEwLzAyOiB0aGlzIGlzIG15IGZpcnN0IHJlbGVhc2Ugb2YgdGhpcyBmaWxlLgor
Ki8KKworI2lmbmRlZiBGRlRQQUNLX0gKKyNkZWZpbmUgRkZUUEFDS19ICisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8ganVzdCBkZWZpbmUgRkZUUEFDS19E
T1VCTEVfUFJFQ0lTSU9OIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGl0IGFzIGEgZG91YmxlIHByZWNp
c2lvbiBmZnQKKworI2lmbmRlZiBGRlRQQUNLX0RPVUJMRV9QUkVDSVNJT04KKyAgdHlwZWRlZiBm
bG9hdCBmZnRwYWNrX3JlYWw7CisgIHR5cGVkZWYgaW50ICAgZmZ0cGFja19pbnQ7CisjZWxzZQor
ICB0eXBlZGVmIGRvdWJsZSBmZnRwYWNrX3JlYWw7CisgIHR5cGVkZWYgaW50ICAgIGZmdHBhY2tf
aW50OworI2VuZGlmCisKKyAgdm9pZCBjZmZ0aShmZnRwYWNrX2ludCBuLCBmZnRwYWNrX3JlYWwg
KndzYXZlKTsKKworICB2b2lkIGNmZnRmKGZmdHBhY2tfaW50IG4sIGZmdHBhY2tfcmVhbCAqYywg
ZmZ0cGFja19yZWFsICp3c2F2ZSk7CisKKyAgdm9pZCBjZmZ0YihmZnRwYWNrX2ludCBuLCBmZnRw
YWNrX3JlYWwgKmMsIGZmdHBhY2tfcmVhbCAqd3NhdmUpOworCisgIHZvaWQgcmZmdGkoZmZ0cGFj
a19pbnQgbiwgZmZ0cGFja19yZWFsICp3c2F2ZSk7CisgIHZvaWQgcmZmdGYoZmZ0cGFja19pbnQg
biwgZmZ0cGFja19yZWFsICpyLCBmZnRwYWNrX3JlYWwgKndzYXZlKTsKKyAgdm9pZCByZmZ0Yihm
ZnRwYWNrX2ludCBuLCBmZnRwYWNrX3JlYWwgKnIsIGZmdHBhY2tfcmVhbCAqd3NhdmUpOworCisg
IHZvaWQgY29zcWkoZmZ0cGFja19pbnQgbiwgZmZ0cGFja19yZWFsICp3c2F2ZSk7CisgIHZvaWQg
Y29zcWYoZmZ0cGFja19pbnQgbiwgZmZ0cGFja19yZWFsICp4LCBmZnRwYWNrX3JlYWwgKndzYXZl
KTsKKyAgdm9pZCBjb3NxYihmZnRwYWNrX2ludCBuLCBmZnRwYWNrX3JlYWwgKngsIGZmdHBhY2tf
cmVhbCAqd3NhdmUpOworCisgIHZvaWQgY29zdGkoZmZ0cGFja19pbnQgbiwgZmZ0cGFja19yZWFs
ICp3c2F2ZSk7CisgIHZvaWQgY29zdChmZnRwYWNrX2ludCBuLCBmZnRwYWNrX3JlYWwgKngsIGZm
dHBhY2tfcmVhbCAqd3NhdmUpOworCisgIHZvaWQgc2lucWkoZmZ0cGFja19pbnQgbiwgZmZ0cGFj
a19yZWFsICp3c2F2ZSk7CisgIHZvaWQgc2lucWIoZmZ0cGFja19pbnQgbiwgZmZ0cGFja19yZWFs
ICp4LCBmZnRwYWNrX3JlYWwgKndzYXZlKTsKKyAgdm9pZCBzaW5xZihmZnRwYWNrX2ludCBuLCBm
ZnRwYWNrX3JlYWwgKngsIGZmdHBhY2tfcmVhbCAqd3NhdmUpOworCisgIHZvaWQgc2ludGkoZmZ0
cGFja19pbnQgbiwgZmZ0cGFja19yZWFsICp3c2F2ZSk7CisgIHZvaWQgc2ludChmZnRwYWNrX2lu
dCBuLCBmZnRwYWNrX3JlYWwgKngsIGZmdHBhY2tfcmVhbCAqd3NhdmUpOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogRkZUUEFDS19IICovCisKKy8qCisKKyAg
ICAgICAgICAgICAgICAgICAgICBGRlRQQUNLCisKKyogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCisKKyAgICAgICAgICAgICAg
ICAgIHZlcnNpb24gNCAgYXByaWwgMTk4NQorCisgICAgIGEgcGFja2FnZSBvZiBmb3J0cmFuIHN1
YnByb2dyYW1zIGZvciB0aGUgZmFzdCBmb3VyaWVyCisgICAgICB0cmFuc2Zvcm0gb2YgcGVyaW9k
aWMgYW5kIG90aGVyIHN5bW1ldHJpYyBzZXF1ZW5jZXMKKworICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ5CisKKyAgICAgICAgICAgICAgICAgIHBhdWwgbiBzd2FyenRyYXViZXIKKworICBuYXRp
b25hbCBjZW50ZXIgZm9yIGF0bW9zcGhlcmljIHJlc2VhcmNoICBib3VsZGVyLGNvbG9yYWRvIDgw
MzA3CisKKyAgIHdoaWNoIGlzIHNwb25zb3JlZCBieSB0aGUgbmF0aW9uYWwgc2NpZW5jZSBmb3Vu
ZGF0aW9uCisKKyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqCisKKwordGhpcyBwYWNrYWdlIGNvbnNpc3RzIG9mIHByb2dyYW1z
IHdoaWNoIHBlcmZvcm0gZmFzdCBmb3VyaWVyCit0cmFuc2Zvcm1zIGZvciBib3RoIGNvbXBsZXgg
YW5kIHJlYWwgcGVyaW9kaWMgc2VxdWVuY2VzIGFuZAorY2VydGFpbiBvdGhlciBzeW1tZXRyaWMg
c2VxdWVuY2VzIHRoYXQgYXJlIGxpc3RlZCBiZWxvdy4KKworMS4gICByZmZ0aSAgICAgaW5pdGlh
bGl6ZSAgcmZmdGYgYW5kIHJmZnRiCisyLiAgIHJmZnRmICAgICBmb3J3YXJkIHRyYW5zZm9ybSBv
ZiBhIHJlYWwgcGVyaW9kaWMgc2VxdWVuY2UKKzMuICAgcmZmdGIgICAgIGJhY2t3YXJkIHRyYW5z
Zm9ybSBvZiBhIHJlYWwgY29lZmZpY2llbnQgYXJyYXkKKworNC4gICBlemZmdGkgICAgaW5pdGlh
bGl6ZSBlemZmdGYgYW5kIGV6ZmZ0YgorNS4gICBlemZmdGYgICAgYSBzaW1wbGlmaWVkIHJlYWwg
cGVyaW9kaWMgZm9yd2FyZCB0cmFuc2Zvcm0KKzYuICAgZXpmZnRiICAgIGEgc2ltcGxpZmllZCBy
ZWFsIHBlcmlvZGljIGJhY2t3YXJkIHRyYW5zZm9ybQorCis3LiAgIHNpbnRpICAgICBpbml0aWFs
aXplIHNpbnQKKzguICAgc2ludCAgICAgIHNpbmUgdHJhbnNmb3JtIG9mIGEgcmVhbCBvZGQgc2Vx
dWVuY2UKKworOS4gICBjb3N0aSAgICAgaW5pdGlhbGl6ZSBjb3N0CisxMC4gIGNvc3QgICAgICBj
b3NpbmUgdHJhbnNmb3JtIG9mIGEgcmVhbCBldmVuIHNlcXVlbmNlCisKKzExLiAgc2lucWkgICAg
IGluaXRpYWxpemUgc2lucWYgYW5kIHNpbnFiCisxMi4gIHNpbnFmICAgICBmb3J3YXJkIHNpbmUg
dHJhbnNmb3JtIHdpdGggb2RkIHdhdmUgbnVtYmVycworMTMuICBzaW5xYiAgICAgdW5ub3JtYWxp
emVkIGludmVyc2Ugb2Ygc2lucWYKKworMTQuICBjb3NxaSAgICAgaW5pdGlhbGl6ZSBjb3NxZiBh
bmQgY29zcWIKKzE1LiAgY29zcWYgICAgIGZvcndhcmQgY29zaW5lIHRyYW5zZm9ybSB3aXRoIG9k
ZCB3YXZlIG51bWJlcnMKKzE2LiAgY29zcWIgICAgIHVubm9ybWFsaXplZCBpbnZlcnNlIG9mIGNv
c3FmCisKKzE3LiAgY2ZmdGkgICAgIGluaXRpYWxpemUgY2ZmdGYgYW5kIGNmZnRiCisxOC4gIGNm
ZnRmICAgICBmb3J3YXJkIHRyYW5zZm9ybSBvZiBhIGNvbXBsZXggcGVyaW9kaWMgc2VxdWVuY2UK
KzE5LiAgY2ZmdGIgICAgIHVubm9ybWFsaXplZCBpbnZlcnNlIG9mIGNmZnRmCisKKworKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisKK3N1YnJvdXRpbmUgcmZmdGkobix3c2F2ZSkKKworICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3N1YnJvdXRp
bmUgcmZmdGkgaW5pdGlhbGl6ZXMgdGhlIGFycmF5IHdzYXZlIHdoaWNoIGlzIHVzZWQgaW4KK2Jv
dGggcmZmdGYgYW5kIHJmZnRiLiB0aGUgcHJpbWUgZmFjdG9yaXphdGlvbiBvZiBuIHRvZ2V0aGVy
IHdpdGgKK2EgdGFidWxhdGlvbiBvZiB0aGUgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgYXJlIGNv
bXB1dGVkIGFuZAorc3RvcmVkIGluIHdzYXZlLgorCitpbnB1dCBwYXJhbWV0ZXIKKworbiAgICAg
ICB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0byBiZSB0cmFuc2Zvcm1lZC4KKworb3V0cHV0
IHBhcmFtZXRlcgorCit3c2F2ZSAgIGEgd29yayBhcnJheSB3aGljaCBtdXN0IGJlIGRpbWVuc2lv
bmVkIGF0IGxlYXN0IDIqbisxNS4KKyAgICAgICAgdGhlIHNhbWUgd29yayBhcnJheSBjYW4gYmUg
dXNlZCBmb3IgYm90aCByZmZ0ZiBhbmQgcmZmdGIKKyAgICAgICAgYXMgbG9uZyBhcyBuIHJlbWFp
bnMgdW5jaGFuZ2VkLiBkaWZmZXJlbnQgd3NhdmUgYXJyYXlzCisgICAgICAgIGFyZSByZXF1aXJl
ZCBmb3IgZGlmZmVyZW50IHZhbHVlcyBvZiBuLiB0aGUgY29udGVudHMgb2YKKyAgICAgICAgd3Nh
dmUgbXVzdCBub3QgYmUgY2hhbmdlZCBiZXR3ZWVuIGNhbGxzIG9mIHJmZnRmIG9yIHJmZnRiLgor
CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKworc3Vicm91dGluZSByZmZ0ZihuLHIsd3NhdmUpCisKKyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
CitzdWJyb3V0aW5lIHJmZnRmIGNvbXB1dGVzIHRoZSBmb3VyaWVyIGNvZWZmaWNpZW50cyBvZiBh
IHJlYWwKK3Blcm9kaWMgc2VxdWVuY2UgKGZvdXJpZXIgYW5hbHlzaXMpLiB0aGUgdHJhbnNmb3Jt
IGlzIGRlZmluZWQKK2JlbG93IGF0IG91dHB1dCBwYXJhbWV0ZXIgci4KKworaW5wdXQgcGFyYW1l
dGVycworCituICAgICAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHIgdG8gYmUgdHJhbnNmb3Jt
ZWQuICB0aGUgbWV0aG9kCisgICAgICAgIGlzIG1vc3QgZWZmaWNpZW50IHdoZW4gbiBpcyBhIHBy
b2R1Y3Qgb2Ygc21hbGwgcHJpbWVzLgorICAgICAgICBuIG1heSBjaGFuZ2Ugc28gbG9uZyBhcyBk
aWZmZXJlbnQgd29yayBhcnJheXMgYXJlIHByb3ZpZGVkCisKK3IgICAgICAgYSByZWFsIGFycmF5
IG9mIGxlbmd0aCBuIHdoaWNoIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZQorICAgICAgICB0byBiZSB0
cmFuc2Zvcm1lZAorCit3c2F2ZSAgIGEgd29yayBhcnJheSB3aGljaCBtdXN0IGJlIGRpbWVuc2lv
bmVkIGF0IGxlYXN0IDIqbisxNS4KKyAgICAgICAgaW4gdGhlIHByb2dyYW0gdGhhdCBjYWxscyBy
ZmZ0Zi4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAgaW5pdGlhbGl6ZWQgYnkgY2Fs
bGluZyBzdWJyb3V0aW5lIHJmZnRpKG4sd3NhdmUpIGFuZCBhCisgICAgICAgIGRpZmZlcmVudCB3
c2F2ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVyZW50CisgICAgICAgIHZhbHVl
IG9mIG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZQorICAgICAgICBy
ZXBlYXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQgdGh1cyBzdWJzZXF1ZW50Cisg
ICAgICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3RlciB0aGFuIHRoZSBmaXJzdC4K
KyAgICAgICAgdGhlIHNhbWUgd3NhdmUgYXJyYXkgY2FuIGJlIHVzZWQgYnkgcmZmdGYgYW5kIHJm
ZnRiLgorCisKK291dHB1dCBwYXJhbWV0ZXJzCisKK3IgICAgICAgcigxKSA9IHRoZSBzdW0gZnJv
bSBpPTEgdG8gaT1uIG9mIHIoaSkKKworICAgICAgICBpZiBuIGlzIGV2ZW4gc2V0IGwgPW4vMiAg
ICwgaWYgbiBpcyBvZGQgc2V0IGwgPSAobisxKS8yCisKKyAgICAgICAgICB0aGVuIGZvciBrID0g
MiwuLi4sbAorCisgICAgICAgICAgICAgcigyKmstMikgPSB0aGUgc3VtIGZyb20gaSA9IDEgdG8g
aSA9IG4gb2YKKworICAgICAgICAgICAgICAgICAgcihpKSpjb3MoKGstMSkqKGktMSkqMipwaS9u
KQorCisgICAgICAgICAgICAgcigyKmstMSkgPSB0aGUgc3VtIGZyb20gaSA9IDEgdG8gaSA9IG4g
b2YKKworICAgICAgICAgICAgICAgICAtcihpKSpzaW4oKGstMSkqKGktMSkqMipwaS9uKQorCisg
ICAgICAgIGlmIG4gaXMgZXZlbgorCisgICAgICAgICAgICAgcihuKSA9IHRoZSBzdW0gZnJvbSBp
ID0gMSB0byBpID0gbiBvZgorCisgICAgICAgICAgICAgICAgICAoLTEpKiooaS0xKSpyKGkpCisK
KyAqKioqKiAgbm90ZQorICAgICAgICAgICAgIHRoaXMgdHJhbnNmb3JtIGlzIHVubm9ybWFsaXpl
ZCBzaW5jZSBhIGNhbGwgb2YgcmZmdGYKKyAgICAgICAgICAgICBmb2xsb3dlZCBieSBhIGNhbGwg
b2YgcmZmdGIgd2lsbCBtdWx0aXBseSB0aGUgaW5wdXQKKyAgICAgICAgICAgICBzZXF1ZW5jZSBi
eSBuLgorCit3c2F2ZSAgIGNvbnRhaW5zIHJlc3VsdHMgd2hpY2ggbXVzdCBub3QgYmUgZGVzdHJv
eWVkIGJldHdlZW4KKyAgICAgICAgY2FsbHMgb2YgcmZmdGYgb3IgcmZmdGIuCisKKworKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisKK3N1YnJvdXRpbmUgcmZmdGIobixyLHdzYXZlKQorCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vicm91
dGluZSByZmZ0YiBjb21wdXRlcyB0aGUgcmVhbCBwZXJvZGljIHNlcXVlbmNlIGZyb20gaXRzCitm
b3VyaWVyIGNvZWZmaWNpZW50cyAoZm91cmllciBzeW50aGVzaXMpLiB0aGUgdHJhbnNmb3JtIGlz
IGRlZmluZWQKK2JlbG93IGF0IG91dHB1dCBwYXJhbWV0ZXIgci4KKworaW5wdXQgcGFyYW1ldGVy
cworCituICAgICAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHIgdG8gYmUgdHJhbnNmb3JtZWQu
ICB0aGUgbWV0aG9kCisgICAgICAgIGlzIG1vc3QgZWZmaWNpZW50IHdoZW4gbiBpcyBhIHByb2R1
Y3Qgb2Ygc21hbGwgcHJpbWVzLgorICAgICAgICBuIG1heSBjaGFuZ2Ugc28gbG9uZyBhcyBkaWZm
ZXJlbnQgd29yayBhcnJheXMgYXJlIHByb3ZpZGVkCisKK3IgICAgICAgYSByZWFsIGFycmF5IG9m
IGxlbmd0aCBuIHdoaWNoIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZQorICAgICAgICB0byBiZSB0cmFu
c2Zvcm1lZAorCit3c2F2ZSAgIGEgd29yayBhcnJheSB3aGljaCBtdXN0IGJlIGRpbWVuc2lvbmVk
IGF0IGxlYXN0IDIqbisxNS4KKyAgICAgICAgaW4gdGhlIHByb2dyYW0gdGhhdCBjYWxscyByZmZ0
Yi4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAgaW5pdGlhbGl6ZWQgYnkgY2FsbGlu
ZyBzdWJyb3V0aW5lIHJmZnRpKG4sd3NhdmUpIGFuZCBhCisgICAgICAgIGRpZmZlcmVudCB3c2F2
ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVyZW50CisgICAgICAgIHZhbHVlIG9m
IG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZQorICAgICAgICByZXBl
YXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQgdGh1cyBzdWJzZXF1ZW50CisgICAg
ICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3RlciB0aGFuIHRoZSBmaXJzdC4KKyAg
ICAgICAgdGhlIHNhbWUgd3NhdmUgYXJyYXkgY2FuIGJlIHVzZWQgYnkgcmZmdGYgYW5kIHJmZnRi
LgorCisKK291dHB1dCBwYXJhbWV0ZXJzCisKK3IgICAgICAgZm9yIG4gZXZlbiBhbmQgZm9yIGkg
PSAxLC4uLixuCisKKyAgICAgICAgICAgICByKGkpID0gcigxKSsoLTEpKiooaS0xKSpyKG4pCisK
KyAgICAgICAgICAgICAgICAgIHBsdXMgdGhlIHN1bSBmcm9tIGs9MiB0byBrPW4vMiBvZgorCisg
ICAgICAgICAgICAgICAgICAgMi4qcigyKmstMikqY29zKChrLTEpKihpLTEpKjIqcGkvbikKKwor
ICAgICAgICAgICAgICAgICAgLTIuKnIoMiprLTEpKnNpbigoay0xKSooaS0xKSoyKnBpL24pCisK
KyAgICAgICAgZm9yIG4gb2RkIGFuZCBmb3IgaSA9IDEsLi4uLG4KKworICAgICAgICAgICAgIHIo
aSkgPSByKDEpIHBsdXMgdGhlIHN1bSBmcm9tIGs9MiB0byBrPShuKzEpLzIgb2YKKworICAgICAg
ICAgICAgICAgICAgMi4qcigyKmstMikqY29zKChrLTEpKihpLTEpKjIqcGkvbikKKworICAgICAg
ICAgICAgICAgICAtMi4qcigyKmstMSkqc2luKChrLTEpKihpLTEpKjIqcGkvbikKKworICoqKioq
ICBub3RlCisgICAgICAgICAgICAgdGhpcyB0cmFuc2Zvcm0gaXMgdW5ub3JtYWxpemVkIHNpbmNl
IGEgY2FsbCBvZiByZmZ0ZgorICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgY2FsbCBvZiByZmZ0
YiB3aWxsIG11bHRpcGx5IHRoZSBpbnB1dAorICAgICAgICAgICAgIHNlcXVlbmNlIGJ5IG4uCisK
K3dzYXZlICAgY29udGFpbnMgcmVzdWx0cyB3aGljaCBtdXN0IG5vdCBiZSBkZXN0cm95ZWQgYmV0
d2VlbgorICAgICAgICBjYWxscyBvZiByZmZ0YiBvciByZmZ0Zi4KKworKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3N1
YnJvdXRpbmUgc2ludGkobix3c2F2ZSkKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3N1YnJvdXRpbmUgc2ludGkg
aW5pdGlhbGl6ZXMgdGhlIGFycmF5IHdzYXZlIHdoaWNoIGlzIHVzZWQgaW4KK3N1YnJvdXRpbmUg
c2ludC4gdGhlIHByaW1lIGZhY3Rvcml6YXRpb24gb2YgbiB0b2dldGhlciB3aXRoCithIHRhYnVs
YXRpb24gb2YgdGhlIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIGFyZSBjb21wdXRlZCBhbmQKK3N0
b3JlZCBpbiB3c2F2ZS4KKworaW5wdXQgcGFyYW1ldGVyCisKK24gICAgICAgdGhlIGxlbmd0aCBv
ZiB0aGUgc2VxdWVuY2UgdG8gYmUgdHJhbnNmb3JtZWQuICB0aGUgbWV0aG9kCisgICAgICAgIGlz
IG1vc3QgZWZmaWNpZW50IHdoZW4gbisxIGlzIGEgcHJvZHVjdCBvZiBzbWFsbCBwcmltZXMuCisK
K291dHB1dCBwYXJhbWV0ZXIKKword3NhdmUgICBhIHdvcmsgYXJyYXkgd2l0aCBhdCBsZWFzdCBp
bnQoMi41Km4rMTUpIGxvY2F0aW9ucy4KKyAgICAgICAgZGlmZmVyZW50IHdzYXZlIGFycmF5cyBh
cmUgcmVxdWlyZWQgZm9yIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgb2Ygbi4gdGhlIGNvbnRl
bnRzIG9mIHdzYXZlIG11c3Qgbm90IGJlIGNoYW5nZWQgYmV0d2VlbgorICAgICAgICBjYWxscyBv
ZiBzaW50LgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKworc3Vicm91dGluZSBzaW50KG4seCx3c2F2ZSkKKworKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisKK3N1YnJvdXRpbmUgc2ludCBjb21wdXRlcyB0aGUgZGlzY3JldGUgZm91cmllciBz
aW5lIHRyYW5zZm9ybQorb2YgYW4gb2RkIHNlcXVlbmNlIHgoaSkuIHRoZSB0cmFuc2Zvcm0gaXMg
ZGVmaW5lZCBiZWxvdyBhdAorb3V0cHV0IHBhcmFtZXRlciB4LgorCitzaW50IGlzIHRoZSB1bm5v
cm1hbGl6ZWQgaW52ZXJzZSBvZiBpdHNlbGYgc2luY2UgYSBjYWxsIG9mIHNpbnQKK2ZvbGxvd2Vk
IGJ5IGFub3RoZXIgY2FsbCBvZiBzaW50IHdpbGwgbXVsdGlwbHkgdGhlIGlucHV0IHNlcXVlbmNl
Cit4IGJ5IDIqKG4rMSkuCisKK3RoZSBhcnJheSB3c2F2ZSB3aGljaCBpcyB1c2VkIGJ5IHN1YnJv
dXRpbmUgc2ludCBtdXN0IGJlCitpbml0aWFsaXplZCBieSBjYWxsaW5nIHN1YnJvdXRpbmUgc2lu
dGkobix3c2F2ZSkuCisKK2lucHV0IHBhcmFtZXRlcnMKKworbiAgICAgICB0aGUgbGVuZ3RoIG9m
IHRoZSBzZXF1ZW5jZSB0byBiZSB0cmFuc2Zvcm1lZC4gIHRoZSBtZXRob2QKKyAgICAgICAgaXMg
bW9zdCBlZmZpY2llbnQgd2hlbiBuKzEgaXMgdGhlIHByb2R1Y3Qgb2Ygc21hbGwgcHJpbWVzLgor
Cit4ICAgICAgIGFuIGFycmF5IHdoaWNoIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZSB0byBiZSB0cmFu
c2Zvcm1lZAorCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHdpdGggZGltZW5zaW9uIGF0IGxlYXN0
IGludCgyLjUqbisxNSkKKyAgICAgICAgaW4gdGhlIHByb2dyYW0gdGhhdCBjYWxscyBzaW50LiB0
aGUgd3NhdmUgYXJyYXkgbXVzdCBiZQorICAgICAgICBpbml0aWFsaXplZCBieSBjYWxsaW5nIHN1
YnJvdXRpbmUgc2ludGkobix3c2F2ZSkgYW5kIGEKKyAgICAgICAgZGlmZmVyZW50IHdzYXZlIGFy
cmF5IG11c3QgYmUgdXNlZCBmb3IgZWFjaCBkaWZmZXJlbnQKKyAgICAgICAgdmFsdWUgb2Ygbi4g
dGhpcyBpbml0aWFsaXphdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlCisgICAgICAgIHJlcGVhdGVk
IHNvIGxvbmcgYXMgbiByZW1haW5zIHVuY2hhbmdlZCB0aHVzIHN1YnNlcXVlbnQKKyAgICAgICAg
dHJhbnNmb3JtcyBjYW4gYmUgb2J0YWluZWQgZmFzdGVyIHRoYW4gdGhlIGZpcnN0LgorCitvdXRw
dXQgcGFyYW1ldGVycworCit4ICAgICAgIGZvciBpPTEsLi4uLG4KKworICAgICAgICAgICAgIHgo
aSk9IHRoZSBzdW0gZnJvbSBrPTEgdG8gaz1uCisKKyAgICAgICAgICAgICAgICAgIDIqeChrKSpz
aW4oayppKnBpLyhuKzEpKQorCisgICAgICAgICAgICAgYSBjYWxsIG9mIHNpbnQgZm9sbG93ZWQg
YnkgYW5vdGhlciBjYWxsIG9mCisgICAgICAgICAgICAgc2ludCB3aWxsIG11bHRpcGx5IHRoZSBz
ZXF1ZW5jZSB4IGJ5IDIqKG4rMSkuCisgICAgICAgICAgICAgaGVuY2Ugc2ludCBpcyB0aGUgdW5u
b3JtYWxpemVkIGludmVyc2UKKyAgICAgICAgICAgICBvZiBpdHNlbGYuCisKK3dzYXZlICAgY29u
dGFpbnMgaW5pdGlhbGl6YXRpb24gY2FsY3VsYXRpb25zIHdoaWNoIG11c3Qgbm90IGJlCisgICAg
ICAgIGRlc3Ryb3llZCBiZXR3ZWVuIGNhbGxzIG9mIHNpbnQuCisKKyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzdWJy
b3V0aW5lIGNvc3RpKG4sd3NhdmUpCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzdWJyb3V0aW5lIGNvc3RpIGlu
aXRpYWxpemVzIHRoZSBhcnJheSB3c2F2ZSB3aGljaCBpcyB1c2VkIGluCitzdWJyb3V0aW5lIGNv
c3QuIHRoZSBwcmltZSBmYWN0b3JpemF0aW9uIG9mIG4gdG9nZXRoZXIgd2l0aAorYSB0YWJ1bGF0
aW9uIG9mIHRoZSB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyBhcmUgY29tcHV0ZWQgYW5kCitzdG9y
ZWQgaW4gd3NhdmUuCisKK2lucHV0IHBhcmFtZXRlcgorCituICAgICAgIHRoZSBsZW5ndGggb2Yg
dGhlIHNlcXVlbmNlIHRvIGJlIHRyYW5zZm9ybWVkLiAgdGhlIG1ldGhvZAorICAgICAgICBpcyBt
b3N0IGVmZmljaWVudCB3aGVuIG4tMSBpcyBhIHByb2R1Y3Qgb2Ygc21hbGwgcHJpbWVzLgorCitv
dXRwdXQgcGFyYW1ldGVyCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHdoaWNoIG11c3QgYmUgZGlt
ZW5zaW9uZWQgYXQgbGVhc3QgMypuKzE1LgorICAgICAgICBkaWZmZXJlbnQgd3NhdmUgYXJyYXlz
IGFyZSByZXF1aXJlZCBmb3IgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBvZiBuLiB0aGUgY29u
dGVudHMgb2Ygd3NhdmUgbXVzdCBub3QgYmUgY2hhbmdlZCBiZXR3ZWVuCisgICAgICAgIGNhbGxz
IG9mIGNvc3QuCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgorCitzdWJyb3V0aW5lIGNvc3Qobix4LHdzYXZlKQorCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKworc3Vicm91dGluZSBjb3N0IGNvbXB1dGVzIHRoZSBkaXNjcmV0ZSBmb3VyaWVy
IGNvc2luZSB0cmFuc2Zvcm0KK29mIGFuIGV2ZW4gc2VxdWVuY2UgeChpKS4gdGhlIHRyYW5zZm9y
bSBpcyBkZWZpbmVkIGJlbG93IGF0IG91dHB1dAorcGFyYW1ldGVyIHguCisKK2Nvc3QgaXMgdGhl
IHVubm9ybWFsaXplZCBpbnZlcnNlIG9mIGl0c2VsZiBzaW5jZSBhIGNhbGwgb2YgY29zdAorZm9s
bG93ZWQgYnkgYW5vdGhlciBjYWxsIG9mIGNvc3Qgd2lsbCBtdWx0aXBseSB0aGUgaW5wdXQgc2Vx
dWVuY2UKK3ggYnkgMioobi0xKS4gdGhlIHRyYW5zZm9ybSBpcyBkZWZpbmVkIGJlbG93IGF0IG91
dHB1dCBwYXJhbWV0ZXIgeAorCit0aGUgYXJyYXkgd3NhdmUgd2hpY2ggaXMgdXNlZCBieSBzdWJy
b3V0aW5lIGNvc3QgbXVzdCBiZQoraW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIGNv
c3RpKG4sd3NhdmUpLgorCitpbnB1dCBwYXJhbWV0ZXJzCisKK24gICAgICAgdGhlIGxlbmd0aCBv
ZiB0aGUgc2VxdWVuY2UgeC4gbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxLgorICAgICAgICB0aGUg
bWV0aG9kIGlzIG1vc3QgZWZmaWNpZW50IHdoZW4gbi0xIGlzIGEgcHJvZHVjdCBvZgorICAgICAg
ICBzbWFsbCBwcmltZXMuCisKK3ggICAgICAgYW4gYXJyYXkgd2hpY2ggY29udGFpbnMgdGhlIHNl
cXVlbmNlIHRvIGJlIHRyYW5zZm9ybWVkCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHdoaWNoIG11
c3QgYmUgZGltZW5zaW9uZWQgYXQgbGVhc3QgMypuKzE1CisgICAgICAgIGluIHRoZSBwcm9ncmFt
IHRoYXQgY2FsbHMgY29zdC4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAgaW5pdGlh
bGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIGNvc3RpKG4sd3NhdmUpIGFuZCBhCisgICAgICAg
IGRpZmZlcmVudCB3c2F2ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVyZW50Cisg
ICAgICAgIHZhbHVlIG9mIG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2ZSB0byBi
ZQorICAgICAgICByZXBlYXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQgdGh1cyBz
dWJzZXF1ZW50CisgICAgICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3RlciB0aGFu
IHRoZSBmaXJzdC4KKworb3V0cHV0IHBhcmFtZXRlcnMKKworeCAgICAgICBmb3IgaT0xLC4uLixu
CisKKyAgICAgICAgICAgIHgoaSkgPSB4KDEpKygtMSkqKihpLTEpKngobikKKworICAgICAgICAg
ICAgICsgdGhlIHN1bSBmcm9tIGs9MiB0byBrPW4tMQorCisgICAgICAgICAgICAgICAgIDIqeChr
KSpjb3MoKGstMSkqKGktMSkqcGkvKG4tMSkpCisKKyAgICAgICAgICAgICBhIGNhbGwgb2YgY29z
dCBmb2xsb3dlZCBieSBhbm90aGVyIGNhbGwgb2YKKyAgICAgICAgICAgICBjb3N0IHdpbGwgbXVs
dGlwbHkgdGhlIHNlcXVlbmNlIHggYnkgMioobi0xKQorICAgICAgICAgICAgIGhlbmNlIGNvc3Qg
aXMgdGhlIHVubm9ybWFsaXplZCBpbnZlcnNlCisgICAgICAgICAgICAgb2YgaXRzZWxmLgorCit3
c2F2ZSAgIGNvbnRhaW5zIGluaXRpYWxpemF0aW9uIGNhbGN1bGF0aW9ucyB3aGljaCBtdXN0IG5v
dCBiZQorICAgICAgICBkZXN0cm95ZWQgYmV0d2VlbiBjYWxscyBvZiBjb3N0LgorCisqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKworc3Vicm91dGluZSBzaW5xaShuLHdzYXZlKQorCisqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vicm91dGlu
ZSBzaW5xaSBpbml0aWFsaXplcyB0aGUgYXJyYXkgd3NhdmUgd2hpY2ggaXMgdXNlZCBpbgorYm90
aCBzaW5xZiBhbmQgc2lucWIuIHRoZSBwcmltZSBmYWN0b3JpemF0aW9uIG9mIG4gdG9nZXRoZXIg
d2l0aAorYSB0YWJ1bGF0aW9uIG9mIHRoZSB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyBhcmUgY29t
cHV0ZWQgYW5kCitzdG9yZWQgaW4gd3NhdmUuCisKK2lucHV0IHBhcmFtZXRlcgorCituICAgICAg
IHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRvIGJlIHRyYW5zZm9ybWVkLiB0aGUgbWV0aG9k
CisgICAgICAgIGlzIG1vc3QgZWZmaWNpZW50IHdoZW4gbiBpcyBhIHByb2R1Y3Qgb2Ygc21hbGwg
cHJpbWVzLgorCitvdXRwdXQgcGFyYW1ldGVyCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHdoaWNo
IG11c3QgYmUgZGltZW5zaW9uZWQgYXQgbGVhc3QgMypuKzE1LgorICAgICAgICB0aGUgc2FtZSB3
b3JrIGFycmF5IGNhbiBiZSB1c2VkIGZvciBib3RoIHNpbnFmIGFuZCBzaW5xYgorICAgICAgICBh
cyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQuIGRpZmZlcmVudCB3c2F2ZSBhcnJheXMKKyAg
ICAgICAgYXJlIHJlcXVpcmVkIGZvciBkaWZmZXJlbnQgdmFsdWVzIG9mIG4uIHRoZSBjb250ZW50
cyBvZgorICAgICAgICB3c2F2ZSBtdXN0IG5vdCBiZSBjaGFuZ2VkIGJldHdlZW4gY2FsbHMgb2Yg
c2lucWYgb3Igc2lucWIuCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzdWJyb3V0aW5lIHNpbnFmKG4seCx3c2F2
ZSkKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisKK3N1YnJvdXRpbmUgc2lucWYgY29tcHV0ZXMgdGhlIGZhc3QgZm91
cmllciB0cmFuc2Zvcm0gb2YgcXVhcnRlcgord2F2ZSBkYXRhLiB0aGF0IGlzICwgc2lucWYgY29t
cHV0ZXMgdGhlIGNvZWZmaWNpZW50cyBpbiBhIHNpbmUKK3NlcmllcyByZXByZXNlbnRhdGlvbiB3
aXRoIG9ubHkgb2RkIHdhdmUgbnVtYmVycy4gdGhlIHRyYW5zZm9ybQoraXMgZGVmaW5lZCBiZWxv
dyBhdCBvdXRwdXQgcGFyYW1ldGVyIHguCisKK3NpbnFiIGlzIHRoZSB1bm5vcm1hbGl6ZWQgaW52
ZXJzZSBvZiBzaW5xZiBzaW5jZSBhIGNhbGwgb2Ygc2lucWYKK2ZvbGxvd2VkIGJ5IGEgY2FsbCBv
ZiBzaW5xYiB3aWxsIG11bHRpcGx5IHRoZSBpbnB1dCBzZXF1ZW5jZSB4CitieSA0Km4uCisKK3Ro
ZSBhcnJheSB3c2F2ZSB3aGljaCBpcyB1c2VkIGJ5IHN1YnJvdXRpbmUgc2lucWYgbXVzdCBiZQor
aW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIHNpbnFpKG4sd3NhdmUpLgorCisKK2lu
cHV0IHBhcmFtZXRlcnMKKworbiAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB4IHRvIGJl
IHRyYW5zZm9ybWVkLiAgdGhlIG1ldGhvZAorICAgICAgICBpcyBtb3N0IGVmZmljaWVudCB3aGVu
IG4gaXMgYSBwcm9kdWN0IG9mIHNtYWxsIHByaW1lcy4KKworeCAgICAgICBhbiBhcnJheSB3aGlj
aCBjb250YWlucyB0aGUgc2VxdWVuY2UgdG8gYmUgdHJhbnNmb3JtZWQKKword3NhdmUgICBhIHdv
cmsgYXJyYXkgd2hpY2ggbXVzdCBiZSBkaW1lbnNpb25lZCBhdCBsZWFzdCAzKm4rMTUuCisgICAg
ICAgIGluIHRoZSBwcm9ncmFtIHRoYXQgY2FsbHMgc2lucWYuIHRoZSB3c2F2ZSBhcnJheSBtdXN0
IGJlCisgICAgICAgIGluaXRpYWxpemVkIGJ5IGNhbGxpbmcgc3Vicm91dGluZSBzaW5xaShuLHdz
YXZlKSBhbmQgYQorICAgICAgICBkaWZmZXJlbnQgd3NhdmUgYXJyYXkgbXVzdCBiZSB1c2VkIGZv
ciBlYWNoIGRpZmZlcmVudAorICAgICAgICB2YWx1ZSBvZiBuLiB0aGlzIGluaXRpYWxpemF0aW9u
IGRvZXMgbm90IGhhdmUgdG8gYmUKKyAgICAgICAgcmVwZWF0ZWQgc28gbG9uZyBhcyBuIHJlbWFp
bnMgdW5jaGFuZ2VkIHRodXMgc3Vic2VxdWVudAorICAgICAgICB0cmFuc2Zvcm1zIGNhbiBiZSBv
YnRhaW5lZCBmYXN0ZXIgdGhhbiB0aGUgZmlyc3QuCisKK291dHB1dCBwYXJhbWV0ZXJzCisKK3gg
ICAgICAgZm9yIGk9MSwuLi4sbgorCisgICAgICAgICAgICAgeChpKSA9ICgtMSkqKihpLTEpKngo
bikKKworICAgICAgICAgICAgICAgICsgdGhlIHN1bSBmcm9tIGs9MSB0byBrPW4tMSBvZgorCisg
ICAgICAgICAgICAgICAgMip4KGspKnNpbigoMippLTEpKmsqcGkvKDIqbikpCisKKyAgICAgICAg
ICAgICBhIGNhbGwgb2Ygc2lucWYgZm9sbG93ZWQgYnkgYSBjYWxsIG9mCisgICAgICAgICAgICAg
c2lucWIgd2lsbCBtdWx0aXBseSB0aGUgc2VxdWVuY2UgeCBieSA0Km4uCisgICAgICAgICAgICAg
dGhlcmVmb3JlIHNpbnFiIGlzIHRoZSB1bm5vcm1hbGl6ZWQgaW52ZXJzZQorICAgICAgICAgICAg
IG9mIHNpbnFmLgorCit3c2F2ZSAgIGNvbnRhaW5zIGluaXRpYWxpemF0aW9uIGNhbGN1bGF0aW9u
cyB3aGljaCBtdXN0IG5vdAorICAgICAgICBiZSBkZXN0cm95ZWQgYmV0d2VlbiBjYWxscyBvZiBz
aW5xZiBvciBzaW5xYi4KKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3N1YnJvdXRpbmUgc2lucWIobix4LHdzYXZl
KQorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKworc3Vicm91dGluZSBzaW5xYiBjb21wdXRlcyB0aGUgZmFzdCBmb3Vy
aWVyIHRyYW5zZm9ybSBvZiBxdWFydGVyCit3YXZlIGRhdGEuIHRoYXQgaXMgLCBzaW5xYiBjb21w
dXRlcyBhIHNlcXVlbmNlIGZyb20gaXRzCityZXByZXNlbnRhdGlvbiBpbiB0ZXJtcyBvZiBhIHNp
bmUgc2VyaWVzIHdpdGggb2RkIHdhdmUgbnVtYmVycy4KK3RoZSB0cmFuc2Zvcm0gaXMgZGVmaW5l
ZCBiZWxvdyBhdCBvdXRwdXQgcGFyYW1ldGVyIHguCisKK3NpbnFmIGlzIHRoZSB1bm5vcm1hbGl6
ZWQgaW52ZXJzZSBvZiBzaW5xYiBzaW5jZSBhIGNhbGwgb2Ygc2lucWIKK2ZvbGxvd2VkIGJ5IGEg
Y2FsbCBvZiBzaW5xZiB3aWxsIG11bHRpcGx5IHRoZSBpbnB1dCBzZXF1ZW5jZSB4CitieSA0Km4u
CisKK3RoZSBhcnJheSB3c2F2ZSB3aGljaCBpcyB1c2VkIGJ5IHN1YnJvdXRpbmUgc2lucWIgbXVz
dCBiZQoraW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIHNpbnFpKG4sd3NhdmUpLgor
CisKK2lucHV0IHBhcmFtZXRlcnMKKworbiAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB4
IHRvIGJlIHRyYW5zZm9ybWVkLiAgdGhlIG1ldGhvZAorICAgICAgICBpcyBtb3N0IGVmZmljaWVu
dCB3aGVuIG4gaXMgYSBwcm9kdWN0IG9mIHNtYWxsIHByaW1lcy4KKworeCAgICAgICBhbiBhcnJh
eSB3aGljaCBjb250YWlucyB0aGUgc2VxdWVuY2UgdG8gYmUgdHJhbnNmb3JtZWQKKword3NhdmUg
ICBhIHdvcmsgYXJyYXkgd2hpY2ggbXVzdCBiZSBkaW1lbnNpb25lZCBhdCBsZWFzdCAzKm4rMTUu
CisgICAgICAgIGluIHRoZSBwcm9ncmFtIHRoYXQgY2FsbHMgc2lucWIuIHRoZSB3c2F2ZSBhcnJh
eSBtdXN0IGJlCisgICAgICAgIGluaXRpYWxpemVkIGJ5IGNhbGxpbmcgc3Vicm91dGluZSBzaW5x
aShuLHdzYXZlKSBhbmQgYQorICAgICAgICBkaWZmZXJlbnQgd3NhdmUgYXJyYXkgbXVzdCBiZSB1
c2VkIGZvciBlYWNoIGRpZmZlcmVudAorICAgICAgICB2YWx1ZSBvZiBuLiB0aGlzIGluaXRpYWxp
emF0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUKKyAgICAgICAgcmVwZWF0ZWQgc28gbG9uZyBhcyBu
IHJlbWFpbnMgdW5jaGFuZ2VkIHRodXMgc3Vic2VxdWVudAorICAgICAgICB0cmFuc2Zvcm1zIGNh
biBiZSBvYnRhaW5lZCBmYXN0ZXIgdGhhbiB0aGUgZmlyc3QuCisKK291dHB1dCBwYXJhbWV0ZXJz
CisKK3ggICAgICAgZm9yIGk9MSwuLi4sbgorCisgICAgICAgICAgICAgeChpKT0gdGhlIHN1bSBm
cm9tIGs9MSB0byBrPW4gb2YKKworICAgICAgICAgICAgICAgNCp4KGspKnNpbigoMmstMSkqaSpw
aS8oMipuKSkKKworICAgICAgICAgICAgIGEgY2FsbCBvZiBzaW5xYiBmb2xsb3dlZCBieSBhIGNh
bGwgb2YKKyAgICAgICAgICAgICBzaW5xZiB3aWxsIG11bHRpcGx5IHRoZSBzZXF1ZW5jZSB4IGJ5
IDQqbi4KKyAgICAgICAgICAgICB0aGVyZWZvcmUgc2lucWYgaXMgdGhlIHVubm9ybWFsaXplZCBp
bnZlcnNlCisgICAgICAgICAgICAgb2Ygc2lucWIuCisKK3dzYXZlICAgY29udGFpbnMgaW5pdGlh
bGl6YXRpb24gY2FsY3VsYXRpb25zIHdoaWNoIG11c3Qgbm90CisgICAgICAgIGJlIGRlc3Ryb3ll
ZCBiZXR3ZWVuIGNhbGxzIG9mIHNpbnFiIG9yIHNpbnFmLgorCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vicm91
dGluZSBjb3NxaShuLHdzYXZlKQorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vicm91dGluZSBjb3NxaSBpbml0
aWFsaXplcyB0aGUgYXJyYXkgd3NhdmUgd2hpY2ggaXMgdXNlZCBpbgorYm90aCBjb3NxZiBhbmQg
Y29zcWIuIHRoZSBwcmltZSBmYWN0b3JpemF0aW9uIG9mIG4gdG9nZXRoZXIgd2l0aAorYSB0YWJ1
bGF0aW9uIG9mIHRoZSB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyBhcmUgY29tcHV0ZWQgYW5kCitz
dG9yZWQgaW4gd3NhdmUuCisKK2lucHV0IHBhcmFtZXRlcgorCituICAgICAgIHRoZSBsZW5ndGgg
b2YgdGhlIGFycmF5IHRvIGJlIHRyYW5zZm9ybWVkLiAgdGhlIG1ldGhvZAorICAgICAgICBpcyBt
b3N0IGVmZmljaWVudCB3aGVuIG4gaXMgYSBwcm9kdWN0IG9mIHNtYWxsIHByaW1lcy4KKworb3V0
cHV0IHBhcmFtZXRlcgorCit3c2F2ZSAgIGEgd29yayBhcnJheSB3aGljaCBtdXN0IGJlIGRpbWVu
c2lvbmVkIGF0IGxlYXN0IDMqbisxNS4KKyAgICAgICAgdGhlIHNhbWUgd29yayBhcnJheSBjYW4g
YmUgdXNlZCBmb3IgYm90aCBjb3NxZiBhbmQgY29zcWIKKyAgICAgICAgYXMgbG9uZyBhcyBuIHJl
bWFpbnMgdW5jaGFuZ2VkLiBkaWZmZXJlbnQgd3NhdmUgYXJyYXlzCisgICAgICAgIGFyZSByZXF1
aXJlZCBmb3IgZGlmZmVyZW50IHZhbHVlcyBvZiBuLiB0aGUgY29udGVudHMgb2YKKyAgICAgICAg
d3NhdmUgbXVzdCBub3QgYmUgY2hhbmdlZCBiZXR3ZWVuIGNhbGxzIG9mIGNvc3FmIG9yIGNvc3Fi
LgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKworc3Vicm91dGluZSBjb3NxZihuLHgsd3NhdmUpCisKKyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorCitzdWJyb3V0aW5lIGNvc3FmIGNvbXB1dGVzIHRoZSBmYXN0IGZvdXJpZXIgdHJhbnNmb3Jt
IG9mIHF1YXJ0ZXIKK3dhdmUgZGF0YS4gdGhhdCBpcyAsIGNvc3FmIGNvbXB1dGVzIHRoZSBjb2Vm
ZmljaWVudHMgaW4gYSBjb3NpbmUKK3NlcmllcyByZXByZXNlbnRhdGlvbiB3aXRoIG9ubHkgb2Rk
IHdhdmUgbnVtYmVycy4gdGhlIHRyYW5zZm9ybQoraXMgZGVmaW5lZCBiZWxvdyBhdCBvdXRwdXQg
cGFyYW1ldGVyIHgKKworY29zcWYgaXMgdGhlIHVubm9ybWFsaXplZCBpbnZlcnNlIG9mIGNvc3Fi
IHNpbmNlIGEgY2FsbCBvZiBjb3NxZgorZm9sbG93ZWQgYnkgYSBjYWxsIG9mIGNvc3FiIHdpbGwg
bXVsdGlwbHkgdGhlIGlucHV0IHNlcXVlbmNlIHgKK2J5IDQqbi4KKwordGhlIGFycmF5IHdzYXZl
IHdoaWNoIGlzIHVzZWQgYnkgc3Vicm91dGluZSBjb3NxZiBtdXN0IGJlCitpbml0aWFsaXplZCBi
eSBjYWxsaW5nIHN1YnJvdXRpbmUgY29zcWkobix3c2F2ZSkuCisKKworaW5wdXQgcGFyYW1ldGVy
cworCituICAgICAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHggdG8gYmUgdHJhbnNmb3JtZWQu
ICB0aGUgbWV0aG9kCisgICAgICAgIGlzIG1vc3QgZWZmaWNpZW50IHdoZW4gbiBpcyBhIHByb2R1
Y3Qgb2Ygc21hbGwgcHJpbWVzLgorCit4ICAgICAgIGFuIGFycmF5IHdoaWNoIGNvbnRhaW5zIHRo
ZSBzZXF1ZW5jZSB0byBiZSB0cmFuc2Zvcm1lZAorCit3c2F2ZSAgIGEgd29yayBhcnJheSB3aGlj
aCBtdXN0IGJlIGRpbWVuc2lvbmVkIGF0IGxlYXN0IDMqbisxNQorICAgICAgICBpbiB0aGUgcHJv
Z3JhbSB0aGF0IGNhbGxzIGNvc3FmLiB0aGUgd3NhdmUgYXJyYXkgbXVzdCBiZQorICAgICAgICBp
bml0aWFsaXplZCBieSBjYWxsaW5nIHN1YnJvdXRpbmUgY29zcWkobix3c2F2ZSkgYW5kIGEKKyAg
ICAgICAgZGlmZmVyZW50IHdzYXZlIGFycmF5IG11c3QgYmUgdXNlZCBmb3IgZWFjaCBkaWZmZXJl
bnQKKyAgICAgICAgdmFsdWUgb2Ygbi4gdGhpcyBpbml0aWFsaXphdGlvbiBkb2VzIG5vdCBoYXZl
IHRvIGJlCisgICAgICAgIHJlcGVhdGVkIHNvIGxvbmcgYXMgbiByZW1haW5zIHVuY2hhbmdlZCB0
aHVzIHN1YnNlcXVlbnQKKyAgICAgICAgdHJhbnNmb3JtcyBjYW4gYmUgb2J0YWluZWQgZmFzdGVy
IHRoYW4gdGhlIGZpcnN0LgorCitvdXRwdXQgcGFyYW1ldGVycworCit4ICAgICAgIGZvciBpPTEs
Li4uLG4KKworICAgICAgICAgICAgIHgoaSkgPSB4KDEpIHBsdXMgdGhlIHN1bSBmcm9tIGs9MiB0
byBrPW4gb2YKKworICAgICAgICAgICAgICAgIDIqeChrKSpjb3MoKDIqaS0xKSooay0xKSpwaS8o
MipuKSkKKworICAgICAgICAgICAgIGEgY2FsbCBvZiBjb3NxZiBmb2xsb3dlZCBieSBhIGNhbGwg
b2YKKyAgICAgICAgICAgICBjb3NxYiB3aWxsIG11bHRpcGx5IHRoZSBzZXF1ZW5jZSB4IGJ5IDQq
bi4KKyAgICAgICAgICAgICB0aGVyZWZvcmUgY29zcWIgaXMgdGhlIHVubm9ybWFsaXplZCBpbnZl
cnNlCisgICAgICAgICAgICAgb2YgY29zcWYuCisKK3dzYXZlICAgY29udGFpbnMgaW5pdGlhbGl6
YXRpb24gY2FsY3VsYXRpb25zIHdoaWNoIG11c3Qgbm90CisgICAgICAgIGJlIGRlc3Ryb3llZCBi
ZXR3ZWVuIGNhbGxzIG9mIGNvc3FmIG9yIGNvc3FiLgorCisqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vicm91dGlu
ZSBjb3NxYihuLHgsd3NhdmUpCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzdWJyb3V0aW5lIGNvc3FiIGNvbXB1
dGVzIHRoZSBmYXN0IGZvdXJpZXIgdHJhbnNmb3JtIG9mIHF1YXJ0ZXIKK3dhdmUgZGF0YS4gdGhh
dCBpcyAsIGNvc3FiIGNvbXB1dGVzIGEgc2VxdWVuY2UgZnJvbSBpdHMKK3JlcHJlc2VudGF0aW9u
IGluIHRlcm1zIG9mIGEgY29zaW5lIHNlcmllcyB3aXRoIG9kZCB3YXZlIG51bWJlcnMuCit0aGUg
dHJhbnNmb3JtIGlzIGRlZmluZWQgYmVsb3cgYXQgb3V0cHV0IHBhcmFtZXRlciB4LgorCitjb3Nx
YiBpcyB0aGUgdW5ub3JtYWxpemVkIGludmVyc2Ugb2YgY29zcWYgc2luY2UgYSBjYWxsIG9mIGNv
c3FiCitmb2xsb3dlZCBieSBhIGNhbGwgb2YgY29zcWYgd2lsbCBtdWx0aXBseSB0aGUgaW5wdXQg
c2VxdWVuY2UgeAorYnkgNCpuLgorCit0aGUgYXJyYXkgd3NhdmUgd2hpY2ggaXMgdXNlZCBieSBz
dWJyb3V0aW5lIGNvc3FiIG11c3QgYmUKK2luaXRpYWxpemVkIGJ5IGNhbGxpbmcgc3Vicm91dGlu
ZSBjb3NxaShuLHdzYXZlKS4KKworCitpbnB1dCBwYXJhbWV0ZXJzCisKK24gICAgICAgdGhlIGxl
bmd0aCBvZiB0aGUgYXJyYXkgeCB0byBiZSB0cmFuc2Zvcm1lZC4gIHRoZSBtZXRob2QKKyAgICAg
ICAgaXMgbW9zdCBlZmZpY2llbnQgd2hlbiBuIGlzIGEgcHJvZHVjdCBvZiBzbWFsbCBwcmltZXMu
CisKK3ggICAgICAgYW4gYXJyYXkgd2hpY2ggY29udGFpbnMgdGhlIHNlcXVlbmNlIHRvIGJlIHRy
YW5zZm9ybWVkCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHRoYXQgbXVzdCBiZSBkaW1lbnNpb25l
ZCBhdCBsZWFzdCAzKm4rMTUKKyAgICAgICAgaW4gdGhlIHByb2dyYW0gdGhhdCBjYWxscyBjb3Nx
Yi4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAgaW5pdGlhbGl6ZWQgYnkgY2FsbGlu
ZyBzdWJyb3V0aW5lIGNvc3FpKG4sd3NhdmUpIGFuZCBhCisgICAgICAgIGRpZmZlcmVudCB3c2F2
ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVyZW50CisgICAgICAgIHZhbHVlIG9m
IG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZQorICAgICAgICByZXBl
YXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQgdGh1cyBzdWJzZXF1ZW50CisgICAg
ICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3RlciB0aGFuIHRoZSBmaXJzdC4KKwor
b3V0cHV0IHBhcmFtZXRlcnMKKworeCAgICAgICBmb3IgaT0xLC4uLixuCisKKyAgICAgICAgICAg
ICB4KGkpPSB0aGUgc3VtIGZyb20gaz0xIHRvIGs9biBvZgorCisgICAgICAgICAgICAgICA0Kngo
aykqY29zKCgyKmstMSkqKGktMSkqcGkvKDIqbikpCisKKyAgICAgICAgICAgICBhIGNhbGwgb2Yg
Y29zcWIgZm9sbG93ZWQgYnkgYSBjYWxsIG9mCisgICAgICAgICAgICAgY29zcWYgd2lsbCBtdWx0
aXBseSB0aGUgc2VxdWVuY2UgeCBieSA0Km4uCisgICAgICAgICAgICAgdGhlcmVmb3JlIGNvc3Fm
IGlzIHRoZSB1bm5vcm1hbGl6ZWQgaW52ZXJzZQorICAgICAgICAgICAgIG9mIGNvc3FiLgorCit3
c2F2ZSAgIGNvbnRhaW5zIGluaXRpYWxpemF0aW9uIGNhbGN1bGF0aW9ucyB3aGljaCBtdXN0IG5v
dAorICAgICAgICBiZSBkZXN0cm95ZWQgYmV0d2VlbiBjYWxscyBvZiBjb3NxYiBvciBjb3NxZi4K
KworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisKK3N1YnJvdXRpbmUgY2ZmdGkobix3c2F2ZSkKKworKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisK
K3N1YnJvdXRpbmUgY2ZmdGkgaW5pdGlhbGl6ZXMgdGhlIGFycmF5IHdzYXZlIHdoaWNoIGlzIHVz
ZWQgaW4KK2JvdGggY2ZmdGYgYW5kIGNmZnRiLiB0aGUgcHJpbWUgZmFjdG9yaXphdGlvbiBvZiBu
IHRvZ2V0aGVyIHdpdGgKK2EgdGFidWxhdGlvbiBvZiB0aGUgdHJpZ29ub21ldHJpYyBmdW5jdGlv
bnMgYXJlIGNvbXB1dGVkIGFuZAorc3RvcmVkIGluIHdzYXZlLgorCitpbnB1dCBwYXJhbWV0ZXIK
KworbiAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0byBiZSB0cmFuc2Zvcm1lZAor
CitvdXRwdXQgcGFyYW1ldGVyCisKK3dzYXZlICAgYSB3b3JrIGFycmF5IHdoaWNoIG11c3QgYmUg
ZGltZW5zaW9uZWQgYXQgbGVhc3QgNCpuKzE1CisgICAgICAgIHRoZSBzYW1lIHdvcmsgYXJyYXkg
Y2FuIGJlIHVzZWQgZm9yIGJvdGggY2ZmdGYgYW5kIGNmZnRiCisgICAgICAgIGFzIGxvbmcgYXMg
biByZW1haW5zIHVuY2hhbmdlZC4gZGlmZmVyZW50IHdzYXZlIGFycmF5cworICAgICAgICBhcmUg
cmVxdWlyZWQgZm9yIGRpZmZlcmVudCB2YWx1ZXMgb2Ygbi4gdGhlIGNvbnRlbnRzIG9mCisgICAg
ICAgIHdzYXZlIG11c3Qgbm90IGJlIGNoYW5nZWQgYmV0d2VlbiBjYWxscyBvZiBjZmZ0ZiBvciBj
ZmZ0Yi4KKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisKK3N1YnJvdXRpbmUgY2ZmdGYobixjLHdzYXZlKQorCisqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKworc3Vicm91dGluZSBjZmZ0ZiBjb21wdXRlcyB0aGUgZm9yd2FyZCBjb21wbGV4IGRp
c2NyZXRlIGZvdXJpZXIKK3RyYW5zZm9ybSAodGhlIGZvdXJpZXIgYW5hbHlzaXMpLiBlcXVpdmFs
ZW50bHkgLCBjZmZ0ZiBjb21wdXRlcwordGhlIGZvdXJpZXIgY29lZmZpY2llbnRzIG9mIGEgY29t
cGxleCBwZXJpb2RpYyBzZXF1ZW5jZS4KK3RoZSB0cmFuc2Zvcm0gaXMgZGVmaW5lZCBiZWxvdyBh
dCBvdXRwdXQgcGFyYW1ldGVyIGMuCisKK3RoZSB0cmFuc2Zvcm0gaXMgbm90IG5vcm1hbGl6ZWQu
IHRvIG9idGFpbiBhIG5vcm1hbGl6ZWQgdHJhbnNmb3JtCit0aGUgb3V0cHV0IG11c3QgYmUgZGl2
aWRlZCBieSBuLiBvdGhlcndpc2UgYSBjYWxsIG9mIGNmZnRmCitmb2xsb3dlZCBieSBhIGNhbGwg
b2YgY2ZmdGIgd2lsbCBtdWx0aXBseSB0aGUgc2VxdWVuY2UgYnkgbi4KKwordGhlIGFycmF5IHdz
YXZlIHdoaWNoIGlzIHVzZWQgYnkgc3Vicm91dGluZSBjZmZ0ZiBtdXN0IGJlCitpbml0aWFsaXpl
ZCBieSBjYWxsaW5nIHN1YnJvdXRpbmUgY2ZmdGkobix3c2F2ZSkuCisKK2lucHV0IHBhcmFtZXRl
cnMKKworCituICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgY29tcGxleCBzZXF1ZW5jZSBjLiB0aGUg
bWV0aG9kIGlzCisgICAgICAgbW9yZSBlZmZpY2llbnQgd2hlbiBuIGlzIHRoZSBwcm9kdWN0IG9m
IHNtYWxsIHByaW1lcy4gbgorCitjICAgICAgYSBjb21wbGV4IGFycmF5IG9mIGxlbmd0aCBuIHdo
aWNoIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZQorCit3c2F2ZSAgIGEgcmVhbCB3b3JrIGFycmF5IHdo
aWNoIG11c3QgYmUgZGltZW5zaW9uZWQgYXQgbGVhc3QgNG4rMTUKKyAgICAgICAgaW4gdGhlIHBy
b2dyYW0gdGhhdCBjYWxscyBjZmZ0Zi4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAg
aW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIGNmZnRpKG4sd3NhdmUpIGFuZCBhCisg
ICAgICAgIGRpZmZlcmVudCB3c2F2ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVy
ZW50CisgICAgICAgIHZhbHVlIG9mIG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2
ZSB0byBiZQorICAgICAgICByZXBlYXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQg
dGh1cyBzdWJzZXF1ZW50CisgICAgICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3Rl
ciB0aGFuIHRoZSBmaXJzdC4KKyAgICAgICAgdGhlIHNhbWUgd3NhdmUgYXJyYXkgY2FuIGJlIHVz
ZWQgYnkgY2ZmdGYgYW5kIGNmZnRiLgorCitvdXRwdXQgcGFyYW1ldGVycworCitjICAgICAgZm9y
IGo9MSwuLi4sbgorCisgICAgICAgICAgIGMoaik9dGhlIHN1bSBmcm9tIGs9MSwuLi4sbiBvZgor
CisgICAgICAgICAgICAgICAgIGMoaykqZXhwKC1pKihqLTEpKihrLTEpKjIqcGkvbikKKworICAg
ICAgICAgICAgICAgICAgICAgICB3aGVyZSBpPXNxcnQoLTEpCisKK3dzYXZlICAgY29udGFpbnMg
aW5pdGlhbGl6YXRpb24gY2FsY3VsYXRpb25zIHdoaWNoIG11c3Qgbm90IGJlCisgICAgICAgIGRl
c3Ryb3llZCBiZXR3ZWVuIGNhbGxzIG9mIHN1YnJvdXRpbmUgY2ZmdGYgb3IgY2ZmdGIKKworKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisKK3N1YnJvdXRpbmUgY2ZmdGIobixjLHdzYXZlKQorCisqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3Vi
cm91dGluZSBjZmZ0YiBjb21wdXRlcyB0aGUgYmFja3dhcmQgY29tcGxleCBkaXNjcmV0ZSBmb3Vy
aWVyCit0cmFuc2Zvcm0gKHRoZSBmb3VyaWVyIHN5bnRoZXNpcykuIGVxdWl2YWxlbnRseSAsIGNm
ZnRiIGNvbXB1dGVzCithIGNvbXBsZXggcGVyaW9kaWMgc2VxdWVuY2UgZnJvbSBpdHMgZm91cmll
ciBjb2VmZmljaWVudHMuCit0aGUgdHJhbnNmb3JtIGlzIGRlZmluZWQgYmVsb3cgYXQgb3V0cHV0
IHBhcmFtZXRlciBjLgorCithIGNhbGwgb2YgY2ZmdGYgZm9sbG93ZWQgYnkgYSBjYWxsIG9mIGNm
ZnRiIHdpbGwgbXVsdGlwbHkgdGhlCitzZXF1ZW5jZSBieSBuLgorCit0aGUgYXJyYXkgd3NhdmUg
d2hpY2ggaXMgdXNlZCBieSBzdWJyb3V0aW5lIGNmZnRiIG11c3QgYmUKK2luaXRpYWxpemVkIGJ5
IGNhbGxpbmcgc3Vicm91dGluZSBjZmZ0aShuLHdzYXZlKS4KKworaW5wdXQgcGFyYW1ldGVycwor
CisKK24gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBjb21wbGV4IHNlcXVlbmNlIGMuIHRoZSBtZXRo
b2QgaXMKKyAgICAgICBtb3JlIGVmZmljaWVudCB3aGVuIG4gaXMgdGhlIHByb2R1Y3Qgb2Ygc21h
bGwgcHJpbWVzLgorCitjICAgICAgYSBjb21wbGV4IGFycmF5IG9mIGxlbmd0aCBuIHdoaWNoIGNv
bnRhaW5zIHRoZSBzZXF1ZW5jZQorCit3c2F2ZSAgIGEgcmVhbCB3b3JrIGFycmF5IHdoaWNoIG11
c3QgYmUgZGltZW5zaW9uZWQgYXQgbGVhc3QgNG4rMTUKKyAgICAgICAgaW4gdGhlIHByb2dyYW0g
dGhhdCBjYWxscyBjZmZ0Yi4gdGhlIHdzYXZlIGFycmF5IG11c3QgYmUKKyAgICAgICAgaW5pdGlh
bGl6ZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lIGNmZnRpKG4sd3NhdmUpIGFuZCBhCisgICAgICAg
IGRpZmZlcmVudCB3c2F2ZSBhcnJheSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggZGlmZmVyZW50Cisg
ICAgICAgIHZhbHVlIG9mIG4uIHRoaXMgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgaGF2ZSB0byBi
ZQorICAgICAgICByZXBlYXRlZCBzbyBsb25nIGFzIG4gcmVtYWlucyB1bmNoYW5nZWQgdGh1cyBz
dWJzZXF1ZW50CisgICAgICAgIHRyYW5zZm9ybXMgY2FuIGJlIG9idGFpbmVkIGZhc3RlciB0aGFu
IHRoZSBmaXJzdC4KKyAgICAgICAgdGhlIHNhbWUgd3NhdmUgYXJyYXkgY2FuIGJlIHVzZWQgYnkg
Y2ZmdGYgYW5kIGNmZnRiLgorCitvdXRwdXQgcGFyYW1ldGVycworCitjICAgICAgZm9yIGo9MSwu
Li4sbgorCisgICAgICAgICAgIGMoaik9dGhlIHN1bSBmcm9tIGs9MSwuLi4sbiBvZgorCisgICAg
ICAgICAgICAgICAgIGMoaykqZXhwKGkqKGotMSkqKGstMSkqMipwaS9uKQorCisgICAgICAgICAg
ICAgICAgICAgICAgIHdoZXJlIGk9c3FydCgtMSkKKword3NhdmUgICBjb250YWlucyBpbml0aWFs
aXphdGlvbiBjYWxjdWxhdGlvbnMgd2hpY2ggbXVzdCBub3QgYmUKKyAgICAgICAgZGVzdHJveWVk
IGJldHdlZW4gY2FsbHMgb2Ygc3Vicm91dGluZSBjZmZ0ZiBvciBjZmZ0YgorCisqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZm
dC9zcmMvcGZmZnQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvcGZmZnQvc3JjL3BmZmZ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRhYzRkNzg0OTk5Y2Q1Yjg5ZmJi
MDgwNDllOGU1YTZiZDU4MjM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvc3JjL3BmZmZ0LmMKQEAgLTAsMCAr
MSwxODgxIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTMgIEp1bGllbiBQb21taWVyICggcG9tbWll
ckBtb2RhcnR0LmNvbSApCisKKyAgIEJhc2VkIG9uIG9yaWdpbmFsIGZvcnRyYW4gNzcgY29kZSBm
cm9tIEZGVFBBQ0t2NCBmcm9tIE5FVExJQgorICAgKGh0dHA6Ly93d3cubmV0bGliLm9yZy9mZnRw
YWNrKSwgYXV0aG9yZWQgYnkgRHIgUGF1bCBTd2FyenRyYXViZXIKKyAgIG9mIE5DQVIsIGluIDE5
ODUuCisKKyAgIEFzIGNvbmZpcm1lZCBieSB0aGUgTkNBUiBmZnRwYWNrIHNvZnR3YXJlIGN1cmF0
b3JzLCB0aGUgZm9sbG93aW5nCisgICBGRlRQQUNLdjUgbGljZW5zZSBhcHBsaWVzIHRvIEZGVFBB
Q0t2NCBzb3VyY2VzLiBNeSBjaGFuZ2VzIGFyZQorICAgcmVsZWFzZWQgdW5kZXIgdGhlIHNhbWUg
dGVybXMuCisKKyAgIEZGVFBBQ0sgbGljZW5zZToKKworICAgaHR0cDovL3d3dy5jaXNsLnVjYXIu
ZWR1L2Nzcy9zb2Z0d2FyZS9mZnRwYWNrNS9mdHBrLmh0bWwKKworICAgQ29weXJpZ2h0IChjKSAy
MDA0IHRoZSBVbml2ZXJzaXR5IENvcnBvcmF0aW9uIGZvciBBdG1vc3BoZXJpYworICAgUmVzZWFy
Y2ggKCJVQ0FSIikuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIERldmVsb3BlZCBieSBOQ0FSJ3MKKyAg
IENvbXB1dGF0aW9uYWwgYW5kIEluZm9ybWF0aW9uIFN5c3RlbXMgTGFib3JhdG9yeSwgVUNBUiwK
KyAgIHd3dy5jaXNsLnVjYXIuZWR1LgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRo
ZSBTb2Z0d2FyZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyAgIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQorICAgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgLSBOZWl0aGVyIHRoZSBuYW1lcyBvZiBOQ0FS
J3MgQ29tcHV0YXRpb25hbCBhbmQgSW5mb3JtYXRpb24gU3lzdGVtcworICAgTGFib3JhdG9yeSwg
dGhlIFVuaXZlcnNpdHkgQ29ycG9yYXRpb24gZm9yIEF0bW9zcGhlcmljIFJlc2VhcmNoLAorICAg
bm9yIHRoZSBuYW1lcyBvZiBpdHMgc3BvbnNvcnMgb3IgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvCisgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29m
dHdhcmUgd2l0aG91dAorICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAgCisK
KyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZXMsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhl
IGRpc2NsYWltZXIgYmVsb3cuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUgZGlzY2xhaW1lciBiZWxvdyBpbiB0aGUKKyAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICAgZGlz
dHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICBNRVJDSEFOVEFCSUxJ
VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICAgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09OVFJJQlVUT1JTIE9SIENPUFlSSUdIVAorICAg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKyAgIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCisgICBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgV0lUSCBUSEUKKyAgIFNP
RlRXQVJFLgorCisKKyAgIFBGRkZUIDogYSBQcmV0dHkgRmFzdCBGRlQuCisKKyAgIFRoaXMgZmls
ZSBpcyBsYXJnZXJseSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgRkZUUEFDSyBpbXBsZW1lbnRhdGlv
biwgbW9kaWZpZWQgaW4KKyAgIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIFNJTUQgaW5zdHJ1
Y3Rpb25zIG9mIG1vZGVybiBDUFVzLgorKi8KKworLyoKKyAgQ2hhbmdlTG9nOiAKKyAgLSAyMDEx
LzEwLzAyLCB2ZXJzaW9uIDE6IFRoaXMgaXMgdGhlIHZlcnkgZmlyc3QgcmVsZWFzZSBvZiB0aGlz
IGZpbGUuCisqLworCisjaW5jbHVkZSAicGZmZnQuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+
CisKKy8qIGRldGVjdCBjb21waWxlciBmbGF2b3VyICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikK
KyMgIGRlZmluZSBDT01QSUxFUl9NU1ZDCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorIyAgZGVm
aW5lIENPTVBJTEVSX0dDQworI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTVBJTEVSX0dDQykKKyMg
IGRlZmluZSBBTFdBWVNfSU5MSU5FKHJldHVybl90eXBlKSBpbmxpbmUgcmV0dXJuX3R5cGUgX19h
dHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorIyAgZGVmaW5lIE5FVkVSX0lOTElORShyZXR1
cm5fdHlwZSkgcmV0dXJuX3R5cGUgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKKyMgIGRlZmlu
ZSBSRVNUUklDVCBfX3Jlc3RyaWN0CisjICBkZWZpbmUgVkxBX0FSUkFZX09OX1NUQUNLKHR5cGVf
XywgdmFybmFtZV9fLCBzaXplX18pIHR5cGVfXyB2YXJuYW1lX19bc2l6ZV9fXTsKKyMgIGRlZmlu
ZSBWTEFfQVJSQVlfT05fU1RBQ0tfRlJFRSh2YXJuYW1lX18pCisjZWxpZiBkZWZpbmVkKENPTVBJ
TEVSX01TVkMpCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjICBkZWZpbmUgQUxXQVlTX0lOTElORShy
ZXR1cm5fdHlwZSkgX19mb3JjZWlubGluZSByZXR1cm5fdHlwZQorIyAgZGVmaW5lIE5FVkVSX0lO
TElORShyZXR1cm5fdHlwZSkgX19kZWNsc3BlYyhub2lubGluZSkgcmV0dXJuX3R5cGUKKyMgIGRl
ZmluZSBSRVNUUklDVCBfX3Jlc3RyaWN0CisjICBkZWZpbmUgVkxBX0FSUkFZX09OX1NUQUNLKHR5
cGVfXywgdmFybmFtZV9fLCBzaXplX18pIHR5cGVfXyAqdmFybmFtZV9fID0gKHR5cGVfXyopX21h
bGxvY2Eoc2l6ZV9fICogc2l6ZW9mKHR5cGVfXykpCisjICBkZWZpbmUgVkxBX0FSUkFZX09OX1NU
QUNLX0ZSRUUodmFybmFtZV9fKSBfZnJlZWEodmFybmFtZV9fKQorI2VuZGlmCisKKworLyogCisg
ICB2ZWN0b3Igc3VwcG9ydCBtYWNyb3M6IHRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIGluZGVwZW5k
YW50IG9mCisgICBTU0UvQWx0aXZlYy9ORU9OIC0tIGFkZGluZyBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMgd2l0aCA0LWVsZW1lbnQKKyAgIHZlY3RvcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8g
dGhlc2UgbWFjcm9zIAorKi8KKworCisvLyBkZWZpbmUgUEZGRlRfU0lNRF9ESVNBQkxFIGlmIHlv
dSB3YW50IHRvIHVzZSBzY2FsYXIgY29kZSBpbnN0ZWFkIG9mIHNpbWQgY29kZQorLy8jZGVmaW5l
IFBGRkZUX1NJTURfRElTQUJMRQorCisvKgorICAgQWx0aXZlYyBzdXBwb3J0IG1hY3JvcyAKKyov
CisjaWYgIWRlZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxFKSAmJiAoZGVmaW5lZChfX3BwY19fKSB8
fCBkZWZpbmVkKF9fcHBjNjRfXykpCit0eXBlZGVmIHZlY3RvciBmbG9hdCB2NHNmOworIyAgZGVm
aW5lIFNJTURfU1ogNAorIyAgZGVmaW5lIFZaRVJPKCkgKCh2ZWN0b3IgZmxvYXQpIHZlY19zcGxh
dF91OCgwKSkKKyMgIGRlZmluZSBWTVVMKGEsYikgdmVjX21hZGQoYSxiLCBWWkVSTygpKQorIyAg
ZGVmaW5lIFZBREQoYSxiKSB2ZWNfYWRkKGEsYikKKyMgIGRlZmluZSBWTUFERChhLGIsYykgdmVj
X21hZGQoYSxiLGMpCisjICBkZWZpbmUgVlNVQihhLGIpIHZlY19zdWIoYSxiKQoraW5saW5lIHY0
c2YgbGRfcHMxKGNvbnN0IGZsb2F0ICpwKSB7IHY0c2Ygdj12ZWNfbGRlKDAscCk7IHJldHVybiB2
ZWNfc3BsYXQodmVjX3Blcm0odiwgdiwgdmVjX2x2c2woMCwgcCkpLCAwKTsgfQorIyAgZGVmaW5l
IExEX1BTMShwKSBsZF9wczEoJnApCisjICBkZWZpbmUgSU5URVJMRUFWRTIoaW4xLCBpbjIsIG91
dDEsIG91dDIpIHsgdjRzZiB0bXBfXyA9IHZlY19tZXJnZWgoaW4xLCBpbjIpOyBvdXQyID0gdmVj
X21lcmdlbChpbjEsIGluMik7IG91dDEgPSB0bXBfXzsgfQorIyAgZGVmaW5lIFVOSU5URVJMRUFW
RTIoaW4xLCBpbjIsIG91dDEsIG91dDIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgdnBlcm0xID0gICh2ZWN0b3IgdW5zaWduZWQgY2hhciko
MCwxLDIsMyw4LDksMTAsMTEsMTYsMTcsMTgsMTksMjQsMjUsMjYsMjcpOyBcCisgICAgdmVjdG9y
IHVuc2lnbmVkIGNoYXIgdnBlcm0yID0gICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoNCw1LDYsNywx
MiwxMywxNCwxNSwyMCwyMSwyMiwyMywyOCwyOSwzMCwzMSk7IFwKKyAgICB2NHNmIHRtcF9fID0g
dmVjX3Blcm0oaW4xLCBpbjIsIHZwZXJtMSk7IG91dDIgPSB2ZWNfcGVybShpbjEsIGluMiwgdnBl
cm0yKTsgb3V0MSA9IHRtcF9fOyBcCisgIH0KKyMgIGRlZmluZSBWVFJBTlNQT1NFNCh4MCx4MSx4
Mix4MykgeyAgICAgICAgICAgICAgXAorICAgIHY0c2YgeTAgPSB2ZWNfbWVyZ2VoKHgwLCB4Mik7
ICAgICAgICAgICAgICAgXAorICAgIHY0c2YgeTEgPSB2ZWNfbWVyZ2VsKHgwLCB4Mik7ICAgICAg
ICAgICAgICAgXAorICAgIHY0c2YgeTIgPSB2ZWNfbWVyZ2VoKHgxLCB4Myk7ICAgICAgICAgICAg
ICAgXAorICAgIHY0c2YgeTMgPSB2ZWNfbWVyZ2VsKHgxLCB4Myk7ICAgICAgICAgICAgICAgXAor
ICAgIHgwID0gdmVjX21lcmdlaCh5MCwgeTIpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIHgx
ID0gdmVjX21lcmdlbCh5MCwgeTIpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIHgyID0gdmVj
X21lcmdlaCh5MSwgeTMpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIHgzID0gdmVjX21lcmdl
bCh5MSwgeTMpOyAgICAgICAgICAgICAgICAgICAgXAorICB9CisjICBkZWZpbmUgVlNXQVBITChh
LGIpIHZlY19wZXJtKGEsYiwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiwxNywxOCwxOSwyMCwy
MSwyMiwyMyw4LDksMTAsMTEsMTIsMTMsMTQsMTUpKQorIyAgZGVmaW5lIFZBTElHTkVEKHB0cikg
KCgoKHVpbnRwdHJfdCkocHRyKSkgJiAweEYpID09IDApCisKKy8qCisgIFNTRTEgc3VwcG9ydCBt
YWNyb3MKKyovCisjZWxpZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpICYmIChkZWZpbmVk
KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKGkzODYpIHx8IGRlZmlu
ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCisKKyNpbmNsdWRlIDx4bW1pbnRyaW4u
aD4KK3R5cGVkZWYgX19tMTI4IHY0c2Y7CisjICBkZWZpbmUgU0lNRF9TWiA0IC8vIDQgZmxvYXRz
IGJ5IHNpbWQgdmVjdG9yIC0tIHRoaXMgaXMgcHJldHR5IG11Y2ggaGFyZGNvZGVkIGluIHRoZSBw
cmVwcm9jZXNzL2ZpbmFsaXplIGZ1bmN0aW9ucyBhbnl3YXkgc28geW91IHdpbGwgaGF2ZSB0byB3
b3JrIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBBVlggd2l0aCBpdHMgMjU2LWJpdCB2ZWN0b3JzLgor
IyAgZGVmaW5lIFZaRVJPKCkgX21tX3NldHplcm9fcHMoKQorIyAgZGVmaW5lIFZNVUwoYSxiKSBf
bW1fbXVsX3BzKGEsYikKKyMgIGRlZmluZSBWQUREKGEsYikgX21tX2FkZF9wcyhhLGIpCisjICBk
ZWZpbmUgVk1BREQoYSxiLGMpIF9tbV9hZGRfcHMoX21tX211bF9wcyhhLGIpLCBjKQorIyAgZGVm
aW5lIFZTVUIoYSxiKSBfbW1fc3ViX3BzKGEsYikKKyMgIGRlZmluZSBMRF9QUzEocCkgX21tX3Nl
dDFfcHMocCkKKyMgIGRlZmluZSBJTlRFUkxFQVZFMihpbjEsIGluMiwgb3V0MSwgb3V0MikgeyB2
NHNmIHRtcF9fID0gX21tX3VucGFja2xvX3BzKGluMSwgaW4yKTsgb3V0MiA9IF9tbV91bnBhY2to
aV9wcyhpbjEsIGluMik7IG91dDEgPSB0bXBfXzsgfQorIyAgZGVmaW5lIFVOSU5URVJMRUFWRTIo
aW4xLCBpbjIsIG91dDEsIG91dDIpIHsgdjRzZiB0bXBfXyA9IF9tbV9zaHVmZmxlX3BzKGluMSwg
aW4yLCBfTU1fU0hVRkZMRSgyLDAsMiwwKSk7IG91dDIgPSBfbW1fc2h1ZmZsZV9wcyhpbjEsIGlu
MiwgX01NX1NIVUZGTEUoMywxLDMsMSkpOyBvdXQxID0gdG1wX187IH0KKyMgIGRlZmluZSBWVFJB
TlNQT1NFNCh4MCx4MSx4Mix4MykgX01NX1RSQU5TUE9TRTRfUFMoeDAseDEseDIseDMpCisjICBk
ZWZpbmUgVlNXQVBITChhLGIpIF9tbV9zaHVmZmxlX3BzKGIsIGEsIF9NTV9TSFVGRkxFKDMsMiwx
LDApKQorIyAgZGVmaW5lIFZBTElHTkVEKHB0cikgKCgoKHVpbnRwdHJfdCkocHRyKSkgJiAweEYp
ID09IDApCisKKy8qCisgIEFSTSBORU9OIHN1cHBvcnQgbWFjcm9zCisqLworI2VsaWYgIWRlZmlu
ZWQoUEZGRlRfU0lNRF9ESVNBQkxFKSAmJiAoZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f
QVJNRUxfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfTV9BUk02NCkpCisj
ICBpbmNsdWRlIDxhcm1fbmVvbi5oPgordHlwZWRlZiBmbG9hdDMyeDRfdCB2NHNmOworIyAgZGVm
aW5lIFNJTURfU1ogNAorIyAgZGVmaW5lIFZaRVJPKCkgdmR1cHFfbl9mMzIoMCkKKyMgIGRlZmlu
ZSBWTVVMKGEsYikgdm11bHFfZjMyKGEsYikKKyMgIGRlZmluZSBWQUREKGEsYikgdmFkZHFfZjMy
KGEsYikKKyMgIGRlZmluZSBWTUFERChhLGIsYykgdm1sYXFfZjMyKGMsYSxiKQorIyAgZGVmaW5l
IFZTVUIoYSxiKSB2c3VicV9mMzIoYSxiKQorIyAgZGVmaW5lIExEX1BTMShwKSB2bGQxcV9kdXBf
ZjMyKCYocCkpCisjICBkZWZpbmUgSU5URVJMRUFWRTIoaW4xLCBpbjIsIG91dDEsIG91dDIpIHsg
ZmxvYXQzMng0eDJfdCB0bXBfXyA9IHZ6aXBxX2YzMihpbjEsaW4yKTsgb3V0MT10bXBfXy52YWxb
MF07IG91dDI9dG1wX18udmFsWzFdOyB9CisjICBkZWZpbmUgVU5JTlRFUkxFQVZFMihpbjEsIGlu
Miwgb3V0MSwgb3V0MikgeyBmbG9hdDMyeDR4Ml90IHRtcF9fID0gdnV6cHFfZjMyKGluMSxpbjIp
OyBvdXQxPXRtcF9fLnZhbFswXTsgb3V0Mj10bXBfXy52YWxbMV07IH0KKyMgIGRlZmluZSBWVFJB
TlNQT1NFNCh4MCx4MSx4Mix4MykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBmbG9hdDMyeDR4Ml90IHQwXyA9IHZ6aXBxX2YzMih4MCwgeDIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBmbG9hdDMyeDR4Ml90IHQxXyA9IHZ6aXBxX2YzMih4
MSwgeDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBmbG9hdDMyeDR4Ml90
IHUwXyA9IHZ6aXBxX2YzMih0MF8udmFsWzBdLCB0MV8udmFsWzBdKTsgICAgICAgICAgICAgIFwK
KyAgICBmbG9hdDMyeDR4Ml90IHUxXyA9IHZ6aXBxX2YzMih0MF8udmFsWzFdLCB0MV8udmFsWzFd
KTsgICAgICAgICAgICAgIFwKKyAgICB4MCA9IHUwXy52YWxbMF07IHgxID0gdTBfLnZhbFsxXTsg
eDIgPSB1MV8udmFsWzBdOyB4MyA9IHUxXy52YWxbMV07IFwKKyAgfQorLy8gbWFyZ2luYWxseSBm
YXN0ZXIgdmVyc2lvbgorLy8jICBkZWZpbmUgVlRSQU5TUE9TRTQoeDAseDEseDIseDMpIHsgYXNt
KCJ2dHJuLjMyICVxMCwgJXExO1xuIHZ0cm4uMzIgJXEyLCVxM1xuIHZzd3AgJWYwLCVlMlxuIHZz
d3AgJWYxLCVlMyIgOiAiK3ciKHgwKSwgIit3Iih4MSksICIrdyIoeDIpLCAiK3ciKHgzKTo6KTsg
fQorIyAgZGVmaW5lIFZTV0FQSEwoYSxiKSB2Y29tYmluZV9mMzIodmdldF9sb3dfZjMyKGIpLCB2
Z2V0X2hpZ2hfZjMyKGEpKQorIyAgZGVmaW5lIFZBTElHTkVEKHB0cikgKCgoKHVpbnRwdHJfdCko
cHRyKSkgJiAweDMpID09IDApCisjZWxzZQorIyAgaWYgIWRlZmluZWQoUEZGRlRfU0lNRF9ESVNB
QkxFKQorIyAgICB3YXJuaW5nICJidWlsZGluZyB3aXRoIHNpbWQgZGlzYWJsZWQgIVxuIjsKKyMg
ICAgZGVmaW5lIFBGRkZUX1NJTURfRElTQUJMRSAvLyBmYWxsYmFjayB0byBzY2FsYXIgY29kZQor
IyAgZW5kaWYKKyNlbmRpZgorCisvLyBmYWxsYmFjayBtb2RlIGZvciBzaXR1YXRpb25zIHdoZXJl
IFNTRS9BbHRpdmVjIGFyZSBub3QgYXZhaWxhYmxlLCB1c2Ugc2NhbGFyIG1vZGUgaW5zdGVhZAor
I2lmZGVmIFBGRkZUX1NJTURfRElTQUJMRQordHlwZWRlZiBmbG9hdCB2NHNmOworIyAgZGVmaW5l
IFNJTURfU1ogMQorIyAgZGVmaW5lIFZaRVJPKCkgMC5mCisjICBkZWZpbmUgVk1VTChhLGIpICgo
YSkqKGIpKQorIyAgZGVmaW5lIFZBREQoYSxiKSAoKGEpKyhiKSkKKyMgIGRlZmluZSBWTUFERChh
LGIsYykgKChhKSooYikrKGMpKQorIyAgZGVmaW5lIFZTVUIoYSxiKSAoKGEpLShiKSkKKyMgIGRl
ZmluZSBMRF9QUzEocCkgKHApCisjICBkZWZpbmUgVkFMSUdORUQocHRyKSAoKCgodWludHB0cl90
KShwdHIpKSAmIDB4MykgPT0gMCkKKyNlbmRpZgorCisvLyBzaG9ydGN1dHMgZm9yIGNvbXBsZXgg
bXVsdGlwbGNhdGlvbnMKKyNkZWZpbmUgVkNQTFhNVUwoYXIsYWksYnIsYmkpIHsgdjRzZiB0bXA7
IHRtcD1WTVVMKGFyLGJpKTsgYXI9Vk1VTChhcixicik7IGFyPVZTVUIoYXIsVk1VTChhaSxiaSkp
OyBhaT1WTVVMKGFpLGJyKTsgYWk9VkFERChhaSx0bXApOyB9CisjZGVmaW5lIFZDUExYTVVMQ09O
SihhcixhaSxicixiaSkgeyB2NHNmIHRtcDsgdG1wPVZNVUwoYXIsYmkpOyBhcj1WTVVMKGFyLGJy
KTsgYXI9VkFERChhcixWTVVMKGFpLGJpKSk7IGFpPVZNVUwoYWksYnIpOyBhaT1WU1VCKGFpLHRt
cCk7IH0KKyNpZm5kZWYgU1ZNVUwKKy8vIG11bHRpcGx5IGEgc2NhbGFyIHdpdGggYSB2ZWN0b3IK
KyNkZWZpbmUgU1ZNVUwoZix2KSBWTVVMKExEX1BTMShmKSx2KQorI2VuZGlmCisKKyNpZiAhZGVm
aW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpCit0eXBlZGVmIHVuaW9uIHY0c2ZfdW5pb24geworICB2
NHNmICB2OworICBmbG9hdCBmWzRdOworfSB2NHNmX3VuaW9uOworCisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisKKyNkZWZpbmUgYXNzZXJ0djQodixmMCxmMSxmMixmMykgYXNzZXJ0KHYuZlswXSA9PSAo
ZjApICYmIHYuZlsxXSA9PSAoZjEpICYmIHYuZlsyXSA9PSAoZjIpICYmIHYuZlszXSA9PSAoZjMp
KQorCisvKiBkZXRlY3QgYnVncyB3aXRoIHRoZSB2ZWN0b3Igc3VwcG9ydCBtYWNyb3MgKi8KK3Zv
aWQgdmFsaWRhdGVfcGZmZnRfc2ltZCgpIHsKKyAgZmxvYXQgZlsxNl0gPSB7IDAsMSwyLDMsNCw1
LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUgfTsKKyAgdjRzZl91bmlvbiBhMCwgYTEsIGEyLCBh
MywgdCwgdTsgCisgIG1lbWNweShhMC5mLCBmLCA0KnNpemVvZihmbG9hdCkpOworICBtZW1jcHko
YTEuZiwgZis0LCA0KnNpemVvZihmbG9hdCkpOworICBtZW1jcHkoYTIuZiwgZis4LCA0KnNpemVv
ZihmbG9hdCkpOworICBtZW1jcHkoYTMuZiwgZisxMiwgNCpzaXplb2YoZmxvYXQpKTsKKworICB0
ID0gYTA7IHUgPSBhMTsgdC52ID0gVlpFUk8oKTsKKyAgYXNzZXJ0djQodCwgMCwgMCwgMCwgMCk7
CisgIHQudiA9IFZBREQoYTEudiwgYTIudik7CisgIGFzc2VydHY0KHQsIDEyLCAxNCwgMTYsIDE4
KTsKKyAgdC52ID0gVk1VTChhMS52LCBhMi52KTsKKyAgYXNzZXJ0djQodCwgMzIsIDQ1LCA2MCwg
NzcpOworICB0LnYgPSBWTUFERChhMS52LCBhMi52LGEwLnYpOworICBhc3NlcnR2NCh0LCAzMiwg
NDYsIDYyLCA4MCk7CisKKyAgSU5URVJMRUFWRTIoYTEudixhMi52LHQudix1LnYpOworICBhc3Nl
cnR2NCh0LCA0LCA4LCA1LCA5KTsgYXNzZXJ0djQodSwgNiwgMTAsIDcsIDExKTsKKyAgVU5JTlRF
UkxFQVZFMihhMS52LGEyLnYsdC52LHUudik7CisgIGFzc2VydHY0KHQsIDQsIDYsIDgsIDEwKTsg
YXNzZXJ0djQodSwgNSwgNywgOSwgMTEpOworCisgIHQudj1MRF9QUzEoZlsxNV0pOworICBhc3Nl
cnR2NCh0LCAxNSwgMTUsIDE1LCAxNSk7CisgIHQudiA9IFZTV0FQSEwoYTEudiwgYTIudik7Cisg
IGFzc2VydHY0KHQsIDgsIDksIDYsIDcpOworICBWVFJBTlNQT1NFNChhMC52LCBhMS52LCBhMi52
LCBhMy52KTsKKyAgYXNzZXJ0djQoYTAsIDAsIDQsIDgsIDEyKTsgYXNzZXJ0djQoYTEsIDEsIDUs
IDksIDEzKTsgYXNzZXJ0djQoYTIsIDIsIDYsIDEwLCAxNCk7IGFzc2VydHY0KGEzLCAzLCA3LCAx
MSwgMTUpOworfQorI2VuZGlmIC8vIVBGRkZUX1NJTURfRElTQUJMRQorCisvKiBTU0UgYW5kIGNv
IGxpa2UgMTYtYnl0ZXMgYWxpZ25lZCBwb2ludGVycyAqLworI2RlZmluZSBNQUxMT0NfVjRTRl9B
TElHTk1FTlQgNjQgLy8gd2l0aCBhIDY0LWJ5dGUgYWxpZ25tZW50LCB3ZSBhcmUgZXZlbiBhbGln
bmVkIG9uIEwyIGNhY2hlIGxpbmVzLi4uCit2b2lkICpwZmZmdF9hbGlnbmVkX21hbGxvYyhzaXpl
X3QgbmJfYnl0ZXMpIHsKKyAgdm9pZCAqcCwgKnAwID0gbWFsbG9jKG5iX2J5dGVzICsgTUFMTE9D
X1Y0U0ZfQUxJR05NRU5UKTsKKyAgaWYgKCFwMCkgcmV0dXJuICh2b2lkICopIDA7CisgIHAgPSAo
dm9pZCAqKSAoKChzaXplX3QpIHAwICsgTUFMTE9DX1Y0U0ZfQUxJR05NRU5UKSAmICh+KChzaXpl
X3QpIChNQUxMT0NfVjRTRl9BTElHTk1FTlQtMSkpKSk7CisgICooKHZvaWQgKiopIHAgLSAxKSA9
IHAwOworICByZXR1cm4gcDsKK30KKwordm9pZCBwZmZmdF9hbGlnbmVkX2ZyZWUodm9pZCAqcCkg
eworICBpZiAocCkgZnJlZSgqKCh2b2lkICoqKSBwIC0gMSkpOworfQorCitpbnQgcGZmZnRfc2lt
ZF9zaXplKCkgeyByZXR1cm4gU0lNRF9TWjsgfQorCisvKgorICBwYXNzZjIgYW5kIHBhc3NiMiBo
YXMgYmVlbiBtZXJnZWQgaGVyZSwgZnNpZ24gPSAtMSBmb3IgcGFzc2YyLCArMSBmb3IgcGFzc2Iy
CisqLworc3RhdGljIE5FVkVSX0lOTElORSh2b2lkKSBwYXNzZjJfcHMoaW50IGlkbywgaW50IGwx
LCBjb25zdCB2NHNmICpjYywgdjRzZiAqY2gsIGNvbnN0IGZsb2F0ICp3YTEsIGZsb2F0IGZzaWdu
KSB7CisgIGludCBrLCBpOworICBpbnQgbDFpZG8gPSBsMSppZG87CisgIGlmIChpZG8gPD0gMikg
eworICAgIGZvciAoaz0wOyBrIDwgbDFpZG87IGsgKz0gaWRvLCBjaCArPSBpZG8sIGNjKz0gMipp
ZG8pIHsKKyAgICAgIGNoWzBdICAgICAgICAgPSBWQUREKGNjWzBdLCBjY1tpZG8rMF0pOworICAg
ICAgY2hbbDFpZG9dICAgICA9IFZTVUIoY2NbMF0sIGNjW2lkbyswXSk7CisgICAgICBjaFsxXSAg
ICAgICAgID0gVkFERChjY1sxXSwgY2NbaWRvKzFdKTsKKyAgICAgIGNoW2wxaWRvICsgMV0gPSBW
U1VCKGNjWzFdLCBjY1tpZG8rMV0pOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBmb3IgKGs9MDsg
ayA8IGwxaWRvOyBrICs9IGlkbywgY2ggKz0gaWRvLCBjYyArPSAyKmlkbykgeworICAgICAgZm9y
IChpPTA7IGk8aWRvLTE7IGkrPTIpIHsKKyAgICAgICAgdjRzZiB0cjIgPSBWU1VCKGNjW2krMF0s
IGNjW2kraWRvKzBdKTsKKyAgICAgICAgdjRzZiB0aTIgPSBWU1VCKGNjW2krMV0sIGNjW2kraWRv
KzFdKTsKKyAgICAgICAgdjRzZiB3ciA9IExEX1BTMSh3YTFbaV0pLCB3aSA9IFZNVUwoTERfUFMx
KGZzaWduKSwgTERfUFMxKHdhMVtpKzFdKSk7CisgICAgICAgIGNoW2ldICAgPSBWQUREKGNjW2kr
MF0sIGNjW2kraWRvKzBdKTsKKyAgICAgICAgY2hbaSsxXSA9IFZBREQoY2NbaSsxXSwgY2NbaStp
ZG8rMV0pOworICAgICAgICBWQ1BMWE1VTCh0cjIsIHRpMiwgd3IsIHdpKTsKKyAgICAgICAgY2hb
aStsMWlkb10gICA9IHRyMjsKKyAgICAgICAgY2hbaStsMWlkbysxXSA9IHRpMjsKKyAgICAgIH0K
KyAgICB9CisgIH0KK30KKworLyoKKyAgcGFzc2YzIGFuZCBwYXNzYjMgaGFzIGJlZW4gbWVyZ2Vk
IGhlcmUsIGZzaWduID0gLTEgZm9yIHBhc3NmMywgKzEgZm9yIHBhc3NiMworKi8KK3N0YXRpYyBO
RVZFUl9JTkxJTkUodm9pZCkgcGFzc2YzX3BzKGludCBpZG8sIGludCBsMSwgY29uc3QgdjRzZiAq
Y2MsIHY0c2YgKmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZmxvYXQgKndhMSwgY29uc3QgZmxvYXQgKndhMiwgZmxvYXQgZnNpZ24pIHsKKyAgc3RhdGljIGNv
bnN0IGZsb2F0IHRhdXIgPSAtMC41ZjsKKyAgZmxvYXQgdGF1aSA9IDAuODY2MDI1NDAzNzg0NDM5
Zipmc2lnbjsKKyAgaW50IGksIGs7CisgIHY0c2YgdHIyLCB0aTIsIGNyMiwgY2kyLCBjcjMsIGNp
MywgZHIyLCBkaTIsIGRyMywgZGkzOworICBpbnQgbDFpZG8gPSBsMSppZG87CisgIGZsb2F0IHdy
MSwgd2kxLCB3cjIsIHdpMjsKKyAgYXNzZXJ0KGlkbyA+IDIpOworICBmb3IgKGs9MDsgazwgbDFp
ZG87IGsgKz0gaWRvLCBjYys9IDMqaWRvLCBjaCArPWlkbykgeworICAgIGZvciAoaT0wOyBpPGlk
by0xOyBpKz0yKSB7CisgICAgICB0cjIgPSBWQUREKGNjW2kraWRvXSwgY2NbaSsyKmlkb10pOwor
ICAgICAgY3IyID0gVkFERChjY1tpXSwgU1ZNVUwodGF1cix0cjIpKTsKKyAgICAgIGNoW2ldICAg
ID0gVkFERChjY1tpXSwgdHIyKTsKKyAgICAgIHRpMiA9IFZBREQoY2NbaStpZG8rMV0sIGNjW2kr
MippZG8rMV0pOworICAgICAgY2kyID0gVkFERChjY1tpICAgICsxXSwgU1ZNVUwodGF1cix0aTIp
KTsKKyAgICAgIGNoW2krMV0gID0gVkFERChjY1tpKzFdLCB0aTIpOworICAgICAgY3IzID0gU1ZN
VUwodGF1aSwgVlNVQihjY1tpK2lkb10sIGNjW2krMippZG9dKSk7CisgICAgICBjaTMgPSBTVk1V
TCh0YXVpLCBWU1VCKGNjW2kraWRvKzFdLCBjY1tpKzIqaWRvKzFdKSk7CisgICAgICBkcjIgPSBW
U1VCKGNyMiwgY2kzKTsKKyAgICAgIGRyMyA9IFZBREQoY3IyLCBjaTMpOworICAgICAgZGkyID0g
VkFERChjaTIsIGNyMyk7CisgICAgICBkaTMgPSBWU1VCKGNpMiwgY3IzKTsKKyAgICAgIHdyMT13
YTFbaV0sIHdpMT1mc2lnbip3YTFbaSsxXSwgd3IyPXdhMltpXSwgd2kyPWZzaWduKndhMltpKzFd
OyAKKyAgICAgIFZDUExYTVVMKGRyMiwgZGkyLCBMRF9QUzEod3IxKSwgTERfUFMxKHdpMSkpOwor
ICAgICAgY2hbaStsMWlkb10gPSBkcjI7IAorICAgICAgY2hbaStsMWlkbyArIDFdID0gZGkyOwor
ICAgICAgVkNQTFhNVUwoZHIzLCBkaTMsIExEX1BTMSh3cjIpLCBMRF9QUzEod2kyKSk7CisgICAg
ICBjaFtpKzIqbDFpZG9dID0gZHIzOworICAgICAgY2hbaSsyKmwxaWRvKzFdID0gZGkzOworICAg
IH0KKyAgfQorfSAvKiBwYXNzZjMgKi8KKworc3RhdGljIE5FVkVSX0lOTElORSh2b2lkKSBwYXNz
ZjRfcHMoaW50IGlkbywgaW50IGwxLCBjb25zdCB2NHNmICpjYywgdjRzZiAqY2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqd2ExLCBjb25zdCBmbG9h
dCAqd2EyLCBjb25zdCBmbG9hdCAqd2EzLCBmbG9hdCBmc2lnbikgeworICAvKiBpc2lnbiA9PSAt
MSBmb3IgZm9yd2FyZCB0cmFuc2Zvcm0gYW5kICsxIGZvciBiYWNrd2FyZCB0cmFuc2Zvcm0gKi8K
KworICBpbnQgaSwgazsKKyAgdjRzZiBjaTIsIGNpMywgY2k0LCBjcjIsIGNyMywgY3I0LCB0aTEs
IHRpMiwgdGkzLCB0aTQsIHRyMSwgdHIyLCB0cjMsIHRyNDsKKyAgaW50IGwxaWRvID0gbDEqaWRv
OworICBpZiAoaWRvID09IDIpIHsKKyAgICBmb3IgKGs9MDsgayA8IGwxaWRvOyBrICs9IGlkbywg
Y2ggKz0gaWRvLCBjYyArPSA0KmlkbykgeworICAgICAgdHIxID0gVlNVQihjY1swXSwgY2NbMipp
ZG8gKyAwXSk7CisgICAgICB0cjIgPSBWQUREKGNjWzBdLCBjY1syKmlkbyArIDBdKTsKKyAgICAg
IHRpMSA9IFZTVUIoY2NbMV0sIGNjWzIqaWRvICsgMV0pOworICAgICAgdGkyID0gVkFERChjY1sx
XSwgY2NbMippZG8gKyAxXSk7CisgICAgICB0aTQgPSBWTVVMKFZTVUIoY2NbMSppZG8gKyAwXSwg
Y2NbMyppZG8gKyAwXSksIExEX1BTMShmc2lnbikpOworICAgICAgdHI0ID0gVk1VTChWU1VCKGNj
WzMqaWRvICsgMV0sIGNjWzEqaWRvICsgMV0pLCBMRF9QUzEoZnNpZ24pKTsKKyAgICAgIHRyMyA9
IFZBREQoY2NbaWRvICsgMF0sIGNjWzMqaWRvICsgMF0pOworICAgICAgdGkzID0gVkFERChjY1tp
ZG8gKyAxXSwgY2NbMyppZG8gKyAxXSk7CisKKyAgICAgIGNoWzAqbDFpZG8gKyAwXSA9IFZBREQo
dHIyLCB0cjMpOworICAgICAgY2hbMCpsMWlkbyArIDFdID0gVkFERCh0aTIsIHRpMyk7CisgICAg
ICBjaFsxKmwxaWRvICsgMF0gPSBWQUREKHRyMSwgdHI0KTsKKyAgICAgIGNoWzEqbDFpZG8gKyAx
XSA9IFZBREQodGkxLCB0aTQpOworICAgICAgY2hbMipsMWlkbyArIDBdID0gVlNVQih0cjIsIHRy
Myk7CisgICAgICBjaFsyKmwxaWRvICsgMV0gPSBWU1VCKHRpMiwgdGkzKTsgICAgICAgIAorICAg
ICAgY2hbMypsMWlkbyArIDBdID0gVlNVQih0cjEsIHRyNCk7CisgICAgICBjaFszKmwxaWRvICsg
MV0gPSBWU1VCKHRpMSwgdGk0KTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgZm9yIChrPTA7IGsg
PCBsMWlkbzsgayArPSBpZG8sIGNoKz1pZG8sIGNjICs9IDQqaWRvKSB7CisgICAgICBmb3IgKGk9
MDsgaTxpZG8tMTsgaSs9MikgeworICAgICAgICBmbG9hdCB3cjEsIHdpMSwgd3IyLCB3aTIsIHdy
Mywgd2kzOworICAgICAgICB0cjEgPSBWU1VCKGNjW2kgKyAwXSwgY2NbaSArIDIqaWRvICsgMF0p
OworICAgICAgICB0cjIgPSBWQUREKGNjW2kgKyAwXSwgY2NbaSArIDIqaWRvICsgMF0pOworICAg
ICAgICB0aTEgPSBWU1VCKGNjW2kgKyAxXSwgY2NbaSArIDIqaWRvICsgMV0pOworICAgICAgICB0
aTIgPSBWQUREKGNjW2kgKyAxXSwgY2NbaSArIDIqaWRvICsgMV0pOworICAgICAgICB0cjQgPSBW
TVVMKFZTVUIoY2NbaSArIDMqaWRvICsgMV0sIGNjW2kgKyAxKmlkbyArIDFdKSwgTERfUFMxKGZz
aWduKSk7CisgICAgICAgIHRpNCA9IFZNVUwoVlNVQihjY1tpICsgMSppZG8gKyAwXSwgY2NbaSAr
IDMqaWRvICsgMF0pLCBMRF9QUzEoZnNpZ24pKTsKKyAgICAgICAgdHIzID0gVkFERChjY1tpICsg
aWRvICsgMF0sIGNjW2kgKyAzKmlkbyArIDBdKTsKKyAgICAgICAgdGkzID0gVkFERChjY1tpICsg
aWRvICsgMV0sIGNjW2kgKyAzKmlkbyArIDFdKTsKKworICAgICAgICBjaFtpXSA9IFZBREQodHIy
LCB0cjMpOworICAgICAgICBjcjMgICAgPSBWU1VCKHRyMiwgdHIzKTsKKyAgICAgICAgY2hbaSAr
IDFdID0gVkFERCh0aTIsIHRpMyk7CisgICAgICAgIGNpMyA9IFZTVUIodGkyLCB0aTMpOworCisg
ICAgICAgIGNyMiA9IFZBREQodHIxLCB0cjQpOworICAgICAgICBjcjQgPSBWU1VCKHRyMSwgdHI0
KTsKKyAgICAgICAgY2kyID0gVkFERCh0aTEsIHRpNCk7CisgICAgICAgIGNpNCA9IFZTVUIodGkx
LCB0aTQpOworICAgICAgICB3cjE9d2ExW2ldLCB3aTE9ZnNpZ24qd2ExW2krMV07CisgICAgICAg
IFZDUExYTVVMKGNyMiwgY2kyLCBMRF9QUzEod3IxKSwgTERfUFMxKHdpMSkpOworICAgICAgICB3
cjI9d2EyW2ldLCB3aTI9ZnNpZ24qd2EyW2krMV07IAorICAgICAgICBjaFtpICsgbDFpZG9dID0g
Y3IyOworICAgICAgICBjaFtpICsgbDFpZG8gKyAxXSA9IGNpMjsKKworICAgICAgICBWQ1BMWE1V
TChjcjMsIGNpMywgTERfUFMxKHdyMiksIExEX1BTMSh3aTIpKTsKKyAgICAgICAgd3IzPXdhM1tp
XSwgd2kzPWZzaWduKndhM1tpKzFdOyAKKyAgICAgICAgY2hbaSArIDIqbDFpZG9dID0gY3IzOwor
ICAgICAgICBjaFtpICsgMipsMWlkbyArIDFdID0gY2kzOworCisgICAgICAgIFZDUExYTVVMKGNy
NCwgY2k0LCBMRF9QUzEod3IzKSwgTERfUFMxKHdpMykpOworICAgICAgICBjaFtpICsgMypsMWlk
b10gPSBjcjQ7CisgICAgICAgIGNoW2kgKyAzKmwxaWRvICsgMV0gPSBjaTQ7CisgICAgICB9Cisg
ICAgfQorICB9Cit9IC8qIHBhc3NmNCAqLworCisvKgorICBwYXNzZjUgYW5kIHBhc3NiNSBoYXMg
YmVlbiBtZXJnZWQgaGVyZSwgZnNpZ24gPSAtMSBmb3IgcGFzc2Y1LCArMSBmb3IgcGFzc2I1Cisq
Lworc3RhdGljIE5FVkVSX0lOTElORSh2b2lkKSBwYXNzZjVfcHMoaW50IGlkbywgaW50IGwxLCBj
b25zdCB2NHNmICpjYywgdjRzZiAqY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBmbG9hdCAqd2ExLCBjb25zdCBmbG9hdCAqd2EyLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICp3YTMsIGNvbnN0IGZsb2F0ICp3YTQs
IGZsb2F0IGZzaWduKSB7ICAKKyAgc3RhdGljIGNvbnN0IGZsb2F0IHRyMTEgPSAuMzA5MDE2OTk0
Mzc0OTQ3ZjsKKyAgY29uc3QgZmxvYXQgdGkxMSA9IC45NTEwNTY1MTYyOTUxNTRmKmZzaWduOwor
ICBzdGF0aWMgY29uc3QgZmxvYXQgdHIxMiA9IC0uODA5MDE2OTk0Mzc0OTQ3ZjsKKyAgY29uc3Qg
ZmxvYXQgdGkxMiA9IC41ODc3ODUyNTIyOTI0NzNmKmZzaWduOworCisgIC8qIExvY2FsIHZhcmlh
YmxlcyAqLworICBpbnQgaSwgazsKKyAgdjRzZiBjaTIsIGNpMywgY2k0LCBjaTUsIGRpMywgZGk0
LCBkaTUsIGRpMiwgY3IyLCBjcjMsIGNyNSwgY3I0LCB0aTIsIHRpMywKKyAgICB0aTQsIHRpNSwg
ZHIzLCBkcjQsIGRyNSwgZHIyLCB0cjIsIHRyMywgdHI0LCB0cjU7CisKKyAgZmxvYXQgd3IxLCB3
aTEsIHdyMiwgd2kyLCB3cjMsIHdpMywgd3I0LCB3aTQ7CisKKyNkZWZpbmUgY2NfcmVmKGFfMSxh
XzIpIGNjWyhhXzItMSkqaWRvICsgYV8xICsgMV0KKyNkZWZpbmUgY2hfcmVmKGFfMSxhXzMpIGNo
WyhhXzMtMSkqbDEqaWRvICsgYV8xICsgMV0KKworICBhc3NlcnQoaWRvID4gMik7CisgIGZvciAo
ayA9IDA7IGsgPCBsMTsgKytrLCBjYyArPSA1KmlkbywgY2ggKz0gaWRvKSB7CisgICAgZm9yIChp
ID0gMDsgaSA8IGlkby0xOyBpICs9IDIpIHsKKyAgICAgIHRpNSA9IFZTVUIoY2NfcmVmKGkgICwg
MiksIGNjX3JlZihpICAsIDUpKTsKKyAgICAgIHRpMiA9IFZBREQoY2NfcmVmKGkgICwgMiksIGNj
X3JlZihpICAsIDUpKTsKKyAgICAgIHRpNCA9IFZTVUIoY2NfcmVmKGkgICwgMyksIGNjX3JlZihp
ICAsIDQpKTsKKyAgICAgIHRpMyA9IFZBREQoY2NfcmVmKGkgICwgMyksIGNjX3JlZihpICAsIDQp
KTsKKyAgICAgIHRyNSA9IFZTVUIoY2NfcmVmKGktMSwgMiksIGNjX3JlZihpLTEsIDUpKTsKKyAg
ICAgIHRyMiA9IFZBREQoY2NfcmVmKGktMSwgMiksIGNjX3JlZihpLTEsIDUpKTsKKyAgICAgIHRy
NCA9IFZTVUIoY2NfcmVmKGktMSwgMyksIGNjX3JlZihpLTEsIDQpKTsKKyAgICAgIHRyMyA9IFZB
REQoY2NfcmVmKGktMSwgMyksIGNjX3JlZihpLTEsIDQpKTsKKyAgICAgIGNoX3JlZihpLTEsIDEp
ID0gVkFERChjY19yZWYoaS0xLCAxKSwgVkFERCh0cjIsIHRyMykpOworICAgICAgY2hfcmVmKGkg
ICwgMSkgPSBWQUREKGNjX3JlZihpICAsIDEpLCBWQUREKHRpMiwgdGkzKSk7CisgICAgICBjcjIg
PSBWQUREKGNjX3JlZihpLTEsIDEpLCBWQUREKFNWTVVMKHRyMTEsIHRyMiksU1ZNVUwodHIxMiwg
dHIzKSkpOworICAgICAgY2kyID0gVkFERChjY19yZWYoaSAgLCAxKSwgVkFERChTVk1VTCh0cjEx
LCB0aTIpLFNWTVVMKHRyMTIsIHRpMykpKTsKKyAgICAgIGNyMyA9IFZBREQoY2NfcmVmKGktMSwg
MSksIFZBREQoU1ZNVUwodHIxMiwgdHIyKSxTVk1VTCh0cjExLCB0cjMpKSk7CisgICAgICBjaTMg
PSBWQUREKGNjX3JlZihpICAsIDEpLCBWQUREKFNWTVVMKHRyMTIsIHRpMiksU1ZNVUwodHIxMSwg
dGkzKSkpOworICAgICAgY3I1ID0gVkFERChTVk1VTCh0aTExLCB0cjUpLCBTVk1VTCh0aTEyLCB0
cjQpKTsKKyAgICAgIGNpNSA9IFZBREQoU1ZNVUwodGkxMSwgdGk1KSwgU1ZNVUwodGkxMiwgdGk0
KSk7CisgICAgICBjcjQgPSBWU1VCKFNWTVVMKHRpMTIsIHRyNSksIFNWTVVMKHRpMTEsIHRyNCkp
OworICAgICAgY2k0ID0gVlNVQihTVk1VTCh0aTEyLCB0aTUpLCBTVk1VTCh0aTExLCB0aTQpKTsK
KyAgICAgIGRyMyA9IFZTVUIoY3IzLCBjaTQpOworICAgICAgZHI0ID0gVkFERChjcjMsIGNpNCk7
CisgICAgICBkaTMgPSBWQUREKGNpMywgY3I0KTsKKyAgICAgIGRpNCA9IFZTVUIoY2kzLCBjcjQp
OworICAgICAgZHI1ID0gVkFERChjcjIsIGNpNSk7CisgICAgICBkcjIgPSBWU1VCKGNyMiwgY2k1
KTsKKyAgICAgIGRpNSA9IFZTVUIoY2kyLCBjcjUpOworICAgICAgZGkyID0gVkFERChjaTIsIGNy
NSk7CisgICAgICB3cjE9d2ExW2ldLCB3aTE9ZnNpZ24qd2ExW2krMV0sIHdyMj13YTJbaV0sIHdp
Mj1mc2lnbip3YTJbaSsxXTsgCisgICAgICB3cjM9d2EzW2ldLCB3aTM9ZnNpZ24qd2EzW2krMV0s
IHdyND13YTRbaV0sIHdpND1mc2lnbip3YTRbaSsxXTsgCisgICAgICBWQ1BMWE1VTChkcjIsIGRp
MiwgTERfUFMxKHdyMSksIExEX1BTMSh3aTEpKTsKKyAgICAgIGNoX3JlZihpIC0gMSwgMikgPSBk
cjI7CisgICAgICBjaF9yZWYoaSwgMikgICAgID0gZGkyOworICAgICAgVkNQTFhNVUwoZHIzLCBk
aTMsIExEX1BTMSh3cjIpLCBMRF9QUzEod2kyKSk7CisgICAgICBjaF9yZWYoaSAtIDEsIDMpID0g
ZHIzOworICAgICAgY2hfcmVmKGksIDMpICAgICA9IGRpMzsKKyAgICAgIFZDUExYTVVMKGRyNCwg
ZGk0LCBMRF9QUzEod3IzKSwgTERfUFMxKHdpMykpOworICAgICAgY2hfcmVmKGkgLSAxLCA0KSA9
IGRyNDsKKyAgICAgIGNoX3JlZihpLCA0KSAgICAgPSBkaTQ7CisgICAgICBWQ1BMWE1VTChkcjUs
IGRpNSwgTERfUFMxKHdyNCksIExEX1BTMSh3aTQpKTsKKyAgICAgIGNoX3JlZihpIC0gMSwgNSkg
PSBkcjU7CisgICAgICBjaF9yZWYoaSwgNSkgICAgID0gZGk1OworICAgIH0KKyAgfQorI3VuZGVm
IGNoX3JlZgorI3VuZGVmIGNjX3JlZgorfQorCitzdGF0aWMgTkVWRVJfSU5MSU5FKHZvaWQpIHJh
ZGYyX3BzKGludCBpZG8sIGludCBsMSwgY29uc3QgdjRzZiAqIFJFU1RSSUNUIGNjLCB2NHNmICog
UkVTVFJJQ1QgY2gsIGNvbnN0IGZsb2F0ICp3YTEpIHsKKyAgc3RhdGljIGNvbnN0IGZsb2F0IG1p
bnVzX29uZSA9IC0xLmY7CisgIGludCBpLCBrLCBsMWlkbyA9IGwxKmlkbzsKKyAgZm9yIChrPTA7
IGsgPCBsMWlkbzsgayArPSBpZG8pIHsKKyAgICB2NHNmIGEgPSBjY1trXSwgYiA9IGNjW2sgKyBs
MWlkb107CisgICAgY2hbMiprXSA9IFZBREQoYSwgYik7CisgICAgY2hbMiooaytpZG8pLTFdID0g
VlNVQihhLCBiKTsKKyAgfQorICBpZiAoaWRvIDwgMikgcmV0dXJuOworICBpZiAoaWRvICE9IDIp
IHsKKyAgICBmb3IgKGs9MDsgayA8IGwxaWRvOyBrICs9IGlkbykgeworICAgICAgZm9yIChpPTI7
IGk8aWRvOyBpKz0yKSB7CisgICAgICAgIHY0c2YgdHIyID0gY2NbaSAtIDEgKyBrICsgbDFpZG9d
LCB0aTIgPSBjY1tpICsgayArIGwxaWRvXTsKKyAgICAgICAgdjRzZiBiciA9IGNjW2kgLSAxICsg
a10sIGJpID0gY2NbaSArIGtdOworICAgICAgICBWQ1BMWE1VTENPTkoodHIyLCB0aTIsIExEX1BT
MSh3YTFbaSAtIDJdKSwgTERfUFMxKHdhMVtpIC0gMV0pKTsgCisgICAgICAgIGNoW2kgKyAyKmtd
ID0gVkFERChiaSwgdGkyKTsKKyAgICAgICAgY2hbMiooaytpZG8pIC0gaV0gPSBWU1VCKHRpMiwg
YmkpOworICAgICAgICBjaFtpIC0gMSArIDIqa10gPSBWQUREKGJyLCB0cjIpOworICAgICAgICBj
aFsyKihrK2lkbykgLSBpIC0xXSA9IFZTVUIoYnIsIHRyMik7CisgICAgICB9CisgICAgfQorICAg
IGlmIChpZG8gJSAyID09IDEpIHJldHVybjsKKyAgfQorICBmb3IgKGs9MDsgayA8IGwxaWRvOyBr
ICs9IGlkbykgeworICAgIGNoWzIqayArIGlkb10gPSBTVk1VTChtaW51c19vbmUsIGNjW2lkby0x
ICsgayArIGwxaWRvXSk7CisgICAgY2hbMiprICsgaWRvLTFdID0gY2NbayArIGlkby0xXTsKKyAg
fQorfSAvKiByYWRmMiAqLworCisKK3N0YXRpYyBORVZFUl9JTkxJTkUodm9pZCkgcmFkYjJfcHMo
aW50IGlkbywgaW50IGwxLCBjb25zdCB2NHNmICpjYywgdjRzZiAqY2gsIGNvbnN0IGZsb2F0ICp3
YTEpIHsKKyAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbnVzX3R3bz0tMjsKKyAgaW50IGksIGssIGwx
aWRvID0gbDEqaWRvOworICB2NHNmIGEsYixjLGQsIHRyMiwgdGkyOworICBmb3IgKGs9MDsgayA8
IGwxaWRvOyBrICs9IGlkbykgeworICAgIGEgPSBjY1syKmtdOyBiID0gY2NbMiooaytpZG8pIC0g
MV07CisgICAgY2hba10gPSBWQUREKGEsIGIpOworICAgIGNoW2sgKyBsMWlkb10gPVZTVUIoYSwg
Yik7CisgIH0KKyAgaWYgKGlkbyA8IDIpIHJldHVybjsKKyAgaWYgKGlkbyAhPSAyKSB7CisgICAg
Zm9yIChrID0gMDsgayA8IGwxaWRvOyBrICs9IGlkbykgeworICAgICAgZm9yIChpID0gMjsgaSA8
IGlkbzsgaSArPSAyKSB7CisgICAgICAgIGEgPSBjY1tpLTEgKyAyKmtdOyBiID0gY2NbMiooayAr
IGlkbykgLSBpIC0gMV07CisgICAgICAgIGMgPSBjY1tpKzAgKyAyKmtdOyBkID0gY2NbMiooayAr
IGlkbykgLSBpICsgMF07CisgICAgICAgIGNoW2ktMSArIGtdID0gVkFERChhLCBiKTsKKyAgICAg
ICAgdHIyID0gVlNVQihhLCBiKTsKKyAgICAgICAgY2hbaSswICsga10gPSBWU1VCKGMsIGQpOwor
ICAgICAgICB0aTIgPSBWQUREKGMsIGQpOworICAgICAgICBWQ1BMWE1VTCh0cjIsIHRpMiwgTERf
UFMxKHdhMVtpIC0gMl0pLCBMRF9QUzEod2ExW2kgLSAxXSkpOworICAgICAgICBjaFtpLTEgKyBr
ICsgbDFpZG9dID0gdHIyOworICAgICAgICBjaFtpKzAgKyBrICsgbDFpZG9dID0gdGkyOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAoaWRvICUgMiA9PSAxKSByZXR1cm47CisgIH0KKyAgZm9yIChr
ID0gMDsgayA8IGwxaWRvOyBrICs9IGlkbykgeworICAgIGEgPSBjY1syKmsgKyBpZG8tMV07IGIg
PSBjY1syKmsgKyBpZG9dOworICAgIGNoW2sgKyBpZG8tMV0gPSBWQUREKGEsYSk7CisgICAgY2hb
ayArIGlkby0xICsgbDFpZG9dID0gU1ZNVUwobWludXNfdHdvLCBiKTsKKyAgfQorfSAvKiByYWRi
MiAqLworCitzdGF0aWMgdm9pZCByYWRmM19wcyhpbnQgaWRvLCBpbnQgbDEsIGNvbnN0IHY0c2Yg
KiBSRVNUUklDVCBjYywgdjRzZiAqIFJFU1RSSUNUIGNoLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgKndhMSwgY29uc3QgZmxvYXQgKndhMikgeworICBzdGF0aWMgY29uc3QgZmxv
YXQgdGF1ciA9IC0wLjVmOworICBzdGF0aWMgY29uc3QgZmxvYXQgdGF1aSA9IDAuODY2MDI1NDAz
Nzg0NDM5ZjsKKyAgaW50IGksIGssIGljOworICB2NHNmIGNpMiwgZGkyLCBkaTMsIGNyMiwgZHIy
LCBkcjMsIHRpMiwgdGkzLCB0cjIsIHRyMywgd3IxLCB3aTEsIHdyMiwgd2kyOworICBmb3IgKGs9
MDsgazxsMTsgaysrKSB7CisgICAgY3IyID0gVkFERChjY1soayArIGwxKSppZG9dLCBjY1soayAr
IDIqbDEpKmlkb10pOworICAgIGNoWzMqayppZG9dID0gVkFERChjY1trKmlkb10sIGNyMik7Cisg
ICAgY2hbKDMqaysyKSppZG9dID0gU1ZNVUwodGF1aSwgVlNVQihjY1soayArIGwxKjIpKmlkb10s
IGNjWyhrICsgbDEpKmlkb10pKTsKKyAgICBjaFtpZG8tMSArICgzKmsgKyAxKSppZG9dID0gVkFE
RChjY1trKmlkb10sIFNWTVVMKHRhdXIsIGNyMikpOworICB9CisgIGlmIChpZG8gPT0gMSkgcmV0
dXJuOworICBmb3IgKGs9MDsgazxsMTsgaysrKSB7CisgICAgZm9yIChpPTI7IGk8aWRvOyBpKz0y
KSB7CisgICAgICBpYyA9IGlkbyAtIGk7CisgICAgICB3cjEgPSBMRF9QUzEod2ExW2kgLSAyXSk7
IHdpMSA9IExEX1BTMSh3YTFbaSAtIDFdKTsKKyAgICAgIGRyMiA9IGNjW2kgLSAxICsgKGsgKyBs
MSkqaWRvXTsgZGkyID0gY2NbaSArIChrICsgbDEpKmlkb107CisgICAgICBWQ1BMWE1VTENPTkoo
ZHIyLCBkaTIsIHdyMSwgd2kxKTsKKworICAgICAgd3IyID0gTERfUFMxKHdhMltpIC0gMl0pOyB3
aTIgPSBMRF9QUzEod2EyW2kgLSAxXSk7CisgICAgICBkcjMgPSBjY1tpIC0gMSArIChrICsgbDEq
MikqaWRvXTsgZGkzID0gY2NbaSArIChrICsgbDEqMikqaWRvXTsKKyAgICAgIFZDUExYTVVMQ09O
SihkcjMsIGRpMywgd3IyLCB3aTIpOworICAgICAgICAKKyAgICAgIGNyMiA9IFZBREQoZHIyLCBk
cjMpOworICAgICAgY2kyID0gVkFERChkaTIsIGRpMyk7CisgICAgICBjaFtpIC0gMSArIDMqaypp
ZG9dID0gVkFERChjY1tpIC0gMSArIGsqaWRvXSwgY3IyKTsKKyAgICAgIGNoW2kgKyAzKmsqaWRv
XSA9IFZBREQoY2NbaSArIGsqaWRvXSwgY2kyKTsKKyAgICAgIHRyMiA9IFZBREQoY2NbaSAtIDEg
KyBrKmlkb10sIFNWTVVMKHRhdXIsIGNyMikpOworICAgICAgdGkyID0gVkFERChjY1tpICsgaypp
ZG9dLCBTVk1VTCh0YXVyLCBjaTIpKTsKKyAgICAgIHRyMyA9IFNWTVVMKHRhdWksIFZTVUIoZGky
LCBkaTMpKTsKKyAgICAgIHRpMyA9IFNWTVVMKHRhdWksIFZTVUIoZHIzLCBkcjIpKTsKKyAgICAg
IGNoW2kgLSAxICsgKDMqayArIDIpKmlkb10gPSBWQUREKHRyMiwgdHIzKTsKKyAgICAgIGNoW2lj
IC0gMSArICgzKmsgKyAxKSppZG9dID0gVlNVQih0cjIsIHRyMyk7CisgICAgICBjaFtpICsgKDMq
ayArIDIpKmlkb10gPSBWQUREKHRpMiwgdGkzKTsKKyAgICAgIGNoW2ljICsgKDMqayArIDEpKmlk
b10gPSBWU1VCKHRpMywgdGkyKTsKKyAgICB9CisgIH0KK30gLyogcmFkZjMgKi8KKworCitzdGF0
aWMgdm9pZCByYWRiM19wcyhpbnQgaWRvLCBpbnQgbDEsIGNvbnN0IHY0c2YgKlJFU1RSSUNUIGNj
LCB2NHNmICpSRVNUUklDVCBjaCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICp3
YTEsIGNvbnN0IGZsb2F0ICp3YTIpCit7CisgIHN0YXRpYyBjb25zdCBmbG9hdCB0YXVyID0gLTAu
NWY7CisgIHN0YXRpYyBjb25zdCBmbG9hdCB0YXVpID0gMC44NjYwMjU0MDM3ODQ0MzlmOworICBz
dGF0aWMgY29uc3QgZmxvYXQgdGF1aV8yID0gMC44NjYwMjU0MDM3ODQ0MzlmKjI7CisgIGludCBp
LCBrLCBpYzsKKyAgdjRzZiBjaTIsIGNpMywgZGkyLCBkaTMsIGNyMiwgY3IzLCBkcjIsIGRyMywg
dGkyLCB0cjI7CisgIGZvciAoaz0wOyBrPGwxOyBrKyspIHsKKyAgICB0cjIgPSBjY1tpZG8tMSAr
ICgzKmsgKyAxKSppZG9dOyB0cjIgPSBWQUREKHRyMix0cjIpOworICAgIGNyMiA9IFZNQUREKExE
X1BTMSh0YXVyKSwgdHIyLCBjY1szKmsqaWRvXSk7CisgICAgY2hbayppZG9dID0gVkFERChjY1sz
KmsqaWRvXSwgdHIyKTsKKyAgICBjaTMgPSBTVk1VTCh0YXVpXzIsIGNjWygzKmsgKyAyKSppZG9d
KTsKKyAgICBjaFsoayArIGwxKSppZG9dID0gVlNVQihjcjIsIGNpMyk7CisgICAgY2hbKGsgKyAy
KmwxKSppZG9dID0gVkFERChjcjIsIGNpMyk7CisgIH0KKyAgaWYgKGlkbyA9PSAxKSByZXR1cm47
CisgIGZvciAoaz0wOyBrPGwxOyBrKyspIHsKKyAgICBmb3IgKGk9MjsgaTxpZG87IGkrPTIpIHsK
KyAgICAgIGljID0gaWRvIC0gaTsKKyAgICAgIHRyMiA9IFZBREQoY2NbaSAtIDEgKyAoMyprICsg
MikqaWRvXSwgY2NbaWMgLSAxICsgKDMqayArIDEpKmlkb10pOworICAgICAgY3IyID0gVk1BREQo
TERfUFMxKHRhdXIpLCB0cjIsIGNjW2kgLSAxICsgMyprKmlkb10pOworICAgICAgY2hbaSAtIDEg
KyBrKmlkb10gPSBWQUREKGNjW2kgLSAxICsgMyprKmlkb10sIHRyMik7CisgICAgICB0aTIgPSBW
U1VCKGNjW2kgKyAoMyprICsgMikqaWRvXSwgY2NbaWMgKyAoMyprICsgMSkqaWRvXSk7CisgICAg
ICBjaTIgPSBWTUFERChMRF9QUzEodGF1ciksIHRpMiwgY2NbaSArIDMqayppZG9dKTsKKyAgICAg
IGNoW2kgKyBrKmlkb10gPSBWQUREKGNjW2kgKyAzKmsqaWRvXSwgdGkyKTsKKyAgICAgIGNyMyA9
IFNWTVVMKHRhdWksIFZTVUIoY2NbaSAtIDEgKyAoMyprICsgMikqaWRvXSwgY2NbaWMgLSAxICsg
KDMqayArIDEpKmlkb10pKTsKKyAgICAgIGNpMyA9IFNWTVVMKHRhdWksIFZBREQoY2NbaSArICgz
KmsgKyAyKSppZG9dLCBjY1tpYyArICgzKmsgKyAxKSppZG9dKSk7CisgICAgICBkcjIgPSBWU1VC
KGNyMiwgY2kzKTsKKyAgICAgIGRyMyA9IFZBREQoY3IyLCBjaTMpOworICAgICAgZGkyID0gVkFE
RChjaTIsIGNyMyk7CisgICAgICBkaTMgPSBWU1VCKGNpMiwgY3IzKTsKKyAgICAgIFZDUExYTVVM
KGRyMiwgZGkyLCBMRF9QUzEod2ExW2ktMl0pLCBMRF9QUzEod2ExW2ktMV0pKTsKKyAgICAgIGNo
W2kgLSAxICsgKGsgKyBsMSkqaWRvXSA9IGRyMjsKKyAgICAgIGNoW2kgKyAoayArIGwxKSppZG9d
ID0gZGkyOworICAgICAgVkNQTFhNVUwoZHIzLCBkaTMsIExEX1BTMSh3YTJbaS0yXSksIExEX1BT
MSh3YTJbaS0xXSkpOworICAgICAgY2hbaSAtIDEgKyAoayArIDIqbDEpKmlkb10gPSBkcjM7Cisg
ICAgICBjaFtpICsgKGsgKyAyKmwxKSppZG9dID0gZGkzOworICAgIH0KKyAgfQorfSAvKiByYWRi
MyAqLworCitzdGF0aWMgTkVWRVJfSU5MSU5FKHZvaWQpIHJhZGY0X3BzKGludCBpZG8sIGludCBs
MSwgY29uc3QgdjRzZiAqUkVTVFJJQ1QgY2MsIHY0c2YgKiBSRVNUUklDVCBjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKiBSRVNUUklDVCB3YTEsIGNv
bnN0IGZsb2F0ICogUkVTVFJJQ1Qgd2EyLCBjb25zdCBmbG9hdCAqIFJFU1RSSUNUIHdhMykKK3sK
KyAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbnVzX2hzcXQyID0gKGZsb2F0KS0wLjcwNzEwNjc4MTE4
NjU0NzU7CisgIGludCBpLCBrLCBsMWlkbyA9IGwxKmlkbzsKKyAgeworICAgIGNvbnN0IHY0c2Yg
KlJFU1RSSUNUIGNjXyA9IGNjLCAqIFJFU1RSSUNUIGNjX2VuZCA9IGNjICsgbDFpZG87IAorICAg
IHY0c2YgKiBSRVNUUklDVCBjaF8gPSBjaDsKKyAgICB3aGlsZSAoY2MgPCBjY19lbmQpIHsKKyAg
ICAgIC8vIHRoaXMgbG9vcCByZXByZXNlbnRzIGJldHdlZW4gMjUlIGFuZCA0MCUgb2YgdG90YWwg
cmFkZjRfcHMgY29zdCAhCisgICAgICB2NHNmIGEwID0gY2NbMF0sIGExID0gY2NbbDFpZG9dOwor
ICAgICAgdjRzZiBhMiA9IGNjWzIqbDFpZG9dLCBhMyA9IGNjWzMqbDFpZG9dOworICAgICAgdjRz
ZiB0cjEgPSBWQUREKGExLCBhMyk7CisgICAgICB2NHNmIHRyMiA9IFZBREQoYTAsIGEyKTsKKyAg
ICAgIGNoWzIqaWRvLTFdID0gVlNVQihhMCwgYTIpOworICAgICAgY2hbMippZG8gIF0gPSBWU1VC
KGEzLCBhMSk7CisgICAgICBjaFswICAgICAgXSA9IFZBREQodHIxLCB0cjIpOworICAgICAgY2hb
NCppZG8tMV0gPSBWU1VCKHRyMiwgdHIxKTsKKyAgICAgIGNjICs9IGlkbzsgY2ggKz0gNCppZG87
CisgICAgfQorICAgIGNjID0gY2NfOyBjaCA9IGNoXzsKKyAgfQorICBpZiAoaWRvIDwgMikgcmV0
dXJuOworICBpZiAoaWRvICE9IDIpIHsKKyAgICBmb3IgKGsgPSAwOyBrIDwgbDFpZG87IGsgKz0g
aWRvKSB7CisgICAgICBjb25zdCB2NHNmICogUkVTVFJJQ1QgcGMgPSAodjRzZiopKGNjICsgMSAr
IGspOworICAgICAgZm9yIChpPTI7IGk8aWRvOyBpICs9IDIsIHBjICs9IDIpIHsKKyAgICAgICAg
aW50IGljID0gaWRvIC0gaTsKKyAgICAgICAgdjRzZiB3ciwgd2ksIGNyMiwgY2kyLCBjcjMsIGNp
MywgY3I0LCBjaTQ7CisgICAgICAgIHY0c2YgdHIxLCB0aTEsIHRyMiwgdGkyLCB0cjMsIHRpMywg
dHI0LCB0aTQ7CisKKyAgICAgICAgY3IyID0gcGNbMSpsMWlkbyswXTsKKyAgICAgICAgY2kyID0g
cGNbMSpsMWlkbysxXTsKKyAgICAgICAgd3I9TERfUFMxKHdhMVtpIC0gMl0pOworICAgICAgICB3
aT1MRF9QUzEod2ExW2kgLSAxXSk7CisgICAgICAgIFZDUExYTVVMQ09OSihjcjIsY2kyLHdyLHdp
KTsKKworICAgICAgICBjcjMgPSBwY1syKmwxaWRvKzBdOworICAgICAgICBjaTMgPSBwY1syKmwx
aWRvKzFdOworICAgICAgICB3ciA9IExEX1BTMSh3YTJbaS0yXSk7IAorICAgICAgICB3aSA9IExE
X1BTMSh3YTJbaS0xXSk7CisgICAgICAgIFZDUExYTVVMQ09OSihjcjMsIGNpMywgd3IsIHdpKTsK
KworICAgICAgICBjcjQgPSBwY1szKmwxaWRvXTsKKyAgICAgICAgY2k0ID0gcGNbMypsMWlkbysx
XTsKKyAgICAgICAgd3IgPSBMRF9QUzEod2EzW2ktMl0pOyAKKyAgICAgICAgd2kgPSBMRF9QUzEo
d2EzW2ktMV0pOworICAgICAgICBWQ1BMWE1VTENPTkooY3I0LCBjaTQsIHdyLCB3aSk7CisKKyAg
ICAgICAgLyogYXQgdGhpcyBwb2ludCwgb24gU1NFLCBmaXZlIG9mICJjcjIgY3IzIGNyNCBjaTIg
Y2kzIGNpNCIgc2hvdWxkIGJlIGxvYWRlZCBpbiByZWdpc3RlcnMgKi8KKworICAgICAgICB0cjEg
PSBWQUREKGNyMixjcjQpOworICAgICAgICB0cjQgPSBWU1VCKGNyNCxjcjIpOyAKKyAgICAgICAg
dHIyID0gVkFERChwY1swXSxjcjMpOworICAgICAgICB0cjMgPSBWU1VCKHBjWzBdLGNyMyk7Cisg
ICAgICAgIGNoW2kgLSAxICsgNCprXSA9IFZBREQodHIxLHRyMik7CisgICAgICAgIGNoW2ljIC0g
MSArIDQqayArIDMqaWRvXSA9IFZTVUIodHIyLHRyMSk7IC8vIGF0IHRoaXMgcG9pbnQgdHIxIGFu
ZCB0cjIgY2FuIGJlIGRpc3Bvc2VkCisgICAgICAgIHRpMSA9IFZBREQoY2kyLGNpNCk7CisgICAg
ICAgIHRpNCA9IFZTVUIoY2kyLGNpNCk7CisgICAgICAgIGNoW2kgLSAxICsgNCprICsgMippZG9d
ID0gVkFERCh0aTQsdHIzKTsKKyAgICAgICAgY2hbaWMgLSAxICsgNCprICsgMSppZG9dID0gVlNV
Qih0cjMsdGk0KTsgLy8gZGlzcG9zZSB0cjMsIHRpNAorICAgICAgICB0aTIgPSBWQUREKHBjWzFd
LGNpMyk7CisgICAgICAgIHRpMyA9IFZTVUIocGNbMV0sY2kzKTsKKyAgICAgICAgY2hbaSArIDQq
a10gPSBWQUREKHRpMSwgdGkyKTsKKyAgICAgICAgY2hbaWMgKyA0KmsgKyAzKmlkb10gPSBWU1VC
KHRpMSwgdGkyKTsKKyAgICAgICAgY2hbaSArIDQqayArIDIqaWRvXSA9IFZBREQodHI0LCB0aTMp
OworICAgICAgICBjaFtpYyArIDQqayArIDEqaWRvXSA9IFZTVUIodHI0LCB0aTMpOworICAgICAg
fQorICAgIH0KKyAgICBpZiAoaWRvICUgMiA9PSAxKSByZXR1cm47CisgIH0KKyAgZm9yIChrPTA7
IGs8bDFpZG87IGsgKz0gaWRvKSB7CisgICAgdjRzZiBhID0gY2NbaWRvLTEgKyBrICsgbDFpZG9d
LCBiID0gY2NbaWRvLTEgKyBrICsgMypsMWlkb107CisgICAgdjRzZiBjID0gY2NbaWRvLTEgKyBr
XSwgZCA9IGNjW2lkby0xICsgayArIDIqbDFpZG9dOworICAgIHY0c2YgdGkxID0gU1ZNVUwobWlu
dXNfaHNxdDIsIFZBREQoYSwgYikpOworICAgIHY0c2YgdHIxID0gU1ZNVUwobWludXNfaHNxdDIs
IFZTVUIoYiwgYSkpOworICAgIGNoW2lkby0xICsgNCprXSA9IFZBREQodHIxLCBjKTsKKyAgICBj
aFtpZG8tMSArIDQqayArIDIqaWRvXSA9IFZTVUIoYywgdHIxKTsKKyAgICBjaFs0KmsgKyAxKmlk
b10gPSBWU1VCKHRpMSwgZCk7IAorICAgIGNoWzQqayArIDMqaWRvXSA9IFZBREQodGkxLCBkKTsg
CisgIH0KK30gLyogcmFkZjQgKi8KKworCitzdGF0aWMgTkVWRVJfSU5MSU5FKHZvaWQpIHJhZGI0
X3BzKGludCBpZG8sIGludCBsMSwgY29uc3QgdjRzZiAqIFJFU1RSSUNUIGNjLCB2NHNmICogUkVT
VFJJQ1QgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
ICogUkVTVFJJQ1Qgd2ExLCBjb25zdCBmbG9hdCAqIFJFU1RSSUNUIHdhMiwgY29uc3QgZmxvYXQg
KlJFU1RSSUNUIHdhMykKK3sKKyAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbnVzX3NxcnQyID0gKGZs
b2F0KS0xLjQxNDIxMzU2MjM3MzA5NTsKKyAgc3RhdGljIGNvbnN0IGZsb2F0IHR3byA9IDIuZjsK
KyAgaW50IGksIGssIGwxaWRvID0gbDEqaWRvOworICB2NHNmIGNpMiwgY2kzLCBjaTQsIGNyMiwg
Y3IzLCBjcjQsIHRpMSwgdGkyLCB0aTMsIHRpNCwgdHIxLCB0cjIsIHRyMywgdHI0OworICB7Cisg
ICAgY29uc3QgdjRzZiAqUkVTVFJJQ1QgY2NfID0gY2MsICogUkVTVFJJQ1QgY2hfZW5kID0gY2gg
KyBsMWlkbzsgCisgICAgdjRzZiAqY2hfID0gY2g7CisgICAgd2hpbGUgKGNoIDwgY2hfZW5kKSB7
CisgICAgICB2NHNmIGEgPSBjY1swXSwgYiA9IGNjWzQqaWRvLTFdOworICAgICAgdjRzZiBjID0g
Y2NbMippZG9dLCBkID0gY2NbMippZG8tMV07CisgICAgICB0cjMgPSBTVk1VTCh0d28sZCk7Cisg
ICAgICB0cjIgPSBWQUREKGEsYik7CisgICAgICB0cjEgPSBWU1VCKGEsYik7CisgICAgICB0cjQg
PSBTVk1VTCh0d28sYyk7CisgICAgICBjaFswKmwxaWRvXSA9IFZBREQodHIyLCB0cjMpOworICAg
ICAgY2hbMipsMWlkb10gPSBWU1VCKHRyMiwgdHIzKTsKKyAgICAgIGNoWzEqbDFpZG9dID0gVlNV
Qih0cjEsIHRyNCk7CisgICAgICBjaFszKmwxaWRvXSA9IFZBREQodHIxLCB0cjQpOworICAgICAg
CisgICAgICBjYyArPSA0KmlkbzsgY2ggKz0gaWRvOworICAgIH0KKyAgICBjYyA9IGNjXzsgY2gg
PSBjaF87CisgIH0KKyAgaWYgKGlkbyA8IDIpIHJldHVybjsKKyAgaWYgKGlkbyAhPSAyKSB7Cisg
ICAgZm9yIChrID0gMDsgayA8IGwxaWRvOyBrICs9IGlkbykgeworICAgICAgY29uc3QgdjRzZiAq
IFJFU1RSSUNUIHBjID0gKHY0c2YqKShjYyAtIDEgKyA0KmspOworICAgICAgdjRzZiAqIFJFU1RS
SUNUIHBoID0gKHY0c2YqKShjaCArIGsgKyAxKTsKKyAgICAgIGZvciAoaSA9IDI7IGkgPCBpZG87
IGkgKz0gMikgeworCisgICAgICAgIHRyMSA9IFZTVUIocGNbaV0sIHBjWzQqaWRvIC0gaV0pOwor
ICAgICAgICB0cjIgPSBWQUREKHBjW2ldLCBwY1s0KmlkbyAtIGldKTsKKyAgICAgICAgdGk0ID0g
VlNVQihwY1syKmlkbyArIGldLCBwY1syKmlkbyAtIGldKTsKKyAgICAgICAgdHIzID0gVkFERChw
Y1syKmlkbyArIGldLCBwY1syKmlkbyAtIGldKTsKKyAgICAgICAgcGhbMF0gPSBWQUREKHRyMiwg
dHIzKTsKKyAgICAgICAgY3IzID0gVlNVQih0cjIsIHRyMyk7CisKKyAgICAgICAgdGkzID0gVlNV
QihwY1syKmlkbyArIGkgKyAxXSwgcGNbMippZG8gLSBpICsgMV0pOworICAgICAgICB0cjQgPSBW
QUREKHBjWzIqaWRvICsgaSArIDFdLCBwY1syKmlkbyAtIGkgKyAxXSk7CisgICAgICAgIGNyMiA9
IFZTVUIodHIxLCB0cjQpOworICAgICAgICBjcjQgPSBWQUREKHRyMSwgdHI0KTsKKworICAgICAg
ICB0aTEgPSBWQUREKHBjW2kgKyAxXSwgcGNbNCppZG8gLSBpICsgMV0pOworICAgICAgICB0aTIg
PSBWU1VCKHBjW2kgKyAxXSwgcGNbNCppZG8gLSBpICsgMV0pOworCisgICAgICAgIHBoWzFdID0g
VkFERCh0aTIsIHRpMyk7IHBoICs9IGwxaWRvOworICAgICAgICBjaTMgPSBWU1VCKHRpMiwgdGkz
KTsKKyAgICAgICAgY2kyID0gVkFERCh0aTEsIHRpNCk7CisgICAgICAgIGNpNCA9IFZTVUIodGkx
LCB0aTQpOworICAgICAgICBWQ1BMWE1VTChjcjIsIGNpMiwgTERfUFMxKHdhMVtpLTJdKSwgTERf
UFMxKHdhMVtpLTFdKSk7CisgICAgICAgIHBoWzBdID0gY3IyOworICAgICAgICBwaFsxXSA9IGNp
MjsgcGggKz0gbDFpZG87CisgICAgICAgIFZDUExYTVVMKGNyMywgY2kzLCBMRF9QUzEod2EyW2kt
Ml0pLCBMRF9QUzEod2EyW2ktMV0pKTsKKyAgICAgICAgcGhbMF0gPSBjcjM7CisgICAgICAgIHBo
WzFdID0gY2kzOyBwaCArPSBsMWlkbzsKKyAgICAgICAgVkNQTFhNVUwoY3I0LCBjaTQsIExEX1BT
MSh3YTNbaS0yXSksIExEX1BTMSh3YTNbaS0xXSkpOworICAgICAgICBwaFswXSA9IGNyNDsKKyAg
ICAgICAgcGhbMV0gPSBjaTQ7IHBoID0gcGggLSAzKmwxaWRvICsgMjsKKyAgICAgIH0KKyAgICB9
CisgICAgaWYgKGlkbyAlIDIgPT0gMSkgcmV0dXJuOworICB9CisgIGZvciAoaz0wOyBrIDwgbDFp
ZG87IGsrPWlkbykgeworICAgIGludCBpMCA9IDQqayArIGlkbzsKKyAgICB2NHNmIGMgPSBjY1tp
MC0xXSwgZCA9IGNjW2kwICsgMippZG8tMV07CisgICAgdjRzZiBhID0gY2NbaTArMF0sIGIgPSBj
Y1tpMCArIDIqaWRvKzBdOworICAgIHRyMSA9IFZTVUIoYyxkKTsKKyAgICB0cjIgPSBWQUREKGMs
ZCk7CisgICAgdGkxID0gVkFERChiLGEpOworICAgIHRpMiA9IFZTVUIoYixhKTsKKyAgICBjaFtp
ZG8tMSArIGsgKyAwKmwxaWRvXSA9IFZBREQodHIyLHRyMik7CisgICAgY2hbaWRvLTEgKyBrICsg
MSpsMWlkb10gPSBTVk1VTChtaW51c19zcXJ0MiwgVlNVQih0aTEsIHRyMSkpOworICAgIGNoW2lk
by0xICsgayArIDIqbDFpZG9dID0gVkFERCh0aTIsIHRpMik7CisgICAgY2hbaWRvLTEgKyBrICsg
MypsMWlkb10gPSBTVk1VTChtaW51c19zcXJ0MiwgVkFERCh0aTEsIHRyMSkpOworICB9Cit9IC8q
IHJhZGI0ICovCisKK3N0YXRpYyB2b2lkIHJhZGY1X3BzKGludCBpZG8sIGludCBsMSwgY29uc3Qg
djRzZiAqIFJFU1RSSUNUIGNjLCB2NHNmICogUkVTVFJJQ1QgY2gsIAorICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZmxvYXQgKndhMSwgY29uc3QgZmxvYXQgKndhMiwgY29uc3QgZmxvYXQgKndh
MywgY29uc3QgZmxvYXQgKndhNCkKK3sKKyAgc3RhdGljIGNvbnN0IGZsb2F0IHRyMTEgPSAuMzA5
MDE2OTk0Mzc0OTQ3ZjsKKyAgc3RhdGljIGNvbnN0IGZsb2F0IHRpMTEgPSAuOTUxMDU2NTE2Mjk1
MTU0ZjsKKyAgc3RhdGljIGNvbnN0IGZsb2F0IHRyMTIgPSAtLjgwOTAxNjk5NDM3NDk0N2Y7Cisg
IHN0YXRpYyBjb25zdCBmbG9hdCB0aTEyID0gLjU4Nzc4NTI1MjI5MjQ3M2Y7CisKKyAgLyogU3lz
dGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KKyAgaW50IGNjX29mZnNldCwgY2hfb2Zmc2V0OworCisg
IC8qIExvY2FsIHZhcmlhYmxlcyAqLworICBpbnQgaSwgaywgaWM7CisgIHY0c2YgY2kyLCBkaTIs
IGNpNCwgY2k1LCBkaTMsIGRpNCwgZGk1LCBjaTMsIGNyMiwgY3IzLCBkcjIsIGRyMywgZHI0LCBk
cjUsCisgICAgY3I1LCBjcjQsIHRpMiwgdGkzLCB0aTUsIHRpNCwgdHIyLCB0cjMsIHRyNCwgdHI1
OworICBpbnQgaWRwMjsKKworCisjZGVmaW5lIGNjX3JlZihhXzEsYV8yLGFfMykgY2NbKChhXzMp
KmwxICsgKGFfMikpKmlkbyArIGFfMV0KKyNkZWZpbmUgY2hfcmVmKGFfMSxhXzIsYV8zKSBjaFso
KGFfMykqNSArIChhXzIpKSppZG8gKyBhXzFdCisKKyAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRz
ICovCisgIGNoX29mZnNldCA9IDEgKyBpZG8gKiA2OworICBjaCAtPSBjaF9vZmZzZXQ7CisgIGNj
X29mZnNldCA9IDEgKyBpZG8gKiAoMSArIGwxKTsKKyAgY2MgLT0gY2Nfb2Zmc2V0OworCisgIC8q
IEZ1bmN0aW9uIEJvZHkgKi8KKyAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7CisgICAgY3Iy
ID0gVkFERChjY19yZWYoMSwgaywgNSksIGNjX3JlZigxLCBrLCAyKSk7CisgICAgY2k1ID0gVlNV
QihjY19yZWYoMSwgaywgNSksIGNjX3JlZigxLCBrLCAyKSk7CisgICAgY3IzID0gVkFERChjY19y
ZWYoMSwgaywgNCksIGNjX3JlZigxLCBrLCAzKSk7CisgICAgY2k0ID0gVlNVQihjY19yZWYoMSwg
aywgNCksIGNjX3JlZigxLCBrLCAzKSk7CisgICAgY2hfcmVmKDEsIDEsIGspID0gVkFERChjY19y
ZWYoMSwgaywgMSksIFZBREQoY3IyLCBjcjMpKTsKKyAgICBjaF9yZWYoaWRvLCAyLCBrKSA9IFZB
REQoY2NfcmVmKDEsIGssIDEpLCBWQUREKFNWTVVMKHRyMTEsIGNyMiksIFNWTVVMKHRyMTIsIGNy
MykpKTsKKyAgICBjaF9yZWYoMSwgMywgaykgPSBWQUREKFNWTVVMKHRpMTEsIGNpNSksIFNWTVVM
KHRpMTIsIGNpNCkpOworICAgIGNoX3JlZihpZG8sIDQsIGspID0gVkFERChjY19yZWYoMSwgaywg
MSksIFZBREQoU1ZNVUwodHIxMiwgY3IyKSwgU1ZNVUwodHIxMSwgY3IzKSkpOworICAgIGNoX3Jl
ZigxLCA1LCBrKSA9IFZTVUIoU1ZNVUwodGkxMiwgY2k1KSwgU1ZNVUwodGkxMSwgY2k0KSk7Cisg
ICAgLy9wcmludGYoInBmZmZ0OiByYWRmNSwgaz0lZCBjaF9yZWY9JWYsIGNpND0lZlxuIiwgaywg
Y2hfcmVmKDEsIDUsIGspLCBjaTQpOworICB9CisgIGlmIChpZG8gPT0gMSkgeworICAgIHJldHVy
bjsKKyAgfQorICBpZHAyID0gaWRvICsgMjsKKyAgZm9yIChrID0gMTsgayA8PSBsMTsgKytrKSB7
CisgICAgZm9yIChpID0gMzsgaSA8PSBpZG87IGkgKz0gMikgeworICAgICAgaWMgPSBpZHAyIC0g
aTsKKyAgICAgIGRyMiA9IExEX1BTMSh3YTFbaS0zXSk7IGRpMiA9IExEX1BTMSh3YTFbaS0yXSk7
CisgICAgICBkcjMgPSBMRF9QUzEod2EyW2ktM10pOyBkaTMgPSBMRF9QUzEod2EyW2ktMl0pOwor
ICAgICAgZHI0ID0gTERfUFMxKHdhM1tpLTNdKTsgZGk0ID0gTERfUFMxKHdhM1tpLTJdKTsKKyAg
ICAgIGRyNSA9IExEX1BTMSh3YTRbaS0zXSk7IGRpNSA9IExEX1BTMSh3YTRbaS0yXSk7CisgICAg
ICBWQ1BMWE1VTENPTkooZHIyLCBkaTIsIGNjX3JlZihpLTEsIGssIDIpLCBjY19yZWYoaSwgaywg
MikpOworICAgICAgVkNQTFhNVUxDT05KKGRyMywgZGkzLCBjY19yZWYoaS0xLCBrLCAzKSwgY2Nf
cmVmKGksIGssIDMpKTsKKyAgICAgIFZDUExYTVVMQ09OSihkcjQsIGRpNCwgY2NfcmVmKGktMSwg
aywgNCksIGNjX3JlZihpLCBrLCA0KSk7CisgICAgICBWQ1BMWE1VTENPTkooZHI1LCBkaTUsIGNj
X3JlZihpLTEsIGssIDUpLCBjY19yZWYoaSwgaywgNSkpOworICAgICAgY3IyID0gVkFERChkcjIs
IGRyNSk7CisgICAgICBjaTUgPSBWU1VCKGRyNSwgZHIyKTsKKyAgICAgIGNyNSA9IFZTVUIoZGky
LCBkaTUpOworICAgICAgY2kyID0gVkFERChkaTIsIGRpNSk7CisgICAgICBjcjMgPSBWQUREKGRy
MywgZHI0KTsKKyAgICAgIGNpNCA9IFZTVUIoZHI0LCBkcjMpOworICAgICAgY3I0ID0gVlNVQihk
aTMsIGRpNCk7CisgICAgICBjaTMgPSBWQUREKGRpMywgZGk0KTsKKyAgICAgIGNoX3JlZihpIC0g
MSwgMSwgaykgPSBWQUREKGNjX3JlZihpIC0gMSwgaywgMSksIFZBREQoY3IyLCBjcjMpKTsKKyAg
ICAgIGNoX3JlZihpLCAxLCBrKSA9IFZTVUIoY2NfcmVmKGksIGssIDEpLCBWQUREKGNpMiwgY2kz
KSk7Ly8KKyAgICAgIHRyMiA9IFZBREQoY2NfcmVmKGkgLSAxLCBrLCAxKSwgVkFERChTVk1VTCh0
cjExLCBjcjIpLCBTVk1VTCh0cjEyLCBjcjMpKSk7CisgICAgICB0aTIgPSBWU1VCKGNjX3JlZihp
LCBrLCAxKSwgVkFERChTVk1VTCh0cjExLCBjaTIpLCBTVk1VTCh0cjEyLCBjaTMpKSk7Ly8KKyAg
ICAgIHRyMyA9IFZBREQoY2NfcmVmKGkgLSAxLCBrLCAxKSwgVkFERChTVk1VTCh0cjEyLCBjcjIp
LCBTVk1VTCh0cjExLCBjcjMpKSk7CisgICAgICB0aTMgPSBWU1VCKGNjX3JlZihpLCBrLCAxKSwg
VkFERChTVk1VTCh0cjEyLCBjaTIpLCBTVk1VTCh0cjExLCBjaTMpKSk7Ly8KKyAgICAgIHRyNSA9
IFZBREQoU1ZNVUwodGkxMSwgY3I1KSwgU1ZNVUwodGkxMiwgY3I0KSk7CisgICAgICB0aTUgPSBW
QUREKFNWTVVMKHRpMTEsIGNpNSksIFNWTVVMKHRpMTIsIGNpNCkpOworICAgICAgdHI0ID0gVlNV
QihTVk1VTCh0aTEyLCBjcjUpLCBTVk1VTCh0aTExLCBjcjQpKTsKKyAgICAgIHRpNCA9IFZTVUIo
U1ZNVUwodGkxMiwgY2k1KSwgU1ZNVUwodGkxMSwgY2k0KSk7CisgICAgICBjaF9yZWYoaSAtIDEs
IDMsIGspID0gVlNVQih0cjIsIHRyNSk7CisgICAgICBjaF9yZWYoaWMgLSAxLCAyLCBrKSA9IFZB
REQodHIyLCB0cjUpOworICAgICAgY2hfcmVmKGksIDMsIGspID0gVkFERCh0aTIsIHRpNSk7Cisg
ICAgICBjaF9yZWYoaWMsIDIsIGspID0gVlNVQih0aTUsIHRpMik7CisgICAgICBjaF9yZWYoaSAt
IDEsIDUsIGspID0gVlNVQih0cjMsIHRyNCk7CisgICAgICBjaF9yZWYoaWMgLSAxLCA0LCBrKSA9
IFZBREQodHIzLCB0cjQpOworICAgICAgY2hfcmVmKGksIDUsIGspID0gVkFERCh0aTMsIHRpNCk7
CisgICAgICBjaF9yZWYoaWMsIDQsIGspID0gVlNVQih0aTQsIHRpMyk7CisgICAgfQorICB9Cisj
dW5kZWYgY2NfcmVmCisjdW5kZWYgY2hfcmVmCit9IC8qIHJhZGY1ICovCisKK3N0YXRpYyB2b2lk
IHJhZGI1X3BzKGludCBpZG8sIGludCBsMSwgY29uc3QgdjRzZiAqUkVTVFJJQ1QgY2MsIHY0c2Yg
KlJFU1RSSUNUIGNoLCAKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICp3YTEsIGNvbnN0
IGZsb2F0ICp3YTIsIGNvbnN0IGZsb2F0ICp3YTMsIGNvbnN0IGZsb2F0ICp3YTQpCit7CisgIHN0
YXRpYyBjb25zdCBmbG9hdCB0cjExID0gLjMwOTAxNjk5NDM3NDk0N2Y7CisgIHN0YXRpYyBjb25z
dCBmbG9hdCB0aTExID0gLjk1MTA1NjUxNjI5NTE1NGY7CisgIHN0YXRpYyBjb25zdCBmbG9hdCB0
cjEyID0gLS44MDkwMTY5OTQzNzQ5NDdmOworICBzdGF0aWMgY29uc3QgZmxvYXQgdGkxMiA9IC41
ODc3ODUyNTIyOTI0NzNmOworCisgIGludCBjY19vZmZzZXQsIGNoX29mZnNldDsKKworICAvKiBM
b2NhbCB2YXJpYWJsZXMgKi8KKyAgaW50IGksIGssIGljOworICB2NHNmIGNpMiwgY2kzLCBjaTQs
IGNpNSwgZGkzLCBkaTQsIGRpNSwgZGkyLCBjcjIsIGNyMywgY3I1LCBjcjQsIHRpMiwgdGkzLAor
ICAgIHRpNCwgdGk1LCBkcjMsIGRyNCwgZHI1LCBkcjIsIHRyMiwgdHIzLCB0cjQsIHRyNTsKKyAg
aW50IGlkcDI7CisKKyNkZWZpbmUgY2NfcmVmKGFfMSxhXzIsYV8zKSBjY1soKGFfMykqNSArIChh
XzIpKSppZG8gKyBhXzFdCisjZGVmaW5lIGNoX3JlZihhXzEsYV8yLGFfMykgY2hbKChhXzMpKmwx
ICsgKGFfMikpKmlkbyArIGFfMV0KKworICAvKiBQYXJhbWV0ZXIgYWRqdXN0bWVudHMgKi8KKyAg
Y2hfb2Zmc2V0ID0gMSArIGlkbyAqICgxICsgbDEpOworICBjaCAtPSBjaF9vZmZzZXQ7CisgIGNj
X29mZnNldCA9IDEgKyBpZG8gKiA2OworICBjYyAtPSBjY19vZmZzZXQ7CisKKyAgLyogRnVuY3Rp
b24gQm9keSAqLworICBmb3IgKGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICB0aTUgPSBWQURE
KGNjX3JlZigxLCAzLCBrKSwgY2NfcmVmKDEsIDMsIGspKTsKKyAgICB0aTQgPSBWQUREKGNjX3Jl
ZigxLCA1LCBrKSwgY2NfcmVmKDEsIDUsIGspKTsKKyAgICB0cjIgPSBWQUREKGNjX3JlZihpZG8s
IDIsIGspLCBjY19yZWYoaWRvLCAyLCBrKSk7CisgICAgdHIzID0gVkFERChjY19yZWYoaWRvLCA0
LCBrKSwgY2NfcmVmKGlkbywgNCwgaykpOworICAgIGNoX3JlZigxLCBrLCAxKSA9IFZBREQoY2Nf
cmVmKDEsIDEsIGspLCBWQUREKHRyMiwgdHIzKSk7CisgICAgY3IyID0gVkFERChjY19yZWYoMSwg
MSwgayksIFZBREQoU1ZNVUwodHIxMSwgdHIyKSwgU1ZNVUwodHIxMiwgdHIzKSkpOworICAgIGNy
MyA9IFZBREQoY2NfcmVmKDEsIDEsIGspLCBWQUREKFNWTVVMKHRyMTIsIHRyMiksIFNWTVVMKHRy
MTEsIHRyMykpKTsKKyAgICBjaTUgPSBWQUREKFNWTVVMKHRpMTEsIHRpNSksIFNWTVVMKHRpMTIs
IHRpNCkpOworICAgIGNpNCA9IFZTVUIoU1ZNVUwodGkxMiwgdGk1KSwgU1ZNVUwodGkxMSwgdGk0
KSk7CisgICAgY2hfcmVmKDEsIGssIDIpID0gVlNVQihjcjIsIGNpNSk7CisgICAgY2hfcmVmKDEs
IGssIDMpID0gVlNVQihjcjMsIGNpNCk7CisgICAgY2hfcmVmKDEsIGssIDQpID0gVkFERChjcjMs
IGNpNCk7CisgICAgY2hfcmVmKDEsIGssIDUpID0gVkFERChjcjIsIGNpNSk7CisgIH0KKyAgaWYg
KGlkbyA9PSAxKSB7CisgICAgcmV0dXJuOworICB9CisgIGlkcDIgPSBpZG8gKyAyOworICBmb3Ig
KGsgPSAxOyBrIDw9IGwxOyArK2spIHsKKyAgICBmb3IgKGkgPSAzOyBpIDw9IGlkbzsgaSArPSAy
KSB7CisgICAgICBpYyA9IGlkcDIgLSBpOworICAgICAgdGk1ID0gVkFERChjY19yZWYoaSAgLCAz
LCBrKSwgY2NfcmVmKGljICAsIDIsIGspKTsKKyAgICAgIHRpMiA9IFZTVUIoY2NfcmVmKGkgICwg
MywgayksIGNjX3JlZihpYyAgLCAyLCBrKSk7CisgICAgICB0aTQgPSBWQUREKGNjX3JlZihpICAs
IDUsIGspLCBjY19yZWYoaWMgICwgNCwgaykpOworICAgICAgdGkzID0gVlNVQihjY19yZWYoaSAg
LCA1LCBrKSwgY2NfcmVmKGljICAsIDQsIGspKTsKKyAgICAgIHRyNSA9IFZTVUIoY2NfcmVmKGkt
MSwgMywgayksIGNjX3JlZihpYy0xLCAyLCBrKSk7CisgICAgICB0cjIgPSBWQUREKGNjX3JlZihp
LTEsIDMsIGspLCBjY19yZWYoaWMtMSwgMiwgaykpOworICAgICAgdHI0ID0gVlNVQihjY19yZWYo
aS0xLCA1LCBrKSwgY2NfcmVmKGljLTEsIDQsIGspKTsKKyAgICAgIHRyMyA9IFZBREQoY2NfcmVm
KGktMSwgNSwgayksIGNjX3JlZihpYy0xLCA0LCBrKSk7CisgICAgICBjaF9yZWYoaSAtIDEsIGss
IDEpID0gVkFERChjY19yZWYoaS0xLCAxLCBrKSwgVkFERCh0cjIsIHRyMykpOworICAgICAgY2hf
cmVmKGksIGssIDEpID0gVkFERChjY19yZWYoaSwgMSwgayksIFZBREQodGkyLCB0aTMpKTsKKyAg
ICAgIGNyMiA9IFZBREQoY2NfcmVmKGktMSwgMSwgayksIFZBREQoU1ZNVUwodHIxMSwgdHIyKSwg
U1ZNVUwodHIxMiwgdHIzKSkpOworICAgICAgY2kyID0gVkFERChjY19yZWYoaSAgLCAxLCBrKSwg
VkFERChTVk1VTCh0cjExLCB0aTIpLCBTVk1VTCh0cjEyLCB0aTMpKSk7CisgICAgICBjcjMgPSBW
QUREKGNjX3JlZihpLTEsIDEsIGspLCBWQUREKFNWTVVMKHRyMTIsIHRyMiksIFNWTVVMKHRyMTEs
IHRyMykpKTsKKyAgICAgIGNpMyA9IFZBREQoY2NfcmVmKGkgICwgMSwgayksIFZBREQoU1ZNVUwo
dHIxMiwgdGkyKSwgU1ZNVUwodHIxMSwgdGkzKSkpOworICAgICAgY3I1ID0gVkFERChTVk1VTCh0
aTExLCB0cjUpLCBTVk1VTCh0aTEyLCB0cjQpKTsKKyAgICAgIGNpNSA9IFZBREQoU1ZNVUwodGkx
MSwgdGk1KSwgU1ZNVUwodGkxMiwgdGk0KSk7CisgICAgICBjcjQgPSBWU1VCKFNWTVVMKHRpMTIs
IHRyNSksIFNWTVVMKHRpMTEsIHRyNCkpOworICAgICAgY2k0ID0gVlNVQihTVk1VTCh0aTEyLCB0
aTUpLCBTVk1VTCh0aTExLCB0aTQpKTsKKyAgICAgIGRyMyA9IFZTVUIoY3IzLCBjaTQpOworICAg
ICAgZHI0ID0gVkFERChjcjMsIGNpNCk7CisgICAgICBkaTMgPSBWQUREKGNpMywgY3I0KTsKKyAg
ICAgIGRpNCA9IFZTVUIoY2kzLCBjcjQpOworICAgICAgZHI1ID0gVkFERChjcjIsIGNpNSk7Cisg
ICAgICBkcjIgPSBWU1VCKGNyMiwgY2k1KTsKKyAgICAgIGRpNSA9IFZTVUIoY2kyLCBjcjUpOwor
ICAgICAgZGkyID0gVkFERChjaTIsIGNyNSk7CisgICAgICBWQ1BMWE1VTChkcjIsIGRpMiwgTERf
UFMxKHdhMVtpLTNdKSwgTERfUFMxKHdhMVtpLTJdKSk7CisgICAgICBWQ1BMWE1VTChkcjMsIGRp
MywgTERfUFMxKHdhMltpLTNdKSwgTERfUFMxKHdhMltpLTJdKSk7CisgICAgICBWQ1BMWE1VTChk
cjQsIGRpNCwgTERfUFMxKHdhM1tpLTNdKSwgTERfUFMxKHdhM1tpLTJdKSk7CisgICAgICBWQ1BM
WE1VTChkcjUsIGRpNSwgTERfUFMxKHdhNFtpLTNdKSwgTERfUFMxKHdhNFtpLTJdKSk7CisKKyAg
ICAgIGNoX3JlZihpLTEsIGssIDIpID0gZHIyOyBjaF9yZWYoaSwgaywgMikgPSBkaTI7CisgICAg
ICBjaF9yZWYoaS0xLCBrLCAzKSA9IGRyMzsgY2hfcmVmKGksIGssIDMpID0gZGkzOworICAgICAg
Y2hfcmVmKGktMSwgaywgNCkgPSBkcjQ7IGNoX3JlZihpLCBrLCA0KSA9IGRpNDsKKyAgICAgIGNo
X3JlZihpLTEsIGssIDUpID0gZHI1OyBjaF9yZWYoaSwgaywgNSkgPSBkaTU7CisgICAgfQorICB9
CisjdW5kZWYgY2NfcmVmCisjdW5kZWYgY2hfcmVmCit9IC8qIHJhZGI1ICovCisKK3N0YXRpYyBO
RVZFUl9JTkxJTkUodjRzZiAqKSByZmZ0ZjFfcHMoaW50IG4sIGNvbnN0IHY0c2YgKmlucHV0X3Jl
YWRvbmx5LCB2NHNmICp3b3JrMSwgdjRzZiAqd29yazIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqd2EsIGNvbnN0IGludCAqaWZhYykgeyAgCisg
IHY0c2YgKmluICA9ICh2NHNmKilpbnB1dF9yZWFkb25seTsKKyAgdjRzZiAqb3V0ID0gKGluID09
IHdvcmsyID8gd29yazEgOiB3b3JrMik7CisgIGludCBuZiA9IGlmYWNbMV0sIGsxOworICBpbnQg
bDIgPSBuOworICBpbnQgaXcgPSBuLTE7CisgIGFzc2VydChpbiAhPSBvdXQgJiYgd29yazEgIT0g
d29yazIpOworICBmb3IgKGsxID0gMTsgazEgPD0gbmY7ICsrazEpIHsKKyAgICBpbnQga2ggPSBu
ZiAtIGsxOworICAgIGludCBpcCA9IGlmYWNba2ggKyAyXTsKKyAgICBpbnQgbDEgPSBsMiAvIGlw
OworICAgIGludCBpZG8gPSBuIC8gbDI7CisgICAgaXcgLT0gKGlwIC0gMSkqaWRvOworICAgIHN3
aXRjaCAoaXApIHsKKyAgICAgIGNhc2UgNTogeworICAgICAgICBpbnQgaXgyID0gaXcgKyBpZG87
CisgICAgICAgIGludCBpeDMgPSBpeDIgKyBpZG87CisgICAgICAgIGludCBpeDQgPSBpeDMgKyBp
ZG87CisgICAgICAgIHJhZGY1X3BzKGlkbywgbDEsIGluLCBvdXQsICZ3YVtpd10sICZ3YVtpeDJd
LCAmd2FbaXgzXSwgJndhW2l4NF0pOworICAgICAgfSBicmVhazsKKyAgICAgIGNhc2UgNDogewor
ICAgICAgICBpbnQgaXgyID0gaXcgKyBpZG87CisgICAgICAgIGludCBpeDMgPSBpeDIgKyBpZG87
CisgICAgICAgIHJhZGY0X3BzKGlkbywgbDEsIGluLCBvdXQsICZ3YVtpd10sICZ3YVtpeDJdLCAm
d2FbaXgzXSk7CisgICAgICB9IGJyZWFrOworICAgICAgY2FzZSAzOiB7CisgICAgICAgIGludCBp
eDIgPSBpdyArIGlkbzsKKyAgICAgICAgcmFkZjNfcHMoaWRvLCBsMSwgaW4sIG91dCwgJndhW2l3
XSwgJndhW2l4Ml0pOworICAgICAgfSBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgcmFk
ZjJfcHMoaWRvLCBsMSwgaW4sIG91dCwgJndhW2l3XSk7CisgICAgICAgIGJyZWFrOworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
bDIgPSBsMTsKKyAgICBpZiAob3V0ID09IHdvcmsyKSB7CisgICAgICBvdXQgPSB3b3JrMTsgaW4g
PSB3b3JrMjsKKyAgICB9IGVsc2UgeworICAgICAgb3V0ID0gd29yazI7IGluID0gd29yazE7Cisg
ICAgfQorICB9CisgIHJldHVybiBpbjsgLyogdGhpcyBpcyBpbiBmYWN0IHRoZSBvdXRwdXQgLi4g
Ki8KK30gLyogcmZmdGYxICovCisKK3N0YXRpYyBORVZFUl9JTkxJTkUodjRzZiAqKSByZmZ0YjFf
cHMoaW50IG4sIGNvbnN0IHY0c2YgKmlucHV0X3JlYWRvbmx5LCB2NHNmICp3b3JrMSwgdjRzZiAq
d29yazIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9h
dCAqd2EsIGNvbnN0IGludCAqaWZhYykgeyAgCisgIHY0c2YgKmluICA9ICh2NHNmKilpbnB1dF9y
ZWFkb25seTsKKyAgdjRzZiAqb3V0ID0gKGluID09IHdvcmsyID8gd29yazEgOiB3b3JrMik7Cisg
IGludCBuZiA9IGlmYWNbMV0sIGsxOworICBpbnQgbDEgPSAxOworICBpbnQgaXcgPSAwOworICBh
c3NlcnQoaW4gIT0gb3V0KTsKKyAgZm9yIChrMT0xOyBrMTw9bmY7IGsxKyspIHsKKyAgICBpbnQg
aXAgPSBpZmFjW2sxICsgMV07CisgICAgaW50IGwyID0gaXAqbDE7CisgICAgaW50IGlkbyA9IG4g
LyBsMjsKKyAgICBzd2l0Y2ggKGlwKSB7CisgICAgICBjYXNlIDU6IHsKKyAgICAgICAgaW50IGl4
MiA9IGl3ICsgaWRvOworICAgICAgICBpbnQgaXgzID0gaXgyICsgaWRvOworICAgICAgICBpbnQg
aXg0ID0gaXgzICsgaWRvOworICAgICAgICByYWRiNV9wcyhpZG8sIGwxLCBpbiwgb3V0LCAmd2Fb
aXddLCAmd2FbaXgyXSwgJndhW2l4M10sICZ3YVtpeDRdKTsKKyAgICAgIH0gYnJlYWs7CisgICAg
ICBjYXNlIDQ6IHsKKyAgICAgICAgaW50IGl4MiA9IGl3ICsgaWRvOworICAgICAgICBpbnQgaXgz
ID0gaXgyICsgaWRvOworICAgICAgICByYWRiNF9wcyhpZG8sIGwxLCBpbiwgb3V0LCAmd2FbaXdd
LCAmd2FbaXgyXSwgJndhW2l4M10pOworICAgICAgfSBicmVhazsKKyAgICAgIGNhc2UgMzogewor
ICAgICAgICBpbnQgaXgyID0gaXcgKyBpZG87CisgICAgICAgIHJhZGIzX3BzKGlkbywgbDEsIGlu
LCBvdXQsICZ3YVtpd10sICZ3YVtpeDJdKTsKKyAgICAgIH0gYnJlYWs7CisgICAgICBjYXNlIDI6
CisgICAgICAgIHJhZGIyX3BzKGlkbywgbDEsIGluLCBvdXQsICZ3YVtpd10pOworICAgICAgICBi
cmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGwxID0gbDI7CisgICAgaXcgKz0gKGlwIC0gMSkqaWRvOworCisgICAgaWYg
KG91dCA9PSB3b3JrMikgeworICAgICAgb3V0ID0gd29yazE7IGluID0gd29yazI7CisgICAgfSBl
bHNlIHsKKyAgICAgIG91dCA9IHdvcmsyOyBpbiA9IHdvcmsxOworICAgIH0KKyAgfQorICByZXR1
cm4gaW47IC8qIHRoaXMgaXMgaW4gZmFjdCB0aGUgb3V0cHV0IC4uICovCit9CisKK3N0YXRpYyBp
bnQgZGVjb21wb3NlKGludCBuLCBpbnQgKmlmYWMsIGNvbnN0IGludCAqbnRyeWgpIHsKKyAgaW50
IG5sID0gbiwgbmYgPSAwLCBpLCBqID0gMDsKKyAgZm9yIChqPTA7IG50cnloW2pdOyArK2opIHsK
KyAgICBpbnQgbnRyeSA9IG50cnloW2pdOworICAgIHdoaWxlIChubCAhPSAxKSB7CisgICAgICBp
bnQgbnEgPSBubCAvIG50cnk7CisgICAgICBpbnQgbnIgPSBubCAtIG50cnkgKiBucTsKKyAgICAg
IGlmIChuciA9PSAwKSB7CisgICAgICAgIGlmYWNbMituZisrXSA9IG50cnk7CisgICAgICAgIG5s
ID0gbnE7CisgICAgICAgIGlmIChudHJ5ID09IDIgJiYgbmYgIT0gMSkgeworICAgICAgICAgIGZv
ciAoaSA9IDI7IGkgPD0gbmY7ICsraSkgeworICAgICAgICAgICAgaW50IGliID0gbmYgLSBpICsg
MjsKKyAgICAgICAgICAgIGlmYWNbaWIgKyAxXSA9IGlmYWNbaWJdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBpZmFjWzJdID0gMjsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGJyZWFrOworICAg
IH0KKyAgfQorICBpZmFjWzBdID0gbjsKKyAgaWZhY1sxXSA9IG5mOyAgCisgIHJldHVybiBuZjsK
K30KKworCisKK3N0YXRpYyB2b2lkIHJmZnRpMV9wcyhpbnQgbiwgZmxvYXQgKndhLCBpbnQgKmlm
YWMpCit7CisgIHN0YXRpYyBjb25zdCBpbnQgbnRyeWhbXSA9IHsgNCwyLDMsNSwwIH07CisgIGlu
dCBrMSwgaiwgaWk7CisKKyAgaW50IG5mID0gZGVjb21wb3NlKG4saWZhYyxudHJ5aCk7CisgIGZs
b2F0IGFyZ2ggPSAoMipNX1BJKSAvIG47CisgIGludCBpcyA9IDA7CisgIGludCBuZm0xID0gbmYg
LSAxOworICBpbnQgbDEgPSAxOworICBmb3IgKGsxID0gMTsgazEgPD0gbmZtMTsgazErKykgewor
ICAgIGludCBpcCA9IGlmYWNbazEgKyAxXTsKKyAgICBpbnQgbGQgPSAwOworICAgIGludCBsMiA9
IGwxKmlwOworICAgIGludCBpZG8gPSBuIC8gbDI7CisgICAgaW50IGlwbSA9IGlwIC0gMTsKKyAg
ICBmb3IgKGogPSAxOyBqIDw9IGlwbTsgKytqKSB7CisgICAgICBmbG9hdCBhcmdsZDsKKyAgICAg
IGludCBpID0gaXMsIGZpPTA7CisgICAgICBsZCArPSBsMTsKKyAgICAgIGFyZ2xkID0gbGQqYXJn
aDsKKyAgICAgIGZvciAoaWkgPSAzOyBpaSA8PSBpZG87IGlpICs9IDIpIHsKKyAgICAgICAgaSAr
PSAyOworICAgICAgICBmaSArPSAxOworICAgICAgICB3YVtpIC0gMl0gPSBjb3MoZmkqYXJnbGQp
OworICAgICAgICB3YVtpIC0gMV0gPSBzaW4oZmkqYXJnbGQpOworICAgICAgfQorICAgICAgaXMg
Kz0gaWRvOworICAgIH0KKyAgICBsMSA9IGwyOworICB9Cit9IC8qIHJmZnRpMSAqLworCit2b2lk
IGNmZnRpMV9wcyhpbnQgbiwgZmxvYXQgKndhLCBpbnQgKmlmYWMpCit7CisgIHN0YXRpYyBjb25z
dCBpbnQgbnRyeWhbXSA9IHsgNSwzLDQsMiwwIH07CisgIGludCBrMSwgaiwgaWk7CisKKyAgaW50
IG5mID0gZGVjb21wb3NlKG4saWZhYyxudHJ5aCk7CisgIGZsb2F0IGFyZ2ggPSAoMipNX1BJKS8o
ZmxvYXQpbjsKKyAgaW50IGkgPSAxOworICBpbnQgbDEgPSAxOworICBmb3IgKGsxPTE7IGsxPD1u
ZjsgazErKykgeworICAgIGludCBpcCA9IGlmYWNbazErMV07CisgICAgaW50IGxkID0gMDsKKyAg
ICBpbnQgbDIgPSBsMSppcDsKKyAgICBpbnQgaWRvID0gbiAvIGwyOworICAgIGludCBpZG90ID0g
aWRvICsgaWRvICsgMjsKKyAgICBpbnQgaXBtID0gaXAgLSAxOworICAgIGZvciAoaj0xOyBqPD1p
cG07IGorKykgeworICAgICAgZmxvYXQgYXJnbGQ7CisgICAgICBpbnQgaTEgPSBpLCBmaSA9IDA7
CisgICAgICB3YVtpLTFdID0gMTsKKyAgICAgIHdhW2ldID0gMDsKKyAgICAgIGxkICs9IGwxOwor
ICAgICAgYXJnbGQgPSBsZCphcmdoOworICAgICAgZm9yIChpaSA9IDQ7IGlpIDw9IGlkb3Q7IGlp
ICs9IDIpIHsKKyAgICAgICAgaSArPSAyOworICAgICAgICBmaSArPSAxOworICAgICAgICB3YVtp
LTFdID0gY29zKGZpKmFyZ2xkKTsKKyAgICAgICAgd2FbaV0gPSBzaW4oZmkqYXJnbGQpOworICAg
ICAgfQorICAgICAgaWYgKGlwID4gNSkgeworICAgICAgICB3YVtpMS0xXSA9IHdhW2ktMV07Cisg
ICAgICAgIHdhW2kxXSA9IHdhW2ldOworICAgICAgfQorICAgIH0KKyAgICBsMSA9IGwyOworICB9
Cit9IC8qIGNmZnRpMSAqLworCisKK3Y0c2YgKmNmZnRmMV9wcyhpbnQgbiwgY29uc3QgdjRzZiAq
aW5wdXRfcmVhZG9ubHksIHY0c2YgKndvcmsxLCB2NHNmICp3b3JrMiwgY29uc3QgZmxvYXQgKndh
LCBjb25zdCBpbnQgKmlmYWMsIGludCBpc2lnbikgeworICB2NHNmICppbiAgPSAodjRzZiopaW5w
dXRfcmVhZG9ubHk7CisgIHY0c2YgKm91dCA9IChpbiA9PSB3b3JrMiA/IHdvcmsxIDogd29yazIp
OyAKKyAgaW50IG5mID0gaWZhY1sxXSwgazE7CisgIGludCBsMSA9IDE7CisgIGludCBpdyA9IDA7
CisgIGFzc2VydChpbiAhPSBvdXQgJiYgd29yazEgIT0gd29yazIpOworICBmb3IgKGsxPTI7IGsx
PD1uZisxOyBrMSsrKSB7CisgICAgaW50IGlwID0gaWZhY1trMV07CisgICAgaW50IGwyID0gaXAq
bDE7CisgICAgaW50IGlkbyA9IG4gLyBsMjsKKyAgICBpbnQgaWRvdCA9IGlkbyArIGlkbzsKKyAg
ICBzd2l0Y2ggKGlwKSB7CisgICAgICBjYXNlIDU6IHsKKyAgICAgICAgaW50IGl4MiA9IGl3ICsg
aWRvdDsKKyAgICAgICAgaW50IGl4MyA9IGl4MiArIGlkb3Q7CisgICAgICAgIGludCBpeDQgPSBp
eDMgKyBpZG90OworICAgICAgICBwYXNzZjVfcHMoaWRvdCwgbDEsIGluLCBvdXQsICZ3YVtpd10s
ICZ3YVtpeDJdLCAmd2FbaXgzXSwgJndhW2l4NF0sIGlzaWduKTsKKyAgICAgIH0gYnJlYWs7Cisg
ICAgICBjYXNlIDQ6IHsKKyAgICAgICAgaW50IGl4MiA9IGl3ICsgaWRvdDsKKyAgICAgICAgaW50
IGl4MyA9IGl4MiArIGlkb3Q7CisgICAgICAgIHBhc3NmNF9wcyhpZG90LCBsMSwgaW4sIG91dCwg
JndhW2l3XSwgJndhW2l4Ml0sICZ3YVtpeDNdLCBpc2lnbik7CisgICAgICB9IGJyZWFrOworICAg
ICAgY2FzZSAyOiB7CisgICAgICAgIHBhc3NmMl9wcyhpZG90LCBsMSwgaW4sIG91dCwgJndhW2l3
XSwgaXNpZ24pOworICAgICAgfSBicmVhazsKKyAgICAgIGNhc2UgMzogeworICAgICAgICBpbnQg
aXgyID0gaXcgKyBpZG90OworICAgICAgICBwYXNzZjNfcHMoaWRvdCwgbDEsIGluLCBvdXQsICZ3
YVtpd10sICZ3YVtpeDJdLCBpc2lnbik7CisgICAgICB9IGJyZWFrOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKyAgICBsMSA9IGwyOworICAgIGl3ICs9IChpcCAt
IDEpKmlkb3Q7CisgICAgaWYgKG91dCA9PSB3b3JrMikgeworICAgICAgb3V0ID0gd29yazE7IGlu
ID0gd29yazI7CisgICAgfSBlbHNlIHsKKyAgICAgIG91dCA9IHdvcmsyOyBpbiA9IHdvcmsxOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBpbjsgLyogdGhpcyBpcyBpbiBmYWN0IHRoZSBvdXRwdXQg
Li4gKi8KK30KKworCitzdHJ1Y3QgUEZGRlRfU2V0dXAgeworICBpbnQgICAgIE47CisgIGludCAg
ICAgTmN2ZWM7IC8vIG5iIG9mIGNvbXBsZXggc2ltZCB2ZWN0b3JzIChOLzQgaWYgUEZGRlRfQ09N
UExFWCwgTi84IGlmIFBGRkZUX1JFQUwpCisgIGludCBpZmFjWzE1XTsKKyAgcGZmZnRfdHJhbnNm
b3JtX3QgdHJhbnNmb3JtOworICB2NHNmICpkYXRhOyAvLyBhbGxvY2F0ZWQgcm9vbSBmb3IgdHdp
ZGRsZSBjb2VmcworICBmbG9hdCAqZTsgICAgLy8gcG9pbnRzIGludG8gJ2RhdGEnICwgTi80KjMg
ZWxlbWVudHMKKyAgZmxvYXQgKnR3aWRkbGU7IC8vIHBvaW50cyBpbnRvICdkYXRhJywgTi80IGVs
ZW1lbnRzCit9OworCitQRkZGVF9TZXR1cCAqcGZmZnRfbmV3X3NldHVwKGludCBOLCBwZmZmdF90
cmFuc2Zvcm1fdCB0cmFuc2Zvcm0pIHsKKyAgUEZGRlRfU2V0dXAgKnMgPSAoUEZGRlRfU2V0dXAq
KW1hbGxvYyhzaXplb2YoUEZGRlRfU2V0dXApKTsKKyAgaW50IGssIG07CisgIC8qIHVuZm9ydHVu
YXRlbHksIHRoZSBmZnQgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYgZm9yIGNvbXBsZXgg
RkZUcyAKKyAgICAgYW5kIDMyIGZvciByZWFsIEZGVHMgLS0gYSBsb3Qgb2Ygc3R1ZmYgd291bGQg
bmVlZCB0byBiZSByZXdyaXR0ZW4gdG8KKyAgICAgaGFuZGxlIG90aGVyIGNhc2VzIChvciBtYXli
ZSBqdXN0IHN3aXRjaCB0byBhIHNjYWxhciBmZnQsIEkgZG9uJ3Qga25vdy4uKSAqLworICBpZiAo
dHJhbnNmb3JtID09IFBGRkZUX1JFQUwpIHsgYXNzZXJ0KChOJSgyKlNJTURfU1oqU0lNRF9TWikp
PT0wICYmIE4+MCk7IH0KKyAgaWYgKHRyYW5zZm9ybSA9PSBQRkZGVF9DT01QTEVYKSB7IGFzc2Vy
dCgoTiUoU0lNRF9TWipTSU1EX1NaKSk9PTAgJiYgTj4wKTsgfQorICAvL2Fzc2VydCgoTiAlIDMy
KSA9PSAwKTsKKyAgcy0+TiA9IE47CisgIHMtPnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgIAorICAv
KiBuYiBvZiBjb21wbGV4IHNpbWQgdmVjdG9ycyAqLworICBzLT5OY3ZlYyA9ICh0cmFuc2Zvcm0g
PT0gUEZGRlRfUkVBTCA/IE4vMiA6IE4pL1NJTURfU1o7CisgIHMtPmRhdGEgPSAodjRzZiopcGZm
ZnRfYWxpZ25lZF9tYWxsb2MoMipzLT5OY3ZlYyAqIHNpemVvZih2NHNmKSk7CisgIHMtPmUgPSAo
ZmxvYXQqKXMtPmRhdGE7CisgIHMtPnR3aWRkbGUgPSAoZmxvYXQqKShzLT5kYXRhICsgKDIqcy0+
TmN2ZWMqKFNJTURfU1otMSkpL1NJTURfU1opOyAgCisKKyAgaWYgKHRyYW5zZm9ybSA9PSBQRkZG
VF9SRUFMKSB7CisgICAgZm9yIChrPTA7IGsgPCBzLT5OY3ZlYzsgKytrKSB7CisgICAgICBpbnQg
aSA9IGsvU0lNRF9TWjsKKyAgICAgIGludCBqID0gayVTSU1EX1NaOworICAgICAgZm9yIChtPTA7
IG0gPCBTSU1EX1NaLTE7ICsrbSkgeworICAgICAgICBmbG9hdCBBID0gLTIqTV9QSSoobSsxKSpr
IC8gTjsKKyAgICAgICAgcy0+ZVsoMiooaSozICsgbSkgKyAwKSAqIFNJTURfU1ogKyBqXSA9IGNv
cyhBKTsKKyAgICAgICAgcy0+ZVsoMiooaSozICsgbSkgKyAxKSAqIFNJTURfU1ogKyBqXSA9IHNp
bihBKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmZmdGkxX3BzKE4vU0lNRF9TWiwgcy0+dHdpZGRs
ZSwgcy0+aWZhYyk7CisgIH0gZWxzZSB7CisgICAgZm9yIChrPTA7IGsgPCBzLT5OY3ZlYzsgKytr
KSB7CisgICAgICBpbnQgaSA9IGsvU0lNRF9TWjsKKyAgICAgIGludCBqID0gayVTSU1EX1NaOwor
ICAgICAgZm9yIChtPTA7IG0gPCBTSU1EX1NaLTE7ICsrbSkgeworICAgICAgICBmbG9hdCBBID0g
LTIqTV9QSSoobSsxKSprIC8gTjsKKyAgICAgICAgcy0+ZVsoMiooaSozICsgbSkgKyAwKSpTSU1E
X1NaICsgal0gPSBjb3MoQSk7CisgICAgICAgIHMtPmVbKDIqKGkqMyArIG0pICsgMSkqU0lNRF9T
WiArIGpdID0gc2luKEEpOworICAgICAgfQorICAgIH0KKyAgICBjZmZ0aTFfcHMoTi9TSU1EX1Na
LCBzLT50d2lkZGxlLCBzLT5pZmFjKTsKKyAgfQorCisgIC8qIGNoZWNrIHRoYXQgTiBpcyBkZWNv
bXBvc2FibGUgd2l0aCBhbGxvd2VkIHByaW1lIGZhY3RvcnMgKi8KKyAgZm9yIChrPTAsIG09MTsg
ayA8IHMtPmlmYWNbMV07ICsraykgeyBtICo9IHMtPmlmYWNbMitrXTsgfQorICBpZiAobSAhPSBO
L1NJTURfU1opIHsKKyAgICBwZmZmdF9kZXN0cm95X3NldHVwKHMpOyBzID0gMDsKKyAgfQorCisg
IHJldHVybiBzOworfQorCisKK3ZvaWQgcGZmZnRfZGVzdHJveV9zZXR1cChQRkZGVF9TZXR1cCAq
cykgeworICBwZmZmdF9hbGlnbmVkX2ZyZWUocy0+ZGF0YSk7CisgIGZyZWUocyk7Cit9CisKKyNp
ZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpCisKKy8qIFswIDAgMSAyIDMgNCA1IDYgNyA4
XSAtPiBbMCA4IDcgNiA1IDQgMyAyIDFdICovCitzdGF0aWMgdm9pZCByZXZlcnNlZF9jb3B5KGlu
dCBOLCBjb25zdCB2NHNmICppbiwgaW50IGluX3N0cmlkZSwgdjRzZiAqb3V0KSB7CisgIHY0c2Yg
ZzAsIGcxOworICBpbnQgazsKKyAgSU5URVJMRUFWRTIoaW5bMF0sIGluWzFdLCBnMCwgZzEpOyBp
biArPSBpbl9zdHJpZGU7CisgIAorICAqLS1vdXQgPSBWU1dBUEhMKGcwLCBnMSk7IC8vIFtnMGws
IGcwaF0sIFtnMWwgZzFoXSAtPiBbZzFsLCBnMGhdCisgIGZvciAoaz0xOyBrIDwgTjsgKytrKSB7
CisgICAgdjRzZiBoMCwgaDE7CisgICAgSU5URVJMRUFWRTIoaW5bMF0sIGluWzFdLCBoMCwgaDEp
OyBpbiArPSBpbl9zdHJpZGU7CisgICAgKi0tb3V0ID0gVlNXQVBITChnMSwgaDApOworICAgICot
LW91dCA9IFZTV0FQSEwoaDAsIGgxKTsKKyAgICBnMSA9IGgxOworICB9CisgICotLW91dCA9IFZT
V0FQSEwoZzEsIGcwKTsKK30KKworc3RhdGljIHZvaWQgdW5yZXZlcnNlZF9jb3B5KGludCBOLCBj
b25zdCB2NHNmICppbiwgdjRzZiAqb3V0LCBpbnQgb3V0X3N0cmlkZSkgeworICB2NHNmIGcwLCBn
MSwgaDAsIGgxOworICBpbnQgazsKKyAgZzAgPSBnMSA9IGluWzBdOyArK2luOworICBmb3IgKGs9
MTsgayA8IE47ICsraykgeworICAgIGgwID0gKmluKys7IGgxID0gKmluKys7CisgICAgZzEgPSBW
U1dBUEhMKGcxLCBoMCk7CisgICAgaDAgPSBWU1dBUEhMKGgwLCBoMSk7CisgICAgVU5JTlRFUkxF
QVZFMihoMCwgZzEsIG91dFswXSwgb3V0WzFdKTsgb3V0ICs9IG91dF9zdHJpZGU7CisgICAgZzEg
PSBoMTsKKyAgfQorICBoMCA9ICppbisrOyBoMSA9IGcwOworICBnMSA9IFZTV0FQSEwoZzEsIGgw
KTsKKyAgaDAgPSBWU1dBUEhMKGgwLCBoMSk7CisgIFVOSU5URVJMRUFWRTIoaDAsIGcxLCBvdXRb
MF0sIG91dFsxXSk7Cit9CisKK3ZvaWQgcGZmZnRfenJlb3JkZXIoUEZGRlRfU2V0dXAgKnNldHVw
LCBjb25zdCBmbG9hdCAqaW4sIGZsb2F0ICpvdXQsIHBmZmZ0X2RpcmVjdGlvbl90IGRpcmVjdGlv
bikgeworICBpbnQgaywgTiA9IHNldHVwLT5OLCBOY3ZlYyA9IHNldHVwLT5OY3ZlYzsKKyAgY29u
c3QgdjRzZiAqdmluID0gKGNvbnN0IHY0c2YqKWluOworICB2NHNmICp2b3V0ID0gKHY0c2YqKW91
dDsKKyAgYXNzZXJ0KGluICE9IG91dCk7CisgIGlmIChzZXR1cC0+dHJhbnNmb3JtID09IFBGRkZU
X1JFQUwpIHsKKyAgICBpbnQgaywgZGsgPSBOLzMyOworICAgIGlmIChkaXJlY3Rpb24gPT0gUEZG
RlRfRk9SV0FSRCkgeworICAgICAgZm9yIChrPTA7IGsgPCBkazsgKytrKSB7CisgICAgICAgIElO
VEVSTEVBVkUyKHZpbltrKjggKyAwXSwgdmluW2sqOCArIDFdLCB2b3V0WzIqKDAqZGsgKyBrKSAr
IDBdLCB2b3V0WzIqKDAqZGsgKyBrKSArIDFdKTsKKyAgICAgICAgSU5URVJMRUFWRTIodmluW2sq
OCArIDRdLCB2aW5bayo4ICsgNV0sIHZvdXRbMiooMipkayArIGspICsgMF0sIHZvdXRbMiooMipk
ayArIGspICsgMV0pOworICAgICAgfQorICAgICAgcmV2ZXJzZWRfY29weShkaywgdmluKzIsIDgs
ICh2NHNmKikob3V0ICsgTi8yKSk7CisgICAgICByZXZlcnNlZF9jb3B5KGRrLCB2aW4rNiwgOCwg
KHY0c2YqKShvdXQgKyBOKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoaz0wOyBrIDwgZGs7
ICsraykgeworICAgICAgICBVTklOVEVSTEVBVkUyKHZpblsyKigwKmRrICsgaykgKyAwXSwgdmlu
WzIqKDAqZGsgKyBrKSArIDFdLCB2b3V0W2sqOCArIDBdLCB2b3V0W2sqOCArIDFdKTsKKyAgICAg
ICAgVU5JTlRFUkxFQVZFMih2aW5bMiooMipkayArIGspICsgMF0sIHZpblsyKigyKmRrICsgaykg
KyAxXSwgdm91dFtrKjggKyA0XSwgdm91dFtrKjggKyA1XSk7CisgICAgICB9CisgICAgICB1bnJl
dmVyc2VkX2NvcHkoZGssICh2NHNmKikoaW4gKyBOLzQpLCAodjRzZiopKG91dCArIE4gLSA2KlNJ
TURfU1opLCAtOCk7CisgICAgICB1bnJldmVyc2VkX2NvcHkoZGssICh2NHNmKikoaW4gKyAzKk4v
NCksICh2NHNmKikob3V0ICsgTiAtIDIqU0lNRF9TWiksIC04KTsKKyAgICB9CisgIH0gZWxzZSB7
CisgICAgaWYgKGRpcmVjdGlvbiA9PSBQRkZGVF9GT1JXQVJEKSB7CisgICAgICBmb3IgKGs9MDsg
ayA8IE5jdmVjOyArK2spIHsgCisgICAgICAgIGludCBrayA9IChrLzQpICsgKGslNCkqKE5jdmVj
LzQpOworICAgICAgICBJTlRFUkxFQVZFMih2aW5bayoyXSwgdmluW2sqMisxXSwgdm91dFtrayoy
XSwgdm91dFtrayoyKzFdKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZm9yIChrPTA7
IGsgPCBOY3ZlYzsgKytrKSB7IAorICAgICAgICBpbnQga2sgPSAoay80KSArIChrJTQpKihOY3Zl
Yy80KTsKKyAgICAgICAgVU5JTlRFUkxFQVZFMih2aW5ba2sqMl0sIHZpbltrayoyKzFdLCB2b3V0
W2sqMl0sIHZvdXRbayoyKzFdKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKwordm9pZCBwZmZm
dF9jcGx4X2ZpbmFsaXplKGludCBOY3ZlYywgY29uc3QgdjRzZiAqaW4sIHY0c2YgKm91dCwgY29u
c3QgdjRzZiAqZSkgeworICBpbnQgaywgZGsgPSBOY3ZlYy9TSU1EX1NaOyAvLyBudW1iZXIgb2Yg
NHg0IG1hdHJpeCBibG9ja3MKKyAgdjRzZiByMCwgaTAsIHIxLCBpMSwgcjIsIGkyLCByMywgaTM7
CisgIHY0c2Ygc3IwLCBkcjAsIHNyMSwgZHIxLCBzaTAsIGRpMCwgc2kxLCBkaTE7CisgIGFzc2Vy
dChpbiAhPSBvdXQpOworICBmb3IgKGs9MDsgayA8IGRrOyArK2spIHsgICAgCisgICAgcjAgPSBp
bls4KmsrMF07IGkwID0gaW5bOCprKzFdOworICAgIHIxID0gaW5bOCprKzJdOyBpMSA9IGluWzgq
ayszXTsKKyAgICByMiA9IGluWzgqays0XTsgaTIgPSBpbls4KmsrNV07CisgICAgcjMgPSBpbls4
KmsrNl07IGkzID0gaW5bOCprKzddOworICAgIFZUUkFOU1BPU0U0KHIwLHIxLHIyLHIzKTsKKyAg
ICBWVFJBTlNQT1NFNChpMCxpMSxpMixpMyk7CisgICAgVkNQTFhNVUwocjEsaTEsZVtrKjYrMF0s
ZVtrKjYrMV0pOworICAgIFZDUExYTVVMKHIyLGkyLGVbayo2KzJdLGVbayo2KzNdKTsKKyAgICBW
Q1BMWE1VTChyMyxpMyxlW2sqNis0XSxlW2sqNis1XSk7CisKKyAgICBzcjAgPSBWQUREKHIwLHIy
KTsgZHIwID0gVlNVQihyMCwgcjIpOworICAgIHNyMSA9IFZBREQocjEscjMpOyBkcjEgPSBWU1VC
KHIxLCByMyk7CisgICAgc2kwID0gVkFERChpMCxpMik7IGRpMCA9IFZTVUIoaTAsIGkyKTsKKyAg
ICBzaTEgPSBWQUREKGkxLGkzKTsgZGkxID0gVlNVQihpMSwgaTMpOworCisgICAgLyoKKyAgICAg
IHRyYW5zZm9ybWF0aW9uIGZvciBlYWNoIGNvbHVtbiBpczoKKyAgICAgIAorICAgICAgWzEgICAx
ICAgMSAgIDEgICAwICAgMCAgIDAgICAwXSAgIFtyMF0KKyAgICAgIFsxICAgMCAgLTEgICAwICAg
MCAgLTEgICAwICAgMV0gICBbcjFdCisgICAgICBbMSAgLTEgICAxICAtMSAgIDAgICAwICAgMCAg
IDBdICAgW3IyXQorICAgICAgWzEgICAwICAtMSAgIDAgICAwICAgMSAgIDAgIC0xXSAgIFtyM10K
KyAgICAgIFswICAgMCAgIDAgICAwICAgMSAgIDEgICAxICAgMV0gKiBbaTBdCisgICAgICBbMCAg
IDEgICAwICAtMSAgIDEgICAwICAtMSAgIDBdICAgW2kxXQorICAgICAgWzAgICAwICAgMCAgIDAg
ICAxICAtMSAgIDEgIC0xXSAgIFtpMl0KKyAgICAgIFswICAtMSAgIDAgICAxICAgMSAgIDAgIC0x
ICAgMF0gICBbaTNdICAgIAorICAgICovCisgICAgCisgICAgcjAgPSBWQUREKHNyMCwgc3IxKTsg
aTAgPSBWQUREKHNpMCwgc2kxKTsKKyAgICByMSA9IFZBREQoZHIwLCBkaTEpOyBpMSA9IFZTVUIo
ZGkwLCBkcjEpOworICAgIHIyID0gVlNVQihzcjAsIHNyMSk7IGkyID0gVlNVQihzaTAsIHNpMSk7
CisgICAgcjMgPSBWU1VCKGRyMCwgZGkxKTsgaTMgPSBWQUREKGRpMCwgZHIxKTsKKyAgCisgICAg
Km91dCsrID0gcjA7ICpvdXQrKyA9IGkwOyAqb3V0KysgPSByMTsgKm91dCsrID0gaTE7CisgICAg
Km91dCsrID0gcjI7ICpvdXQrKyA9IGkyOyAqb3V0KysgPSByMzsgKm91dCsrID0gaTM7CisgIH0K
K30KKwordm9pZCBwZmZmdF9jcGx4X3ByZXByb2Nlc3MoaW50IE5jdmVjLCBjb25zdCB2NHNmICpp
biwgdjRzZiAqb3V0LCBjb25zdCB2NHNmICplKSB7CisgIGludCBrLCBkayA9IE5jdmVjL1NJTURf
U1o7IC8vIG51bWJlciBvZiA0eDQgbWF0cml4IGJsb2NrcworICB2NHNmIHIwLCBpMCwgcjEsIGkx
LCByMiwgaTIsIHIzLCBpMzsKKyAgdjRzZiBzcjAsIGRyMCwgc3IxLCBkcjEsIHNpMCwgZGkwLCBz
aTEsIGRpMTsKKyAgYXNzZXJ0KGluICE9IG91dCk7CisgIGZvciAoaz0wOyBrIDwgZGs7ICsraykg
eyAgICAKKyAgICByMCA9IGluWzgqayswXTsgaTAgPSBpbls4KmsrMV07CisgICAgcjEgPSBpbls4
KmsrMl07IGkxID0gaW5bOCprKzNdOworICAgIHIyID0gaW5bOCprKzRdOyBpMiA9IGluWzgqays1
XTsKKyAgICByMyA9IGluWzgqays2XTsgaTMgPSBpbls4KmsrN107CisKKyAgICBzcjAgPSBWQURE
KHIwLHIyKTsgZHIwID0gVlNVQihyMCwgcjIpOworICAgIHNyMSA9IFZBREQocjEscjMpOyBkcjEg
PSBWU1VCKHIxLCByMyk7CisgICAgc2kwID0gVkFERChpMCxpMik7IGRpMCA9IFZTVUIoaTAsIGky
KTsKKyAgICBzaTEgPSBWQUREKGkxLGkzKTsgZGkxID0gVlNVQihpMSwgaTMpOworCisgICAgcjAg
PSBWQUREKHNyMCwgc3IxKTsgaTAgPSBWQUREKHNpMCwgc2kxKTsKKyAgICByMSA9IFZTVUIoZHIw
LCBkaTEpOyBpMSA9IFZBREQoZGkwLCBkcjEpOworICAgIHIyID0gVlNVQihzcjAsIHNyMSk7IGky
ID0gVlNVQihzaTAsIHNpMSk7CisgICAgcjMgPSBWQUREKGRyMCwgZGkxKTsgaTMgPSBWU1VCKGRp
MCwgZHIxKTsKKworICAgIFZDUExYTVVMQ09OSihyMSxpMSxlW2sqNiswXSxlW2sqNisxXSk7Cisg
ICAgVkNQTFhNVUxDT05KKHIyLGkyLGVbayo2KzJdLGVbayo2KzNdKTsKKyAgICBWQ1BMWE1VTENP
TkoocjMsaTMsZVtrKjYrNF0sZVtrKjYrNV0pOworCisgICAgVlRSQU5TUE9TRTQocjAscjEscjIs
cjMpOworICAgIFZUUkFOU1BPU0U0KGkwLGkxLGkyLGkzKTsKKworICAgICpvdXQrKyA9IHIwOyAq
b3V0KysgPSBpMDsgKm91dCsrID0gcjE7ICpvdXQrKyA9IGkxOworICAgICpvdXQrKyA9IHIyOyAq
b3V0KysgPSBpMjsgKm91dCsrID0gcjM7ICpvdXQrKyA9IGkzOworICB9Cit9CisKKworc3RhdGlj
IEFMV0FZU19JTkxJTkUodm9pZCkgcGZmZnRfcmVhbF9maW5hbGl6ZV80eDQoY29uc3QgdjRzZiAq
aW4wLCBjb25zdCB2NHNmICppbjEsIGNvbnN0IHY0c2YgKmluLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHY0c2YgKmUsIHY0c2YgKm91dCkgeworICB2NHNmIHIwLCBpMCwgcjEs
IGkxLCByMiwgaTIsIHIzLCBpMzsKKyAgdjRzZiBzcjAsIGRyMCwgc3IxLCBkcjEsIHNpMCwgZGkw
LCBzaTEsIGRpMTsKKyAgcjAgPSAqaW4wOyBpMCA9ICppbjE7CisgIHIxID0gKmluKys7IGkxID0g
KmluKys7IHIyID0gKmluKys7IGkyID0gKmluKys7IHIzID0gKmluKys7IGkzID0gKmluKys7Cisg
IFZUUkFOU1BPU0U0KHIwLHIxLHIyLHIzKTsKKyAgVlRSQU5TUE9TRTQoaTAsaTEsaTIsaTMpOwor
IAorICAvKgorICAgIHRyYW5zZm9ybWF0aW9uIGZvciBlYWNoIGNvbHVtbiBpczoKKworICAgIFsx
ICAgMSAgIDEgICAxICAgMCAgIDAgICAwICAgMF0gICBbcjBdCisgICAgWzEgICAwICAtMSAgIDAg
ICAwICAtMSAgIDAgICAxXSAgIFtyMV0KKyAgICBbMSAgIDAgIC0xICAgMCAgIDAgICAxICAgMCAg
LTFdICAgW3IyXQorICAgIFsxICAtMSAgIDEgIC0xICAgMCAgIDAgICAwICAgMF0gICBbcjNdCisg
ICAgWzAgICAwICAgMCAgIDAgICAxICAgMSAgIDEgICAxXSAqIFtpMF0KKyAgICBbMCAgLTEgICAw
ICAgMSAgLTEgICAwICAgMSAgIDBdICAgW2kxXQorICAgIFswICAtMSAgIDAgICAxICAgMSAgIDAg
IC0xICAgMF0gICBbaTJdCisgICAgWzAgICAwICAgMCAgIDAgIC0xICAgMSAgLTEgICAxXSAgIFtp
M10gICAgCisgICovCisgIAorICAvL2NlcnIgPDwgIm1hdHJpeCBpbml0aWFsLCBiZWZvcmUgZSAs
IFJFQUw6XG4gMTogIiA8PCByMCA8PCAiXG4gMTogIiA8PCByMSA8PCAiXG4gMTogIiA8PCByMiA8
PCAiXG4gMTogIiA8PCByMyA8PCAiXG4iOworICAvL2NlcnIgPDwgIm1hdHJpeCBpbml0aWFsLCBi
ZWZvcmUgZSwgSU1BRyA6XG4gMTogIiA8PCBpMCA8PCAiXG4gMTogIiA8PCBpMSA8PCAiXG4gMTog
IiA8PCBpMiA8PCAiXG4gMTogIiA8PCBpMyA8PCAiXG4iOworCisgIFZDUExYTVVMKHIxLGkxLGVb
MF0sZVsxXSk7CisgIFZDUExYTVVMKHIyLGkyLGVbMl0sZVszXSk7CisgIFZDUExYTVVMKHIzLGkz
LGVbNF0sZVs1XSk7CisKKyAgLy9jZXJyIDw8ICJtYXRyaXggaW5pdGlhbCwgcmVhbCBwYXJ0Olxu
IDE6ICIgPDwgcjAgPDwgIlxuIDE6ICIgPDwgcjEgPDwgIlxuIDE6ICIgPDwgcjIgPDwgIlxuIDE6
ICIgPDwgcjMgPDwgIlxuIjsKKyAgLy9jZXJyIDw8ICJtYXRyaXggaW5pdGlhbCwgaW1hZyBwYXJ0
OlxuIDE6ICIgPDwgaTAgPDwgIlxuIDE6ICIgPDwgaTEgPDwgIlxuIDE6ICIgPDwgaTIgPDwgIlxu
IDE6ICIgPDwgaTMgPDwgIlxuIjsKKworICBzcjAgPSBWQUREKHIwLHIyKTsgZHIwID0gVlNVQihy
MCxyMik7IAorICBzcjEgPSBWQUREKHIxLHIzKTsgZHIxID0gVlNVQihyMyxyMSk7CisgIHNpMCA9
IFZBREQoaTAsaTIpOyBkaTAgPSBWU1VCKGkwLGkyKTsgCisgIHNpMSA9IFZBREQoaTEsaTMpOyBk
aTEgPSBWU1VCKGkzLGkxKTsKKworICByMCA9IFZBREQoc3IwLCBzcjEpOworICByMyA9IFZTVUIo
c3IwLCBzcjEpOworICBpMCA9IFZBREQoc2kwLCBzaTEpOworICBpMyA9IFZTVUIoc2kxLCBzaTAp
OworICByMSA9IFZBREQoZHIwLCBkaTEpOworICByMiA9IFZTVUIoZHIwLCBkaTEpOworICBpMSA9
IFZTVUIoZHIxLCBkaTApOworICBpMiA9IFZBREQoZHIxLCBkaTApOworCisgICpvdXQrKyA9IHIw
OworICAqb3V0KysgPSBpMDsKKyAgKm91dCsrID0gcjE7CisgICpvdXQrKyA9IGkxOworICAqb3V0
KysgPSByMjsKKyAgKm91dCsrID0gaTI7CisgICpvdXQrKyA9IHIzOworICAqb3V0KysgPSBpMzsK
KworfQorCitzdGF0aWMgTkVWRVJfSU5MSU5FKHZvaWQpIHBmZmZ0X3JlYWxfZmluYWxpemUoaW50
IE5jdmVjLCBjb25zdCB2NHNmICppbiwgdjRzZiAqb3V0LCBjb25zdCB2NHNmICplKSB7CisgIGlu
dCBrLCBkayA9IE5jdmVjL1NJTURfU1o7IC8vIG51bWJlciBvZiA0eDQgbWF0cml4IGJsb2Nrcwor
ICAvKiBmZnRwYWNrIG9yZGVyIGlzIGYwciBmMXIgZjFpIGYyciBmMmkgLi4uIGYobi0xKXIgZihu
LTEpaSBmKG4pciAqLworCisgIHY0c2ZfdW5pb24gY3IsIGNpLCAqdW91dCA9ICh2NHNmX3VuaW9u
KilvdXQ7CisgIHY0c2Ygc2F2ZSA9IGluWzddLCB6ZXJvPVZaRVJPKCk7CisgIGZsb2F0IHhyMCwg
eGkwLCB4cjEsIHhpMSwgeHIyLCB4aTIsIHhyMywgeGkzOworICBzdGF0aWMgY29uc3QgZmxvYXQg
cyA9IE1fU1FSVDIvMjsKKworICBjci52ID0gaW5bMF07IGNpLnYgPSBpbltOY3ZlYyoyLTFdOwor
ICBhc3NlcnQoaW4gIT0gb3V0KTsKKyAgcGZmZnRfcmVhbF9maW5hbGl6ZV80eDQoJnplcm8sICZ6
ZXJvLCBpbisxLCBlLCBvdXQpOworCisgIC8qCisgICAgW2NyMCBjcjEgY3IyIGNyMyBjaTAgY2kx
IGNpMiBjaTNdCisKKyAgICBbWHIoMSldICBdIFsxICAgMSAgIDEgICAxICAgMCAgIDAgICAwICAg
MF0KKyAgICBbWHIoTi80KSBdIFswICAgMCAgIDAgICAwICAgMSAgIHMgICAwICAtc10KKyAgICBb
WHIoTi8yKSBdIFsxICAgMCAgLTEgICAwICAgMCAgIDAgICAwICAgMF0KKyAgICBbWHIoM04vNCld
IFswICAgMCAgIDAgICAwICAgMSAgLXMgICAwICAgc10KKyAgICBbWGkoMSkgICBdIFsxICAtMSAg
IDEgIC0xICAgMCAgIDAgICAwICAgMF0KKyAgICBbWGkoTi80KSBdIFswICAgMCAgIDAgICAwICAg
MCAgLXMgIC0xICAtc10KKyAgICBbWGkoTi8yKSBdIFswICAtMSAgIDAgICAxICAgMCAgIDAgICAw
ICAgMF0KKyAgICBbWGkoM04vNCldIFswICAgMCAgIDAgICAwICAgMCAgLXMgICAxICAtc10KKyAg
Ki8KKworICB4cjA9KGNyLmZbMF0rY3IuZlsyXSkgKyAoY3IuZlsxXStjci5mWzNdKTsgdW91dFsw
XS5mWzBdID0geHIwOworICB4aTA9KGNyLmZbMF0rY3IuZlsyXSkgLSAoY3IuZlsxXStjci5mWzNd
KTsgdW91dFsxXS5mWzBdID0geGkwOworICB4cjI9KGNyLmZbMF0tY3IuZlsyXSk7ICAgICAgICAg
ICAgICAgICAgICAgdW91dFs0XS5mWzBdID0geHIyOworICB4aTI9KGNyLmZbM10tY3IuZlsxXSk7
ICAgICAgICAgICAgICAgICAgICAgdW91dFs1XS5mWzBdID0geGkyOworICB4cjE9IGNpLmZbMF0g
KyBzKihjaS5mWzFdLWNpLmZbM10pOyAgICAgICAgdW91dFsyXS5mWzBdID0geHIxOworICB4aTE9
LWNpLmZbMl0gLSBzKihjaS5mWzFdK2NpLmZbM10pOyAgICAgICAgdW91dFszXS5mWzBdID0geGkx
OworICB4cjM9IGNpLmZbMF0gLSBzKihjaS5mWzFdLWNpLmZbM10pOyAgICAgICAgdW91dFs2XS5m
WzBdID0geHIzOworICB4aTM9IGNpLmZbMl0gLSBzKihjaS5mWzFdK2NpLmZbM10pOyAgICAgICAg
dW91dFs3XS5mWzBdID0geGkzOyAKKworICBmb3IgKGs9MTsgayA8IGRrOyArK2spIHsKKyAgICB2
NHNmIHNhdmVfbmV4dCA9IGluWzgqays3XTsKKyAgICBwZmZmdF9yZWFsX2ZpbmFsaXplXzR4NCgm
c2F2ZSwgJmluWzgqayswXSwgaW4gKyA4KmsrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUgKyBrKjYsIG91dCArIGsqOCk7CisgICAgc2F2ZSA9IHNhdmVfbmV4dDsKKyAgfQorCit9CisK
K3N0YXRpYyBBTFdBWVNfSU5MSU5FKHZvaWQpIHBmZmZ0X3JlYWxfcHJlcHJvY2Vzc180eDQoY29u
c3QgdjRzZiAqaW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdjRzZiAqZSwgdjRzZiAqb3V0LCBpbnQgZmlyc3QpIHsKKyAgdjRzZiByMD1pblsw
XSwgaTA9aW5bMV0sIHIxPWluWzJdLCBpMT1pblszXSwgcjI9aW5bNF0sIGkyPWluWzVdLCByMz1p
bls2XSwgaTM9aW5bN107CisgIC8qCisgICAgdHJhbnNmb3JtYXRpb24gZm9yIGVhY2ggY29sdW1u
IGlzOgorCisgICAgWzEgICAxICAgMSAgIDEgICAwICAgMCAgIDAgICAwXSAgIFtyMF0KKyAgICBb
MSAgIDAgICAwICAtMSAgIDAgIC0xICAtMSAgIDBdICAgW3IxXQorICAgIFsxICAtMSAgLTEgICAx
ICAgMCAgIDAgICAwICAgMF0gICBbcjJdCisgICAgWzEgICAwICAgMCAgLTEgICAwICAgMSAgIDEg
ICAwXSAgIFtyM10KKyAgICBbMCAgIDAgICAwICAgMCAgIDEgIC0xICAgMSAgLTFdICogW2kwXQor
ICAgIFswICAtMSAgIDEgICAwICAgMSAgIDAgICAwICAgMV0gICBbaTFdCisgICAgWzAgICAwICAg
MCAgIDAgICAxICAgMSAgLTEgIC0xXSAgIFtpMl0KKyAgICBbMCAgIDEgIC0xICAgMCAgIDEgICAw
ICAgMCAgIDFdICAgW2kzXSAgICAKKyAgKi8KKworICB2NHNmIHNyMCA9IFZBREQocjAscjMpLCBk
cjAgPSBWU1VCKHIwLHIzKTsgCisgIHY0c2Ygc3IxID0gVkFERChyMSxyMiksIGRyMSA9IFZTVUIo
cjEscjIpOworICB2NHNmIHNpMCA9IFZBREQoaTAsaTMpLCBkaTAgPSBWU1VCKGkwLGkzKTsgCisg
IHY0c2Ygc2kxID0gVkFERChpMSxpMiksIGRpMSA9IFZTVUIoaTEsaTIpOworCisgIHIwID0gVkFE
RChzcjAsIHNyMSk7CisgIHIyID0gVlNVQihzcjAsIHNyMSk7CisgIHIxID0gVlNVQihkcjAsIHNp
MSk7CisgIHIzID0gVkFERChkcjAsIHNpMSk7CisgIGkwID0gVlNVQihkaTAsIGRpMSk7CisgIGky
ID0gVkFERChkaTAsIGRpMSk7CisgIGkxID0gVlNVQihzaTAsIGRyMSk7CisgIGkzID0gVkFERChz
aTAsIGRyMSk7CisKKyAgVkNQTFhNVUxDT05KKHIxLGkxLGVbMF0sZVsxXSk7CisgIFZDUExYTVVM
Q09OSihyMixpMixlWzJdLGVbM10pOworICBWQ1BMWE1VTENPTkoocjMsaTMsZVs0XSxlWzVdKTsK
KworICBWVFJBTlNQT1NFNChyMCxyMSxyMixyMyk7CisgIFZUUkFOU1BPU0U0KGkwLGkxLGkyLGkz
KTsKKworICBpZiAoIWZpcnN0KSB7CisgICAgKm91dCsrID0gcjA7CisgICAgKm91dCsrID0gaTA7
CisgIH0KKyAgKm91dCsrID0gcjE7CisgICpvdXQrKyA9IGkxOworICAqb3V0KysgPSByMjsKKyAg
Km91dCsrID0gaTI7CisgICpvdXQrKyA9IHIzOworICAqb3V0KysgPSBpMzsKK30KKworc3RhdGlj
IE5FVkVSX0lOTElORSh2b2lkKSBwZmZmdF9yZWFsX3ByZXByb2Nlc3MoaW50IE5jdmVjLCBjb25z
dCB2NHNmICppbiwgdjRzZiAqb3V0LCBjb25zdCB2NHNmICplKSB7CisgIGludCBrLCBkayA9IE5j
dmVjL1NJTURfU1o7IC8vIG51bWJlciBvZiA0eDQgbWF0cml4IGJsb2NrcworICAvKiBmZnRwYWNr
IG9yZGVyIGlzIGYwciBmMXIgZjFpIGYyciBmMmkgLi4uIGYobi0xKXIgZihuLTEpaSBmKG4pciAq
LworCisgIHY0c2ZfdW5pb24gWHIsIFhpLCAqdW91dCA9ICh2NHNmX3VuaW9uKilvdXQ7CisgIGZs
b2F0IGNyMCwgY2kwLCBjcjEsIGNpMSwgY3IyLCBjaTIsIGNyMywgY2kzOworICBzdGF0aWMgY29u
c3QgZmxvYXQgcyA9IE1fU1FSVDI7CisgIGFzc2VydChpbiAhPSBvdXQpOworICBmb3IgKGs9MDsg
ayA8IDQ7ICsraykgeworICAgIFhyLmZba10gPSAoKGZsb2F0KilpbilbOCprXTsKKyAgICBYaS5m
W2tdID0gKChmbG9hdCopaW4pWzgqays0XTsKKyAgfQorCisgIHBmZmZ0X3JlYWxfcHJlcHJvY2Vz
c180eDQoaW4sIGUsIG91dCsxLCAxKTsgLy8gd2lsbCB3cml0ZSBvbmx5IDYgdmFsdWVzCisKKyAg
LyoKKyAgICBbWHIwIFhyMSBYcjIgWHIzIFhpMCBYaTEgWGkyIFhpM10KKworICAgIFtjcjBdIFsx
ICAgMCAgIDIgICAwICAgMSAgIDAgICAwICAgMF0KKyAgICBbY3IxXSBbMSAgIDAgICAwICAgMCAg
LTEgICAwICAtMiAgIDBdCisgICAgW2NyMl0gWzEgICAwICAtMiAgIDAgICAxICAgMCAgIDAgICAw
XQorICAgIFtjcjNdIFsxICAgMCAgIDAgICAwICAtMSAgIDAgICAyICAgMF0KKyAgICBbY2kwXSBb
MCAgIDIgICAwICAgMiAgIDAgICAwICAgMCAgIDBdCisgICAgW2NpMV0gWzAgICBzICAgMCAgLXMg
ICAwICAtcyAgIDAgIC1zXQorICAgIFtjaTJdIFswICAgMCAgIDAgICAwICAgMCAgLTIgICAwICAg
Ml0KKyAgICBbY2kzXSBbMCAgLXMgICAwICAgcyAgIDAgIC1zICAgMCAgLXNdCisgICovCisgIGZv
ciAoaz0xOyBrIDwgZGs7ICsraykgeyAgICAKKyAgICBwZmZmdF9yZWFsX3ByZXByb2Nlc3NfNHg0
KGluKzgqaywgZSArIGsqNiwgb3V0LTErayo4LCAwKTsKKyAgfQorCisgIGNyMD0oWHIuZlswXStY
aS5mWzBdKSArIDIqWHIuZlsyXTsgdW91dFswXS5mWzBdID0gY3IwOworICBjcjE9KFhyLmZbMF0t
WGkuZlswXSkgLSAyKlhpLmZbMl07IHVvdXRbMF0uZlsxXSA9IGNyMTsKKyAgY3IyPShYci5mWzBd
K1hpLmZbMF0pIC0gMipYci5mWzJdOyB1b3V0WzBdLmZbMl0gPSBjcjI7CisgIGNyMz0oWHIuZlsw
XS1YaS5mWzBdKSArIDIqWGkuZlsyXTsgdW91dFswXS5mWzNdID0gY3IzOworICBjaTA9IDIqKFhy
LmZbMV0rWHIuZlszXSk7ICAgICAgICAgICAgICAgICAgICAgICB1b3V0WzIqTmN2ZWMtMV0uZlsw
XSA9IGNpMDsKKyAgY2kxPSBzKihYci5mWzFdLVhyLmZbM10pIC0gcyooWGkuZlsxXStYaS5mWzNd
KTsgdW91dFsyKk5jdmVjLTFdLmZbMV0gPSBjaTE7CisgIGNpMj0gMiooWGkuZlszXS1YaS5mWzFd
KTsgICAgICAgICAgICAgICAgICAgICAgIHVvdXRbMipOY3ZlYy0xXS5mWzJdID0gY2kyOworICBj
aTM9LXMqKFhyLmZbMV0tWHIuZlszXSkgLSBzKihYaS5mWzFdK1hpLmZbM10pOyB1b3V0WzIqTmN2
ZWMtMV0uZlszXSA9IGNpMzsKK30KKworCit2b2lkIHBmZmZ0X3RyYW5zZm9ybV9pbnRlcm5hbChQ
RkZGVF9TZXR1cCAqc2V0dXAsIGNvbnN0IGZsb2F0ICpmaW5wdXQsIGZsb2F0ICpmb3V0cHV0LCB2
NHNmICpzY3JhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZmZmdF9kaXJlY3Rp
b25fdCBkaXJlY3Rpb24sIGludCBvcmRlcmVkKSB7CisgIGludCBrLCBOY3ZlYyAgID0gc2V0dXAt
Pk5jdmVjOworICBpbnQgbmZfb2RkID0gKHNldHVwLT5pZmFjWzFdICYgMSk7CisKKyAgLy8gdGVt
cG9yYXJ5IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGlmIHRoZSBzY3JhdGNoIHBv
aW50ZXIgaXMgTlVMTAorICBpbnQgc3RhY2tfYWxsb2NhdGUgPSAoc2NyYXRjaCA9PSAwID8gTmN2
ZWMqMiA6IDEpOworICBWTEFfQVJSQVlfT05fU1RBQ0sodjRzZiwgc2NyYXRjaF9vbl9zdGFjaywg
c3RhY2tfYWxsb2NhdGUpOworCisgIGNvbnN0IHY0c2YgKnZpbnB1dCA9IChjb25zdCB2NHNmKilm
aW5wdXQ7CisgIHY0c2YgKnZvdXRwdXQgICAgICA9ICh2NHNmKilmb3V0cHV0OworICB2NHNmICpi
dWZmWzJdICAgICAgPSB7IHZvdXRwdXQsIHNjcmF0Y2ggPyBzY3JhdGNoIDogc2NyYXRjaF9vbl9z
dGFjayB9OworICBpbnQgaWIgPSAobmZfb2RkIF4gb3JkZXJlZCA/IDEgOiAwKTsKKworICBhc3Nl
cnQoVkFMSUdORUQoZmlucHV0KSAmJiBWQUxJR05FRChmb3V0cHV0KSk7CisKKyAgLy9hc3NlcnQo
ZmlucHV0ICE9IGZvdXRwdXQpOworICBpZiAoZGlyZWN0aW9uID09IFBGRkZUX0ZPUldBUkQpIHsK
KyAgICBpYiA9ICFpYjsKKyAgICBpZiAoc2V0dXAtPnRyYW5zZm9ybSA9PSBQRkZGVF9SRUFMKSB7
IAorICAgICAgaWIgPSAocmZmdGYxX3BzKE5jdmVjKjIsIHZpbnB1dCwgYnVmZltpYl0sIGJ1ZmZb
IWliXSwKKyAgICAgICAgICAgICAgICAgICAgICBzZXR1cC0+dHdpZGRsZSwgJnNldHVwLT5pZmFj
WzBdKSA9PSBidWZmWzBdID8gMCA6IDEpOyAgICAgIAorICAgICAgcGZmZnRfcmVhbF9maW5hbGl6
ZShOY3ZlYywgYnVmZltpYl0sIGJ1ZmZbIWliXSwgKHY0c2YqKXNldHVwLT5lKTsKKyAgICB9IGVs
c2UgeworICAgICAgdjRzZiAqdG1wID0gYnVmZltpYl07CisgICAgICBmb3IgKGs9MDsgayA8IE5j
dmVjOyArK2spIHsKKyAgICAgICAgVU5JTlRFUkxFQVZFMih2aW5wdXRbayoyXSwgdmlucHV0W2sq
MisxXSwgdG1wW2sqMl0sIHRtcFtrKjIrMV0pOworICAgICAgfQorICAgICAgaWIgPSAoY2ZmdGYx
X3BzKE5jdmVjLCBidWZmW2liXSwgYnVmZlshaWJdLCBidWZmW2liXSwgCisgICAgICAgICAgICAg
ICAgICAgICAgc2V0dXAtPnR3aWRkbGUsICZzZXR1cC0+aWZhY1swXSwgLTEpID09IGJ1ZmZbMF0g
PyAwIDogMSk7CisgICAgICBwZmZmdF9jcGx4X2ZpbmFsaXplKE5jdmVjLCBidWZmW2liXSwgYnVm
ZlshaWJdLCAodjRzZiopc2V0dXAtPmUpOworICAgIH0KKyAgICBpZiAob3JkZXJlZCkgeworICAg
ICAgcGZmZnRfenJlb3JkZXIoc2V0dXAsIChmbG9hdCopYnVmZlshaWJdLCAoZmxvYXQqKWJ1ZmZb
aWJdLCBQRkZGVF9GT1JXQVJEKTsgICAgICAgCisgICAgfSBlbHNlIGliID0gIWliOworICB9IGVs
c2UgeworICAgIGlmICh2aW5wdXQgPT0gYnVmZltpYl0pIHsgCisgICAgICBpYiA9ICFpYjsgLy8g
bWF5IGhhcHBlbiB3aGVuIGZpbnB1dCA9PSBmb3V0cHV0CisgICAgfQorICAgIGlmIChvcmRlcmVk
KSB7CisgICAgICBwZmZmdF96cmVvcmRlcihzZXR1cCwgKGZsb2F0Kil2aW5wdXQsIChmbG9hdCop
YnVmZltpYl0sIFBGRkZUX0JBQ0tXQVJEKTsgCisgICAgICB2aW5wdXQgPSBidWZmW2liXTsgaWIg
PSAhaWI7CisgICAgfQorICAgIGlmIChzZXR1cC0+dHJhbnNmb3JtID09IFBGRkZUX1JFQUwpIHsK
KyAgICAgIHBmZmZ0X3JlYWxfcHJlcHJvY2VzcyhOY3ZlYywgdmlucHV0LCBidWZmW2liXSwgKHY0
c2YqKXNldHVwLT5lKTsKKyAgICAgIGliID0gKHJmZnRiMV9wcyhOY3ZlYyoyLCBidWZmW2liXSwg
YnVmZlswXSwgYnVmZlsxXSwgCisgICAgICAgICAgICAgICAgICAgICAgc2V0dXAtPnR3aWRkbGUs
ICZzZXR1cC0+aWZhY1swXSkgPT0gYnVmZlswXSA/IDAgOiAxKTsKKyAgICB9IGVsc2UgeworICAg
ICAgcGZmZnRfY3BseF9wcmVwcm9jZXNzKE5jdmVjLCB2aW5wdXQsIGJ1ZmZbaWJdLCAodjRzZiop
c2V0dXAtPmUpOworICAgICAgaWIgPSAoY2ZmdGYxX3BzKE5jdmVjLCBidWZmW2liXSwgYnVmZlsw
XSwgYnVmZlsxXSwgCisgICAgICAgICAgICAgICAgICAgICAgc2V0dXAtPnR3aWRkbGUsICZzZXR1
cC0+aWZhY1swXSwgKzEpID09IGJ1ZmZbMF0gPyAwIDogMSk7CisgICAgICBmb3IgKGs9MDsgayA8
IE5jdmVjOyArK2spIHsKKyAgICAgICAgSU5URVJMRUFWRTIoYnVmZltpYl1bayoyXSwgYnVmZltp
Yl1bayoyKzFdLCBidWZmW2liXVtrKjJdLCBidWZmW2liXVtrKjIrMV0pOworICAgICAgfQorICAg
IH0KKyAgfQorICAKKyAgaWYgKGJ1ZmZbaWJdICE9IHZvdXRwdXQpIHsKKyAgICAvKiBleHRyYSBj
b3B5IHJlcXVpcmVkIC0tIHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIGZp
bnB1dCA9PSBmb3V0cHV0ICovCisgICAgYXNzZXJ0KGZpbnB1dD09Zm91dHB1dCk7CisgICAgZm9y
IChrPTA7IGsgPCBOY3ZlYzsgKytrKSB7CisgICAgICB2NHNmIGEgPSBidWZmW2liXVsyKmtdLCBi
ID0gYnVmZltpYl1bMiprKzFdOworICAgICAgdm91dHB1dFsyKmtdID0gYTsgdm91dHB1dFsyKmsr
MV0gPSBiOworICAgIH0KKyAgICBpYiA9ICFpYjsKKyAgfQorICBhc3NlcnQoYnVmZltpYl0gPT0g
dm91dHB1dCk7CisKKyAgVkxBX0FSUkFZX09OX1NUQUNLX0ZSRUUoc2NyYXRjaF9vbl9zdGFjayk7
Cit9CisKK3ZvaWQgcGZmZnRfemNvbnZvbHZlX2FjY3VtdWxhdGUoUEZGRlRfU2V0dXAgKnMsIGNv
bnN0IGZsb2F0ICphLCBjb25zdCBmbG9hdCAqYiwgZmxvYXQgKmFiLCBmbG9hdCBzY2FsaW5nKSB7
CisgIGludCBOY3ZlYyA9IHMtPk5jdmVjOworICBjb25zdCB2NHNmICogUkVTVFJJQ1QgdmEgPSAo
Y29uc3QgdjRzZiopYTsKKyAgY29uc3QgdjRzZiAqIFJFU1RSSUNUIHZiID0gKGNvbnN0IHY0c2Yq
KWI7CisgIHY0c2YgKiBSRVNUUklDVCB2YWIgPSAodjRzZiopYWI7CisKKyNpZmRlZiBfX2FybV9f
CisgIF9fYnVpbHRpbl9wcmVmZXRjaCh2YSk7CisgIF9fYnVpbHRpbl9wcmVmZXRjaCh2Yik7Cisg
IF9fYnVpbHRpbl9wcmVmZXRjaCh2YWIpOworICBfX2J1aWx0aW5fcHJlZmV0Y2godmErMik7Cisg
IF9fYnVpbHRpbl9wcmVmZXRjaCh2YisyKTsKKyAgX19idWlsdGluX3ByZWZldGNoKHZhYisyKTsK
KyAgX19idWlsdGluX3ByZWZldGNoKHZhKzQpOworICBfX2J1aWx0aW5fcHJlZmV0Y2godmIrNCk7
CisgIF9fYnVpbHRpbl9wcmVmZXRjaCh2YWIrNCk7CisgIF9fYnVpbHRpbl9wcmVmZXRjaCh2YSs2
KTsKKyAgX19idWlsdGluX3ByZWZldGNoKHZiKzYpOworICBfX2J1aWx0aW5fcHJlZmV0Y2godmFi
KzYpOworIyBpZm5kZWYgX19jbGFuZ19fCisjICAgZGVmaW5lIFpDT05WT0xWRV9VU0lOR19JTkxJ
TkVfTkVPTl9BU00KKyMgZW5kaWYKKyNlbmRpZgorCisgIGZsb2F0IGFyLCBhaSwgYnIsIGJpLCBh
YnIsIGFiaTsKKyNpZm5kZWYgWkNPTlZPTFZFX1VTSU5HX0lOTElORV9BU00KKyAgdjRzZiB2c2Nh
bCA9IExEX1BTMShzY2FsaW5nKTsKKyAgaW50IGk7CisjZW5kaWYKKworICBhc3NlcnQoVkFMSUdO
RUQoYSkgJiYgVkFMSUdORUQoYikgJiYgVkFMSUdORUQoYWIpKTsKKyAgYXIgPSAoKHY0c2ZfdW5p
b24qKXZhKVswXS5mWzBdOworICBhaSA9ICgodjRzZl91bmlvbiopdmEpWzFdLmZbMF07CisgIGJy
ID0gKCh2NHNmX3VuaW9uKil2YilbMF0uZlswXTsKKyAgYmkgPSAoKHY0c2ZfdW5pb24qKXZiKVsx
XS5mWzBdOworICBhYnIgPSAoKHY0c2ZfdW5pb24qKXZhYilbMF0uZlswXTsKKyAgYWJpID0gKCh2
NHNmX3VuaW9uKil2YWIpWzFdLmZbMF07CisgCisjaWZkZWYgWkNPTlZPTFZFX1VTSU5HX0lOTElO
RV9BU00gLy8gaW5saW5lIGFzbSB2ZXJzaW9uLCB1bmZvcnR1bmF0ZWx5IG1pc2NvbXBpbGVkIGJ5
IGNsYW5nIDMuMiwgYXQgbGVhc3Qgb24gdWJ1bnR1Li4gc28gdGhpcyB3aWxsIGJlIHJlc3RyaWN0
ZWQgdG8gZ2NjCisgIGNvbnN0IGZsb2F0ICphXyA9IGEsICpiXyA9IGI7IGZsb2F0ICphYl8gPSBh
YjsKKyAgaW50IE4gPSBOY3ZlYzsKKyAgYXNtIHZvbGF0aWxlKCJtb3YgICAgICAgICByOCwgJTIg
ICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2ZHVwLmYzMiAgICBxMTUsICU0
ICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICIxOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTAsIzY0
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTEsIzY0
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTIsIzY0
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTAsIzk2
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTEsIzk2
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJwbGQgICAgICAgICBbJTIsIzk2
XSAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bGQxLmYzMiAgICB7cTAscTF9
LCAgIFslMCw6MTI4XSEgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bGQxLmYzMiAgICB7
cTQscTV9LCAgIFslMSw6MTI4XSEgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bGQxLmYz
MiAgICB7cTIscTN9LCAgIFslMCw6MTI4XSEgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2
bGQxLmYzMiAgICB7cTYscTd9LCAgIFslMSw6MTI4XSEgICAgICAgICBcbiIKKyAgICAgICAgICAg
ICAgICJ2bGQxLmYzMiAgICB7cTgscTl9LCAgIFtyOCw6MTI4XSEgICAgICAgICAgXG4iCisgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICJ2bXVsLmYzMiAgICBxMTAsIHEwLCBxNCAgICAg
ICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bXVsLmYzMiAgICBxMTEsIHEwLCBxNSAgICAg
ICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bXVsLmYzMiAgICBxMTIsIHEyLCBxNiAgICAg
ICAgICAgICBcbiIgCisgICAgICAgICAgICAgICAidm11bC5mMzIgICAgcTEzLCBxMiwgcTcgICAg
ICAgICAgICAgXG4iICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICJ2bWxzLmYzMiAg
ICBxMTAsIHExLCBxNSAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxMTEsIHExLCBxNCAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bGQxLmYzMiAg
ICB7cTAscTF9LCBbcjgsOjEyOF0hICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxzLmYzMiAg
ICBxMTIsIHEzLCBxNyAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxMTMsIHEzLCBxNiAgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxOCwgcTEwLCBxMTUgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxOSwgcTExLCBxMTUgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxMCwgcTEyLCBxMTUgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2bWxhLmYzMiAg
ICBxMSwgcTEzLCBxMTUgICAgICAgICAgICBcbiIKKyAgICAgICAgICAgICAgICJ2c3QxLmYzMiAg
ICB7cTgscTl9LFslMiw6MTI4XSEgICAgXG4iCisgICAgICAgICAgICAgICAidnN0MS5mMzIgICAg
e3EwLHExfSxbJTIsOjEyOF0hICAgIFxuIgorICAgICAgICAgICAgICAgInN1YnMgICAgICAgICUz
LCAjMiAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAgICAgICAgImJuZSAgICAgICAgIDFi
ICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAgICAgICAgOiAiK3IiKGFfKSwgIity
IihiXyksICIrciIoYWJfKSwgIityIihOKSA6ICJyIihzY2FsaW5nKSA6ICJyOCIsICJxMCIsInEx
IiwicTIiLCJxMyIsInE0IiwicTUiLCJxNiIsInE3IiwicTgiLCJxOSIsICJxMTAiLCJxMTEiLCJx
MTIiLCJxMTMiLCJxMTUiLCJtZW1vcnkiKTsKKyNlbHNlIC8vIGRlZmF1bHQgcm91dGluZSwgd29y
a3MgZmluZSBmb3Igbm9uLWFybSBjcHVzIHdpdGggY3VycmVudCBjb21waWxlcnMKKyAgZm9yIChp
PTA7IGkgPCBOY3ZlYzsgaSArPSAyKSB7CisgICAgdjRzZiBhciwgYWksIGJyLCBiaTsKKyAgICBh
ciA9IHZhWzIqaSswXTsgYWkgPSB2YVsyKmkrMV07CisgICAgYnIgPSB2YlsyKmkrMF07IGJpID0g
dmJbMippKzFdOworICAgIFZDUExYTVVMKGFyLCBhaSwgYnIsIGJpKTsKKyAgICB2YWJbMippKzBd
ID0gVk1BREQoYXIsIHZzY2FsLCB2YWJbMippKzBdKTsKKyAgICB2YWJbMippKzFdID0gVk1BREQo
YWksIHZzY2FsLCB2YWJbMippKzFdKTsKKyAgICBhciA9IHZhWzIqaSsyXTsgYWkgPSB2YVsyKmkr
M107CisgICAgYnIgPSB2YlsyKmkrMl07IGJpID0gdmJbMippKzNdOworICAgIFZDUExYTVVMKGFy
LCBhaSwgYnIsIGJpKTsKKyAgICB2YWJbMippKzJdID0gVk1BREQoYXIsIHZzY2FsLCB2YWJbMipp
KzJdKTsKKyAgICB2YWJbMippKzNdID0gVk1BREQoYWksIHZzY2FsLCB2YWJbMippKzNdKTsKKyAg
fQorI2VuZGlmCisgIGlmIChzLT50cmFuc2Zvcm0gPT0gUEZGRlRfUkVBTCkgeworICAgICgodjRz
Zl91bmlvbiopdmFiKVswXS5mWzBdID0gYWJyICsgYXIqYnIqc2NhbGluZzsKKyAgICAoKHY0c2Zf
dW5pb24qKXZhYilbMV0uZlswXSA9IGFiaSArIGFpKmJpKnNjYWxpbmc7CisgIH0KK30KKworCisj
ZWxzZSAvLyBkZWZpbmVkKFBGRkZUX1NJTURfRElTQUJMRSkKKworLy8gc3RhbmRhcmQgcm91dGlu
ZSB1c2luZyBzY2FsYXIgZmxvYXRzLCB3aXRob3V0IFNJTUQgc3R1ZmYuCisKKyNkZWZpbmUgcGZm
ZnRfenJlb3JkZXJfbm9zaW1kIHBmZmZ0X3pyZW9yZGVyCit2b2lkIHBmZmZ0X3pyZW9yZGVyX25v
c2ltZChQRkZGVF9TZXR1cCAqc2V0dXAsIGNvbnN0IGZsb2F0ICppbiwgZmxvYXQgKm91dCwgcGZm
ZnRfZGlyZWN0aW9uX3QgZGlyZWN0aW9uKSB7CisgIGludCBrLCBOID0gc2V0dXAtPk47CisgIGlm
IChzZXR1cC0+dHJhbnNmb3JtID09IFBGRkZUX0NPTVBMRVgpIHsKKyAgICBmb3IgKGs9MDsgayA8
IDIqTjsgKytrKSBvdXRba10gPSBpbltrXTsKKyAgICByZXR1cm47CisgIH0KKyAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09IFBGRkZUX0ZPUldBUkQpIHsKKyAgICBmbG9hdCB4X04gPSBpbltOLTFdOwor
ICAgIGZvciAoaz1OLTE7IGsgPiAxOyAtLWspIG91dFtrXSA9IGluW2stMV07IAorICAgIG91dFsw
XSA9IGluWzBdOworICAgIG91dFsxXSA9IHhfTjsKKyAgfSBlbHNlIHsKKyAgICBmbG9hdCB4X04g
PSBpblsxXTsKKyAgICBmb3IgKGs9MTsgayA8IE4tMTsgKytrKSBvdXRba10gPSBpbltrKzFdOyAK
KyAgICBvdXRbMF0gPSBpblswXTsKKyAgICBvdXRbTi0xXSA9IHhfTjsKKyAgfQorfQorCisjZGVm
aW5lIHBmZmZ0X3RyYW5zZm9ybV9pbnRlcm5hbF9ub3NpbWQgcGZmZnRfdHJhbnNmb3JtX2ludGVy
bmFsCit2b2lkIHBmZmZ0X3RyYW5zZm9ybV9pbnRlcm5hbF9ub3NpbWQoUEZGRlRfU2V0dXAgKnNl
dHVwLCBjb25zdCBmbG9hdCAqaW5wdXQsIGZsb2F0ICpvdXRwdXQsIGZsb2F0ICpzY3JhdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZmZnRfZGlyZWN0aW9uX3QgZGly
ZWN0aW9uLCBpbnQgb3JkZXJlZCkgeworICBpbnQgTmN2ZWMgICA9IHNldHVwLT5OY3ZlYzsKKyAg
aW50IG5mX29kZCA9IChzZXR1cC0+aWZhY1sxXSAmIDEpOworCisgIC8vIHRlbXBvcmFyeSBidWZm
ZXIgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpZiB0aGUgc2NyYXRjaCBwb2ludGVyIGlzIE5V
TEwKKyAgaW50IHN0YWNrX2FsbG9jYXRlID0gKHNjcmF0Y2ggPT0gMCA/IE5jdmVjKjIgOiAxKTsK
KyAgVkxBX0FSUkFZX09OX1NUQUNLKHY0c2YsIHNjcmF0Y2hfb25fc3RhY2ssIHN0YWNrX2FsbG9j
YXRlKTsKKyAgZmxvYXQgKmJ1ZmZbMl07CisgIGludCBpYjsKKyAgaWYgKHNjcmF0Y2ggPT0gMCkg
c2NyYXRjaCA9IHNjcmF0Y2hfb25fc3RhY2s7CisgIGJ1ZmZbMF0gPSBvdXRwdXQ7IGJ1ZmZbMV0g
PSBzY3JhdGNoOworCisgIGlmIChzZXR1cC0+dHJhbnNmb3JtID09IFBGRkZUX0NPTVBMRVgpIG9y
ZGVyZWQgPSAwOyAvLyBpdCBpcyBhbHdheXMgb3JkZXJlZC4KKyAgaWIgPSAobmZfb2RkIF4gb3Jk
ZXJlZCA/IDEgOiAwKTsKKworICBpZiAoZGlyZWN0aW9uID09IFBGRkZUX0ZPUldBUkQpIHsKKyAg
ICBpZiAoc2V0dXAtPnRyYW5zZm9ybSA9PSBQRkZGVF9SRUFMKSB7IAorICAgICAgaWIgPSAocmZm
dGYxX3BzKE5jdmVjKjIsIGlucHV0LCBidWZmW2liXSwgYnVmZlshaWJdLAorICAgICAgICAgICAg
ICAgICAgICAgIHNldHVwLT50d2lkZGxlLCAmc2V0dXAtPmlmYWNbMF0pID09IGJ1ZmZbMF0gPyAw
IDogMSk7ICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAgIGliID0gKGNmZnRmMV9wcyhOY3ZlYywg
aW5wdXQsIGJ1ZmZbaWJdLCBidWZmWyFpYl0sIAorICAgICAgICAgICAgICAgICAgICAgIHNldHVw
LT50d2lkZGxlLCAmc2V0dXAtPmlmYWNbMF0sIC0xKSA9PSBidWZmWzBdID8gMCA6IDEpOworICAg
IH0KKyAgICBpZiAob3JkZXJlZCkgeworICAgICAgcGZmZnRfenJlb3JkZXIoc2V0dXAsIGJ1ZmZb
aWJdLCBidWZmWyFpYl0sIFBGRkZUX0ZPUldBUkQpOyBpYiA9ICFpYjsKKyAgICB9CisgIH0gZWxz
ZSB7ICAgIAorICAgIGlmIChpbnB1dCA9PSBidWZmW2liXSkgeyAKKyAgICAgIGliID0gIWliOyAv
LyBtYXkgaGFwcGVuIHdoZW4gZmlucHV0ID09IGZvdXRwdXQKKyAgICB9CisgICAgaWYgKG9yZGVy
ZWQpIHsKKyAgICAgIHBmZmZ0X3pyZW9yZGVyKHNldHVwLCBpbnB1dCwgYnVmZlshaWJdLCBQRkZG
VF9CQUNLV0FSRCk7IAorICAgICAgaW5wdXQgPSBidWZmWyFpYl07CisgICAgfQorICAgIGlmIChz
ZXR1cC0+dHJhbnNmb3JtID09IFBGRkZUX1JFQUwpIHsKKyAgICAgIGliID0gKHJmZnRiMV9wcyhO
Y3ZlYyoyLCBpbnB1dCwgYnVmZltpYl0sIGJ1ZmZbIWliXSwgCisgICAgICAgICAgICAgICAgICAg
ICAgc2V0dXAtPnR3aWRkbGUsICZzZXR1cC0+aWZhY1swXSkgPT0gYnVmZlswXSA/IDAgOiAxKTsK
KyAgICB9IGVsc2UgeworICAgICAgaWIgPSAoY2ZmdGYxX3BzKE5jdmVjLCBpbnB1dCwgYnVmZltp
Yl0sIGJ1ZmZbIWliXSwgCisgICAgICAgICAgICAgICAgICAgICAgc2V0dXAtPnR3aWRkbGUsICZz
ZXR1cC0+aWZhY1swXSwgKzEpID09IGJ1ZmZbMF0gPyAwIDogMSk7CisgICAgfQorICB9CisgIGlm
IChidWZmW2liXSAhPSBvdXRwdXQpIHsKKyAgICBpbnQgazsKKyAgICAvLyBleHRyYSBjb3B5IHJl
cXVpcmVkIC0tIHRoaXMgc2l0dWF0aW9uIHNob3VsZCBoYXBwZW5zIG9ubHkgd2hlbiBmaW5wdXQg
PT0gZm91dHB1dAorICAgIGFzc2VydChpbnB1dD09b3V0cHV0KTsKKyAgICBmb3IgKGs9MDsgayA8
IE5jdmVjOyArK2spIHsKKyAgICAgIGZsb2F0IGEgPSBidWZmW2liXVsyKmtdLCBiID0gYnVmZltp
Yl1bMiprKzFdOworICAgICAgb3V0cHV0WzIqa10gPSBhOyBvdXRwdXRbMiprKzFdID0gYjsKKyAg
ICB9CisgICAgaWIgPSAhaWI7CisgIH0KKyAgYXNzZXJ0KGJ1ZmZbaWJdID09IG91dHB1dCk7CisK
KyAgVkxBX0FSUkFZX09OX1NUQUNLX0ZSRUUoc2NyYXRjaF9vbl9zdGFjayk7Cit9CisKKyNkZWZp
bmUgcGZmZnRfemNvbnZvbHZlX2FjY3VtdWxhdGVfbm9zaW1kIHBmZmZ0X3pjb252b2x2ZV9hY2N1
bXVsYXRlCit2b2lkIHBmZmZ0X3pjb252b2x2ZV9hY2N1bXVsYXRlX25vc2ltZChQRkZGVF9TZXR1
cCAqcywgY29uc3QgZmxvYXQgKmEsIGNvbnN0IGZsb2F0ICpiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKmFiLCBmbG9hdCBzY2FsaW5nKSB7CisgIGludCBp
LCBOY3ZlYyA9IHMtPk5jdmVjOworCisgIGlmIChzLT50cmFuc2Zvcm0gPT0gUEZGRlRfUkVBTCkg
eworICAgIC8vIHRha2UgY2FyZSBvZiB0aGUgZmZ0cGFjayBvcmRlcmluZworICAgIGFiWzBdICs9
IGFbMF0qYlswXSpzY2FsaW5nOworICAgIGFiWzIqTmN2ZWMtMV0gKz0gYVsyKk5jdmVjLTFdKmJb
MipOY3ZlYy0xXSpzY2FsaW5nOworICAgICsrYWI7ICsrYTsgKytiOyAtLU5jdmVjOworICB9Cisg
IGZvciAoaT0wOyBpIDwgTmN2ZWM7ICsraSkgeworICAgIGZsb2F0IGFyLCBhaSwgYnIsIGJpOwor
ICAgIGFyID0gYVsyKmkrMF07IGFpID0gYVsyKmkrMV07CisgICAgYnIgPSBiWzIqaSswXTsgYmkg
PSBiWzIqaSsxXTsKKyAgICBWQ1BMWE1VTChhciwgYWksIGJyLCBiaSk7CisgICAgYWJbMippKzBd
ICs9IGFyKnNjYWxpbmc7CisgICAgYWJbMippKzFdICs9IGFpKnNjYWxpbmc7CisgIH0KK30KKwor
I2VuZGlmIC8vIGRlZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxFKQorCit2b2lkIHBmZmZ0X3RyYW5z
Zm9ybShQRkZGVF9TZXR1cCAqc2V0dXAsIGNvbnN0IGZsb2F0ICppbnB1dCwgZmxvYXQgKm91dHB1
dCwgZmxvYXQgKndvcmssIHBmZmZ0X2RpcmVjdGlvbl90IGRpcmVjdGlvbikgeworICBwZmZmdF90
cmFuc2Zvcm1faW50ZXJuYWwoc2V0dXAsIGlucHV0LCBvdXRwdXQsICh2NHNmKil3b3JrLCBkaXJl
Y3Rpb24sIDApOworfQorCit2b2lkIHBmZmZ0X3RyYW5zZm9ybV9vcmRlcmVkKFBGRkZUX1NldHVw
ICpzZXR1cCwgY29uc3QgZmxvYXQgKmlucHV0LCBmbG9hdCAqb3V0cHV0LCBmbG9hdCAqd29yaywg
cGZmZnRfZGlyZWN0aW9uX3QgZGlyZWN0aW9uKSB7CisgIHBmZmZ0X3RyYW5zZm9ybV9pbnRlcm5h
bChzZXR1cCwgaW5wdXQsIG91dHB1dCwgKHY0c2YqKXdvcmssIGRpcmVjdGlvbiwgMSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3BmZmZ0L3NyYy9wZmZmdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWVmNGRiNzQ4YmFhYzZk
NGFmN2MyZTRkMzBjNmM1NmJkNDQzYmNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuaApAQCAt
MCwwICsxLDE5OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDEzICBKdWxpZW4gUG9tbWllciAoIHBv
bW1pZXJAbW9kYXJ0dC5jb20gKSAKKworICAgQmFzZWQgb24gb3JpZ2luYWwgZm9ydHJhbiA3NyBj
b2RlIGZyb20gRkZUUEFDS3Y0IGZyb20gTkVUTElCLAorICAgYXV0aG9yZWQgYnkgRHIgUGF1bCBT
d2FyenRyYXViZXIgb2YgTkNBUiwgaW4gMTk4NS4KKworICAgQXMgY29uZmlybWVkIGJ5IHRoZSBO
Q0FSIGZmdHBhY2sgc29mdHdhcmUgY3VyYXRvcnMsIHRoZSBmb2xsb3dpbmcKKyAgIEZGVFBBQ0t2
NSBsaWNlbnNlIGFwcGxpZXMgdG8gRkZUUEFDS3Y0IHNvdXJjZXMuIE15IGNoYW5nZXMgYXJlCisg
ICByZWxlYXNlZCB1bmRlciB0aGUgc2FtZSB0ZXJtcy4KKworICAgRkZUUEFDSyBsaWNlbnNlOgor
CisgICBodHRwOi8vd3d3LmNpc2wudWNhci5lZHUvY3NzL3NvZnR3YXJlL2ZmdHBhY2s1L2Z0cGsu
aHRtbAorCisgICBDb3B5cmlnaHQgKGMpIDIwMDQgdGhlIFVuaXZlcnNpdHkgQ29ycG9yYXRpb24g
Zm9yIEF0bW9zcGhlcmljCisgICBSZXNlYXJjaCAoIlVDQVIiKS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gRGV2ZWxvcGVkIGJ5IE5DQVIncworICAgQ29tcHV0YXRpb25hbCBhbmQgSW5mb3JtYXRpb24g
U3lzdGVtcyBMYWJvcmF0b3J5LCBVQ0FSLAorICAgd3d3LmNpc2wudWNhci5lZHUuCisKKyAgIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhlIFNvZnR3YXJlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLAorICAgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgaXMgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlCisgICBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAt
IE5laXRoZXIgdGhlIG5hbWVzIG9mIE5DQVIncyBDb21wdXRhdGlvbmFsIGFuZCBJbmZvcm1hdGlv
biBTeXN0ZW1zCisgICBMYWJvcmF0b3J5LCB0aGUgVW5pdmVyc2l0eSBDb3Jwb3JhdGlvbiBmb3Ig
QXRtb3NwaGVyaWMgUmVzZWFyY2gsCisgICBub3IgdGhlIG5hbWVzIG9mIGl0cyBzcG9uc29ycyBv
ciBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8KKyAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBTb2Z0d2FyZSB3aXRob3V0CisgICBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uICAKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlcywgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUgZGlzY2xhaW1lciBiZWxvdy4KKworICAgLSBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBkaXNjbGFp
bWVyIGJlbG93IGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgICBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAgIEVY
UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YKKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5ECisgICBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT05U
UklCVVRPUlMgT1IgQ09QWVJJR0hUCisgICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgorICAgQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0Yg
T1IgSU4KKyAgIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBXSVRIIFRIRQorICAgU09GVFdBUkUuCisqLworICAgCisvKgorICAgUEZGRlQg
OiBhIFByZXR0eSBGYXN0IEZGVC4KKworICAgVGhpcyBpcyBiYXNpY2FsbHkgYW4gYWRhcHRhdGlv
biBvZiB0aGUgc2luZ2xlIHByZWNpc2lvbiBmZnRwYWNrCisgICAodjQpIGFzIGZvdW5kIG9uIG5l
dGxpYiB0YWtpbmcgYWR2YW50YWdlIG9mIFNJTUQgaW5zdHJ1Y3Rpb24gZm91bmQKKyAgIG9uIGNw
dXMgc3VjaCBhcyBpbnRlbCB4ODYgKFNTRTEpLCBwb3dlcnBjIChBbHRpdmVjKSwgYW5kIGFybSAo
TkVPTikuCisgICAKKyAgIEZvciBhcmNoaXRlY3R1cmVzIHdoZXJlIG5vIFNJTUQgaW5zdHJ1Y3Rp
b24gaXMgYXZhaWxhYmxlLCB0aGUgY29kZQorICAgZmFsbHMgYmFjayB0byBhIHNjYWxhciB2ZXJz
aW9uLiAgCisKKyAgIFJlc3RyaWN0aW9uczogCisKKyAgIC0gMUQgdHJhbnNmb3JtcyBvbmx5LCB3
aXRoIDMyLWJpdCBzaW5nbGUgcHJlY2lzaW9uLgorCisgICAtIHN1cHBvcnRzIG9ubHkgdHJhbnNm
b3JtcyBmb3IgaW5wdXRzIG9mIGxlbmd0aCBOIG9mIHRoZSBmb3JtCisgICBOPSgyXmEpKigzXmIp
Kig1XmMpLCBhID49IDUsIGIgPj0wLCBjID49IDAgKDMyLCA0OCwgNjQsIDk2LCAxMjgsCisgICAx
NDQsIDE2MCwgZXRjIGFyZSBhbGwgYWNjZXB0YWJsZSBsZW5ndGhzKS4gUGVyZm9ybWFuY2UgaXMg
YmVzdCBmb3IKKyAgIDEyODw9Tjw9ODE5Mi4KKworICAgLSBhbGwgKGZsb2F0KikgcG9pbnRlcnMg
aW4gdGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZXhwZWN0ZWQgdG8KKyAgIGhhdmUgYW4gInNpbWQt
Y29tcGF0aWJsZSIgYWxpZ25tZW50LCB0aGF0IGlzIDE2IGJ5dGVzIG9uIHg4NiBhbmQKKyAgIHBv
d2VycGMgQ1BVcy4KKyAgCisgICBZb3UgY2FuIGFsbG9jYXRlIHN1Y2ggYnVmZmVycyB3aXRoIHRo
ZSBmdW5jdGlvbnMKKyAgIHBmZmZ0X2FsaWduZWRfbWFsbG9jIC8gcGZmZnRfYWxpZ25lZF9mcmVl
IChvciB3aXRoIHN0dWZmIGxpa2UKKyAgIHBvc2l4X21lbWFsaWduLi4pCisKKyovCisKKyNpZm5k
ZWYgUEZGRlRfSAorI2RlZmluZSBQRkZGVF9ICisKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9y
IHNpemVfdAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNp
Zm5kZWYgUEZGRlRfU0lNRF9ESVNBQkxFCisvLyBEZXRlY3RzIGNvbXBpbGVyIGJ1Z3Mgd2l0aCBy
ZXNwZWN0IHRvIHNpbWQgaW5zdHJ1Y3Rpb24uCit2b2lkIHZhbGlkYXRlX3BmZmZ0X3NpbWQodm9p
ZCk7CisjZW5kaWYKKworLyogb3BhcXVlIHN0cnVjdCBob2xkaW5nIGludGVybmFsIHN0dWZmIChw
cmVjb21wdXRlZCB0d2lkZGxlIGZhY3RvcnMpCisgICB0aGlzIHN0cnVjdCBjYW4gYmUgc2hhcmVk
IGJ5IG1hbnkgdGhyZWFkcyBhcyBpdCBjb250YWlucyBvbmx5CisgICByZWFkLW9ubHkgZGF0YS4K
KyovCit0eXBlZGVmIHN0cnVjdCBQRkZGVF9TZXR1cCBQRkZGVF9TZXR1cDsKKworLyogZGlyZWN0
aW9uIG9mIHRoZSB0cmFuc2Zvcm0gKi8KK3R5cGVkZWYgZW51bSB7IFBGRkZUX0ZPUldBUkQsIFBG
RkZUX0JBQ0tXQVJEIH0gcGZmZnRfZGlyZWN0aW9uX3Q7CisKKy8qIHR5cGUgb2YgdHJhbnNmb3Jt
ICovCit0eXBlZGVmIGVudW0geyBQRkZGVF9SRUFMLCBQRkZGVF9DT01QTEVYIH0gcGZmZnRfdHJh
bnNmb3JtX3Q7CisKKy8qCisgIHByZXBhcmUgZm9yIHBlcmZvcm1pbmcgdHJhbnNmb3JtcyBvZiBz
aXplIE4gLS0gdGhlIHJldHVybmVkCisgIFBGRkZUX1NldHVwIHN0cnVjdHVyZSBpcyByZWFkLW9u
bHkgc28gaXQgY2FuIHNhZmVseSBiZSBzaGFyZWQgYnkKKyAgbXVsdGlwbGUgY29uY3VycmVudCB0
aHJlYWRzLgorKi8KK1BGRkZUX1NldHVwKiBwZmZmdF9uZXdfc2V0dXAoaW50IE4sIHBmZmZ0X3Ry
YW5zZm9ybV90IHRyYW5zZm9ybSk7Cit2b2lkIHBmZmZ0X2Rlc3Ryb3lfc2V0dXAoUEZGRlRfU2V0
dXAqKTsKKy8qCisgICBQZXJmb3JtIGEgRm91cmllciB0cmFuc2Zvcm0gLCBUaGUgei1kb21haW4g
ZGF0YSBpcyBzdG9yZWQgaW4gdGhlCisgICBtb3N0IGVmZmljaWVudCBvcmRlciBmb3IgdHJhbnNm
b3JtaW5nIGl0IGJhY2ssIG9yIHVzaW5nIGl0IGZvcgorICAgY29udm9sdXRpb24uIElmIHlvdSBu
ZWVkIHRvIGhhdmUgaXRzIGNvbnRlbnQgc29ydGVkIGluIHRoZQorICAgInVzdWFsIiB3YXksIHRo
YXQgaXMgYXMgYW4gYXJyYXkgb2YgaW50ZXJsZWF2ZWQgY29tcGxleCBudW1iZXJzLAorICAgZWl0
aGVyIHVzZSBwZmZmdF90cmFuc2Zvcm1fb3JkZXJlZCAsIG9yIGNhbGwgcGZmZnRfenJlb3JkZXIg
YWZ0ZXIKKyAgIHRoZSBmb3J3YXJkIGZmdCwgYW5kIGJlZm9yZSB0aGUgYmFja3dhcmQgZmZ0Lgor
CisgICBUcmFuc2Zvcm1zIGFyZSBub3Qgc2NhbGVkOiBQRkZGVF9CQUNLV0FSRChQRkZGVF9GT1JX
QVJEKHgpKSA9IE4qeC4KKyAgIFR5cGljYWxseSB5b3Ugd2lsbCB3YW50IHRvIHNjYWxlIHRoZSBi
YWNrd2FyZCB0cmFuc2Zvcm0gYnkgMS9OLgorCisgICBUaGUgJ3dvcmsnIHBvaW50ZXIgc2hvdWxk
IHBvaW50IHRvIGFuIGFyZWEgb2YgTiAoMipOIGZvciBjb21wbGV4CisgICBmZnQpIGZsb2F0cywg
cHJvcGVybHkgYWxpZ25lZC4gSWYgJ3dvcmsnIGlzIE5VTEwsIHRoZW4gc3RhY2sgd2lsbAorICAg
YmUgdXNlZCBpbnN0ZWFkICh0aGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHN0cmF0ZWd5IGZvciBz
bWFsbAorICAgRkZUcywgc2F5IGZvciBOIDwgMTYzODQpLgorCisgICBpbnB1dCBhbmQgb3V0cHV0
IG1heSBhbGlhcy4KKyovCit2b2lkIHBmZmZ0X3RyYW5zZm9ybShQRkZGVF9TZXR1cCogc2V0dXAs
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCogaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgZmxvYXQqIHdvcmss
CisgICAgICAgICAgICAgICAgICAgICBwZmZmdF9kaXJlY3Rpb25fdCBkaXJlY3Rpb24pOworCisv
KgorICAgU2ltaWxhciB0byBwZmZmdF90cmFuc2Zvcm0sIGJ1dCBtYWtlcyBzdXJlIHRoYXQgdGhl
IG91dHB1dCBpcworICAgb3JkZXJlZCBhcyBleHBlY3RlZCAoaW50ZXJsZWF2ZWQgY29tcGxleCBu
dW1iZXJzKS4gIFRoaXMgaXMKKyAgIHNpbWlsYXIgdG8gY2FsbGluZyBwZmZmdF90cmFuc2Zvcm0g
YW5kIHRoZW4gcGZmZnRfenJlb3JkZXIuCisKKyAgIGlucHV0IGFuZCBvdXRwdXQgbWF5IGFsaWFz
LgorKi8KK3ZvaWQgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWQoUEZGRlRfU2V0dXAqIHNldHVwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCogaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0KiB3b3JrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZmZm
dF9kaXJlY3Rpb25fdCBkaXJlY3Rpb24pOworCisvKgorICAgY2FsbCBwZmZmdF96cmVvcmRlcigu
LiwgUEZGRlRfRk9SV0FSRCkgYWZ0ZXIgcGZmZnRfdHJhbnNmb3JtKC4uLiwKKyAgIFBGRkZUX0ZP
UldBUkQpIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhlIGZyZXF1ZW5jeSBjb21wb25lbnRzIGluCisg
ICB0aGUgY29ycmVjdCAiY2Fub25pY2FsIiBvcmRlciwgYXMgaW50ZXJsZWF2ZWQgY29tcGxleCBu
dW1iZXJzLgorCisgICAoZm9yIHJlYWwgdHJhbnNmb3JtcywgYm90aCAwLWZyZXF1ZW5jeSBhbmQg
aGFsZiBmcmVxdWVuY3kKKyAgIGNvbXBvbmVudHMsIHdoaWNoIGFyZSByZWFsLCBhcmUgYXNzZW1i
bGVkIGluIHRoZSBmaXJzdCBlbnRyeSBhcworICAgRigwKStpKkYobi8yKzEpLiBOb3RlIHRoYXQg
dGhlIG9yaWdpbmFsIGZmdHBhY2sgZGlkIHBsYWNlCisgICBGKG4vMisxKSBhdCB0aGUgZW5kIG9m
IHRoZSBhcnJheXMpLgorCisgICBpbnB1dCBhbmQgb3V0cHV0IHNob3VsZCBub3QgYWxpYXMuCisq
Lwordm9pZCBwZmZmdF96cmVvcmRlcihQRkZGVF9TZXR1cCogc2V0dXAsCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0KiBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQqIG91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgcGZmZnRfZGlyZWN0aW9uX3QgZGlyZWN0aW9uKTsK
KworLyoKKyAgIFBlcmZvcm0gYSBtdWx0aXBsaWNhdGlvbiBvZiB0aGUgZnJlcXVlbmN5IGNvbXBv
bmVudHMgb2YgZGZ0X2EgYW5kCisgICBkZnRfYiBhbmQgYWNjdW11bGF0ZSB0aGVtIGludG8gZGZ0
X2FiLiBUaGUgYXJyYXlzIHNob3VsZCBoYXZlCisgICBiZWVuIG9idGFpbmVkIHdpdGggcGZmZnRf
dHJhbnNmb3JtKC4uLCBQRkZGVF9GT1JXQVJEKSBhbmQgc2hvdWxkCisgICAqbm90KiBoYXZlIGJl
ZW4gcmVvcmRlcmVkIHdpdGggcGZmZnRfenJlb3JkZXIgKG90aGVyd2lzZSBqdXN0CisgICBwZXJm
b3JtIHRoZSBvcGVyYXRpb24geW91cnNlbGYgYXMgdGhlIGRmdCBjb2VmcyBhcmUgc3RvcmVkIGFz
CisgICBpbnRlcmxlYXZlZCBjb21wbGV4IG51bWJlcnMpLgorCisgICB0aGUgb3BlcmF0aW9uIHBl
cmZvcm1lZCBpczogZGZ0X2FiICs9IChkZnRfYSAqIGZkdF9iKSpzY2FsaW5nCisKKyAgIFRoZSBk
ZnRfYSwgZGZ0X2IgYW5kIGRmdF9hYiBwb2ludGVycyBtYXkgYWxpYXMuCisqLwordm9pZCBwZmZm
dF96Y29udm9sdmVfYWNjdW11bGF0ZShQRkZGVF9TZXR1cCogc2V0dXAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBkZnRfYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZmxvYXQqIGRmdF9iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCogZGZ0X2FiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBzY2FsaW5nKTsKKworLyoKKyAgdGhlIGZsb2F0IGJ1ZmZlcnMgbXVzdCBoYXZlIHRo
ZSBjb3JyZWN0IGFsaWdubWVudCAoMTYtYnl0ZSBib3VuZGFyeQorICBvbiBpbnRlbCBhbmQgcG93
ZXJwYykuIFRoaXMgZnVuY3Rpb24gbWF5IGJlIHVzZWQgdG8gb2J0YWluIHN1Y2gKKyAgY29ycmVj
dGx5IGFsaWduZWQgYnVmZmVycy4KKyovCit2b2lkKiBwZmZmdF9hbGlnbmVkX21hbGxvYyhzaXpl
X3QgbmJfYnl0ZXMpOwordm9pZCBwZmZmdF9hbGlnbmVkX2ZyZWUodm9pZCopOworCisvKiByZXR1
cm4gNCBvciAxIHdldGhlciBzdXBwb3J0IFNTRS9BbHRpdmVjIGluc3RydWN0aW9ucyB3YXMgZW5h
YmxlIHdoZW4KKyAqIGJ1aWxkaW5nIHBmZmZ0LmMgKi8KK2ludCBwZmZmdF9zaW1kX3NpemUodm9p
ZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBQRkZGVF9I
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3BmZmZ0L3NyYy90ZXN0X3BmZmZ0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy90ZXN0X3BmZmZ0LmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3
OGI0ZGNjMGQ1MTU0NTcwZTEwZjBhN2Q5ZTQ3MDdjZTRlNTBkNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvcGZmZnQvc3Jj
L3Rlc3RfcGZmZnQuYwpAQCAtMCwwICsxLDQxNSBAQAorLyoKKyAgQ29weXJpZ2h0IChjKSAyMDEz
IEp1bGllbiBQb21taWVyLgorCisgIFNtYWxsIHRlc3QgJiBiZW5jaCBmb3IgUEZGRlQsIGNvbXBh
cmluZyBpdHMgcGVyZm9ybWFuY2Ugd2l0aCB0aGUgc2NhbGFyIEZGVFBBQ0ssIEZGVFcsIGFuZCBB
cHBsZSB2RFNQCisKKyAgSG93IHRvIGJ1aWxkOiAKKworICBvbiBsaW51eCwgd2l0aCBmZnR3MzoK
KyAgZ2NjIC1vIHRlc3RfcGZmZnQgLURIQVZFX0ZGVFcgLW1zc2UgLW1mcG1hdGg9c3NlIC1PMyAt
V2FsbCAtVyBwZmZmdC5jIHRlc3RfcGZmZnQuYyBmZnRwYWNrLmMgLUwvdXNyL2xvY2FsL2xpYiAt
SS91c3IvbG9jYWwvaW5jbHVkZS8gLWxmZnR3M2YgLWxtCisKKyAgb24gbWFjb3MsIHdpdGhvdXQg
ZmZ0dzM6CisgIGdjYy00LjIgLW8gdGVzdF9wZmZmdCAtREhBVkVfVkVDTElCIC1PMyAtV2FsbCAt
VyBwZmZmdC5jIHRlc3RfcGZmZnQuYyBmZnRwYWNrLmMgLUwvdXNyL2xvY2FsL2xpYiAtSS91c3Iv
bG9jYWwvaW5jbHVkZS8gLWZyYW1ld29yayB2ZWNsaWIKKworICBvbiBtYWNvcywgd2l0aCBmZnR3
MzoKKyAgZ2NjLTQuMiAtbyB0ZXN0X3BmZmZ0IC1ESEFWRV9GRlRXIC1ESEFWRV9WRUNMSUIgLU8z
IC1XYWxsIC1XIHBmZmZ0LmMgdGVzdF9wZmZmdC5jIGZmdHBhY2suYyAtTC91c3IvbG9jYWwvbGli
IC1JL3Vzci9sb2NhbC9pbmNsdWRlLyAtbGZmdHczZiAtZnJhbWV3b3JrIHZlY2xpYgorCisgIG9u
IHdpbmRvd3MsIHdpdGggdmlzdWFsIGMrKzoKKyAgY2wgL094IC1EX1VTRV9NQVRIX0RFRklORVMg
L2FyY2g6U1NFIHRlc3RfcGZmZnQuYyBwZmZmdC5jIGZmdHBhY2suYworICAKKyAgYnVpbGQgd2l0
aG91dCBTSU1EIGluc3RydWN0aW9uczoKKyAgZ2NjIC1vIHRlc3RfcGZmZnQgLURQRkZGVF9TSU1E
X0RJU0FCTEUgLU8zIC1XYWxsIC1XIHBmZmZ0LmMgdGVzdF9wZmZmdC5jIGZmdHBhY2suYyAtbG0K
KworICovCisKKyNpbmNsdWRlICJwZmZmdC5oIgorI2luY2x1ZGUgImZmdHBhY2suaCIKKworI2lu
Y2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKworI2lmZGVmIEhBVkVfU1lTX1RJTUVTCisjICBpbmNsdWRlIDxzeXMvdGltZXMuaD4KKyMg
IGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1ZFQ0xJQgorIyAgaW5j
bHVkZSA8dmVjTGliL3ZEU1AuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRlRXCisjICBpbmNs
dWRlIDxmZnR3My5oPgorI2VuZGlmCisKKyNkZWZpbmUgTUFYKHgseSkgKCh4KT4oeSk/KHgpOih5
KSkKKworZG91YmxlIGZyYW5kKCkgeworICByZXR1cm4gcmFuZCgpLyhkb3VibGUpUkFORF9NQVg7
Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVTKQorICBpbmxpbmUgZG91YmxlIHVjbG9j
a19zZWModm9pZCkgeworICAgIHN0YXRpYyBkb3VibGUgdHRjbGsgPSAwLjsKKyAgICBpZiAodHRj
bGsgPT0gMC4pIHR0Y2xrID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7CisgICAgc3RydWN0IHRtcyB0
OyByZXR1cm4gKChkb3VibGUpdGltZXMoJnQpKSAvIHR0Y2xrOworICB9CisjIGVsc2UKKyAgZG91
YmxlIHVjbG9ja19zZWModm9pZCkKK3sgcmV0dXJuIChkb3VibGUpY2xvY2soKS8oZG91YmxlKUNM
T0NLU19QRVJfU0VDOyB9CisjZW5kaWYKKworCisvKiBjb21wYXJlIHJlc3VsdHMgd2l0aCB0aGUg
cmVndWxhciBmZnRwYWNrICovCit2b2lkIHBmZmZ0X3ZhbGlkYXRlX04oaW50IE4sIGludCBjcGx4
KSB7CisgIGludCBOZmxvYXQgPSBOKihjcGx4PzI6MSk7CisgIGludCBOYnl0ZXMgPSBOZmxvYXQg
KiBzaXplb2YoZmxvYXQpOworICBmbG9hdCAqcmVmLCAqaW4sICpvdXQsICp0bXAsICp0bXAyOwor
ICBQRkZGVF9TZXR1cCAqcyA9IHBmZmZ0X25ld19zZXR1cChOLCBjcGx4ID8gUEZGRlRfQ09NUExF
WCA6IFBGRkZUX1JFQUwpOworICBpbnQgcGFzczsKKworICBpZiAoIXMpIHsgcHJpbnRmKCJTa2lw
cGluZyBOPSVkLCBub3Qgc3VwcG9ydGVkXG4iLCBOKTsgcmV0dXJuOyB9CisgIHJlZiA9IHBmZmZ0
X2FsaWduZWRfbWFsbG9jKE5ieXRlcyk7CisgIGluID0gcGZmZnRfYWxpZ25lZF9tYWxsb2MoTmJ5
dGVzKTsKKyAgb3V0ID0gcGZmZnRfYWxpZ25lZF9tYWxsb2MoTmJ5dGVzKTsKKyAgdG1wID0gcGZm
ZnRfYWxpZ25lZF9tYWxsb2MoTmJ5dGVzKTsKKyAgdG1wMiA9IHBmZmZ0X2FsaWduZWRfbWFsbG9j
KE5ieXRlcyk7CisKKyAgZm9yIChwYXNzPTA7IHBhc3MgPCAyOyArK3Bhc3MpIHsKKyAgICBmbG9h
dCByZWZfbWF4ID0gMDsKKyAgICBpbnQgazsKKyAgICAvL3ByaW50ZigiTj0lZCBwYXNzPSVkIGNw
bHg9JWRcbiIsIE4sIHBhc3MsIGNwbHgpOworICAgIC8vIGNvbXB1dGUgcmVmZXJlbmNlIHNvbHV0
aW9uIHdpdGggRkZUUEFDSworICAgIGlmIChwYXNzID09IDApIHsKKyAgICAgIGZsb2F0ICp3cmsg
PSBtYWxsb2MoMipOYnl0ZXMrMTUqc2l6ZW9mKGZsb2F0KSk7CisgICAgICBmb3IgKGs9MDsgayA8
IE5mbG9hdDsgKytrKSB7CisgICAgICAgIHJlZltrXSA9IGluW2tdID0gZnJhbmQoKSoyLTE7IAor
ICAgICAgICBvdXRba10gPSAxZTMwOworICAgICAgfQorICAgICAgaWYgKCFjcGx4KSB7CisgICAg
ICAgIHJmZnRpKE4sIHdyayk7CisgICAgICAgIHJmZnRmKE4sIHJlZiwgd3JrKTsKKyAgICAgICAg
Ly8gdXNlIG91ciBvcmRlcmluZyBmb3IgcmVhbCBmZnRzIGluc3RlYWQgb2YgdGhlIG9uZSBvZiBm
ZnRwYWNrCisgICAgICAgIHsKKyAgICAgICAgICBmbG9hdCByZWZOPXJlZltOLTFdOworICAgICAg
ICAgIGZvciAoaz1OLTI7IGsgPj0gMTsgLS1rKSByZWZbaysxXSA9IHJlZltrXTsgCisgICAgICAg
ICAgcmVmWzFdID0gcmVmTjsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgY2Zm
dGkoTiwgd3JrKTsKKyAgICAgICAgY2ZmdGYoTiwgcmVmLCB3cmspOworICAgICAgfQorICAgICAg
ZnJlZSh3cmspOworICAgIH0KKworICAgIGZvciAoayA9IDA7IGsgPCBOZmxvYXQ7ICsraykgcmVm
X21heCA9IE1BWChyZWZfbWF4LCBmYWJzKHJlZltrXSkpOworCisgICAgICAKKyAgICAvLyBwYXNz
IDAgOiBub24gY2Fub25pY2FsIG9yZGVyaW5nIG9mIHRyYW5zZm9ybSBjb2VmZmljaWVudHMgIAor
ICAgIGlmIChwYXNzID09IDApIHsKKyAgICAgIC8vIHRlc3QgZm9yd2FyZCB0cmFuc2Zvcm0sIHdp
dGggZGlmZmVyZW50IGlucHV0IC8gb3V0cHV0CisgICAgICBwZmZmdF90cmFuc2Zvcm0ocywgaW4s
IHRtcCwgMCwgUEZGRlRfRk9SV0FSRCk7CisgICAgICBtZW1jcHkodG1wMiwgdG1wLCBOYnl0ZXMp
OworICAgICAgbWVtY3B5KHRtcCwgaW4sIE5ieXRlcyk7CisgICAgICBwZmZmdF90cmFuc2Zvcm0o
cywgdG1wLCB0bXAsIDAsIFBGRkZUX0ZPUldBUkQpOworICAgICAgZm9yIChrID0gMDsgayA8IE5m
bG9hdDsgKytrKSB7CisgICAgICAgIGFzc2VydCh0bXAyW2tdID09IHRtcFtrXSk7CisgICAgICB9
CisKKyAgICAgIC8vIHRlc3QgcmVvcmRlcmluZworICAgICAgcGZmZnRfenJlb3JkZXIocywgdG1w
LCBvdXQsIFBGRkZUX0ZPUldBUkQpOworICAgICAgcGZmZnRfenJlb3JkZXIocywgb3V0LCB0bXAs
IFBGRkZUX0JBQ0tXQVJEKTsKKyAgICAgIGZvciAoayA9IDA7IGsgPCBOZmxvYXQ7ICsraykgewor
ICAgICAgICBhc3NlcnQodG1wMltrXSA9PSB0bXBba10pOworICAgICAgfQorICAgICAgcGZmZnRf
enJlb3JkZXIocywgdG1wLCBvdXQsIFBGRkZUX0ZPUldBUkQpOworICAgIH0gZWxzZSB7CisgICAg
ICAvLyBwYXNzIDEgOiBjYW5vbmljYWwgb3JkZXJpbmcgb2YgdHJhbnNmb3JtIGNvZWZmcy4KKyAg
ICAgIHBmZmZ0X3RyYW5zZm9ybV9vcmRlcmVkKHMsIGluLCB0bXAsIDAsIFBGRkZUX0ZPUldBUkQp
OworICAgICAgbWVtY3B5KHRtcDIsIHRtcCwgTmJ5dGVzKTsKKyAgICAgIG1lbWNweSh0bXAsIGlu
LCBOYnl0ZXMpOworICAgICAgcGZmZnRfdHJhbnNmb3JtX29yZGVyZWQocywgdG1wLCB0bXAsIDAs
IFBGRkZUX0ZPUldBUkQpOworICAgICAgZm9yIChrID0gMDsgayA8IE5mbG9hdDsgKytrKSB7Cisg
ICAgICAgIGFzc2VydCh0bXAyW2tdID09IHRtcFtrXSk7CisgICAgICB9CisgICAgICBtZW1jcHko
b3V0LCB0bXAsIE5ieXRlcyk7CisgICAgfQorCisgICAgeworICAgICAgZm9yIChrPTA7IGsgPCBO
ZmxvYXQ7ICsraykgeworICAgICAgICBpZiAoIShmYWJzKHJlZltrXSAtIG91dFtrXSkgPCAxZS0z
KnJlZl9tYXgpKSB7CisgICAgICAgICAgcHJpbnRmKCIlcyBmb3J3YXJkIFBGRkZUIG1pc21hdGNo
IGZvdW5kIGZvciBOPSVkXG4iLCAoY3BseD8iQ1BMWCI6IlJFQUwiKSwgTik7CisgICAgICAgICAg
ZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgICAKKyAgICAgIGlmIChwYXNzID09
IDApIHBmZmZ0X3RyYW5zZm9ybShzLCB0bXAsIG91dCwgMCwgUEZGRlRfQkFDS1dBUkQpOworICAg
ICAgZWxzZSAgIHBmZmZ0X3RyYW5zZm9ybV9vcmRlcmVkKHMsIHRtcCwgb3V0LCAwLCBQRkZGVF9C
QUNLV0FSRCk7CisgICAgICBtZW1jcHkodG1wMiwgb3V0LCBOYnl0ZXMpOworICAgICAgbWVtY3B5
KG91dCwgdG1wLCBOYnl0ZXMpOworICAgICAgaWYgKHBhc3MgPT0gMCkgcGZmZnRfdHJhbnNmb3Jt
KHMsIG91dCwgb3V0LCAwLCBQRkZGVF9CQUNLV0FSRCk7CisgICAgICBlbHNlICAgcGZmZnRfdHJh
bnNmb3JtX29yZGVyZWQocywgb3V0LCBvdXQsIDAsIFBGRkZUX0JBQ0tXQVJEKTsKKyAgICAgIGZv
ciAoayA9IDA7IGsgPCBOZmxvYXQ7ICsraykgeworICAgICAgICBhc3NlcnQodG1wMltrXSA9PSBv
dXRba10pOworICAgICAgICBvdXRba10gKj0gMS5mL047CisgICAgICB9CisgICAgICBmb3IgKGsg
PSAwOyBrIDwgTmZsb2F0OyArK2spIHsKKyAgICAgICAgaWYgKGZhYnMoaW5ba10gLSBvdXRba10p
ID4gMWUtMyAqIHJlZl9tYXgpIHsKKyAgICAgICAgICBwcmludGYoInBhc3M9JWQsICVzIElGRkZU
IGRvZXMgbm90IG1hdGNoIGZvciBOPSVkXG4iLCBwYXNzLCAoY3BseD8iQ1BMWCI6IlJFQUwiKSwg
Tik7IGJyZWFrOworICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBxdWljayB0ZXN0IG9mIHRoZSBjaXJjdWxhciBjb252b2x1dGlvbiBpbiBmZnQg
ZG9tYWluCisgICAgeworICAgICAgZmxvYXQgY29udl9lcnIgPSAwLCBjb252X21heCA9IDA7CisK
KyAgICAgIHBmZmZ0X3pyZW9yZGVyKHMsIHJlZiwgdG1wLCBQRkZGVF9GT1JXQVJEKTsKKyAgICAg
IG1lbXNldChvdXQsIDAsIE5ieXRlcyk7CisgICAgICBwZmZmdF96Y29udm9sdmVfYWNjdW11bGF0
ZShzLCByZWYsIHJlZiwgb3V0LCAxLjApOworICAgICAgcGZmZnRfenJlb3JkZXIocywgb3V0LCB0
bXAyLCBQRkZGVF9GT1JXQVJEKTsKKyAgICAgIAorICAgICAgZm9yIChrPTA7IGsgPCBOZmxvYXQ7
IGsgKz0gMikgeworICAgICAgICBmbG9hdCBhciA9IHRtcFtrXSwgYWk9dG1wW2srMV07CisgICAg
ICAgIGlmIChjcGx4IHx8IGsgPiAwKSB7CisgICAgICAgICAgdG1wW2tdID0gYXIqYXIgLSBhaSph
aTsKKyAgICAgICAgICB0bXBbaysxXSA9IDIqYXIqYWk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgdG1wWzBdID0gYXIqYXI7CisgICAgICAgICAgdG1wWzFdID0gYWkqYWk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIAorICAgICAgZm9yIChrPTA7IGsgPCBOZmxvYXQ7ICsraykgewor
ICAgICAgICBmbG9hdCBkID0gZmFicyh0bXBba10gLSB0bXAyW2tdKSwgZSA9IGZhYnModG1wW2td
KTsKKyAgICAgICAgaWYgKGQgPiBjb252X2VycikgY29udl9lcnIgPSBkOworICAgICAgICBpZiAo
ZSA+IGNvbnZfbWF4KSBjb252X21heCA9IGU7CisgICAgICB9CisgICAgICBpZiAoY29udl9lcnIg
PiAxZS01KmNvbnZfbWF4KSB7CisgICAgICAgIHByaW50ZigiemNvbnZvbHZlIGVycm9yID8gJWcg
JWdcbiIsIGNvbnZfZXJyLCBjb252X21heCk7IGV4aXQoMSk7CisgICAgICB9CisgICAgfQorCisg
IH0KKworICBwcmludGYoIiVzIFBGRkZUIGlzIE9LIGZvciBOPSVkXG4iLCAoY3BseD8iQ1BMWCI6
IlJFQUwiKSwgTik7IGZmbHVzaChzdGRvdXQpOworICAKKyAgcGZmZnRfZGVzdHJveV9zZXR1cChz
KTsKKyAgcGZmZnRfYWxpZ25lZF9mcmVlKHJlZik7CisgIHBmZmZ0X2FsaWduZWRfZnJlZShpbik7
CisgIHBmZmZ0X2FsaWduZWRfZnJlZShvdXQpOworICBwZmZmdF9hbGlnbmVkX2ZyZWUodG1wKTsK
KyAgcGZmZnRfYWxpZ25lZF9mcmVlKHRtcDIpOworfQorCit2b2lkIHBmZmZ0X3ZhbGlkYXRlKGlu
dCBjcGx4KSB7CisgIHN0YXRpYyBpbnQgTnRlc3RbXSA9IHsgMTYsIDMyLCA2NCwgOTYsIDEyOCwg
MTYwLCAxOTIsIDI1NiwgMjg4LCAzODQsIDUqOTYsIDUxMiwgNTc2LCA1KjEyOCwgODAwLCA4NjQs
IDEwMjQsIDIwNDgsIDI1OTIsIDQwMDAsIDQwOTYsIDEyMDAwLCAzNjg2NCwgMH07CisgIGludCBr
OworICBmb3IgKGsgPSAwOyBOdGVzdFtrXTsgKytrKSB7CisgICAgaW50IE4gPSBOdGVzdFtrXTsK
KyAgICBpZiAoTiA9PSAxNiAmJiAhY3BseCkgY29udGludWU7CisgICAgcGZmZnRfdmFsaWRhdGVf
TihOLCBjcGx4KTsKKyAgfQorfQorCitpbnQgYXJyYXlfb3V0cHV0X2Zvcm1hdCA9IDA7CisKK3Zv
aWQgc2hvd19vdXRwdXQoY29uc3QgY2hhciAqbmFtZSwgaW50IE4sIGludCBjcGx4LCBmbG9hdCBm
bG9wcywgZmxvYXQgdDAsIGZsb2F0IHQxLCBpbnQgbWF4X2l0ZXIpIHsKKyAgZmxvYXQgbWZsb3Bz
ID0gZmxvcHMvMWU2Lyh0MSAtIHQwICsgMWUtMTYpOworICBpZiAoYXJyYXlfb3V0cHV0X2Zvcm1h
dCkgeworICAgIGlmIChmbG9wcyAhPSAtMSkgeworICAgICAgcHJpbnRmKCJ8JTkuMGYgICAiLCBt
ZmxvcHMpOworICAgIH0gZWxzZSBwcmludGYoInwgICAgICBuL2EgICAiKTsKKyAgfSBlbHNlIHsK
KyAgICBpZiAoZmxvcHMgIT0gLTEpIHsKKyAgICAgIHByaW50ZigiTj0lNWQsICVzICUxNnMgOiAl
Ni4wZiBNRmxvcHMgW3Q9JTYuMGYgbnMsICVkIHJ1bnNdXG4iLCBOLCAoY3BseD8iQ1BMWCI6IlJF
QUwiKSwgbmFtZSwgbWZsb3BzLCAodDEtdDApLzIvbWF4X2l0ZXIgKiAxZTksIG1heF9pdGVyKTsK
KyAgICB9CisgIH0KKyAgZmZsdXNoKHN0ZG91dCk7Cit9CisKK3ZvaWQgYmVuY2htYXJrX2ZmdHMo
aW50IE4sIGludCBjcGx4KSB7CisgIGludCBOZmxvYXQgPSAoY3BseCA/IE4qMiA6IE4pOworICBp
bnQgTmJ5dGVzID0gTmZsb2F0ICogc2l6ZW9mKGZsb2F0KTsKKyAgZmxvYXQgKlggPSBwZmZmdF9h
bGlnbmVkX21hbGxvYyhOYnl0ZXMpLCAqWSA9IHBmZmZ0X2FsaWduZWRfbWFsbG9jKE5ieXRlcyks
ICpaID0gcGZmZnRfYWxpZ25lZF9tYWxsb2MoTmJ5dGVzKTsKKworICBkb3VibGUgdDAsIHQxLCBm
bG9wczsKKworICBpbnQgazsKKyAgaW50IG1heF9pdGVyID0gNTEyMDAwMC9OKjQ7CisjaWZkZWYg
X19hcm1fXworICBtYXhfaXRlciAvPSA0OworI2VuZGlmCisgIGludCBpdGVyOworCisgIGZvciAo
ayA9IDA7IGsgPCBOZmxvYXQ7ICsraykgeworICAgIFhba10gPSAwOyAvL3NxcnRmKGsrMSk7Cisg
IH0KKworICAvLyBGRlRQYWNrIGJlbmNobWFyaworICB7CisgICAgZmxvYXQgKndyayA9IG1hbGxv
YygyKk5ieXRlcyArIDE1KnNpemVvZihmbG9hdCkpOworICAgIGludCBtYXhfaXRlcl8gPSBtYXhf
aXRlci9wZmZmdF9zaW1kX3NpemUoKTsgaWYgKG1heF9pdGVyXyA9PSAwKSBtYXhfaXRlcl8gPSAx
OworICAgIGlmIChjcGx4KSBjZmZ0aShOLCB3cmspOworICAgIGVsc2UgICAgICByZmZ0aShOLCB3
cmspOworICAgIHQwID0gdWNsb2NrX3NlYygpOyAgCisgICAgCisgICAgZm9yIChpdGVyID0gMDsg
aXRlciA8IG1heF9pdGVyXzsgKytpdGVyKSB7CisgICAgICBpZiAoY3BseCkgeworICAgICAgICBj
ZmZ0ZihOLCBYLCB3cmspOworICAgICAgICBjZmZ0YihOLCBYLCB3cmspOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcmZmdGYoTiwgWCwgd3JrKTsKKyAgICAgICAgcmZmdGIoTiwgWCwgd3JrKTsK
KyAgICAgIH0KKyAgICB9CisgICAgdDEgPSB1Y2xvY2tfc2VjKCk7CisgICAgZnJlZSh3cmspOwor
ICAgIAorICAgIGZsb3BzID0gKG1heF9pdGVyXyoyKSAqICgoY3BseCA/IDUgOiAyLjUpKk4qbG9n
KChkb3VibGUpTikvTV9MTjIpOyAvLyBzZWUgaHR0cDovL3d3dy5mZnR3Lm9yZy9zcGVlZC9tZXRo
b2QuaHRtbAorICAgIHNob3dfb3V0cHV0KCJGRlRQYWNrIiwgTiwgY3BseCwgZmxvcHMsIHQwLCB0
MSwgbWF4X2l0ZXJfKTsKKyAgfQorCisjaWZkZWYgSEFWRV9WRUNMSUIKKyAgaW50IGxvZzJOID0g
KGludCkobG9nKE4pL2xvZygyKSArIDAuNWYpOworICBpZiAoTiA9PSAoMTw8bG9nMk4pKSB7Cisg
ICAgRkZUU2V0dXAgc2V0dXA7CisKKyAgICBzZXR1cCA9IHZEU1BfY3JlYXRlX2ZmdHNldHVwKGxv
ZzJOLCBGRlRfUkFESVgyKTsKKyAgICBEU1BTcGxpdENvbXBsZXggenNhbXBsZXM7CisgICAgenNh
bXBsZXMucmVhbHAgPSAmWFswXTsKKyAgICB6c2FtcGxlcy5pbWFncCA9ICZYW05mbG9hdC8yXTsK
KyAgICB0MCA9IHVjbG9ja19zZWMoKTsgIAorICAgIGZvciAoaXRlciA9IDA7IGl0ZXIgPCBtYXhf
aXRlcjsgKytpdGVyKSB7CisgICAgICBpZiAoY3BseCkgeworICAgICAgICB2RFNQX2ZmdF96aXAo
c2V0dXAsICZ6c2FtcGxlcywgMSwgbG9nMk4sIGtGRlREaXJlY3Rpb25fRm9yd2FyZCk7CisgICAg
ICAgIHZEU1BfZmZ0X3ppcChzZXR1cCwgJnpzYW1wbGVzLCAxLCBsb2cyTiwga0ZGVERpcmVjdGlv
bl9JbnZlcnNlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZEU1BfZmZ0X3pyaXAoc2V0dXAs
ICZ6c2FtcGxlcywgMSwgbG9nMk4sIGtGRlREaXJlY3Rpb25fRm9yd2FyZCk7IAorICAgICAgICB2
RFNQX2ZmdF96cmlwKHNldHVwLCAmenNhbXBsZXMsIDEsIGxvZzJOLCBrRkZURGlyZWN0aW9uX0lu
dmVyc2UpOworICAgICAgfQorICAgIH0KKyAgICB0MSA9IHVjbG9ja19zZWMoKTsKKyAgICB2RFNQ
X2Rlc3Ryb3lfZmZ0c2V0dXAoc2V0dXApOworCisgICAgZmxvcHMgPSAobWF4X2l0ZXIqMikgKiAo
KGNwbHggPyA1IDogMi41KSpOKmxvZygoZG91YmxlKU4pL01fTE4yKTsgLy8gc2VlIGh0dHA6Ly93
d3cuZmZ0dy5vcmcvc3BlZWQvbWV0aG9kLmh0bWwKKyAgICBzaG93X291dHB1dCgidkRTUCIsIE4s
IGNwbHgsIGZsb3BzLCB0MCwgdDEsIG1heF9pdGVyKTsKKyAgfSBlbHNlIHsKKyAgICBzaG93X291
dHB1dCgidkRTUCIsIE4sIGNwbHgsIC0xLCAtMSwgLTEsIC0xKTsKKyAgfQorI2VuZGlmCisgIAor
I2lmZGVmIEhBVkVfRkZUVworICB7CisgICAgZmZ0d2ZfcGxhbiBwbGFuZiwgcGxhbmI7CisgICAg
ZmZ0d19jb21wbGV4ICppbiA9IChmZnR3X2NvbXBsZXgqKSBmZnR3Zl9tYWxsb2Moc2l6ZW9mKGZm
dHdfY29tcGxleCkgKiBOKTsKKyAgICBmZnR3X2NvbXBsZXggKm91dCA9IChmZnR3X2NvbXBsZXgq
KSBmZnR3Zl9tYWxsb2Moc2l6ZW9mKGZmdHdfY29tcGxleCkgKiBOKTsKKyAgICBtZW1zZXQoaW4s
IDAsIHNpemVvZihmZnR3X2NvbXBsZXgpICogTik7CisgICAgaW50IGZsYWdzID0gKE4gPCA0MDAw
MCA/IEZGVFdfTUVBU1VSRSA6IEZGVFdfRVNUSU1BVEUpOyAgLy8gbWVhc3VyZSB0YWtlcyBhIGxv
dCBvZiB0aW1lIG9uIGxhcmdlc3QgZmZ0cworICAgIC8vaW50IGZsYWdzID0gRkZUV19FU1RJTUFU
RTsKKyAgICBpZiAoY3BseCkgeworICAgICAgcGxhbmYgPSBmZnR3Zl9wbGFuX2RmdF8xZChOLCAo
ZmZ0d2ZfY29tcGxleCopaW4sIChmZnR3Zl9jb21wbGV4KilvdXQsIEZGVFdfRk9SV0FSRCwgZmxh
Z3MpOworICAgICAgcGxhbmIgPSBmZnR3Zl9wbGFuX2RmdF8xZChOLCAoZmZ0d2ZfY29tcGxleCop
aW4sIChmZnR3Zl9jb21wbGV4KilvdXQsIEZGVFdfQkFDS1dBUkQsIGZsYWdzKTsKKyAgICB9IGVs
c2UgeworICAgICAgcGxhbmYgPSBmZnR3Zl9wbGFuX2RmdF9yMmNfMWQoTiwgKGZsb2F0Kilpbiwg
KGZmdHdmX2NvbXBsZXgqKW91dCwgZmxhZ3MpOworICAgICAgcGxhbmIgPSBmZnR3Zl9wbGFuX2Rm
dF9jMnJfMWQoTiwgKGZmdHdmX2NvbXBsZXgqKWluLCAoZmxvYXQqKW91dCwgZmxhZ3MpOworICAg
IH0KKworICAgIHQwID0gdWNsb2NrX3NlYygpOyAgCisgICAgZm9yIChpdGVyID0gMDsgaXRlciA8
IG1heF9pdGVyOyArK2l0ZXIpIHsKKyAgICAgIGZmdHdmX2V4ZWN1dGUocGxhbmYpOworICAgICAg
ZmZ0d2ZfZXhlY3V0ZShwbGFuYik7CisgICAgfQorICAgIHQxID0gdWNsb2NrX3NlYygpOworCisg
ICAgZmZ0d2ZfZGVzdHJveV9wbGFuKHBsYW5mKTsKKyAgICBmZnR3Zl9kZXN0cm95X3BsYW4ocGxh
bmIpOworICAgIGZmdHdmX2ZyZWUoaW4pOyBmZnR3Zl9mcmVlKG91dCk7CisKKyAgICBmbG9wcyA9
IChtYXhfaXRlcioyKSAqICgoY3BseCA/IDUgOiAyLjUpKk4qbG9nKChkb3VibGUpTikvTV9MTjIp
OyAvLyBzZWUgaHR0cDovL3d3dy5mZnR3Lm9yZy9zcGVlZC9tZXRob2QuaHRtbAorICAgIHNob3df
b3V0cHV0KChmbGFncyA9PSBGRlRXX01FQVNVUkUgPyAiRkZUVyAobWVhcy4pIiA6ICIgRkZUVyAo
ZXN0aW0pIiksIE4sIGNwbHgsIGZsb3BzLCB0MCwgdDEsIG1heF9pdGVyKTsKKyAgfQorI2VuZGlm
ICAKKworICAvLyBQRkZGVCBiZW5jaG1hcmsKKyAgeworICAgIFBGRkZUX1NldHVwICpzID0gcGZm
ZnRfbmV3X3NldHVwKE4sIGNwbHggPyBQRkZGVF9DT01QTEVYIDogUEZGRlRfUkVBTCk7CisgICAg
aWYgKHMpIHsKKyAgICAgIHQwID0gdWNsb2NrX3NlYygpOyAgCisgICAgICBmb3IgKGl0ZXIgPSAw
OyBpdGVyIDwgbWF4X2l0ZXI7ICsraXRlcikgeworICAgICAgICBwZmZmdF90cmFuc2Zvcm0ocywg
WCwgWiwgWSwgUEZGRlRfRk9SV0FSRCk7CisgICAgICAgIHBmZmZ0X3RyYW5zZm9ybShzLCBYLCBa
LCBZLCBQRkZGVF9CQUNLV0FSRCk7CisgICAgICB9CisgICAgICB0MSA9IHVjbG9ja19zZWMoKTsK
KyAgICAgIHBmZmZ0X2Rlc3Ryb3lfc2V0dXAocyk7CisgICAgCisgICAgICBmbG9wcyA9IChtYXhf
aXRlcioyKSAqICgoY3BseCA/IDUgOiAyLjUpKk4qbG9nKChkb3VibGUpTikvTV9MTjIpOyAvLyBz
ZWUgaHR0cDovL3d3dy5mZnR3Lm9yZy9zcGVlZC9tZXRob2QuaHRtbAorICAgICAgc2hvd19vdXRw
dXQoIlBGRkZUIiwgTiwgY3BseCwgZmxvcHMsIHQwLCB0MSwgbWF4X2l0ZXIpOworICAgIH0KKyAg
fQorCisgIGlmICghYXJyYXlfb3V0cHV0X2Zvcm1hdCkgeworICAgIHByaW50ZigiLS1cbiIpOwor
ICB9CisKKyAgcGZmZnRfYWxpZ25lZF9mcmVlKFgpOworICBwZmZmdF9hbGlnbmVkX2ZyZWUoWSk7
CisgIHBmZmZ0X2FsaWduZWRfZnJlZShaKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CisgIGludCBOdmFsdWVzW10gPSB7IDY0LCA5NiwgMTI4LCAxNjAsIDE5MiwgMjU2
LCAzODQsIDUqOTYsIDUxMiwgNSoxMjgsIDMqMjU2LCA4MDAsIDEwMjQsIDIwNDgsIDI0MDAsIDQw
OTYsIDgxOTIsIDkqMTAyNCwgMTYzODQsIDMyNzY4LCAyNTYqMTAyNCwgMTAyNCoxMDI0LCAtMSB9
OworICBpbnQgaTsKKworICBpZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICItLWFycmF5
LWZvcm1hdCIpID09IDApIHsKKyAgICBhcnJheV9vdXRwdXRfZm9ybWF0ID0gMTsKKyAgfQorCisj
aWZuZGVmIFBGRkZUX1NJTURfRElTQUJMRQorICB2YWxpZGF0ZV9wZmZmdF9zaW1kKCk7CisjZW5k
aWYKKyAgcGZmZnRfdmFsaWRhdGUoMSk7CisgIHBmZmZ0X3ZhbGlkYXRlKDApOworICBpZiAoIWFy
cmF5X291dHB1dF9mb3JtYXQpIHsKKyAgICBmb3IgKGk9MDsgTnZhbHVlc1tpXSA+IDA7ICsraSkg
eworICAgICAgYmVuY2htYXJrX2ZmdHMoTnZhbHVlc1tpXSwgMCAvKiByZWFsIGZmdCAqLyk7Cisg
ICAgfQorICAgIGZvciAoaT0wOyBOdmFsdWVzW2ldID4gMDsgKytpKSB7CisgICAgICBiZW5jaG1h
cmtfZmZ0cyhOdmFsdWVzW2ldLCAxIC8qIGNwbHggZmZ0ICovKTsKKyAgICB9CisgIH0gZWxzZSB7
CisgICAgcHJpbnRmKCJ8IGlucHV0IGxlbiAiKTsKKyAgICBwcmludGYoInxyZWFsIEZGVFBhY2si
KTsKKyNpZmRlZiBIQVZFX1ZFQ0xJQgorICAgIHByaW50ZigifCAgcmVhbCB2RFNQICIpOworI2Vu
ZGlmCisjaWZkZWYgSEFWRV9GRlRXCisgICAgcHJpbnRmKCJ8ICByZWFsIEZGVFcgIik7CisjZW5k
aWYKKyAgICBwcmludGYoInwgcmVhbCBQRkZGVCB8ICIpOworCisgICAgcHJpbnRmKCJ8Y3BseCBG
RlRQYWNrIik7CisjaWZkZWYgSEFWRV9WRUNMSUIKKyAgICBwcmludGYoInwgIGNwbHggdkRTUCAi
KTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfRkZUVworICAgIHByaW50ZigifCAgY3BseCBGRlRXICIp
OworI2VuZGlmCisgICAgcHJpbnRmKCJ8IGNwbHggUEZGRlQgfFxuIik7CisgICAgZm9yIChpPTA7
IE52YWx1ZXNbaV0gPiAwOyArK2kpIHsKKyAgICAgIHByaW50ZigifCU5ZCAgIiwgTnZhbHVlc1tp
XSk7CisgICAgICBiZW5jaG1hcmtfZmZ0cyhOdmFsdWVzW2ldLCAwKTsgCisgICAgICBwcmludGYo
InwgIik7CisgICAgICBiZW5jaG1hcmtfZmZ0cyhOdmFsdWVzW2ldLCAxKTsKKyAgICAgIHByaW50
ZigifFxuIik7CisgICAgfQorICAgIHByaW50ZigiIChudW1iZXJzIGFyZSBnaXZlbiBpbiBNRmxv
cHMpXG4iKTsKKyAgfQorCisKKyAgcmV0dXJuIDA7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>