<?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>199647</bug_id>
          
          <creation_ts>2019-07-09 16:32:32 -0700</creation_ts>
          <short_desc>[WHLSL] Import another round of JS spec tests</short_desc>
          <delta_ts>2019-07-09 17:43:50 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>199595</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1551508</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-09 16:32:32 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551510</commentid>
    <comment_count>1</comment_count>
      <attachid>373789</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-09 16:36:54 -0700</bug_when>
    <thetext>Created attachment 373789
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551528</commentid>
    <comment_count>2</comment_count>
      <attachid>373789</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-09 17:04:37 -0700</bug_when>
    <thetext>Comment on attachment 373789
patch

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

&gt; LayoutTests/webgpu/whlsl-float-math.html:19
&gt; +        bool foo2()

I don&apos;t understand, how is foo2() different from foo() ? And from foo3, 4 and 5?

&gt; LayoutTests/webgpu/whlsl-float-math.html:41
&gt; +            return bar(7.5);

Same between foo6 and foo7

&gt; LayoutTests/webgpu/whlsl-float-math.html:49
&gt; +            return float(7.5);

Same between foo9 and foo10

&gt; LayoutTests/webgpu/whlsl-float-math.html:102
&gt; +    await checkFail(

Again, this test is a duplicate of the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551533</commentid>
    <comment_count>3</comment_count>
      <attachid>373797</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-09 17:14:24 -0700</bug_when>
    <thetext>Created attachment 373797
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551536</commentid>
    <comment_count>4</comment_count>
      <attachid>373797</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-07-09 17:16:50 -0700</bug_when>
    <thetext>Comment on attachment 373797
patch

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

&gt; LayoutTests/webgpu/whlsl-bad-ander.html:1
&gt; +&lt;!DOCTYPE html&gt;&lt;!-- webkit-test-runner [ experimental:WebGPUEnabled=true ] --&gt;

Shouldn&apos;t need this webkit-test-runner comment on any test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551537</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-09 17:21:26 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; Comment on attachment 373797 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373797&amp;action=review
&gt; 
&gt; &gt; LayoutTests/webgpu/whlsl-bad-ander.html:1
&gt; &gt; +&lt;!DOCTYPE html&gt;&lt;!-- webkit-test-runner [ experimental:WebGPUEnabled=true ] --&gt;
&gt; 
&gt; Shouldn&apos;t need this webkit-test-runner comment on any test.

Will remove from all tests inside webgpu/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551538</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-09 17:23:40 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/247289/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551542</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-09 17:43:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/52862550&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373789</attachid>
            <date>2019-07-09 16:36:54 -0700</date>
            <delta_ts>2019-07-09 17:14:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26977</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI4NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gSW1wb3J0IGFub3RoZXIgcm91bmQg
b2YgSlMgc3BlYyB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk5NjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wtYmFkLWFuZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsLWJhZC1hbmRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wtYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsLWJhZC1saXRlcmFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wtZmxvYXQtbWF0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC1mbG9hdC1tYXRoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC1pbmRl
eC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsLWluZGV4LWdldHRlci1zZXR0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsLWludC1iaXQtbWF0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC1pbnQtYml0LW1hdGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLW1h
a2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wtbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsLXBvaW50ZXItc3BlYy10ZXN0cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXgtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXguaHRtbDogQWRkZWQuCisK
IDIwMTktMDctMDkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZywgYWRkcmVzcyBUZXN0RXhwZWN0YXRpb25zIGxp
bnRlciB3YXJuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1hbmRlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1h
bmRlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsLWJhZC1hbmRlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBA
CisKK1BBU1MgaW5kZXhBbmRlckRvZXNudFJldHVyblBvaW50ZXIgCitQQVNTIGluZGV4QW5kZXJE
b2VzbnRUYWtlUmVmZXJlbmNlIAorUEFTUyBhbmRlckRvZXNudFJldHVyblBvaW50ZXIgCitQQVNT
IGFuZGVyRG9lc250VGFrZVJlZmVyZW5jZSAKK1BBU1MgYW5kZXJXaXRoQmFkSW5kZXggCitQQVNT
IGFuZGVyV2l0aE5vdGhpbmdXcm9uZyAKK1BBU1MgYW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFyZ3Vt
ZW50cyAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1hbmRlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iYWQtYW5kZXIuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYmFkLWFuZGVyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Cis8dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgorPHNjcmlwdCBzcmM9
ImpzL3dobHNsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7
fTsKKword2hsc2xUZXN0cy5pbmRleEFuZGVyRG9lc250UmV0dXJuUG9pbnRlciA9IGFzeW5jICgp
ID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGludCBvcGVyYXRvciZbXSh0aHJlYWQgRm9vKiBmb28sIHVpbnQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvby0+eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
YCk7Cit9CisKK3dobHNsVGVzdHMuaW5kZXhBbmRlckRvZXNudFRha2VSZWZlcmVuY2UgPSBhc3lu
YyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAg
c3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXShGb28gZm9vLCB1aW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiAmZm9vLng7CisgICAgICAgICAgICB9CisgICAg
ICAgIGApOworfQorCit3aGxzbFRlc3RzLmFuZGVyRG9lc250UmV0dXJuUG9pbnRlciA9IGFzeW5j
ICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHN0
cnVjdCBGb28geworICAgICAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaW50IG9wZXJhdG9yJi5mb28odGhyZWFkIEZvbyogZm9vKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBmb28tPng7CisgICAgICAgICAgICB9CisgICAgICAgIGAp
OworfQorCit3aGxzbFRlc3RzLmFuZGVyRG9lc250VGFrZVJlZmVyZW5jZSA9IGFzeW5jICgpID0+
Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsKKyAgICAgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oRm9vIGZvbykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gJmZvby54OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30K
Kword2hsc2xUZXN0cy5hbmRlcldpdGhCYWRJbmRleCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdh
aXQgY2hlY2tGYWlsKGBpbnQgZm9vKHRocmVhZCBpbnRbXSB4KSB7IHJldHVybiB4Wy0xXTsgfWAp
OworCisgICAgYXdhaXQgY2hlY2tGYWlsKGBpbnQgZm9vKHRocmVhZCBpbnRbXSB4KSB7IHJldHVy
biB4WzEuZl07IH1gKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgaW50IGZvbyh0aHJlYWQgaW50
W10geCwgaW50IHkpIHsgcmV0dXJuIHhbeV07IH1gKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChg
aW50IGZvbyh0aHJlYWQgaW50W10geCwgZmxvYXQgeSkgeyByZXR1cm4geFt5XTsgfWApOworfQor
Cit3aGxzbFRlc3RzLmFuZGVyV2l0aE5vdGhpbmdXcm9uZyA9IGFzeW5jICgpID0+Cit7CisgICAg
bGV0IHByb2dyYW0gPSBgCisgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgaW50IHg7
CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9v
KiBmb28pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAmZm9vLT54OworICAgICAgICB9
CisgICAgICAgIGludCBmb28oKQorICAgICAgICB7CisgICAgICAgICAgICBGb28geDsKKyAgICAg
ICAgICAgIHgueCA9IDEzOworICAgICAgICAgICAgcmV0dXJuIHguZm9vOworICAgICAgICB9Cisg
ICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAxMyk7Cit9CisKK3dobHNsVGVzdHMuYW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFy
Z3VtZW50cyA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAK
KyAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgICAgIHJldHVybiAmeDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAK
KyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAgIGludCB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9v
KiBmb28sIGludCBibGFoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAm
Zm9vLT54OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxz
bC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dl
YmdwdS93aGxzbC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIGJhZEludExpdGVyYWxGb3JJbnQgCitQQVNT
IGJhZEludExpdGVyYWxGb3JGbG9hdCAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LWJhZC1saXRlcmFscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxz
bC1iYWQtbGl0ZXJhbHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wtYmFkLWxpdGVyYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAor
PCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2Vi
R1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHByZWZpeC9wb3N0
Zml4LjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLmJhZEludExpdGVyYWxG
b3JJbnQgPSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCggInZvaWQgZm9vKCkg
eyBpbnQgeCA9IDMwMDAwMDAwMDA7IH0iKTsKK30KKword2hsc2xUZXN0cy5iYWRJbnRMaXRlcmFs
Rm9yRmxvYXQgPSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgidm9pZCBmb28o
KSB7IGZsb2F0IHggPSA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOyB9Iik7
Cit9CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZmxvYXQtbWF0aC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWZsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1mbG9hdC1tYXRoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBmbG9hdE1hdGgg
CisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1mbG9hdC1tYXRoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWZsb2F0LW1hdGguaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZmxvYXQtbWF0aC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUzIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxodG1s
PgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgorPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJq
cy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307
CisKK3dobHNsVGVzdHMuZmxvYXRNYXRoID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFt
ID0gYAorICAgICAgICBib29sIGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiA0
Mi41ID09IDQyLjU7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb28yKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIDQyLjUgPT0gNDIuNTsKKyAgICAgICAgfQorICAgICAgICBib29s
IGZvbzMoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gNDIuNSA9PSA0Mi41OworICAg
ICAgICB9CisgICAgICAgIGJvb2wgZm9vNCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biA0Mi41ID09IDQyLjU7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb281KCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIDQyLjUgPT0gNDIuNTsKKyAgICAgICAgfQorICAgICAgICBm
bG9hdCBiYXIoZmxvYXQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAg
ICAgIH0KKyAgICAgICAgZmxvYXQgZm9vNigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBiYXIoNy41KTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBmb283KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGJhcig3LjUpOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGZv
bzkoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQoNy41KTsKKyAgICAgICAg
fQorICAgICAgICBmbG9hdCBmb28xMCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
bG9hdCg3LjUpOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGZvbzEyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZsb2F0KDcpOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGZv
bzEzKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeCA9IDcuNTsKKyAgICAgICAgICAg
IHJldHVybiBmbG9hdCh4KTsKKyAgICAgICAgfQorICAgIGA7CisKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOworICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzIiLCBb
XSksIHRydWUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9n
cmFtLCAgImZvbzMiLCBbXSksIHRydWUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzQiLCBbXSksIHRydWUpOworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbzUiLCBbXSksIHRydWUpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzYi
LCBbXSksIDcuNSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vNyIsIFtdKSwgNy41KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxG
bG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10pLCA3LjUpOworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEwIiwgW10pLCA3LjUpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEy
IiwgW10pLCA3KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28xMyIsIFtdKSwgNy41KTsKKworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAg
ICAgYAorICAgICAgICAgICAgaW50IGJhcihpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBmb28oKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJhcig0Lik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAg
ICBpbnQgYmFyKGludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGZvbygpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYmFyKDQuZik7CisgICAgICAgICAgICB9CisgICAgICAgIGApOworCisg
ICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBpbnQgYmFyKGludCB4
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaW50IGZvbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
YmFyKDQuZik7CisgICAgICAgICAgICB9CisgICAgICAgIGApOworCisgICAgYXdhaXQgY2hlY2tG
YWlsKAorICAgICAgICBgCisgICAgICAgICAgICB1aW50IGJhcih1aW50IHgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpbnQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBiYXIoNC4pOworICAg
ICAgICAgICAgfQorICAgICAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAg
YAorICAgICAgICAgICAgdWludCBiYXIodWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGZvbygpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmFyKDQuZik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAg
ICB1aW50IGJhcih1aW50IHgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBiYXIoNC5mKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9
CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wtaW5kZXgtZ2V0dGVyLXNldHRlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWluZGV4LWdldHRlci1zZXR0ZXIt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1p
bmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQgQEAKKworUEFTUyBwb2ludGVySW5kZXhHZXR0ZXIgCitQQVNTIHBvaW50ZXJHZXR0ZXIgCisK
SW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbmRleC1nZXR0ZXItc2V0dGVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWluZGV4LWdldHRlci1zZXR0
ZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW5kZXgt
Z2V0dGVyLXNldHRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVu
YWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBo
YXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnBvaW50ZXJJbmRl
eEdldHRlciA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAK
KyAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGRldmljZSBpbnQqLCB1aW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiA1NDM7CisgICAgICAgICAgICB9CisgICAgICAg
IGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBpbnQg
b3BlcmF0b3JbXSh0aHJlYWQgaW50KiwgdWludCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gNTQzOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKworICAgIGF3YWl0
IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50IG9wZXJhdG9yW10odGhyZWFk
Z3JvdXAgaW50KiwgdWludCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
NTQzOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbCgK
KyAgICAgICAgYAorICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oY29uc3RhbnQgaW50KiwgdWlu
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gNTQzOworICAgICAgICAg
ICAgfQorICAgICAgICBgKTsKK30KKword2hsc2xUZXN0cy5wb2ludGVyR2V0dGVyID0gYXN5bmMg
KCkgPT4geworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50
IG9wZXJhdG9yLmZvbyhkZXZpY2UgaW50KikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gNTQzOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKyAgICBhd2FpdCBjaGVj
a0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBvcGVyYXRvci5mb28odGhyZWFkIGlu
dCopCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCk7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAg
ICAgICAgICBpbnQgb3BlcmF0b3IuZm9vKHRocmVhZGdyb3VwIGludCopCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7
CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBpbnQgb3BlcmF0
b3IuZm9vKGNvbnN0YW50IGludCopCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDU0MzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKKworcnVuVGVzdHMod2hs
c2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC1pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbnQtYml0LW1hdGgtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorCitQQVNTIGludEJpdEFuZCAKK1BBU1MgaW50Qml0
T3IgCitQQVNTIGludEJpdFhvciAKK1BBU1MgaW50Qml0Tm90IAorUEFTUyBpbnRMU2hpZnQgCitQ
QVNTIGludFJTaGlmdCAKK1BBU1MgaW50U2ltcGxlTWF0aCAKKwpJbmRleDogTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsLWludC1iaXQtbWF0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1pbnQtYml0LW1hdGguaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtaW50LWJpdC1tYXRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTAgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0
PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVz
dCBpbnQgYml0IG1hdGguPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307CisKK3dobHNsVGVzdHMuaW50
Qml0QW5kID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50
IGZvbyhpbnQgYSwgaW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhICYgYjsK
KyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDEpOworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDQyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03KV0p
LCAtNyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCAwKTsKK30KKword2hsc2xUZXN0
cy5pbnRCaXRPciA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAg
IGludCBmb28oaW50IGEsIGludCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSB8
IGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUludCg3KV0pLCA3KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTUzNSk7CisgICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KC0xKSwgbWFrZUlu
dCgtNyldKSwgLTEpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZUludCgwKSwgbWFrZUludCg4NTczMildKSwgODU3MzIpOworfQor
Cit3aGxzbFRlc3RzLmludEJpdFhvciA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0g
PSBgCisgICAgICAgIGludCBmb28oaW50IGEsIGludCBiKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYSBeIGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKSwgbWFrZUludCg3
KV0pLCA2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlSW50KDQyKV0pLCA2NTQ5Myk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KC0xKSwgbWFrZUludCgtNyldKSwgNik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4
NTczMik7Cit9CisKK3dobHNsVGVzdHMuaW50Qml0Tm90ID0gYXN5bmMgKCkgPT4KK3sKKyAgICBs
ZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgYSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIH5hOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSldKSwgLTIpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludCg2NTUzNSldKSwgLTY1NTM2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpXSksIDApOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgw
KV0pLCAtMSk7Cit9CisKK3dobHNsVGVzdHMuaW50TFNoaWZ0ID0gYXN5bmMgKCkgPT4KK3sKKyAg
ICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgYSwgdWludCBiKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYSA8PCBiOworICAgICAgICB9CisgICAgYDsKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMSksIG1ha2VVaW50KDcpXSksIDEyOCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVpbnQoMild
KSwgMjYyMTQwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMzIpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgw
KSwgbWFrZVVpbnQoMyldKSwgMCk7Cit9CisKK3dobHNsVGVzdHMuaW50UlNoaWZ0ID0gYXN5bmMg
KCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgYSwgdWlu
dCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA+PiBiOworICAgICAgICB9Cisg
ICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQoMSksIG1ha2VVaW50KDcpXSksIDApOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NTUzNSksIG1h
a2VVaW50KDIpXSksIDE2MzgzKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlVWludCg1KV0pLCAtMSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKK30KKword2hsc2xUZXN0cy5pbnRTaW1wbGVN
YXRoID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGlu
dCB5KSB7IHJldHVybiB4ICsgeTsgfSI7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDEyKTsK
KyAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4IC0geTsgfSI7
CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg1KSwgbWFrZUludCg3KV0p
LCAtMik7CisgICAgcHJvZ3JhbSA9ICJpbnQgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4geCAq
IHk7IH0iOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg3KSwgbWFrZUludCg1KV0pLCAzNSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDcpLCBtYWtl
SW50KC01KV0pLCAtMzUpOworfQorCitydW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2NyaXB0Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLW1ha2UtYXJyYXktcmVmLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC1tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgbWFrZUFy
cmF5UmVmRnJvbUFycmF5UmVmIAorUEFTUyBtYWtlQXJyYXlSZWZGcm9tTG9jYWwgCitQQVNTIG1h
a2VBcnJheVJlZkZyb21Qb2ludGVyIAorCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wt
bWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLW1ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAt
LT4KKzxodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNv
bnRlbnQ9ImxvbmciPgorPHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxl
PgorPHNjcmlwdCBzcmM9ImpzL3dobHNsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0
IHdobHNsVGVzdHMgPSB7fTsKKword2hsc2xUZXN0cy5tYWtlQXJyYXlSZWZGcm9tQXJyYXlSZWYg
PSBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAg
ICAgICBpbnQgYmFyKHRocmVhZCBpbnRbXSByZWYpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlZlswXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBiYXoo
dGhyZWFkIGludFtdIHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YmFyKEBwdHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGZvbygpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaW50IHggPSA0ODsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYmF6KEB4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMu
bWFrZUFycmF5UmVmRnJvbUxvY2FsID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9
IGAKKyAgICAgICAgaW50IGJhcih0aHJlYWQgaW50W10gcmVmKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gcmVmWzBdOworICAgICAgICB9CisgICAgICAgIGludCBmb28oKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgeCA9IDQ4OworICAgICAgICAgICAgcmV0dXJuIGJhcihAeCk7
CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQ4KTsKK30KKword2hsc2xUZXN0cy5tYWtlQXJyYXlS
ZWZGcm9tUG9pbnRlciA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAg
ICAgIGludCBiYXIodGhyZWFkIGludFtdIHJlZikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHJlZlswXTsKKyAgICAgICAgfQorICAgICAgICBpbnQgYmF6KHRocmVhZCBpbnQqIHB0cikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJhcihAcHRyKTsKKyAgICAgICAgfQorICAg
ICAgICBpbnQgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHggPSA0ODsKKyAgICAg
ICAgICAgIHJldHVybiBiYXooJngpOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0OCk7Cit9CisK
K3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9pbnRl
ci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAK
KworUEFTUyBwb2ludGVyVG9Qb2ludGVyIAorUEFTUyBwb2ludGVyVG9NZW1iZXIgCisKSW5kZXg6
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb2ludGVyLXNwZWMtdGVzdHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXBvaW50ZXItc3BlYy10
ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1
ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnBvaW50ZXJUb1BvaW50ZXIgPSBh
c3luYyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB0aHJlYWQgaW50KiBwID0g
Jng7CisgICAgICAgICAgICB0aHJlYWQgaW50KiogcHAgPSAmcDsKKyAgICAgICAgICAgIGludCp0
aHJlYWQqdGhyZWFkIHFxID0gcHA7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAg
ICAgICAgIHggPSA0MjsKKyAgICAgICAgICAgICpwID0gNzY7CisgICAgICAgICAgICByZXN1bHQg
Kz0geDsKKyAgICAgICAgICAgICoqcHAgPSAzOTsKKyAgICAgICAgICAgIHJlc3VsdCArPSB4Owor
ICAgICAgICAgICAgKipxcSA9IDgzOworICAgICAgICAgICAgcmVzdWx0ICs9IHg7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYDs7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNzYgKyAzOSArIDgz
KTsKK30KKword2hsc2xUZXN0cy5wb2ludGVyVG9NZW1iZXIgPSBhc3luYyAoKSA9PgoreworICAg
IGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZsb2F0MyB4OworICAgICAgICAgICAgICAgIHRo
cmVhZCBmbG9hdCogeSA9ICZ4WzFdOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKworICAg
IGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZsb2F0M3gzIHg7CisgICAgICAgICAgICAgICAg
dGhyZWFkIGZsb2F0MyogeSA9ICZ4WzFdOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30K
KworcnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL3dlYmdwdS93aGxzbC1wb3N0Zml4LXByZWZpeC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXBvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVm
aXgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKworUEFTUyBw
cmVmaXhQbHVzUGx1cyAKK1BBU1MgcHJlZml4UGx1c1BsdXNSZXN1bHQgCitQQVNTIHBvc3RmaXhQ
bHVzUGx1cyAKK1BBU1MgcG9zdGZpeFBsdXNQbHVzUmVzdWx0IAorUEFTUyBwcmVmaXhNaW51c01p
bnVzIAorUEFTUyBwcmVmaXhNaW51c01pbnVzUmVzdWx0IAorUEFTUyBwb3N0Zml4TWludXNNaW51
cyAKK1BBU1MgcG9zdGZpeE1pbnVzTWludXNSZXN1bHQgCitQQVNTIHBsdXNFcXVhbHMgCitQQVNT
IHBsdXNFcXVhbHNSZXN1bHQgCitQQVNTIG1pbnVzRXF1YWxzIAorUEFTUyBtaW51c0VxdWFsc1Jl
c3VsdCAKK1BBU1MgdGltZXNFcXVhbHMgCitQQVNTIHRpbWVzRXF1YWxzUmVzdWx0IAorCkluZGV4
OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXguaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXguaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXguaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KKzx0aXRsZT5UZXN0IHByZWZpeC9wb3N0Zml4LjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OworCit3aGxzbFRlc3RzLnByZWZpeFBsdXNQbHVzID0gYXN5bmMgKCkgPT4KK3sKKyAgICBs
ZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAg
ICAgICAgKyt4OworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBgOworICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludCg2NCldKSwgNjUpOworfQorCit3aGxzbFRlc3RzLnByZWZpeFBsdXNQbHVzUmVzdWx0ID0g
YXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQg
eCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICsreDsKKyAgICAgICAgfQorICAgIGA7
CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KDY0KV0pLCA2NSk7Cit9CisKK3dobHNsVGVzdHMucG9zdGZpeFBsdXNQbHVzID0g
YXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQg
eCkKKyAgICAgICAgeworICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgcmV0dXJuIHg7Cisg
ICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjUpOworfQorCit3aGxzbFRlc3RzLnBv
c3RmaXhQbHVzUGx1c1Jlc3VsdCA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBg
CisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB4
Kys7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2NCldKSwgNjQpOworfQorCit3aGxzbFRl
c3RzLnByZWZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0g
YAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICAtLXg7Cisg
ICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2
Myk7Cit9CisKK3dobHNsVGVzdHMucHJlZml4TWludXNNaW51c1Jlc3VsdCA9IGFzeW5jICgpID0+
Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiAtLXg7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCg2
NCldKSwgNjMpOworfQorCit3aGxzbFRlc3RzLnBvc3RmaXhNaW51c01pbnVzID0gYXN5bmMgKCkg
PT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAg
ICAgeworICAgICAgICAgICAgeC0tOworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0K
KyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCg2NCldKSwgNjMpOworfQorCit3aGxzbFRlc3RzLnBvc3RmaXhNaW51
c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAg
ICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHgtLTsKKyAg
ICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NCk7Cit9CisKK3dobHNsVGVzdHMucGx1
c0VxdWFscyA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIGlu
dCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHggKz0gNDI7CisgICAgICAgICAg
ICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1ICsgNDIp
OworfQorCit3aGxzbFRlc3RzLnBsdXNFcXVhbHNSZXN1bHQgPSBhc3luYyAoKSA9PgoreworICAg
IGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4geCArPSA0MjsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSld
KSwgMzg1ICsgNDIpOworfQorCit3aGxzbFRlc3RzLm1pbnVzRXF1YWxzID0gYXN5bmMgKCkgPT4g
eworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7
CisgICAgICAgICAgICB4IC09IDQyOworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0K
KyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAtIDQyKTsKK30KKword2hsc2xUZXN0cy5taW51
c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAg
ICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHggLT0gNDI7
CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4NSAtIDQyKTsKK30KKword2hs
c2xUZXN0cy50aW1lc0VxdWFscyA9IGFzeW5jICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAK
KyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgeCAqPSA0MjsK
KyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0p
LCAzODUgKiA0Mik7Cit9CisKK3dobHNsVGVzdHMudGltZXNFcXVhbHNSZXN1bHQgPSBhc3luYyAo
KSA9PiB7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB4ICo9IDQyOworICAgICAgICB9CisgICAgYDsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoMzg1KV0pLCAzODUgKiA0Mik7Cit9CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9z
Y3JpcHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373797</attachid>
            <date>2019-07-09 17:14:24 -0700</date>
            <delta_ts>2019-07-09 17:23:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>25662</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI4NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gSW1wb3J0IGFub3RoZXIgcm91bmQg
b2YgSlMgc3BlYyB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk5NjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wtYmFkLWFuZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViZ3B1L3dobHNsLWJhZC1hbmRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wtYmFkLWxpdGVyYWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViZ3B1L3dobHNsLWJhZC1saXRlcmFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wtZmxvYXQtbWF0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC1mbG9hdC1tYXRoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC1pbmRl
eC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsLWluZGV4LWdldHRlci1zZXR0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsLWludC1iaXQtbWF0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC1pbnQtYml0LW1hdGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLW1h
a2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJncHUvd2hsc2wtbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViZ3B1L3dobHNsLXBvaW50ZXItc3BlYy10ZXN0cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXgtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXguaHRtbDogQWRkZWQuCisK
IDIwMTktMDctMDkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZywgYWRkcmVzcyBUZXN0RXhwZWN0YXRpb25zIGxp
bnRlciB3YXJuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1hbmRlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1h
bmRlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsLWJhZC1hbmRlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBA
CisKK1BBU1MgaW5kZXhBbmRlckRvZXNudFJldHVyblBvaW50ZXIgCitQQVNTIGluZGV4QW5kZXJE
b2VzbnRUYWtlUmVmZXJlbmNlIAorUEFTUyBhbmRlckRvZXNudFJldHVyblBvaW50ZXIgCitQQVNT
IGFuZGVyRG9lc250VGFrZVJlZmVyZW5jZSAKK1BBU1MgYW5kZXJXaXRoQmFkSW5kZXggCitQQVNT
IGFuZGVyV2l0aE5vdGhpbmdXcm9uZyAKK1BBU1MgYW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFyZ3Vt
ZW50cyAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJhZC1hbmRlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iYWQtYW5kZXIuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYmFkLWFuZGVyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0i
bG9uZyI+Cis8dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgorPHNjcmlwdCBzcmM9
ImpzL3dobHNsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7
fTsKKword2hsc2xUZXN0cy5pbmRleEFuZGVyRG9lc250UmV0dXJuUG9pbnRlciA9IGFzeW5jICgp
ID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGludCBvcGVyYXRvciZbXSh0aHJlYWQgRm9vKiBmb28sIHVpbnQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvby0+eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
YCk7Cit9CisKK3dobHNsVGVzdHMuaW5kZXhBbmRlckRvZXNudFRha2VSZWZlcmVuY2UgPSBhc3lu
YyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAg
c3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXShGb28gZm9vLCB1aW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiAmZm9vLng7CisgICAgICAgICAgICB9CisgICAg
ICAgIGApOworfQorCit3aGxzbFRlc3RzLmFuZGVyRG9lc250UmV0dXJuUG9pbnRlciA9IGFzeW5j
ICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHN0
cnVjdCBGb28geworICAgICAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaW50IG9wZXJhdG9yJi5mb28odGhyZWFkIEZvbyogZm9vKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBmb28tPng7CisgICAgICAgICAgICB9CisgICAgICAgIGAp
OworfQorCit3aGxzbFRlc3RzLmFuZGVyRG9lc250VGFrZVJlZmVyZW5jZSA9IGFzeW5jICgpID0+
Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBzdHJ1Y3Qg
Rm9vIHsKKyAgICAgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oRm9vIGZvbykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gJmZvby54OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30K
Kword2hsc2xUZXN0cy5hbmRlcldpdGhCYWRJbmRleCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdh
aXQgY2hlY2tGYWlsKGBpbnQgZm9vKHRocmVhZCBpbnRbXSB4KSB7IHJldHVybiB4Wy0xXTsgfWAp
OworCisgICAgYXdhaXQgY2hlY2tGYWlsKGBpbnQgZm9vKHRocmVhZCBpbnRbXSB4KSB7IHJldHVy
biB4WzEuZl07IH1gKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgaW50IGZvbyh0aHJlYWQgaW50
W10geCwgaW50IHkpIHsgcmV0dXJuIHhbeV07IH1gKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChg
aW50IGZvbyh0aHJlYWQgaW50W10geCwgZmxvYXQgeSkgeyByZXR1cm4geFt5XTsgfWApOworfQor
Cit3aGxzbFRlc3RzLmFuZGVyV2l0aE5vdGhpbmdXcm9uZyA9IGFzeW5jICgpID0+Cit7CisgICAg
bGV0IHByb2dyYW0gPSBgCisgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgaW50IHg7
CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9v
KiBmb28pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAmZm9vLT54OworICAgICAgICB9
CisgICAgICAgIGludCBmb28oKQorICAgICAgICB7CisgICAgICAgICAgICBGb28geDsKKyAgICAg
ICAgICAgIHgueCA9IDEzOworICAgICAgICAgICAgcmV0dXJuIHguZm9vOworICAgICAgICB9Cisg
ICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAxMyk7Cit9CisKK3dobHNsVGVzdHMuYW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFy
Z3VtZW50cyA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAK
KyAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgICAgIHJldHVybiAmeDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAK
KyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAgIGludCB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9v
KiBmb28sIGludCBibGFoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAm
Zm9vLT54OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworcnVuVGVzdHMod2hsc2xU
ZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxz
bC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dl
YmdwdS93aGxzbC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC1iYWQtbGl0ZXJhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIGJhZEludExpdGVyYWxGb3JJbnQgCitQQVNT
IGJhZEludExpdGVyYWxGb3JGbG9hdCAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LWJhZC1saXRlcmFscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxz
bC1iYWQtbGl0ZXJhbHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wtYmFkLWxpdGVyYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAor
PCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2Vi
R1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHByZWZpeC9wb3N0
Zml4LjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLmJhZEludExpdGVyYWxG
b3JJbnQgPSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCggInZvaWQgZm9vKCkg
eyBpbnQgeCA9IDMwMDAwMDAwMDA7IH0iKTsKK30KKword2hsc2xUZXN0cy5iYWRJbnRMaXRlcmFs
Rm9yRmxvYXQgPSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgidm9pZCBmb28o
KSB7IGZsb2F0IHggPSA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOyB9Iik7
Cit9CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZmxvYXQtbWF0aC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWZsb2F0LW1hdGgtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1mbG9hdC1tYXRoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBmbG9hdE1hdGgg
CisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1mbG9hdC1tYXRoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWZsb2F0LW1hdGguaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZmxvYXQtbWF0aC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOTkgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9u
ZyI+Cis8dGl0bGU+VGVzdCBwcmVmaXgvcG9zdGZpeC48L3RpdGxlPgorPHNjcmlwdCBzcmM9Impz
L3dobHNsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7fTsK
Kword2hsc2xUZXN0cy5mbG9hdE1hdGggPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0g
PSBgCisgICAgICAgIGJvb2wgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDQy
LjUgPT0gNDIuNTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBiYXIoZmxvYXQgeCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9v
NigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiYXIoNy41KTsKKyAgICAgICAgfQor
ICAgICAgICBmbG9hdCBmb285KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZsb2F0
KDcuNSk7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9vMTIoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmxvYXQoNyk7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9vMTMo
KQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB4ID0gNy41OworICAgICAgICAgICAgcmV0
dXJuIGZsb2F0KHgpOworICAgICAgICB9CisgICAgYDsKKworICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsRmxvYXRGdW5jdGlvbihwcm9ncmFtLCAiZm9vNiIsIFtdKSwg
Ny41KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0s
ICJmb285IiwgW10pLCA3LjUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEZsb2F0RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10pLCA3KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxGbG9hdEZ1bmN0aW9uKHByb2dyYW0sICJmb28xMyIsIFtdKSwgNy41KTsKKworICAgIGF3
YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50IGJhcihpbnQgeCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGludCBmb28oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJhcig0
LjApOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbCgK
KyAgICAgICAgYAorICAgICAgICAgICAgaW50IGJhcihpbnQgeCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBm
b28oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJhcig0LjBmKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAg
ICAgICAgICAgIHVpbnQgYmFyKHVpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBmb28oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGJhcig0LjApOworICAgICAgICAgICAgfQorICAgICAg
ICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdWlu
dCBiYXIodWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGZvbygpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgYmFyKDQuMGYpOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKwor
cnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC1pbmRleC1nZXR0ZXItc2V0dGVyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW5kZXgtZ2V0dGVyLXNldHRlci1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWluZGV4
LWdldHRlci1zZXR0ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIHBvaW50ZXJJbmRleEdldHRlciAKK1BBU1MgcG9pbnRlckdldHRlciAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWluZGV4LWdldHRlci1zZXR0ZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW5kZXgtZ2V0dGVyLXNldHRlci5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbmRleC1nZXR0
ZXItc2V0dGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxl
ZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5l
c3MuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307CisKK3dobHNsVGVzdHMucG9pbnRlckluZGV4R2V0
dGVyID0gYXN5bmMgKCkgPT4geworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAg
ICAgICAgICAgaW50IG9wZXJhdG9yW10oZGV2aWNlIGludCosIHVpbnQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7
CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBvcGVy
YXRvcltdKHRocmVhZCBpbnQqLCB1aW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7CisgICAgICAgICAgICB9CisgICAgICAgIGApOworCisgICAgYXdhaXQgY2hl
Y2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWRncm91
cCBpbnQqLCB1aW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiA1NDM7
CisgICAgICAgICAgICB9CisgICAgICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAg
ICAgICBgCisgICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShjb25zdGFudCBpbnQqLCB1aW50KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiA1NDM7CisgICAgICAgICAgICB9
CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnBvaW50ZXJHZXR0ZXIgPSBhc3luYyAoKSA9
PiB7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICBpbnQgb3Bl
cmF0b3IuZm9vKGRldmljZSBpbnQqKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiA1NDM7CisgICAgICAgICAgICB9CisgICAgICAgIGApOworICAgIGF3YWl0IGNoZWNrRmFp
bCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50IG9wZXJhdG9yLmZvbyh0aHJlYWQgaW50KikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gNTQzOworICAgICAgICAgICAg
fQorICAgICAgICBgKTsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAg
ICAgIGludCBvcGVyYXRvci5mb28odGhyZWFkZ3JvdXAgaW50KikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gNTQzOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKKyAg
ICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBvcGVyYXRvci5m
b28oY29uc3RhbnQgaW50KikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
NTQzOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworCitydW5UZXN0cyh3aGxzbFRl
c3RzKTsKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LWludC1iaXQtbWF0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLWludC1iaXQtbWF0aC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1iaXQtbWF0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgaW50Qml0QW5kIAorUEFTUyBpbnRCaXRPciAK
K1BBU1MgaW50Qml0WG9yIAorUEFTUyBpbnRCaXROb3QgCitQQVNTIGludExTaGlmdCAKK1BBU1Mg
aW50UlNoaWZ0IAorUEFTUyBpbnRTaW1wbGVNYXRoIAorCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wtaW50LWJpdC1tYXRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLWludC1iaXQtbWF0aC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1pbnQtYml0LW1hdGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExMCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmlt
ZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRm
LTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IGlu
dCBiaXQgbWF0aC48L3RpdGxlPgorPHNjcmlwdCBzcmM9ImpzL3dobHNsLXRlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7fTsKKword2hsc2xUZXN0cy5pbnRCaXRB
bmQgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9v
KGludCBhLCBpbnQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgJiBiOworICAg
ICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMSksIG1ha2VJbnQoNyldKSwgMSk7CisgICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1
NTM1KSwgbWFrZUludCg0MildKSwgNDIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbElu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VJbnQoLTcpXSksIC03
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDApOworfQorCit3aGxzbFRlc3RzLmlu
dEJpdE9yID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50
IGZvbyhpbnQgYSwgaW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIHwgYjsK
KyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSksIDcpOworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NTM1KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEpLCBtYWtlSW50KC03
KV0pLCAtMSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KDApLCBtYWtlSW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3do
bHNsVGVzdHMuaW50Qml0WG9yID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAK
KyAgICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhIF4gYjsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDEpLCBtYWtlSW50KDcpXSks
IDYpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUludCg2NTUzNSksIG1ha2VJbnQoNDIpXSksIDY1NDkzKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoLTEp
LCBtYWtlSW50KC03KV0pLCA2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMCksIG1ha2VJbnQoODU3MzIpXSksIDg1NzMy
KTsKK30KKword2hsc2xUZXN0cy5pbnRCaXROb3QgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBw
cm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCBhKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gfmE7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgxKV0pLCAtMik7CisgICAg
YXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KDY1NTM1KV0pLCAtNjU1MzYpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSldKSwgMCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApXSks
IC0xKTsKK30KKword2hsc2xUZXN0cy5pbnRMU2hpZnQgPSBhc3luYyAoKSA9PgoreworICAgIGxl
dCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhIDw8IGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgx
KSwgbWFrZVVpbnQoNyldKSwgMTI4KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjU1MzUpLCBtYWtlVWludCgyKV0pLCAy
NjIxNDApOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0zMik7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDApLCBt
YWtlVWludCgzKV0pLCAwKTsKK30KKword2hsc2xUZXN0cy5pbnRSU2hpZnQgPSBhc3luYyAoKSA9
PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCBhLCB1aW50IGIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID4+IGI7CisgICAgICAgIH0KKyAgICBg
OworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZUludCgxKSwgbWFrZVVpbnQoNyldKSwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY1NTM1KSwgbWFrZVVp
bnQoMildKSwgMTYzODMpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludCgtMSksIG1ha2VVaW50KDUpXSksIC0xKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJ
bnQoMCksIG1ha2VVaW50KDMpXSksIDApOworfQorCit3aGxzbFRlc3RzLmludFNpbXBsZU1hdGgg
PSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkp
IHsgcmV0dXJuIHggKyB5OyB9IjsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMTIpOworICAg
IHByb2dyYW0gPSAiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggLSB5OyB9IjsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNyksIG1ha2VJbnQoNSldKSwgMik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
SW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDUpLCBtYWtlSW50KDcpXSksIC0y
KTsKKyAgICBwcm9ncmFtID0gImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICogeTsg
fSI7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDcpLCBtYWtlSW50KDUpXSksIDM1KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNyksIG1ha2VJbnQo
LTUpXSksIC0zNSk7Cit9CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtbWFrZS1hcnJheS1yZWYtc3BlYy10
ZXN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LW1ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1tYWtlLWFycmF5LXJlZi1zcGVjLXRlc3RzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKworUEFTUyBtYWtlQXJyYXlS
ZWZGcm9tQXJyYXlSZWYgCitQQVNTIG1ha2VBcnJheVJlZkZyb21Mb2NhbCAKK1BBU1MgbWFrZUFy
cmF5UmVmRnJvbVBvaW50ZXIgCisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1tYWtl
LWFycmF5LXJlZi1zcGVjLXRlc3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLW1ha2UtYXJyYXktcmVmLXNwZWMtdGVzdHMuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtbWFrZS1hcnJheS1yZWYtc3BlYy10ZXN0cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVu
dD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hs
c2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZyb21BcnJheVJlZiA9IGFz
eW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAg
IGludCBiYXIodGhyZWFkIGludFtdIHJlZikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVmWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGJheih0aHJl
YWQgaW50W10gcHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBiYXIo
QHB0cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpbnQgeCA9IDQ4OworICAgICAgICAgICAgICAgIHJldHVybiBi
YXooQHgpOworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKword2hsc2xUZXN0cy5tYWtl
QXJyYXlSZWZGcm9tTG9jYWwgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAor
ICAgICAgICBpbnQgYmFyKHRocmVhZCBpbnRbXSByZWYpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiByZWZbMF07CisgICAgICAgIH0KKyAgICAgICAgaW50IGZvbygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGludCB4ID0gNDg7CisgICAgICAgICAgICByZXR1cm4gYmFyKEB4KTsKKyAg
ICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFtdKSwgNDgpOworfQorCit3aGxzbFRlc3RzLm1ha2VBcnJheVJlZkZy
b21Qb2ludGVyID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAg
aW50IGJhcih0aHJlYWQgaW50W10gcmVmKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
cmVmWzBdOworICAgICAgICB9CisgICAgICAgIGludCBiYXoodGhyZWFkIGludCogcHRyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYmFyKEBwdHIpOworICAgICAgICB9CisgICAgICAg
IGludCBmb28oKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeCA9IDQ4OworICAgICAgICAg
ICAgcmV0dXJuIGJheigmeCk7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDQ4KTsKK30KKworcnVu
VGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1wb2ludGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb2ludGVyLXNwZWMtdGVzdHMtZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb2ludGVyLXNw
ZWMtdGVzdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIHBvaW50ZXJUb1BvaW50ZXIgCitQQVNTIHBvaW50ZXJUb01lbWJlciAKKwpJbmRleDogTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXBvaW50ZXItc3BlYy10ZXN0cy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb2ludGVyLXNwZWMtdGVzdHMuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9pbnRlci1zcGVjLXRlc3Rz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0g
LS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBj
b250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25z
dCB3aGxzbFRlc3RzID0ge307CisKK3dobHNsVGVzdHMucG9pbnRlclRvUG9pbnRlciA9IGFzeW5j
ICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIGludCBmb28oKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIHRocmVhZCBpbnQqIHAgPSAmeDsK
KyAgICAgICAgICAgIHRocmVhZCBpbnQqKiBwcCA9ICZwOworICAgICAgICAgICAgaW50KnRocmVh
ZCp0aHJlYWQgcXEgPSBwcDsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICAg
ICAgeCA9IDQyOworICAgICAgICAgICAgKnAgPSA3NjsKKyAgICAgICAgICAgIHJlc3VsdCArPSB4
OworICAgICAgICAgICAgKipwcCA9IDM5OworICAgICAgICAgICAgcmVzdWx0ICs9IHg7CisgICAg
ICAgICAgICAqKnFxID0gODM7CisgICAgICAgICAgICByZXN1bHQgKz0geDsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgOzsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA3NiArIDM5ICsgODMpOwor
fQorCit3aGxzbFRlc3RzLnBvaW50ZXJUb01lbWJlciA9IGFzeW5jICgpID0+Cit7CisgICAgYXdh
aXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICB2b2lkIGZvbygpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZmxvYXQzIHg7CisgICAgICAgICAgICAgICAgdGhyZWFk
IGZsb2F0KiB5ID0gJnhbMV07CisgICAgICAgICAgICB9CisgICAgICAgIGApOworCisgICAgYXdh
aXQgY2hlY2tGYWlsKAorICAgICAgICBgCisgICAgICAgICAgICB2b2lkIGZvbygpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZmxvYXQzeDMgeDsKKyAgICAgICAgICAgICAgICB0aHJl
YWQgZmxvYXQzKiB5ID0gJnhbMV07CisgICAgICAgICAgICB9CisgICAgICAgIGApOworfQorCity
dW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXBvc3RmaXgtcHJlZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtcG9zdGZpeC1wcmVmaXgtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb3N0Zml4LXByZWZpeC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorCitQQVNTIHByZWZp
eFBsdXNQbHVzIAorUEFTUyBwcmVmaXhQbHVzUGx1c1Jlc3VsdCAKK1BBU1MgcG9zdGZpeFBsdXNQ
bHVzIAorUEFTUyBwb3N0Zml4UGx1c1BsdXNSZXN1bHQgCitQQVNTIHByZWZpeE1pbnVzTWludXMg
CitQQVNTIHByZWZpeE1pbnVzTWludXNSZXN1bHQgCitQQVNTIHBvc3RmaXhNaW51c01pbnVzIAor
UEFTUyBwb3N0Zml4TWludXNNaW51c1Jlc3VsdCAKK1BBU1MgcGx1c0VxdWFscyAKK1BBU1MgcGx1
c0VxdWFsc1Jlc3VsdCAKK1BBU1MgbWludXNFcXVhbHMgCitQQVNTIG1pbnVzRXF1YWxzUmVzdWx0
IAorUEFTUyB0aW1lc0VxdWFscyAKK1BBU1MgdGltZXNFcXVhbHNSZXN1bHQgCisKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb3N0Zml4LXByZWZpeC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb3N0Zml4LXByZWZpeC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1wb3N0Zml4LXByZWZpeC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcyIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxodG1s
PgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9Imxv
bmciPgorPHRpdGxlPlRlc3QgcHJlZml4L3Bvc3RmaXguPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJq
cy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307
CisKK3dobHNsVGVzdHMucHJlZml4UGx1c1BsdXMgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBw
cm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAg
ICArK3g7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KDY0KV0pLCA2NSk7Cit9CisKK3dobHNsVGVzdHMucHJlZml4UGx1c1BsdXNSZXN1bHQgPSBhc3lu
YyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKyt4OworICAgICAgICB9CisgICAgYDsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQoNjQpXSksIDY1KTsKK30KKword2hsc2xUZXN0cy5wb3N0Zml4UGx1c1BsdXMgPSBhc3lu
YyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQor
ICAgICAgICB7CisgICAgICAgICAgICB4Kys7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAg
ICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NSk7Cit9CisKK3dobHNsVGVzdHMucG9zdGZp
eFBsdXNQbHVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAg
ICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHgrKzsK
KyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0pLCA2NCk7Cit9CisKK3dobHNsVGVzdHMu
cHJlZml4TWludXNNaW51cyA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0IHByb2dyYW0gPSBgCisg
ICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC0teDsKKyAgICAg
ICAgICAgIHJldHVybiB4OworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDYzKTsK
K30KKword2hsc2xUZXN0cy5wcmVmaXhNaW51c01pbnVzUmVzdWx0ID0gYXN5bmMgKCkgPT4KK3sK
KyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIC0teDsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDY0KV0p
LCA2Myk7Cit9CisKK3dobHNsVGVzdHMucG9zdGZpeE1pbnVzTWludXMgPSBhc3luYyAoKSA9Pgor
eworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7
CisgICAgICAgICAgICB4LS07CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAg
IGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDY0KV0pLCA2Myk7Cit9CisKK3dobHNsVGVzdHMucG9zdGZpeE1pbnVzTWlu
dXNSZXN1bHQgPSBhc3luYyAoKSA9PgoreworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBp
bnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geC0tOworICAgICAg
ICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VJbnQoNjQpXSksIDY0KTsKK30KKword2hsc2xUZXN0cy5wbHVzRXF1
YWxzID0gYXN5bmMgKCkgPT4KK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZv
byhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgeCArPSA0MjsKKyAgICAgICAgICAgIHJl
dHVybiB4OworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJ
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAzODUgKyA0Mik7Cit9
CisKK3dobHNsVGVzdHMucGx1c0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+Cit7CisgICAgbGV0
IHByb2dyYW0gPSBgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiB4ICs9IDQyOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQoMzg1KV0pLCAz
ODUgKyA0Mik7Cit9CisKK3dobHNsVGVzdHMubWludXNFcXVhbHMgPSBhc3luYyAoKSA9PiB7Cisg
ICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHggLT0gNDI7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAg
IGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOworfQorCit3aGxzbFRlc3RzLm1pbnVzRXF1
YWxzUmVzdWx0ID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBp
bnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geCAtPSA0MjsKKyAg
ICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KDM4NSldKSwgMzg1IC0gNDIpOworfQorCit3aGxzbFRl
c3RzLnRpbWVzRXF1YWxzID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAg
ICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICB4ICo9IDQyOworICAg
ICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludCgzODUpXSksIDM4
NSAqIDQyKTsKK30KKword2hsc2xUZXN0cy50aW1lc0VxdWFsc1Jlc3VsdCA9IGFzeW5jICgpID0+
IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHggKj0gNDI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dCgzODUpXSksIDM4NSAqIDQyKTsKK30KKworcnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3Njcmlw
dD4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="389579"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>