<?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>177874</bug_id>
          
          <creation_ts>2017-10-04 09:16:31 -0700</creation_ts>
          <short_desc>SPIR-V doesn&apos;t have any 8-bit types, so WSL can&apos;t either</short_desc>
          <delta_ts>2020-06-01 14:58:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mjs</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356443</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-04 09:16:31 -0700</bug_when>
    <thetext>SPIR-V doesn&apos;t have any 8-bit types, so WSL can&apos;t either</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356444</commentid>
    <comment_count>1</comment_count>
      <attachid>322680</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-04 09:16:59 -0700</bug_when>
    <thetext>Created attachment 322680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356455</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-04 09:31:21 -0700</bug_when>
    <thetext>According to https://msdn.microsoft.com/en-us/library/bb509646(v=vs.85).aspx and https://www.khronos.org/registry/spir-v/specs/1.2/SPIRV.html#_a_id_capability_a_capability

- HLSL doesn&apos;t have 64-bit int types, and they&apos;re optional in SPIR-V
- HLSL requires half-precision floating point numbers, and they&apos;re optional in SPIR-V
- HLSL requires double-precision floating point numbers, and they&apos;re optional in SPIR-V (and already implemented in WSL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356514</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-04 10:54:07 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #0)
&gt; SPIR-V doesn&apos;t have any 8-bit types, so WSL can&apos;t either

I think you should be a bit more precise about this.

If it was merely that SPIR-V didn&apos;t support 8-bit types, then we should just say that we lower 8-bit types to 32-bit types on the fly.  This is trivial:

- Any 8-bit math operation is expressible in terms of 32-bit math operations.  Most 8-bit math operations lower to exactly one 32-bit math operation and then you ignore the high bits.  The only exceptions are right shifts, division, and modulo.

- 8-bit fields in memory can be packed into 32-bit fields, and then extracted using shifts and masking.

So, it&apos;s not correct to say that WSL &quot;can&apos;t&quot; have 8-bit types.  It totally can.

Maybe we don&apos;t want it to have 8-bit types, but then that&apos;s a different issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468969</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:19:47 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658076</commentid>
    <comment_count>5</comment_count>
      <attachid>322680</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2020-06-01 14:58:38 -0700</bug_when>
    <thetext>Comment on attachment 322680
Patch

Unflagging and obsoleting, since this has been WONTFIXEd.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322680</attachid>
            <date>2017-10-04 09:16:59 -0700</date>
            <delta_ts>2020-06-01 14:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177874-20171004091659.patch</filename>
            <type>text/plain</type>
            <size>19725</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk4OTkxNzI2MDIzMTJhZTc4YTA4YWY5MmQzNTMyMmFh
MzJiMmUzNy4uNzE2ZGI3YTU0OTBlOGIyNWRhNmU3ZGVkZjJlNGFlZjg2OWY2YzhkOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDE3LTEwLTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgU1BJUi1WIGRvZXNuJ3QgaGF2ZSBhbnkgOC1iaXQgdHlwZXMsIHNvIFdTTCBj
YW4ndCBlaXRoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBzdXBwb3J0IGZvciB1aW50OC4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0ludHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgICh1
aW50Lm9wZXJhdG9yKToKKyAgICAgICAgKHVpbnQ4Lm9wZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVzdHMuZXF1
YWxpdHkpOgorICAgICAgICAodGVzdHMubm90RXF1YWxpdHkpOgorICAgICAgICAodGVzdHMubm90
UXVpdGVFeGhhdXN0aXZlVWludFN3aXRjaCk6CisgICAgICAgICh0ZXN0cy5ub3RRdWl0ZUV4aGF1
c3RpdmVVaW50U3dpdGNoV2l0aERlZmF1bHQpOgorICAgICAgICAobWFrZVVpbnQ4KTogRGVsZXRl
ZC4KKyAgICAgICAgKGNoZWNrVWludDgpOiBEZWxldGVkLgorICAgICAgICAodGVzdHMudWludDhT
aW1wbGVNYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RzLnVpbnQ4Qml0QW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKHRlc3RzLnVpbnQ4Qml0T3IpOiBEZWxldGVkLgorICAgICAgICAodGVzdHMu
dWludDhCaXRYb3IpOiBEZWxldGVkLgorICAgICAgICAodGVzdHMudWludDhCaXROb3QpOiBEZWxl
dGVkLgorICAgICAgICAodGVzdHMudWludDhMU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAodGVz
dHMudWludDhSU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAodGVzdHMuZXhoYXVzdGl2ZVVpbnQ4
U3dpdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RzLm5vdFF1aXRlRXhoYXVzdGl2ZVVpbnQ4
U3dpdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RzLm5vdFF1aXRlRXhoYXVzdGl2ZVVpbnQ4
U3dpdGNoV2l0aERlZmF1bHQpOiBEZWxldGVkLgorCiAyMDE3LTEwLTA0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtUZXN0MjYyXSBVcGRhdGUgVGVz
dDI2MiB0byBPY3QgNCB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50
cmluc2ljcy5qcwppbmRleCA0MzAwM2FhN2UxZmQ5YzViMTdiMDU5ZDUzYzI3MjQyMGE3ZTdlZDYy
Li5mZjNmYzMwYTJlOWRjYTEyMDY2MmI3YjA4YzM0MjU1MDc4MGYzZjhlIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTEwNSwyOCArMTA1LDYgQEAg
Y2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAu
c2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHVpbnQ4PD4iLAotICAgICAgICAgICAg
dHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy51aW50OCA9IHR5cGU7Ci0gICAgICAgICAg
ICAgICAgdHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2
YWx1ZSAmIDB4ZmYsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAg
ICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICB0eXBl
LmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShv
cmlnaW4sIHZhbHVlICYgMHhmZiwgdHlwZSk7Ci0gICAgICAgICAgICAgICAgdHlwZS5zdWNjZXNz
b3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpICYgMHhmZjsKLSAgICAgICAgICAgICAgICB0
eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJh
bCA9IHZhbHVlID0+IHZhbHVlICYgMHhmZjsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZh
bHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAweGZmOwotICAgICAgICAgICAg
ICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8PSAweGZmOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICB5
aWVsZCB7dmFsdWU6IGksIG5hbWU6IGl9OwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB0eXBl
ZGVmIGZsb2F0MzI8PiIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICB0
aGlzLmZsb2F0ID0gdHlwZTsKQEAgLTE3NCwxMiArMTUyLDYgQEAgY2xhc3MgSW50cmluc2ljcyB7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAg
ICAgICAgICAibmF0aXZlIG9wZXJhdG9yPD4gaW50MzIodWludDgpIiwKLSAgICAgICAgICAgIGZ1
bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkg
PT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgfCAwKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0
b3I8PiBpbnQzMihmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAg
ICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2Fk
VmFsdWUoKSB8IDApOwpAQCAtMTk4LDEyICsxNzAsNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAg
ICAgICJuYXRpdmUgb3BlcmF0b3I8PiB1aW50MzIodWludDgpIiwKLSAgICAgICAgICAgIGZ1bmMg
PT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4g
RVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgPj4+IDApOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRv
cjw+IHVpbnQzMihmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAg
ICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2Fk
VmFsdWUoKSA+Pj4gMCk7CkBAIC0yMTYsMzAgKzE4Miw2IEBAIGNsYXNzIEludHJpbnNpY3Mgewog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAg
ICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IHVpbnQ4KGludDMyKSIsCi0gICAgICAgICAgICBmdW5j
ID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+
IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJh
dG9yPD4gdWludDgodWludDMyKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAg
ICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxv
YWRWYWx1ZSgpICYgMHhmZik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIHRo
aXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yPD4gdWludDgoZmxvYXQp
IiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAg
ICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiB1aW50OChkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1
bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkg
PT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3Bl
cmF0b3I8PiBmbG9hdChkb3VibGUpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5m
cm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKQEAgLTI1OCwxMiArMjAwLDYgQEAgY2xhc3MgSW50
cmluc2ljcyB7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yPD4gZmxvYXQodWludDgpIiwKLSAgICAg
ICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgb3BlcmF0b3I8PiBkb3VibGUoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4g
RVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkpOwpAQCAtMjgyLDEyICsyMTgsNiBAQCBjbGFzcyBJ
bnRyaW5zaWNzIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgdGhpcy5fbWFw
LnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiBkb3VibGUodWludDgpIiwKLSAg
ICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBpbnQgb3BlcmF0b3IrPD4oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4
IDFlZGRkMWEwMzQyOTYwZDRkOTVjODIxZTQ4ZDM0ZDc3YWU5NzE3MWMuLjZhMDZiOWRkZGQ4NWQz
NjUyYzMyYTFiOTkxOWYzZjRiYmYyYjRlNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTMyLDcgKzMyLDYgQEAgbGV0IHN0YW5k
YXJkTGlicmFyeSA9IGAKIC8vIE5lZWQgdG8gYm9vdHN0cmFwIHZvaWQgZmlyc3QuCiBuYXRpdmUg
dHlwZWRlZiB2b2lkOwogCi1uYXRpdmUgdHlwZWRlZiB1aW50ODsKIG5hdGl2ZSB0eXBlZGVmIGlu
dDMyOwogbmF0aXZlIHR5cGVkZWYgdWludDMyOwogbmF0aXZlIHR5cGVkZWYgYm9vbDsKQEAgLTQ1
LDUwICs0NCwzNiBAQCB0eXBlZGVmIGZsb2F0ID0gZmxvYXQzMjsKIHR5cGVkZWYgZG91YmxlID0g
ZmxvYXQ2NDsKIAogbmF0aXZlIG9wZXJhdG9yIGludDMyKHVpbnQzMik7Ci1uYXRpdmUgb3BlcmF0
b3IgaW50MzIodWludDgpOwogbmF0aXZlIG9wZXJhdG9yIGludDMyKGZsb2F0KTsKIG5hdGl2ZSBv
cGVyYXRvciBpbnQzMihkb3VibGUpOwogbmF0aXZlIG9wZXJhdG9yIHVpbnQzMihpbnQzMik7Ci1u
YXRpdmUgb3BlcmF0b3IgdWludDMyKHVpbnQ4KTsKIG5hdGl2ZSBvcGVyYXRvciB1aW50MzIoZmxv
YXQpOwogbmF0aXZlIG9wZXJhdG9yIHVpbnQzMihkb3VibGUpOwotbmF0aXZlIG9wZXJhdG9yIHVp
bnQ4KGludDMyKTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50OCh1aW50MzIpOwotbmF0aXZlIG9wZXJh
dG9yIHVpbnQ4KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciB1aW50OChkb3VibGUpOwogbmF0aXZl
IG9wZXJhdG9yIGZsb2F0KGludDMyKTsKIG5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1aW50MzIpOwot
bmF0aXZlIG9wZXJhdG9yIGZsb2F0KHVpbnQ4KTsKIG5hdGl2ZSBvcGVyYXRvciBmbG9hdChkb3Vi
bGUpOwogbmF0aXZlIG9wZXJhdG9yIGRvdWJsZShmbG9hdCk7CiBuYXRpdmUgb3BlcmF0b3IgZG91
YmxlKGludDMyKTsKIG5hdGl2ZSBvcGVyYXRvciBkb3VibGUodWludDMyKTsKLW5hdGl2ZSBvcGVy
YXRvciBkb3VibGUodWludDgpOwogCiBuYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7CiBu
YXRpdmUgdWludCBvcGVyYXRvcisodWludCwgdWludCk7Ci11aW50OCBvcGVyYXRvcisodWludDgg
YSwgdWludDggYikgeyByZXR1cm4gdWludDgodWludChhKSArIHVpbnQoYikpOyB9CiBuYXRpdmUg
ZmxvYXQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdCk7CiBuYXRpdmUgZG91YmxlIG9wZXJhdG9yKyhk
b3VibGUsIGRvdWJsZSk7CiBpbnQgb3BlcmF0b3IrKyhpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
ICsgMTsgfQogdWludCBvcGVyYXRvcisrKHVpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlICsgMTsg
fQotdWludDggb3BlcmF0b3IrKyh1aW50OCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgKyAxOyB9CiBu
YXRpdmUgaW50IG9wZXJhdG9yLShpbnQsIGludCk7CiBuYXRpdmUgdWludCBvcGVyYXRvci0odWlu
dCwgdWludCk7Ci11aW50OCBvcGVyYXRvci0odWludDggYSwgdWludDggYikgeyByZXR1cm4gdWlu
dDgodWludChhKSAtIHVpbnQoYikpOyB9CiBuYXRpdmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0LCBm
bG9hdCk7CiBuYXRpdmUgZG91YmxlIG9wZXJhdG9yLShkb3VibGUsIGRvdWJsZSk7CiBpbnQgb3Bl
cmF0b3ItLShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlIC0gMTsgfQogdWludCBvcGVyYXRvci0t
KHVpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlIC0gMTsgfQotdWludDggb3BlcmF0b3ItLSh1aW50
OCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgLSAxOyB9CiBuYXRpdmUgaW50IG9wZXJhdG9yKihpbnQs
IGludCk7CiBuYXRpdmUgdWludCBvcGVyYXRvcioodWludCwgdWludCk7Ci11aW50OCBvcGVyYXRv
cioodWludDggYSwgdWludDggYikgeyByZXR1cm4gdWludDgodWludChhKSAqIHVpbnQoYikpOyB9
CiBuYXRpdmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdCk7CiBuYXRpdmUgZG91YmxlIG9w
ZXJhdG9yKihkb3VibGUsIGRvdWJsZSk7CiBuYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsIGludCk7
CiBuYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7Ci11aW50OCBvcGVyYXRvci8odWlu
dDggYSwgdWludDggYikgeyByZXR1cm4gdWludDgodWludChhKSAvIHVpbnQoYikpOyB9CiBuYXRp
dmUgaW50IG9wZXJhdG9yJihpbnQsIGludCk7CiBuYXRpdmUgaW50IG9wZXJhdG9yfChpbnQsIGlu
dCk7CiBuYXRpdmUgaW50IG9wZXJhdG9yXihpbnQsIGludCk7CkBAIC0xMDEsMzggKzg2LDI3IEBA
IG5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50LCB1aW50KTsKIG5hdGl2ZSB1aW50IG9wZXJhdG9y
fih1aW50KTsKIG5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCwgdWludCk7CiBuYXRpdmUgdWlu
dCBvcGVyYXRvcj4+KHVpbnQsIHVpbnQpOwotdWludDggb3BlcmF0b3ImKHVpbnQ4IGEsIHVpbnQ4
IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgJiB1aW50KGIpKTsgfQotdWludDggb3BlcmF0b3J8
KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgfCB1aW50KGIpKTsgfQot
dWludDggb3BlcmF0b3JeKHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkg
XiB1aW50KGIpKTsgfQotdWludDggb3BlcmF0b3J+KHVpbnQ4IHZhbHVlKSB7IHJldHVybiB1aW50
OCh+dWludCh2YWx1ZSkpOyB9Ci11aW50OCBvcGVyYXRvcjw8KHVpbnQ4IGEsIHVpbnQgYikgeyBy
ZXR1cm4gdWludDgodWludChhKSA8PCAoYiAmIDcpKTsgfQotdWludDggb3BlcmF0b3I+Pih1aW50
OCBhLCB1aW50IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgPj4gKGIgJiA3KSk7IH0KIG5hdGl2
ZSBmbG9hdCBvcGVyYXRvci8oZmxvYXQsIGZsb2F0KTsKIG5hdGl2ZSBkb3VibGUgb3BlcmF0b3Iv
KGRvdWJsZSwgZG91YmxlKTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0oaW50LCBpbnQpOwogbmF0
aXZlIGJvb2wgb3BlcmF0b3I9PSh1aW50LCB1aW50KTsKLWJvb2wgb3BlcmF0b3I9PSh1aW50OCBh
LCB1aW50OCBiKSB7IHJldHVybiB1aW50KGEpID09IHVpbnQoYik7IH0KIG5hdGl2ZSBib29sIG9w
ZXJhdG9yPT0oYm9vbCwgYm9vbCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGZsb2F0LCBmbG9h
dCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGRvdWJsZSwgZG91YmxlKTsKIG5hdGl2ZSBib29s
IG9wZXJhdG9yPChpbnQsIGludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcjwodWludCwgdWludCk7
Ci1ib29sIG9wZXJhdG9yPCh1aW50OCBhLCB1aW50OCBiKSB7IHJldHVybiB1aW50KGEpIDwgdWlu
dChiKTsgfQogbmF0aXZlIGJvb2wgb3BlcmF0b3I8KGZsb2F0LCBmbG9hdCk7CiBuYXRpdmUgYm9v
bCBvcGVyYXRvcjwoZG91YmxlLCBkb3VibGUpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQs
IGludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KHVpbnQsIHVpbnQpOwotYm9vbCBvcGVyYXRv
cjw9KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQoYSkgPD0gdWludChiKTsgfQogbmF0
aXZlIGJvb2wgb3BlcmF0b3I8PShmbG9hdCwgZmxvYXQpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I8
PShkb3VibGUsIGRvdWJsZSk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj4oaW50LCBpbnQpOwogbmF0
aXZlIGJvb2wgb3BlcmF0b3I+KHVpbnQsIHVpbnQpOwotYm9vbCBvcGVyYXRvcj4odWludDggYSwg
dWludDggYikgeyByZXR1cm4gdWludChhKSA+IHVpbnQoYik7IH0KIG5hdGl2ZSBib29sIG9wZXJh
dG9yPihmbG9hdCwgZmxvYXQpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGRvdWJsZSwgZG91Ymxl
KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPj0oaW50LCBpbnQpOwogbmF0aXZlIGJvb2wgb3BlcmF0
b3I+PSh1aW50LCB1aW50KTsKLWJvb2wgb3BlcmF0b3I+PSh1aW50OCBhLCB1aW50OCBiKSB7IHJl
dHVybiB1aW50KGEpID49IHVpbnQoYik7IH0KIG5hdGl2ZSBib29sIG9wZXJhdG9yPj0oZmxvYXQs
IGZsb2F0KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPj0oZG91YmxlLCBkb3VibGUpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCAxNTlmYTAwZTJkYTk4MjJhMDc3OGU1
ZjA3MmJkNWNkZDE2Njc3YTE0Li4yMDRkM2M0ZWMyZGM4ZGNiNDZjY2U3Y2E2MTMyYTY4ZWI2Y2Fh
NGQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTYzLDExICs2Myw2
IEBAIGZ1bmN0aW9uIG1ha2VVaW50KHByb2dyYW0sIHZhbHVlKQogICAgIHJldHVybiBUeXBlZFZh
bHVlLmJveChwcm9ncmFtLmludHJpbnNpY3MudWludDMyLCB2YWx1ZSk7CiB9CiAKLWZ1bmN0aW9u
IG1ha2VVaW50OChwcm9ncmFtLCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gVHlwZWRWYWx1ZS5ib3go
cHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ4LCB2YWx1ZSk7Ci19Ci0KIGZ1bmN0aW9uIG1ha2VCb29s
KHByb2dyYW0sIHZhbHVlKQogewogICAgIHJldHVybiBUeXBlZFZhbHVlLmJveChwcm9ncmFtLmlu
dHJpbnNpY3MuYm9vbCwgdmFsdWUpOwpAQCAtMTI1LDE0ICsxMjAsNiBAQCBmdW5jdGlvbiBjaGVj
a1VpbnQocHJvZ3JhbSwgcmVzdWx0LCBleHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1bHQudmFsdWUgKyAiIChleHBlY3RlZCAiICsgZXhwZWN0
ZWQgKyAiKSIpOwogfQogCi1mdW5jdGlvbiBjaGVja1VpbnQ4KHByb2dyYW0sIHJlc3VsdCwgZXhw
ZWN0ZWQpCi17Ci0gICAgaWYgKCFyZXN1bHQudHlwZS5lcXVhbHMocHJvZ3JhbS5pbnRyaW5zaWNz
LnVpbnQ4KSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQgdHlwZTogIiAr
IHJlc3VsdC50eXBlKTsKLSAgICBpZiAocmVzdWx0LnZhbHVlICE9IGV4cGVjdGVkKQotICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIHJlc3VsdDogIiArIHJlc3VsdC52YWx1ZSArICIgKGV4
cGVjdGVkICIgKyBleHBlY3RlZCArICIpIik7Ci19Ci0KIGZ1bmN0aW9uIGNoZWNrQm9vbChwcm9n
cmFtLCByZXN1bHQsIGV4cGVjdGVkKQogewogICAgIGlmICghcmVzdWx0LnR5cGUuZXF1YWxzKHBy
b2dyYW0uaW50cmluc2ljcy5ib29sKSkKQEAgLTIzMSwyNSArMjE4LDEwIEBAIHRlc3RzLnVpbnRT
aW1wbGVNYXRoID0gZnVuY3Rpb24oKSB7CiAgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludChwcm9ncmFtLCA3KSwgbWFrZVVpbnQo
cHJvZ3JhbSwgMildKSwgMyk7CiB9CiAKLXRlc3RzLnVpbnQ4U2ltcGxlTWF0aCA9IGZ1bmN0aW9u
KCkgewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJ1aW50OCBmb28odWludDggeCwgdWludDgg
eSkgeyByZXR1cm4geCArIHk7IH0iKTsKLSAgICBjaGVja1VpbnQ4KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgNyksIG1ha2VVaW50
OChwcm9ncmFtLCA1KV0pLCAxMik7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgidWludDggZm9vKHVp
bnQ4IHgsIHVpbnQ4IHkpIHsgcmV0dXJuIHggLSB5OyB9Iik7Ci0gICAgY2hlY2tVaW50OChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0s
IDcpLCBtYWtlVWludDgocHJvZ3JhbSwgNSldKSwgMik7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDUp
LCBtYWtlVWludDgocHJvZ3JhbSwgNyldKSwgMjU0KTsKLSAgICBwcm9ncmFtID0gZG9QcmVwKCJ1
aW50OCBmb28odWludDggeCwgdWludDggeSkgeyByZXR1cm4geCAqIHk7IH0iKTsKLSAgICBjaGVj
a1VpbnQ4KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWlu
dDgocHJvZ3JhbSwgNyksIG1ha2VVaW50OChwcm9ncmFtLCA1KV0pLCAzNSk7Ci0gICAgcHJvZ3Jh
bSA9IGRvUHJlcCgidWludDggZm9vKHVpbnQ4IHgsIHVpbnQ4IHkpIHsgcmV0dXJuIHggLyB5OyB9
Iik7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDcpLCBtYWtlVWludDgocHJvZ3JhbSwgMildKSwgMyk7
Ci19Ci0KIHRlc3RzLmVxdWFsaXR5ID0gZnVuY3Rpb24oKSB7CiAgICAgbGV0IHByb2dyYW0gPSBk
b1ByZXAoImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09IHk7IH0iKTsKICAg
ICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VVaW50KHByb2dyYW0sIDcpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCBmYWxzZSk7CiAgICAg
Y2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtl
VWludChwcm9ncmFtLCA3KSwgbWFrZVVpbnQocHJvZ3JhbSwgNyldKSwgdHJ1ZSk7Ci0gICAgcHJv
Z3JhbSA9IGRvUHJlcCgiYm9vbCBmb28odWludDggeCwgdWludDggeSkgeyByZXR1cm4geCA9PSB5
OyB9Iik7Ci0gICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgNyksIG1ha2VVaW50OChwcm9ncmFtLCA1KV0pLCBm
YWxzZSk7Ci0gICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgNyksIG1ha2VVaW50OChwcm9ncmFtLCA3KV0pLCB0
cnVlKTsKICAgICBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0
dXJuIHggPT0geTsgfSIpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3KSwgbWFrZUludChwcm9ncmFtLCA1
KV0pLCBmYWxzZSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpLCBtYWtlSW50KHByb2dyYW0sIDcpXSks
IHRydWUpOwpAQCAtMjcxLDkgKzI0Myw2IEBAIHRlc3RzLm5vdEVxdWFsaXR5ID0gZnVuY3Rpb24o
KSB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7
IHJldHVybiB4ICE9IHk7IH0iKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50KHByb2dyYW0sIDcpLCBtYWtlVWludChwcm9n
cmFtLCA1KV0pLCB0cnVlKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50KHByb2dyYW0sIDcpLCBtYWtlVWludChwcm9ncmFt
LCA3KV0pLCBmYWxzZSk7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28odWludDggeCwg
dWludDggeSkgeyByZXR1cm4geCAhPSB5OyB9Iik7Ci0gICAgY2hlY2tCb29sKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgNyksIG1h
a2VVaW50OChwcm9ncmFtLCA1KV0pLCB0cnVlKTsKLSAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCA3KSwgbWFr
ZVVpbnQ4KHByb2dyYW0sIDcpXSksIGZhbHNlKTsKICAgICBwcm9ncmFtID0gZG9QcmVwKCJib29s
IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSIpOwogICAgIGNoZWNrQm9vbChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFt
LCA3KSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCB0cnVlKTsKICAgICBjaGVja0Jvb2wocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNyks
IG1ha2VJbnQocHJvZ3JhbSwgNyldKSwgZmFsc2UpOwpAQCAtMzQ4Myw5MCArMzQ1Miw2IEBAIHRl
c3RzLnVpbnRSU2hpZnQgPSBmdW5jdGlvbigpCiAgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludChwcm9ncmFtLCAwKSwgbWFrZVVp
bnQocHJvZ3JhbSwgMyldKSwgMCk7CiB9CiAKLXRlc3RzLnVpbnQ4Qml0QW5kID0gZnVuY3Rpb24o
KQotewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWludDggZm9vKHVpbnQ4
IGEsIHVpbnQ4IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhICYgYjsKLSAgICAg
ICAgfQotICAgIGApOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCAxKSwgbWFrZVVpbnQ4KHByb2dyYW0s
IDcpXSksIDEpOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCA2NTUzNSksIG1ha2VVaW50OChwcm9ncmFt
LCA0MildKSwgNDIpOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCAtMSksIG1ha2VVaW50OChwcm9ncmFt
LCAtNyldKSwgMjQ5KTsKLSAgICBjaGVja1VpbnQ4KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgMCksIG1ha2VVaW50OChwcm9ncmFt
LCA4NTczMildKSwgMCk7Ci19Ci0KLXRlc3RzLnVpbnQ4Qml0T3IgPSBmdW5jdGlvbigpCi17Ci0g
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB1aW50OCBmb28odWludDggYSwgdWlu
dDggYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgfCBiOwotICAgICAgICB9Ci0g
ICAgYCk7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDEpLCBtYWtlVWludDgocHJvZ3JhbSwgNyldKSwg
Nyk7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDY1NTM1KSwgbWFrZVVpbnQ4KHByb2dyYW0sIDQyKV0p
LCAyNTUpOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCAtMSksIG1ha2VVaW50OChwcm9ncmFtLCAtNyld
KSwgMjU1KTsKLSAgICBjaGVja1VpbnQ4KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgMCksIG1ha2VVaW50OChwcm9ncmFtLCA4NTcz
MildKSwgMjI4KTsKLX0KLQotdGVzdHMudWludDhCaXRYb3IgPSBmdW5jdGlvbigpCi17Ci0gICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB1aW50OCBmb28odWludDggYSwgdWludDgg
YikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgXiBiOwotICAgICAgICB9Ci0gICAg
YCk7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDEpLCBtYWtlVWludDgocHJvZ3JhbSwgNyldKSwgNik7
Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZVVpbnQ4KHByb2dyYW0sIDY1NTM1KSwgbWFrZVVpbnQ4KHByb2dyYW0sIDQyKV0pLCAy
MTMpOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCAtMSksIG1ha2VVaW50OChwcm9ncmFtLCAtNyldKSwg
Nik7Ci0gICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIDApLCBtYWtlVWludDgocHJvZ3JhbSwgODU3MzIpXSks
IDIyOCk7Ci19Ci0KLXRlc3RzLnVpbnQ4Qml0Tm90ID0gZnVuY3Rpb24oKQotewotICAgIGxldCBw
cm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWludDggZm9vKHVpbnQ4IGEpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB+YTsKLSAgICAgICAgfQotICAgIGApOwotICAgIGNoZWNrVWlu
dDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50OChw
cm9ncmFtLCAxKV0pLCAyNTQpOwotICAgIGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFtLCA2NTUzNSldKSwgMCk7Ci0g
ICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBb
bWFrZVVpbnQ4KHByb2dyYW0sIC0xKV0pLCAwKTsKLSAgICBjaGVja1VpbnQ4KHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgMCldKSwg
MjU1KTsKLX0KLQotdGVzdHMudWludDhMU2hpZnQgPSBmdW5jdGlvbigpCi17Ci0gICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB1aW50OCBmb28odWludDggYSwgdWludCBiKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSA8PCBiOwotICAgICAgICB9Ci0gICAgYCk7Ci0g
ICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBb
bWFrZVVpbnQ4KHByb2dyYW0sIDEpLCBtYWtlVWludChwcm9ncmFtLCA3KV0pLCAxMjgpOwotICAg
IGNoZWNrVWludDgocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VVaW50OChwcm9ncmFtLCA2NTUzNSksIG1ha2VVaW50KHByb2dyYW0sIDIpXSksIDI1Mik7Ci0g
ICAgY2hlY2tVaW50OChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBb
bWFrZVVpbnQ4KHByb2dyYW0sIC0xKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMjI0KTsKLSAg
ICBjaGVja1VpbnQ4KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtt
YWtlVWludDgocHJvZ3JhbSwgMCksIG1ha2VVaW50KHByb2dyYW0sIDMpXSksIDApOwotfQotCi10
ZXN0cy51aW50OFJTaGlmdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIHVpbnQ4IGZvbyh1aW50OCBhLCB1aW50IGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhID4+IGI7Ci0gICAgICAgIH0KLSAgICBgKTsKLSAgICBjaGVja1VpbnQ4
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJv
Z3JhbSwgMSksIG1ha2VVaW50KHByb2dyYW0sIDcpXSksIDApOwotICAgIGNoZWNrVWludDgocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9ncmFt
LCA2NTUzNSksIG1ha2VVaW50KHByb2dyYW0sIDIpXSksIDI1NSk7Ci0gICAgY2hlY2tVaW50OChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVpbnQ4KHByb2dy
YW0sIC0xKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMjU1KTsKLSAgICBjaGVja1VpbnQ4KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3Jh
bSwgMCksIG1ha2VVaW50KHByb2dyYW0sIDMpXSksIDApOwotfQotCiB0ZXN0cy5mbG9hdE1hdGgg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYApAQCAtNDkwOCwzNiAr
NDc5MywyNSBAQCB0ZXN0cy5zaW1wbGVTd2l0Y2ggPSBmdW5jdGlvbigpCiAgICAgY2hlY2tJbnQo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3Jh
bSwgMCldKSwgNDkpOwogfQogCi10ZXN0cy5leGhhdXN0aXZlVWludDhTd2l0Y2ggPSBmdW5jdGlv
bigpCi17Ci0gICAgbGV0IHRleHQgPSAiZG91YmxlIGZvbyh1aW50OCB4KSB7IHN3aXRjaCAodWlu
dDgoeCkpIHsiCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZjsgKytpKQotICAgICAgICB0
ZXh0ICs9ICJjYXNlICIgKyBpICsgIjogcmV0dXJuICIgKyBpICogMS41ICsgIjsiOwotICAgIHRl
eHQgKz0gIn0gfSI7Ci0gICAgbGV0IHByb2dyYW0gPSBkb1ByZXAodGV4dCk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAweGZmOyArK2kpCi0gICAgICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgaSldKSwg
aSAqIDEuNSk7Ci19Ci0KLXRlc3RzLm5vdFF1aXRlRXhoYXVzdGl2ZVVpbnQ4U3dpdGNoID0gZnVu
Y3Rpb24oKQordGVzdHMubm90UXVpdGVFeGhhdXN0aXZlVWludFN3aXRjaCA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBsZXQgdGV4dCA9ICJkb3VibGUgZm9vKHVpbnQ4IHgpIHsgc3dpdGNoICh1aW50OCh4
KSkgeyIKKyAgICBsZXQgdGV4dCA9ICJkb3VibGUgZm9vKHVpbnQgeCkgeyBzd2l0Y2ggKHVpbnQo
eCkpIHsiCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZTsgKytpKQogICAgICAgICB0ZXh0
ICs9ICJjYXNlICIgKyBpICsgIjogcmV0dXJuICIgKyBpICogMS41ICsgIjsiOwogICAgIHRleHQg
Kz0gIn0gfSI7CiAgICAgY2hlY2tGYWlsKCgpID0+IGRvUHJlcCh0ZXh0KSwgZSA9PiBlIGluc3Rh
bmNlb2YgV1R5cGVFcnJvcik7CiB9CiAKLXRlc3RzLm5vdFF1aXRlRXhoYXVzdGl2ZVVpbnQ4U3dp
dGNoV2l0aERlZmF1bHQgPSBmdW5jdGlvbigpCit0ZXN0cy5ub3RRdWl0ZUV4aGF1c3RpdmVVaW50
U3dpdGNoV2l0aERlZmF1bHQgPSBmdW5jdGlvbigpCiB7Ci0gICAgbGV0IHRleHQgPSAiZG91Ymxl
IGZvbyh1aW50OCB4KSB7IHN3aXRjaCAodWludDgoeCkpIHsiCisgICAgbGV0IHRleHQgPSAiZG91
YmxlIGZvbyh1aW50IHgpIHsgc3dpdGNoICh1aW50KHgpKSB7IgogICAgIGZvciAobGV0IGkgPSAw
OyBpIDw9IDB4ZmU7ICsraSkKICAgICAgICAgdGV4dCArPSAiY2FzZSAiICsgaSArICI6IHJldHVy
biAiICsgaSAqIDEuNSArICI7IjsKICAgICB0ZXh0ICs9ICJkZWZhdWx0OiByZXR1cm4gIiArIDB4
ZmYgKiAxLjUgKyAiOyI7CiAgICAgdGV4dCArPSAifSB9IjsKICAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcCh0ZXh0KTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDB4ZmY7ICsraSkKLSAgICAgICAg
Y2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VVaW50OChwcm9ncmFtLCBpKV0pLCBpICogMS41KTsKKyAgICAgICAgY2hlY2tEb3VibGUocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50KHByb2dyYW0s
IGkpXSksIGkgKiAxLjUpOwogfQogCiB0ZXN0cy5zd2l0Y2hGYWxsVGhyb3VnaCA9IGZ1bmN0aW9u
KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>