<?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>108907</bug_id>
          
          <creation_ts>2013-02-04 22:11:51 -0800</creation_ts>
          <short_desc>Adds the WebGL Conformance Tests typedarrays folder.</short_desc>
          <delta_ts>2013-02-05 12:35:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>94643</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gregg Tavares">gman</reporter>
          <assigned_to name="Gregg Tavares">gman</assigned_to>
          <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825141</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2013-02-04 22:11:51 -0800</bug_when>
    <thetext>Adds the WebGL Conformance Tests typedarrays folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825142</commentid>
    <comment_count>1</comment_count>
      <attachid>186547</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2013-02-04 22:12:07 -0800</bug_when>
    <thetext>Created attachment 186547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825609</commentid>
    <comment_count>2</comment_count>
      <attachid>186547</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-05 10:32:23 -0800</bug_when>
    <thetext>Comment on attachment 186547
Patch

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825712</commentid>
    <comment_count>3</comment_count>
      <attachid>186547</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 12:35:32 -0800</bug_when>
    <thetext>Comment on attachment 186547
Patch

Clearing flags on attachment: 186547

Committed r141912: &lt;http://trac.webkit.org/changeset/141912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825713</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 12:35:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186547</attachid>
            <date>2013-02-04 22:12:07 -0800</date>
            <delta_ts>2013-02-05 12:35:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108907-20130204220846.patch</filename>
            <type>text/plain</type>
            <size>70141</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2FjN2M2ZTYzMjYwY2RmNjY0NTgy
MWY3ZTQzZGRiMDY0NmY2NzQ0ZS4uM2QwNDFkOGQ2Njc5YjY4M2NlYTgyY2M1YTM5NDZiZTRjYmE1
N2E5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTA0ICBHcmVnZyBUYXZhcmVzICA8
Z21hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkcyB0aGUgV2ViR0wgQ29uZm9ybWFuY2Ug
VGVzdHMgdHlwZWRhcnJheXMgZm9sZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA4OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3Jt
YW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jhc2gt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9hcnJheS1idWZmZXItdmlldy1jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
bC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS11bml0LXRlc3RzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktdW5p
dC10ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9kYXRhLXZpZXctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
bC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5
cy9kYXRhLXZpZXctdGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy8wMF90ZXN0X2xpc3QudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRh
cnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJy
YXktdW5pdC10ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDItMDQgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIFN1
cHBvcnQgRmlsZXMgZm9yIFdlYkdMIENvbmZvcm1hbmNlIFRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMv
YXJyYXktYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmU2NmEwMDFiZWIx
OWQxM2UwODQ4YzMyYmIzMWNlZjk5MTA0ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLWNyYXNoLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxp
c3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0
OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5
cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci1j
cmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YThlM2E1ZDQxYzhlYzgxMjY1OTdhZTY2NWFiMTI0NGMw
M2VlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90
eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0t
IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4g
RE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZv
ciBhcnJheS1idWZmZXItY3Jhc2guaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBh
biBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2Fy
cmF5LWJ1ZmZlci1jcmFzaC5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbDwvYT4KKzxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5
LWJ1ZmZlci1jcmFzaC5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2Nv
bmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci12aWV3LWNyYXNoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZl
ci12aWV3LWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWQyMzZhZWIxNzFhMjlmMzZm
YmJmMDFjM2U0N2Q1OTg0ZDZlNWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jhc2gtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlz
dGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6
IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlz
L2FycmF5LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jh
c2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5
LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyNjZhYmM0MGQ2NzRlMTgzNWFi
ZWVmNTRiMDVkMzM5NmRhNjZiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwKQEAg
LTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtd2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1h
bmNlIFRlc3QgV3JhcHBlciBmb3IgYXJyYXktYnVmZmVyLXZpZXctY3Jhc2guaHRtbDwvdGl0bGU+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJH
TCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlM
LjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwiPi4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5
LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWw8L2E+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRp
diBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItdmlldy1jcmFzaC5odG1s
IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJy
YXlzL2FycmF5LXVuaXQtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29u
Zm9ybWFuY2UvdHlwZWRhcnJheXMvYXJyYXktdW5pdC10ZXN0cy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDI3ODAwNGI5OTg0ZTY5NDM0M2I4YmUwZjIzYmIyMDE1NDE5MjM0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5
LXVuaXQtdGVzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJ1bnMg
dGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNT
IG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LXVuaXQtdGVzdHMuaHRtbAorUEFTUworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS11bml0
LXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9h
cnJheS11bml0LXRlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViMTY0NzlmNjExZGM4Y2JkYWE2ZTgw
YmJiOTg0MTcxN2IwZWE4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2Nv
bmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LXVuaXQtdGVzdHMuaHRtbApAQCAtMCwwICsxLDE4
IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10
ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBX
cmFwcGVyIGZvciBhcnJheS11bml0LXRlc3RzLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVs
b3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9hcnJheS11bml0LXRlc3RzLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LXVuaXQtdGVzdHMuaHRtbDwvYT4KKzxk
aXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2Fy
cmF5LXVuaXQtdGVzdHMuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LWNyYXNoLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTVlOTY2OTJkZWMyM2YyYWY0NWFlNmZmZDVhMWFlNTUy
NTg4MTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2Uv
dHlwZWRhcnJheXMvZGF0YS12aWV3LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
K1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUg
YW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRtbAor
UEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9kYXRhLXZpZXctY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNl
L3R5cGVkYXJyYXlzL2RhdGEtdmlldy1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MmE1YWRlMGFj
MTJjMzZjMDAxZmFlNWUyZDQ2YWZmYmVmZWFiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRtbApA
QCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5l
cmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9y
bWFuY2UgVGVzdCBXcmFwcGVyIGZvciBkYXRhLXZpZXctY3Jhc2guaHRtbDwvdGl0bGU+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0
IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4K
K1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy1jcmFzaC5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRt
bDwvYT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFt
ZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVk
YXJyYXlzL2RhdGEtdmlldy1jcmFzaC5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9p
ZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10
ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2QzYjMyYzMwNjBiZGIzZjM5MThkYjRkYTE5
YTUzNjVkMDEwNjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NSBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlm
cmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0Lmh0
bWwKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvdHlw
ZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1h
bmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZlNDQyOTBj
ZmI2MWI2N2UyYTQwMGQ3MDdmYzI4NDhjMzFiM2ZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0Lmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtd2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZv
cm1hbmNlIFRlc3QgV3JhcHBlciBmb3IgZGF0YS12aWV3LXRlc3QuaHRtbDwvdGl0bGU+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0
IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4K
K1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0Lmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy10ZXN0Lmh0bWw8
L2E+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9kYXRhLXZpZXctdGVzdC5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJh
bWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzLzAw
X3Rlc3RfbGlzdC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy8wMF90ZXN0X2xpc3QudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YTA2MDU3Zjc3ZmVhMDA4ZjBlMzBlMTgwMjJjNTRjMmUzMWY3MzAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90eXBlZGFycmF5cy8wMF90ZXN0X2xpc3QudHh0CkBAIC0wLDAgKzEsNSBAQAorYXJyYXkt
YnVmZmVyLWNyYXNoLmh0bWwKK2FycmF5LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwKK2FycmF5LXVu
aXQtdGVzdHMuaHRtbAorZGF0YS12aWV3LWNyYXNoLmh0bWwKK2RhdGEtdmlldy10ZXN0Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci1jcmFzaC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRh
cnJheXMvYXJyYXktYnVmZmVyLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU2NjFjNWYyNDRkZDA0
N2E1ZDE3ODBmYmUwOTM0MDQ0ZGQ2NDY3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlz
L2FycmF5LWJ1ZmZlci1jcmFzaC5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhLS0KKworLyoKKyoq
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgS2hyb25vcyBHcm91cCBJbmMuCisqKgorKiogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEKKyoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUKKyoqICJNYXRlcmlhbHMiKSwgdG8gZGVhbCBpbiB0aGUgTWF0
ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworKiogd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorKiog
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBNYXRlcmlh
bHMsIGFuZCB0bworKiogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgTWF0ZXJpYWxzIGFyZSBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyoqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKyoqCisqKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgorKioKKyoqIFRIRSBNQVRFUklBTFMgQVJFIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisqKiBFWFBSRVNT
IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YKKyoqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4KKyoqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisqKiBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorKiog
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUKKyoqIE1BVEVSSUFMUyBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI
RSBNQVRFUklBTFMuCisqLworCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IEFycmF5QnVmZmVyLmJ5dGVMZW5n
dGgnKTsKKworLy8gVGhlIGZvbGxvd2luZyB1c2VkIHRvIGNhdXNlIGEgY3Jhc2ggaW4gQ2hyb21l
LgorCisvLyBOb3RlIHRoYXQgYmVjYXVzZSB0aGUgYXJndW1lbnQgdG8gQXJyYXlCdWZmZXIncyBj
b25zdHJ1Y3RvciBpcyBub3QKKy8vIG9wdGlvbmFsLCBhbiBpbXBsZW1lbnRhdGlvbiBtaWdodCB0
aHJvdyBhbiBleGNlcHRpb24gb24gdGhlIGV4cHJlc3Npb24KKy8vIGJlbG93IHJhdGhlciB0aGFu
IGltcGxpY2l0bHkgcGFzc2luZyB1bmRlZmluZWQuIEVpdGhlciB3YXkgaXMgYWNjZXB0YWJsZQor
Ly8gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGlzIHRlc3QsIGJ1dCBpbXBsZW1lbnRhdGlv
bnMgbXVzdCBub3QgY3Jhc2guCit0cnkgeworICBuZXcgQXJyYXlCdWZmZXIoKS5ieXRlTGVuZ3Ro
OworfSBjYXRjaCAoZSkgeworfQorCit0ZXN0UGFzc2VkKCJuZXcgQXJyYXlCdWZmZXIoKS5ieXRl
TGVuZ3RoIGRpZCBub3QgY3Jhc2giKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2Fy
cmF5LWJ1ZmZlci12aWV3LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItdmll
dy1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MTRlOTFmMzViNjY0ZjJlMDljMTQ3YmY0YmZlYzZk
NDBhYzA4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItdmll
dy1jcmFzaC5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhLS0KKy8qCisqKiBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisqKiBj
b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8KKyoq
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiogVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg
dGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJDSEFO
VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisqKiBN
QVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgor
Ki8KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisK
K2Rlc2NyaXB0aW9uKCdWZXJpZnkgdGhhdCBjb25zdHJ1Y3RpbmcgYSB0eXBlZCBhcnJheSB2aWV3
IHdpdGggbm8gYXJndW1lbnRzIGFuZCBmZXRjaGluZyBpdHMgbGVuZ3RoIGRvZXMgbm90IGNyYXNo
Jyk7CisKKworLy8gVGhlIGZvbGxvd2luZyB1c2VkIHRvIGNhdXNlIGEgY3Jhc2ggaW4gYm90aCBT
YWZhcmkgYW5kIENocm9tZS4KKworLy8gTm90ZSB0aGF0IGJlY2F1c2UgdGhlIGFyZ3VtZW50IHRv
IEFycmF5QnVmZmVyJ3MgY29uc3RydWN0b3IgaXMgbm90CisvLyBvcHRpb25hbCwgYW4gaW1wbGVt
ZW50YXRpb24gbWlnaHQgdGhyb3cgYW4gZXhjZXB0aW9uIG9uIHRoZSBleHByZXNzaW9uCisvLyBi
ZWxvdyByYXRoZXIgdGhhbiBpbXBsaWNpdGx5IHBhc3NpbmcgdW5kZWZpbmVkLiBFaXRoZXIgd2F5
IGlzIGFjY2VwdGFibGUKKy8vIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhpcyB0ZXN0LCBi
dXQgaW1wbGVtZW50YXRpb25zIG11c3Qgbm90IGNyYXNoLgordHJ5IHsKKyAgbmV3IFVpbnQzMkFy
cmF5KCkubGVuZ3RoOworfSBjYXRjaCAoZSkgeworfQorCit0ZXN0UGFzc2VkKCJuZXcgVWludDMy
QXJyYXkoKS5sZW5ndGggZGlkIG5vdCBjcmFzaCIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBl
ZGFycmF5cy9hcnJheS11bml0LXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS11bml0LXRl
c3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQwNDFkNzBlYWIyZmM5NTUwYjJkNjkyMmUzYzcxMDM2Yjlh
M2FhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LXVuaXQtdGVzdHMuaHRt
bApAQCAtMCwwICsxLDExNDYgQEAKKzwhLS0KKworLyoKKyoqIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCisqKgorKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyoqIGNvcHkgb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUK
KyoqICJNYXRlcmlhbHMiKSwgdG8gZGVhbCBpbiB0aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZworKiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorKiogZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBNYXRlcmlhbHMsIGFuZCB0bworKiogcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgTWF0ZXJpYWxzIGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8KKyoqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyoqCisqKiBUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs
dWRlZAorKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0
ZXJpYWxzLgorKioKKyoqIFRIRSBNQVRFUklBTFMgQVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyoqIE1FUkNIQU5UQUJJTElU
WSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4K
KyoqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZCisqKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorKiogVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyoqIE1BVEVSSUFM
UyBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBNQVRFUklBTFMuCisqLworCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdC1ldmFsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2Ny
aXB0aW9uKCJWZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgbmV3IGFycmF5LWxpa2Ug
b2JqZWN0cyBpbiB0aGUgVHlwZWRBcnJheSBzcGVjIik7CisKK3ZhciBjdXJyZW50bHlSdW5uaW5n
ID0gJyc7Cit2YXIgYWxsUGFzc2VkID0gdHJ1ZTsKK2Z1bmN0aW9uIHJ1bm5pbmcoc3RyKSB7Cisg
IGN1cnJlbnRseVJ1bm5pbmcgPSBzdHI7Cit9CisKK2Z1bmN0aW9uIG91dHB1dChzdHIpIHsKKyAg
ZGVidWcoc3RyKTsKK30KKworZnVuY3Rpb24gcGFzcygpIHsKKyAgdGVzdFBhc3NlZChjdXJyZW50
bHlSdW5uaW5nKTsKK30KKworZnVuY3Rpb24gZmFpbChzdHIpIHsKKyAgYWxsUGFzc2VkID0gZmFs
c2U7CisgIHZhciBleGM7CisgIGlmIChzdHIpCisgICAgZXhjID0gY3VycmVudGx5UnVubmluZyAr
ICc6ICcgKyBzdHI7CisgIGVsc2UKKyAgICBleGMgPSBjdXJyZW50bHlSdW5uaW5nOworICB0ZXN0
RmFpbGVkKGV4Yyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEVxKHByZWZpeCwgZXhwZWN0ZWQsIHZh
bCkgeworICBpZiAoZXhwZWN0ZWQgIT0gdmFsKSB7CisgICAgdmFyIHN0ciA9IHByZWZpeCArICc6
IGV4cGVjdGVkICcgKyBleHBlY3RlZCArICcsIGdvdCAnICsgdmFsOworICAgIHRocm93IHN0cjsK
KyAgfQorfQorCitmdW5jdGlvbiBhc3NlcnQocHJlZml4LCBleHBlY3RlZCkgeworICBpZiAoIWV4
cGVjdGVkKSB7CisgICAgdmFyIHN0ciA9IHByZWZpeCArICc6IGV4cGVjdGVkIHZhbHVlIC8gdHJ1
ZSc7CisgICAgdGhyb3cgc3RyOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3VtbWFyeSgpIHsK
KyAgaWYgKGFsbFBhc3NlZCkgeworICAgIGRlYnVnKCJUZXN0IHBhc3NlZC4iKTsKKyAgfSBlbHNl
IHsKKyAgICBkZWJ1ZygiVEVTVCBGQUlMRUQiKTsKKyAgfQorfQorCit2YXIgYnVmZmVyOwordmFy
IGJ5dGVMZW5ndGg7Cit2YXIgc3ViQnVmZmVyOwordmFyIHN1YkFycmF5OworZnVuY3Rpb24gdGVz
dFNsaWNlKCkgeworICBmdW5jdGlvbiB0ZXN0KHN1YkJ1Ziwgc3RhcnRzLCBzaXplKSB7CisgICAg
Ynl0ZUxlbmd0aCA9IHNpemU7CisgICAgc3ViQnVmZmVyID0gVGVzdEV2YWwoc3ViQnVmKTsKKyAg
ICBzdWJBcnJheSA9IG5ldyBJbnQ4QXJyYXkoc3ViQnVmZmVyKTsKKyAgICBhc3NlcnRFcShzdWJC
dWYsIHN1YkJ1ZmZlci5ieXRlTGVuZ3RoLCBieXRlTGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCBzdGFydHMg
KyBpLCBzdWJBcnJheVtpXSk7CisgIH0KKworICB0cnkgeworICAgIHJ1bm5pbmcoJ3Rlc3RTbGlj
ZScpOworICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigzMik7CisgICAgdmFyIGFycmF5ID0g
bmV3IEludDhBcnJheShidWZmZXIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7ICsraSkK
KyAgICAgIGFycmF5W2ldID0gaTsKKworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgwKSIsIDAsIDMy
KTsKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMTYpIiwgMTYsIDE2KTsKKyAgICB0ZXN0KCJidWZm
ZXIuc2xpY2UoMjQpIiwgMjQsIDgpOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgzMikiLCAzMiwg
MCk7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKDQwKSIsIDMyLCAwKTsKKyAgICB0ZXN0KCJidWZm
ZXIuc2xpY2UoODApIiwgMzIsIDApOworCisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC04KSIsIDI0
LCA4KTsKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoLTE2KSIsIDE2LCAxNik7CisgICAgdGVzdCgi
YnVmZmVyLnNsaWNlKC0yNCkiLCA4LCAyNCk7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC0zMiki
LCAwLCAzMik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC00MCkiLCAwLCAzMik7CisgICAgdGVz
dCgiYnVmZmVyLnNsaWNlKC04MCkiLCAwLCAzMik7CisKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2Uo
MCwgMzIpIiwgMCwgMzIpOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgwLCAxNikiLCAwLCAxNik7
CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKDgsIDI0KSIsIDgsIDE2KTsKKyAgICB0ZXN0KCJidWZm
ZXIuc2xpY2UoMTYsIDMyKSIsIDE2LCAxNik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKDI0LCAx
NikiLCAyNCwgMCk7CisKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMTYsIC04KSIsIDE2LCA4KTsK
KyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoLTIwLCAzMCkiLCAxMiwgMTgpOworCisgICAgdGVzdCgi
YnVmZmVyLnNsaWNlKC04LCAtMjApIiwgMjQsIDApOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgt
MjAsIC04KSIsIDEyLCAxMik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC00MCwgMTYpIiwgMCwg
MTYpOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgtNDAsIDQwKSIsIDAsIDMyKTsKKyAgICBwYXNz
KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKKy8vCisvLyBUZXN0
cyBmb3IgdW5zaWduZWQgYXJyYXkgdmFyaWFudHMKKy8vCisKK2Z1bmN0aW9uIHRlc3RTZXRBbmRH
ZXQxMFRvMSh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAnIFNldEFu
ZEdldDEwVG8xJyk7CisgIHRyeSB7CisgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoMTApOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgYXJyYXlbaV0gPSAxMCAtIGk7
CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgYXNzZXJ0
RXEoJ0VsZW1lbnQgJyArIGksIDEwIC0gaSwgYXJyYXlbaV0pOworICAgIH0KKyAgICBwYXNzKCk7
CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RD
b25zdHJ1Y3RXaXRoQXJyYXlPZlVuc2lnbmVkVmFsdWVzKHR5cGUsIG5hbWUpIHsKKyAgcnVubmlu
ZygndGVzdCAnICsgbmFtZSArICcgQ29uc3RydWN0V2l0aEFycmF5T2ZVbnNpZ25lZFZhbHVlcycp
OworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKFsxMCwgOSwgOCwgNywgNiwgNSwg
NCwgMywgMiwgMV0pOworICAgIGFzc2VydEVxKCdBcnJheSBsZW5ndGgnLCAxMCwgYXJyYXkubGVu
Z3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGFzc2VydEVx
KCdFbGVtZW50ICcgKyBpLCAxMCAtIGksIGFycmF5W2ldKTsKKyAgICB9CisgICAgcGFzcygpOwor
ICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q29u
c3RydWN0V2l0aFR5cGVkQXJyYXlPZlVuc2lnbmVkVmFsdWVzKHR5cGUsIG5hbWUpIHsKKyAgcnVu
bmluZygndGVzdCAnICsgbmFtZSArICcgQ29uc3RydWN0V2l0aFR5cGVkQXJyYXlPZlVuc2lnbmVk
VmFsdWVzJyk7CisgIHRyeSB7CisgICAgdmFyIHRtcCA9IG5ldyB0eXBlKFsxMCwgOSwgOCwgNywg
NiwgNSwgNCwgMywgMiwgMV0pOworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKHRtcCk7CisgICAg
YXNzZXJ0RXEoJ0FycmF5IGxlbmd0aCcsIDEwLCBhcnJheS5sZW5ndGgpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDEw
IC0gaSwgYXJyYXlbaV0pOworICAgIH0KKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICBmYWlsKGUpOworICB9Cit9CisKKy8vCisvLyBUZXN0cyBmb3Igc2lnbmVkIGFycmF5IHZhcmlh
bnRzCisvLworCitmdW5jdGlvbiB0ZXN0U2V0QW5kR2V0UG9zMTBUb05lZzEwKHR5cGUsIG5hbWUp
IHsKKyAgcnVubmluZygndGVzdCAnICsgbmFtZSArICcgU2V0QW5kR2V0UG9zMTBUb05lZzEwJyk7
CisgIHRyeSB7CisgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoMjEpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMjE7IGkrKykgeworICAgICAgYXJyYXlbaV0gPSAxMCAtIGk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMjE7IGkrKykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQg
JyArIGksIDEwIC0gaSwgYXJyYXlbaV0pOworICAgIH0KKyAgICBwYXNzKCk7CisgIH0gY2F0Y2gg
KGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RDb25zdHJ1Y3RXaXRo
QXJyYXlPZlNpZ25lZFZhbHVlcyh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5h
bWUgKyAnIENvbnN0cnVjdFdpdGhBcnJheU9mU2lnbmVkVmFsdWVzJyk7CisgIHRyeSB7CisgICAg
dmFyIGFycmF5ID0gbmV3IHR5cGUoWzEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAt
MSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05LCAtMTBdKTsKKyAgICBhc3NlcnRFcSgn
QXJyYXkgbGVuZ3RoJywgMjEsIGFycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAyMTsgaSsrKSB7CisgICAgICBhc3NlcnRFcSgnRWxlbWVudCAnICsgaSwgMTAgLSBpLCBhcnJh
eVtpXSk7CisgICAgfQorICAgIHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7
CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdFdpdGhUeXBlZEFycmF5T2ZTaWduZWRW
YWx1ZXModHlwZSwgbmFtZSkgeworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBDb25zdHJ1
Y3RXaXRoVHlwZWRBcnJheU9mU2lnbmVkVmFsdWVzJyk7CisgIHRyeSB7CisgICAgdmFyIHRtcCA9
IG5ldyB0eXBlKFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgLTEsIC0yLCAtMywg
LTQsIC01LCAtNiwgLTcsIC04LCAtOSwgLTEwXSk7CisgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUo
dG1wKTsKKyAgICBhc3NlcnRFcSgnQXJyYXkgbGVuZ3RoJywgMjEsIGFycmF5Lmxlbmd0aCk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMTsgaSsrKSB7CisgICAgICBhc3NlcnRFcSgnRWxlbWVu
dCAnICsgaSwgMTAgLSBpLCBhcnJheVtpXSk7CisgICAgfQorICAgIHBhc3MoKTsKKyAgfSBjYXRj
aCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworLy8KKy8vIFRlc3QgY2FzZXMgZm9yIGlu
dGVncmFsIHR5cGVzLgorLy8gU29tZSBKYXZhU2NyaXB0IGVuZ2luZXMgbmVlZCBzZXBhcmF0ZSBj
b3BpZXMgb2YgdGhpcyBjb2RlIGluIG9yZGVyCisvLyB0byBleGVyY2lzZSBhbGwgb2YgdGhlaXIg
b3B0aW1pemVkIGNvZGUgcGF0aHMuCisvLworCitmdW5jdGlvbiB0ZXN0SW50ZWdyYWxBcnJheVRy
dW5jYXRpb25CZWhhdmlvcih0eXBlLCBuYW1lLCB1bnNpZ25lZCkgeworICBydW5uaW5nKCd0ZXN0
IGludGVncmFsIGFycmF5IHRydW5jYXRpb24gYmVoYXZpb3IgZm9yICcgKyBuYW1lKTsKKworICB2
YXIgc291cmNlRGF0YTsKKyAgdmFyIGV4cGVjdGVkUmVzdWx0czsKKworICBpZiAodW5zaWduZWQp
IHsKKyAgICBzb3VyY2VEYXRhID0gWzAuNiwgMTAuNiwgMC4yLCAxMC4yLCAxMC41LCAxMS41XTsK
KyAgICBpZiAodHlwZSA9PT0gVWludDhDbGFtcGVkQXJyYXkpIHsKKyAgICAgIGV4cGVjdGVkUmVz
dWx0cyA9IFsxLCAxMSwgMCwgMTAsIDEwLCAxMl07CisgICAgfSBlbHNlIHsKKyAgICAgIGV4cGVj
dGVkUmVzdWx0cyA9IFswLCAxMCwgMCwgMTAsIDEwLCAxMV07CisgICAgfQorICB9IGVsc2Ugewor
ICAgIHNvdXJjZURhdGEgPSBbMC42LCAxMC42LCAtMC42LCAtMTAuNl07CisgICAgZXhwZWN0ZWRS
ZXN1bHRzID0gWzAsIDEwLCAwLCAtMTBdOworICB9CisKKyAgdmFyIG51bUl0ZXJhdGlvbnMgPSAx
MDsKKyAgdmFyIGFycmF5ID0gbmV3IHR5cGUobnVtSXRlcmF0aW9ucyk7CisKKyAgLy8gVGhlIGNv
ZGUgYmxvY2sgaW4gZWFjaCBvZiB0aGUgY2FzZSBzdGF0ZW1lbnRzIGJlbG93IGlzIGlkZW50aWNh
bCwgYnV0IHNvbWUKKyAgLy8gSmF2YVNjcmlwdCBlbmdpbmVzIG5lZWQgc2VwYXJhdGUgY29waWVz
IGluIG9yZGVyIHRvIGV4ZXJjaXNlIGFsbCBvZgorICAvLyB0aGVpciBvcHRpbWl6ZWQgY29kZSBw
YXRocy4KKworICB0cnkgeworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSW50OEFycmF5
OgorICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNvdXJjZURhdGEubGVuZ3RoOyArK2lpKSB7
CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBudW1JdGVyYXRpb25zOyArK2pqKSB7Cisg
ICAgICAgICAgYXJyYXlbampdID0gc291cmNlRGF0YVtpaV07CisgICAgICAgICAgYXNzZXJ0RXEo
J1N0b3JpbmcgJyArIHNvdXJjZURhdGFbaWldLCBleHBlY3RlZFJlc3VsdHNbaWldLCBhcnJheVtq
al0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEludDE2QXJy
YXk6CisgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc291cmNlRGF0YS5sZW5ndGg7ICsraWkp
IHsKKyAgICAgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IG51bUl0ZXJhdGlvbnM7ICsramopIHsK
KyAgICAgICAgICBhcnJheVtqal0gPSBzb3VyY2VEYXRhW2lpXTsKKyAgICAgICAgICBhc3NlcnRF
cSgnU3RvcmluZyAnICsgc291cmNlRGF0YVtpaV0sIGV4cGVjdGVkUmVzdWx0c1tpaV0sIGFycmF5
W2pqXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgSW50MzJB
cnJheToKKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytp
aSkgeworICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikg
eworICAgICAgICAgIGFycmF5W2pqXSA9IHNvdXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2Vy
dEVxKCdTdG9yaW5nICcgKyBzb3VyY2VEYXRhW2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJy
YXlbampdKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBVaW50
OEFycmF5OgorICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNvdXJjZURhdGEubGVuZ3RoOyAr
K2lpKSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBudW1JdGVyYXRpb25zOyArK2pq
KSB7CisgICAgICAgICAgYXJyYXlbampdID0gc291cmNlRGF0YVtpaV07CisgICAgICAgICAgYXNz
ZXJ0RXEoJ1N0b3JpbmcgJyArIHNvdXJjZURhdGFbaWldLCBleHBlY3RlZFJlc3VsdHNbaWldLCBh
cnJheVtqal0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFVp
bnQ4Q2xhbXBlZEFycmF5OgorICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNvdXJjZURhdGEu
bGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBudW1JdGVyYXRp
b25zOyArK2pqKSB7CisgICAgICAgICAgYXJyYXlbampdID0gc291cmNlRGF0YVtpaV07CisgICAg
ICAgICAgYXNzZXJ0RXEoJ1N0b3JpbmcgJyArIHNvdXJjZURhdGFbaWldLCBleHBlY3RlZFJlc3Vs
dHNbaWldLCBhcnJheVtqal0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAg
ICBjYXNlIFVpbnQxNkFycmF5OgorICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNvdXJjZURh
dGEubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBudW1JdGVy
YXRpb25zOyArK2pqKSB7CisgICAgICAgICAgYXJyYXlbampdID0gc291cmNlRGF0YVtpaV07Cisg
ICAgICAgICAgYXNzZXJ0RXEoJ1N0b3JpbmcgJyArIHNvdXJjZURhdGFbaWldLCBleHBlY3RlZFJl
c3VsdHNbaWldLCBhcnJheVtqal0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsK
KyAgICBjYXNlIFVpbnQzMkFycmF5OgorICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNvdXJj
ZURhdGEubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBudW1J
dGVyYXRpb25zOyArK2pqKSB7CisgICAgICAgICAgYXJyYXlbampdID0gc291cmNlRGF0YVtpaV07
CisgICAgICAgICAgYXNzZXJ0RXEoJ1N0b3JpbmcgJyArIHNvdXJjZURhdGFbaWldLCBleHBlY3Rl
ZFJlc3VsdHNbaWldLCBhcnJheVtqal0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbCgiVW5oYW5kbGVkIHR5cGUiKTsKKyAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7
CisgIH0KK30KKworCisvLworLy8gVGVzdCBjYXNlcyBmb3IgYm90aCBzaWduZWQgYW5kIHVuc2ln
bmVkIHR5cGVzCisvLworCitmdW5jdGlvbiB0ZXN0R2V0V2l0aE91dE9mUmFuZ2VJbmRpY2VzKHR5
cGUsIG5hbWUpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyAnICsgbmFtZSArICcgR2V0V2l0aE91dE9m
UmFuZ2VJbmRpY2VzJyk7CisgICAgLy8gU2VlIGJlbG93IGZvciBkZWNsYXJhdGlvbiBvZiB0aGlz
IGdsb2JhbCB2YXJpYWJsZQorICAgIGFycmF5ID0gbmV3IHR5cGUoWzIsIDNdKTsKKyAgICBzaG91
bGRCZVVuZGVmaW5lZCgiYXJyYXlbMl0iKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgiYXJyYXlb
LTFdIik7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImFycmF5WzB4MjAwMDAwMDBdIik7Cit9CisK
K2Z1bmN0aW9uIHRlc3RPZmZzZXRzQW5kU2l6ZXModHlwZSwgbmFtZSwgZWxlbWVudFNpemVJbkJ5
dGVzKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAnIE9mZnNldHNBbmRTaXplcycpOwor
ICB0cnkgeworICAgIHZhciBsZW4gPSAxMDsKKyAgICBhc3NlcnRFcSgndHlwZS5CWVRFU19QRVJf
RUxFTUVOVCcsIGVsZW1lbnRTaXplSW5CeXRlcywgdHlwZS5CWVRFU19QRVJfRUxFTUVOVCk7Cisg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGUobGVuKTsKKyAgICBhc3NlcnQoJ2FycmF5LmJ1ZmZlcics
IGFycmF5LmJ1ZmZlcik7CisgICAgYXNzZXJ0RXEoJ2FycmF5LmJ5dGVPZmZzZXQnLCAwLCBhcnJh
eS5ieXRlT2Zmc2V0KTsKKyAgICBhc3NlcnRFcSgnYXJyYXkubGVuZ3RoJywgbGVuLCBhcnJheS5s
ZW5ndGgpOworICAgIGFzc2VydEVxKCdhcnJheS5ieXRlTGVuZ3RoJywgbGVuICogZWxlbWVudFNp
emVJbkJ5dGVzLCBhcnJheS5ieXRlTGVuZ3RoKTsKKyAgICBhcnJheSA9IG5ldyB0eXBlKGFycmF5
LmJ1ZmZlciwgZWxlbWVudFNpemVJbkJ5dGVzLCBsZW4gLSAxKTsKKyAgICBhc3NlcnQoJ2FycmF5
LmJ1ZmZlcicsIGFycmF5LmJ1ZmZlcik7CisgICAgYXNzZXJ0RXEoJ2FycmF5LmJ5dGVPZmZzZXQn
LCBlbGVtZW50U2l6ZUluQnl0ZXMsIGFycmF5LmJ5dGVPZmZzZXQpOworICAgIGFzc2VydEVxKCdh
cnJheS5sZW5ndGgnLCBsZW4gLSAxLCBhcnJheS5sZW5ndGgpOworICAgIGFzc2VydEVxKCdhcnJh
eS5ieXRlTGVuZ3RoJywgKGxlbiAtIDEpICogZWxlbWVudFNpemVJbkJ5dGVzLCBhcnJheS5ieXRl
TGVuZ3RoKTsKKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRGcm9tVHlwZWRBcnJheSh0eXBlLCBuYW1lKSB7CisgIHJ1
bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAnIFNldEZyb21UeXBlZEFycmF5Jyk7CisgIHRyeSB7Cisg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoMTApOworICAgIHZhciBhcnJheTIgPSBuZXcgdHlwZSg1
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdF
bGVtZW50ICcgKyBpLCAwLCBhcnJheVtpXSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXkyLmxlbmd0aDsgaSsrKSB7CisgICAgICBhcnJheTJbaV0gPSBpOworICAgIH0KKyAg
ICBhcnJheS5zZXQoYXJyYXkyKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Mi5sZW5n
dGg7IGkrKykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIGksIGFycmF5W2ldKTsK
KyAgICB9CisgICAgYXJyYXkuc2V0KGFycmF5MiwgNSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnJheTIubGVuZ3RoOyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCBp
LCBhcnJheVs1ICsgaV0pOworICAgIH0KKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIG5lZ2F0aXZlVGVzdFNldEZyb21UeXBlZEFy
cmF5KHR5cGUsIG5hbWUpIHsKKyAgcnVubmluZygnbmVnYXRpdmVUZXN0ICcgKyBuYW1lICsgJyBT
ZXRGcm9tVHlwZWRBcnJheScpOworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKDUp
OworICAgIHZhciBhcnJheTIgPSBuZXcgdHlwZSg2KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDU7IGkrKykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDAsIGFycmF5W2ldKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheTIubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIGFycmF5MltpXSA9IGk7CisgICAgfQorICAgIHRyeSB7CisgICAgICBhcnJheS5zZXQoYXJy
YXkyKTsKKyAgICAgIGZhaWwoJ0V4cGVjdGVkIGV4Y2VwdGlvbiBmcm9tIGFycmF5LnNldChhcnJh
eTIpJyk7CisgICAgICByZXR1cm47CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KKyAgICB0cnkg
eworICAgICAgYXJyYXkyLnNldChhcnJheSwgMik7CisgICAgICBmYWlsKCdFeHBlY3RlZCBleGNl
cHRpb24gZnJvbSBhcnJheTIuc2V0KGFycmF5LCAyKScpOworICAgICAgcmV0dXJuOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFp
bChlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2V0RnJvbUFycmF5KHR5cGUsIG5hbWUpIHsK
KyAgcnVubmluZygndGVzdCAnICsgbmFtZSArICcgU2V0RnJvbUFycmF5Jyk7CisgIHRyeSB7Cisg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoMTApOworICAgIHZhciBhcnJheTIgPSBbMTAsIDksIDgs
IDcsIDYsIDUsIDQsIDMsIDIsIDFdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykg
eworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDAsIGFycmF5W2ldKTsKKyAgICB9Cisg
ICAgYXJyYXkuc2V0KGFycmF5MiwgMCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheTIu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCAxMCAtIGksIGFy
cmF5W2ldKTsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChl
KTsKKyAgfQorfQorCitmdW5jdGlvbiBuZWdhdGl2ZVRlc3RTZXRGcm9tQXJyYXkodHlwZSwgbmFt
ZSkgeworICBydW5uaW5nKCduZWdhdGl2ZVRlc3QgJyArIG5hbWUgKyAnIFNldEZyb21BcnJheScp
OworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKFsyLCAzXSk7CisgICAgdHJ5IHsK
KyAgICAgIGFycmF5LnNldChbNCwgNV0sIDEpOworICAgICAgZmFpbCgpOworICAgICAgcmV0dXJu
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgIGFycmF5LnNldChb
NCwgNSwgNl0pOworICAgICAgZmFpbCgpOworICAgICAgcmV0dXJuOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAg
fQorfQorCit2YXIgc3ViYXJyYXk7CitmdW5jdGlvbiB0ZXN0U3ViYXJyYXkodHlwZSwgbmFtZSkg
eworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBTdWJhcnJheScpOworICB0cnkgeworICAg
IHZhciBhcnJheSA9IG5ldyB0eXBlKFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSk7Cisg
ICAgdmFyIHN1YmFycmF5ID0gYXJyYXkuc3ViYXJyYXkoMCwgNSk7CisgICAgYXNzZXJ0RXEoJ3N1
YmFycmF5Lmxlbmd0aCcsIDUsIHN1YmFycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA1OyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCBpLCBzdWJhcnJh
eVtpXSk7CisgICAgfQorICAgIHN1YmFycmF5ID0gYXJyYXkuc3ViYXJyYXkoNCwgMTApOworICAg
IGFzc2VydEVxKCdzdWJhcnJheS5sZW5ndGgnLCA2LCBzdWJhcnJheS5sZW5ndGgpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICBhc3NlcnRFcSgnRWxlbWVudCAnICsg
aSwgNCArIGksIHN1YmFycmF5W2ldKTsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChl
KSB7CisgICAgZmFpbChlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ViYXJyYXlPZmZzZXRB
bmRMZW5ndGhDbGFtcGluZyh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUg
KyAnIFN1YmFycmF5IG9mZnNldCBhbmQgbGVuZ3RoIGNsYW1waW5nJyk7CisgIHRyeSB7CisgICAg
dmFyIGFycmF5ID0gbmV3IHR5cGUoWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldKTsKKyAg
ICB2YXIgc3ViYXJyYXkxID0gYXJyYXkuc3ViYXJyYXkoMCwgNSk7CisgICAgdmFyIHN1YmFycmF5
MiA9IHN1YmFycmF5MS5zdWJhcnJheSgtMiwgMTApOworICAgIGFzc2VydEVxKCdzdWJhcnJheTIu
bGVuZ3RoJywgMiwgc3ViYXJyYXkyLmxlbmd0aCk7CisgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyAr
IDAsIDMsIHN1YmFycmF5MlswXSk7CisgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIDEsIDQsIHN1
YmFycmF5MlsxXSk7CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsK
KyAgfQorfQorCitmdW5jdGlvbiBuZWdhdGl2ZVRlc3RTdWJhcnJheSh0eXBlLCBuYW1lKSB7Cisg
IHJ1bm5pbmcoJ25lZ2F0aXZlVGVzdCAnICsgbmFtZSArICcgU3ViYXJyYXknKTsKKyAgdHJ5IHsK
KyAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0p
OworICAgIHN1YmFycmF5ID0gYXJyYXkuc3ViYXJyYXkoNSwgMTEpOworICAgIGlmIChzdWJhcnJh
eS5sZW5ndGggIT0gNSkgeworICAgICAgZmFpbCgpOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBzdWJhcnJheSA9IGFycmF5LnN1YmFycmF5KDEwLCAxMCk7CisgICAgaWYgKHN1YmFycmF5Lmxl
bmd0aCAhPSAwKSB7CisgICAgICBmYWlsKCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBh
c3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24g
dGVzdFNldEJvdW5kYXJ5Q29uZGl0aW9ucyh0eXBlLCBuYW1lLCB0ZXN0VmFsdWVzLCBleHBlY3Rl
ZFZhbHVlcykgeworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBTZXRCb3VuZGFyeUNvbmRp
dGlvbnMnKTsKKyAgdHJ5IHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZSgxKTsKKyAgICBhc3Nl
cnRFcSgnQXJyYXkgbGVuZ3RoJywgMSwgYXJyYXkubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgdGVzdFZhbHVlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIGZvciAodmFyIGpqID0g
MDsgamogPCAxMDsgKytqaikgeworICAgICAgICBhcnJheVswXSA9IHRlc3RWYWx1ZXNbaWldOwor
ICAgICAgICBhc3NlcnRFcSgnRWxlbWVudCAwJywgZXhwZWN0ZWRWYWx1ZXNbaWldLCBhcnJheVsw
XSk7CisgICAgICB9CisgICAgfQorICAgIHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZh
aWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbkJvdW5kYXJ5Q29uZGl0
aW9ucyh0eXBlLCBuYW1lLCB0ZXN0VmFsdWVzLCBleHBlY3RlZFZhbHVlcykgeworICBydW5uaW5n
KCd0ZXN0ICcgKyBuYW1lICsgJyBDb25zdHJ1Y3Rpb25Cb3VuZGFyeUNvbmRpdGlvbnMnKTsKKyAg
dHJ5IHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZSh0ZXN0VmFsdWVzKTsKKyAgICBhc3NlcnRF
cSgnQXJyYXkgbGVuZ3RoJywgdGVzdFZhbHVlcy5sZW5ndGgsIGFycmF5Lmxlbmd0aCk7CisgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICBh
c3NlcnRFcSgnRWxlbWVudCAnICsgaWksIGV4cGVjdGVkVmFsdWVzW2lpXSwgYXJyYXlbaWldKTsK
KyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAgfQor
fQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aE51bGxCdWZmZXIodHlwZSwgbmFtZSkg
eworICAgIHZhciBhcnJheTsKKyAgICB0cnkgeworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51
bGwpOworICAgICAgICB0ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdp
dGggbnVsbCBidWZmZXIgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRo
IG51bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlvbiIpOworICAgIH0KKyAgICB0cnkgeworICAgICAg
ICBhcnJheSA9IG5ldyB0eXBlKG51bGwsIDAsIDApOworICAgICAgICB0ZXN0RmFpbGVkKCJDb25z
dHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggKG51bGwgYnVmZmVyLCAwKSBzaG91bGQgdGhy
b3cgZXhjZXB0aW9uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJD
b25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBl
eGNlcHRpb24iKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShu
dWxsLCAwLCAwKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1l
ICsgIiB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIg
KyBuYW1lICsgIiB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uIik7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aEV4Y2VwdGlvblRocm93aW5n
T2JqZWN0KHR5cGUsIG5hbWUpIHsKKyAgICB2YXIgbyA9IHt9OworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShvLCAibGVuZ3RoIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyB0aHJvdyAiYmFpbDsiIH19
KTsKKyAgICB0cnkgeworICAgICAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShvKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgfQorICAgIHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFt
ZSArICIgd2l0aCBleGNlcHRpb24tdGhyb3dpbmcgYXJyYXktbGlrZSBvYmplY3QgZGlkbid0IGNy
YXNoIHVuZXhwZWN0ZWRseSIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0luZGV4U2l6ZUVy
cihmdW5jLCB0ZXh0KSB7CisgICAgdmFyIGVycm9yVGV4dCA9IHRleHQgKyAiIHNob3VsZCB0aHJv
dyBhbiBleGNlcHRpb24iOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgdGVz
dEZhaWxlZChlcnJvclRleHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCh0ZXh0ICsgIiB0aHJldyBhbiBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93VHlwZUVycm9yKGZ1bmMsIHRleHQpIHsKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAo
ZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgeworICAgICAgICAgICAgb2sgPSB0cnVlOworICAgICAg
ICB9CisgICAgfQorICAgIGlmIChvaykgeworICAgICAgICB0ZXN0UGFzc2VkKHRleHQgKyAiIHRo
cmV3IFR5cGVFcnJvciIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQodGV4dCAr
ICIgc2hvdWxkIHRocm93IFR5cGVFcnJvciIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdENv
bnN0cnVjdGlvbldpdGhPdXRPZlJhbmdlVmFsdWVzKHR5cGUsIG5hbWUpIHsKKyAgICBzaG91bGRU
aHJvd0luZGV4U2l6ZUVycihmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBB
cnJheUJ1ZmZlcig0KTsKKyAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCA0LCAw
eDNGRkZGRkZGKTsKKyAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG91
dC1vZi1yYW5nZSBudW1iZXIgb2YgZWxlbWVudHMiKTsKKyAgICBzaG91bGRUaHJvd0luZGV4U2l6
ZUVycihmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0
KTsKKyAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCA4KTsKKyAgICB9LCAiQ29u
c3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG91dC1vZi1yYW5nZSBvZmZzZXQiKTsKK30K
KworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhOZWdhdGl2ZU91dE9mUmFuZ2VWYWx1ZXMo
dHlwZSwgbmFtZSkgeworICAgIHRyeSB7CisgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlC
dWZmZXIoLTEpOworICAgICAgICB0ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZm
ZXIgd2l0aCBuZWdhdGl2ZSBzaXplIHNob3VsZCB0aHJvdyBleGNlcHRpb24iKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZl
ciB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorICAgIHRyeSB7
CisgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKC0xKTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Q29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZlIHNpemUgc2hvdWxkIHRo
cm93IGV4Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
Q29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhj
ZXB0aW9uIik7CisgICAgfQorICAgIHNob3VsZFRocm93SW5kZXhTaXplRXJyKGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgICAgICB2YXIg
YXJyYXkgPSBuZXcgdHlwZShidWZmZXIsIDQsIC0yMTQ3NDgzNjQ4KTsKKyAgICB9LCAiQ29uc3Ry
dWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMi
KTsKK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhVbmFsaWduZWRPZmZzZXQodHlw
ZSwgbmFtZSwgZWxlbWVudFNpemVJbkJ5dGVzKSB7CisgICAgaWYgKGVsZW1lbnRTaXplSW5CeXRl
cyA+IDEpIHsKKyAgICAgICAgc2hvdWxkVGhyb3dJbmRleFNpemVFcnIoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDMyKTsKKyAgICAgICAgICAg
IHZhciBhcnJheSA9IG5ldyB0eXBlKGJ1ZmZlciwgMSwgZWxlbWVudFNpemVJbkJ5dGVzKTsKKyAg
ICAgICAgfSwgIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0aCB1bmFsaWduZWQgb2Zm
c2V0Iik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aFVuYWxpZ25l
ZExlbmd0aCh0eXBlLCBuYW1lLCBlbGVtZW50U2l6ZUluQnl0ZXMpIHsKKyAgICBpZiAoZWxlbWVu
dFNpemVJbkJ5dGVzID4gMSkgeworICAgICAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZWxlbWVu
dFNpemVJbkJ5dGVzICsgMSk7CisgICAgICAgICAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShidWZm
ZXIsIDApOworICAgICAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIHVu
YWxpZ25lZCBsZW5ndGgiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RDb25zdHJ1Y3Rpb25P
Zkh1Z2VBcnJheSh0eXBlLCBuYW1lLCBzeikgeworICAgIGlmIChzeiA9PSAxKQorICAgICAgICBy
ZXR1cm47CisgICAgdHJ5IHsKKyAgICAgICAgLy8gQ29uc3RydWN0aW9uIG9mIGh1Z2UgYXJyYXlz
IG11c3QgZmFpbCBiZWNhdXNlIGJ5dGVMZW5ndGggaXMKKyAgICAgICAgLy8gYW4gdW5zaWduZWQg
bG9uZworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKDMwMDAwMDAwMDApOworICAgICAgICB0ZXN0
RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgaHVnZSAiICsgbmFtZSArICIgc2hvdWxkIHRocm93IGV4
Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3Ry
dWN0aW9uIG9mIGh1Z2UgIiArIG5hbWUgKyAiIHRocmV3IGV4Y2VwdGlvbiIpOworICAgIH0KK30K
KworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhCb3RoQXJyYXlCdWZmZXJBbmRMZW5ndGgo
dHlwZSwgbmFtZSwgZWxlbWVudFNpemVJbkJ5dGVzKSB7CisgICAgdmFyIGJ1ZkJ5dGVMZW5ndGgg
PSAxMDAwICogZWxlbWVudFNpemVJbkJ5dGVzOworICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZm
ZXIoYnVmQnl0ZUxlbmd0aCk7CisgICAgdmFyIGFycmF5MSA9IG5ldyB0eXBlKGJ1Zik7CisgICAg
dmFyIGFycmF5MiA9IG5ldyB0eXBlKGJ1ZkJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZUluQnl0ZXMp
OworICAgIGlmIChhcnJheTEubGVuZ3RoID09IGFycmF5Mi5sZW5ndGgpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiQXJyYXkgbGVuZ3RocyBtYXRjaGVkIHdpdGggZXhwbGljaXQgYW5kIGltcGxpY2l0
IGNyZWF0aW9uIG9mIEFycmF5QnVmZmVyIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiQXJyYXkgbGVuZ3RocyBESUQgTk9UIE1BVENIIHdpdGggZXhwbGljaXQgYW5kIGltcGxp
Y2l0IGNyZWF0aW9uIG9mIEFycmF5QnVmZmVyIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
Q29uc3RydWN0aW9uV2l0aFN1YlBvcnRpb25PZkFycmF5QnVmZmVyKHR5cGUsIG5hbWUsIGVsZW1l
bnRTaXplSW5CeXRlcykgeworICAgIGlmIChlbGVtZW50U2l6ZUluQnl0ZXMgPiAxKSB7CisgICAg
ICAgIC8vIFRlc3QgY29uc3RydWN0aW9uIHdpdGggYSB2YWxpZCBzdWItcG9ydGlvbiBvZiBhbiBh
cnJheSBidWZmZXIKKyAgICAgICAgLy8gKHdob3NlIHNpemUgaXMgbm90IGFuIGludGVncmFsIG11
bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUpLgorICAgICAgICB2YXIgc2l6ZSA9IDQgKiBlbGVt
ZW50U2l6ZUluQnl0ZXMgKyAoZWxlbWVudFNpemVJbkJ5dGVzIC8gMik7CisgICAgICAgIHZhciBi
dWYgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2
YXIgYXJyYXkgPSBuZXcgdHlwZShidWYsIDAsIDIpOworICAgICAgICAgICAgdGVzdFBhc3NlZCgi
bmV3ICIgKyBuYW1lICsgIihuZXcgQXJyYXlCdWZmZXIoIiArIHNpemUgKyAiKSwgMCwgMikgc3Vj
Y2VlZGVkIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
Im5ldyAiICsgbmFtZSArICIobmV3IEFycmF5QnVmZmVyKCIgKyBzaXplICsgIiksIDAsIDIpIGZh
aWxlZDogIiArIGUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBUaGVzZSBuZWVkIHRvIGJl
IGdsb2JhbCBmb3Igc2hvdWxkQmUgdG8gc2VlIHRoZW0KK3ZhciBhcnJheTsKK3ZhciB0eXBlU2l6
ZTsKKworZnVuY3Rpb24gdGVzdFN1YmFycmF5V2l0aE91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFt
ZSwgc3opIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBzdWJhcnJheSBvZiAiICsgbmFtZSk7CisgICAg
dHJ5IHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigzMik7CisgICAgICAg
IGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyKTsKKyAgICAgICAgdHlwZVNpemUgPSBzejsKKyAgICAg
ICAgc2hvdWxkQmUoImFycmF5Lmxlbmd0aCIsICIzMiAvIHR5cGVTaXplIik7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBzaG91bGRCZSgiYXJyYXkuc3ViYXJyYXkoNCwgMHgzRkZGRkZGRiku
bGVuZ3RoIiwgIigzMiAvIHR5cGVTaXplKSAtIDQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJh
cnJheS5zdWJhcnJheSg0LCAtMjE0NzQ4MzY0OCkubGVuZ3RoIiwgIjAiKTsKKyAgICAgICAgICAg
IC8vIFRlc3Qgc3ViYXJyYXkoKSBhZ2FpbnN0IG92ZXJmbG93cy4KKyAgICAgICAgICAgIGFycmF5
ID0gYXJyYXkuc3ViYXJyYXkoMik7CisgICAgICAgICAgICBpZiAoc3ogPiAxKSB7CisgICAgICAg
ICAgICAgICAgLy8gRnVsbCBieXRlIG9mZnNldCBpcyArMSBsYXJnZXIgdGhhbiB0aGUgbWF4aW11
bSB1bnNpZ25lZCBsb25nIGludC4KKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgc3ViYXJy
YXkoKSBzdGlsbCBoYW5kbGVzIGl0IGNvcnJlY3RseS4gIE90aGVyd2lzZSBvdmVyZmxvdyB3b3Vs
ZCBoYXBwZW4gYW5kCisgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IHdvdWxkIGJlIDAsIGFuZCBh
cnJheS5sZW5ndGggYXJyYXkubGVuZ3RoIHdvdWxkIGluY29ycmVjdGx5IGJlIDEuCisgICAgICAg
ICAgICAgICAgdmFyIHN0YXJ0ID0gNDI5NDk2NzI5NiAvIHN6IC0gMjsKKyAgICAgICAgICAgICAg
ICBhcnJheSA9IGFycmF5LnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIDEpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJhcnJheS5sZW5ndGgiLCAiMCIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTdWJhcnJheSBvZiAiICsg
bmFtZSArICIgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIkV4Y2VwdGlvbjogIiArIGUpOworICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdFN1YmFycmF5V2l0aERlZmF1bHRWYWx1ZXModHlwZSwgbmFtZSwgc3opIHsKKyAg
ICBkZWJ1ZygiVGVzdGluZyBzdWJhcnJheSB3aXRoIGRlZmF1bHQgaW5wdXRzIG9mICIgKyBuYW1l
KTsKKyAgICB0cnkgeworICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDMyKTsK
KyAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShidWZmZXIpOworICAgICAgICB0eXBlU2l6ZSA9IHN6
OworICAgICAgICBzaG91bGRCZSgiYXJyYXkubGVuZ3RoIiwgIjMyIC8gdHlwZVNpemUiKTsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhcnJheS5zdWJhcnJheSgwKS5sZW5n
dGgiLCAiKDMyIC8gdHlwZVNpemUpIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYXJyYXkuc3Vi
YXJyYXkoMikubGVuZ3RoIiwgIigzMiAvIHR5cGVTaXplKSAtIDIiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJhcnJheS5zdWJhcnJheSgtMikubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJhcnJheS5zdWJhcnJheSgtMjE0NzQ4MzY0OCkubGVuZ3RoIiwgIigzMiAvIHR5cGVT
aXplKSIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJT
dWJhcnJheSBvZiAiICsgbmFtZSArICIgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgICAgIH0KKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkV4Y2VwdGlvbjogIiArIGUpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gc2V0V2l0aEludmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVHlwZSwgc291cmNlTmFt
ZSwgc291cmNlTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBv
ZmZzZXREZXNjcmlwdGlvbikgeworICAgIHZhciB3ZWJnbEFycmF5ID0gbmV3IHR5cGUobGVuZ3Ro
KTsKKyAgICB2YXIgc291cmNlQXJyYXkgPSBuZXcgc291cmNlVHlwZShzb3VyY2VMZW5ndGgpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyBpKyspCisgICAgICAgIHNvdXJj
ZUFycmF5W2ldID0gNDIgKyBpOworICAgIHRyeSB7CisgICAgICAgIHdlYmdsQXJyYXkuc2V0KHNv
dXJjZUFycmF5LCBvZmZzZXQpOworICAgICAgICB0ZXN0RmFpbGVkKCJTZXR0aW5nICIgKyBuYW1l
ICsgIiBmcm9tICIgKyBzb3VyY2VOYW1lICsgIiB3aXRoICIgKworICAgICAgICAgICAgICAgICAg
IG9mZnNldERlc2NyaXB0aW9uICsgIiBvZmZzZXQgd2FzIG5vdCBjYXVnaHQiKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlNldHRpbmcgIiArIG5hbWUgKyAiIGZyb20g
IiArIHNvdXJjZU5hbWUgKyAiIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgb2Zmc2V0RGVz
Y3JpcHRpb24gKyAiIG9mZnNldCB3YXMgY2F1Z2h0Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBz
ZXRXaXRoVmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZVR5cGUsIHNvdXJjZU5hbWUsIHNvdXJjZUxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIG9mZnNldERlc2NyaXB0aW9uKSB7CisgICAgcnVu
bmluZygiU2V0dGluZyAiICsgbmFtZSArICIgZnJvbSAiICsgc291cmNlTmFtZSArICIgd2l0aCAi
ICsKKyAgICAgICAgICAgIG9mZnNldERlc2NyaXB0aW9uICsgIiBvZmZzZXQiKTsKKyAgICB2YXIg
d2ViZ2xBcnJheSA9IG5ldyB0eXBlKGxlbmd0aCk7CisgICAgdmFyIHNvdXJjZUFycmF5ID0gbmV3
IHNvdXJjZVR5cGUoc291cmNlTGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJj
ZUxlbmd0aDsgaSsrKQorICAgICAgICBzb3VyY2VBcnJheVtpXSA9IDQyICsgaTsKKyAgICB0cnkg
eworICAgICAgICB3ZWJnbEFycmF5LnNldChzb3VyY2VBcnJheSwgb2Zmc2V0KTsKKyAgICAgICAg
b2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNvdXJjZUxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnRFcSgiRWxlbWVudCAiICsg
aSArIG9mZnNldCwgc291cmNlQXJyYXlbaV0sIHdlYmdsQXJyYXlbaSArIG9mZnNldF0pOworICAg
ICAgICB9CisgICAgICAgIHBhc3MoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGZhaWwo
ZSk7CisgICAgfQorfQorCisKK2Z1bmN0aW9uIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0aE91dE9m
UmFuZ2VPZmZzZXQodHlwZSwgbmFtZSkgeworICAgIHNldFdpdGhJbnZhbGlkT2Zmc2V0KHR5cGUs
IG5hbWUsIDMyLCBBcnJheSwgImFycmF5IiwgMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
MHg3RkZGRkZGOCwgIm91dC1vZi1yYW5nZSIpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0dGluZ0Zy
b21UeXBlZEFycmF5V2l0aE91dE9mUmFuZ2VPZmZzZXQodHlwZSwgbmFtZSkgeworICAgIHNldFdp
dGhJbnZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCB0eXBlLCBuYW1lLCAxNiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAweDdGRkZGRkY4LCAib3V0LW9mLXJhbmdlIik7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0aE5lZ2F0aXZlT2Zmc2V0KHR5cGUsIG5hbWUpIHsK
KyAgICBzZXRXaXRoSW52YWxpZE9mZnNldCh0eXBlLCBuYW1lLCAzMiwgQXJyYXksICJhcnJheSIs
IDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAibmVnYXRpdmUiKTsKK30KKworZnVu
Y3Rpb24gdGVzdFNldHRpbmdGcm9tVHlwZWRBcnJheVdpdGhOZWdhdGl2ZU9mZnNldCh0eXBlLCBu
YW1lKSB7CisgICAgc2V0V2l0aEludmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgMzIsIHR5cGUsIG5h
bWUsIDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAibmVnYXRpdmUiKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFNldHRpbmdGcm9tQXJyYXlXaXRoTWludXNaZXJvT2Zmc2V0KHR5cGUsIG5h
bWUpIHsKKyAgICBzZXRXaXRoVmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgMzIsIEFycmF5LCAiYXJy
YXkiLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgLTAsICItMCIpOworfQorCitmdW5jdGlv
biB0ZXN0U2V0dGluZ0Zyb21UeXBlZEFycmF5V2l0aE1pbnVzWmVyb09mZnNldCh0eXBlLCBuYW1l
KSB7CisgICAgc2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCB0eXBlLCBuYW1lLCAx
NiwKKyAgICAgICAgICAgICAgICAgICAgICAgLTAsICItMCIpOworfQorCitmdW5jdGlvbiB0ZXN0
U2V0dGluZ0Zyb21BcnJheVdpdGhCb3VuZGFyeU9mZnNldCh0eXBlLCBuYW1lKSB7CisgICAgc2V0
V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCBBcnJheSwgImFycmF5IiwgMTYsCisgICAg
ICAgICAgICAgICAgICAgICAgIDE2LCAiYm91bmRhcnkiKTsKK30KKworZnVuY3Rpb24gdGVzdFNl
dHRpbmdGcm9tVHlwZWRBcnJheVdpdGhCb3VuZGFyeU9mZnNldCh0eXBlLCBuYW1lKSB7CisgICAg
c2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCB0eXBlLCBuYW1lLCAxNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgMTYsICJib3VuZGFyeSIpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0
dGluZ0Zyb21BcnJheVdpdGhOb25JbnRlZ2VyT2Zmc2V0KHR5cGUsIG5hbWUpIHsKKyAgICBzZXRX
aXRoVmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgMzIsIEFycmF5LCAiYXJyYXkiLCAxNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgMTYuOTk5LCAibm9uLWludGVnZXIiKTsKK30KKworZnVuY3Rpb24g
dGVzdFNldHRpbmdGcm9tVHlwZWRBcnJheVdpdGhOb25JbnRlZ2VyT2Zmc2V0KHR5cGUsIG5hbWUp
IHsKKyAgICBzZXRXaXRoVmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgMzIsIHR5cGUsIG5hbWUsIDE2
LAorICAgICAgICAgICAgICAgICAgICAgICAxNi45OTksICJub24taW50ZWdlciIpOworfQorCitm
dW5jdGlvbiB0ZXN0U2V0dGluZ0Zyb21GYWtlQXJyYXlXaXRoT3V0T2ZSYW5nZUxlbmd0aCh0eXBl
LCBuYW1lKSB7CisgICAgdmFyIHdlYmdsQXJyYXkgPSBuZXcgdHlwZSgzMik7CisgICAgdmFyIGFy
cmF5ID0ge307CisgICAgYXJyYXkubGVuZ3RoID0gMHg4MDAwMDAwMDsKKyAgICB0cnkgeworICAg
ICAgICB3ZWJnbEFycmF5LnNldChhcnJheSwgOCk7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldHRp
bmcgIiArIG5hbWUgKyAiIGZyb20gZmFrZSBhcnJheSB3aXRoIGludmFsaWQgbGVuZ3RoIHdhcyBu
b3QgY2F1Z2h0Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJTZXR0
aW5nICIgKyBuYW1lICsgIiBmcm9tIGZha2UgYXJyYXkgd2l0aCBpbnZhbGlkIGxlbmd0aCB3YXMg
Y2F1Z2h0Iik7CisgICAgfQorfQorCisKK2Z1bmN0aW9uIG5lZ2F0aXZlVGVzdEdldEFuZFNldE1l
dGhvZHModHlwZSwgbmFtZSkgeworICAgIGFycmF5ID0gbmV3IHR5cGUoWzIsIDNdKTsKKyAgICBz
aG91bGRCZVVuZGVmaW5lZCgiYXJyYXkuZ2V0Iik7CisgICAgdmFyIGV4Y2VwdGlvblRocm93biA9
IGZhbHNlOworICAgIC8vIFdlIGRlbGliZXJhdGVseSBjaGVjayBmb3IgYW4gZXhjZXB0aW9uIGhl
cmUgcmF0aGVyIHRoYW4gdXNpbmcKKyAgICAvLyBzaG91bGRUaHJvdyBoZXJlIGJlY2F1c2UgdGhl
IHByZWNpc2UgY29udGVudHMgb2YgdGhlIHN5bnRheAorICAgIC8vIGVycm9yIGFyZSBub3Qgc3Bl
Y2lmaWVkLgorICAgIHRyeSB7CisgICAgICAgIHdlYkdMQXJyYXkuc2V0KDAsIDEpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXhjZXB0aW9uVGhyb3duID0gdHJ1ZTsKKyAgICB9CisgICAg
dmFyIG91dHB1dCA9ICJhcnJheS5zZXQoMCwgMSkgIjsKKyAgICBpZiAoZXhjZXB0aW9uVGhyb3du
KSB7CisgICAgICAgIHRlc3RQYXNzZWQob3V0cHV0ICsgInRocmV3IGV4Y2VwdGlvbi4iKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKG91dHB1dCArICJkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3ROYU5Db252ZXJzaW9uKHR5cGUs
IG5hbWUpIHsKKyAgcnVubmluZygndGVzdCBzdG9yaW5nIE5hTiBpbiAnICsgbmFtZSk7CisKKyAg
dmFyIGFycmF5ID0gbmV3IHR5cGUoWzEsIDFdKTsKKyAgdmFyIHJlc3VsdHMgPSBbXTsKKworICAv
LyBUaGUgY29kZSBibG9jayBpbiBlYWNoIG9mIHRoZSBjYXNlIHN0YXRlbWVudHMgYmVsb3cgaXMg
aWRlbnRpY2FsLCBidXQgc29tZQorICAvLyBKYXZhU2NyaXB0IGVuZ2luZXMgbmVlZCBzZXBhcmF0
ZSBjb3BpZXMgaW4gb3JkZXIgdG8gZXhlcmNpc2UgYWxsIG9mCisgIC8vIHRoZWlyIG9wdGltaXpl
ZCBjb2RlIHBhdGhzLgorICB0cnkgeworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmxv
YXQzMkFycmF5OgorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
eworICAgICAgICBhcnJheVtpXSA9IE5hTjsKKyAgICAgICAgcmVzdWx0c1tpXSA9IGFycmF5W2ld
OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG9hdDY0QXJyYXk6CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycmF5W2ld
ID0gTmFOOworICAgICAgICByZXN1bHRzW2ldID0gYXJyYXlbaV07CisgICAgICB9CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEludDhBcnJheToKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
YXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXJyYXlbaV0gPSBOYU47CisgICAgICAgIHJlc3Vs
dHNbaV0gPSBhcnJheVtpXTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgSW50MTZB
cnJheToKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgYXJyYXlbaV0gPSBOYU47CisgICAgICAgIHJlc3VsdHNbaV0gPSBhcnJheVtpXTsKKyAg
ICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgSW50MzJBcnJheToKKyAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXJyYXlbaV0gPSBOYU47
CisgICAgICAgIHJlc3VsdHNbaV0gPSBhcnJheVtpXTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVWludDhBcnJheToKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgYXJyYXlbaV0gPSBOYU47CisgICAgICAgIHJlc3VsdHNbaV0g
PSBhcnJheVtpXTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgVWludDhDbGFtcGVk
QXJyYXk6CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGFycmF5W2ldID0gTmFOOworICAgICAgICByZXN1bHRzW2ldID0gYXJyYXlbaV07Cisg
ICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFVpbnQxNkFycmF5OgorICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBhcnJheVtpXSA9IE5h
TjsKKyAgICAgICAgcmVzdWx0c1tpXSA9IGFycmF5W2ldOworICAgICAgfQorICAgICAgYnJlYWs7
CisgICAgY2FzZSBVaW50MzJBcnJheToKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXku
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXJyYXlbaV0gPSBOYU47CisgICAgICAgIHJlc3VsdHNb
aV0gPSBhcnJheVtpXTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICBmYWlsKCJVbmhhbmRsZWQgdHlwZSIpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8g
U29tZSB0eXBlcyBwcmVzZXJ2ZSBOYU4gdmFsdWVzOyBhbGwgb3RoZXIgdHlwZXMgY29udmVydCBO
YU4gdG8gemVyby4KKyAgICBpZiAodHlwZSA9PT0gRmxvYXQzMkFycmF5IHx8IHR5cGUgPT09IEZs
b2F0NjRBcnJheSkgeworICAgICAgYXNzZXJ0KCdpbml0aWFsIE5hTiBwcmVzZXJ2ZWQnLCBpc05h
TihuZXcgdHlwZShbTmFOXSlbMF0pKTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXku
bGVuZ3RoOyArK2kpCisgICAgICAgIGFzc2VydCgnTmFOIHByZXNlcnZlZCB2aWEgc2V0dGVyJywg
aXNOYU4ocmVzdWx0c1tpXSkpOworICAgIH0gZWxzZSB7CisgICAgICBhc3NlcnRFcSgnaW5pdGlh
bCBOYU4gY29udmVydGVkIHRvIHplcm8nLCAwLCBuZXcgdHlwZShbTmFOXSlbMF0pOworICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgYXNzZXJ0RXEo
J05hTiBjb252ZXJ0ZWQgdG8gemVybyBieSBzZXR0ZXInLCAwLCByZXN1bHRzW2ldKTsKKyAgICB9
CisKKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGZhaWwoZSk7CisgIH0KK30K
KworZnVuY3Rpb24gdGVzdEluaGVyaXRhbmNlSGllcmFyY2h5KCkgeworICBkZWJ1ZygndGVzdCBp
bmhlcml0YW5jZSBoaWVyYXJjaHkgb2YgdHlwZWQgYXJyYXkgdmlld3MnKTsKKworICB0cnkgewor
ICAgIHZhciBmb28gPSBBcnJheUJ1ZmZlclZpZXc7CisgICAgdGVzdFBhc3NlZCgnQXJyYXlCdWZm
ZXJWaWV3IGRvZXMgbm90IGhhdmUgW05vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1
dGUgYW5kIHNob3VsZCBiZSBkZWZpbmVkJyk7CisKKyAgICBzaG91bGRCZSgnbmV3IEludDhBcnJh
eSgxKSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyVmlldycsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
J25ldyBVaW50OEFycmF5KDEpIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJWaWV3JywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDEpIGluc3RhbmNlb2YgQXJyYXlC
dWZmZXJWaWV3JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnbmV3IEludDE2QXJyYXkoMSkgaW5z
dGFuY2VvZiBBcnJheUJ1ZmZlclZpZXcnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCduZXcgVWlu
dDE2QXJyYXkoMSkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlclZpZXcnLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCduZXcgSW50MzJBcnJheSgxKSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyVmlldycsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ25ldyBVaW50MzJBcnJheSgxKSBpbnN0YW5jZW9mIEFycmF5
QnVmZmVyVmlldycsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ25ldyBGbG9hdDMyQXJyYXkoMSkg
aW5zdGFuY2VvZiBBcnJheUJ1ZmZlclZpZXcnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCduZXcg
RmxvYXQ2NEFycmF5KDEpIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJWaWV3JywgJ3RydWUnKTsKKyAg
ICBzaG91bGRCZSgnbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcig4KSkgaW5zdGFuY2VvZiBB
cnJheUJ1ZmZlclZpZXcnLCAndHJ1ZScpOworCisgICAgc2hvdWxkVGhyb3dUeXBlRXJyb3IoZnVu
Y3Rpb24oKSB7IG5ldyBBcnJheUJ1ZmZlclZpZXcoKSB9LCAibmV3IEFycmF5QnVmZmVyVmlldygp
Iik7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICB0ZXN0RmFpbGVkKCdBcnJheUJ1ZmZlclZpZXcgZG9l
cyBub3QgaGF2ZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSBidXQgd2Fz
IG5vdCBkZWZpbmVkJyk7CisgIH0KKworICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUg
a2luZCBvZiB2aWV3IHRoYXQgaW5oZXJpdHMgZnJvbSBhbm90aGVyCisgIHNob3VsZEJlKCduZXcg
VWludDhDbGFtcGVkQXJyYXkoMSkgaW5zdGFuY2VvZiBVaW50OEFycmF5JywgJ3RydWUnKTsKK30K
KworCisvLworLy8gVGVzdCBkcml2ZXIKKy8vCisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICBh
bGxQYXNzZWQgPSB0cnVlOworCisgIHRlc3RTbGljZSgpOworICB0ZXN0SW5oZXJpdGFuY2VIaWVy
YXJjaHkoKTsKKworICAvLyBUaGUgIm5hbWUiIGF0dHJpYnV0ZSBpcyBhIGNvbmNlc3Npb24gdG8g
YnJvd3NlcnMgd2hpY2ggZG9uJ3QKKyAgLy8gaW1wbGVtZW50IHRoZSAibmFtZSIgcHJvcGVydHkg
b24gZnVuY3Rpb24gb2JqZWN0cworICB2YXIgdGVzdENhc2VzID0KKyAgICBbIHtuYW1lOiAiRmxv
YXQzMkFycmF5IiwKKyAgICAgICB1bnNpZ25lZDogZmFsc2UsCisgICAgICAgaW50ZWdyYWw6IGZh
bHNlLAorICAgICAgIGVsZW1lbnRTaXplSW5CeXRlczogNCwKKyAgICAgICB0ZXN0VmFsdWVzOiAg
ICAgWyAtNTAwLjUsIDUwMC41IF0sCisgICAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgLTUwMC41LCA1
MDAuNSBdCisgICAgICB9LAorICAgICAge25hbWU6ICJGbG9hdDY0QXJyYXkiLAorICAgICAgIHVu
c2lnbmVkOiBmYWxzZSwKKyAgICAgICBpbnRlZ3JhbDogZmFsc2UsCisgICAgICAgZWxlbWVudFNp
emVJbkJ5dGVzOiA4LAorICAgICAgIHRlc3RWYWx1ZXM6ICAgICBbIC01MDAuNSwgNTAwLjUgXSwK
KyAgICAgICBleHBlY3RlZFZhbHVlczogWyAtNTAwLjUsIDUwMC41IF0KKyAgICAgIH0sCisgICAg
ICB7bmFtZTogIkludDhBcnJheSIsCisgICAgICAgdW5zaWduZWQ6IGZhbHNlLAorICAgICAgIGlu
dGVncmFsOiB0cnVlLAorICAgICAgIGVsZW1lbnRTaXplSW5CeXRlczogMSwKKyAgICAgICB0ZXN0
VmFsdWVzOiAgICAgWyAtMTI4LCAxMjcsIC0xMjksICAxMjggXSwKKyAgICAgICBleHBlY3RlZFZh
bHVlczogWyAtMTI4LCAxMjcsICAxMjcsIC0xMjggXQorICAgICAgfSwKKyAgICAgIHtuYW1lOiAi
SW50MTZBcnJheSIsCisgICAgICAgdW5zaWduZWQ6IGZhbHNlLAorICAgICAgIGludGVncmFsOiB0
cnVlLAorICAgICAgIGVsZW1lbnRTaXplSW5CeXRlczogMiwKKyAgICAgICB0ZXN0VmFsdWVzOiAg
ICAgWyAtMzI3NjgsIDMyNzY3LCAtMzI3NjksICAzMjc2OCBdLAorICAgICAgIGV4cGVjdGVkVmFs
dWVzOiBbIC0zMjc2OCwgMzI3NjcsICAzMjc2NywgLTMyNzY4IF0KKyAgICAgIH0sCisgICAgICB7
bmFtZTogIkludDMyQXJyYXkiLAorICAgICAgIHVuc2lnbmVkOiBmYWxzZSwKKyAgICAgICBpbnRl
Z3JhbDogdHJ1ZSwKKyAgICAgICBlbGVtZW50U2l6ZUluQnl0ZXM6IDQsCisgICAgICAgdGVzdFZh
bHVlczogICAgIFsgLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDcsIC0yMTQ3NDgzNjQ5LCAgMjE0NzQ4
MzY0OCBdLAorICAgICAgIGV4cGVjdGVkVmFsdWVzOiBbIC0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3
LCAgMjE0NzQ4MzY0NywgLTIxNDc0ODM2NDggXQorICAgICAgfSwKKyAgICAgIHtuYW1lOiAiVWlu
dDhBcnJheSIsCisgICAgICAgdW5zaWduZWQ6IHRydWUsCisgICAgICAgaW50ZWdyYWw6IHRydWUs
CisgICAgICAgZWxlbWVudFNpemVJbkJ5dGVzOiAxLAorICAgICAgIHRlc3RWYWx1ZXM6ICAgICBb
IDAsIDI1NSwgIC0xLCAyNTYgXSwKKyAgICAgICBleHBlY3RlZFZhbHVlczogWyAwLCAyNTUsIDI1
NSwgICAwIF0KKyAgICAgIH0sCisgICAgICB7bmFtZTogIlVpbnQ4Q2xhbXBlZEFycmF5IiwKKyAg
ICAgICB1bnNpZ25lZDogdHJ1ZSwKKyAgICAgICBpbnRlZ3JhbDogdHJ1ZSwKKyAgICAgICBlbGVt
ZW50U2l6ZUluQnl0ZXM6IDEsCisgICAgICAgdGVzdFZhbHVlczogICAgIFsgMCwgMjU1LCAgLTEs
IDI1NiBdLAorICAgICAgIGV4cGVjdGVkVmFsdWVzOiBbIDAsIDI1NSwgICAwLCAyNTUgXQorICAg
ICAgfSwKKyAgICAgIHtuYW1lOiAiVWludDE2QXJyYXkiLAorICAgICAgIHVuc2lnbmVkOiB0cnVl
LAorICAgICAgIGludGVncmFsOiB0cnVlLAorICAgICAgIGVsZW1lbnRTaXplSW5CeXRlczogMiwK
KyAgICAgICB0ZXN0VmFsdWVzOiAgICAgWyAwLCA2NTUzNSwgICAgLTEsIDY1NTM2IF0sCisgICAg
ICAgZXhwZWN0ZWRWYWx1ZXM6IFsgMCwgNjU1MzUsIDY1NTM1LCAgICAgMCBdCisgICAgICB9LAor
ICAgICAge25hbWU6ICJVaW50MzJBcnJheSIsCisgICAgICAgdW5zaWduZWQ6IHRydWUsCisgICAg
ICAgaW50ZWdyYWw6IHRydWUsCisgICAgICAgZWxlbWVudFNpemVJbkJ5dGVzOiA0LAorICAgICAg
IHRlc3RWYWx1ZXM6ICAgICBbIDAsIDQyOTQ5NjcyOTUsICAgICAgICAgLTEsIDQyOTQ5NjcyOTYg
XSwKKyAgICAgICBleHBlY3RlZFZhbHVlczogWyAwLCA0Mjk0OTY3Mjk1LCA0Mjk0OTY3Mjk1LCAg
ICAgICAgICAwIF0KKyAgICAgIH0KKyAgICBdOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RD
YXNlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciB0ZXN0Q2FzZSA9IHRlc3RDYXNlc1tpXTsKKyAg
ICBydW5uaW5nKHRlc3RDYXNlLm5hbWUpOworICAgIGlmICghKHRlc3RDYXNlLm5hbWUgaW4gd2lu
ZG93KSkgeworICAgICAgICBmYWlsKCJkb2VzIG5vdCBleGlzdCIpOworICAgICAgICBjb250aW51
ZTsKKyAgICB9CisgICAgdmFyIHR5cGUgPSB3aW5kb3dbdGVzdENhc2UubmFtZV07CisgICAgdmFy
IG5hbWUgPSB0ZXN0Q2FzZS5uYW1lOworICAgIGlmICh0ZXN0Q2FzZS51bnNpZ25lZCkgeworICAg
ICAgdGVzdFNldEFuZEdldDEwVG8xKHR5cGUsIG5hbWUpOworICAgICAgdGVzdENvbnN0cnVjdFdp
dGhBcnJheU9mVW5zaWduZWRWYWx1ZXModHlwZSwgbmFtZSk7CisgICAgICB0ZXN0Q29uc3RydWN0
V2l0aFR5cGVkQXJyYXlPZlVuc2lnbmVkVmFsdWVzKHR5cGUsIG5hbWUpOworICAgIH0gZWxzZSB7
CisgICAgICB0ZXN0U2V0QW5kR2V0UG9zMTBUb05lZzEwKHR5cGUsIG5hbWUpOworICAgICAgdGVz
dENvbnN0cnVjdFdpdGhBcnJheU9mU2lnbmVkVmFsdWVzKHR5cGUsIG5hbWUpOworICAgICAgdGVz
dENvbnN0cnVjdFdpdGhUeXBlZEFycmF5T2ZTaWduZWRWYWx1ZXModHlwZSwgbmFtZSk7CisgICAg
fQorICAgIGlmICh0ZXN0Q2FzZS5pbnRlZ3JhbCkgeworICAgICAgdGVzdEludGVncmFsQXJyYXlU
cnVuY2F0aW9uQmVoYXZpb3IodHlwZSwgbmFtZSwgdGVzdENhc2UudW5zaWduZWQpOworICAgIH0K
KyAgICB0ZXN0R2V0V2l0aE91dE9mUmFuZ2VJbmRpY2VzKHR5cGUsIG5hbWUpOworICAgIHRlc3RP
ZmZzZXRzQW5kU2l6ZXModHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzKTsK
KyAgICB0ZXN0U2V0RnJvbVR5cGVkQXJyYXkodHlwZSwgbmFtZSk7CisgICAgbmVnYXRpdmVUZXN0
U2V0RnJvbVR5cGVkQXJyYXkodHlwZSwgbmFtZSk7CisgICAgdGVzdFNldEZyb21BcnJheSh0eXBl
LCBuYW1lKTsKKyAgICBuZWdhdGl2ZVRlc3RTZXRGcm9tQXJyYXkodHlwZSwgbmFtZSk7CisgICAg
dGVzdFN1YmFycmF5KHR5cGUsIG5hbWUpOworICAgIHRlc3RTdWJhcnJheU9mZnNldEFuZExlbmd0
aENsYW1waW5nKHR5cGUsIG5hbWUpOworICAgIG5lZ2F0aXZlVGVzdFN1YmFycmF5KHR5cGUsIG5h
bWUpOworICAgIHRlc3RTZXRCb3VuZGFyeUNvbmRpdGlvbnModHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
Q2FzZS50ZXN0VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhc2Uu
ZXhwZWN0ZWRWYWx1ZXMpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25Cb3VuZGFyeUNvbmRpdGlvbnMo
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FzZS50ZXN0VmFsdWVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhc2UuZXhwZWN0ZWRW
YWx1ZXMpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoTnVsbEJ1ZmZlcih0eXBlLCBuYW1lKTsK
KyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aEV4Y2VwdGlvblRocm93aW5nT2JqZWN0KHR5cGUsIG5h
bWUpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoT3V0T2ZSYW5nZVZhbHVlcyh0eXBlLCBuYW1l
KTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aE5lZ2F0aXZlT3V0T2ZSYW5nZVZhbHVlcyh0eXBl
LCBuYW1lKTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aFVuYWxpZ25lZE9mZnNldCh0eXBlLCBu
YW1lLCB0ZXN0Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25X
aXRoVW5hbGlnbmVkTGVuZ3RoKHR5cGUsIG5hbWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRl
cyk7CisgICAgdGVzdENvbnN0cnVjdGlvbk9mSHVnZUFycmF5KHR5cGUsIG5hbWUsIHRlc3RDYXNl
LmVsZW1lbnRTaXplSW5CeXRlcyk7CisgICAgdGVzdENvbnN0cnVjdGlvbldpdGhCb3RoQXJyYXlC
dWZmZXJBbmRMZW5ndGgodHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzKTsK
KyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aFN1YlBvcnRpb25PZkFycmF5QnVmZmVyKHR5cGUsIG5h
bWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRlcyk7CisgICAgdGVzdFN1YmFycmF5V2l0aE91
dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzKTsK
KyAgICB0ZXN0U3ViYXJyYXlXaXRoRGVmYXVsdFZhbHVlcyh0eXBlLCBuYW1lLCB0ZXN0Q2FzZS5l
bGVtZW50U2l6ZUluQnl0ZXMpOworICAgIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0aE91dE9mUmFu
Z2VPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVzdFNldHRpbmdGcm9tVHlwZWRBcnJheVdpdGhP
dXRPZlJhbmdlT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0
aE5lZ2F0aXZlT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJvbVR5cGVkQXJy
YXlXaXRoTmVnYXRpdmVPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVzdFNldHRpbmdGcm9tQXJy
YXlXaXRoTWludXNaZXJvT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJvbVR5
cGVkQXJyYXlXaXRoTWludXNaZXJvT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5n
RnJvbUFycmF5V2l0aEJvdW5kYXJ5T2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5n
RnJvbVR5cGVkQXJyYXlXaXRoQm91bmRhcnlPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVzdFNl
dHRpbmdGcm9tQXJyYXlXaXRoTm9uSW50ZWdlck9mZnNldCh0eXBlLCBuYW1lKTsKKyAgICB0ZXN0
U2V0dGluZ0Zyb21UeXBlZEFycmF5V2l0aE5vbkludGVnZXJPZmZzZXQodHlwZSwgbmFtZSk7Cisg
ICAgdGVzdFNldHRpbmdGcm9tRmFrZUFycmF5V2l0aE91dE9mUmFuZ2VMZW5ndGgodHlwZSwgbmFt
ZSk7CisgICAgbmVnYXRpdmVUZXN0R2V0QW5kU2V0TWV0aG9kcyh0eXBlLCBuYW1lKTsKKyAgICB0
ZXN0TmFOQ29udmVyc2lvbih0eXBlLCBuYW1lKTsKKyAgfQorCisgIHByaW50U3VtbWFyeSgpOwor
fQorCitydW5UZXN0cygpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZp
ZXctY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy1jcmFzaC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY5Nzk5ZTY2YjlhZDQ4NDBlYWQ3MmM3Yzc5ODMwMGMxZGNkMDNjNjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXctY3Jhc2guaHRtbApAQCAtMCwwICsxLDU0IEBA
Cis8IS0tCisKKy8qCisqKiBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29y
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRv
IGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoq
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll
cyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8KKyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUg
TUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiog
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgorKi8KKworLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IERhdGFWaWV3IGRvZXMgbm90IGNyYXNoIHdpdGggYmFkIG9mZnNldCBvciBsZW5ndGguIik7
CisKK3ZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KFsxNjQsIDExMiwgMTU3LCA2M10pOwordmFy
IHZpZXc7CitzaG91bGRUaHJvdygidmlldyA9IG5ldyBEYXRhVmlldyhhcnJheS5idWZmZXIsIC00
NTAwMDAwMDAwKSIpOworc2hvdWxkVGhyb3coInZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXkuYnVm
ZmVyLCAtNDUwMDAwMDAwMCwgNDUwMDAwMDAwMCkiKTsKK3ZhciB2YWx1ZSA9IHZpZXcgPyB2aWV3
LmdldEZsb2F0MzIoMCwgdHJ1ZSkgOiAwOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5
cy9kYXRhLXZpZXctdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYWEwYzA4MTNkMGViNzRhYWE1MzdiNGVhODA1Y2QzOTRmOTAwOGNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbApAQCAtMCwwICsx
LDM4OCBAQAorPCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJl
IGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFs
cyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiog
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgor
KiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0Ug
T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3QtZXZhbC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRl
c3QgRGF0YVZpZXcuIik7CisKK3ZhciBpbnRBcnJheTEgPSBbMCwgMSwgMiwgMywgMTAwLCAxMDEs
IDEwMiwgMTAzLCAxMjgsIDEyOSwgMTMwLCAxMzEsIDI1MiwgMjUzLCAyNTQsIDI1NV07Cit2YXIg
aW50QXJyYXkyID0gWzMxLCAzMiwgMzMsIDAsIDEsIDIsIDMsIDEwMCwgMTAxLCAxMDIsIDEwMywg
MTI4LCAxMjksIDEzMCwgMTMxLCAyNTIsIDI1MywgMjU0LCAyNTVdOwordmFyIGVtcHR5QXJyYXkg
PSBbMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQs
IDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0XTsKKwordmFyIGFycmF5QnVmZmVyID0gbnVsbDsKK3Zh
ciB2aWV3ID0gbnVsbDsKK3ZhciB2aWV3U3RhcnQgPSAwOwordmFyIHZpZXdMZW5ndGggPSAwOwor
CitmdW5jdGlvbiBnZXRFbGVtZW50U2l6ZShmdW5jKQoreworICAgIHN3aXRjaCAoZnVuYykgewor
ICAgIGNhc2UgIkludDgiOgorICAgIGNhc2UgIlVpbnQ4IjoKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgY2FzZSAiSW50MTYiOgorICAgIGNhc2UgIlVpbnQxNiI6CisgICAgICAgIHJldHVybiAyOwor
ICAgIGNhc2UgIkludDMyIjoKKyAgICBjYXNlICJVaW50MzIiOgorICAgIGNhc2UgIkZsb2F0MzIi
OgorICAgICAgICByZXR1cm4gNDsKKyAgICBjYXNlICJGbG9hdDY0IjoKKyAgICAgICAgcmV0dXJu
IDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZGVidWcoIlNob3VsZCBub3QgcmVhY2hlZCIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gY2hlY2tHZXQoZnVuYywgaW5kZXgsIGV4cGVjdGVkLCBsaXR0
bGVFbmRpYW4pCit7CisgICAgdmFyIGV4cHIgPSAidmlldy5nZXQiICsgZnVuYyArICIoIiArIGlu
ZGV4OworICAgIGlmIChsaXR0bGVFbmRpYW4gIT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGV4cHIg
Kz0gIiwgIjsKKyAgICAgICAgZXhwciArPSBsaXR0bGVFbmRpYW4gPyAidHJ1ZSIgOiAiZmFsc2Ui
OworICAgIH0KKyAgICBleHByICs9ICIpIjsKKyAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCAr
IGdldEVsZW1lbnRTaXplKGZ1bmMpIC0gMSA8IHZpZXcuYnl0ZUxlbmd0aCkKKyAgICAgICAgc2hv
dWxkQmUoZXhwciwgZXhwZWN0ZWQpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkVGhyb3coZXhw
cik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU2V0KGZ1bmMsIGluZGV4LCB2YWx1ZSwgbGl0dGxlRW5k
aWFuKQoreworICAgIHZhciBleHByID0gInZpZXcuc2V0IiArIGZ1bmMgKyAiKCIgKyBpbmRleCAr
ICIsICIgKyB2YWx1ZTsKKyAgICBpZiAobGl0dGxlRW5kaWFuICE9IHVuZGVmaW5lZCkgeworICAg
ICAgICBleHByICs9ICIsICI7CisgICAgICAgIGV4cHIgKz0gbGl0dGxlRW5kaWFuID8gInRydWUi
IDogImZhbHNlIjsKKyAgICB9CisgICAgZXhwciArPSAiKSI7CisgICAgaWYgKGluZGV4ID49IDAg
JiYgaW5kZXggKyBnZXRFbGVtZW50U2l6ZShmdW5jKSAtIDEgPCB2aWV3LmJ5dGVMZW5ndGgpIHsK
KyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoZXhwcik7CisgICAgICAgIGNoZWNrR2V0KGZ1bmMs
IGluZGV4LCB2YWx1ZSwgbGl0dGxlRW5kaWFuKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2hvdWxk
VGhyb3coZXhwcik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCBpbmRl
eCwgdmFsdWUsIGxpdHRsZUVuZGlhbikKK3sKKyAgICBpZiAoaXNUZXN0aW5nR2V0KQorICAgICAg
ICBjaGVja0dldChmdW5jLCBpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgIGVsc2UK
KyAgICAgICAgY2hlY2tTZXQoZnVuYywgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pOworfQor
CitmdW5jdGlvbiBjcmVhdGVEYXRhVmlldyhhcnJheSwgZnJvbnRQYWRkaW5nTnVtLCBsaXR0bGVF
bmRpYW4sIHN0YXJ0LCBsZW5ndGgpCit7CisgICAgaWYgKCFsaXR0bGVFbmRpYW4pCisgICAgICAg
IGFycmF5LnJldmVyc2UoKTsKKyAgICB2YXIgcGFkZGluZ0FycmF5ID0gbmV3IEFycmF5KGZyb250
UGFkZGluZ051bSk7CisgICAgYXJyYXlCdWZmZXIgPSAobmV3IFVpbnQ4QXJyYXkocGFkZGluZ0Fy
cmF5LmNvbmNhdChhcnJheSkpKS5idWZmZXI7CisgICAgdmlld1N0YXJ0ID0gKHN0YXJ0ICE9IHVu
ZGVmaW5lZCkgPyBzdGFydCA6IDA7CisgICAgdmlld0xlbmd0aCA9IChsZW5ndGggIT0gdW5kZWZp
bmVkKSA/IGxlbmd0aCA6IGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggLSB2aWV3U3RhcnQ7CisgICAg
dmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlciwgdmlld1N0YXJ0LCB2aWV3TGVuZ3RoKTsK
KyAgICBpZiAoIWxpdHRsZUVuZGlhbikKKyAgICAgICAgYXJyYXkucmV2ZXJzZSgpOyAvLyByZXN0
b3JlIHRoZSBhcnJheS4KK30KKworZnVuY3Rpb24gcnVuSW50ZWdlclRlc3RDYXNlcyhpc1Rlc3Rp
bmdHZXQsIGFycmF5LCBzdGFydCwgbGVuZ3RoKQoreworICAgIGNyZWF0ZURhdGFWaWV3KGFycmF5
LCAwLCB0cnVlLCBzdGFydCwgbGVuZ3RoKTsKKworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50
OCIsIDAsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQ4IiwgOCwgIi0xMjgiKTsK
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDgiLCAxNSwgIi0xIik7CisKKyAgICB0ZXN0KGlz
VGVzdGluZ0dldCwgIlVpbnQ4IiwgMCwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVp
bnQ4IiwgOCwgIjEyOCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDgiLCAxNSwgIjI1
NSIpOworCisgICAgLy8gTGl0dGxlIGVuZGlhbi4KKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIklu
dDE2IiwgMCwgIjI1NiIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCA1
LCAiMjYyMTMiLCB0cnVlKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDE2IiwgOSwgIi0z
MjEyNyIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAxNCwgIi0yIiwg
dHJ1ZSk7CisKKyAgICAvLyBCaWcgZW5kaWFuLgorICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50
MTYiLCAwLCAiMSIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCA1LCAiMjU5NTgi
KTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDE2IiwgOSwgIi0zMjM4MiIpOworICAgIHRl
c3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAxNCwgIi0yNTciKTsKKworICAgIC8vIExpdHRsZSBl
bmRpYW4uCisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MTYiLCAwLCAiMjU2IiwgdHJ1ZSk7
CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MTYiLCA1LCAiMjYyMTMiLCB0cnVlKTsKKyAg
ICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQxNiIsIDksICIzMzQwOSIsIHRydWUpOworICAgIHRl
c3QoaXNUZXN0aW5nR2V0LCAiVWludDE2IiwgMTQsICI2NTUzNCIsIHRydWUpOworCisgICAgLy8g
QmlnIGVuZGlhbi4KKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQxNiIsIDAsICIxIik7Cisg
ICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MTYiLCA1LCAiMjU5NTgiKTsKKyAgICB0ZXN0KGlz
VGVzdGluZ0dldCwgIlVpbnQxNiIsIDksICIzMzE1NCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0
LCAiVWludDE2IiwgMTQsICI2NTI3OSIpOworCisgICAgLy8gTGl0dGxlIGVuZGlhbi4KKyAgICB0
ZXN0KGlzVGVzdGluZ0dldCwgIkludDMyIiwgMCwgIjUwNDYyOTc2IiwgdHJ1ZSk7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIDMsICIxNzE3OTIwNzcxIiwgdHJ1ZSk7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIDYsICItMjEyMjI5MTM1NCIsIHRydWUpOworICAgIHRl
c3QoaXNUZXN0aW5nR2V0LCAiSW50MzIiLCA5LCAiLTU4NDkwMjM5IiwgdHJ1ZSk7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIDEyLCAiLTY2MDUyIiwgdHJ1ZSk7CisKKyAgICAvLyBC
aWcgZW5kaWFuLgorICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MzIiLCAwLCAiNjYwNTEiKTsK
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDMyIiwgMywgIjU2OTExMjA2Iik7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIDYsICIxNzE4MDU5MTM3Iik7CisgICAgdGVzdChpc1Rl
c3RpbmdHZXQsICJJbnQzMiIsIDksICItMjEyMjE1Mjk2NCIpOworICAgIHRlc3QoaXNUZXN0aW5n
R2V0LCAiSW50MzIiLCAxMiwgIi01MDQ2Mjk3NyIpOworCisgICAgLy8gTGl0dGxlIGVuZGlhbi4K
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQzMiIsIDAsICI1MDQ2Mjk3NiIsIHRydWUpOwor
ICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMyIiwgMywgIjE3MTc5MjA3NzEiLCB0cnVlKTsK
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQzMiIsIDYsICIyMTcyNjc1OTQyIiwgdHJ1ZSk7
CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCA5LCAiNDIzNjQ3NzA1NyIsIHRydWUp
OworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMyIiwgMTIsICI0Mjk0OTAxMjQ0IiwgdHJ1
ZSk7CisKKyAgICAvLyBCaWcgZW5kaWFuLgorICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMy
IiwgMCwgIjY2MDUxIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCAzLCAiNTY5
MTEyMDYiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQzMiIsIDYsICIxNzE4MDU5MTM3
Iik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCA5LCAiMjE3MjgxNDMzMiIpOwor
ICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMyIiwgMTIsICI0MjQ0NTA0MzE5Iik7Cit9CisK
K2Z1bmN0aW9uIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQsIGZ1bmMsIGFycmF5LCBzdGFydCwgZXhw
ZWN0ZWQpCit7CisgICAgLy8gTGl0dGxlIGVuZGlhbi4KKyAgICBjcmVhdGVEYXRhVmlldyhhcnJh
eSwgMCwgdHJ1ZSwgc3RhcnQpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCAwLCBleHBl
Y3RlZCwgdHJ1ZSk7CisgICAgY3JlYXRlRGF0YVZpZXcoYXJyYXksIDMsIHRydWUsIHN0YXJ0KTsK
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgZnVuYywgMywgZXhwZWN0ZWQsIHRydWUpOworICAgIGNy
ZWF0ZURhdGFWaWV3KGFycmF5LCA3LCB0cnVlLCBzdGFydCk7CisgICAgdGVzdChpc1Rlc3RpbmdH
ZXQsIGZ1bmMsIDcsIGV4cGVjdGVkLCB0cnVlKTsKKyAgICBjcmVhdGVEYXRhVmlldyhhcnJheSwg
MTAsIHRydWUsIHN0YXJ0KTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgZnVuYywgMTAsIGV4cGVj
dGVkLCB0cnVlKTsKKyAgICAKKyAgICAvLyBCaWcgZW5kaWFuLgorICAgIGNyZWF0ZURhdGFWaWV3
KGFycmF5LCAwLCBmYWxzZSk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsIGZ1bmMsIDAsIGV4cGVj
dGVkLCBmYWxzZSk7CisgICAgY3JlYXRlRGF0YVZpZXcoYXJyYXksIDMsIGZhbHNlKTsKKyAgICB0
ZXN0KGlzVGVzdGluZ0dldCwgZnVuYywgMywgZXhwZWN0ZWQsIGZhbHNlKTsKKyAgICBjcmVhdGVE
YXRhVmlldyhhcnJheSwgNywgZmFsc2UpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCA3
LCBleHBlY3RlZCwgZmFsc2UpOworICAgIGNyZWF0ZURhdGFWaWV3KGFycmF5LCAxMCwgZmFsc2Up
OworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCAxMCwgZXhwZWN0ZWQsIGZhbHNlKTsKK30K
KworZnVuY3Rpb24gcnVuRmxvYXRUZXN0Q2FzZXMoaXNUZXN0aW5nR2V0LCBzdGFydCkKK3sKKyAg
ICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIsIGlzVGVzdGluZ0dldCA/IFswLCAw
LCAzMiwgNjVdIDogZW1wdHlBcnJheSwgc3RhcnQsICIxMCIpOworICAgIHRlc3RGbG9hdChpc1Rl
c3RpbmdHZXQsICJGbG9hdDMyIiwgaXNUZXN0aW5nR2V0ID8gWzE2NCwgMTEyLCAxNTcsIDYzXSA6
IGVtcHR5QXJyYXksIHN0YXJ0LCAiMS4yMzAwMDAwMTkwNzM0ODYzIik7CisgICAgdGVzdEZsb2F0
KGlzVGVzdGluZ0dldCwgIkZsb2F0MzIiLCBpc1Rlc3RpbmdHZXQgPyBbOTUsIDUzLCA1MCwgMTk5
XSA6IGVtcHR5QXJyYXksIHN0YXJ0LCAiLTQ1NjIxLjM3MTA5Mzc1Iik7CisgICAgdGVzdEZsb2F0
KGlzVGVzdGluZ0dldCwgIkZsb2F0MzIiLCBpc1Rlc3RpbmdHZXQgPyBbMjU1LCAyNTUsIDI1NSwg
MTI3XSA6IGVtcHR5QXJyYXksIHN0YXJ0LCAiTmFOIik7CisgICAgdGVzdEZsb2F0KGlzVGVzdGlu
Z0dldCwgIkZsb2F0MzIiLCBpc1Rlc3RpbmdHZXQgPyBbMjU1LCAyNTUsIDI1NSwgMjU1XSA6IGVt
cHR5QXJyYXksIHN0YXJ0LCAiLU5hTiIpOworCisgICAgdGVzdEZsb2F0KGlzVGVzdGluZ0dldCwg
IkZsb2F0NjQiLCBpc1Rlc3RpbmdHZXQgPyBbMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDY0XSA6IGVt
cHR5QXJyYXksIHN0YXJ0LCAiMTAiKTsKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxv
YXQ2NCIsIGlzVGVzdGluZ0dldCA/IFsxNzQsIDcxLCAyMjUsIDEyMiwgMjAsIDE3NCwgMjQzLCA2
M10gOiBlbXB0eUFycmF5LCBzdGFydCwgIjEuMjMiKTsKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5n
R2V0LCAiRmxvYXQ2NCIsIGlzVGVzdGluZ0dldCA/IFsxODEsIDU1LCAyNDgsIDMwLCAyNDIsIDE3
OSwgODcsIDE5M10gOiBlbXB0eUFycmF5LCBzdGFydCwgIi02MjEzNTc2LjQ4MzkiKTsKKyAgICB0
ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQ2NCIsIGlzVGVzdGluZ0dldCA/IFsyNTUsIDI1
NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDEyN10gOiBlbXB0eUFycmF5LCBzdGFydCwgIk5h
TiIpOworICAgIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQsICJGbG9hdDY0IiwgaXNUZXN0aW5nR2V0
ID8gWzI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1XSA6IGVtcHR5QXJyYXks
IHN0YXJ0LCAiLU5hTiIpOworfQorCitmdW5jdGlvbiBydW5OZWdhdGl2ZUluZGV4VGVzdHMoaXNU
ZXN0aW5nR2V0KQoreworICAgIGNyZWF0ZURhdGFWaWV3KGludEFycmF5MSwgMCwgdHJ1ZSwgMCwg
MTYpOworCisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQ4IiwgLTEsICIwIik7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQ4IiwgLTIsICIwIik7CisKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIlVpbnQ4IiwgLTEsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50OCIsIC0y
LCAiMCIpOworCisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQxNiIsIC0xLCAiMCIpOworICAg
IHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAtMiwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGlu
Z0dldCwgIkludDE2IiwgLTMsICIwIik7CisKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQx
NiIsIC0xLCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDE2IiwgLTIsICIwIik7
CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MTYiLCAtMywgIjAiKTsKKworICAgIHRlc3Qo
aXNUZXN0aW5nR2V0LCAiSW50MzIiLCAtMSwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwg
IkludDMyIiwgLTMsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIC01LCAi
MCIpOworCisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCAtMSwgIjAiKTsKKyAgICB0
ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQzMiIsIC0zLCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5n
R2V0LCAiVWludDMyIiwgLTUsICIwIik7CisKKyAgICBjcmVhdGVEYXRhVmlldyhbMCwgMCwgMCwg
MCwgMCwgMCwgMzYsIDY0XSwgMCwgdHJ1ZSwgMCwgOCk7CisKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIkZsb2F0MzIiLCAtMSwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkZsb2F0MzIi
LCAtMywgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkZsb2F0MzIiLCAtNSwgIjAiKTsK
KworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiRmxvYXQ2NCIsIC0xLCAiMCIpOworICAgIHRlc3Qo
aXNUZXN0aW5nR2V0LCAiRmxvYXQ2NCIsIC01LCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0
LCAiRmxvYXQ2NCIsIC05LCAiMCIpOworfQorCitmdW5jdGlvbiBydW5Db25zdHJ1Y3RvclRlc3Rz
KCkKK3sKKyAgICBhcnJheUJ1ZmZlciA9IChuZXcgVWludDhBcnJheShbMSwgMl0pKS5idWZmZXI7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZm9yIGNvbnN0cnVjdG9yIG5vdCBj
YWxsZWQgYXMgYSBmdW5jdGlvbiIpOworICAgIHZhciBleHByID0gIkRhdGFWaWV3KG5ldyBBcnJh
eUJ1ZmZlcikiOworICAgIC8vIFVzZSB0cnkvY2F0Y2ggaW5zdGVhZCBvZiBjYWxsaW5nIHNob3Vs
ZFRocm93IHRvIGF2b2lkIGRpZmZlcmVudCBleGNlcHRpb24gbWVzc2FnZSBiZWluZyByZXBvcnRl
ZCBmcm9tIGRpZmZlcmVudCBwbGF0Zm9ybS4KKyAgICB0cnkgeworICAgICAgICBUZXN0RXZhbChl
eHByKTsKKyAgICAgICAgdGVzdEZhaWxlZChleHByICsgIiBkb2VzIG5vdCB0aHJvdyBleGNlcHRp
b24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoZXhwciArICIgdGhy
ZXcgZXhjZXB0aW9uIik7CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0
IGZvciBjb25zdHJ1Y3RvciB0YWtpbmcgMSBhcmd1bWVudCIpOworICAgIHNob3VsZEJlRGVmaW5l
ZCgidmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcikiKTsKKyAgICBzaG91bGRCZSgidmll
dy5ieXRlT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgidmlldy5ieXRlTGVuZ3RoIiwgIjIi
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3IgY29uc3RydWN0b3IgdGFr
aW5nIDIgYXJndW1lbnRzIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3ID0gbmV3IERhdGFW
aWV3KGFycmF5QnVmZmVyLCAxKSIpOworICAgIHNob3VsZEJlKCJ2aWV3LmJ5dGVPZmZzZXQiLCAi
MSIpOworICAgIHNob3VsZEJlKCJ2aWV3LmJ5dGVMZW5ndGgiLCAiMSIpOworCisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJUZXN0IGZvciBjb25zdHJ1Y3RvciB0YWtpbmcgMyBhcmd1bWVudHMi
KTsKKyAgICBzaG91bGRCZURlZmluZWQoInZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIs
IDAsIDEpIik7CisgICAgc2hvdWxkQmUoInZpZXcuYnl0ZU9mZnNldCIsICIwIik7CisgICAgc2hv
dWxkQmUoInZpZXcuYnl0ZUxlbmd0aCIsICIxIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRlc3QgZm9yIGNvbnN0cnVjdG9yIHRocm93aW5nIGV4Y2VwdGlvbiIpOworICAgIHNob3Vs
ZFRocm93KCJ2aWV3ID0gbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyLCAwLCAzKSIpOworICAgIHNo
b3VsZFRocm93KCJ2aWV3ID0gbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyLCAxLCAyKSIpOworICAg
IHNob3VsZFRocm93KCJ2aWV3ID0gbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyLCAyLCAxKSIpOwor
fQorCitmdW5jdGlvbiBydW5HZXRUZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJUZXN0IGZvciBnZXQgbWV0aG9kcyB0aGF0IHdvcmsiKTsKKyAgICBydW5JbnRlZ2VyVGVzdENh
c2VzKHRydWUsIGludEFycmF5MSwgMCwgMTYpOworICAgIHJ1bkZsb2F0VGVzdENhc2VzKHRydWUs
IDApOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGZvciBnZXQgbWV0aG9kcyB0
aGF0IG1pZ2h0IHJlYWQgYmV5b25kIHJhbmdlIik7CisgICAgcnVuSW50ZWdlclRlc3RDYXNlcyh0
cnVlLCBpbnRBcnJheTIsIDMsIDIpOworICAgIHJ1bkZsb2F0VGVzdENhc2VzKHRydWUsIDMpOwor
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGZvciBnZXQgbWV0aG9kcyB0aGF0IHJl
YWQgZnJvbSBuZWdhdGl2ZSBpbmRleCIpOworICAgIHJ1bk5lZ2F0aXZlSW5kZXhUZXN0cyh0cnVl
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3Igd3JvbmcgYXJndW1lbnRz
IHBhc3NlZCB0byBnZXQgbWV0aG9kcyIpOworICAgIHZpZXcgPSBuZXcgRGF0YVZpZXcoKG5ldyBV
aW50OEFycmF5KFsxLCAyXSkpLmJ1ZmZlcik7CisgICAgc2hvdWxkVGhyb3coInZpZXcuZ2V0SW50
OCgpIik7CisgICAgc2hvdWxkVGhyb3coInZpZXcuZ2V0VWludDgoKSIpOworICAgIHNob3VsZFRo
cm93KCJ2aWV3LmdldEludDE2KCkiKTsKKyAgICBzaG91bGRUaHJvdygidmlldy5nZXRVaW50MTYo
KSIpOworICAgIHNob3VsZFRocm93KCJ2aWV3LmdldEludDMyKCkiKTsKKyAgICBzaG91bGRUaHJv
dygidmlldy5nZXRVaW50MzIoKSIpOworICAgIHNob3VsZFRocm93KCJ2aWV3LmdldEZsb2F0MzIo
KSIpOworICAgIHNob3VsZFRocm93KCJ2aWV3LmdldEZsb2F0NjQoKSIpOworfQorCitmdW5jdGlv
biBydW5TZXRUZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGZvciBz
ZXQgbWV0aG9kcyB0aGF0IHdvcmsiKTsKKyAgICBydW5JbnRlZ2VyVGVzdENhc2VzKGZhbHNlLCBl
bXB0eUFycmF5LCAwLCAxNik7CisgICAgcnVuRmxvYXRUZXN0Q2FzZXMoZmFsc2UpOworCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGZvciBzZXQgbWV0aG9kcyB0aGF0IG1pZ2h0IHdy
aXRlIGJleW9uZCB0aGUgcmFuZ2UiKTsKKyAgICBydW5JbnRlZ2VyVGVzdENhc2VzKGZhbHNlLCBl
bXB0eUFycmF5LCAzLCAyKTsKKyAgICBydW5GbG9hdFRlc3RDYXNlcyhmYWxzZSwgNyk7CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZm9yIHNldCBtZXRob2RzIHRoYXQgd3JpdGUg
dG8gbmVnYXRpdmUgaW5kZXgiKTsKKyAgICBydW5OZWdhdGl2ZUluZGV4VGVzdHMoZmFsc2UpOwor
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGZvciB3cm9uZyBhcmd1bWVudHMgcGFz
c2VkIHRvIHNldCBtZXRob2RzIik7CisgICAgdmlldyA9IG5ldyBEYXRhVmlldygobmV3IFVpbnQ4
QXJyYXkoWzEsIDJdKSkuYnVmZmVyKTsKKyAgICBzaG91bGRUaHJvdygidmlldy5zZXRJbnQ4KCki
KTsKKyAgICBzaG91bGRUaHJvdygidmlldy5zZXRVaW50OCgpIik7CisgICAgc2hvdWxkVGhyb3co
InZpZXcuc2V0SW50MTYoKSIpOworICAgIHNob3VsZFRocm93KCJ2aWV3LnNldFVpbnQxNigpIik7
CisgICAgc2hvdWxkVGhyb3coInZpZXcuc2V0SW50MzIoKSIpOworICAgIHNob3VsZFRocm93KCJ2
aWV3LnNldFVpbnQzMigpIik7CisgICAgc2hvdWxkVGhyb3coInZpZXcuc2V0RmxvYXQzMigpIik7
CisgICAgc2hvdWxkVGhyb3coInZpZXcuc2V0RmxvYXQ2NCgpIik7CisgICAgc2hvdWxkVGhyb3co
InZpZXcuc2V0SW50OCgxKSIpOworICAgIHNob3VsZFRocm93KCJ2aWV3LnNldFVpbnQ4KDEpIik7
CisgICAgc2hvdWxkVGhyb3coInZpZXcuc2V0SW50MTYoMSkiKTsKKyAgICBzaG91bGRUaHJvdygi
dmlldy5zZXRVaW50MTYoMSkiKTsKKyAgICBzaG91bGRUaHJvdygidmlldy5zZXRJbnQzMigxKSIp
OworICAgIHNob3VsZFRocm93KCJ2aWV3LnNldFVpbnQzMigxKSIpOworICAgIHNob3VsZFRocm93
KCJ2aWV3LnNldEZsb2F0MzIoMSkiKTsKKyAgICBzaG91bGRUaHJvdygidmlldy5zZXRGbG9hdDY0
KDEpIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkluZGV4aW5nVGVzdHMoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdCBmb3IgaW5kZXhpbmcgdGhhdCBzaG91bGQgbm90IHdvcmsiKTsK
KyAgICB2aWV3ID0gbmV3IERhdGFWaWV3KChuZXcgVWludDhBcnJheShbMSwgMl0pKS5idWZmZXIp
OworICAgIHNob3VsZEJlVW5kZWZpbmVkKCJ2aWV3WzBdIik7CisgICAgc2hvdWxkQmVEZWZpbmVk
KCJ2aWV3WzBdID0gMyIpOworICAgIHNob3VsZEJlKCJ2aWV3LmdldFVpbnQ4KDApIiwgIjEiKTsK
K30KKworcnVuQ29uc3RydWN0b3JUZXN0cygpOworcnVuR2V0VGVzdHMoKTsKK3J1blNldFRlc3Rz
KCk7CitydW5JbmRleGluZ1Rlc3RzKCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>