<?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>199604</bug_id>
          
          <creation_ts>2019-07-08 18:39:39 -0700</creation_ts>
          <short_desc>[WHLSL] Import 23 new JS reference spec tests</short_desc>
          <delta_ts>2019-07-08 22:34:29 -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>1551088</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 18:39:39 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551091</commentid>
    <comment_count>1</comment_count>
      <attachid>373689</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 18:48:12 -0700</bug_when>
    <thetext>Created attachment 373689
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551097</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 19:01:02 -0700</bug_when>
    <thetext>I broke some stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551100</commentid>
    <comment_count>3</comment_count>
      <attachid>373689</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 19:12:04 -0700</bug_when>
    <thetext>Comment on attachment 373689
patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:51
&gt; -        Visitor::visit(functionDefinition);
&gt; +        checkErrorAndVisit(functionDefinition);

This should have stayed Visitor::visit

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:61
&gt; -        Visitor::visit(callExpression.function());
&gt; +        checkErrorAndVisit(callExpression);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551101</commentid>
    <comment_count>4</comment_count>
      <attachid>373692</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 19:14:32 -0700</bug_when>
    <thetext>Created attachment 373692
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551115</commentid>
    <comment_count>5</comment_count>
      <attachid>373694</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 19:31:28 -0700</bug_when>
    <thetext>Created attachment 373694
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551117</commentid>
    <comment_count>6</comment_count>
      <attachid>373695</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-08 19:38:00 -0700</bug_when>
    <thetext>Created attachment 373695
patch for landing

fix duplicate JS function errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551151</commentid>
    <comment_count>7</comment_count>
      <attachid>373695</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 22:32:33 -0700</bug_when>
    <thetext>Comment on attachment 373695
patch for landing

Clearing flags on attachment: 373695

Committed r247254: &lt;https://trac.webkit.org/changeset/247254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551152</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 22:32:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551153</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-08 22:34:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/52816061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373689</attachid>
            <date>2019-07-08 18:48:12 -0700</date>
            <delta_ts>2019-07-08 19:14:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26892</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA4ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3
IEpTIHJlZmVyZW5jZSBzcGVjIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTk2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcG9ydHMgYSBidW5jaCBvZiBKUyByZWZlcmVu
Y2Ugc3BlYyB0ZXN0cyBvbiBvdXIgd2F5IHRvCisgICAgICAgIGNvbXBsZXRpbmcgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5NQorICAgICAgICAKKyAgICAgICAg
SXQgYWxzbyBmaXhlcyB0aGUgcmVjdXJzaW9uIGNoZWNrZXIgcGhhc2UuIFRoYXQgcGhhc2UgaGFk
IHR3byBidWdzOgorICAgICAgICAxLiBXZSdkIGFzc2VydCBhZnRlciB2aXNpdGluZyB0aGUgZnVu
Y3Rpb24gZGVjbGFyYXRpb24gdGhhdCBpdCB3YXMKKyAgICAgICAgc3RpbGwgaW4gdGhlIHNldC4g
SG93ZXZlciwgaXQgd2lsbCBub3QgYmUgaW4gdGhlIHNldCB3aGVuIHdlIGFjdHVhbGx5CisgICAg
ICAgIGRldGVjdCByZWN1cnNpb24uCisgICAgICAgIDIuIFdlIHdvdWxkIG5vdCB2aXNpdCB0aGUg
YXJndW1lbnRzIHRvIGEgY2FsbCwgc28gaWYgdGhleSBjb250YWluZWQgb3RoZXIKKyAgICAgICAg
Y2FsbHMgd2hpY2ggd2VyZSByZWN1cnNpdmUsIHdlIHdvdWxkIG5vdCBkZXRlY3Qgc3VjaCByZWN1
cnNpdmUgY2FsbHMuCisKKyAgICAgICAgVGVzdHM6IHdlYmdwdS93aGxzbC1pbnQtbGl0ZXJhbC1j
b21wYXJlLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMuaHRt
bAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAorICAgICAg
ICAgICAgICAgd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOgorCiAyMDE5LTA3LTA4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBEb2N1bWVu
dDo6cG9zdFRhc2soKSBzYWZlIHRvIGNhbGwgZnJvbSBhIGJhY2tncm91bmQgdGhyZWFkCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDI0NzIzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bik7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24pOworICAg
ICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHN1
Y2Nlc3MgPSBtX3Zpc2l0aW5nU2V0LnJlbW92ZSgmZnVuY3Rpb25EZWZpbml0aW9uKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKQEAgLTU2LDcgKzU4LDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Np
b24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lv
bi5mdW5jdGlvbigpKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxFeHByZXNzaW9u
KTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkp
OwogICAgIH0KIAogICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBtX3Zpc2l0
aW5nU2V0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3MjMwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDctMDggIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMIEltcG9ydCAyMyBuZXcg
SlMgcmVmZXJlbmNlIHNwZWMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5OTYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgc29tZSBzdHVmZiBkb3duIGludG8gd2hsc2wtdGVz
dC1oYXJuZXNzIHdoaWNoIGFyZSBuZWVkZWQgYnkKKyAgICAgICAgYWxsIHRlc3RzLiBUaGlzIGFs
c28gYWRkcyBhIG5ldyBjaGVja0ZhaWwgdGhhdCBlbnN1cmVzIHRoZSBwcm9ncmFtIG5ldmVyCisg
ICAgICAgIHJ1bnMgKGUuZywgaXQgaGFzIGEgY29tcGlsZSBlcnJvcikuCisKKyAgICAgICAgKiB3
ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzOgorICAgICAgICAoYXN5bmMuY2hlY2tGYWls
KToKKyAgICAgICAgKGNvbnN0LndlYkdQVVByb21pc2VUZXN0KToKKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wtYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3do
bHNsLWJpdHdpc2UtYm9vbC1vcHMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtaW50LWxp
dGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC1pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxz
bC1zaW1wbGUtdGVzdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wtc2ltcGxlLXRlc3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC10eXBl
LW1pc21hdGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLXR5
cGUtbWlzbWF0Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLXVpbnQtYml0
d2lzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC11aW50LWJp
dHdpc2UuaHRtbDogQWRkZWQuCisKIDIwMTktMDctMDggIENoYXJsaWUgVHVybmVyICA8Y3R1cm5l
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNvbWUgbWVkaWEgZnJhZ21lbnQgdGVzdHMg
YXJlIGZsYWt5CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9w
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJp
dHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDcyMzApCisrKyBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAKLVBBU1MgQm9vbCBiaXQgYW5kIAotUEFTUyBCb29sIGJp
dCBvciAKLVBBU1MgQm9vbCBiaXQgb3IgCi1QQVNTIEJvb2wgYml0IG5vdCAKK1BBU1MgYm9vbEJp
dEFuZCAKK1BBU1MgYm9vbEJpdE9yIAorUEFTUyBib29sQml0WG9yIAorUEFTUyBib29sQml0Tm90
IAogCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wtb3Bz
Lmh0bWwJKHJldmlzaW9uIDI0NzIzMCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3
aXNlLWJvb2wtb3BzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgY29uc3Qg
ZXBzaWxvbiA9IDAuMDAwMTsKIAogY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwogCi13aGxzbFRlc3Rz
LmJvb2xCaXRBbmQgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRBbmQgPSBhc3luYyAoKSA9
PiB7CiAgICAgY29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wg
YikKICAgICAgICAgewpAQCAtMTksMzUgKzE5LDI4IEBAIHdobHNsVGVzdHMuYm9vbEJpdEFuZCA9
ICgpID0+IHsKICAgICAgICAgfQogICAgIGA7CiAKLSAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3lu
YyAoKSA9PiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VC
b29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBh
d2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1h
a2VCb29sKGZhbHNlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBm
YWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNl
KV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhw
ZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAg
ICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAg
ICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgYW5kIik7
CisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3Vy
Y2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4i
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0p
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtl
Qm9vbChmYWxzZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVz
dCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxl
dCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9v
bChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsKIAot
d2hsc2xUZXN0cy5ib29sQml0T3IgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRPciA9IGFz
eW5jICgpID0+IHsKICAgICBjb25zdCBzb3VyY2UgPSBgCiAgICAgICAgIGJvb2wgZm9vKGJvb2wg
YSwgYm9vbCBiKQogICAgICAgICB7CkBAIC01NSwzNSArNDgsMjggQEAgd2hsc2xUZXN0cy5ib29s
Qml0T3IgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlzZVRl
c3QoYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIs
IFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVz
dWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFs
c2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9v
bChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwg
IlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOwot
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikp
Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJCb29sIGJpdCBv
ciIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFs
dWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxz
ZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5l
ZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwg
bWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAi
VGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtl
Qm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CiB9Owog
Ci13aGxzbFRlc3RzLmJvb2xCaXRYb3IgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRYb3Ig
PSBhc3luYyAoKSA9PiB7CiAgICAgY29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZvbyhi
b29sIGEsIGJvb2wgYikKICAgICAgICAgewpAQCAtOTEsMzUgKzc3LDI4IEBAIHdobHNsVGVzdHMu
Ym9vbEJpdFhvciA9ICgpID0+IHsKICAgICAgICAgfQogICAgIGA7CiAKLSAgICB3ZWJHUFVQcm9t
aXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAi
Zm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFs
dWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJv
b2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBt
YWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
dHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVl
KV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCBy
ZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRF
cnJvcikpCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJCb29s
IGJpdCBvciIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwor
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVj
dGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
dHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgewor
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAg
fQogfTsKIAotd2hsc2xUZXN0cy5ib29sQml0Tm90ID0gKCkgPT4geword2hsc2xUZXN0cy5ib29s
Qml0Tm90ID0gYXN5bmMgKCkgPT4gewogICAgIGNvbnN0IHNvdXJjZSA9IGAKICAgICAgICAgYm9v
bCBmb28oYm9vbCBhKQogICAgICAgICB7CkBAIC0xMjcsNDkgKzEwNiwxNyBAQCB3aGxzbFRlc3Rz
LmJvb2xCaXROb3QgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJv
bWlzZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwg
ImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSk7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVk
IGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKGUpIHsK
LSAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkK
LSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSwgIkJvb2wgYml0IG5v
dCIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQor
CisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3Vy
Y2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CiB9Owog
Ci1mdW5jdGlvbiBydW5UZXN0cyhvYmopIHsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsICgpID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgbmFt
ZSBpbiBvYmopIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKQot
ICAgICAgICAgICAgICAgICAgICBvYmpbbmFtZV0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KIHJ1blRlc3RzKHdobHNsVGVz
dHMpOwotCi1jb25zdCB3ZWJHUFVQcm9taXNlVGVzdCA9ICh0ZXN0RnVuYywgbXNnKSA9PiB7Ci0g
ICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsgCi0gICAgICAgIHJldHVybiB0ZXN0RnVuYygp
LmNhdGNoKGUgPT4gewotICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0
ZWRFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9KTsKLSAgICB9LCBtc2cp
OwotfQogPC9zY3JpcHQ+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wt
aW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyB0d29JbnRM
aXRlcmFscyAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNv
bXBhcmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW50LWxp
dGVyYWwtY29tcGFyZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50
YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRoZSBX
SExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307CisKK3do
bHNsVGVzdHMudHdvSW50TGl0ZXJhbHMgPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0g
PSBgCisgICAgICAgIGJvb2wgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDQy
ID09IDQyOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7Cit9CisKK3J1blRlc3RzKHdo
bHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKworUEFTUyBzaW1wbGVVbnJlYWNoYWJsZUNvZGUg
CitQQVNTIHNpbXBsZU5vUmV0dXJuIAorUEFTUyBzaW1wbGVSZWN1cnNpdmVTdHJ1Y3QgCitQQVNT
IHNpbXBsZVJlY3Vyc2lvbiAKK1BBU1Mgc2ltcGxlUmVjdXJzaW9uMiAKKwpJbmRleDogTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3dlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRs
ZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJqcy93
aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1m
dW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307CisK
K3dobHNsVGVzdHMuc2ltcGxlVW5yZWFjaGFibGVDb2RlID0gYXN5bmMgKCkgPT4geworICAgIGF3
YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBpbnQgeDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMuc2ltcGxlTm9SZXR1
cm4gPSBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgY2hlY2tGYWlsKCJpbnQgZm9vKCkgeyB9Iik7
Cit9CisKK3dobHNsVGVzdHMuc2ltcGxlUmVjdXJzaXZlU3RydWN0ID0gYXN5bmMgKCkgPT4gewor
ICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgc3RydWN0IEZvbyB7
CisgICAgICAgICAgICAgICAgRm9vIGZvbzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9
CisKK3dobHNsVGVzdHMuc2ltcGxlUmVjdXJzaW9uID0gYXN5bmMgKCkgPT4geworICAgIGF3YWl0
IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oaW50IHgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9vKHgpOworICAgICAgICAgICAgfQorICAgICAg
ICBgKTsKK30KKword2hsc2xUZXN0cy5zaW1wbGVSZWN1cnNpb24yID0gYXN5bmMgKCkgPT4gewor
ICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50IGJhcihpbnQg
eCkgeworICAgICAgICAgICAgICAgIGZvbyh4KTsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZvbyhiYXIoeCkpOworICAgICAgICAgICAgfQorICAgICAgICBg
KTsKK30KKworcnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlz
bWF0Y2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNT
IHR5cGVNaXNtYXRjaFJldHVybiAKK1BBU1MgdHlwZU1pc21hdGNoVmFyaWFibGVEZWNsIAorUEFT
UyB0eXBlTWlzbWF0Y2hBc3NpZ25tZW50IAorUEFTUyB0eXBlTWlzbWF0Y2hSZXR1cm5QYXJhbSAK
KwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+
Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250
ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2NvbnN0
IHdobHNsVGVzdHMgPSB7fTsKKword2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hSZXR1cm4gPSBhc3lu
YyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAg
aW50IGZvbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDEwLjU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFZh
cmlhYmxlRGVjbCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAgICAg
ICBgCisgICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaW50IHkgPSB4OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKword2hs
c2xUZXN0cy50eXBlTWlzbWF0Y2hBc3NpZ25tZW50ID0gYXN5bmMgKCkgPT4KK3sKKyAgICBhd2Fp
dCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHZvaWQgZm9vKHVpbnQgeCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgeTsKKyAgICAgICAgICAgICAgICB5ID0g
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMudHlwZU1pc21h
dGNoUmV0dXJuUGFyYW0gPSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAg
ICAgICAgYAorICAgICAgICAgICAgaW50IGZvbyh1aW50IHgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisgICAgICAgIGApOworfQorCity
dW5UZXN0cyh3aGxzbFRlc3RzKTsKKworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLWV4cGVjdGVkLnR4dAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKworUEFTUyB1aW50Qml0QW5k
IAorUEFTUyB1aW50Qml0T3IgCitQQVNTIHVpbnRCaXRYb3IgCitQQVNTIHVpbnRCaXROb3QgCitQ
QVNTIHVpbnRMU2hpZnQgCitQQVNTIHVpbnRSU2hpZnQgCitQQVNTIHVpbnRTaW1wbGVNYXRoIAor
CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC11aW50LWJpdHdpc2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50
PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KKzxz
Y3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citj
b25zdCB3aGxzbFRlc3RzID0ge307CisKK3dobHNsVGVzdHMudWludEJpdEFuZCA9IGFzeW5jICgp
ID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBhLCB1aW50
IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhICYgYjsKKyAgICAgICAgfQorICAg
IGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDEpOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwg
bWFrZVVpbnQoNDIpXSksIDQyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwgbWFr
ZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNDI5NDk2NzI4OSk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCks
IG1ha2VVaW50KDg1NzMyKV0pLCAwKTsKK30KKword2hsc2xUZXN0cy51aW50Qml0T3IgPSBhc3lu
YyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSwg
dWludCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSB8IGI7CisgICAgICAgIH0K
KyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCA3KTsKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUz
NSksIG1ha2VVaW50KDQyKV0pLCA2NTUzNSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0g
MSksIG1ha2VVaW50KE1hdGgucG93KDIsIDMyKSAgLSA3KV0pLCA0Mjk0OTY3Mjk1KTsKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
VWludCgwKSwgbWFrZVVpbnQoODU3MzIpXSksIDg1NzMyKTsKK30KKword2hsc2xUZXN0cy51aW50
Qml0WG9yID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50
IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgXiBi
OworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNik7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0MildKSwgNjU0OTMpOworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRoLnBvdygyLCAzMikgLSA3KV0pLCA2KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgwKSwgbWFrZVVpbnQoODU3MzIpXSksIDg1NzMyKTsKK30KKword2hsc2xUZXN0cy51
aW50Qml0Tm90ID0gYXN5bmMgKCkgPT4geyAKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAg
dWludCBmb28odWludCBhKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gfmE7CisgICAg
ICAgIH0KKyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEpXSksIDQyOTQ5NjcyOTQpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KV0pLCA0Mjk0OTAxNzYwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKV0pLCAw
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgwKV0pLCA0Mjk0OTY3Mjk1KTsKK30KKword2hsc2xUZXN0cy51aW50TFNo
aWZ0ID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZv
byh1aW50IGEsIHVpbnQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPDwgYjsK
KyAgICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDEyOCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCgyKV0pLCAyNjIxNDApOworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDEpLCBtYWtlVWludCg1KV0pLCA0Mjk0OTY3MjY0KTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCgw
KSwgbWFrZVVpbnQoMyldKSwgMCk7Cit9OworCit3aGxzbFRlc3RzLnVpbnRSU2hpZnQgPSBhc3lu
YyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSwg
dWludCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA+PiBiOworICAgICAgICB9
CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgMCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1
MzUpLCBtYWtlVWludCgyKV0pLCAxNjM4Myk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0g
MSksIG1ha2VVaW50KDUpXSksIDEzNDIxNzcyNyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDMp
XSksIDApOworfTsKKword2hsc2xUZXN0cy51aW50U2ltcGxlTWF0aCA9IGFzeW5jICgpID0+IHsK
KyAgICBsZXQgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAr
IHk7IH0iOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1KV0pLCAxMik7CisKKyAgICBwcm9ncmFt
ID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4IC0geTsgfSI7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoNyksIG1ha2VVaW50KDUpXSksIDIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVp
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDUpLCBtYWtlVWludCg3KV0pLCA0
Mjk0OTY3Mjk0KTsKKworICAgIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsg
cmV0dXJuIHggKiB5OyB9IjsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMzUpOworCisg
ICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk5NjAyCisgICAgLy8gcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50IHgsIHVp
bnQgeSkgeyByZXR1cm4geCAvIHk7IH0iOworICAgIC8vIGFzc2VydF9lcXVhbHMoYXdhaXQgY2Fs
bFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCgyKV0p
LCAzKTsKK30KKworcnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3dobHNsLXRlc3QtaGFybmVzcy5qcwkocmV2aXNp
b24gMjQ3MjMwKQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3dobHNsLXRlc3QtaGFybmVzcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtNTA5LDYgKzUwOSw2MyBAQCBhc3luYyBmdW5jdGlvbiBjYWxs
RmxvYXQ0eDRGdW5jdGlvbihmdW5jCiAgICAgcmV0dXJuIChhd2FpdCBoYXJuZXNzLmNhbGxUeXBl
ZEZ1bmN0aW9uKFR5cGVzLkZMT0FUNFg0LCBmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpKS5zdWJhcnJh
eSgwLCAxNik7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIGNoZWNrRmFpbChzb3VyY2UpIHsKKyAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGhhbmRsZSBlcnJvcnMgd2l0aCBwcm9wZXIgbWVzc2FnZXMgb25j
ZSB3ZSBpbXBsZW1lbnQgdGhlIEFQSSBmb3IgdGhhdC4KKyAgICBjb25zdCBuYW1lID0gIl9fX190
ZXN0X25hbWVfX19fIjsKKyAgICBjb25zdCBwcm9ncmFtID0gYAorICAgICAgICAke3NvdXJjZX0K
KworICAgICAgICBbbnVtdGhyZWFkcygxLCAxLCAxKV0KKyAgICAgICAgY29tcHV0ZSB2b2lkICR7
bmFtZX0oZGV2aWNlIGludFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSwgZmxvYXQzIHRocmVhZElE
IDogU1ZfRGlzcGF0Y2hUaHJlYWRJRCkgeworICAgICAgICAgICAgYnVmZmVyWzBdID0gMTsKKyAg
ICAgICAgfQorICAgIGA7CisgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0QmFzaWNEZXZpY2Uo
KTsKKyAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBwcm9ncmFtLCBpc1dITFNMOiB0cnVlfSk7CisgICAgY29uc3QgY29tcHV0ZVN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiBuYW1lfTsKKworICAgIGNvbnN0IGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJp
bGl0eTogNywgdHlwZTogInN0b3JhZ2UtYnVmZmVyIn1dfTsKKyAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IpOworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBM
YXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07CisgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKKwor
ICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgPSB7Y29tcHV0ZVN0YWdlLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKKyAgICBjb25zdCBjb21wdXRlUGlwZWxpbmUgPSBkZXZpY2Uu
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpOworCisgICAg
Y29uc3Qgc2l6ZSA9IEludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxOworCisgICAgY29u
c3QgYnVmZmVyRGVzY3JpcHRvciA9IHtzaXplLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1dS
SVRFIHwgR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfU1JDfTsKKyAgICBjb25zdCBidWZmZXIgPSBk
ZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3IpOworICAgIGNvbnN0IGJ1ZmZlckFy
cmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKKyAgICBjb25zdCBidWZm
ZXJJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOworICAgIGJ1
ZmZlckludDMyQXJyYXlbMF0gPSAwOworICAgIGJ1ZmZlci51bm1hcCgpOworCisgICAgY29uc3Qg
cmVzdWx0c0J1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNU
T1JBR0UgfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBf
UkVBRH07CisgICAgY29uc3QgcmVzdWx0c0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVz
dWx0c0J1ZmZlckRlc2NyaXB0b3IpOworCisgICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZm
ZXI6IHJlc3VsdHNCdWZmZXIsIHNpemV9OworICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmcgPSB7
YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9OworICAgIGNvbnN0IGJpbmRHcm91
cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBbYmluZEdy
b3VwQmluZGluZ119OworICAgIGNvbnN0IGJpbmRHcm91cCA9IGRldmljZS5jcmVhdGVCaW5kR3Jv
dXAoYmluZEdyb3VwRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQorICAgIGNvbW1hbmRFbmNvZGVyLmNv
cHlCdWZmZXJUb0J1ZmZlcihidWZmZXIsIDAsIHJlc3VsdHNCdWZmZXIsIDAsIHNpemUpOworICAg
IGNvbnN0IGNvbXB1dGVQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luQ29tcHV0ZVBh
c3MoKTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5l
KTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7Cisg
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKDEsIDEsIDEpOworICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7CisgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNv
ZGVyLmZpbmlzaCgpOworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOworCisgICAgY29uc3QgcmVzdWx0c0FycmF5QnVmZmVyID0gYXdhaXQgcmVzdWx0c0J1ZmZl
ci5tYXBSZWFkQXN5bmMoKTsKKyAgICBsZXQgcmVzdWx0c0ludDMyQXJyYXkgPSBuZXcgSW50MzJB
cnJheShyZXN1bHRzQXJyYXlCdWZmZXIpOworICAgIGlmIChyZXN1bHRzSW50MzJBcnJheVswXSAh
PT0gMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJwcm9ncmFtIGRpZCBub3QgZmFpbCB0byBj
b21waWxlIik7CisgICAgcmVzdWx0c0J1ZmZlci51bm1hcCgpOworfQorCiAvKioKICAqIERvZXMg
bm90IHJldHVybiBhIFByb21pc2UuIFRvIG9ic2VydmUgdGhlIHJlc3VsdHMgb2YgYSBjYWxsLCAK
ICAqIGNhbGwgJ2dldEFycmF5QnVmZmVyJyBvbiB0aGUgRGF0YSBvYmplY3QgcmV0YWluaW5nIHlv
dXIgb3V0cHV0IGJ1ZmZlci4KQEAgLTUxNywzICs1NzQsMjkgQEAgZnVuY3Rpb24gY2FsbFZvaWRG
dW5jdGlvbihmdW5jdGlvbnMsIG5hbQogewogICAgIGhhcm5lc3MuY2FsbFZvaWRGdW5jdGlvbihm
dW5jdGlvbnMsIG5hbWUsIGFyZ3MpOwogfQorCitjb25zdCB3ZWJHUFVQcm9taXNlVGVzdCA9ICh0
ZXN0RnVuYywgbXNnKSA9PiB7CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsgCisgICAg
ICAgIHJldHVybiB0ZXN0RnVuYygpLmNhdGNoKGUgPT4geworICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCisgICAgICAgICAgICB0aHJvdyBlOworICAg
ICAgICB9KTsKKyAgICB9LCBtc2cpOworfQorCitmdW5jdGlvbiBydW5UZXN0cyhvYmopIHsKKyAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBvYmopIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKSAKKyAgICAgICAgICAgICAgICAgICAgYXdh
aXQgd2ViR1BVUHJvbWlzZVRlc3Qob2JqW25hbWVdLCBuYW1lKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfSk7Cit9CisK
</data>
<flag name="review"
          id="389486"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="389487"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373692</attachid>
            <date>2019-07-08 19:14:32 -0700</date>
            <delta_ts>2019-07-08 19:31:28 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26824</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA4ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3
IEpTIHJlZmVyZW5jZSBzcGVjIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTk2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGltcG9ydHMgYSBidW5jaCBvZiBKUyByZWZl
cmVuY2Ugc3BlYyB0ZXN0cyBvbiBvdXIgd2F5IHRvCisgICAgICAgIGNvbXBsZXRpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5NQorICAgICAgICAKKyAgICAg
ICAgSXQgYWxzbyBmaXhlcyB0aGUgcmVjdXJzaW9uIGNoZWNrZXIgcGhhc2UuIFRoYXQgcGhhc2Ug
aGFkIHR3byBidWdzOgorICAgICAgICAxLiBXZSdkIGFzc2VydCBhZnRlciB2aXNpdGluZyB0aGUg
ZnVuY3Rpb24gZGVjbGFyYXRpb24gdGhhdCBpdCB3YXMKKyAgICAgICAgc3RpbGwgaW4gdGhlIHNl
dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgYmUgaW4gdGhlIHNldCB3aGVuIHdlIGFjdHVhbGx5Cisg
ICAgICAgIGRldGVjdCByZWN1cnNpb24uCisgICAgICAgIDIuIFdlIHdvdWxkIG5vdCB2aXNpdCB0
aGUgYXJndW1lbnRzIHRvIGEgY2FsbCwgc28gaWYgdGhleSBjb250YWluZWQgb3RoZXIKKyAgICAg
ICAgY2FsbHMgd2hpY2ggd2VyZSByZWN1cnNpdmUsIHdlIHdvdWxkIG5vdCBkZXRlY3Qgc3VjaCBy
ZWN1cnNpdmUgY2FsbHMuCisKKyAgICAgICAgVGVzdHM6IHdlYmdwdS93aGxzbC1pbnQtbGl0ZXJh
bC1jb21wYXJlLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMu
aHRtbAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAorICAg
ICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOgorCiAyMDE5LTA3
LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBEb2N1
bWVudDo6cG9zdFRhc2soKSBzYWZlIHRvIGNhbGwgZnJvbSBhIGJhY2tncm91bmQgdGhyZWFkCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNo
ZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDI0NzIzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIGlmIChl
cnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gc3VjY2VzcyA9IG1f
dmlzaXRpbmdTZXQucmVtb3ZlKCZmdW5jdGlvbkRlZmluaXRpb24pOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwpAQCAtNTYsNyArNTgsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9u
KCkpOworICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7CisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKTsKICAgICB9CiAKICAg
ICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV92aXNpdGluZ1NldDsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0NzIzMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3IEpTIHJlZmVyZW5jZSBz
cGVjIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTk2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAg
ICAgICBUaGlzIG1vdmVzIHNvbWUgc3R1ZmYgZG93biBpbnRvIHdobHNsLXRlc3QtaGFybmVzcyB3
aGljaCBhcmUgbmVlZGVkIGJ5CisgICAgICAgIGFsbCB0ZXN0cy4gVGhpcyBhbHNvIGFkZHMgYSBu
ZXcgY2hlY2tGYWlsIHRoYXQgZW5zdXJlcyB0aGUgcHJvZ3JhbSBuZXZlcgorICAgICAgICBydW5z
IChlLmcsIGl0IGhhcyBhIGNvbXBpbGUgZXJyb3IpLgorCisgICAgICAgICogd2ViZ3B1L2pzL3do
bHNsLXRlc3QtaGFybmVzcy5qczoKKyAgICAgICAgKGFzeW5jLmNoZWNrRmFpbCk6CisgICAgICAg
IChjb25zdC53ZWJHUFVQcm9taXNlVGVzdCk6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWJpdHdp
c2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS93aGxzbC1iaXR3aXNl
LWJvb2wtb3BzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBh
cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtaW50LWxpdGVy
YWwtY29tcGFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtc2ltcGxlLXRl
c3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLXNpbXBsZS10
ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC10eXBlLW1pc21hdGNo
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC11aW50LWJpdHdpc2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWw6
IEFkZGVkLgorCiAyMDE5LTA3LTA4ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBTb21lIG1lZGlhIGZyYWdtZW50IHRlc3RzIGFyZSBmbGFreQpJ
bmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wt
b3BzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ3MjMwKQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogCi1QQVNTIEJvb2wgYml0IGFuZCAKLVBBU1MgQm9vbCBiaXQgb3IgCi1QQVNT
IEJvb2wgYml0IG9yIAotUEFTUyBCb29sIGJpdCBub3QgCitQQVNTIGJvb2xCaXRBbmQgCitQQVNT
IGJvb2xCaXRPciAKK1BBU1MgYm9vbEJpdFhvciAKK1BBU1MgYm9vbEJpdE5vdCAKIApJbmRleDog
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1sCShyZXZp
c2lvbiAyNDcyMzApCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9w
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBAIGNvbnN0IGVwc2lsb24gPSAw
LjAwMDE7CiAKIGNvbnN0IHdobHNsVGVzdHMgPSB7fTsKIAotd2hsc2xUZXN0cy5ib29sQml0QW5k
ID0gKCkgPT4geword2hsc2xUZXN0cy5ib29sQml0QW5kID0gYXN5bmMgKCkgPT4gewogICAgIGNv
bnN0IHNvdXJjZSA9IGAKICAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCiAgICAgICAg
IHsKQEAgLTE5LDM1ICsxOSwyOCBAQCB3aGxzbFRlc3RzLmJvb2xCaXRBbmQgPSAoKSA9PiB7CiAg
ICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkgPT4gewot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwg
bWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
dHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJv
b2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxz
ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0
IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVl
LiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGlm
ICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgICAg
ICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSwgIkJvb2wgYml0IGFuZCIpOworICAgIHsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwg
W21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQor
CisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3Vy
Y2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1
ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2Up
XSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQg
ZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0g
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBt
YWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KIH07CiAKLXdobHNsVGVzdHMu
Ym9vbEJpdE9yID0gKCkgPT4geword2hsc2xUZXN0cy5ib29sQml0T3IgPSBhc3luYyAoKSA9PiB7
CiAgICAgY29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wgYikK
ICAgICAgICAgewpAQCAtNTUsMzUgKzQ4LDI4IEBAIHdobHNsVGVzdHMuYm9vbEJpdE9yID0gKCkg
PT4gewogICAgICAgICB9CiAgICAgYDsKIAotICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgp
ID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2woZmFsc2UpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAgICAgICAg
ICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgb3IiKTsKKyAgICB7
CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZv
byIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZh
bHNlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJu
ZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0
ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2Up
LCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwg
IlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsKIAotd2hsc2xUZXN0
cy5ib29sQml0WG9yID0gKCkgPT4geword2hsc2xUZXN0cy5ib29sQml0WG9yID0gYXN5bmMgKCkg
PT4gewogICAgIGNvbnN0IHNvdXJjZSA9IGAKICAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29s
IGIpCiAgICAgICAgIHsKQEAgLTkxLDM1ICs3NywyOCBAQCB3aGxzbFRlc3RzLmJvb2xCaXRYb3Ig
PSAoKSA9PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5
bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtl
Qm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwg
bWFrZUJvb2woZmFsc2UpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQs
IGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFs
c2UpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0
IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24o
c291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhw
ZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAg
ICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAg
ICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgb3IiKTsK
KyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJj
ZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4i
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0p
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtl
Qm9vbChmYWxzZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0
IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29s
KGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQs
IHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KIH07CiAKLXdo
bHNsVGVzdHMuYm9vbEJpdE5vdCA9ICgpID0+IHsKK3dobHNsVGVzdHMuYm9vbEJpdE5vdCA9IGFz
eW5jICgpID0+IHsKICAgICBjb25zdCBzb3VyY2UgPSBgCiAgICAgICAgIGJvb2wgZm9vKGJvb2wg
YSkKICAgICAgICAgewpAQCAtMTI3LDQ5ICsxMDYsMTcgQEAgd2hsc2xUZXN0cy5ib29sQml0Tm90
ID0gKCkgPT4gewogICAgICAgICB9CiAgICAgYDsKIAotICAgIHdlYkdQVVByb21pc2VUZXN0KGFz
eW5jICgpID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFr
ZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFs
c2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2
YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAg
ICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJCb29sIGJpdCBub3QiKTsKKyAgICB7
CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZv
byIsIFttYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFs
c2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwg
W21ha2VCb29sKGZhbHNlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwg
IlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsKIAotZnVuY3Rpb24g
cnVuVGVzdHMob2JqKSB7Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9
PiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAg
ICAgICAgICAgb2JqW25hbWVdKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGhyb3cg
ZTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCiBydW5UZXN0cyh3aGxzbFRlc3RzKTsKLQotY29u
c3Qgd2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1zZykgPT4gewotICAgIHByb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7IAotICAgICAgICByZXR1cm4gdGVzdEZ1bmMoKS5jYXRjaChlID0+
IHsKLSAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQot
ICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSk7Ci0gICAgfSwgbXNnKTsKLX0KIDwvc2Ny
aXB0PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFs
LWNvbXBhcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgdHdvSW50TGl0ZXJhbHMgCisK
SW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBh
cmUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW50LWxp
dGVyYWwtY29tcGFyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVu
YWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFt
ZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBo
YXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnR3
b0ludExpdGVyYWxzID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAg
ICBib29sIGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiA0MiA9PSA0MjsKKyAg
ICAgICAgfQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOworfQorCitydW5UZXN0cyh3aGxzbFRlc3RzKTsK
Kzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXNpbXBs
ZS10ZXN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsLXNpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3IEBACisKK1BBU1Mgc2ltcGxlVW5yZWFjaGFibGVDb2RlIAorUEFTUyBzaW1w
bGVOb1JldHVybiAKK1BBU1Mgc2ltcGxlUmVjdXJzaXZlU3RydWN0IAorUEFTUyBzaW1wbGVSZWN1
cnNpb24gCitQQVNTIHNpbXBsZVJlY3Vyc2lvbjIgCisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdw
dS93aGxzbC1zaW1wbGUtdGVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wtc2ltcGxlLXRlc3RzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjMgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVu
dGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUg
V0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1o
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3Rz
LnNpbXBsZVVucmVhY2hhYmxlQ29kZSA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0Zh
aWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHZvaWQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnNpbXBsZU5vUmV0dXJuID0gYXN5bmMg
KCkgPT4geworICAgIGF3YWl0IGNoZWNrRmFpbCgiaW50IGZvbygpIHsgfSIpOworfQorCit3aGxz
bFRlc3RzLnNpbXBsZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBj
aGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAg
ICAgICAgIEZvbyBmb287CisgICAgICAgICAgICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRl
c3RzLnNpbXBsZVJlY3Vyc2lvbiA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwo
CisgICAgICAgIGAKKyAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZvbyh4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisK
K3dobHNsVGVzdHMuc2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBj
aGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBiYXIoaW50IHgpIHsKKyAgICAg
ICAgICAgICAgICBmb28oeCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb28oYmFyKHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3J1
blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyB0eXBlTWlzbWF0
Y2hSZXR1cm4gCitQQVNTIHR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCAKK1BBU1MgdHlwZU1pc21h
dGNoQXNzaWdubWVudCAKK1BBU1MgdHlwZU1pc21hdGNoUmV0dXJuUGFyYW0gCisKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25zdCB3aGxzbFRlc3Rz
ID0ge307CisKK3dobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuID0gYXN5bmMgKCkgPT4KK3sK
KyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBmb28oKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAxMC41OworICAgICAgICAgICAg
fQorICAgICAgICBgKTsKK30KKword2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wg
PSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAg
ICAgICAgdm9pZCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlu
dCB5ID0geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMudHlw
ZU1pc21hdGNoQXNzaWdubWVudCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWls
KAorICAgICAgICBgCisgICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaW50IHk7CisgICAgICAgICAgICAgICAgeSA9IHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFJldHVyblBh
cmFtID0gYXN5bmMgKCkgPT4KK3sKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAg
ICAgICAgICAgIGludCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB4OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworcnVuVGVzdHMod2hs
c2xUZXN0cyk7CisKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgdWludEJpdEFuZCAKK1BBU1MgdWlu
dEJpdE9yIAorUEFTUyB1aW50Qml0WG9yIAorUEFTUyB1aW50Qml0Tm90IAorUEFTUyB1aW50TFNo
aWZ0IAorUEFTUyB1aW50UlNoaWZ0IAorUEFTUyB1aW50U2ltcGxlTWF0aCAKKwpJbmRleDogTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC11aW50LWJpdHdpc2UuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8
dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
anMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7CisgICAg
bGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYSAmIGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDEpLCBtYWtlVWludCg3KV0pLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQy
KV0pLCA0Mik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4
NTczMildKSwgMCk7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4gewor
ICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgfCBiOworICAgICAgICB9CisgICAgYDsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWlu
dCg0MildKSwgNjU1MzUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dChNYXRoLnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2NzI5NSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1h
a2VVaW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdFhvciA9IGFz
eW5jICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBh
LCB1aW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIF4gYjsKKyAgICAgICAg
fQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDYpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNik7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCks
IG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE5vdCA9
IGFzeW5jICgpID0+IHsgCisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVp
bnQgYSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIH5hOworICAgICAgICB9CisgICAg
YDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5
NDkwMTc2MCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMCldKSwgNDI5NDk2NzI5NSk7Cit9CisKK3dobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5j
ICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBhLCB1
aW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIDw8IGI7CisgICAgICAgIH0K
KyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxMjgpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoMildKSwgMjYyMTQwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50
KDMpXSksIDApOworfTsKKword2hsc2xUZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewor
ICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjsKKyAgICAgICAgfQorICAgIGA7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDApOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVp
bnQoMildKSwgMTYzODMpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dCg1KV0pLCAxMzQyMTc3MjcpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKK307
CisKK3dobHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOworCisgICAgcHJvZ3JhbSA9ICJ1aW50IGZv
byh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtl
VWludCg1KV0pLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7
CisKKyAgICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICog
eTsgfSI7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDM1KTsKKworICAgIC8vIEZJWE1F
OiBtYWtlIHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTYwMgorICAgIC8vIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggLyB5OyB9IjsKKyAgICAvLyBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Cit9CisK
K3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy93ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHJldmlzaW9uIDI0NzIzMCkK
KysrIExheW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTUwOSw2ICs1MDksNjMgQEAgYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NHg0RnVu
Y3Rpb24oZnVuYwogICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihU
eXBlcy5GTE9BVDRYNCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSkuc3ViYXJyYXkoMCwgMTYpOwog
fQogCithc3luYyBmdW5jdGlvbiBjaGVja0ZhaWwoc291cmNlKSB7CisgICAgLy8gRklYTUU6IE1h
a2UgdGhpcyBoYW5kbGUgZXJyb3JzIHdpdGggcHJvcGVyIG1lc3NhZ2VzIG9uY2Ugd2UgaW1wbGVt
ZW50IHRoZSBBUEkgZm9yIHRoYXQuCisgICAgY29uc3QgbmFtZSA9ICJfX19fdGVzdF9uYW1lX19f
XyI7CisgICAgY29uc3QgcHJvZ3JhbSA9IGAKKyAgICAgICAgJHtzb3VyY2V9CisKKyAgICAgICAg
W251bXRocmVhZHMoMSwgMSwgMSldCisgICAgICAgIGNvbXB1dGUgdm9pZCAke25hbWV9KGRldmlj
ZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3Bh
dGNoVGhyZWFkSUQpIHsKKyAgICAgICAgICAgIGJ1ZmZlclswXSA9IDE7CisgICAgICAgIH0KKyAg
ICBgOworICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7CisgICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogcHJvZ3Jh
bSwgaXNXSExTTDogdHJ1ZX0pOworICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogbmFtZX07CisKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKKyAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07CisgICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHNpemUg
PSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKKworICAgIGNvbnN0IGJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1
ZmZlclVzYWdlLlRSQU5TRkVSX1NSQ307CisgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKKyAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9
IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgYnVmZmVySW50MzJBcnJh
eSA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKKyAgICBidWZmZXJJbnQzMkFy
cmF5WzBdID0gMDsKKyAgICBidWZmZXIudW5tYXAoKTsKKworICAgIGNvbnN0IHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BV
QnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OworICAg
IGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJE
ZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRz
QnVmZmVyLCBzaXplfTsKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAs
IHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9y
ID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmdd
fTsKKyAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91
cERlc2NyaXB0b3IpOworCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9C
dWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKKyAgICBjb25zdCBjb21w
dXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7CisgICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7CisgICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5k
UGFzcygpOworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAg
IGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFz
eW5jKCk7CisgICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0
c0FycmF5QnVmZmVyKTsKKyAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gIT09IDApCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigicHJvZ3JhbSBkaWQgbm90IGZhaWwgdG8gY29tcGlsZSIpOwor
ICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKK30KKwogLyoqCiAgKiBEb2VzIG5vdCByZXR1cm4g
YSBQcm9taXNlLiBUbyBvYnNlcnZlIHRoZSByZXN1bHRzIG9mIGEgY2FsbCwgCiAgKiBjYWxsICdn
ZXRBcnJheUJ1ZmZlcicgb24gdGhlIERhdGEgb2JqZWN0IHJldGFpbmluZyB5b3VyIG91dHB1dCBi
dWZmZXIuCkBAIC01MTcsMyArNTc0LDI5IEBAIGZ1bmN0aW9uIGNhbGxWb2lkRnVuY3Rpb24oZnVu
Y3Rpb25zLCBuYW0KIHsKICAgICBoYXJuZXNzLmNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBu
YW1lLCBhcmdzKTsKIH0KKworY29uc3Qgd2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1z
ZykgPT4geworICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7IAorICAgICAgICByZXR1cm4g
dGVzdEZ1bmMoKS5jYXRjaChlID0+IHsKKyAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQ
VVVuc3VwcG9ydGVkRXJyb3IpKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgbXNnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMob2JqKSB7CisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFu
YW1lLnN0YXJ0c1dpdGgoIl8iKSkgCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdlYkdQVVBy
b21pc2VUZXN0KG9ialtuYW1lXSwgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
dGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCg==
</data>
<flag name="commit-queue"
          id="389490"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373694</attachid>
            <date>2019-07-08 19:31:28 -0700</date>
            <delta_ts>2019-07-08 19:38:00 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26932</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA4ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3
IEpTIHJlZmVyZW5jZSBzcGVjIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTk2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGltcG9ydHMgYSBidW5jaCBvZiBKUyByZWZl
cmVuY2Ugc3BlYyB0ZXN0cyBvbiBvdXIgd2F5IHRvCisgICAgICAgIGNvbXBsZXRpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5NQorICAgICAgICAKKyAgICAg
ICAgSXQgYWxzbyBmaXhlcyB0aGUgcmVjdXJzaW9uIGNoZWNrZXIgcGhhc2UuIFRoYXQgcGhhc2Ug
aGFkIHR3byBidWdzOgorICAgICAgICAxLiBXZSdkIGFzc2VydCBhZnRlciB2aXNpdGluZyB0aGUg
ZnVuY3Rpb24gZGVjbGFyYXRpb24gdGhhdCBpdCB3YXMKKyAgICAgICAgc3RpbGwgaW4gdGhlIHNl
dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgYmUgaW4gdGhlIHNldCB3aGVuIHdlIGFjdHVhbGx5Cisg
ICAgICAgIGRldGVjdCByZWN1cnNpb24uCisgICAgICAgIDIuIFdlIHdvdWxkIG5vdCB2aXNpdCB0
aGUgYXJndW1lbnRzIHRvIGEgY2FsbCwgc28gaWYgdGhleSBjb250YWluZWQgb3RoZXIKKyAgICAg
ICAgY2FsbHMgd2hpY2ggd2VyZSByZWN1cnNpdmUsIHdlIHdvdWxkIG5vdCBkZXRlY3Qgc3VjaCBy
ZWN1cnNpdmUgY2FsbHMuCisKKyAgICAgICAgVGVzdHM6IHdlYmdwdS93aGxzbC1pbnQtbGl0ZXJh
bC1jb21wYXJlLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMu
aHRtbAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAorICAg
ICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOgorCiAyMDE5LTA3
LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBEb2N1
bWVudDo6cG9zdFRhc2soKSBzYWZlIHRvIGNhbGwgZnJvbSBhIGJhY2tncm91bmQgdGhyZWFkCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNo
ZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDI0NzIzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIGlmIChl
cnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gc3VjY2VzcyA9IG1f
dmlzaXRpbmdTZXQucmVtb3ZlKCZmdW5jdGlvbkRlZmluaXRpb24pOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwpAQCAtNTYsNyArNTgsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9u
KCkpOworICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7CisgICAgICAgIGlm
IChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkp
CisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKICAgICB9CiAKICAgICBIYXNo
U2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV92aXNpdGluZ1NldDsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0NzIzMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3IEpTIHJlZmVyZW5jZSBzcGVjIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk2
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBU
aGlzIG1vdmVzIHNvbWUgc3R1ZmYgZG93biBpbnRvIHdobHNsLXRlc3QtaGFybmVzcyB3aGljaCBh
cmUgbmVlZGVkIGJ5CisgICAgICAgIGFsbCB0ZXN0cy4gVGhpcyBhbHNvIGFkZHMgYSBuZXcgY2hl
Y2tGYWlsIHRoYXQgZW5zdXJlcyB0aGUgcHJvZ3JhbSBuZXZlcgorICAgICAgICBydW5zIChlLmcs
IGl0IGhhcyBhIGNvbXBpbGUgZXJyb3IpLgorCisgICAgICAgICogd2ViZ3B1L2pzL3dobHNsLXRl
c3QtaGFybmVzcy5qczoKKyAgICAgICAgKGFzeW5jLmNoZWNrRmFpbCk6CisgICAgICAgIChjb25z
dC53ZWJHUFVQcm9taXNlVGVzdCk6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9v
bC1vcHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wt
b3BzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBhcmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtaW50LWxpdGVyYWwtY29t
cGFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC11aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWw6IEFkZGVk
LgorCiAyMDE5LTA3LTA4ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBTb21lIG1lZGlhIGZyYWdtZW50IHRlc3RzIGFyZSBmbGFreQpJbmRleDog
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wtb3BzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ3MjMwKQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogCi1QQVNTIEJvb2wgYml0IGFuZCAKLVBBU1MgQm9vbCBiaXQgb3IgCi1QQVNTIEJvb2wg
Yml0IG9yIAotUEFTUyBCb29sIGJpdCBub3QgCitQQVNTIGJvb2xCaXRBbmQgCitQQVNTIGJvb2xC
aXRPciAKK1BBU1MgYm9vbEJpdFhvciAKK1BBU1MgYm9vbEJpdE5vdCAKIApJbmRleDogTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1sCShyZXZpc2lvbiAy
NDcyMzApCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBAIGNvbnN0IGVwc2lsb24gPSAwLjAwMDE7
CiAKIGNvbnN0IHdobHNsVGVzdHMgPSB7fTsKIAotd2hsc2xUZXN0cy5ib29sQml0QW5kID0gKCkg
PT4geword2hsc2xUZXN0cy5ib29sQml0QW5kID0gYXN5bmMgKCkgPT4gewogICAgIGNvbnN0IHNv
dXJjZSA9IGAKICAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCiAgICAgICAgIHsKQEAg
LTE5LDM1ICsxOSwyOCBAQCB3aGxzbFRlc3RzLmJvb2xCaXRBbmQgPSAoKSA9PiB7CiAgICAgICAg
IH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAg
ICB0cnkgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2Fp
dCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJv
b2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwg
IlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5j
dGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVk
IHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21h
a2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgICAgICB0aHJv
dyBlOwotICAgICAgICB9Ci0gICAgfSwgIkJvb2wgYml0IGFuZCIpOworICAgIHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VC
b29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJm
b28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0
ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQg
Y2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9v
bCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJl
dHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KIH07CiAKLXdobHNsVGVzdHMuYm9vbEJp
dE9yID0gKCkgPT4geword2hsc2xUZXN0cy5ib29sQml0T3IgPSBhc3luYyAoKSA9PiB7CiAgICAg
Y29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wgYikKICAgICAg
ICAgewpAQCAtNTUsMzUgKzQ4LDI4IEBAIHdobHNsVGVzdHMuYm9vbEJpdE9yID0gKCkgPT4gewog
ICAgICAgICB9CiAgICAgYDsKIAotICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsK
LSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSks
IG1ha2VCb29sKHRydWUpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQs
IHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxC
b29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFs
c2UpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVz
dCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9v
IiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAgICAgICAgICAgICAg
IHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgb3IiKTsKKyAgICB7CisgICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0p
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhw
ZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtl
Qm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsKIAotd2hsc2xUZXN0cy5ib29s
Qml0WG9yID0gKCkgPT4geword2hsc2xUZXN0cy5ib29sQml0WG9yID0gYXN5bmMgKCkgPT4gewog
ICAgIGNvbnN0IHNvdXJjZSA9IGAKICAgICAgICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCiAg
ICAgICAgIHsKQEAgLTkxLDM1ICs3NywyOCBAQCB3aGxzbFRlc3RzLmJvb2xCaXRYb3IgPSAoKSA9
PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkg
PT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0
cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJv
b2woZmFsc2UpXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1
bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAgICAgICAg
ICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgb3IiKTsKKyAgICB7
CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZv
byIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9u
KHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVk
IHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChm
YWxzZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNl
KSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUs
ICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KIH07CiAKLXdobHNsVGVz
dHMuYm9vbEJpdE5vdCA9ICgpID0+IHsKK3dobHNsVGVzdHMuYm9vbEJpdE5vdCA9IGFzeW5jICgp
ID0+IHsKICAgICBjb25zdCBzb3VyY2UgPSBgCiAgICAgICAgIGJvb2wgZm9vKGJvb2wgYSkKICAg
ICAgICAgewpAQCAtMTI3LDQ5ICsxMDYsMTcgQEAgd2hsc2xUZXN0cy5ib29sQml0Tm90ID0gKCkg
PT4gewogICAgICAgICB9CiAgICAgYDsKIAotICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgp
ID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
dHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4i
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAgICAgICAg
dGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJCb29sIGJpdCBub3QiKTsKKyAgICB7CisgICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJU
ZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VC
b29sKGZhbHNlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsKIAotZnVuY3Rpb24gcnVuVGVz
dHMob2JqKSB7Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7Ci0g
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKLSAgICAgICAgICAgICAgICAg
ICAgb2JqW25hbWVdKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGhyb3cgZTsKLSAg
ICAgICAgfQotICAgIH0pOwotfQotCiBydW5UZXN0cyh3aGxzbFRlc3RzKTsKLQotY29uc3Qgd2Vi
R1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1zZykgPT4gewotICAgIHByb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7IAotICAgICAgICByZXR1cm4gdGVzdEZ1bmMoKS5jYXRjaChlID0+IHsKLSAg
ICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQotICAgICAg
ICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSk7Ci0gICAgfSwgbXNnKTsKLX0KIDwvc2NyaXB0Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBh
cmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1p
bnQtbGl0ZXJhbC1jb21wYXJlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgdHdvSW50TGl0ZXJhbHMgCisKSW5kZXg6
IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBhcmUuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW50LWxpdGVyYWwt
Y29tcGFyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGlt
ZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNz
LjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnR3b0ludExp
dGVyYWxzID0gYXN5bmMgKCkgPT4geworICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICBib29s
IGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiA0MiA9PSA0MjsKKyAgICAgICAg
fQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSksIHRydWUpOworfQorCitydW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXNp
bXBsZS10ZXN0cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLXNpbXBsZS10ZXN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3IEBACisKK1BBU1Mgc2ltcGxlVW5yZWFjaGFibGVDb2RlIAorUEFTUyBzaW1wbGVOb1Jl
dHVybiAKK1BBU1Mgc2ltcGxlUmVjdXJzaXZlU3RydWN0IAorUEFTUyBzaW1wbGVSZWN1cnNpb24g
CitQQVNTIHNpbXBsZVJlY3Vyc2lvbjIgCisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxz
bC1zaW1wbGUtdGVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wtc2ltcGxlLXRlc3RzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsLXNpbXBsZS10ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAK
KzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOldl
YkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1l
dGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wg
dGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnNpbXBs
ZVVucmVhY2hhYmxlQ29kZSA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisg
ICAgICAgIGAKKyAgICAgICAgICAgIHZvaWQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnNpbXBsZU5vUmV0dXJuID0gYXN5bmMgKCkgPT4g
eworICAgIGF3YWl0IGNoZWNrRmFpbCgiaW50IGZvbygpIHsgfSIpOworfQorCit3aGxzbFRlc3Rz
LnNpbXBsZVJlY3Vyc2l2ZVN0cnVjdCA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0Zh
aWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAg
IEZvbyBmb287CisgICAgICAgICAgICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnNp
bXBsZVJlY3Vyc2lvbiA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAg
ICAgIGAKKyAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGZvbyh4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNs
VGVzdHMuc2ltcGxlUmVjdXJzaW9uMiA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0Zh
aWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBiYXIoaW50IHgpIHsKKyAgICAgICAgICAg
ICAgICBmb28oeCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB2b2lkIGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmb28oYmFyKHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3J1blRlc3Rz
KHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyB0eXBlTWlzbWF0Y2hSZXR1
cm4gCitQQVNTIHR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCAKK1BBU1MgdHlwZU1pc21hdGNoQXNz
aWdubWVudCAKK1BBU1MgdHlwZU1pc21hdGNoUmV0dXJuUGFyYW0gCisKSW5kZXg6IExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBj
aGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0
bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMv
d2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25zdCB3aGxzbFRlc3RzID0ge307
CisKK3dobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuID0gYXN5bmMgKCkgPT4KK3sKKyAgICBh
d2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBmb28oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAxMC41OworICAgICAgICAgICAgfQorICAg
ICAgICBgKTsKK30KKword2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wgPSBhc3lu
YyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAg
dm9pZCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCB5ID0g
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMudHlwZU1pc21h
dGNoQXNzaWdubWVudCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWlsKAorICAg
ICAgICBgCisgICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaW50IHk7CisgICAgICAgICAgICAgICAgeSA9IHg7CisgICAgICAgICAgICB9
CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFJldHVyblBhcmFtID0g
YXN5bmMgKCkgPT4KK3sKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAg
ICAgIGludCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biB4OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworcnVuVGVzdHMod2hsc2xUZXN0
cyk7CisKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgdWludEJpdEFuZCAKK1BBU1MgdWludEJpdE9y
IAorUEFTUyB1aW50Qml0WG9yIAorUEFTUyB1aW50Qml0Tm90IAorUEFTUyB1aW50TFNoaWZ0IAor
UEFTUyB1aW50UlNoaWZ0IAorUEFTUyB1aW50U2ltcGxlTWF0aCAKKwpJbmRleDogTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC11aW50LWJpdHdpc2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
ZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFy
c2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+
VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hs
c2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0cyA9
IHt9OworCit3aGxzbFRlc3RzLnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHBy
b2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYSAmIGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDEp
LCBtYWtlVWludCg3KV0pLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQyKV0pLCA0
Mik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgucG93KDIs
IDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVp
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4NTczMild
KSwgMCk7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4geworICAgIGxl
dCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGEgfCBiOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWlu
dEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWludCg0Mild
KSwgNjU1MzUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludChNYXRo
LnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2NzI5NSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50
KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdFhvciA9IGFzeW5jICgp
ID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBhLCB1aW50
IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIF4gYjsKKyAgICAgICAgfQorICAg
IGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDYpOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwg
bWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwg
bWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNik7CisgICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VV
aW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE5vdCA9IGFzeW5j
ICgpID0+IHsgCisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIH5hOworICAgICAgICB9CisgICAgYDsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5NDkwMTc2
MCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCld
KSwgNDI5NDk2NzI5NSk7Cit9CisKK3dobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5jICgpID0+
IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBhLCB1aW50IGIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIDw8IGI7CisgICAgICAgIH0KKyAgICBg
OworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxMjgpOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwg
bWFrZVVpbnQoMildKSwgMjYyMTQwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikgLSAxKSwg
bWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxs
VWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50KDMpXSks
IDApOworfTsKKword2hsc2xUZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4geworICAgIGxl
dCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjsKKyAgICAgICAgfQorICAgIGA7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMSksIG1ha2VVaW50KDcpXSksIDApOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVp
bnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVpbnQoMild
KSwgMTYzODMpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWludCg1KV0p
LCAxMzQyMTc3MjcpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKK307CisKK3do
bHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHByb2dyYW0g
PSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKKyAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOworCisgICAgcHJvZ3JhbSA9ICJ1aW50IGZvbyh1aW50
IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtlVWludCg1
KV0pLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7CisKKyAg
ICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICogeTsgfSI7
CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDM1KTsKKworICAgIC8vIEZJWE1FOiBtYWtl
IHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTYw
MgorICAgIC8vIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHgg
LyB5OyB9IjsKKyAgICAvLyBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Cit9CisKK3J1blRl
c3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93
ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHJldmlzaW9uIDI0NzIzMCkKKysrIExh
eW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHdvcmtpbmcgY29weSkK
QEAgLTUwOSw2ICs1MDksNjMgQEAgYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NHg0RnVuY3Rpb24o
ZnVuYwogICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihUeXBlcy5G
TE9BVDRYNCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSkuc3ViYXJyYXkoMCwgMTYpOwogfQogCith
c3luYyBmdW5jdGlvbiBjaGVja0ZhaWwoc291cmNlKSB7CisgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyBoYW5kbGUgZXJyb3JzIHdpdGggcHJvcGVyIG1lc3NhZ2VzIG9uY2Ugd2UgaW1wbGVtZW50IHRo
ZSBBUEkgZm9yIHRoYXQuCisgICAgY29uc3QgbmFtZSA9ICJfX19fdGVzdF9uYW1lX19fXyI7Cisg
ICAgY29uc3QgcHJvZ3JhbSA9IGAKKyAgICAgICAgJHtzb3VyY2V9CisKKyAgICAgICAgW251bXRo
cmVhZHMoMSwgMSwgMSldCisgICAgICAgIGNvbXB1dGUgdm9pZCAke25hbWV9KGRldmljZSBpbnRb
XSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhy
ZWFkSUQpIHsKKyAgICAgICAgICAgIGJ1ZmZlclswXSA9IDE7CisgICAgICAgIH0KKyAgICBgOwor
ICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7CisgICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogcHJvZ3JhbSwgaXNX
SExTTDogdHJ1ZX0pOworICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1v
ZHVsZSwgZW50cnlQb2ludDogbmFtZX07CisKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJz
dG9yYWdlLWJ1ZmZlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKKyAgICBjb25z
dCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91
cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBjb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGluZUxheW91
dH07CisgICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBl
bGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHNpemUgPSBJbnQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKKworICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0
b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1ZmZlclVz
YWdlLlRSQU5TRkVSX1NSQ307CisgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihidWZmZXJEZXNjcmlwdG9yKTsKKyAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgYnVmZmVySW50MzJBcnJheSA9IG5l
dyBJbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKKyAgICBidWZmZXJJbnQzMkFycmF5WzBd
ID0gMDsKKyAgICBidWZmZXIudW5tYXAoKTsKKworICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVy
VXNhZ2UuVFJBTlNGRVJfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OworICAgIGNvbnN0
IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlw
dG9yKTsKKworICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVy
LCBzaXplfTsKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291
cmNlOiBidWZmZXJCaW5kaW5nfTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xh
eW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKKyAg
ICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2Ny
aXB0b3IpOworCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsgLy8ge30KKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIo
YnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKKyAgICBjb25zdCBjb21wdXRlUGFz
c0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7CisgICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7CisgICAgY29tcHV0ZVBh
c3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygp
OworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKKyAg
ICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAgIGNvbnN0
IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFzeW5jKCk7
CisgICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0c0FycmF5
QnVmZmVyKTsKKyAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gIT09IDApCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigicHJvZ3JhbSBkaWQgbm90IGZhaWwgdG8gY29tcGlsZSIpOworICAgIHJl
c3VsdHNCdWZmZXIudW5tYXAoKTsKK30KKwogLyoqCiAgKiBEb2VzIG5vdCByZXR1cm4gYSBQcm9t
aXNlLiBUbyBvYnNlcnZlIHRoZSByZXN1bHRzIG9mIGEgY2FsbCwgCiAgKiBjYWxsICdnZXRBcnJh
eUJ1ZmZlcicgb24gdGhlIERhdGEgb2JqZWN0IHJldGFpbmluZyB5b3VyIG91dHB1dCBidWZmZXIu
CkBAIC01MTcsMyArNTc0LDI5IEBAIGZ1bmN0aW9uIGNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25z
LCBuYW0KIHsKICAgICBoYXJuZXNzLmNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBh
cmdzKTsKIH0KKworY29uc3Qgd2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1zZykgPT4g
eworICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7IAorICAgICAgICByZXR1cm4gdGVzdEZ1
bmMoKS5jYXRjaChlID0+IHsKKyAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3Vw
cG9ydGVkRXJyb3IpKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfSk7CisgICAgfSwg
bXNnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMob2JqKSB7CisgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0
YXJ0c1dpdGgoIl8iKSkgCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdlYkdQVVByb21pc2VU
ZXN0KG9ialtuYW1lXSwgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhyb3cg
ZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373695</attachid>
            <date>2019-07-08 19:38:00 -0700</date>
            <delta_ts>2019-07-08 22:32:33 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>28192</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzI0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA3LTA4ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3
IEpTIHJlZmVyZW5jZSBzcGVjIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTk2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGltcG9ydHMgYSBidW5jaCBvZiBKUyByZWZl
cmVuY2Ugc3BlYyB0ZXN0cyBvbiBvdXIgd2F5IHRvCisgICAgICAgIGNvbXBsZXRpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5NQorICAgICAgICAKKyAgICAg
ICAgSXQgYWxzbyBmaXhlcyB0aGUgcmVjdXJzaW9uIGNoZWNrZXIgcGhhc2UuIFRoYXQgcGhhc2Ug
aGFkIHR3byBidWdzOgorICAgICAgICAxLiBXZSdkIGFzc2VydCBhZnRlciB2aXNpdGluZyB0aGUg
ZnVuY3Rpb24gZGVjbGFyYXRpb24gdGhhdCBpdCB3YXMKKyAgICAgICAgc3RpbGwgaW4gdGhlIHNl
dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgYmUgaW4gdGhlIHNldCB3aGVuIHdlIGFjdHVhbGx5Cisg
ICAgICAgIGRldGVjdCByZWN1cnNpb24uCisgICAgICAgIDIuIFdlIHdvdWxkIG5vdCB2aXNpdCB0
aGUgYXJndW1lbnRzIHRvIGEgY2FsbCwgc28gaWYgdGhleSBjb250YWluZWQgb3RoZXIKKyAgICAg
ICAgY2FsbHMgd2hpY2ggd2VyZSByZWN1cnNpdmUsIHdlIHdvdWxkIG5vdCBkZXRlY3Qgc3VjaCBy
ZWN1cnNpdmUgY2FsbHMuCisKKyAgICAgICAgVGVzdHM6IHdlYmdwdS93aGxzbC1pbnQtbGl0ZXJh
bC1jb21wYXJlLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMu
aHRtbAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAorICAg
ICAgICAgICAgICAgd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOgorCiAyMDE5LTA3
LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBEb2N1
bWVudDo6cG9zdFRhc2soKSBzYWZlIHRvIGNhbGwgZnJvbSBhIGJhY2tncm91bmQgdGhyZWFkCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNo
ZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDI0NzIzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIGlmIChl
cnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gc3VjY2VzcyA9IG1f
dmlzaXRpbmdTZXQucmVtb3ZlKCZmdW5jdGlvbkRlZmluaXRpb24pOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwpAQCAtNTYsNyArNTgsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9u
KCkpOworICAgICAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7CisgICAgICAgIGlm
IChpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkp
CisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKICAgICB9CiAKICAgICBIYXNo
U2V0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKj4gbV92aXNpdGluZ1NldDsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0NzIzMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSExTTCBJbXBvcnQgMjMgbmV3IEpTIHJlZmVyZW5jZSBzcGVjIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk2
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBU
aGlzIG1vdmVzIHNvbWUgc3R1ZmYgZG93biBpbnRvIHdobHNsLXRlc3QtaGFybmVzcyB3aGljaCBh
cmUgbmVlZGVkIGJ5CisgICAgICAgIGFsbCB0ZXN0cy4gVGhpcyBhbHNvIGFkZHMgYSBuZXcgY2hl
Y2tGYWlsIHRoYXQgZW5zdXJlcyB0aGUgcHJvZ3JhbSBuZXZlcgorICAgICAgICBydW5zIChlLmcs
IGl0IGhhcyBhIGNvbXBpbGUgZXJyb3IpLgorCisgICAgICAgICogd2ViZ3B1L2pzL3dobHNsLXRl
c3QtaGFybmVzcy5qczoKKyAgICAgICAgKGFzeW5jLmNoZWNrRmFpbCk6CisgICAgICAgIChjb25z
dC53ZWJHUFVQcm9taXNlVGVzdCk6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9v
bC1vcHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wt
b3BzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBhcmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtaW50LWxpdGVyYWwtY29t
cGFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC11aW50LWJpdHdpc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWw6IEFkZGVk
LgorCiAyMDE5LTA3LTA4ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBTb21lIG1lZGlhIGZyYWdtZW50IHRlc3RzIGFyZSBmbGFreQpJbmRleDog
TGF5b3V0VGVzdHMvd2ViZ3B1L21zbC1oYXJuZXNzLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy93ZWJncHUvbXNsLWhhcm5lc3MtdGVzdC5odG1sCShyZXZpc2lvbiAyNDcyMzAp
CisrKyBMYXlvdXRUZXN0cy93ZWJncHUvbXNsLWhhcm5lc3MtdGVzdC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUsMTQgKzIwNSw1IEBAIGNvbnN0IGNoZWNrRmxvYXQ0cyA9IChib2R5LCBhcmdW
YWx1ZXMgPSAKICAgICAgICAgfSk7CiAgICAgfSwgIlJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQg
dmFsdWUuIik7CiB9Ci0KLWNvbnN0IHdlYkdQVVByb21pc2VUZXN0ID0gKHRlc3RGdW5jLCBtc2cp
ID0+IHsKLSAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geyAKLSAgICAgICAgcmV0dXJuIHRl
c3RGdW5jKCkuY2F0Y2goZSA9PiB7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVV
bnN1cHBvcnRlZEVycm9yKSkKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0pOwotICAg
IH0sIG1zZyk7Ci19CiA8L3NjcmlwdD4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29s
LW9wcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
LWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDcyMzApCisrKyBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAKLVBBU1MgQm9vbCBiaXQgYW5kIAotUEFTUyBCb29s
IGJpdCBvciAKLVBBU1MgQm9vbCBiaXQgb3IgCi1QQVNTIEJvb2wgYml0IG5vdCAKK1BBU1MgYm9v
bEJpdEFuZCAKK1BBU1MgYm9vbEJpdE9yIAorUEFTUyBib29sQml0WG9yIAorUEFTUyBib29sQml0
Tm90IAogCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wt
b3BzLmh0bWwJKHJldmlzaW9uIDI0NzIzMCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1i
aXR3aXNlLWJvb2wtb3BzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgY29u
c3QgZXBzaWxvbiA9IDAuMDAwMTsKIAogY29uc3Qgd2hsc2xUZXN0cyA9IHt9OwogCi13aGxzbFRl
c3RzLmJvb2xCaXRBbmQgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRBbmQgPSBhc3luYyAo
KSA9PiB7CiAgICAgY29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZvbyhib29sIGEsIGJv
b2wgYikKICAgICAgICAgewpAQCAtMTksMzUgKzE5LDI4IEBAIHdobHNsVGVzdHMuYm9vbEJpdEFu
ZCA9ICgpID0+IHsKICAgICAgICAgfQogICAgIGA7CiAKLSAgICB3ZWJHUFVQcm9taXNlVGVzdChh
c3luYyAoKSA9PiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21h
a2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSks
IG1ha2VCb29sKGZhbHNlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZh
bHNlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQg
ZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewot
ICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQot
ICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9LCAiQm9vbCBiaXQgYW5k
Iik7CisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1
ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNl
KV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVk
IGV4cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBt
YWtlQm9vbChmYWxzZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAi
VGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtl
Qm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQogfTsK
IAotd2hsc2xUZXN0cy5ib29sQml0T3IgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRPciA9
IGFzeW5jICgpID0+IHsKICAgICBjb25zdCBzb3VyY2UgPSBgCiAgICAgICAgIGJvb2wgZm9vKGJv
b2wgYSwgYm9vbCBiKQogICAgICAgICB7CkBAIC01NSwzNSArNDgsMjggQEAgd2hsc2xUZXN0cy5i
b29sQml0T3IgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BVUHJvbWlz
ZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZv
byIsIFttYWtlQm9vbCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wo
ZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtl
Qm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1
ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0p
OwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1
cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaChl
KSB7Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJv
cikpCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJCb29sIGJp
dCBvciIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbChm
YWxzZSldKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1
cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCByZXN1
bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0cnVl
KSwgbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVl
LCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CiB9
OwogCi13aGxzbFRlc3RzLmJvb2xCaXRYb3IgPSAoKSA9PiB7Cit3aGxzbFRlc3RzLmJvb2xCaXRY
b3IgPSBhc3luYyAoKSA9PiB7CiAgICAgY29uc3Qgc291cmNlID0gYAogICAgICAgICBib29sIGZv
byhib29sIGEsIGJvb2wgYikKICAgICAgICAgewpAQCAtOTEsMzUgKzc3LDI4IEBAIHdobHNsVGVz
dHMuYm9vbEJpdFhvciA9ICgpID0+IHsKICAgICAgICAgfQogICAgIGA7CiAKLSAgICB3ZWJHUFVQ
cm9taXNlVGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQg
dmFsdWUuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFr
ZUJvb2woZmFsc2UpLCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUp
LCBtYWtlQm9vbChmYWxzZSldKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2Fs
bEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0
cnVlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVz
dCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0
ZWRFcnJvcikpCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0sICJC
b29sIGJpdCBvciIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbCh0cnVlKV0p
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UsICJUZXN0IHJldHVybmVkIGV4
cGVjdGVkIHZhbHVlLiIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFr
ZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAgeworICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJv
b2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJm
b28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Cisg
ICAgfQogfTsKIAotd2hsc2xUZXN0cy5ib29sQml0Tm90ID0gKCkgPT4geword2hsc2xUZXN0cy5i
b29sQml0Tm90ID0gYXN5bmMgKCkgPT4gewogICAgIGNvbnN0IHNvdXJjZSA9IGAKICAgICAgICAg
Ym9vbCBmb28oYm9vbCBhKQogICAgICAgICB7CkBAIC0xMjcsNDkgKzEwNiwxNyBAQCB3aGxzbFRl
c3RzLmJvb2xCaXROb3QgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICBgOwogCi0gICAgd2ViR1BV
UHJvbWlzZVRlc3QoYXN5bmMgKCkgPT4gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJj
ZSwgImZvbyIsIFttYWtlQm9vbCh0cnVlKV0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
YXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKGUp
IHsKLSAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9y
KSkKLSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSwgIkJvb2wgYml0
IG5vdCIpOworICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAg
fQorCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICB9CiB9
OwogCi1mdW5jdGlvbiBydW5UZXN0cyhvYmopIHsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsICgpID0+IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
bmFtZSBpbiBvYmopIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIp
KQotICAgICAgICAgICAgICAgICAgICBvYmpbbmFtZV0oKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KIHJ1blRlc3RzKHdobHNs
VGVzdHMpOwotCi1jb25zdCB3ZWJHUFVQcm9taXNlVGVzdCA9ICh0ZXN0RnVuYywgbXNnKSA9PiB7
Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsgCi0gICAgICAgIHJldHVybiB0ZXN0RnVu
YygpLmNhdGNoKGUgPT4gewotICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBw
b3J0ZWRFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9KTsKLSAgICB9LCBt
c2cpOwotfQogPC9zY3JpcHQ+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wtaW50LWxpdGVyYWwtY29tcGFyZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFsLWNvbXBhcmUtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyB0d29J
bnRMaXRlcmFscyAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWludC1saXRlcmFs
LWNvbXBhcmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtaW50
LWxpdGVyYWwtY29tcGFyZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdw
dS93aGxzbC1pbnQtbGl0ZXJhbC1jb21wYXJlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmlt
ZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRm
LTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5UZXN0IHRo
ZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJqcy93aGxzbC10ZXN0
LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307CisK
K3dobHNsVGVzdHMudHdvSW50TGl0ZXJhbHMgPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHByb2dy
YW0gPSBgCisgICAgICAgIGJvb2wgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IDQyID09IDQyOworICAgICAgICB9CisgICAgYDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7Cit9CisKK3J1blRlc3Rz
KHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKworUEFTUyBzaW1wbGVVbnJlYWNoYWJsZUNv
ZGUgCitQQVNTIHNpbXBsZU5vUmV0dXJuIAorUEFTUyBzaW1wbGVSZWN1cnNpdmVTdHJ1Y3QgCitQ
QVNTIHNpbXBsZVJlY3Vyc2lvbiAKK1BBU1Mgc2ltcGxlUmVjdXJzaW9uMiAKKwpJbmRleDogTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXNpbXBsZS10ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC1zaW1wbGUtdGVzdHMuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc2ltcGxlLXRlc3RzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxtZXRh
IGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0
aXRsZT5UZXN0IHRoZSBXSExTTCB0ZXN0IGhhcm5lc3MuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJq
cy93aGxzbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3dlYmdw
dS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRlc3RzID0ge307
CisKK3dobHNsVGVzdHMuc2ltcGxlVW5yZWFjaGFibGVDb2RlID0gYXN5bmMgKCkgPT4geworICAg
IGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBpbnQg
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMuc2ltcGxlTm9S
ZXR1cm4gPSBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgY2hlY2tGYWlsKCJpbnQgZm9vKCkgeyB9
Iik7Cit9CisKK3dobHNsVGVzdHMuc2ltcGxlUmVjdXJzaXZlU3RydWN0ID0gYXN5bmMgKCkgPT4g
eworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgc3RydWN0IEZv
byB7CisgICAgICAgICAgICAgICAgRm9vIGZvbzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7
Cit9CisKK3dobHNsVGVzdHMuc2ltcGxlUmVjdXJzaW9uID0gYXN5bmMgKCkgPT4geworICAgIGF3
YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgdm9pZCBmb28oaW50IHgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9vKHgpOworICAgICAgICAgICAgfQorICAg
ICAgICBgKTsKK30KKword2hsc2xUZXN0cy5zaW1wbGVSZWN1cnNpb24yID0gYXN5bmMgKCkgPT4g
eworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAgICAgICAgaW50IGJhcihp
bnQgeCkgeworICAgICAgICAgICAgICAgIGZvbyh4KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZvaWQgZm9vKGludCB4KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZvbyhiYXIoeCkpOworICAgICAgICAgICAgfQorICAgICAg
ICBgKTsKK30KKworcnVuVGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10ZXN0LWhhcm5lc3MtdGVzdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10ZXN0LWhhcm5lc3MtdGVzdC5odG1s
CShyZXZpc2lvbiAyNDcyMzApCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdGVzdC1oYXJu
ZXNzLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDE0ICsyNjIsNSBAQCBjb25zdCBh
cHBlbmRTY2FsYXJGdW5jdGlvblRvU291cmNlID0gKHNyCiAgICAgCiAgICAgcmV0dXJuIFtzcmMs
IG5hbWUsIHZhbHVlc107CiB9OwotCi1jb25zdCB3ZWJHUFVQcm9taXNlVGVzdCA9ICh0ZXN0RnVu
YywgbXNnKSA9PiB7Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsgCi0gICAgICAgIHJl
dHVybiB0ZXN0RnVuYygpLmNhdGNoKGUgPT4gewotICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
V2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9
KTsKLSAgICB9LCBtc2cpOwotfQogPC9zY3JpcHQ+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyB0eXBlTWlzbWF0
Y2hSZXR1cm4gCitQQVNTIHR5cGVNaXNtYXRjaFZhcmlhYmxlRGVjbCAKK1BBU1MgdHlwZU1pc21h
dGNoQXNzaWdubWVudCAKK1BBU1MgdHlwZU1pc21hdGNoUmV0dXJuUGFyYW0gCisKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC10eXBlLW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXR5cGUtbWlzbWF0Y2guaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdHlwZS1taXNtYXRjaC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+
Cis8dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0ianMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25zdCB3aGxzbFRlc3Rz
ID0ge307CisKK3dobHNsVGVzdHMudHlwZU1pc21hdGNoUmV0dXJuID0gYXN5bmMgKCkgPT4KK3sK
KyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAgICAgICAgICAgIGludCBmb28oKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAxMC41OworICAgICAgICAgICAg
fQorICAgICAgICBgKTsKK30KKword2hsc2xUZXN0cy50eXBlTWlzbWF0Y2hWYXJpYWJsZURlY2wg
PSBhc3luYyAoKSA9PgoreworICAgIGF3YWl0IGNoZWNrRmFpbCgKKyAgICAgICAgYAorICAgICAg
ICAgICAgdm9pZCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlu
dCB5ID0geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCk7Cit9CisKK3dobHNsVGVzdHMudHlw
ZU1pc21hdGNoQXNzaWdubWVudCA9IGFzeW5jICgpID0+Cit7CisgICAgYXdhaXQgY2hlY2tGYWls
KAorICAgICAgICBgCisgICAgICAgICAgICB2b2lkIGZvbyh1aW50IHgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaW50IHk7CisgICAgICAgICAgICAgICAgeSA9IHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIGApOworfQorCit3aGxzbFRlc3RzLnR5cGVNaXNtYXRjaFJldHVyblBh
cmFtID0gYXN5bmMgKCkgPT4KK3sKKyAgICBhd2FpdCBjaGVja0ZhaWwoCisgICAgICAgIGAKKyAg
ICAgICAgICAgIGludCBmb28odWludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB4OworICAgICAgICAgICAgfQorICAgICAgICBgKTsKK30KKworcnVuVGVzdHMod2hs
c2xUZXN0cyk7CisKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgdWludEJpdEFuZCAKK1BBU1MgdWlu
dEJpdE9yIAorUEFTUyB1aW50Qml0WG9yIAorUEFTUyB1aW50Qml0Tm90IAorUEFTUyB1aW50TFNo
aWZ0IAorUEFTUyB1aW50UlNoaWZ0IAorUEFTUyB1aW50U2ltcGxlTWF0aCAKKwpJbmRleDogTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXVpbnQtYml0d2lzZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC11aW50LWJpdHdpc2UuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdWludC1iaXR3aXNlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8
dGl0bGU+VGVzdCB0aGUgV0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
anMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xU
ZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLnVpbnRCaXRBbmQgPSBhc3luYyAoKSA9PiB7CisgICAg
bGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYSAmIGI7CisgICAgICAgIH0KKyAgICBgOworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
aW50KDEpLCBtYWtlVWludCg3KV0pLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxV
aW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSksIG1ha2VVaW50KDQy
KV0pLCA0Mik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSksIG1ha2VVaW50KE1hdGgu
cG93KDIsIDMyKSAtIDcpXSksIDQyOTQ5NjcyODkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCg4
NTczMildKSwgMCk7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE9yID0gYXN5bmMgKCkgPT4gewor
ICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgfCBiOworICAgICAgICB9CisgICAgYDsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCgxKSwgbWFrZVVpbnQoNyldKSwgNyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBj
YWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoNjU1MzUpLCBtYWtlVWlu
dCg0MildKSwgNjU1MzUpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dChNYXRoLnBvdygyLCAzMikgIC0gNyldKSwgNDI5NDk2NzI5NSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1h
a2VVaW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdFhvciA9IGFz
eW5jICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBh
LCB1aW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIF4gYjsKKyAgICAgICAg
fQorICAgIGA7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDYpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoNDIpXSksIDY1NDkzKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gNyldKSwgNik7CisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCks
IG1ha2VVaW50KDg1NzMyKV0pLCA4NTczMik7Cit9CisKK3dobHNsVGVzdHMudWludEJpdE5vdCA9
IGFzeW5jICgpID0+IHsgCisgICAgbGV0IHByb2dyYW0gPSBgCisgICAgICAgIHVpbnQgZm9vKHVp
bnQgYSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIH5hOworICAgICAgICB9CisgICAg
YDsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludCgxKV0pLCA0Mjk0OTY3Mjk0KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg2NTUzNSldKSwgNDI5
NDkwMTc2MCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQoTWF0aC5wb3coMiwgMzIpIC0gMSldKSwgMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQoMCldKSwgNDI5NDk2NzI5NSk7Cit9CisKK3dobHNsVGVzdHMudWludExTaGlmdCA9IGFzeW5j
ICgpID0+IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGAKKyAgICAgICAgdWludCBmb28odWludCBhLCB1
aW50IGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIDw8IGI7CisgICAgICAgIH0K
KyAgICBgOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KDEpLCBtYWtlVWludCg3KV0pLCAxMjgpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1
NTM1KSwgbWFrZVVpbnQoMildKSwgMjYyMTQwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNh
bGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChNYXRoLnBvdygyLCAzMikg
LSAxKSwgbWFrZVVpbnQoNSldKSwgNDI5NDk2NzI2NCk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQoMCksIG1ha2VVaW50
KDMpXSksIDApOworfTsKKword2hsc2xUZXN0cy51aW50UlNoaWZ0ID0gYXN5bmMgKCkgPT4gewor
ICAgIGxldCBwcm9ncmFtID0gYAorICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjsKKyAgICAgICAgfQorICAgIGA7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZVVpbnQoMSksIG1ha2VVaW50KDcpXSksIDApOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
Y2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDY1NTM1KSwgbWFrZVVp
bnQoMildKSwgMTYzODMpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KE1hdGgucG93KDIsIDMyKSAtIDEpLCBtYWtlVWlu
dCg1KV0pLCAxMzQyMTc3MjcpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbFVpbnRGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDApLCBtYWtlVWludCgzKV0pLCAwKTsKK307
CisKK3dobHNsVGVzdHMudWludFNpbXBsZU1hdGggPSBhc3luYyAoKSA9PiB7CisgICAgbGV0IHBy
b2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9IjsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludCg3KSwgbWFrZVVpbnQoNSldKSwgMTIpOworCisgICAgcHJvZ3JhbSA9ICJ1aW50IGZv
byh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iOworICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbFVpbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KDcpLCBtYWtl
VWludCg1KV0pLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg1KSwgbWFrZVVpbnQoNyldKSwgNDI5NDk2NzI5NCk7
CisKKyAgICBwcm9ncmFtID0gInVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICog
eTsgfSI7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsVWludEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZVVpbnQoNyksIG1ha2VVaW50KDUpXSksIDM1KTsKKworICAgIC8vIEZJWE1F
OiBtYWtlIHRoaXMgd29yazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTYwMgorICAgIC8vIHByb2dyYW0gPSAidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0
dXJuIHggLyB5OyB9IjsKKyAgICAvLyBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxVaW50RnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludCg3KSwgbWFrZVVpbnQoMildKSwgMyk7Cit9CisK
K3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy93ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHJldmlzaW9uIDI0NzIzMCkK
KysrIExheW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTUwOSw2ICs1MDksNjMgQEAgYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NHg0RnVu
Y3Rpb24oZnVuYwogICAgIHJldHVybiAoYXdhaXQgaGFybmVzcy5jYWxsVHlwZWRGdW5jdGlvbihU
eXBlcy5GTE9BVDRYNCwgZnVuY3Rpb25zLCBuYW1lLCBhcmdzKSkuc3ViYXJyYXkoMCwgMTYpOwog
fQogCithc3luYyBmdW5jdGlvbiBjaGVja0ZhaWwoc291cmNlKSB7CisgICAgLy8gRklYTUU6IE1h
a2UgdGhpcyBoYW5kbGUgZXJyb3JzIHdpdGggcHJvcGVyIG1lc3NhZ2VzIG9uY2Ugd2UgaW1wbGVt
ZW50IHRoZSBBUEkgZm9yIHRoYXQuCisgICAgY29uc3QgbmFtZSA9ICJfX19fdGVzdF9uYW1lX19f
XyI7CisgICAgY29uc3QgcHJvZ3JhbSA9IGAKKyAgICAgICAgJHtzb3VyY2V9CisKKyAgICAgICAg
W251bXRocmVhZHMoMSwgMSwgMSldCisgICAgICAgIGNvbXB1dGUgdm9pZCAke25hbWV9KGRldmlj
ZSBpbnRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0MyB0aHJlYWRJRCA6IFNWX0Rpc3Bh
dGNoVGhyZWFkSUQpIHsKKyAgICAgICAgICAgIGJ1ZmZlclswXSA9IDE7CisgICAgICAgIH0KKyAg
ICBgOworICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7CisgICAgY29u
c3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogcHJvZ3Jh
bSwgaXNXSExTTDogdHJ1ZX0pOworICAgIGNvbnN0IGNvbXB1dGVTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogbmFtZX07CisKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5
cGU6ICJzdG9yYWdlLWJ1ZmZlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKKyAg
ICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2Jp
bmRHcm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yID0ge2NvbXB1dGVTdGFnZSwgbGF5b3V0OiBwaXBlbGlu
ZUxheW91dH07CisgICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHNpemUg
PSBJbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogMTsKKworICAgIGNvbnN0IGJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB8IEdQVUJ1
ZmZlclVzYWdlLlRSQU5TRkVSX1NSQ307CisgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcihidWZmZXJEZXNjcmlwdG9yKTsKKyAgICBjb25zdCBidWZmZXJBcnJheUJ1ZmZlciA9
IGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgYnVmZmVySW50MzJBcnJh
eSA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlckFycmF5QnVmZmVyKTsKKyAgICBidWZmZXJJbnQzMkFy
cmF5WzBdID0gMDsKKyAgICBidWZmZXIudW5tYXAoKTsKKworICAgIGNvbnN0IHJlc3VsdHNCdWZm
ZXJEZXNjcmlwdG9yID0ge3NpemUsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BV
QnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OworICAg
IGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJE
ZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IGJ1ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRz
QnVmZmVyLCBzaXplfTsKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAs
IHJlc291cmNlOiBidWZmZXJCaW5kaW5nfTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9y
ID0ge2xheW91dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmdd
fTsKKyAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91
cERlc2NyaXB0b3IpOworCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9C
dWZmZXIoYnVmZmVyLCAwLCByZXN1bHRzQnVmZmVyLCAwLCBzaXplKTsKKyAgICBjb25zdCBjb21w
dXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7CisgICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7CisgICAgY29t
cHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAxKTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5k
UGFzcygpOworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2go
KTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAg
IGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFwUmVhZEFz
eW5jKCk7CisgICAgbGV0IHJlc3VsdHNJbnQzMkFycmF5ID0gbmV3IEludDMyQXJyYXkocmVzdWx0
c0FycmF5QnVmZmVyKTsKKyAgICBpZiAocmVzdWx0c0ludDMyQXJyYXlbMF0gIT09IDApCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigicHJvZ3JhbSBkaWQgbm90IGZhaWwgdG8gY29tcGlsZSIpOwor
ICAgIHJlc3VsdHNCdWZmZXIudW5tYXAoKTsKK30KKwogLyoqCiAgKiBEb2VzIG5vdCByZXR1cm4g
YSBQcm9taXNlLiBUbyBvYnNlcnZlIHRoZSByZXN1bHRzIG9mIGEgY2FsbCwgCiAgKiBjYWxsICdn
ZXRBcnJheUJ1ZmZlcicgb24gdGhlIERhdGEgb2JqZWN0IHJldGFpbmluZyB5b3VyIG91dHB1dCBi
dWZmZXIuCkBAIC01MTcsMyArNTc0LDI5IEBAIGZ1bmN0aW9uIGNhbGxWb2lkRnVuY3Rpb24oZnVu
Y3Rpb25zLCBuYW0KIHsKICAgICBoYXJuZXNzLmNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBu
YW1lLCBhcmdzKTsKIH0KKworY29uc3Qgd2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1z
ZykgPT4geworICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7IAorICAgICAgICByZXR1cm4g
dGVzdEZ1bmMoKS5jYXRjaChlID0+IHsKKyAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQ
VVVuc3VwcG9ydGVkRXJyb3IpKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgbXNnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMob2JqKSB7CisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2JqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFu
YW1lLnN0YXJ0c1dpdGgoIl8iKSkgCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdlYkdQVVBy
b21pc2VUZXN0KG9ialtuYW1lXSwgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
dGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>