<?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>201385</bug_id>
          
          <creation_ts>2019-09-01 03:03:17 -0700</creation_ts>
          <short_desc>[WHLSL] Implement SampleLevel(), SampleBias(), and SampleGrad()</short_desc>
          <delta_ts>2019-09-03 20:31:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>justin_fan</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1567031</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-09-01 03:03:17 -0700</bug_when>
    <thetext>[WHLSL] Implement SampleLevel(), SampleBias(), and SampleGrad()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567032</commentid>
    <comment_count>1</comment_count>
      <attachid>377815</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-09-01 03:04:32 -0700</bug_when>
    <thetext>Created attachment 377815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567099</commentid>
    <comment_count>2</comment_count>
      <attachid>377834</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-09-01 20:12:03 -0700</bug_when>
    <thetext>Created attachment 377834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567607</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-09-03 19:13:22 -0700</bug_when>
    <thetext>iOS test failure is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567623</commentid>
    <comment_count>4</comment_count>
      <attachid>377834</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 20:30:28 -0700</bug_when>
    <thetext>Comment on attachment 377834
Patch

Clearing flags on attachment: 377834

Committed r249453: &lt;https://trac.webkit.org/changeset/249453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567624</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 20:30:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567626</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-03 20:31:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/55004295&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377815</attachid>
            <date>2019-09-01 03:04:32 -0700</date>
            <delta_ts>2019-09-01 20:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201385-20190901190431.patch</filename>
            <type>text/plain</type>
            <size>56750</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAzYWZmMDEyMzVmNjAx
MTU4ZWY4MWM5MzU1ZDFhYTEwOTFhY2M5MS4uOWIxNzgwMmQ3YzU4ZDZhZGUzODg4NmFkZDE1MWJm
NTE2Yzc5NDI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA5LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBJ
bXBsZW1lbnQgU2FtcGxlTGV2ZWwoKSwgU2FtcGxlQmlhcygpLCBhbmQgU2FtcGxlR3JhZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzODUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBhcmUg
dXNlZCBpbiB0aGUgQmFieWxvbi5qcyBkZW1vLgorCisgICAgICAgIFRlc3RzOiB3ZWJncHUvd2hs
c2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OnNhbXBsZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjppbmxpbmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
SW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQ6CisKIDIwMTktMDgtMjcgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+ICBhbmQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmku
RnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgTWFrZSBGcmFtZUxvYWRlcjo6b3BlbigpIHNldCBv
dXRnb2luZyByZWZlcnJlciBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaAppbmRleCA4ZmVhMzdhODA1NDAyMDNiMWNhYWE2NTY0Y2ZjYjFjZGNiYTQ1ODA3Li41
ZTBhOTJiYjZhZWNmOTczYTRkOTYwMTdiOGZhZjVlMzIwZGU5ZjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1RleHR1cmVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlQXJyYXk7IH0K
ICAgICBib29sIGlzRGVwdGhUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoVGV4dHVy
ZTsgfQogICAgIGJvb2wgaXNXcml0YWJsZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzV3Jp
dGFibGVUZXh0dXJlOyB9CisgICAgYm9vbCBpc0N1YmVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0N1YmVUZXh0dXJlOyB9CiAgICAgdWludCB0ZXh0dXJlRGltZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0dXJlRGltZW5zaW9uOyB9CiAgICAgYm9vbCBpc1NpZ25lZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTaWduZWQ7IH0KICAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50KT4m
IGNhblJlcHJlc2VudEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEludGVn
ZXI7IH0KQEAgLTEwNCw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1RleHR1cmVB
cnJheSgpIHsgbV9pc1RleHR1cmVBcnJheSA9IHRydWU7IH0KICAgICB2b2lkIHNldElzRGVwdGhU
ZXh0dXJlKCkgeyBtX2lzRGVwdGhUZXh0dXJlID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SXNXcml0
YWJsZVRleHR1cmUoKSB7IG1faXNXcml0YWJsZVRleHR1cmUgPSB0cnVlOyB9CisgICAgdm9pZCBz
ZXRJc0N1YmVUZXh0dXJlKCkgeyBtX2lzQ3ViZVRleHR1cmUgPSB0cnVlOyB9CiAgICAgdm9pZCBz
ZXRUZXh0dXJlRGltZW5zaW9uKHVpbnQgdGV4dHVyZURpbWVuc2lvbikgeyBtX3RleHR1cmVEaW1l
bnNpb24gPSB0ZXh0dXJlRGltZW5zaW9uOyB9CiAgICAgdm9pZCBzZXRJc1NpZ25lZCgpIHsgbV9p
c1NpZ25lZCA9IHRydWU7IH0KICAgICB2b2lkIHNldENhblJlcHJlc2VudEludGVnZXIoc3RkOjpm
dW5jdGlvbjxib29sKGludCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50SW50ZWdl
ciA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQpAQCAtMTM1LDYgKzEzNyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzVGV4dHVyZUFycmF5IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNEZXB0
aFRleHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1dyaXRhYmxlVGV4dHVyZSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzQ3ViZVRleHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Np
Z25lZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25X
cml0ZXIuY3BwCmluZGV4IDA3ZWY2NWIxNTJmN2Y1MjEwYzNkZjI4YTcxZmQ1NGZkZmRjM2NlMDcu
LmVmZDI4OGU5MTVjNzEzMTFkMTYxODU0NjJlYjdlYjMxMmYyYjk3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rp
b25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xMjAsNiArMTIwLDI2IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiB2ZWN0b3JTdWZmaXgoaW50IHZlY3Rvckxlbmd0aCkKICAgICB9CiB9
CiAKK2VudW0gY2xhc3MgU2FtcGxlVHlwZSB7CisgICAgU2FtcGxlLAorICAgIFNhbXBsZUxldmVs
LAorICAgIFNhbXBsZUJpYXMsCisgICAgU2FtcGxlR3JhZAorfTsKKworc3RhdGljIE9wdGlvbmFs
PFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpCit7Cisg
ICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlIikKKyAgICAgICAgcmV0dXJuIFNhbXBsZVR5
cGU6OlNhbXBsZTsKKyAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVMZXZlbCIpCisgICAg
ICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDsKKyAgICBpZiAoZnVuY3Rpb25OYW1l
ID09ICJTYW1wbGVCaWFzIikKKyAgICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUJpYXM7
CisgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlR3JhZCIpCisgICAgICAgIHJldHVybiBT
YW1wbGVUeXBlOjpTYW1wbGVHcmFkOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLCBN
YW5nbGVkVmFyaWFibGVOYW1lIHJldHVybk5hbWUsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFi
bGVOYW1lPiYgYXJncywgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFt
ZXIsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xlZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQogewogICAgIGF1dG8gYXNNYXRyaXhU
eXBlID0gWyZdIChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24qIHsKQEAgLTYyMCwyNSArNjQwLDU5IEBAIHZvaWQgaW5saW5lTmF0aXZl
RnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlNhbXBsZSIpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzIHx8IG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KTsKLSAgICAgICAgCisgICAg
aWYgKGF1dG8gc2FtcGxlVHlwZSA9IFdITFNMOjpNZXRhbDo6c2FtcGxlVHlwZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSkpIHsKKyAgICAgICAgc2l6ZV90IGJhc2VBcmd1bWVudENv
dW50ID0gMDsKKyAgICAgICAgc3dpdGNoICgqc2FtcGxlVHlwZSkgeworICAgICAgICBjYXNlIFNh
bXBsZVR5cGU6OlNhbXBsZToKKyAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gMzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgor
ICAgICAgICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZUJpYXM6CisgICAgICAgICAgICBiYXNlQXJn
dW1lbnRDb3VudCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTYW1wbGVU
eXBlOjpTYW1wbGVHcmFkOgorICAgICAgICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSA1OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSBiYXNlQXJndW1lbnRDb3VudCB8fCBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3Vt
ZW50Q291bnQgKyAxKTsKKwogICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkp
KTsKICAgICAgICAgYXV0byYgbG9jYXRpb25UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwogICAgICAgICBh
dXRvIGxvY2F0aW9uVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKGxvY2F0aW9uVHlwZSk7CiAg
ICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
dHlwZSgpLnVuaWZ5Tm9kZSgpKSk7CiAgICAgICAgIGF1dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0g
dmVjdG9yTGVuZ3RoKHJldHVyblR5cGUpOwogCisgICAgICAgIGludCBhcmd1bWVudEluZGV4ID0g
MDsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBpbmRlbnQsIHJl
dHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLnNhbXBsZSgiLCBhcmdzWzFdLCAiLCAiKTsKKyAg
ICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbYXJndW1lbnRJbmRleF0s
ICIuc2FtcGxlKCIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAiLCAiKTsKKyAgICAgICAgYXJn
dW1lbnRJbmRleCArPSAyOwogCiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJh
eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5z
dWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1syXSwgJy4n
LCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbYXJndW1lbnRJbmRleCsrXSwgJy4n
LCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiLCAi
LCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
IC0gMSwgMSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGFyZ3NbMl0pOwotICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpID09IDQpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiLCBhcmdzWzNdKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbYXJn
dW1lbnRJbmRleCsrXSk7CisKKyAgICAgICAgc3dpdGNoICgqc2FtcGxlVHlwZSkgeworICAgICAg
ICBjYXNlIFNhbXBsZVR5cGU6OlNhbXBsZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNhbXBsZVR5cGU6OlNhbXBsZUxldmVsOgorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgbGV2ZWwoIiwgYXJnc1thcmd1bWVudEluZGV4KytdLCAiKSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlQmlhczoKKyAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGJpYXMoIiwgYXJnc1thcmd1bWVudEluZGV4Kytd
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2Ft
cGxlR3JhZDoKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc0N1YmVUZXh0dXJlKCkpCisg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnRjdWJlKCIsIGFy
Z3NbYXJndW1lbnRJbmRleF0sICIsICIsIGFyZ3NbYXJndW1lbnRJbmRleCArIDFdLCAiKSIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIs
IGdyYWRpZW50MmQoIiwgYXJnc1thcmd1bWVudEluZGV4XSwgIiwgIiwgYXJnc1thcmd1bWVudElu
ZGV4ICsgMV0sICIpIik7CisgICAgICAgICAgICBhcmd1bWVudEluZGV4ICs9IDI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgKyAxKQorICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1thcmd1bWVudEluZGV4Kytd
KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikiKTsKICAgICAgICAgaWYgKCF0ZXh0
dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKQEAg
LTgwMiwyMSArODU2LDYgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
U2FtcGxlQmlhcyIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KLSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIlNhbXBsZUdyYWQiKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEzIEltcGxlbWVudCB0aGlzCi0gICAgICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi0gICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJTYW1wbGVMZXZlbCIpIHsKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMKLSAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KICAgICBpZiAobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdhdGhlciIpIHsKICAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MTMgSW1wbGVtZW50IHRoaXMK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCmluZGV4IGU5OTEzYTI0YjY1
MWZhOWNjNTc5MzhiMDZkNWRiNTcxMTc0YTVlZTguLjVjMmJjNGUxY2JlMDQzMTEwY2Y4MzE0M2Nh
ODNkMTUyYTdmNTJlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcApAQCAtMjMxLDYgKzIzMSw4IEBAIGJvb2wg
SW50cmluc2ljczo6YWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvCiAgICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRUZXh0
dXJlRGltZW5zaW9uKDIpOwogICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
ICJUZXh0dXJlM0QiIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlJXVGV4dHVy
ZTNEIikKICAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24o
Myk7CisgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmVDdWJl
IikKKyAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzQ3ViZVRleHR1cmUoKTsKICAg
ICBtX2Z1bGxUZXh0dXJlc1t0ZXh0dXJlVHlwZUluZGV4XVtpbm5lclR5cGVJbmRleF1bdmVjdG9y
TGVuZ3RoIC0gMV0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMjUyLDYgKzI1NCw4IEBAIHZvaWQgSW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpCiAgICAgbmF0aXZl
VHlwZURlY2xhcmF0aW9uLnNldElzT3BhcXVlVHlwZSgpOwogICAgIGlmICh0ZXh0dXJlID09IG1f
dGV4dHVyZURlcHRoMkRBcnJheSkKICAgICAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElz
VGV4dHVyZUFycmF5KCk7CisgICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlRGVwdGhDdWJlKQor
ICAgICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNDdWJlVGV4dHVyZSgpOwogICAgIG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5zZXRUZXh0dXJlRGltZW5zaW9uKDIpOwogICAgIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5zZXRJc0RlcHRoVGV4dHVyZSgpOwogICAgIHRleHR1cmVbaW5uZXJUeXBl
SW5kZXhdID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dApp
bmRleCAzOWUzMjgyMGIxYWYxOWQ0NzVkOWFkYzM4NTk0NTYxZDZmZGIzYjY2Li5jNzg0NDc1ODBk
ODdkNTIwY2NiNmQxNWNhOWJkN2ZjZmIyYjY2NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0
CkBAIC0yNzkzMCw2ICsyNzkzMCwyMDcgQEAgbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKIG5hdGl2ZSBmbG9h
dCBTYW1wbGUoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgaW50MiBvZmZzZXQpOwogbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uKTsKIAorLyogRnVuY3Rpb25zIG5hbWVk
IFNhbXBsZUxldmVsICovCituYXRpdmUgdWludCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludD4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50IFNhbXBs
ZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBM
T0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgdWlu
dCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRl
eHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Citu
YXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUy
RDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgdWludDIgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQyIFNhbXBsZUxldmVsKFRleHR1cmVDdWJl
PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIHVp
bnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8dWludDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0
aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIHVpbnQzIFNhbXBsZUxldmVsKFRleHR1
cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTx1aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50NCBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCk7CituYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50
NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgdWludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgaW50IFNhbXBsZUxldmVsKFRl
eHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRp
dmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludCBTYW1wbGVMZXZlbChUZXh0
dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Citu
YXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50IFNhbXBsZUxl
dmVsKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9E
KTsKK25hdGl2ZSBpbnQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxv
YXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZz
ZXQpOworbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQyIFNhbXBsZUxldmVs
KFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExP
RCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQzIFNh
bXBsZUxldmVsKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOworbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDMg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGlu
dDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOwor
bmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUy
RDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGlu
dDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25h
dGl2ZSBpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludDQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDQgU2FtcGxl
TGV2ZWwoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdCBT
YW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4
dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Citu
YXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRleHR1
cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBv
ZmZzZXQpOworbmF0aXZlIGZsb2F0MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQyIFNh
bXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQyIFNhbXBsZUxldmVsKFRl
eHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsK
K25hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQy
IG9mZnNldCk7CituYXRpdmUgZmxvYXQzIFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdDMg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDMgU2FtcGxlTGV2ZWwo
VGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OworbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZlbChU
ZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0
NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0NCBTYW1wbGVMZXZl
bChUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExP
RCk7CituYXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQgU2FtcGxlTGV2
ZWwoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmVEZXB0
aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7Citu
YXRpdmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxv
YXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgTE9EKTsKKworLyogRnVuY3Rpb25zIG5hbWVkIFNhbXBsZUJpYXMgKi8K
K25hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQp
OworbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1aW50IFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1aW50MiBTYW1w
bGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
Qmlhcyk7CituYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50
MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5
PHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgdWludDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTx1aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgdWludDMgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwor
bmF0aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludDMgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7CituYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0
aXZlIHVpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJE
PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1
aW50NCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMp
OworbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50
NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBpbnQgU2FtcGxlQmlh
cyhUZXh0dXJlMkQ8aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBp
bnQyIG9mZnNldCk7CituYXRpdmUgaW50IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBpbnQgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxp
bnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGludDIg
U2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgQmlhcyk7CituYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxl
ciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50
MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGludDIgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxp
bnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7
CituYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludDI+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJl
MkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUg
aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1
cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwor
bmF0aXZlIGludDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxv
YXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50MyBTYW1w
bGVCaWFzKFRleHR1cmVDdWJlPGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
IEJpYXMpOworbmF0aXZlIGludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8aW50ND4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRl
eHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQy
IG9mZnNldCk7CituYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGludDQgU2FtcGxl
QmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmVDdWJl
PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZs
b2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0
aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVy
ZTJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdDIgU2Ft
cGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dCBCaWFzKTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQyPiwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUg
ZmxvYXQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0MyBT
YW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDM+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2
ZSBmbG9hdDMgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywg
aW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQ0
IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0
aXZlIGZsb2F0NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
LCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8Zmxv
YXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9h
dCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRleHR1cmVEZXB0aDJE
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdCBTYW1w
bGVCaWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRp
b24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVCaWFzKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJp
YXMpOworCisvKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlR3JhZCAqLworbmF0aXZlIHVpbnQgU2Ft
cGxlR3JhZChUZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQy
IG9mZnNldCk7CituYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZl
IHVpbnQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWlu
dCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOworbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKK25hdGl2ZSB1aW50MiBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwor
bmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBm
bG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIHVpbnQyIFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50MiBTYW1w
bGVHcmFkKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDMgRERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyRDx1
aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7
CituYXRpdmUgdWludDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2
ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSB1aW50MyBTYW1wbGVH
cmFkKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludDMgU2FtcGxlR3Jh
ZChUZXh0dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIERE
WCwgZmxvYXQzIEREWSk7CituYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDQ+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0
aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWlu
dDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgdWludDQgU2FtcGxlR3JhZChU
ZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUdyYWQoVGV4
dHVyZUN1YmU8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZs
b2F0MyBERFkpOworbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGludCBT
YW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQgU2FtcGxlR3JhZChU
ZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFkpOworbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBv
ZmZzZXQpOworbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CituYXRpdmUgaW50MiBT
YW1wbGVHcmFkKFRleHR1cmUyRDxpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9h
dDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGlu
dDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRp
dmUgaW50MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBp
bnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CituYXRpdmUgaW50MyBTYW1wbGVHcmFkKFRleHR1
cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKK25hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25h
dGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgaW50MyBTYW1wbGVH
cmFkKFRleHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0
MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQzIFNhbXBsZUdyYWQo
VGV4dHVyZUN1YmU8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwg
ZmxvYXQzIEREWSk7CituYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBp
bnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24s
IGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQ0IFNhbXBs
ZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgaW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFy
cmF5PGludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBE
RFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8aW50
ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Citu
YXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGZsb2F0IFNhbXBsZUdy
YWQoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERY
LCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9h
dD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50
MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOworbmF0aXZl
IGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9j
YXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFk
KFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlR3JhZChUZXh0
dXJlMkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgs
IGZsb2F0MiBERFkpOworbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZs
b2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwg
aW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGZsb2F0
Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7Citu
YXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgZmxvYXQzIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVHcmFk
KFRleHR1cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8
ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBmbG9hdDQg
U2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQ0IFNhbXBs
ZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBm
bG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJl
MkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJl
Q3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0
MyBERFkpOworbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZl
IGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBm
bG9hdCBTYW1wbGVHcmFkKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGZsb2F0IFNhbXBs
ZUdyYWQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0IFNh
bXBsZUdyYWQoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CisKIC8qIEZ1bmN0aW9ucyBuYW1lZCBvcGVyYXRv
ci56d3g9ICovCiBib29sNCBvcGVyYXRvci56d3g9KGJvb2w0IHYsIGJvb2wzIGMpIHsKICAgICBi
b29sNCByZXN1bHQgPSB2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdlNjgyM2Y2Y2FmMDgwM2QzY2I3YjU0YjFkZDEwODAx
NmQ2NjYxNDIuLjdlMjVkNTExOTEzNWYzNTQ3MTkxMjBhZGJkODBiNTNkZjE5MzFiMDUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOS0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gSW1wbGVtZW50IFNhbXBsZUxldmVsKCks
IFNhbXBsZUJpYXMoKSwgYW5kIFNhbXBsZUdyYWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJp
YXMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL3RleHR1cmVz
LXNhbXBsZS1iaWFzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWw6IEFkZGVkLgorCiAyMDE5
LTA4LTI3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIE1ha2UgRnJhbWVMb2FkZXI6Om9wZW4oKSBzZXQgb3V0Z29pbmcgcmVmZXJyZXIgcHJvcGVy
bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUt
Ymlhcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNh
bXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlN2JlN2Y0MTZhYTU1ZTNjYmZh
NTRkODNlOTJjM2FlYTMzYzBmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlhcy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy93
ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Cis8c2NyaXB0Pgor
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworZHJhd1do
aXRlU3F1YXJlT25CbHVlQmFja2dyb3VuZEluU29mdHdhcmUoY2FudmFzKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rl
eHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVy
ZXMtc2FtcGxlLWJpYXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmYzNTQ2MWQ5ZDEyMTZkNzg4NTI3ZjAx
MmEzNWU1ZmIxZjQ4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLmh0bWwKQEAgLTAsMCArMSwxNzIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy93ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+PC9jYW52YXM+Cis8c2NyaXB0PgorY29uc3Qgc2hhZGVy
U291cmNlID0gYAorc3RydWN0IEludGVybWVkaWF0ZSB7CisgICAgZmxvYXQ0IHBvc2l0aW9uIDog
U1ZfUG9zaXRpb247CisgICAgZmxvYXQyIHRleHR1cmVDb29yZGluYXRlIDogYXR0cmlidXRlKDAp
OworfQorCit2ZXJ0ZXggSW50ZXJtZWRpYXRlIHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24g
OiBhdHRyaWJ1dGUoMCksIGZsb2F0MiB0ZXh0dXJlQ29vcmRpbmF0ZSA6IGF0dHJpYnV0ZSgxKSkg
eworICAgIEludGVybWVkaWF0ZSByZXN1bHQ7CisgICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRp
b247CisgICAgcmVzdWx0LnRleHR1cmVDb29yZGluYXRlID0gdGV4dHVyZUNvb3JkaW5hdGU7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZs
b2F0MiB0ZXh0dXJlQ29vcmRpbmF0ZSA6IGF0dHJpYnV0ZSgwKSwgVGV4dHVyZTJEPGZsb2F0ND4g
dGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVyIDogcmVnaXN0ZXIo
czEpKSA6IFNWX1RhcmdldCAwIHsKKyAgICByZXR1cm4gU2FtcGxlQmlhcyh0aGVUZXh0dXJlLCB0
aGVTYW1wbGVyLCB0ZXh0dXJlQ29vcmRpbmF0ZSwgMSk7Cit9CitgOworCitjb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisKK2FzeW5jIGZ1bmN0aW9uIHN0
YXJ0KGRldmljZSkgeworICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOworICAgIGNvbnN0IHZlcnRleFN0YWdlID0g
e21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07CisgICAg
Y29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDog
ImZyYWdtZW50U2hhZGVyIn07CisgICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5n
bGUtc3RyaXAiOworICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJj
dyIsIGN1bGxNb2RlOiAibm9uZSJ9OworICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKKyAgICBj
b25zdCBjb2xvckJsZW5kID0ge307CisgICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDog
InJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8v
IEdQVUNvbG9yV3JpdGVCaXRzLkFMTAorICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVs
bDsKKyAgICAKKyAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3Jt
YXQ6ICJmbG9hdDQifTsKKyAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiBGbG9hdDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQgKiA0LCBhdHRyaWJ1dGVTZXQ6IFthdHRyaWJ1dGUwXX07CisgICAg
Y29uc3QgYXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgZm9ybWF0OiAiZmxvYXQyIn07
CisgICAgY29uc3QgaW5wdXQxID0ge3N0cmlkZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVN
RU5UICogMiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMV19OworICAgIGNvbnN0IGlucHV0cyA9
IFtpbnB1dDAsIGlucHV0MV07CisgICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4QnVmZmVy
czogaW5wdXRzfTsKKworICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3IgPSB7Ymlu
ZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZWQtdGV4dHVy
ZSJ9LCB7YmluZGluZzogMSwgdmlzaWJpbGl0eTogNywgdHlwZTogInNhbXBsZXIifV19OworICAg
IGNvbnN0IGJpbmRHcm91cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvcik7CisgICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yID0ge2JpbmRHcm91cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKKyAgICBjb25zdCBw
aXBlbGluZUxheW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dERlc2NyaXB0b3IpOworCisgICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3Zl
cnRleFN0YWdlLCBmcmFnbWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlv
blN0YXRlLCBjb2xvclN0YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIHZlcnRleElucHV0LCBzYW1w
bGVDb3VudDogMSwgbGF5b3V0OiBwaXBlbGluZUxheW91dH07CisgICAgY29uc3QgcmVuZGVyUGlw
ZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKTsKKworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0ICsgRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogMiAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKKyAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0g
PSAtMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OworICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVszXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
N10gPSAxOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7CisgICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMF0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAx
OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTRdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKKyAg
ICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE2XSA9IDA7CisgICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxN10gPSAwOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMThdID0g
MDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE5XSA9IDEwMDsKKyAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzIwXSA9IDEwMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzIxXSA9IDA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyMl0gPSAxMDA7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyM10gPSAxMDA7CisgICAgdmVydGV4QnVmZmVy
MC51bm1hcCgpOworCisgICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJEZXNjcmlwdG9yID0ge3Np
emU6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIgKyBVaW50OEFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDEgKiAxLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVFJB
TlNGRVJfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKKyAgICBjb25zdCB0ZXh0dXJl
RGF0YUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIodGV4dHVyZURhdGFCdWZmZXJEZXNjcmlw
dG9yKTsKKyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyID0gYXdhaXQgdGV4
dHVyZURhdGFCdWZmZXIubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZm
ZXIpOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVswXSA9IDI1NTsKKyAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMV0gPSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWlu
dDhBcnJheVsyXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzNdID0gMjU1
OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs0XSA9IDA7CisgICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzVdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhB
cnJheVs2XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzddID0gMjU1Owor
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs4XSA9IDA7CisgICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzldID0gMjU1CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzEwXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1CisgICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzEzXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzE0XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE1XSA9IDI1NTsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTZdID0gMjU1OworICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzE4XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTldID0gMjU1
OworICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7CisKKyAgICBjb25zdCB0ZXh0dXJlRGVz
Y3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBtaXBMZXZl
bENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5T
QU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX0RTVH07CisgICAgY29uc3QgdGV4dHVy
ZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB0
ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKKworICAgIGNvbnN0IHNh
bXBsZXJEZXNjcmlwdG9yID0ge2FkZHJlc3NNb2RlVTogInJlcGVhdCIsIGFkZHJlc3NNb2RlVjog
InJlcGVhdCIsIGFkZHJlc3NNb2RlVzogInJlcGVhdCIsIG1hZ0ZpbHRlcjogImxpbmVhciIsIG1p
bkZpbHRlcjogImxpbmVhciJ9OworICAgIGNvbnN0IHNhbXBsZXIgPSBkZXZpY2UuY3JlYXRlU2Ft
cGxlcihzYW1wbGVyRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9
IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291
cmNlOiBzYW1wbGVyfV07CisgICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6
IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKKyAgICBjb25z
dCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3Ip
OworCisgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKKyAgICBj
b25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9
OworICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBD
aGFpbkRlc2NyaXB0b3IpOworICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0
Q3VycmVudFRleHR1cmUoKTsKKyAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRl
eHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKKworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9CisKKyAgICBjb25zdCBidWZmZXJD
b3B5MVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllU
RVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OworICAgIGNvbnN0IHRleHR1cmVDb3B5MVZpZXcg
PSB7dGV4dHVyZTogdGV4dHVyZX07CisgICAgY29uc3QgY29weTFTaXplID0ge3dpZHRoOiAyLCBo
ZWlnaHQ6IDIsIGRlcHRoOiAxfTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0
dXJlKGJ1ZmZlckNvcHkxVmlldywgdGV4dHVyZUNvcHkxVmlldywgY29weTFTaXplKTsKKyAgICBj
b25zdCBidWZmZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0
OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCByb3dQaXRjaDogVWlu
dDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxLCBpbWFnZUhlaWdodDogVWludDhBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMX07CisgICAgY29uc3QgdGV4dHVyZUNvcHky
VmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZlbDogMX07CisgICAgY29uc3QgY29weTJT
aXplID0ge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxfTsKKyAgICBjb21tYW5kRW5jb2Rl
ci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkyVmlldywgdGV4dHVyZUNvcHkyVmlldywg
Y29weTJTaXplKTsKKworICAgIGNvbnN0IGNsZWFyQ29sb3IgPSB7cjogMCwgZzogMCwgYjogMSwg
YTogMX07CisgICAgY29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0
VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVP
cDogInN0b3JlIiwgY2xlYXJDb2xvcn1dOworICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQgPSBudWxsOworICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNo
bWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OworICAgIGNvbnN0IHJlbmRlclBhc3NFbmNv
ZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9y
KTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7Cisg
ICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CisgICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMCwgdmVydGV4
QnVmZmVyMF0sIFswLCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNF0pOwor
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZW5kUGFzcygpOworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rl
ci5maW5pc2goKTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJd
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CitnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7Cisg
ICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9LCBmdW5jdGlvbigpIHsKKyAgICBk
cmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVhMzNjMGY5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFk
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Citjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7CitkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5T
b2Z0d2FyZShjYW52YXMpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwNDU4MjJmNmRhNjQ4M2FmZGE4MmVmMzc4MmE2NjlhODBhMTlkNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQuaHRt
bApAQCAtMCwwICsxLDE1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KKzxzY3JpcHQ+Citjb25zdCBzaGFkZXJTb3VyY2UgPSBgCit2ZXJ0ZXggZmxvYXQ0IHZl
cnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24g
eworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hh
ZGVyKFRleHR1cmUyRDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIg
dGhlU2FtcGxlciA6IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7CisgICAgcmV0dXJuIFNh
bXBsZUdyYWQodGhlVGV4dHVyZSwgdGhlU2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgZmxvYXQy
KDEsIDApLCBmbG9hdDIoMCwgMSkpOworfQorYDsKKworY29uc3QgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworCithc3luYyBmdW5jdGlvbiBzdGFydChkZXZpY2Up
IHsKKyAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtj
b2RlOiBzaGFkZXJTb3VyY2V9KTsKKyAgICBjb25zdCB2ZXJ0ZXhTdGFnZSA9IHttb2R1bGU6IHNo
YWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRlciJ9OworICAgIGNvbnN0IGZyYWdt
ZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJmcmFnbWVudFNo
YWRlciJ9OworICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5ID0gInRyaWFuZ2xlLXN0cmlwIjsK
KyAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9k
ZTogIm5vbmUifTsKKyAgICBjb25zdCBhbHBoYUJsZW5kID0ge307CisgICAgY29uc3QgY29sb3JC
bGVuZCA9IHt9OworICAgIGNvbnN0IGNvbG9yU3RhdGVzID0gW3tmb3JtYXQ6ICJyZ2JhOHVub3Jt
IiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNrOiAxNX1dOyAvLyBHUFVDb2xvcldy
aXRlQml0cy5BTEwKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxTdGF0ZSA9IG51bGw7CisgICAgCisg
ICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0
In07CisgICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYsIGF0dHJpYnV0ZVNldDogW2F0dHJp
YnV0ZTBdfTsKKyAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQwXTsKKyAgICBjb25zdCB2ZXJ0ZXhJ
bnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OworCisgICAgY29uc3QgYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0
eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHtiaW5kaW5nOiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBl
OiAic2FtcGxlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKKyAgICBjb25zdCBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRHcm91cExh
eW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRv
cG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0
ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsK
KyAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworCisgICAgY29uc3QgdmVydGV4QnVmZmVyMERlc2Ny
aXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDQsIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9Owor
ICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZl
cjBEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIgPSBhd2Fp
dCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIwQXJyYXlCdWZmZXIp
OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0gPSAtMC41OworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVszXSA9IDE7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVs1XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxOworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVs5XSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAxLjA7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAxOworICAgIHZlcnRleEJ1ZmZlcjBG
bG9hdDMyQXJyYXlbMTJdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTNd
ID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOworICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKKyAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFw
KCk7CisKKyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWlu
dDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiArIFVpbnQ4QXJyYXkuQllURVNf
UEVSX0VMRU1FTlQgKiA0ICogMSAqIDEsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9T
UkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHRleHR1cmVEYXRhQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOwor
ICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0
YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7Cisg
ICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OworICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzJdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7CisgICAg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVm
ZmVyVWludDhBcnJheVs1XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZd
ID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7CisgICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVs5XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEwXSA9
IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzExXSA9IDI1NTsKKyAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxM10gPSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNF0g
PSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxNV0gPSAyNTU7CisgICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE2XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTddID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
OF0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE5XSA9IDI1NTsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOworCisgICAgY29uc3QgdGV4dHVyZURlc2NyaXB0
b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfSwgbWlwTGV2ZWxDb3Vu
dDogMiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuU0FNUExF
RCB8IEdQVVRleHR1cmVVc2FnZS5UUkFOU0ZFUl9EU1R9OworICAgIGNvbnN0IHRleHR1cmUgPSBk
ZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7CisgICAgY29uc3QgdGV4dHVy
ZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7CisKKyAgICBjb25zdCBzYW1wbGVy
RGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBtaW5GaWx0ZXI6ICJsaW5lYXIifTsK
KyAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNhbXBsZXIoc2FtcGxlckRlc2NyaXB0
b3IpOworCisgICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3MgPSBbe2JpbmRpbmc6IDAsIHJlc291
cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNvdXJjZTogc2FtcGxlcn1dOworICAg
IGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQsIGJp
bmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307CisgICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IGNvbnRl
eHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7CisgICAgY29uc3Qgc3dhcENoYWluRGVzY3Jp
cHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKKyAgICBjb25zdCBzd2FwQ2hh
aW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNjcmlwdG9yKTsKKyAg
ICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCk7Cisg
ICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNyZWF0ZURlZmF1bHRW
aWV3KCk7CisKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOyAvLyB7fQorCisgICAgY29uc3QgYnVmZmVyQ29weTFWaWV3ID0ge2J1ZmZlcjog
dGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
ICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAq
IDIgKiAyfTsKKyAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3ID0ge3RleHR1cmU6IHRleHR1cmV9
OworICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX07
CisgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MVZpZXcs
IHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7CisgICAgY29uc3QgYnVmZmVyQ29weTJWaWV3
ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNldDogVWludDhBcnJheS5CWVRFU19Q
RVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogMSAqIDF9OworICAgIGNvbnN0IHRleHR1cmVDb3B5MlZpZXcgPSB7dGV4dHVyZTogdGV4
dHVyZSwgbWlwTGV2ZWw6IDF9OworICAgIGNvbnN0IGNvcHkyU2l6ZSA9IHt3aWR0aDogMSwgaGVp
Z2h0OiAxLCBkZXB0aDogMX07CisgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVy
ZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcsIGNvcHkyU2l6ZSk7CisKKyAgICBj
b25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6IDF9OworICAgIGNvbnN0IGNv
bG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRleHR1cmVWaWV3LCByZXNvbHZl
VGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6ICJzdG9yZSIsIGNsZWFyQ29s
b3J9XTsKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKKyAgICBjb25z
dCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50fTsKKyAgICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVy
LmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOworICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZl
cnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOworICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmRyYXcoNCwgMSwgMCwgMCk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwor
ICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKKyAgICBk
ZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CitnZXRC
YXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7CisgICAgc3RhcnQoZGV2aWNlKS50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgfSk7Cit9LCBmdW5jdGlvbigpIHsKKyAgICBkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1
cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1sZXZlbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZTdiZTdm
NDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZh
cz4KKzxzY3JpcHQ+Citjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7CitkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI1ODM3NTc1
ZDU2ZjhlODU0ZDBkNzQ1ODE1OTViYTZkYTVkOThhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbApAQCAtMCwwICsx
LDE1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3Jp
cHQ+Citjb25zdCBzaGFkZXJTb3VyY2UgPSBgCit2ZXJ0ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihm
bG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCkpIDogU1ZfUG9zaXRpb24geworICAgIHJldHVy
biBwb3NpdGlvbjsKK30KKworZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKFRleHR1cmUy
RDxmbG9hdDQ+IHRoZVRleHR1cmUgOiByZWdpc3Rlcih0MCksIHNhbXBsZXIgdGhlU2FtcGxlciA6
IHJlZ2lzdGVyKHMxKSkgOiBTVl9UYXJnZXQgMCB7CisgICAgcmV0dXJuIFNhbXBsZUxldmVsKHRo
ZVRleHR1cmUsIHRoZVNhbXBsZXIsIGZsb2F0MigwLjUsIDAuNSksIDEpOworfQorYDsKKworY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworCithc3luYyBm
dW5jdGlvbiBzdGFydChkZXZpY2UpIHsKKyAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOiBzaGFkZXJTb3VyY2V9KTsKKyAgICBjb25zdCB2ZXJ0
ZXhTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleFNoYWRl
ciJ9OworICAgIGNvbnN0IGZyYWdtZW50U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVu
dHJ5UG9pbnQ6ICJmcmFnbWVudFNoYWRlciJ9OworICAgIGNvbnN0IHByaW1pdGl2ZVRvcG9sb2d5
ID0gInRyaWFuZ2xlLXN0cmlwIjsKKyAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUgPSB7ZnJv
bnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKKyAgICBjb25zdCBhbHBoYUJsZW5kID0g
e307CisgICAgY29uc3QgY29sb3JCbGVuZCA9IHt9OworICAgIGNvbnN0IGNvbG9yU3RhdGVzID0g
W3tmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgYWxwaGFCbGVuZCwgY29sb3JCbGVuZCwgd3JpdGVNYXNr
OiAxNX1dOyAvLyBHUFVDb2xvcldyaXRlQml0cy5BTEwKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxT
dGF0ZSA9IG51bGw7CisgICAgCisgICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2NhdGlv
bjogMCwgZm9ybWF0OiAiZmxvYXQ0In07CisgICAgY29uc3QgaW5wdXQwID0ge3N0cmlkZTogMTYs
IGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKKyAgICBjb25zdCBpbnB1dHMgPSBbaW5wdXQw
XTsKKyAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9OworCisg
ICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5n
OiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHtiaW5kaW5nOiAx
LCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3Vw
TGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yKTsKKyAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3Vw
TGF5b3V0czogW2JpbmRHcm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisK
KyAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdt
ZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3Rh
dGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKKyAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworCisgICAgY29u
c3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKKyAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0g
PSAtMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OworICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVszXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
N10gPSAxOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7CisgICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMF0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAx
OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTRdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKKyAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7CisKKyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckRl
c2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICog
MiArIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDEsIHVzYWdlOiBHUFVC
dWZmZXJVc2FnZS5UUkFOU0ZFUl9TUkMgfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAg
IGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0
YUJ1ZmZlckRlc2NyaXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZm
ZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3Qg
dGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFC
dWZmZXJBcnJheUJ1ZmZlcik7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0g
MjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxXSA9IDA7CisgICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbM10gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMjU1
OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs1XSA9IDA7CisgICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbN10gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzhdID0gMjU1Owor
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs5XSA9IDA7CisgICAgdGV4dHVyZURhdGFC
dWZmZXJVaW50OEFycmF5WzEwXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzExXSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTJdID0gMjU1Owor
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxM10gPSAwOworICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxNF0gPSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJh
eVsxNV0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE2XSA9IDI1NTsK
KyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTddID0gMjU1OworICAgIHRleHR1cmVE
YXRhQnVmZmVyVWludDhBcnJheVsxOF0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzE5XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlci51bm1hcCgpOworCisgICAg
Y29uc3QgdGV4dHVyZURlc2NyaXB0b3IgPSB7c2l6ZToge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRl
cHRoOiAxfSwgbWlwTGV2ZWxDb3VudDogMiwgZm9ybWF0OiAicmdiYTh1bm9ybSIsIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuU0FNUExFRCB8IEdQVVRleHR1cmVVc2FnZS5UUkFOU0ZFUl9EU1R9Owor
ICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRv
cik7CisgICAgY29uc3QgdGV4dHVyZVZpZXcgPSB0ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7
CisKKyAgICBjb25zdCBzYW1wbGVyRGVzY3JpcHRvciA9IHttYWdGaWx0ZXI6ICJsaW5lYXIiLCBt
aW5GaWx0ZXI6ICJsaW5lYXIifTsKKyAgICBjb25zdCBzYW1wbGVyID0gZGV2aWNlLmNyZWF0ZVNh
bXBsZXIoc2FtcGxlckRlc2NyaXB0b3IpOworCisgICAgY29uc3QgYmluZEdyb3VwQmluZGluZ3Mg
PSBbe2JpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlld30sIHtiaW5kaW5nOiAxLCByZXNv
dXJjZTogc2FtcGxlcn1dOworICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0
OiBiaW5kR3JvdXBMYXlvdXQsIGJpbmRpbmdzOiBiaW5kR3JvdXBCaW5kaW5nc307CisgICAgY29u
c3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9y
KTsKKworICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7CisgICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKKyAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKKyAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7CisgICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7CisKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQorCisgICAgY29uc3QgYnVmZmVy
Q29weTFWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIHJvd1BpdGNoOiBVaW50OEFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyfTsKKyAgICBjb25zdCB0ZXh0dXJlQ29weTFWaWV3
ID0ge3RleHR1cmU6IHRleHR1cmV9OworICAgIGNvbnN0IGNvcHkxU2l6ZSA9IHt3aWR0aDogMiwg
aGVpZ2h0OiAyLCBkZXB0aDogMX07CisgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4
dHVyZShidWZmZXJDb3B5MVZpZXcsIHRleHR1cmVDb3B5MVZpZXcsIGNvcHkxU2l6ZSk7CisgICAg
Y29uc3QgYnVmZmVyQ29weTJWaWV3ID0ge2J1ZmZlcjogdGV4dHVyZURhdGFCdWZmZXIsIG9mZnNl
dDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiwgcm93UGl0Y2g6IFVp
bnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJy
YXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMSAqIDF9OworICAgIGNvbnN0IHRleHR1cmVDb3B5
MlZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZSwgbWlwTGV2ZWw6IDF9OworICAgIGNvbnN0IGNvcHky
U2l6ZSA9IHt3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aDogMX07CisgICAgY29tbWFuZEVuY29k
ZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5MlZpZXcsIHRleHR1cmVDb3B5MlZpZXcs
IGNvcHkyU2l6ZSk7CisKKyAgICBjb25zdCBjbGVhckNvbG9yID0ge3I6IDAsIGc6IDAsIGI6IDEs
IGE6IDF9OworICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1
dFRleHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3Jl
T3A6ICJzdG9yZSIsIGNsZWFyQ29sb3J9XTsKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50ID0gbnVsbDsKKyAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9IHtjb2xvckF0dGFj
aG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKKyAgICBjb25zdCByZW5kZXJQYXNzRW5j
b2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwor
ICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIHJl
bmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcjBdLCBbMF0p
OworICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7CisgICAgcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5j
b2Rlci5maW5pc2goKTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZm
ZXJdKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CitnZXRCYXNpY0RldmljZSgpLnRoZW4oZnVuY3Rpb24oZGV2aWNlKSB7
CisgICAgc3RhcnQoZGV2aWNlKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9LCBmdW5jdGlvbigpIHsKKyAg
ICBkcmF3V2hpdGVTcXVhcmVPbkJsdWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377834</attachid>
            <date>2019-09-01 20:12:03 -0700</date>
            <delta_ts>2019-09-03 20:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201385-20190902121202.patch</filename>
            <type>text/plain</type>
            <size>56623</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY4OWNlNTAxMzM3Nzkx
MTcwYjE3M2NjNDhlMzY1OTc0YTkzZWZlYy4uMzM2M2JhY2Y0MTU0ZjlhYjJmZTRhOTFlNGQ4ZjEz
ZDk2MWE0ZGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA5LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBJ
bXBsZW1lbnQgU2FtcGxlTGV2ZWwoKSwgU2FtcGxlQmlhcygpLCBhbmQgU2FtcGxlR3JhZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzODUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBhcmUg
dXNlZCBpbiB0aGUgQmFieWxvbi5qcyBkZW1vLgorCisgICAgICAgIFRlc3RzOiB3ZWJncHUvd2hs
c2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbAorICAgICAgICAgICAgICAgd2ViZ3B1L3dobHNs
L3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OnNhbXBsZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjppbmxpbmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
SW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQ6CisKIDIwMTktMDktMDEgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI0OTM2Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgK
aW5kZXggZGE3MWQ1MmY1MGJlNDk5YjcyOGYwN2U5YmU3NzlmYTk5OTY2NmZhYi4uNjk5ZjhjNTYw
ODhjMDEyNTI1ODdhODgxM2ZiMzgwNjRjZWQyNWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZl
VHlwZURlY2xhcmF0aW9uLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNU
ZXh0dXJlQXJyYXkoKSBjb25zdCB7IHJldHVybiBtX2lzVGV4dHVyZUFycmF5OyB9CiAgICAgYm9v
bCBpc0RlcHRoVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aFRleHR1cmU7IH0KICAg
ICBib29sIGlzV3JpdGFibGVUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1dyaXRhYmxlVGV4
dHVyZTsgfQorICAgIGJvb2wgaXNDdWJlVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdWJl
VGV4dHVyZTsgfQogICAgIHVpbnQgdGV4dHVyZURpbWVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZURpbWVuc2lvbjsgfQogICAgIGJvb2wgaXNTaWduZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2lnbmVkOyB9CiAgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludCk+JiBjYW5SZXBy
ZXNlbnRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRJbnRlZ2VyOyB9CkBA
IC0xMjIsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNUZXh0dXJlQXJyYXkoKSB7
IG1faXNUZXh0dXJlQXJyYXkgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRJc0RlcHRoVGV4dHVyZSgp
IHsgbV9pc0RlcHRoVGV4dHVyZSA9IHRydWU7IH0KICAgICB2b2lkIHNldElzV3JpdGFibGVUZXh0
dXJlKCkgeyBtX2lzV3JpdGFibGVUZXh0dXJlID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNDdWJl
VGV4dHVyZSgpIHsgbV9pc0N1YmVUZXh0dXJlID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0VGV4dHVy
ZURpbWVuc2lvbih1aW50IHRleHR1cmVEaW1lbnNpb24pIHsgbV90ZXh0dXJlRGltZW5zaW9uID0g
dGV4dHVyZURpbWVuc2lvbjsgfQogICAgIHZvaWQgc2V0SXNTaWduZWQoKSB7IG1faXNTaWduZWQg
PSB0cnVlOyB9CiAgICAgdm9pZCBzZXRDYW5SZXByZXNlbnRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248
Ym9vbChpbnQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEludGVnZXIgPSBXVEZN
b3ZlKGNhblJlcHJlc2VudCk7IH0KQEAgLTE1Myw2ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc1RleHR1cmVBcnJheSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRGVwdGhUZXh0dXJl
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNXcml0YWJsZVRleHR1cmUgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc0N1YmVUZXh0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTaWduZWQgeyBm
YWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNw
cAppbmRleCBlN2IxMjFhNWVhMTBkMDA0ZTE4ZTc5MzQ4NWNkMWNjNjAyMzI1NmZlLi5lY2M1YzE5
ODUwNDEwMGRmMDhmNjYxN2Y4NmZlMTg2Mzg0YWJkZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtMTEwLDYgKzExMCwyNiBAQCBzdGF0aWMgY29u
c3QgY2hhciogdmVjdG9yU3VmZml4KGludCB2ZWN0b3JMZW5ndGgpCiAgICAgfQogfQogCitlbnVt
IGNsYXNzIFNhbXBsZVR5cGUgeworICAgIFNhbXBsZSwKKyAgICBTYW1wbGVMZXZlbCwKKyAgICBT
YW1wbGVCaWFzLAorICAgIFNhbXBsZUdyYWQKK307CisKK3N0YXRpYyBPcHRpb25hbDxTYW1wbGVU
eXBlPiBzYW1wbGVUeXBlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKQoreworICAgIGlmIChm
dW5jdGlvbk5hbWUgPT0gIlNhbXBsZSIpCisgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1w
bGU7CisgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2FtcGxlTGV2ZWwiKQorICAgICAgICByZXR1
cm4gU2FtcGxlVHlwZTo6U2FtcGxlTGV2ZWw7CisgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PSAiU2Ft
cGxlQmlhcyIpCisgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVCaWFzOworICAgIGlm
IChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUdyYWQiKQorICAgICAgICByZXR1cm4gU2FtcGxlVHlw
ZTo6U2FtcGxlR3JhZDsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgY29uc3QgVmVj
dG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmdzLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3Vs
dE5hbWUsIFR5cGVOYW1lciYgdHlwZU5hbWVyKQogewogICAgIGF1dG8gYXNNYXRyaXhUeXBlID0g
WyZdIChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24qIHsKQEAgLTM0Myw4ICszNjMsMjEgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlv
bihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGEK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSA9PSAiU2FtcGxlIikgewotICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDMgfHwgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOworICAgIGlmIChhdXRvIHNhbXBsZVR5
cGUgPSBXSExTTDo6TWV0YWw6OnNhbXBsZVR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkpKSB7CisgICAgICAgIHNpemVfdCBiYXNlQXJndW1lbnRDb3VudCA9IDA7CisgICAgICAg
IHN3aXRjaCAoKnNhbXBsZVR5cGUpIHsKKyAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGU6
CisgICAgICAgICAgICBiYXNlQXJndW1lbnRDb3VudCA9IDM7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVMZXZlbDoKKyAgICAgICAgY2FzZSBTYW1w
bGVUeXBlOjpTYW1wbGVCaWFzOgorICAgICAgICAgICAgYmFzZUFyZ3VtZW50Q291bnQgPSA0Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlR3JhZDoK
KyAgICAgICAgICAgIGJhc2VBcmd1bWVudENvdW50ID0gNTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCkgPT0gYmFzZUFyZ3VtZW50Q291bnQgfHwgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IGJhc2VBcmd1bWVudENvdW50ICsgMSk7CiAg
ICAgICAgIAogICAgICAgICBhdXRvJiB0ZXh0dXJlVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKS0+dW5pZnlOb2RlKCkpKTsKICAgICAg
ICAgYXV0byYgbG9jYXRpb25UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVsyXS0+dHlwZSgpLT51bmlmeU5vZGUoKSkpOwpAQCAtMzUyLDE2ICszODUsMzcg
QEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGEKICAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IGRv
d25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlw
ZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkudW5pZnlOb2RlKCkpKTsKICAgICAg
ICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGggPSB2ZWN0b3JMZW5ndGgocmV0dXJuVHlwZSk7CiAK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICBhcmdzWzBdLCAiLnNh
bXBsZSgiLCBhcmdzWzFdLCAiLCAiKTsKKyAgICAgICAgaW50IGFyZ3VtZW50SW5kZXggPSAwOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAiLnNhbXBs
ZSgiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIiwgIik7CisgICAgICAgIGFyZ3VtZW50SW5k
ZXggKz0gMjsKIAogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewog
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbMl0sICcuJywgInh5enci
X3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzW2FyZ3VtZW50SW5kZXhdLCAnLicsICJ4eXp3Il9z
dHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbYXJn
dW1lbnRJbmRleF0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5n
dGggLSAxLCAxKSk7CisgICAgICAgICAgICArK2FyZ3VtZW50SW5kZXg7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1syXSk7Ci0gICAgICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbM10pOworICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1thcmd1bWVudEluZGV4KytdKTsKKworICAgICAg
ICBzd2l0Y2ggKCpzYW1wbGVUeXBlKSB7CisgICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxl
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2FtcGxlVHlwZTo6U2FtcGxlTGV2
ZWw6CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBsZXZlbCgiLCBhcmdzW2Fy
Z3VtZW50SW5kZXgrK10sICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
YW1wbGVUeXBlOjpTYW1wbGVCaWFzOgorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiwgYmlhcygiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10sICIpIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTYW1wbGVUeXBlOjpTYW1wbGVHcmFkOgorICAgICAgICAgICAgaWYg
KHRleHR1cmVUeXBlLmlzQ3ViZVRleHR1cmUoKSkKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCBncmFkaWVudGN1YmUoIiwgYXJnc1thcmd1bWVudEluZGV4XSwgIiwgIiwg
YXJnc1thcmd1bWVudEluZGV4ICsgMV0sICIpIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZ3JhZGllbnQyZCgiLCBhcmdzW2FyZ3Vt
ZW50SW5kZXhdLCAiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXggKyAxXSwgIikiKTsKKyAgICAgICAg
ICAgIGFyZ3VtZW50SW5kZXggKz0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSBiYXNlQXJndW1lbnRDb3VudCArIDEpCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiLCBhcmdzW2FyZ3VtZW50SW5kZXgrK10pOwogICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKSIpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkp
CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIsICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwpAQCAtNTA5LDIxICs1NjMsNiBAQCB2b2lkIGlu
bGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJTYW1wbGVCaWFzIikgewotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMyBJ
bXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLQotICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiU2FtcGxlR3JhZCIpIHsKLSAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU4MTMgSW1wbGVtZW50IHRoaXMKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0K
LSAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlNhbXBsZUxldmVs
IikgewotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIH0KLQogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR2F0
aGVyIikgewogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTgxMyBJbXBsZW1lbnQgdGhpcwogICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJ
bnRyaW5zaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
SW50cmluc2ljcy5jcHAKaW5kZXggZTk5MTNhMjRiNjUxZmE5Y2M1NzkzOGIwNmQ1ZGI1NzExNzRh
NWVlOC4uNWMyYmM0ZTFjYmUwNDMxMTBjZjgzMTQzY2E4M2QxNTJhN2Y1MmU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNp
Y3MuY3BwCkBAIC0yMzEsNiArMjMxLDggQEAgYm9vbCBJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVy
ZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW8KICAgICAg
ICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRleHR1cmVEaW1lbnNpb24oMik7CiAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRleHR1cmUzRCIgfHwgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldUZXh0dXJlM0QiKQogICAgICAgICBuYXRpdmVUeXBl
RGVjbGFyYXRpb24uc2V0VGV4dHVyZURpbWVuc2lvbigzKTsKKyAgICBpZiAobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZUN1YmUiKQorICAgICAgICBuYXRpdmVUeXBlRGVj
bGFyYXRpb24uc2V0SXNDdWJlVGV4dHVyZSgpOwogICAgIG1fZnVsbFRleHR1cmVzW3RleHR1cmVU
eXBlSW5kZXhdW2lubmVyVHlwZUluZGV4XVt2ZWN0b3JMZW5ndGggLSAxXSA9ICZuYXRpdmVUeXBl
RGVjbGFyYXRpb247CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTIsNiArMjU0LDggQEAgdm9p
ZCBJbnRyaW5zaWNzOjphZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGkKICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNPcGFx
dWVUeXBlKCk7CiAgICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlRGVwdGgyREFycmF5KQogICAg
ICAgICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlQXJyYXkoKTsKKyAgICBpZiAo
dGV4dHVyZSA9PSBtX3RleHR1cmVEZXB0aEN1YmUpCisgICAgICAgIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5zZXRJc0N1YmVUZXh0dXJlKCk7CiAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldFRl
eHR1cmVEaW1lbnNpb24oMik7CiAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzRGVwdGhU
ZXh0dXJlKCk7CiAgICAgdGV4dHVyZVtpbm5lclR5cGVJbmRleF0gPSAmbmF0aXZlVHlwZURlY2xh
cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTdGFuZGFyZExpYnJhcnkudHh0IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CmluZGV4IDY5MmJlZjAxMjFhOTdmNTk3Nzc4
MmZkZDFkYTM2MmJlZDcwMjNhYTUuLmIwZmZhNjBkOGUyMDhjMDkyNjllZmJhYjI1NzE0Yzk5ZjIz
M2Q5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKQEAgLTEzNjkzLDYgKzEzNjkzLDIwNyBA
QCBuYXRpdmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24pOwogbmF0aXZlIGZsb2F0IFNhbXBsZShUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBpbnQyIG9mZnNldCk7CiBuYXRp
dmUgZmxvYXQgU2FtcGxlKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24pOwogCisvKiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlTGV2ZWwgKi8KK25hdGl2ZSB1
aW50IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOworbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQ+LCBz
YW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZl
IHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFy
cmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZz
ZXQpOworbmF0aXZlIHVpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChU
ZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7Citu
YXRpdmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50MiBTYW1wbGVM
ZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKK25hdGl2ZSB1aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTx1aW50Mj4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRp
dmUgdWludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJE
PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIHVp
bnQzIFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7
CituYXRpdmUgdWludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8dWludDM+LCBzYW1wbGVy
LCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQz
IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBMT0QpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDx1aW50ND4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSB1aW50NCBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFy
cmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZl
IHVpbnQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQz
IGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50NCBTYW1wbGVM
ZXZlbChUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKK25hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVy
ZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgaW50IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8aW50Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGludDIgU2FtcGxlTGV2
ZWwoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7
CituYXRpdmUgaW50MiBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0
MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50MiBTYW1wbGVM
ZXZlbChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QpOworbmF0aXZlIGludDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mj4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUg
aW50MiBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGludDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDM+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgaW50MyBTYW1w
bGVMZXZlbChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
TE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGlu
dDMgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50MyBTYW1wbGVMZXZlbChU
ZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOwor
bmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7
CituYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxpbnQ0Piwgc2FtcGxlciwg
ZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGludDQgU2FtcGxlTGV2ZWwoVGV4
dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBp
bnQyIG9mZnNldCk7CituYXRpdmUgaW50NCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxpbnQ0Piwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0IFNhbXBs
ZUxldmVsKFRleHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
TE9EKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0
IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0IFNhbXBsZUxldmVsKFRleHR1cmUyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0
KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwo
VGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9EKTsK
K25hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZs
b2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQyIFNh
bXBsZUxldmVsKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8
ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0
KTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlTGV2ZWwoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZl
bChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0Qp
OworbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwg
ZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDMg
U2FtcGxlTGV2ZWwoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBMT0QpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJh
eTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZz
ZXQpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVMZXZlbChUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUxl
dmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExP
RCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IExPRCwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0
NCBTYW1wbGVMZXZlbChUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IExPRCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmUyREFy
cmF5PGZsb2F0ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9m
ZnNldCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUxldmVsKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVM
ZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxv
YXQgTE9EKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVwdGgyRDxmbG9hdD4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgTE9ELCBpbnQyIG9mZnNldCk7CituYXRp
dmUgZmxvYXQgU2FtcGxlTGV2ZWwoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgTE9EKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9h
dCBMT0QsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVMZXZlbChUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBMT0QpOworCisv
KiBGdW5jdGlvbnMgbmFtZWQgU2FtcGxlQmlhcyAqLworbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8dWludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Citu
YXRpdmUgdWludCBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Piwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludCBTYW1wbGVCaWFz
KFRleHR1cmUyREFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJp
YXMpOworbmF0aXZlIHVpbnQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWlu
dCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOworbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEPHVpbnQyPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1aW50MiBTYW1w
bGVCaWFzKFRleHR1cmUyRDx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQg
QmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJy
YXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZl
IHVpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8dWludDI+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50MiBTYW1wbGVC
aWFzKFRleHR1cmVDdWJlPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBC
aWFzKTsKK25hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgdWludDMgU2FtcGxlQmlhcyhU
ZXh0dXJlMkQ8dWludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50MyBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQz
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSB1aW50MyBT
YW1wbGVCaWFzKFRleHR1cmUyREFycmF5PHVpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludDMgU2FtcGxlQmlhcyhUZXh0
dXJlQ3ViZTx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7Citu
YXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJE
PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgdWludDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgdWludDQgU2FtcGxlQmlh
cyhUZXh0dXJlMkRBcnJheTx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQg
QmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8
dWludDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGlu
dCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IEJpYXMpOworbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQ+LCBzYW1wbGVy
LCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQg
U2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOworbmF0aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludD4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0
aXZlIGludCBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2Nh
dGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgaW50MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQy
Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBpbnQyIFNh
bXBsZUJpYXMoVGV4dHVyZTJEPGludDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0
IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQyIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJy
YXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUg
aW50MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQyIFNhbXBsZUJpYXMo
VGV4dHVyZUN1YmU8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
CituYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRleHR1cmUyRDxpbnQzPiwgc2FtcGxlciwgZmxvYXQy
IGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJE
PGludDM+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0
KTsKK25hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50Mz4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgaW50MyBTYW1wbGVCaWFzKFRl
eHR1cmUyREFycmF5PGludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMs
IGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgaW50NCBTYW1w
bGVCaWFzKFRleHR1cmUyRDxpbnQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBC
aWFzKTsKK25hdGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBm
bG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBpbnQ0IFNh
bXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQgQmlhcyk7CituYXRpdmUgaW50NCBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGludDQ+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25h
dGl2ZSBpbnQ0IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8aW50ND4sIHNhbXBsZXIsIGZsb2F0MyBs
b2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8
ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZs
b2F0IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0
dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
CituYXRpdmUgZmxvYXQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0
IFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0MiBT
YW1wbGVCaWFzKFRleHR1cmUyRDxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDIgU2FtcGxlQmlhcyhUZXh0dXJl
MkRBcnJheTxmbG9hdDI+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMpOwor
bmF0aXZlIGZsb2F0MiBTYW1wbGVCaWFzKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0
MiBTYW1wbGVCaWFzKFRleHR1cmVDdWJlPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlv
biwgZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0
Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CituYXRpdmUgZmxvYXQz
IFNhbXBsZUJpYXMoVGV4dHVyZTJEPGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQgQmlhcywgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0MyBTYW1wbGVCaWFzKFRleHR1
cmUyREFycmF5PGZsb2F0Mz4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7
CituYXRpdmUgZmxvYXQzIFNhbXBsZUJpYXMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxv
YXQzIFNhbXBsZUJpYXMoVGV4dHVyZUN1YmU8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8Zmxv
YXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdCBCaWFzKTsKK25hdGl2ZSBmbG9h
dDQgU2FtcGxlQmlhcyhUZXh0dXJlMkQ8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9u
LCBmbG9hdCBCaWFzLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQ0IFNhbXBsZUJpYXMoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdCBCaWFz
KTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlMkRBcnJheTxmbG9hdDQ+LCBzYW1w
bGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBm
bG9hdDQgU2FtcGxlQmlhcyhUZXh0dXJlQ3ViZTxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9j
YXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0IEJpYXMpOworbmF0aXZl
IGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDIg
bG9jYXRpb24sIGZsb2F0IEJpYXMsIGludDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVC
aWFzKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24s
IGZsb2F0IEJpYXMpOworbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcywgaW50MiBvZmZz
ZXQpOworbmF0aXZlIGZsb2F0IFNhbXBsZUJpYXMoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4sIHNh
bXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQgQmlhcyk7CisKKy8qIEZ1bmN0aW9ucyBuYW1l
ZCBTYW1wbGVHcmFkICovCituYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50Piwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2
ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRp
b24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50IFNh
bXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgdWludCBTYW1wbGVHcmFkKFRleHR1cmUy
REFycmF5PHVpbnQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50IFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8
dWludD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7
CituYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8dWludDI+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIHVpbnQyIFNhbXBs
ZUdyYWQoVGV4dHVyZTJEPHVpbnQyPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIg
RERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgdWludDIgU2FtcGxlR3JhZChU
ZXh0dXJlMkRBcnJheTx1aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSk7CituYXRpdmUgdWludDIgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTx1
aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwg
aW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8dWludDI+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOworbmF0
aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPHVpbnQzPiwgc2FtcGxlciwgZmxvYXQyIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSB1aW50MyBTYW1wbGVHcmFk
KFRleHR1cmUyRDx1aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEQXJyYXk8dWludDM+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZs
b2F0MiBERFkpOworbmF0aXZlIHVpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8dWludDM+
LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIg
b2Zmc2V0KTsKK25hdGl2ZSB1aW50MyBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPHVpbnQzPiwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSB1
aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyRDx1aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlv
biwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0
dXJlMkQ8dWludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0
MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFy
cmF5PHVpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIg
RERZKTsKK25hdGl2ZSB1aW50NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PHVpbnQ0Piwgc2Ft
cGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNl
dCk7CituYXRpdmUgdWludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTx1aW50ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CituYXRpdmUgaW50IFNh
bXBsZUdyYWQoVGV4dHVyZTJEPGludD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQy
IEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgaW50IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludD4s
IHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBv
ZmZzZXQpOworbmF0aXZlIGludCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGludD4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgaW50
IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgaW50IFNhbXBs
ZUdyYWQoVGV4dHVyZUN1YmU8aW50Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMg
RERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDI+
LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0
aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlMkQ8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2Nh
dGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDIg
U2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9u
LCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBpbnQyIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEQXJyYXk8aW50Mj4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDIgU2FtcGxlR3JhZChUZXh0dXJlQ3Vi
ZTxpbnQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKK25hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDM+LCBzYW1wbGVyLCBmbG9h
dDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGludDMgU2FtcGxl
R3JhZChUZXh0dXJlMkQ8aW50Mz4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIERE
WCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0
dXJlMkRBcnJheTxpbnQzPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZKTsKK25hdGl2ZSBpbnQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50Mz4s
IHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBv
ZmZzZXQpOworbmF0aXZlIGludDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQzPiwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSBpbnQ0
IFNhbXBsZUdyYWQoVGV4dHVyZTJEPGludDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZs
b2F0MiBERFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8
aW50ND4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwg
aW50MiBvZmZzZXQpOworbmF0aXZlIGludDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxpbnQ0
Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25h
dGl2ZSBpbnQ0IFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8aW50ND4sIHNhbXBsZXIsIGZsb2F0
MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZl
IGludDQgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxpbnQ0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRl
eHR1cmUyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQ+LCBzYW1w
bGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0
KTsKK25hdGl2ZSBmbG9hdCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxl
ciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2ZSBmbG9h
dCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQg
U2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwg
ZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CituYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVy
ZTJEPGZsb2F0Mj4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQy
IEREWSk7CituYXRpdmUgZmxvYXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEPGZsb2F0Mj4sIHNhbXBs
ZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQp
OworbmF0aXZlIGZsb2F0MiBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0Mj4sIHNhbXBs
ZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgZmxv
YXQyIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxv
Y2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxv
YXQyIFNhbXBsZUdyYWQoVGV4dHVyZUN1YmU8ZmxvYXQyPiwgc2FtcGxlciwgZmxvYXQzIGxvY2F0
aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZKTsKK25hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChU
ZXh0dXJlMkQ8ZmxvYXQzPiwgc2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBm
bG9hdDIgRERZKTsKK25hdGl2ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkQ8ZmxvYXQzPiwg
c2FtcGxlciwgZmxvYXQyIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZLCBpbnQyIG9m
ZnNldCk7CituYXRpdmUgZmxvYXQzIFNhbXBsZUdyYWQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQzPiwg
c2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZKTsKK25hdGl2
ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9h
dDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGludDIgb2Zmc2V0KTsKK25hdGl2
ZSBmbG9hdDMgU2FtcGxlR3JhZChUZXh0dXJlQ3ViZTxmbG9hdDM+LCBzYW1wbGVyLCBmbG9hdDMg
bG9jYXRpb24sIGZsb2F0MyBERFgsIGZsb2F0MyBERFkpOworbmF0aXZlIGZsb2F0NCBTYW1wbGVH
cmFkKFRleHR1cmUyRDxmbG9hdDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBE
RFgsIGZsb2F0MiBERFkpOworbmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyRDxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDIgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFksIGlu
dDIgb2Zmc2V0KTsKK25hdGl2ZSBmbG9hdDQgU2FtcGxlR3JhZChUZXh0dXJlMkRBcnJheTxmbG9h
dDQ+LCBzYW1wbGVyLCBmbG9hdDMgbG9jYXRpb24sIGZsb2F0MiBERFgsIGZsb2F0MiBERFkpOwor
bmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmUyREFycmF5PGZsb2F0ND4sIHNhbXBsZXIs
IGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxvYXQyIEREWSwgaW50MiBvZmZzZXQpOwor
bmF0aXZlIGZsb2F0NCBTYW1wbGVHcmFkKFRleHR1cmVDdWJlPGZsb2F0ND4sIHNhbXBsZXIsIGZs
b2F0MyBsb2NhdGlvbiwgZmxvYXQzIEREWCwgZmxvYXQzIEREWSk7CituYXRpdmUgZmxvYXQgU2Ft
cGxlR3JhZChUZXh0dXJlRGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwg
ZmxvYXQyIEREWCwgZmxvYXQyIEREWSk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJl
RGVwdGgyRDxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MiBsb2NhdGlvbiwgZmxvYXQyIEREWCwgZmxv
YXQyIEREWSwgaW50MiBvZmZzZXQpOworbmF0aXZlIGZsb2F0IFNhbXBsZUdyYWQoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4sIHNhbXBsZXIsIGZsb2F0MyBsb2NhdGlvbiwgZmxvYXQyIEREWCwg
ZmxvYXQyIEREWSk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGgyREFycmF5
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDIgRERYLCBmbG9hdDIgRERZ
LCBpbnQyIG9mZnNldCk7CituYXRpdmUgZmxvYXQgU2FtcGxlR3JhZChUZXh0dXJlRGVwdGhDdWJl
PGZsb2F0Piwgc2FtcGxlciwgZmxvYXQzIGxvY2F0aW9uLCBmbG9hdDMgRERYLCBmbG9hdDMgRERZ
KTsKKwogLyogRnVuY3Rpb25zIG5hbWVkIHNpbmggKi8KIG5hdGl2ZSBmbG9hdCBzaW5oKGZsb2F0
KTsKIGZsb2F0MiBzaW5oKGZsb2F0MiB4KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWU3NDNjOWUwZGIwNTMwYmFkZGRj
YTA1YmM3Yzk5YTA3NmViNjQzMi4uNGQ5MWExYzAzZjlmM2FkNmM2ZGZhZDhmNDM0YWI1MDEwYmY5
OTY0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTAxICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBJbXBsZW1lbnQgU2Ft
cGxlTGV2ZWwoKSwgU2FtcGxlQmlhcygpLCBhbmQgU2FtcGxlR3JhZCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJl
cy1zYW1wbGUtYmlhcy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxldmVsLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbDogQWRk
ZWQuCisKIDIwMTktMDktMDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0hMU0xdIFJlc291cmNlcyBkb24ndCB3b3JrIHdoZW4gb25seSBhIHN1
YnNldCBvZiBhIGJpbmQgZ3JvdXAgaXMgcmVmZXJlbmNlZCBieSBhIHNoYWRlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWJpYXMtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2U3YmU3ZjQxNmFhNTVlM2NiZmE1NGQ4M2U5MmMzYWVh
MzNjMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3RleHR1
cmVzLXNhbXBsZS1iaWFzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlv
bnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Citjb25zdCBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CitkcmF3V2hpdGVTcXVhcmVPbkJs
dWVCYWNrZ3JvdW5kSW5Tb2Z0d2FyZShjYW52YXMpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxl
LWJpYXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtYmlh
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyZjM1NDYxZDlkMTIxNmQ3ODg1MjdmMDEyYTM1ZTVmYjFmNDg4
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMt
c2FtcGxlLWJpYXMuaHRtbApAQCAtMCwwICsxLDE3MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MDAiIGhl
aWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Citjb25zdCBzaGFkZXJTb3VyY2UgPSBgCitz
dHJ1Y3QgSW50ZXJtZWRpYXRlIHsKKyAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsK
KyAgICBmbG9hdDIgdGV4dHVyZUNvb3JkaW5hdGUgOiBhdHRyaWJ1dGUoMCk7Cit9CisKK3ZlcnRl
eCBJbnRlcm1lZGlhdGUgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgw
KSwgZmxvYXQyIHRleHR1cmVDb29yZGluYXRlIDogYXR0cmlidXRlKDEpKSB7CisgICAgSW50ZXJt
ZWRpYXRlIHJlc3VsdDsKKyAgICByZXN1bHQucG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICByZXN1
bHQudGV4dHVyZUNvb3JkaW5hdGUgPSB0ZXh0dXJlQ29vcmRpbmF0ZTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQyIHRleHR1cmVD
b29yZGluYXRlIDogYXR0cmlidXRlKDApLCBUZXh0dXJlMkQ8ZmxvYXQ0PiB0aGVUZXh0dXJlIDog
cmVnaXN0ZXIodDApLCBzYW1wbGVyIHRoZVNhbXBsZXIgOiByZWdpc3RlcihzMSkpIDogU1ZfVGFy
Z2V0IDAgeworICAgIHJldHVybiBTYW1wbGVCaWFzKHRoZVRleHR1cmUsIHRoZVNhbXBsZXIsIHRl
eHR1cmVDb29yZGluYXRlLCAxKTsKK30KK2A7CisKK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKworYXN5bmMgZnVuY3Rpb24gc3RhcnQoZGV2aWNlKSB7
CisgICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29k
ZTogc2hhZGVyU291cmNlfSk7CisgICAgY29uc3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhTaGFkZXIifTsKKyAgICBjb25zdCBmcmFnbWVu
dFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFk
ZXIifTsKKyAgICBjb25zdCBwcmltaXRpdmVUb3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7Cisg
ICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRlID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6
ICJub25lIn07CisgICAgY29uc3QgYWxwaGFCbGVuZCA9IHt9OworICAgIGNvbnN0IGNvbG9yQmxl
bmQgPSB7fTsKKyAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIs
IGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0
ZUJpdHMuQUxMCisgICAgY29uc3QgZGVwdGhTdGVuY2lsU3RhdGUgPSBudWxsOworICAgIAorICAg
IGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246IDAsIGZvcm1hdDogImZsb2F0NCJ9
OworICAgIGNvbnN0IGlucHV0MCA9IHtzdHJpZGU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDQsIGF0dHJpYnV0ZVNldDogW2F0dHJpYnV0ZTBdfTsKKyAgICBjb25zdCBhdHRyaWJ1
dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdDIifTsKKyAgICBjb25zdCBp
bnB1dDEgPSB7c3RyaWRlOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAyLCBhdHRy
aWJ1dGVTZXQ6IFthdHRyaWJ1dGUxXX07CisgICAgY29uc3QgaW5wdXRzID0gW2lucHV0MCwgaW5w
dXQxXTsKKyAgICBjb25zdCB2ZXJ0ZXhJbnB1dCA9IHt2ZXJ0ZXhCdWZmZXJzOiBpbnB1dHN9Owor
CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5k
aW5nOiAwLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlZC10ZXh0dXJlIn0sIHtiaW5kaW5n
OiAxLCB2aXNpYmlsaXR5OiA3LCB0eXBlOiAic2FtcGxlciJ9XX07CisgICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yKTsKKyAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdy
b3VwTGF5b3V0czogW2JpbmRHcm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7
CisKKyAgICBjb25zdCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZy
YWdtZW50U3RhZ2UsIHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9y
U3RhdGVzLCBkZXB0aFN0ZW5jaWxTdGF0ZSwgdmVydGV4SW5wdXQsIHNhbXBsZUNvdW50OiAxLCBs
YXlvdXQ6IHBpcGVsaW5lTGF5b3V0fTsKKyAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmlj
ZS5jcmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworCisgICAg
Y29uc3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDQgKyBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAy
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07CisgICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlcik7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0g
MTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKKyAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzldID0gLTAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9
IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7CisgICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxM10gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOworICAgIHZlcnRleEJ1ZmZl
cjBGbG9hdDMyQXJyYXlbMTZdID0gMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzE3
XSA9IDA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAwOworICAgIHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTldID0gMTAwOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbMjBdID0gMTAwOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMjFdID0gMDsK
KyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzIyXSA9IDEwMDsKKyAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzIzXSA9IDEwMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7CisK
KyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogVWludDhBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAyICogMiArIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VM
RU1FTlQgKiA0ICogMSAqIDEsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9TUkMgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyID0g
ZGV2aWNlLmNyZWF0ZUJ1ZmZlcih0ZXh0dXJlRGF0YUJ1ZmZlckRlc2NyaXB0b3IpOworICAgIGNv
bnN0IHRleHR1cmVEYXRhQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCB0ZXh0dXJlRGF0YUJ1ZmZl
ci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
ID0gbmV3IFVpbnQ4QXJyYXkodGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlcik7CisgICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzBdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzJdID0g
MDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbM10gPSAyNTU7CisgICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzRdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbNV0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzZdID0gMDsK
KyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbN10gPSAyNTU7CisgICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzhdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbOV0gPSAyNTUKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OworICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTUKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTNdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTRdID0gMDsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTVdID0gMjU1OworICAgIHRleHR1cmVEYXRh
QnVmZmVyVWludDhBcnJheVsxNl0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzE3XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMThdID0gMjU1
OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxOV0gPSAyNTU7CisgICAgdGV4dHVy
ZURhdGFCdWZmZXIudW5tYXAoKTsKKworICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0ge3Np
emU6IHt3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aDogMX0sIG1pcExldmVsQ291bnQ6IDIsIGZv
cm1hdDogInJnYmE4dW5vcm0iLCB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlNBTVBMRUQgfCBHUFVU
ZXh0dXJlVXNhZ2UuVFJBTlNGRVJfRFNUfTsKKyAgICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNy
ZWF0ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVWaWV3ID0g
dGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpOworCisgICAgY29uc3Qgc2FtcGxlckRlc2NyaXB0
b3IgPSB7YWRkcmVzc01vZGVVOiAicmVwZWF0IiwgYWRkcmVzc01vZGVWOiAicmVwZWF0IiwgYWRk
cmVzc01vZGVXOiAicmVwZWF0IiwgbWFnRmlsdGVyOiAibGluZWFyIiwgbWluRmlsdGVyOiAibGlu
ZWFyIn07CisgICAgY29uc3Qgc2FtcGxlciA9IGRldmljZS5jcmVhdGVTYW1wbGVyKHNhbXBsZXJE
ZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IGJpbmRHcm91cEJpbmRpbmdzID0gW3tiaW5kaW5nOiAw
LCByZXNvdXJjZTogdGV4dHVyZVZpZXd9LCB7YmluZGluZzogMSwgcmVzb3VyY2U6IHNhbXBsZXJ9
XTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5
b3V0LCBiaW5kaW5nczogYmluZEdyb3VwQmluZGluZ3N9OworICAgIGNvbnN0IGJpbmRHcm91cCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7CisKKyAgICBjb25z
dCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImdwdSIpOworICAgIGNvbnN0IHN3YXBDaGFp
bkRlc2NyaXB0b3IgPSB7ZGV2aWNlLCBmb3JtYXQ6ICJiZ3JhOHVub3JtIn07CisgICAgY29uc3Qg
c3dhcENoYWluID0gY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oc3dhcENoYWluRGVzY3JpcHRv
cik7CisgICAgY29uc3Qgb3V0cHV0VGV4dHVyZSA9IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVy
ZSgpOworICAgIGNvbnN0IG91dHB1dFRleHR1cmVWaWV3ID0gb3V0cHV0VGV4dHVyZS5jcmVhdGVE
ZWZhdWx0VmlldygpOworCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoKTsgLy8ge30KKworICAgIGNvbnN0IGJ1ZmZlckNvcHkxVmlldyA9IHti
dWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQgKiAyLCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCAqIDQgKiAyICogMn07CisgICAgY29uc3QgdGV4dHVyZUNvcHkxVmlldyA9IHt0ZXh0dXJlOiB0
ZXh0dXJlfTsKKyAgICBjb25zdCBjb3B5MVNpemUgPSB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVw
dGg6IDF9OworICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyQ29w
eTFWaWV3LCB0ZXh0dXJlQ29weTFWaWV3LCBjb3B5MVNpemUpOworICAgIGNvbnN0IGJ1ZmZlckNv
cHkyVmlldyA9IHtidWZmZXI6IHRleHR1cmVEYXRhQnVmZmVyLCBvZmZzZXQ6IFVpbnQ4QXJyYXku
QllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDIsIHJvd1BpdGNoOiBVaW50OEFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDEsIGltYWdlSGVpZ2h0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9F
TEVNRU5UICogNCAqIDEgKiAxfTsKKyAgICBjb25zdCB0ZXh0dXJlQ29weTJWaWV3ID0ge3RleHR1
cmU6IHRleHR1cmUsIG1pcExldmVsOiAxfTsKKyAgICBjb25zdCBjb3B5MlNpemUgPSB7d2lkdGg6
IDEsIGhlaWdodDogMSwgZGVwdGg6IDF9OworICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJU
b1RleHR1cmUoYnVmZmVyQ29weTJWaWV3LCB0ZXh0dXJlQ29weTJWaWV3LCBjb3B5MlNpemUpOwor
CisgICAgY29uc3QgY2xlYXJDb2xvciA9IHtyOiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKKyAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywg
cmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBj
bGVhckNvbG9yfV07CisgICAgY29uc3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGw7Cisg
ICAgY29uc3QgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7Y29sb3JBdHRhY2htZW50cywgZGVwdGhT
dGVuY2lsQXR0YWNobWVudH07CisgICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworICAgIHJlbmRl
clBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKKyAgICByZW5kZXJQYXNz
RW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIwLCB2ZXJ0ZXhCdWZmZXIwXSwgWzAs
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiA0XSk7CisgICAgcmVuZGVyUGFz
c0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNz
KCk7CisgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOwor
ICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
K2dldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKKyAgICBzdGFydChkZXZp
Y2UpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICB9KTsKK30sIGZ1bmN0aW9uKCkgeworICAgIGRyYXdXaGl0ZVNxdWFy
ZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wv
dGV4dHVyZXMtc2FtcGxlLWdyYWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZTdi
ZTdmNDE2YWE1NWUzY2JmYTU0ZDgzZTkyYzNhZWEzM2MwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWdyYWQtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2Fu
dmFzPgorPHNjcmlwdD4KK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKK2RyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZh
cyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3RleHR1cmVzLXNhbXBsZS1ncmFkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA0NTgyMmY2
ZGE2NDgzYWZkYTgyZWYzNzgyYTY2OWE4MGExOWQ1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtZ3JhZC5odG1sCkBAIC0wLDAgKzEs
MTU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlw
dD4KK2NvbnN0IHNoYWRlclNvdXJjZSA9IGAKK3ZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZs
b2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgcmV0dXJu
IHBvc2l0aW9uOworfQorCitmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoVGV4dHVyZTJE
PGZsb2F0ND4gdGhlVGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVyIDog
cmVnaXN0ZXIoczEpKSA6IFNWX1RhcmdldCAwIHsKKyAgICByZXR1cm4gU2FtcGxlR3JhZCh0aGVU
ZXh0dXJlLCB0aGVTYW1wbGVyLCBmbG9hdDIoMC41LCAwLjUpLCBmbG9hdDIoMSwgMCksIGZsb2F0
MigwLCAxKSk7Cit9CitgOworCitjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7CisKK2FzeW5jIGZ1bmN0aW9uIHN0YXJ0KGRldmljZSkgeworICAgIGNvbnN0
IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNv
dXJjZX0pOworICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBl
bnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07CisgICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHtt
b2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07CisgICAg
Y29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOworICAgIGNvbnN0IHJh
c3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9Owor
ICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKKyAgICBjb25zdCBjb2xvckJsZW5kID0ge307Cisg
ICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5k
LCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGVCaXRzLkFMTAor
ICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKKyAgICAKKyAgICBjb25zdCBhdHRy
aWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKKyAgICBjb25z
dCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0OiBbYXR0cmlidXRlMF19OworICAg
IGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOworICAgIGNvbnN0IHZlcnRleElucHV0ID0ge3ZlcnRl
eEJ1ZmZlcnM6IGlucHV0c307CisKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
ID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVk
LXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6IDcsIHR5cGU6ICJzYW1wbGVyIn1d
fTsKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0
RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0XX07CisgICAg
Y29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQocGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xvZ3ksIHJhc3Rl
cml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1
dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OworICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRvciA9IHtzaXpl
OiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07CisgICAgY29uc3QgdmVy
dGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERlc2NyaXB0b3Ip
OworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZl
cjAubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7CisgICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsyXSA9IDEuMDsK
KyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMTsKKyAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzRdID0gLTAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVd
ID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNl0gPSAxLjA7CisgICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVs4XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzldID0gLTAuNTsK
KyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsx
Ml0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxM10gPSAwLjU7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsxNV0gPSAxOworICAgIHZlcnRleEJ1ZmZlcjAudW5tYXAoKTsKKworICAgIGNv
bnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtzaXplOiBVaW50OEFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlRSQU5TRkVSX1NSQyB8IEdQVUJ1ZmZl
clVzYWdlLk1BUF9XUklURX07CisgICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXIgPSBkZXZpY2Uu
Y3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvcik7CisgICAgY29uc3QgdGV4
dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRleHR1cmVEYXRhQnVmZmVyLm1hcFdy
aXRlQXN5bmMoKTsKKyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXkgPSBuZXcg
VWludDhBcnJheSh0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVmZmVyKTsKKyAgICB0ZXh0dXJlRGF0
YUJ1ZmZlclVpbnQ4QXJyYXlbMF0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzFdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMl0gPSAwOworICAg
IHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVszXSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXlbNF0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5
WzVdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNl0gPSAwOworICAgIHRl
eHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbOF0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5Wzld
ID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTBdID0gMDsKKyAgICB0ZXh0
dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVy
VWludDhBcnJheVsxMl0gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzEz
XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE0XSA9IDA7CisgICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE1XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZl
clVpbnQ4QXJyYXlbMTZdID0gMjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsx
N10gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE4XSA9IDI1NTsKKyAg
ICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTldID0gMjU1OworICAgIHRleHR1cmVEYXRh
QnVmZmVyLnVubWFwKCk7CisKKyAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHtzaXplOiB7
d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBtaXBMZXZlbENvdW50OiAyLCBmb3JtYXQ6
ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVy
ZVVzYWdlLlRSQU5TRkVSX0RTVH07CisgICAgY29uc3QgdGV4dHVyZSA9IGRldmljZS5jcmVhdGVU
ZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1
cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKKworICAgIGNvbnN0IHNhbXBsZXJEZXNjcmlwdG9yID0g
e21hZ0ZpbHRlcjogImxpbmVhciIsIG1pbkZpbHRlcjogImxpbmVhciJ9OworICAgIGNvbnN0IHNh
bXBsZXIgPSBkZXZpY2UuY3JlYXRlU2FtcGxlcihzYW1wbGVyRGVzY3JpcHRvcik7CisKKyAgICBj
b25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzogMCwgcmVzb3VyY2U6IHRleHR1cmVW
aWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBzYW1wbGVyfV07CisgICAgY29uc3QgYmluZEdy
b3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExheW91dCwgYmluZGluZ3M6IGJpbmRH
cm91cEJpbmRpbmdzfTsKKyAgICBjb25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdy
b3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOworCisgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJncHUiKTsKKyAgICBjb25zdCBzd2FwQ2hhaW5EZXNjcmlwdG9yID0ge2Rldmlj
ZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OworICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQu
Y29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOworICAgIGNvbnN0IG91dHB1
dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsKKyAgICBjb25zdCBvdXRw
dXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKKworICAg
IGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7IC8v
IHt9CisKKyAgICBjb25zdCBidWZmZXJDb3B5MVZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1
ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiwgaW1h
Z2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0ICogMiAqIDJ9OworICAg
IGNvbnN0IHRleHR1cmVDb3B5MVZpZXcgPSB7dGV4dHVyZTogdGV4dHVyZX07CisgICAgY29uc3Qg
Y29weTFTaXplID0ge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRlcHRoOiAxfTsKKyAgICBjb21tYW5k
RW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHkxVmlldywgdGV4dHVyZUNvcHkx
VmlldywgY29weTFTaXplKTsKKyAgICBjb25zdCBidWZmZXJDb3B5MlZpZXcgPSB7YnVmZmVyOiB0
ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0OiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICog
NCAqIDIgKiAyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAx
LCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMX07
CisgICAgY29uc3QgdGV4dHVyZUNvcHkyVmlldyA9IHt0ZXh0dXJlOiB0ZXh0dXJlLCBtaXBMZXZl
bDogMX07CisgICAgY29uc3QgY29weTJTaXplID0ge3dpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
OiAxfTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNvcHky
VmlldywgdGV4dHVyZUNvcHkyVmlldywgY29weTJTaXplKTsKKworICAgIGNvbnN0IGNsZWFyQ29s
b3IgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07CisgICAgY29uc3QgY29sb3JBdHRhY2htZW50
cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcsIHJlc29sdmVUYXJnZXQ6IG51bGws
IGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwgY2xlYXJDb2xvcn1dOworICAgIGNv
bnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOworICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9Owor
ICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQ
YXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygw
LCBbdmVydGV4QnVmZmVyMF0sIFswXSk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAx
LCAwLCAwKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgY29uc3QgY29t
bWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOworICAgIGRldmljZS5nZXRRdWV1
ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK2dldEJhc2ljRGV2aWNlKCku
dGhlbihmdW5jdGlvbihkZXZpY2UpIHsKKyAgICBzdGFydChkZXZpY2UpLnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9
KTsKK30sIGZ1bmN0aW9uKCkgeworICAgIGRyYXdXaGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJ
blNvZnR3YXJlKGNhbnZhcyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2FtcGxlLWxl
dmVsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGV4dHVyZXMtc2Ft
cGxlLWxldmVsLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlN2JlN2Y0MTZhYTU1ZTNjYmZh
NTRkODNlOTJjM2FlYTMzYzBmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdw
dS93aGxzbC90ZXh0dXJlcy1zYW1wbGUtbGV2ZWwtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
d2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdD4K
K2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK2RyYXdX
aGl0ZVNxdWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90
ZXh0dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC90ZXh0
dXJlcy1zYW1wbGUtbGV2ZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjU4Mzc1NzVkNTZmOGU4NTRkMGQ3
NDU4MTU5NWJhNmRhNWQ5OGExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dobHNsL3RleHR1cmVzLXNhbXBsZS1sZXZlbC5odG1sCkBAIC0wLDAgKzEsMTU0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK2NvbnN0IHNo
YWRlclNvdXJjZSA9IGAKK3ZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlv
biA6IGF0dHJpYnV0ZSgwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgcmV0dXJuIHBvc2l0aW9uOwor
fQorCitmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoVGV4dHVyZTJEPGZsb2F0ND4gdGhl
VGV4dHVyZSA6IHJlZ2lzdGVyKHQwKSwgc2FtcGxlciB0aGVTYW1wbGVyIDogcmVnaXN0ZXIoczEp
KSA6IFNWX1RhcmdldCAwIHsKKyAgICByZXR1cm4gU2FtcGxlTGV2ZWwodGhlVGV4dHVyZSwgdGhl
U2FtcGxlciwgZmxvYXQyKDAuNSwgMC41KSwgMSk7Cit9CitgOworCitjb25zdCBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisKK2FzeW5jIGZ1bmN0aW9uIHN0YXJ0
KGRldmljZSkgeworICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZX0pOworICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21v
ZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4U2hhZGVyIn07CisgICAgY29u
c3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZy
YWdtZW50U2hhZGVyIn07CisgICAgY29uc3QgcHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUt
c3RyaXAiOworICAgIGNvbnN0IHJhc3Rlcml6YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIs
IGN1bGxNb2RlOiAibm9uZSJ9OworICAgIGNvbnN0IGFscGhhQmxlbmQgPSB7fTsKKyAgICBjb25z
dCBjb2xvckJsZW5kID0ge307CisgICAgY29uc3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJn
YmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xvckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQ
VUNvbG9yV3JpdGVCaXRzLkFMTAorICAgIGNvbnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsK
KyAgICAKKyAgICBjb25zdCBhdHRyaWJ1dGUwID0ge3NoYWRlckxvY2F0aW9uOiAwLCBmb3JtYXQ6
ICJmbG9hdDQifTsKKyAgICBjb25zdCBpbnB1dDAgPSB7c3RyaWRlOiAxNiwgYXR0cmlidXRlU2V0
OiBbYXR0cmlidXRlMF19OworICAgIGNvbnN0IGlucHV0cyA9IFtpbnB1dDBdOworICAgIGNvbnN0
IHZlcnRleElucHV0ID0ge3ZlcnRleEJ1ZmZlcnM6IGlucHV0c307CisKKyAgICBjb25zdCBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxp
dHk6IDcsIHR5cGU6ICJzYW1wbGVkLXRleHR1cmUifSwge2JpbmRpbmc6IDEsIHZpc2liaWxpdHk6
IDcsIHR5cGU6ICJzYW1wbGVyIn1dfTsKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOworICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmlu
ZEdyb3VwTGF5b3V0XX07CisgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRl
UGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJp
bWl0aXZlVG9wb2xvZ3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3Rl
bmNpbFN0YXRlLCB2ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVM
YXlvdXR9OworICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0
ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9X
UklURX07CisgICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVy
dGV4QnVmZmVyMERlc2NyaXB0b3IpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZl
ciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJh
eUJ1ZmZlcik7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZs
b2F0MzJBcnJheVsyXSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0g
MTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKKyAgICB2ZXJ0ZXhC
dWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbNl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7CisgICAg
dmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzldID0gLTAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEwXSA9
IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7CisgICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJB
cnJheVsxM10gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAxLjA7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOworICAgIHZlcnRleEJ1ZmZl
cjAudW5tYXAoKTsKKworICAgIGNvbnN0IHRleHR1cmVEYXRhQnVmZmVyRGVzY3JpcHRvciA9IHtz
aXplOiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyICsgVWludDhBcnJh
eS5CWVRFU19QRVJfRUxFTUVOVCAqIDQgKiAxICogMSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlRS
QU5TRkVSX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07CisgICAgY29uc3QgdGV4dHVy
ZURhdGFCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHRleHR1cmVEYXRhQnVmZmVyRGVzY3Jp
cHRvcik7CisgICAgY29uc3QgdGV4dHVyZURhdGFCdWZmZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHRl
eHR1cmVEYXRhQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKKyAgICBjb25zdCB0ZXh0dXJlRGF0YUJ1
ZmZlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlRGF0YUJ1ZmZlckFycmF5QnVm
ZmVyKTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMF0gPSAyNTU7CisgICAgdGV4
dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzFdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVp
bnQ4QXJyYXlbMl0gPSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVszXSA9IDI1
NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbNF0gPSAyNTU7CisgICAgdGV4dHVy
ZURhdGFCdWZmZXJVaW50OEFycmF5WzVdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4
QXJyYXlbNl0gPSAwOworICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVs3XSA9IDI1NTsK
KyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbOF0gPSAyNTU7CisgICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzldID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJy
YXlbMTBdID0gMDsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTFdID0gMjU1Owor
ICAgIHRleHR1cmVEYXRhQnVmZmVyVWludDhBcnJheVsxMl0gPSAyNTU7CisgICAgdGV4dHVyZURh
dGFCdWZmZXJVaW50OEFycmF5WzEzXSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFy
cmF5WzE0XSA9IDA7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50OEFycmF5WzE1XSA9IDI1NTsK
KyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTZdID0gMjU1OworICAgIHRleHR1cmVE
YXRhQnVmZmVyVWludDhBcnJheVsxN10gPSAyNTU7CisgICAgdGV4dHVyZURhdGFCdWZmZXJVaW50
OEFycmF5WzE4XSA9IDI1NTsKKyAgICB0ZXh0dXJlRGF0YUJ1ZmZlclVpbnQ4QXJyYXlbMTldID0g
MjU1OworICAgIHRleHR1cmVEYXRhQnVmZmVyLnVubWFwKCk7CisKKyAgICBjb25zdCB0ZXh0dXJl
RGVzY3JpcHRvciA9IHtzaXplOiB7d2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDF9LCBtaXBM
ZXZlbENvdW50OiAyLCBmb3JtYXQ6ICJyZ2JhOHVub3JtIiwgdXNhZ2U6IEdQVVRleHR1cmVVc2Fn
ZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX0RTVH07CisgICAgY29uc3QgdGV4
dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleHR1cmVEZXNjcmlwdG9yKTsKKyAgICBjb25z
dCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKTsKKworICAgIGNvbnN0
IHNhbXBsZXJEZXNjcmlwdG9yID0ge21hZ0ZpbHRlcjogImxpbmVhciIsIG1pbkZpbHRlcjogImxp
bmVhciJ9OworICAgIGNvbnN0IHNhbXBsZXIgPSBkZXZpY2UuY3JlYXRlU2FtcGxlcihzYW1wbGVy
RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5ncyA9IFt7YmluZGluZzog
MCwgcmVzb3VyY2U6IHRleHR1cmVWaWV3fSwge2JpbmRpbmc6IDEsIHJlc291cmNlOiBzYW1wbGVy
fV07CisgICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHtsYXlvdXQ6IGJpbmRHcm91cExh
eW91dCwgYmluZGluZ3M6IGJpbmRHcm91cEJpbmRpbmdzfTsKKyAgICBjb25zdCBiaW5kR3JvdXAg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOworCisgICAgY29u
c3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKKyAgICBjb25zdCBzd2FwQ2hh
aW5EZXNjcmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OworICAgIGNvbnN0
IHN3YXBDaGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0
b3IpOworICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1
cmUoKTsKKyAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRl
RGVmYXVsdFZpZXcoKTsKKworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKCk7IC8vIHt9CisKKyAgICBjb25zdCBidWZmZXJDb3B5MVZpZXcgPSB7
YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgcm93UGl0Y2g6IFVpbnQ4QXJyYXkuQllURVNfUEVS
X0VMRU1FTlQgKiA0ICogMiwgaW1hZ2VIZWlnaHQ6IFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1F
TlQgKiA0ICogMiAqIDJ9OworICAgIGNvbnN0IHRleHR1cmVDb3B5MVZpZXcgPSB7dGV4dHVyZTog
dGV4dHVyZX07CisgICAgY29uc3QgY29weTFTaXplID0ge3dpZHRoOiAyLCBoZWlnaHQ6IDIsIGRl
cHRoOiAxfTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNv
cHkxVmlldywgdGV4dHVyZUNvcHkxVmlldywgY29weTFTaXplKTsKKyAgICBjb25zdCBidWZmZXJD
b3B5MlZpZXcgPSB7YnVmZmVyOiB0ZXh0dXJlRGF0YUJ1ZmZlciwgb2Zmc2V0OiBVaW50OEFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogNCAqIDIgKiAyLCByb3dQaXRjaDogVWludDhBcnJheS5CWVRF
U19QRVJfRUxFTUVOVCAqIDQgKiAxLCBpbWFnZUhlaWdodDogVWludDhBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCAqIDQgKiAxICogMX07CisgICAgY29uc3QgdGV4dHVyZUNvcHkyVmlldyA9IHt0ZXh0
dXJlOiB0ZXh0dXJlLCBtaXBMZXZlbDogMX07CisgICAgY29uc3QgY29weTJTaXplID0ge3dpZHRo
OiAxLCBoZWlnaHQ6IDEsIGRlcHRoOiAxfTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9UZXh0dXJlKGJ1ZmZlckNvcHkyVmlldywgdGV4dHVyZUNvcHkyVmlldywgY29weTJTaXplKTsK
KworICAgIGNvbnN0IGNsZWFyQ29sb3IgPSB7cjogMCwgZzogMCwgYjogMSwgYTogMX07CisgICAg
Y29uc3QgY29sb3JBdHRhY2htZW50cyA9IFt7YXR0YWNobWVudDogb3V0cHV0VGV4dHVyZVZpZXcs
IHJlc29sdmVUYXJnZXQ6IG51bGwsIGxvYWRPcDogImNsZWFyIiwgc3RvcmVPcDogInN0b3JlIiwg
Y2xlYXJDb2xvcn1dOworICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBudWxsOwor
ICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0YWNobWVudHMsIGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnR9OworICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gY29tbWFu
ZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKKyAgICByZW5k
ZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7CisgICAgcmVuZGVyUGFz
c0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CisgICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMF0sIFswXSk7CisgICAgcmVuZGVy
UGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQ
YXNzKCk7CisgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgp
OworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKK2dldEJhc2ljRGV2aWNlKCkudGhlbihmdW5jdGlvbihkZXZpY2UpIHsKKyAgICBzdGFydChk
ZXZpY2UpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZ1bmN0aW9uKCkg
eworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9KTsKK30sIGZ1bmN0aW9uKCkgeworICAgIGRyYXdXaGl0ZVNx
dWFyZU9uQmx1ZUJhY2tncm91bmRJblNvZnR3YXJlKGNhbnZhcyk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>