From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F6A5A046B for ; Fri, 23 Aug 2019 06:12:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 327B71BF7D; Fri, 23 Aug 2019 06:12:18 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id EF6B31BF7A for ; Fri, 23 Aug 2019 06:12:15 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Aug 2019 21:12:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,419,1559545200"; d="log'?scan'208";a="330604990" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga004.jf.intel.com with ESMTP; 22 Aug 2019 21:12:13 -0700 Received: from fmsmsx161.amr.corp.intel.com (10.18.125.9) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 22 Aug 2019 21:12:13 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX161.amr.corp.intel.com (10.18.125.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 22 Aug 2019 21:12:12 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.139]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.15]) with mapi id 14.03.0439.000; Fri, 23 Aug 2019 12:12:10 +0800 From: "Zhu, ShuaiX" To: "Li, WenjieX A" , "dts@dpdk.org" CC: "Li, WenjieX A" , "Zhu, ShuaiX" Thread-Topic: [dts] [PATCH V1] tests/ip_pipeline:optimize script Thread-Index: AQHVWWhsD+PFI9HQx0i8yLKRWQOkXacIHt0g Date: Fri, 23 Aug 2019 04:12:10 +0000 Message-ID: <4DC48DF9BDA3E54A836D2D3C057DEC6F0BB80248@SHSMSX103.ccr.corp.intel.com> References: <1566565310-46186-1-git-send-email-wenjiex.a.li@intel.com> In-Reply-To: <1566565310-46186-1-git-send-email-wenjiex.a.li@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: multipart/mixed; boundary="_002_4DC48DF9BDA3E54A836D2D3C057DEC6F0BB80248SHSMSX103ccrcor_" MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1] tests/ip_pipeline:optimize script X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" --_002_4DC48DF9BDA3E54A836D2D3C057DEC6F0BB80248SHSMSX103ccrcor_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Tested-by: Zhu, ShuaiX > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Wenjie Li > Sent: Friday, August 23, 2019 9:02 PM > To: dts@dpdk.org > Cc: Li, WenjieX A > Subject: [dts] [PATCH V1] tests/ip_pipeline:optimize script >=20 > optimize script, including: > 1. could support both 2 and 4 ports nic > 2. could support 1 socket env for pfdpdk_vf_l2fwd_pipeline 3. add two fun= ctions > update_cli and launch_ip_pipeline 4. write simliar code into a loop to ma= ke it > concise >=20 > Signed-off-by: Wenjie Li > --- > tests/TestSuite_ip_pipeline.py | 719 ++++++++++----------------------- > 1 file changed, 217 insertions(+), 502 deletions(-) >=20 > diff --git a/tests/TestSuite_ip_pipeline.py b/tests/TestSuite_ip_pipeline= .py index > f05b5cd..e7bc59b 100644 > --- a/tests/TestSuite_ip_pipeline.py > +++ b/tests/TestSuite_ip_pipeline.py > @@ -1,6 +1,6 @@ > # BSD LICENSE > # > -# Copyright(c) 2010-2018 Intel Corporation. All rights reserved. > +# Copyright(c) 2010-2019 Intel Corporation. All rights reserved. > # All rights reserved. > # > # Redistribution and use in source and binary forms, with or without @@ = -62,6 > +62,7 @@ from scapy.arch import get_if_hwaddr from scapy.sendrecv import > sniff from scapy.sendrecv import sendp >=20 > + > class TestIPPipeline(TestCase): >=20 > def get_flow_direction_param_of_tcpdump(self): > @@ -158,14 +159,9 @@ class TestIPPipeline(TestCase): > self.dut.generate_sriov_vfs_by_port(self.dut_ports[port_num]= , > 1, driver) >=20 > self.sriov_vfs_port.append(self.dut.ports_info[self.dut_ports[port_num]][= 'vfs_ > port']) > if driver =3D=3D 'default': > - self.dut.send_expect("ip link set %s vf 0 mac %s" % > (self.pf0_interface, self.vf0_mac), "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 mac %s" % > (self.pf1_interface, self.vf1_mac), "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 mac %s" % > (self.pf2_interface, self.vf2_mac), "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 mac %s" % > (self.pf3_interface, self.vf3_mac), "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 spoofchk off" % > self.pf0_interface, "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 spoofchk off" % > self.pf1_interface, "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 spoofchk off" % > self.pf2_interface, "# ", 3) > - self.dut.send_expect("ip link set %s vf 0 spoofchk off" % > self.pf3_interface, "# ", 3) > + for i in range(len(self.dut_ports)): > + self.dut.send_expect("ip link set %s vf 0 mac %s" % > (self.pf_intf[i], self.vf_mac[i]), "# ", 3) > + self.dut.send_expect("ip link set %s vf 0 spoofchk off" > + % self.pf_intf[i], "# ", 3) >=20 > try: > for port_num in range(port_nums): > @@ -193,29 +189,19 @@ class TestIPPipeline(TestCase): > Run at the start of each test suite. > """ > self.dut_ports =3D self.dut.get_ports() > - self.port_nums =3D 4 > - self.verify(len(self.dut_ports) >=3D self.port_nums, > + self.port_nums =3D [2, 4] > + self.verify(len(self.dut_ports) in self.port_nums, > "Insufficient ports for speed testing") >=20 > - self.dut_p0_pci =3D self.dut.get_port_pci(self.dut_ports[0]) > - self.dut_p1_pci =3D self.dut.get_port_pci(self.dut_ports[1]) > - self.dut_p2_pci =3D self.dut.get_port_pci(self.dut_ports[2]) > - self.dut_p3_pci =3D self.dut.get_port_pci(self.dut_ports[3]) > - > - self.dut_p0_mac =3D self.dut.get_mac_address(self.dut_ports[0]) > - self.dut_p1_mac =3D self.dut.get_mac_address(self.dut_ports[1]) > - self.dut_p2_mac =3D self.dut.get_mac_address(self.dut_ports[2]) > - self.dut_p3_mac =3D self.dut.get_mac_address(self.dut_ports[3]) > - > - self.pf0_interface =3D self.dut.ports_info[self.dut_ports[0]]['i= ntf'] > - self.pf1_interface =3D self.dut.ports_info[self.dut_ports[1]]['i= ntf'] > - self.pf2_interface =3D self.dut.ports_info[self.dut_ports[2]]['i= ntf'] > - self.pf3_interface =3D self.dut.ports_info[self.dut_ports[3]]['i= ntf'] > - > - self.vf0_mac =3D "00:11:22:33:44:55" > - self.vf1_mac =3D "00:11:22:33:44:56" > - self.vf2_mac =3D "00:11:22:33:44:57" > - self.vf3_mac =3D "00:11:22:33:44:58" > + self.dut_pci =3D [] > + self.dut_mac =3D [] > + self.pf_intf =3D [] > + self.vf_mac =3D [] > + for i in range(len(self.dut_ports)): > + self.dut_pci.append(self.dut.ports_info[i]['pci']) > + self.dut_mac.append(self.dut.ports_info[i]['mac']) > + self.pf_intf.append(self.dut.ports_info[i]['intf']) > + self.vf_mac.append("00:11:22:33:44:5%d" % (i+5)) >=20 > self.sriov_vfs_port =3D [] > self.session_secondary =3D self.dut.new_session() @@ -231,433 > +217,220 @@ class TestIPPipeline(TestCase): > """ > pass >=20 > - def test_routing_pipeline(self): > - """ > - routing pipeline > - """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/route.cli" % > self.dut_p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/route.cli" % > self.dut_p1_pci > + def update_cli(self, cli_file): > + cmd =3D "sed -i -e 's/0000:02:00.0/%s/' > + ./examples/ip_pipeline/examples/%s" % (self.dut_pci[0], cli_file) > self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/route.cli" % > self.dut_p2_pci > + cmd =3D "sed -i -e 's/0000:02:00.1/%s/' > + ./examples/ip_pipeline/examples/%s" % (self.dut_pci[1], cli_file) > self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/route.cli" % > self.dut_p3_pci > + if len(self.dut_ports) =3D=3D 4: > + cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/%s" % (self.dut_pci[= 2], > cli_file) > + self.dut.send_expect(cmd, "# ", 20) > + cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/%s" % (self.dut_pci[= 3], > cli_file) > + self.dut.send_expect(cmd, "# ", 20) > + cmd =3D "sed -i -e 's/default action fwd port 4/default action > + fwd port %s/' ./examples/ip_pipeline/examples/%s" % > + (len(self.dut_ports), cli_file) > self.dut.send_expect(cmd, "# ", 20) >=20 > + def launch_ip_pipeline(self, cli_file): > IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/route.cli" > - > + DUT_PORTS =3D "" > + self.max_ports =3D len(self.dut_ports) > + if cli_file =3D=3D "tap.cli": > + self.max_ports =3D 2 > + for i in range(self.max_ports): > + DUT_PORTS =3D DUT_PORTS + " -w %s" % self.dut_pci[i] > + SCRIPT_FILE =3D "./examples/ip_pipeline/examples/%s" % cli_file > cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT_= PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "30:31:32:33:34:35", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/route_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.0.0.1")/Raw(load=3D"X"*26)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 0, pcap_file, filters= ) > - dst_mac_list =3D [] > - for packet in sniff_pkts: > - dst_mac_list.append(packet.getlayer(0).dst) > - self.verify( "a0:a1:a2:a3:a4:a5" in dst_mac_list, "rule 0 test f= ail") > - > - #rule 1 test > - pcap_file =3D '/tmp/route_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.64.0.1")/Raw(load=3D"X"*26)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.64.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_mac_list =3D [] > - for packet in sniff_pkts: > - dst_mac_list.append(packet.getlayer(0).dst) > - self.verify( "b0:b1:b2:b3:b4:b5" in dst_mac_list, "rule 1 test f= ail") > - > - #rule 2 test > - pcap_file =3D '/tmp/route_2.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.128.0.1")/Raw(load=3D"X"*26)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.128.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 2, pcap_file, filters= ) > - dst_mac_list =3D [] > - for packet in sniff_pkts: > - dst_mac_list.append(packet.getlayer(0).dst) > - self.verify( "c0:c1:c2:c3:c4:c5" in dst_mac_list, "rule 2 test f= ail") > - > - #rule 3 test > - pcap_file =3D '/tmp/route_3.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.192.0.1")/Raw(load=3D"X"*26)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.192.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 3, pcap_file, filters= ) > - dst_mac_list =3D [] > - for packet in sniff_pkts: > - dst_mac_list.append(packet.getlayer(0).dst) > - self.verify( "d0:d1:d2:d3:d4:d5" in dst_mac_list, "rule 3 test f= ail") > + rte_string =3D "30:31:32:33:34:35" > + if cli_file =3D=3D "route.cli": > + rte_string =3D "30:31:32:33:34:35" > + elif cli_file =3D=3D "firewall.cli": > + rte_string =3D "fwd port 1" > + elif cli_file =3D=3D "flow.cli": > + rte_string =3D "fwd port 3" > + elif cli_file =3D=3D "l2fwd.cli": > + rte_string =3D "fwd port 2" > + elif cli_file =3D=3D "tap.cli": > + rte_string =3D "fwd port 3" > + elif cli_file =3D=3D "rss.cli": > + rte_string =3D "PIPELINE3 enable" > + cmd =3D "{0} -c 0x1f -n 4 {1} -- -s {2}".format(IP_PIPELINE, > DUT_PORTS, SCRIPT_FILE) > + self.dut.send_expect(cmd, "%s" % rte_string, 60) >=20 > - sleep(1) > - cmd =3D "^C" > - self.dut.send_expect(cmd, "# ", 20) > + def test_routing_pipeline(self): > + """ > + routing pipeline > + """ > + self.update_cli("route.cli") > + self.launch_ip_pipeline("route.cli") > + > + verify_list =3D ["a0:a1:a2:a3:a4:a5", "b0:b1:b2:b3:b4:b5", > "c0:c1:c2:c3:c4:c5", "d0:d1:d2:d3:d4:d5"] > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/route_%d.pcap' % i > + dst_ip =3D "100.%d.0.1" % (i * 64) > + pkt =3D [Ether(dst=3Dself.dut_mac[0])/IP(dst=3Ddst_ip)/Raw(l= oad=3D"X" * > 26)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "dst host %s" % dst_ip > + sniff_pkts =3D self.send_and_sniff_pkts(0, i, pcap_file, fil= ters) > + dst_mac_list =3D [] > + for packet in sniff_pkts: > + dst_mac_list.append(packet.getlayer(0).dst) > + self.verify(verify_list[i] in dst_mac_list, "rule %d test > + fail" % i) >=20 > def test_firewall_pipeline(self): > """ > firewall pipeline > """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/firewall.cli" % > self.dut_p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/firewall.cli" % > self.dut_p1_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/firewall.cli" % > self.dut_p2_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/firewall.cli" % > self.dut_p3_pci > - self.dut.send_expect(cmd, "# ", 20) > - > - IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/firewall.cli" > - > - cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT_= PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "fwd port 3", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/fw_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.0.0.1")/TCP(sport=3D100,dport= =3D200)/Ra > w(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.0.0.1" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/fw_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.64.0.1")/TCP(sport=3D100,dpor= t=3D200)/Ra > w(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.64.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.64.0.1" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/fw_2.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.128.0.1")/TCP(sport=3D100,dpo= rt=3D200)/R > aw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.128.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.128.0.1" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/fw_3.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(dst=3D"100.192.0.1")/TCP(sport=3D100,dpo= rt=3D200)/R > aw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.192.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.192.0.1" in dst_ip_list, "rule 3 test fail") > - > - sleep(1) > - cmd =3D "^C" > - self.dut.send_expect(cmd, "# ", 20) > + self.update_cli("firewall.cli") > + self.launch_ip_pipeline("firewall.cli") > + > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/fw_%d.pcap' % i > + dst_ip =3D "100.%d.0.1" % (i*64) > + pkt =3D > [Ether(dst=3Dself.dut_mac[0])/IP(dst=3Ddst_ip)/TCP(sport=3D100,dport=3D20= 0)/Raw(load > =3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "dst host %s" % dst_ip > + sniff_pkts =3D self.send_and_sniff_pkts(0, i, pcap_file, fil= ters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > def test_flow_pipeline(self): > """ > flow pipeline > """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/flow.cli" % > self.dut_p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/flow.cli" % > self.dut_p1_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/flow.cli" % > self.dut_p2_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/flow.cli" % > self.dut_p3_pci > - self.dut.send_expect(cmd, "# ", 20) > - > - IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/flow.cli" > - > - cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT_= PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "fwd port 3", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/fl_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.10",dst=3D"200.0.0.10")/T= CP(sport=3D1 > 00,dport=3D200)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.10" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/fl_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.11",dst=3D"200.0.0.11")/T= CP(sport=3D1 > 01,dport=3D201)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.11" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/fl_2.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.12",dst=3D"200.0.0.12")/T= CP(sport=3D1 > 02,dport=3D202)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.12" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/fl_3.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.13",dst=3D"200.0.0.13")/T= CP(sport=3D1 > 03,dport=3D203)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.13" in dst_ip_list, "rule 3 test fail") > - > - sleep(1) > - cmd =3D "^C" > - self.dut.send_expect(cmd, "# ", 20) > + self.update_cli("flow.cli") > + self.launch_ip_pipeline("flow.cli") > + > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/fl_%d.pcap' % i > + src_ip =3D "100.0.0.%d" % (i+10) > + dst_ip =3D "200.0.0.%d" % (i+10) > + sport =3D i + 100 > + dport =3D i + 200 > + pkt =3D > [Ether(dst=3Dself.dut_mac[0])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/TCP(sport=3Ds= port,dport=3Dd > port)/Raw(load=3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "tcp" > + sniff_pkts =3D self.send_and_sniff_pkts(0, i, pcap_file, fil= ters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > def test_l2fwd_pipeline(self): > """ > l2fwd pipeline > """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/l2fwd.cli" % > self.dut_p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/l2fwd.cli" % > self.dut_p1_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/l2fwd.cli" % > self.dut_p2_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/l2fwd.cli" % > self.dut_p3_pci > - self.dut.send_expect(cmd, "# ", 20) > - > - IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/l2fwd.cli" > - > - cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT_= PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "fwd port 2", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/pt_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.10",dst=3D"200.0.0.10")/T= CP(sport=3D1 > 00,dport=3D200)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.10" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/pt_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p1_mac)/IP(src=3D"100.0.0.11",dst=3D"200.0.0.11")/T= CP(sport=3D1 > 01,dport=3D201)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(1, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.11" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/pt_2.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p2_mac)/IP(src=3D"100.0.0.12",dst=3D"200.0.0.12")/T= CP(sport=3D1 > 02,dport=3D202)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(2, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.12" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/pt_3.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p3_mac)/IP(src=3D"100.0.0.13",dst=3D"200.0.0.13")/T= CP(sport=3D1 > 03,dport=3D203)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(3, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.13" in dst_ip_list, "rule 3 test fail") > - > - sleep(1) > - cmd =3D "^C" > - self.dut.send_expect(cmd, "# ", 20) > + self.update_cli("l2fwd.cli") > + self.launch_ip_pipeline("l2fwd.cli") > + > + from_port_list =3D [0, 1, 2, 3] > + to_port_list =3D [1, 0, 3, 2] > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/pt_%d.pcap' % i > + src_ip =3D "100.0.0.%d" % (i+10) > + dst_ip =3D "200.0.0.%d" % (i+10) > + sport =3D i + 100 > + dport =3D i + 200 > + pkt =3D > [Ether(dst=3Dself.dut_mac[i])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/TCP(sport=3Ds= port,dport=3Ddp > ort)/Raw(load=3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "tcp" > + sniff_pkts =3D self.send_and_sniff_pkts(from_port_list[i], > to_port_list[i], pcap_file, filters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > def test_pfdpdk_vf_l2fwd_pipeline(self): > """ > VF l2fwd pipeline, PF bound to DPDK driver > """ > - self.setup_env(self.port_nums, driver=3Dself.drivername) > + self.setup_env(len(self.dut_ports), driver=3Dself.drivername) > self.dut.send_expect("sed -i '/^link > LINK/d' ./examples/ip_pipeline/examples/l2fwd.cli", "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK3 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[3][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK2 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[2][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK1 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[1][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK0 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[0][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > + for i in range(len(self.dut_ports)): > + cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK%d dev %s rxq = 1 > 128 MEMPOOL0 txq 1 512 promiscuous on' " \ > + "./examples/ip_pipeline/examples/l2fwd.cli" % (i, > self.sriov_vfs_port[i][0].pci) > + self.dut.send_expect(cmd, "# ", 20) >=20 > TESTPMD =3D "./%s/app/testpmd" % self.target > IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PF_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - PF_SCRIPT_FILE =3D "--file-prefix=3Dpf --socket-mem 1024,1024" > - > - DUT_VF_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.sriov_vfs_port[0][0].pci, > self.sriov_vfs_port[1][0].pci, self.sriov_vfs_port[2][0].pci, > self.sriov_vfs_port[3][0].pci) > + DUT_PF_PORTS =3D "" > + DUT_VF_PORTS =3D "" > + for i in range(len(self.dut_ports)): > + DUT_PF_PORTS =3D DUT_PF_PORTS + " -w %s" % self.dut_pci[i] > + DUT_VF_PORTS =3D DUT_VF_PORTS + " -w %s" % > self.sriov_vfs_port[i][0].pci > + PF_SCRIPT_FILE =3D "--file-prefix=3Dpf --socket-mem 1024" > + socket_num =3D self.dut.send_expect("lscpu | grep Socket | awk -= F ' ' > {'print $2'}", "#") > + if int(socket_num) >=3D 2: > + PF_SCRIPT_FILE =3D "--file-prefix=3Dpf --socket-mem 1024,102= 4" > VF_SCRIPT_FILE =3D "./examples/ip_pipeline/examples/l2fwd.cli" >=20 > pf_cmd =3D "{0} -c 0xf0 -n 4 {1} {2} -- -i".format(TESTPMD, > DUT_PF_PORTS, PF_SCRIPT_FILE) > self.dut.send_expect(pf_cmd, "testpmd> ", 60) > - self.dut.send_expect("set vf mac addr 0 0 %s" % self.vf0_mac, > "testpmd> ", 30) > - self.dut.send_expect("set vf mac addr 1 0 %s" % self.vf1_mac, > "testpmd> ", 30) > - self.dut.send_expect("set vf mac addr 2 0 %s" % self.vf2_mac, > "testpmd> ", 30) > - self.dut.send_expect("set vf mac addr 3 0 %s" % self.vf3_mac, > "testpmd> ", 30) > - > + for i in range(len(self.dut_ports)): > + self.dut.send_expect("set vf mac addr %s 0 %s" % (i, > + self.vf_mac[i]), "testpmd> ", 30) > vf_cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, > DUT_VF_PORTS, VF_SCRIPT_FILE) > - self.session_secondary.send_expect(vf_cmd, "fwd port 2", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/pt_0.pcap' > - pkt =3D > [Ether(dst=3Dself.vf0_mac)/IP(src=3D"100.0.0.10",dst=3D"200.0.0.10")/TCP(= sport=3D100,d > port=3D200)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.10" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/pt_1.pcap' > - pkt =3D > [Ether(dst=3Dself.vf1_mac)/IP(src=3D"100.0.0.11",dst=3D"200.0.0.11")/TCP(= sport=3D101,d > port=3D201)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(1, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.11" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/pt_2.pcap' > - pkt =3D > [Ether(dst=3Dself.vf2_mac)/IP(src=3D"100.0.0.12",dst=3D"200.0.0.12")/TCP(= sport=3D102,d > port=3D202)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(2, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.12" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/pt_3.pcap' > - pkt =3D > [Ether(dst=3Dself.vf3_mac)/IP(src=3D"100.0.0.13",dst=3D"200.0.0.13")/TCP(= sport=3D103,d > port=3D203)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(3, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.13" in dst_ip_list, "rule 3 test fail") > + self.session_secondary.send_expect(vf_cmd, "fwd port 1", 60) > + > + from_port_list =3D [0, 1, 2, 3] > + to_port_list =3D [1, 0, 3, 2] > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/pt_%d.pcap' % i > + src_ip =3D "100.0.0.%d" % (i+10) > + dst_ip =3D "200.0.0.%d" % (i+10) > + sport =3D i + 100 > + dport =3D i + 200 > + pkt =3D > [Ether(dst=3Dself.vf_mac[i])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/TCP(sport=3Dsp= ort,dport=3Ddpo > rt)/Raw(load=3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "tcp" > + sniff_pkts =3D self.send_and_sniff_pkts(from_port_list[i], > to_port_list[i], pcap_file, filters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > sleep(1) > - self.destroy_env(self.port_nums, driver=3Dself.drivername) > + self.destroy_env(len(self.dut_ports), driver=3Dself.drivername) >=20 > def test_pfkernel_vf_l2fwd_pipeline(self): > """ > VF l2fwd pipeline, PF bound to kernel driver > """ > - self.setup_env(self.port_nums, driver=3D'default') > + self.setup_env(len(self.dut_ports), driver=3D'default') > self.dut.send_expect("sed -i '/^link > LINK/d' ./examples/ip_pipeline/examples/l2fwd.cli", "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK3 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[3][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK2 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[2][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK1 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[1][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK0 dev %s rxq 1 128 > MEMPOOL0 txq 1 512 promiscuous > on' ./examples/ip_pipeline/examples/l2fwd.cli" % self.sriov_vfs_port[0][0= ].pci > - self.dut.send_expect(cmd, "# ", 20) > + for i in range(len(self.dut_ports)): > + cmd =3D "sed -i '/mempool MEMPOOL0/a\link LINK%d dev %s rxq = 1 > 128 MEMPOOL0 txq 1 512 promiscuous on' " \ > + "./examples/ip_pipeline/examples/l2fwd.cli" % (i, > self.sriov_vfs_port[i][0].pci) > + self.dut.send_expect(cmd, "# ", 20) >=20 > IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_VF_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.sriov_vfs_port[0][0].pci, > self.sriov_vfs_port[1][0].pci, self.sriov_vfs_port[2][0].pci, > self.sriov_vfs_port[3][0].pci) > + DUT_VF_PORTS =3D "" > + for i in range(len(self.dut_ports)): > + DUT_VF_PORTS =3D DUT_VF_PORTS + " -w %s" % > + self.sriov_vfs_port[i][0].pci > VF_SCRIPT_FILE =3D "./examples/ip_pipeline/examples/l2fwd.cli" >=20 > vf_cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, > DUT_VF_PORTS, VF_SCRIPT_FILE) > self.session_secondary.send_expect(vf_cmd, "fwd port 2", 60) >=20 > - #rule 0 test > - pcap_file =3D '/tmp/pt_0.pcap' > - pkt =3D > [Ether(dst=3Dself.vf0_mac)/IP(src=3D"100.0.0.10",dst=3D"200.0.0.10")/TCP(= sport=3D100,d > port=3D200)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.10" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/pt_1.pcap' > - pkt =3D > [Ether(dst=3Dself.vf1_mac)/IP(src=3D"100.0.0.11",dst=3D"200.0.0.11")/TCP(= sport=3D101,d > port=3D201)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(1, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.11" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/pt_2.pcap' > - pkt =3D > [Ether(dst=3Dself.vf2_mac)/IP(src=3D"100.0.0.12",dst=3D"200.0.0.12")/TCP(= sport=3D102,d > port=3D202)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(2, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.12" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/pt_3.pcap' > - pkt =3D > [Ether(dst=3Dself.vf3_mac)/IP(src=3D"100.0.0.13",dst=3D"200.0.0.13")/TCP(= sport=3D103,d > port=3D203)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(3, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.13" in dst_ip_list, "rule 3 test fail") > + from_port_list =3D [0, 1, 2, 3] > + to_port_list =3D [1, 0, 3, 2] > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/pt_%d.pcap' % i > + src_ip =3D "100.0.0.%d" % (i+10) > + dst_ip =3D "200.0.0.%d" % (i+10) > + sport =3D i + 100 > + dport =3D i + 200 > + pkt =3D > [Ether(dst=3Dself.vf_mac[i])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/TCP(sport=3Dsp= ort,dport=3Ddpo > rt)/Raw(load=3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "tcp" > + sniff_pkts =3D self.send_and_sniff_pkts(from_port_list[i], > to_port_list[i], pcap_file, filters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > sleep(1) > - self.destroy_env(self.port_nums, driver=3Dself.drivername) > + self.destroy_env(len(self.dut_ports), driver=3Dself.drivername) > for port_id in self.dut_ports: > port =3D self.dut.ports_info[port_id]['port'] > port.bind_driver(driver=3Dself.drivername) > @@ -666,18 +439,8 @@ class TestIPPipeline(TestCase): > """ > pipeline with tap > """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/tap.cli" % self.dut_= p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/tap.cli" % self.dut_= p1_pci > - self.dut.send_expect(cmd, "# ", 20) > - > - IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/tap.cli" > - > - cmd =3D "{0} -c 0x3 -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT_= PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "fwd port 3", 60) > + self.update_cli("tap.cli") > + self.launch_ip_pipeline("tap.cli") >=20 > tap_session =3D self.dut.new_session() > cmd =3D "ip link set br1 down; brctl delbr br1" > @@ -686,27 +449,24 @@ class TestIPPipeline(TestCase): > tap_session.send_expect(cmd, "# ", 20) > cmd =3D "ifconfig TAP0 up; ifconfig TAP1 up; ifconfig br1 up" > tap_session.send_expect(cmd, "# ", 20) > - #rule 0 test > - pcap_file =3D '/tmp/tap_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.10",dst=3D"200.0.0.10")/T= CP(sport=3D1 > 00,dport=3D200)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.10" in dst_ip_list, "link 1 failed to rece= ive packet") > - > - #rule 1 test > - pcap_file =3D '/tmp/tap_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p1_mac)/IP(src=3D"100.0.0.11",dst=3D"200.0.0.11")/T= CP(sport=3D1 > 01,dport=3D201)/Raw(load=3D"X"*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "tcp" > - sniff_pkts =3D self.send_and_sniff_pkts(1, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "200.0.0.11" in dst_ip_list, "link 0 failed to rece= ive packet") > + > + > + from_port_list =3D [0, 1] > + to_port_list =3D [1, 0] > + for i in range(self.max_ports): > + pcap_file =3D '/tmp/pt_%d.pcap' % i > + src_ip =3D "100.0.0.%d" % (i+10) > + dst_ip =3D "200.0.0.%d" % (i+10) > + sport =3D i + 100 > + dport =3D i + 200 > + pkt =3D > [Ether(dst=3Dself.dut_mac[i])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/TCP(sport=3Ds= port,dport=3Ddp > ort)/Raw(load=3D"X"*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "tcp" > + sniff_pkts =3D self.send_and_sniff_pkts(from_port_list[i], > to_port_list[i], pcap_file, filters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > sleep(1) > cmd =3D "^C" > @@ -720,76 +480,31 @@ class TestIPPipeline(TestCase): > """ > rss pipeline > """ > - cmd =3D "sed -i -e > 's/0000:02:00.0/%s/' ./examples/ip_pipeline/examples/rss.cli" % self.dut_= p0_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:02:00.1/%s/' ./examples/ip_pipeline/examples/rss.cli" % self.dut_= p1_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.0/%s/' ./examples/ip_pipeline/examples/rss.cli" % self.dut_= p2_pci > - self.dut.send_expect(cmd, "# ", 20) > - cmd =3D "sed -i -e > 's/0000:06:00.1/%s/' ./examples/ip_pipeline/examples/rss.cli" % self.dut_= p3_pci > - self.dut.send_expect(cmd, "# ", 20) > - > - IP_PIPELINE =3D "./examples/ip_pipeline/build/ip_pipeline" > - DUT_PORTS =3D " -w {0} -w {1} -w {2} -w {3} "\ > - .format(self.dut_p0_pci, self.dut_p1_pci, self.dut_p= 2_pci, > self.dut_p3_pci) > - SCRIPT_FILE =3D "./examples/ip_pipeline/examples/rss.cli" > - > - cmd =3D "{0} -c 0x1f -n 4 {1} -- -s {2}".format(IP_PIPELINE, DUT= _PORTS, > SCRIPT_FILE) > - self.dut.send_expect(cmd, "PIPELINE3 enable", 60) > - > - #rule 0 test > - pcap_file =3D '/tmp/rss_0.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.10.1",dst=3D"100.0.20.2")/R= aw(load=3D"X > "*6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.20.2" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 0, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.0.20.2" in dst_ip_list, "rule 0 test fail") > - > - #rule 1 test > - pcap_file =3D '/tmp/rss_1.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.0",dst=3D"100.0.0.1")/Raw= (load=3D"X"* > 6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.0.1" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 1, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.0.0.1" in dst_ip_list, "rule 1 test fail") > - > - #rule 2 test > - pcap_file =3D '/tmp/rss_2.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.10.1",dst=3D"100.0.0.2")/Ra= w(load=3D"X" > *6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.0.2" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 2, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.0.0.2" in dst_ip_list, "rule 2 test fail") > - > - #rule 3 test > - pcap_file =3D '/tmp/rss_3.pcap' > - pkt =3D > [Ether(dst=3Dself.dut_p0_mac)/IP(src=3D"100.0.0.1",dst=3D"100.0.10.2")/Ra= w(load=3D"X" > *6)] > - self.write_pcap_file(pcap_file, pkt) > - filters =3D "dst host 100.0.10.2" > - sniff_pkts =3D self.send_and_sniff_pkts(0, 3, pcap_file, filters= ) > - dst_ip_list =3D [] > - for packet in sniff_pkts: > - dst_ip_list.append(packet.getlayer(1).dst) > - self.verify( "100.0.10.2" in dst_ip_list, "rule 3 test fail") > - > - sleep(1) > - cmd =3D "^C" > - self.dut.send_expect(cmd, "# ", 20) > + self.update_cli("rss.cli") > + self.launch_ip_pipeline("rss.cli") > + > + verify_list =3D ["100.0.20.2", "100.0.0.1", "100.0.0.2", "100.0.= 10.2"] > + src_ip_list =3D ["100.0.10.1", "100.0.0.0", "100.0.10.1", "100.0= .0.1"] > + for i in range(len(self.dut_ports)): > + pcap_file =3D '/tmp/rss_%d.pcap' % i > + src_ip =3D src_ip_list[i] > + dst_ip =3D verify_list[i] > + pkt =3D > [Ether(dst=3Dself.dut_mac[0])/IP(src=3Dsrc_ip,dst=3Ddst_ip)/Raw(load=3D"X= "*6)] > + self.write_pcap_file(pcap_file, pkt) > + filters =3D "dst host %s" % dst_ip > + sniff_pkts =3D self.send_and_sniff_pkts(0, i, pcap_file, fil= ters) > + dst_ip_list =3D [] > + for packet in sniff_pkts: > + dst_ip_list.append(packet.getlayer(1).dst) > + self.verify(dst_ip in dst_ip_list, "rule %d test fail" % i) >=20 > def tear_down(self): > """ > Run after each test case. > """ > - pass > + sleep(1) > + cmd =3D "^C" > + self.dut.send_expect(cmd, "# ", 20) >=20 > def tear_down_all(self): > """ > -- > 2.17.1 --_002_4DC48DF9BDA3E54A836D2D3C057DEC6F0BB80248SHSMSX103ccrcor_ Content-Type: application/octet-stream; name="TestIPPipeline.log" Content-Description: TestIPPipeline.log Content-Disposition: attachment; filename="TestIPPipeline.log"; size=94008; creation-date="Fri, 23 Aug 2019 04:11:49 GMT"; modification-date="Fri, 23 Aug 2019 04:11:49 GMT" Content-Transfer-Encoding: base64 MjMvMDgvMjAxOSAxMTo0OTo0NiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHM6IApURVNU IFNVSVRFIDogVGVzdElQUGlwZWxpbmUKMjMvMDgvMjAxOSAxMTo0OTo0NiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkdHM6IE5JQyA6ICAgICAgICBmb3J0dmlsbGVfZWFnbGUKMjMvMDgvMjAx OSAxMTo0OTo0NiAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDEx OjQ5OjQ2ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NDk6 NTAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBybSAtcmYgLi9hcHAvdGVzdC90ZXN0 X3Jlc291cmNlX2MucmVzLm8KMjMvMDgvMjAxOSAxMTo0OTo1MCAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjQ5OjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAu MTc2LjE1MTogcm0gLXJmIC4vYXBwL3Rlc3QvdGVzdF9yZXNvdXJjZV90YXIucmVzLm8KMjMvMDgv MjAxOSAxMTo0OTo1MCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5 IDExOjQ5OjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogcm0gLXJmIC4vYXBwL3Rl c3QvdGVzdF9wY2lfc3lzZnMucmVzLm8KMjMvMDgvMjAxOSAxMTo0OTo1MCAgICAgICAgICAgICBk dXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjQ5OjUwICAgICAgICAgICAgIGR1dC4x MC4yNDAuMTc2LjE1MTogbWFrZSAtaiA3MCAtQyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lIAoyMy8w OC8yMDE5IDExOjQ5OjUyICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogbWFrZTogRW50 ZXJpbmcgZGlyZWN0b3J5ICcvcm9vdC9kcGRrL2V4YW1wbGVzL2lwX3BpcGVsaW5lJw0KICBDQyBh Y3Rpb24ubw0KICBDQyBjbGkubw0KICBDQyBjb25uLm8NCiAgQ0Mga25pLm8NCiAgQ0MgbGluay5v DQogIENDIG1haW4ubw0KICBDQyBtZW1wb29sLm8NCiAgQ0MgcGFyc2VyLm8NCiAgQ0MgcGlwZWxp bmUubw0KICBDQyBzd3Eubw0KICBDQyB0YXAubw0KICBDQyB0aHJlYWQubw0KICBDQyB0bWdyLm8N CiAgQ0MgY3J5cHRvZGV2Lm8NCiAgTEQgaXBfcGlwZWxpbmUNCiAgSU5TVEFMTC1BUFAgaXBfcGlw ZWxpbmUNCiAgSU5TVEFMTC1NQVAgaXBfcGlwZWxpbmUubWFwDQptYWtlOiBMZWF2aW5nIGRpcmVj dG9yeSAnL3Jvb3QvZHBkay9leGFtcGxlcy9pcF9waXBlbGluZScKMjMvMDgvMjAxOSAxMTo0OTo1 MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLWgKMjMvMDgvMjAxOSAx MTo0OTo1MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgdmVyc2lvbiA0 LjkuMg0KbGlicGNhcCB2ZXJzaW9uIDEuOS4wLVBSRS1HSVQgKHdpdGggVFBBQ0tFVF9WMykNCk9w ZW5TU0wgMS4wLjFlLWZpcHMgMTEgRmViIDIwMTMNClVzYWdlOiB0Y3BkdW1wIFstYUFiZERlZmhI SUpLbExuTk9wcVN0dVV2eFgjXSBbIC1CIHNpemUgXSBbIC1jIGNvdW50IF0NCgkJWyAtQyBmaWxl X3NpemUgXSBbIC1FIGFsZ286c2VjcmV0IF0gWyAtRiBmaWxlIF0gWyAtRyBzZWNvbmRzIF0NCgkJ WyAtaSBpbnRlcmZhY2UgXSBbIC1qIHRzdGFtcHR5cGUgXSBbIC1NIHNlY3JldCBdIFsgLS1udW1i ZXIgXQ0KCQlbIC1RIGlufG91dHxpbm91dCBdDQoJCVsgLXIgZmlsZSBdIFsgLXMgc25hcGxlbiBd IFsgLS10aW1lLXN0YW1wLXByZWNpc2lvbiBwcmVjaXNpb24gXQ0KCQlbIC0taW1tZWRpYXRlLW1v ZGUgXSBbIC1UIHR5cGUgXSBbIC0tdmVyc2lvbiBdIFsgLVYgZmlsZSBdDQoJCVsgLXcgZmlsZSBd IFsgLVcgZmlsZWNvdW50IF0gWyAteSBkYXRhbGlua3R5cGUgXSBbIC16IHBvc3Ryb3RhdGUtY29t bWFuZCBdDQoJCVsgLVogdXNlciBdIFsgZXhwcmVzc2lvbiBdCjIzLzA4LzIwMTkgMTE6NDk6NTIg ICAgICAgICAgICAgICAgIFRlc3RJUFBpcGVsaW5lOiBUZXN0IENhc2UgdGVzdF9maXJld2FsbF9w aXBlbGluZSBCZWdpbgoyMy8wOC8yMDE5IDExOjQ5OjUyICAgICAgICAgICAgIGR1dC4xMC4yNDAu MTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NDk6NTMgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo0OTo1MyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6 IHNlZCAtaSAtZSAncy8wMDAwOjAyOjAwLjAvMDAwMDowNDowMC4wLycgLi9leGFtcGxlcy9pcF9w aXBlbGluZS9leGFtcGxlcy9maXJld2FsbC5jbGkKMjMvMDgvMjAxOSAxMTo0OTo1MyAgICAgICAg ICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjQ5OjUzICAgICAgICAgICAg IGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDI6MDAuMS8wMDAwOjA0OjAw LjEvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2ZpcmV3YWxsLmNsaQoyMy8wOC8y MDE5IDExOjQ5OjUzICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkg MTE6NDk6NTMgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAw MDowNjowMC4wLzAwMDA6MDQ6MDAuMi8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMv ZmlyZXdhbGwuY2xpCjIzLzA4LzIwMTkgMTE6NDk6NTMgICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo0OTo1MyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4x NTE6IHNlZCAtaSAtZSAncy8wMDAwOjA2OjAwLjEvMDAwMDowNDowMC4zLycgLi9leGFtcGxlcy9p cF9waXBlbGluZS9leGFtcGxlcy9maXJld2FsbC5jbGkKMjMvMDgvMjAxOSAxMTo0OTo1MyAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjQ5OjUzICAgICAgICAg ICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzL2RlZmF1bHQgYWN0aW9uIGZ3ZCBw b3J0IDQvZGVmYXVsdCBhY3Rpb24gZndkIHBvcnQgNC8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUv ZXhhbXBsZXMvZmlyZXdhbGwuY2xpCjIzLzA4LzIwMTkgMTE6NDk6NTMgICAgICAgICAgICAgZHV0 LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo0OTo1MyAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvYnVpbGQvaXBfcGlwZWxpbmUgLWMg MHgzIC1uIDQgIC13IDAwMDA6MDQ6MDAuMCAtdyAwMDAwOjA0OjAwLjEgLXcgMDAwMDowNDowMC4y IC13IDAwMDA6MDQ6MDAuMyAtLSAtcyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2Zp cmV3YWxsLmNsaQoyMy8wOC8yMDE5IDExOjQ5OjU0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogRUFMOiBEZXRlY3RlZCA3MiBsY29yZShzKQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9k ZXMNCkVBTDogTXVsdGktcHJvY2VzcyBzb2NrZXQgL3Zhci9ydW4vZHBkay9ydGUvbXBfc29ja2V0 DQpFQUw6IFNlbGVjdGVkIElPVkEgbW9kZSAnUEEnDQpFQUw6IDEwMjQgaHVnZXBhZ2VzIG9mIHNp emUgMjA5NzE1MiByZXNlcnZlZCwgYnV0IG5vIG1vdW50ZWQgaHVnZXRsYmZzIGZvdW5kIGZvciB0 aGF0IHNpemUNCkVBTDogUHJvYmluZyBWRklPIHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0 IGluaXRpYWxpemVkDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4wIG9uIE5VTUEgc29ja2V0 IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2 aWNlIDAwMDA6MDQ6MDAuMSBvbiBOVU1BIHNvY2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4 MDg2OjE1NzIgbmV0X2k0MGUNCkVBTDogUENJIGRldmljZSAwMDAwOjA0OjAwLjIgb24gTlVNQSBz b2NrZXQgMA0KRUFMOiAgIHByb2JlIGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBD SSBkZXZpY2UgMDAwMDowNDowMC4zIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2 ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KS05JOiBDYW4gbm90IG9wZW4gL2Rldi9rbmkNCjsgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KOyBDb3B5cmlnaHQoYykgMjAxMC0y MDE4IEludGVsIENvcnBvcmF0aW9uDQoNCjsgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19f Xw0KOyBMSU5LMCBSWFEwIC0tLT58ICAgICAgICAgICAgICAgfC0tLT4gTElOSzAgVFhRMA0KOyAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfA0KOyBMSU5LMSBSWFEwIC0tLT58ICAgICAg ICAgICAgICAgfC0tLT4gTElOSzEgVFhRMA0KOyAgICAgICAgICAgICAgICB8ICAgRmlyZXdhbGwg ICAgfA0KOyBMSU5LMiBSWFEwIC0tLT58ICAgICAgICAgICAgICAgfC0tLT4gTElOSzIgVFhRMA0K OyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfA0KOyBMSU5LMyBSWFEwIC0tLT58ICAg ICAgICAgICAgICAgfC0tLT4gTElOSzMgVFhRMA0KOyAgICAgICAgICAgICAgICB8X19fX19fX19f X19fX19ffA0KOyAgICAgICAgICAgICAgICAgICAgICAgIHwNCjsgICAgICAgICAgICAgICAgICAg ICAgIC0rLQ0KOw0KOyBJbnB1dCBwYWNrZXQ6IEV0aGVybmV0L0lQdjQNCjsNCjsgUGFja2V0IGJ1 ZmZlciBsYXlvdXQ6DQo7ICMgICBGaWVsZCBOYW1lICAgICAgICAgICAgT2Zmc2V0IChCeXRlcykg ICAgICBTaXplIChCeXRlcykNCjsgMCAgIE1idWYgICAgICAgICAgICAgICAgICAwICAgICAgICAg ICAgICAgICAgIDEyOA0KOyAxICAgSGVhZHJvb20gICAgICAgICAgICAgIDEyOCAgICAgICAgICAg ICAgICAgMTI4DQo7IDIgICBFdGhlcm5ldCBoZWFkZXIgICAgICAgMjU2ICAgICAgICAgICAgICAg ICAxNA0KOyAzICAgSVB2NCBoZWFkZXIgICAgICAgICAgIDI3MCAgICAgICAgICAgICAgICAgMjAN Cg0KbWVtcG9vbCBNRU1QT09MMCBidWZmZXIgMjMwNCBwb29sIDMySyBjYWNoZSAyNTYgY3B1IDAN Cg0KbGluayBMSU5LMCBkZXYgMDAwMDowNDowMC4wIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1 MTIgcHJvbWlzY3VvdXMgb24NCmxpbmsgTElOSzEgZGV2IDAwMDA6MDQ6MDAuMSByeHEgMSAxMjgg TUVNUE9PTDAgdHhxIDEgNTEyIHByb21pc2N1b3VzIG9uDQpsaW5rIExJTksyIGRldiAwMDAwOjA0 OjAwLjIgcnhxIDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KbGluayBM SU5LMyBkZXYgMDAwMDowNDowMC4zIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlz Y3VvdXMgb24NCg0KdGFibGUgYWN0aW9uIHByb2ZpbGUgQVAwIGlwdjQgb2Zmc2V0IDI3MCBmd2QN Cg0KcGlwZWxpbmUgUElQRUxJTkUwIHBlcmlvZCAxMCBvZmZzZXRfcG9ydF9pZCAwIGNwdSAwDQoN CnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIGJzeiAzMiBsaW5rIExJTkswIHJ4cSAwDQpwaXBl bGluZSBQSVBFTElORTAgcG9ydCBpbiBic3ogMzIgbGluayBMSU5LMSByeHEgMA0KcGlwZWxpbmUg UElQRUxJTkUwIHBvcnQgaW4gYnN6IDMyIGxpbmsgTElOSzIgcnhxIDANCnBpcGVsaW5lIFBJUEVM SU5FMCBwb3J0IGluIGJzeiAzMiBsaW5rIExJTkszIHJ4cSAwDQoNCnBpcGVsaW5lIFBJUEVMSU5F MCBwb3J0IG91dCBic3ogMzIgbGluayBMSU5LMCB0eHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBv cnQgb3V0IGJzeiAzMiBsaW5rIExJTksxIHR4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBv dXQgYnN6IDMyIGxpbmsgTElOSzIgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBi c3ogMzIgbGluayBMSU5LMyB0eHEgMA0KDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgbWF0Y2gg YWNsIGlwdjQgb2Zmc2V0IDI3MCBzaXplIDRLIGFjdGlvbiBBUDANCg0KcGlwZWxpbmUgUElQRUxJ TkUwIHBvcnQgaW4gMCB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiAxIHRhYmxl IDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDIgdGFibGUgMA0KcGlwZWxpbmUgUElQRUxJ TkUwIHBvcnQgaW4gMyB0YWJsZSAwDQoNCnRocmVhZCAxIHBpcGVsaW5lIFBJUEVMSU5FMCBlbmFi bGUNCg0KcGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIDAgcnVsZSBhZGQgbWF0Y2ggZGVmYXVsdCBh Y3Rpb24gZndkIGRyb3ANCnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAwIHJ1bGUgYWRkIG1hdGNo IGFjbCBwcmlvcml0eSAwIGlwdjQgMC4wLjAuMCAwIDEwMC4wLjAuMCAxMCAwIDY1NTM1IDAgNjU1 MzUgNiBhY3Rpb24gZndkIHBvcnQgMAoyMy8wOC8yMDE5IDExOjQ5OjU0ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAKMjMv MDgvMjAxOSAxMTo0OTo1NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8y MDE5IDExOjQ5OjU0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAt ZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcCAtaSBlbm8xNjc3Nzk4NCBk c3QgaG9zdCAxMDAuMC4wLjEgMj4vdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0ICYKMjMvMDgv MjAxOSAxMTo0OTo1NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTM3Nwoy My8wOC8yMDE5IDExOjQ5OjU0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAt biAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo0OTo1NCAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjQ5OjU0ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo0OTo1NSAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVy IC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3Qg YmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUg Zm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29t ZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NDk6NTcgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvZndfMC5wY2FwIikKMjMvMDgvMjAxOSAx MTo0OTo1NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8y MDE5IDExOjQ5OjU3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBp ZmFjZT0iZW5vMTY3Nzc5ODQiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjQ5OjU3ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6 NDk6NTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAx MTo0OTo1OSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjQ5 OjU5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4 LzIwMTkgMTE6NDk6NTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25l ICAgICAgICAgICAgICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9l bm8xNjc3Nzk4NC5wY2FwIC1pIGVubzE2Nzc3OTg0IGRzdCBob3N0IDEwMC4wLjAuMSAyPiAvdG1w L3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0CjIzLzA4LzIwMTkgMTE6NTA6MDAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6 NTA6MDEgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMv MDgvMjAxOSAxMTo1MDowMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90 bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwCjIzLzA4LzIwMTkgMTE6NTA6MDIgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MDowMiAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VuczE2 MGYxLnBjYXAgLWkgZW5zMTYwZjEgZHN0IGhvc3QgMTAwLjY0LjAuMSAyPi90bXAvdGNwZHVtcF9l bnMxNjBmMS5vdXQgJgoyMy8wOC8yMDE5IDExOjUwOjAyICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3RlcjogWzFdIDE5MzgzCjIzLzA4LzIwMTkgMTE6NTA6MDIgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5IDEx OjUwOjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTA6 MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDExOjUw OjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0IHB5 dGhvbiBnbnVwbG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBDYW4n dCBpbXBvcnQgUHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1wKCku DQpXQVJOSU5HOiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8gZGVm YXVsdCByb3V0ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1MDow NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9md18x LnBjYXAiKQoyMy8wOC8yMDE5IDExOjUwOjA0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogG1szNG0bWzFtCjIzLzA4LzIwMTkgMTE6NTA6MDQgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdGVyOiBzZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNvdW50PTEpCjIzLzA4LzIw MTkgMTE6NTA6MDUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFj a2V0cy4KMjMvMDgvMjAxOSAxMTo1MDowNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IGV4aXQoKQoyMy8wOC8yMDE5IDExOjUwOjA3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogCjIzLzA4LzIwMTkgMTE6NTA6MDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBr aWxsYWxsIHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1MDowNyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEg aW4gLXcgL3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYwZjEgZHN0IGhvc3QgMTAw LjY0LjAuMSAyPiAvdG1wL3RjcGR1bXBfZW5zMTYwZjEub3V0CjIzLzA4LzIwMTkgMTE6NTA6MDgg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIz LzA4LzIwMTkgMTE6NTA6MDggICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmlu ZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MDowOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5wY2FwCjIzLzA4LzIwMTkgMTE6NTA6 MDkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MDowOSAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3Rt cC90Y3BkdW1wX2VubzUwMzM2NTEyLnBjYXAgLWkgZW5vNTAzMzY1MTIgZHN0IGhvc3QgMTAwLjEy OC4wLjEgMj4vdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0ICYKMjMvMDgvMjAxOSAxMTo1MDow OSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTM4OQoyMy8wOC8yMDE5IDEx OjUwOjA5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2Fw eVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1MDowOSAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjA5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1MDoxMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUg YWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1 c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQ djYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAo Mi4yLjApCjIzLzA4LzIwMTkgMTE6NTA6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBwa3QgPSByZHBjYXAoIi90bXAvZndfMi5wY2FwIikKMjMvMDgvMjAxOSAxMTo1MDoxMiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjUwOjEy ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5vMTY3 Nzc5ODQiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjUwOjEyICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTA6MTQgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1MDoxNCAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjE0ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTA6 MTQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAg ICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5w Y2FwIC1pIGVubzUwMzM2NTEyIGRzdCBob3N0IDEwMC4xMjguMC4xIDI+IC90bXAvdGNwZHVtcF9l bm81MDMzNjUxMi5vdXQKMjMvMDgvMjAxOSAxMTo1MDoxNSAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1MDoxNSAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDEx OjUwOjE2ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1w X2VuczIyNGYxLnBjYXAKMjMvMDgvMjAxOSAxMTo1MDoxNyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjE3ICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMjI0ZjEucGNhcCAt aSBlbnMyMjRmMSBkc3QgaG9zdCAxMDAuMTkyLjAuMSAyPi90bXAvdGNwZHVtcF9lbnMyMjRmMS5v dXQgJgoyMy8wOC8yMDE5IDExOjUwOjE3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog WzFdIDE5Mzk1CjIzLzA4LzIwMTkgMTE6NTA6MTcgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5IDExOjUwOjE3ICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTA6MTcgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDExOjUwOjE3ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBnbnVw bG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBvcnQg UHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJOSU5H OiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8gZGVmYXVsdCByb3V0 ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1MDoxOSAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9md18zLnBjYXAiKQoy My8wOC8yMDE5IDExOjUwOjE5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogG1szNG0b WzFtCjIzLzA4LzIwMTkgMTE6NTA6MTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBz ZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6NTA6 MTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4KMjMv MDgvMjAxOSAxMTo1MDoyMSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoy My8wOC8yMDE5IDExOjUwOjIyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4 LzIwMTkgMTE6NTA6MjIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxsIHRj cGR1bXAKMjMvMDgvMjAxOSAxMTo1MDoyMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3Rt cC90Y3BkdW1wX2VuczIyNGYxLnBjYXAgLWkgZW5zMjI0ZjEgZHN0IGhvc3QgMTAwLjE5Mi4wLjEg Mj4gL3RtcC90Y3BkdW1wX2VuczIyNGYxLm91dAoyMy8wOC8yMDE5IDExOjUwOjIzICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5 IDExOjUwOjIzICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVy CjIzLzA4LzIwMTkgMTE6NTA6MjQgICAgICAgICAgICAgICAgIFRlc3RJUFBpcGVsaW5lOiBUZXN0 IENhc2UgdGVzdF9maXJld2FsbF9waXBlbGluZSBSZXN1bHQgUEFTU0VEOgoyMy8wOC8yMDE5IDEx OjUwOjI1ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogXkMKMjMvMDgvMjAxOSAxMTo1 MDoyNSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUwOjI1 ICAgICAgICAgICAgICAgICBUZXN0SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3RfZmxvd19waXBl bGluZSBCZWdpbgoyMy8wOC8yMDE5IDExOjUwOjI1ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogCjIzLzA4LzIwMTkgMTE6NTA6MjUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiAKMjMvMDgvMjAxOSAxMTo1MDoyNSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNl ZCAtaSAtZSAncy8wMDAwOjAyOjAwLjAvMDAwMDowNDowMC4wLycgLi9leGFtcGxlcy9pcF9waXBl bGluZS9leGFtcGxlcy9mbG93LmNsaQoyMy8wOC8yMDE5IDExOjUwOjI1ICAgICAgICAgICAgIGR1 dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTA6MjUgICAgICAgICAgICAgZHV0LjEw LjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAwMDowMjowMC4xLzAwMDA6MDQ6MDAuMS8nIC4v ZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvZmxvdy5jbGkKMjMvMDgvMjAxOSAxMTo1MDoy NSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUwOjI1ICAg ICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDY6MDAuMC8w MDAwOjA0OjAwLjIvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2Zsb3cuY2xpCjIz LzA4LzIwMTkgMTE6NTA6MjUgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgv MjAxOSAxMTo1MDoyNSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNlZCAtaSAtZSAn cy8wMDAwOjA2OjAwLjEvMDAwMDowNDowMC4zLycgLi9leGFtcGxlcy9pcF9waXBlbGluZS9leGFt cGxlcy9mbG93LmNsaQoyMy8wOC8yMDE5IDExOjUwOjI2ICAgICAgICAgICAgIGR1dC4xMC4yNDAu MTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTA6MjYgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYu MTUxOiBzZWQgLWkgLWUgJ3MvZGVmYXVsdCBhY3Rpb24gZndkIHBvcnQgNC9kZWZhdWx0IGFjdGlv biBmd2QgcG9ydCA0LycgLi9leGFtcGxlcy9pcF9waXBlbGluZS9leGFtcGxlcy9mbG93LmNsaQoy My8wOC8yMDE5IDExOjUwOjI2ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4 LzIwMTkgMTE6NTA6MjYgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAuL2V4YW1wbGVz L2lwX3BpcGVsaW5lL2J1aWxkL2lwX3BpcGVsaW5lIC1jIDB4MyAtbiA0ICAtdyAwMDAwOjA0OjAw LjAgLXcgMDAwMDowNDowMC4xIC13IDAwMDA6MDQ6MDAuMiAtdyAwMDAwOjA0OjAwLjMgLS0gLXMg Li9leGFtcGxlcy9pcF9waXBlbGluZS9leGFtcGxlcy9mbG93LmNsaQoyMy8wOC8yMDE5IDExOjUw OjI3ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogRUFMOiBEZXRlY3RlZCA3MiBsY29y ZShzKQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9kZXMNCkVBTDogTXVsdGktcHJvY2VzcyBzb2Nr ZXQgL3Zhci9ydW4vZHBkay9ydGUvbXBfc29ja2V0DQpFQUw6IFNlbGVjdGVkIElPVkEgbW9kZSAn UEEnDQpFQUw6IDEwMjQgaHVnZXBhZ2VzIG9mIHNpemUgMjA5NzE1MiByZXNlcnZlZCwgYnV0IG5v IG1vdW50ZWQgaHVnZXRsYmZzIGZvdW5kIGZvciB0aGF0IHNpemUNCkVBTDogUHJvYmluZyBWRklP IHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0IGluaXRpYWxpemVkDQpFQUw6IFBDSSBkZXZp Y2UgMDAwMDowNDowMC4wIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgw ODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2aWNlIDAwMDA6MDQ6MDAuMSBvbiBOVU1BIHNv Y2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1NzIgbmV0X2k0MGUNCkVBTDogUENJ IGRldmljZSAwMDAwOjA0OjAwLjIgb24gTlVNQSBzb2NrZXQgMA0KRUFMOiAgIHByb2JlIGRyaXZl cjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4zIG9uIE5V TUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KS05J OiBDYW4gbm90IG9wZW4gL2Rldi9rbmkNCjsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KOyBDb3B5cmlnaHQoYykgMjAxMC0yMDE4IEludGVsIENvcnBvcmF0aW9uDQoNCjsg ICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX18NCjsgTElOSzAgUlhRMCAtLS0+fCAgICAg ICAgICAgICAgICB8LS0tPiBMSU5LMCBUWFEwDQo7ICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgfA0KOyBMSU5LMSBSWFEwIC0tLT58ICAgICAgICAgICAgICAgIHwtLS0+IExJTksxIFRY UTANCjsgICAgICAgICAgICAgICAgfCAgICAgIEZsb3cgICAgICB8DQo7IExJTksyIFJYUTAgLS0t PnwgQ2xhc3NpZmljYXRpb24gfC0tLT4gTElOSzIgVFhRMA0KOyAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgIHwNCjsgTElOSzMgUlhRMCAtLS0+fCAgICAgICAgICAgICAgICB8LS0tPiBM SU5LMyBUWFEwDQo7ICAgICAgICAgICAgICAgIHxfX19fX19fX19fX19fX19ffA0KOyAgICAgICAg ICAgICAgICAgICAgICAgIHwNCjsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0+ IFNJTkswIChmbG93IGxvb2t1cCBtaXNzKQ0KOw0KOyBJbnB1dCBwYWNrZXQ6IEV0aGVybmV0L0lQ djQNCjsNCjsgUGFja2V0IGJ1ZmZlciBsYXlvdXQ6DQo7ICMgICBGaWVsZCBOYW1lICAgICAgIE9m ZnNldCAoQnl0ZXMpICAgU2l6ZSAoQnl0ZXMpDQo7IDAgICBNYnVmICAgICAgICAgICAgIDAgICAg ICAgICAgICAgICAgMTI4DQo7IDEgICBIZWFkcm9vbSAgICAgICAgIDEyOCAgICAgICAgICAgICAg MTI4DQo7IDIgICBFdGhlcm5ldCBoZWFkZXIgIDI1NiAgICAgICAgICAgICAgMTQNCjsgMyAgIElQ djQgaGVhZGVyICAgICAgMjcwICAgICAgICAgICAgICAyMA0KDQptZW1wb29sIE1FTVBPT0wwIGJ1 ZmZlciAyMzA0IHBvb2wgMzJLIGNhY2hlIDI1NiBjcHUgMA0KDQpsaW5rIExJTkswIGRldiAwMDAw OjA0OjAwLjAgcnhxIDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KbGlu ayBMSU5LMSBkZXYgMDAwMDowNDowMC4xIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJv bWlzY3VvdXMgb24NCmxpbmsgTElOSzIgZGV2IDAwMDA6MDQ6MDAuMiByeHEgMSAxMjggTUVNUE9P TDAgdHhxIDEgNTEyIHByb21pc2N1b3VzIG9uDQpsaW5rIExJTkszIGRldiAwMDAwOjA0OjAwLjMg cnhxIDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KDQp0YWJsZSBhY3Rp b24gcHJvZmlsZSBBUDAgaXB2NCBvZmZzZXQgMjcwIGZ3ZA0KDQpwaXBlbGluZSBQSVBFTElORTAg cGVyaW9kIDEwIG9mZnNldF9wb3J0X2lkIDAgY3B1IDANCg0KcGlwZWxpbmUgUElQRUxJTkUwIHBv cnQgaW4gYnN6IDMyIGxpbmsgTElOSzAgcnhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGlu IGJzeiAzMiBsaW5rIExJTksxIHJ4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiBic3og MzIgbGluayBMSU5LMiByeHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gYnN6IDMyIGxp bmsgTElOSzMgcnhxIDANCg0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgb3V0IGJzeiAzMiBsaW5r IExJTkswIHR4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIGxpbmsgTElO SzEgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBic3ogMzIgbGluayBMSU5LMiB0 eHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgb3V0IGJzeiAzMiBsaW5rIExJTkszIHR4cSAw DQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIHNpbmsNCg0KcGlwZWxpbmUgUElQ RUxJTkUwIHRhYmxlIG1hdGNoIGhhc2ggZXh0IGtleSAxNiBtYXNrIDAwRkYwMDAwRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGIG9mZnNldCAyNzggYnVja2V0cyAxNksgc2l6ZSA2NUsgYWN0aW9uIEFQ MA0KVEFCTEU6IHJ0ZV90YWJsZV9oYXNoX2NyZWF0ZV9rZXkxNl9leHQ6IEhhc2ggdGFibGUgUElQ RUxJTkUwX3RhYmxlMCBtZW1vcnkgZm9vdHByaW50IGlzIDY0MDc5MzYgYnl0ZXMNCg0KcGlwZWxp bmUgUElQRUxJTkUwIHBvcnQgaW4gMCB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBp biAxIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDIgdGFibGUgMA0KcGlwZWxp bmUgUElQRUxJTkUwIHBvcnQgaW4gMyB0YWJsZSAwDQoNCnRocmVhZCAxIHBpcGVsaW5lIFBJUEVM SU5FMCBlbmFibGUNCg0KcGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIDAgcnVsZSBhZGQgbWF0Y2gg ZGVmYXVsdCBhY3Rpb24gZndkIHBvcnQgNA0KcGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIDAgcnVs ZSBhZGQgbWF0Y2ggaGFzaCBpcHY0XzV0dXBsZSAxMDAuMC4wLjEwIDIwMC4wLjAuMTAgMTAwIDIw MCA2IGFjdGlvbiBmd2QgcG9ydCAwDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgMCBydWxlIGFk ZCBtYXRjaCBoYXNoIGlwdjRfNXR1cGxlIDEwMC4wLjAuMTEgMjAwLjAuMC4xMSAxMDEgMjAxIDYg YWN0aW9uIGZ3ZCBwb3J0IDENCnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAwIHJ1bGUgYWRkIG1h dGNoIGhhc2ggaXB2NF81dHVwbGUgMTAwLjAuMC4xMiAyMDAuMC4wLjEyIDEwMiAyMDIgNiBhY3Rp b24gZndkIHBvcnQgMgoyMy8wOC8yMDE5IDExOjUwOjI3ICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAKMjMvMDgvMjAxOSAx MTo1MDoyNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUw OjI3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAt dyAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcCAtaSBlbm8xNjc3Nzk4NCB0Y3AgMj4vdG1w L3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0ICYKMjMvMDgvMjAxOSAxMTo1MDoyNyAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTQwMQoyMy8wOC8yMDE5IDExOjUwOjI3ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQK MjMvMDgvMjAxOSAxMTo1MDoyNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8w OC8yMDE5IDExOjUwOjI3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMv MDgvMjAxOSAxMTo1MDoyOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENh bid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90 Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkg b3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRp b24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4 LzIwMTkgMTE6NTA6MzAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBj YXAoIi90bXAvZmxfMC5wY2FwIikKMjMvMDgvMjAxOSAxMTo1MDozMCAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjUwOjMwICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5vMTY3Nzc5ODQiLCBjb3Vu dD0xKQoyMy8wOC8yMDE5IDExOjUwOjMwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog Lg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTA6MzIgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1MDozMiAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjMyICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTA6MzIgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAgICAgICAgICB0Y3Bk dW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm8xNjc3Nzk4NC5wY2FwIC1pIGVubzE2 Nzc3OTg0IHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0CjIzLzA4LzIwMTkgMTE6 NTA6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZm ZXIiCjIzLzA4LzIwMTkgMTE6NTA6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBD bGVhbmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MDozNCAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwCjIzLzA4LzIwMTkgMTE6 NTA6MzQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MDoz NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcg L3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYwZjEgdGNwIDI+L3RtcC90Y3BkdW1w X2VuczE2MGYxLm91dCAmCjIzLzA4LzIwMTkgMTE6NTA6MzQgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiBbMV0gMTk0MDcKMjMvMDgvMjAxOSAxMTo1MDozNCAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkg MTE6NTA6MzQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1 MDozNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6 NTA6MzUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQg cHl0aG9uIGdudXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENh bid0IGltcG9ydCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAo KS4NCldBUk5JTkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBk ZWZhdWx0IHJvdXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjUw OjM3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL2Zs XzEucGNhcCIpCjIzLzA4LzIwMTkgMTE6NTA6MzcgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAbWzM0bRtbMW0KMjMvMDgvMjAxOSAxMTo1MDozNyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IHNlbmRwKHBrdCwgaWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9MSkKMjMvMDgv MjAxOSAxMTo1MDozNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBw YWNrZXRzLgoyMy8wOC8yMDE5IDExOjUwOjM5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogZXhpdCgpCjIzLzA4LzIwMTkgMTE6NTA6MzkgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo1MDozOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IGtpbGxhbGwgdGNwZHVtcAoyMy8wOC8yMDE5IDExOjUwOjM5ICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogWzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAt USBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMTYwZjEucGNhcCAtaSBlbnMxNjBmMSB0Y3AgMj4gL3Rt cC90Y3BkdW1wX2VuczE2MGYxLm91dAoyMy8wOC8yMDE5IDExOjUwOjQwICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5IDExOjUw OjQxICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVyCjIzLzA4 LzIwMTkgMTE6NTA6NDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBybSAtZiAvdG1w L3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcAoyMy8wOC8yMDE5IDExOjUwOjQyICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTA6NDIgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm81 MDMzNjUxMi5wY2FwIC1pIGVubzUwMzM2NTEyIHRjcCAyPi90bXAvdGNwZHVtcF9lbm81MDMzNjUx Mi5vdXQgJgoyMy8wOC8yMDE5IDExOjUwOjQyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogWzFdIDE5NDEzCjIzLzA4LzIwMTkgMTE6NTA6NDIgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5IDExOjUwOjQy ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTA6NDIgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDExOjUwOjQyICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBn bnVwbG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBv cnQgUHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJO SU5HOiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8gZGVmYXVsdCBy b3V0ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1MDo0NCAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9mbF8yLnBjYXAi KQoyMy8wOC8yMDE5IDExOjUwOjQ1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogG1sz NG0bWzFtCjIzLzA4LzIwMTkgMTE6NTA6NDUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBzZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6 NTA6NDUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4K MjMvMDgvMjAxOSAxMTo1MDo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQo KQoyMy8wOC8yMDE5IDExOjUwOjQ3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIz LzA4LzIwMTkgMTE6NTA6NDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxs IHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1MDo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcg L3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLnBjYXAgLWkgZW5vNTAzMzY1MTIgdGNwIDI+IC90bXAv dGNwZHVtcF9lbm81MDMzNjUxMi5vdXQKMjMvMDgvMjAxOSAxMTo1MDo0OCAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1 MDo0OCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8w OC8yMDE5IDExOjUwOjQ5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3Rt cC90Y3BkdW1wX2VuczIyNGYxLnBjYXAKMjMvMDgvMjAxOSAxMTo1MDo0OSAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjQ5ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMjI0 ZjEucGNhcCAtaSBlbnMyMjRmMSB0Y3AgMj4vdG1wL3RjcGR1bXBfZW5zMjI0ZjEub3V0ICYKMjMv MDgvMjAxOSAxMTo1MDo0OSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTQx OQoyMy8wOC8yMDE5IDExOjUwOjQ5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNo byAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1MDo0OSAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjQ5ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1MDo1MCAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFw cGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29u J3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91 dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2Vs Y29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTA6NTIgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvZmxfMy5wY2FwIikKMjMvMDgvMjAx OSAxMTo1MDo1MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8w OC8yMDE5IDExOjUwOjUyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0 LCBpZmFjZT0iZW5vMTY3Nzc5ODQiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjUwOjUyICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkg MTE6NTA6NTQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAx OSAxMTo1MDo1NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDEx OjUwOjU0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIz LzA4LzIwMTkgMTE6NTA6NTQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBE b25lICAgICAgICAgICAgICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVt cF9lbnMyMjRmMS5wY2FwIC1pIGVuczIyNGYxIHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5zMjI0ZjEu b3V0CjIzLzA4LzIwMTkgMTE6NTA6NTUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBl Y2hvICJDbGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6NTA6NTUgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MDo1NiAgICAg ICAgICAgICAgICAgVGVzdElQUGlwZWxpbmU6IFRlc3QgQ2FzZSB0ZXN0X2Zsb3dfcGlwZWxpbmUg UmVzdWx0IFBBU1NFRDoKMjMvMDgvMjAxOSAxMTo1MDo1NyAgICAgICAgICAgICBkdXQuMTAuMjQw LjE3Ni4xNTE6IF5DCjIzLzA4LzIwMTkgMTE6NTA6NTggICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MDo1OCAgICAgICAgICAgICAgICAgVGVzdElQUGlwZWxp bmU6IFRlc3QgQ2FzZSB0ZXN0X2wyZndkX3BpcGVsaW5lIEJlZ2luCjIzLzA4LzIwMTkgMTE6NTA6 NTggICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MDo1OCAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUwOjU4ICAgICAg ICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDI6MDAuMC8wMDAw OjA0OjAwLjAvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2wyZndkLmNsaQoyMy8w OC8yMDE5IDExOjUwOjU4ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIw MTkgMTE6NTA6NTggICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3Mv MDAwMDowMjowMC4xLzAwMDA6MDQ6MDAuMS8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBs ZXMvbDJmd2QuY2xpCjIzLzA4LzIwMTkgMTE6NTA6NTggICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MDo1OCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4x NTE6IHNlZCAtaSAtZSAncy8wMDAwOjA2OjAwLjAvMDAwMDowNDowMC4yLycgLi9leGFtcGxlcy9p cF9waXBlbGluZS9leGFtcGxlcy9sMmZ3ZC5jbGkKMjMvMDgvMjAxOSAxMTo1MDo1OCAgICAgICAg ICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUwOjU4ICAgICAgICAgICAg IGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDY6MDAuMS8wMDAwOjA0OjAw LjMvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2wyZndkLmNsaQoyMy8wOC8yMDE5 IDExOjUwOjU4ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6 NTA6NTggICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvZGVmYXVs dCBhY3Rpb24gZndkIHBvcnQgNC9kZWZhdWx0IGFjdGlvbiBmd2QgcG9ydCA0LycgLi9leGFtcGxl cy9pcF9waXBlbGluZS9leGFtcGxlcy9sMmZ3ZC5jbGkKMjMvMDgvMjAxOSAxMTo1MDo1OCAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUwOjU4ICAgICAgICAg ICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogLi9leGFtcGxlcy9pcF9waXBlbGluZS9idWlsZC9pcF9w aXBlbGluZSAtYyAweDMgLW4gNCAgLXcgMDAwMDowNDowMC4wIC13IDAwMDA6MDQ6MDAuMSAtdyAw MDAwOjA0OjAwLjIgLXcgMDAwMDowNDowMC4zIC0tIC1zIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUv ZXhhbXBsZXMvbDJmd2QuY2xpCjIzLzA4LzIwMTkgMTE6NTA6NTkgICAgICAgICAgICAgZHV0LjEw LjI0MC4xNzYuMTUxOiBFQUw6IERldGVjdGVkIDcyIGxjb3JlKHMpDQpFQUw6IERldGVjdGVkIDIg TlVNQSBub2Rlcw0KRUFMOiBNdWx0aS1wcm9jZXNzIHNvY2tldCAvdmFyL3J1bi9kcGRrL3J0ZS9t cF9zb2NrZXQNCkVBTDogU2VsZWN0ZWQgSU9WQSBtb2RlICdQQScNCkVBTDogMTAyNCBodWdlcGFn ZXMgb2Ygc2l6ZSAyMDk3MTUyIHJlc2VydmVkLCBidXQgbm8gbW91bnRlZCBodWdldGxiZnMgZm91 bmQgZm9yIHRoYXQgc2l6ZQ0KRUFMOiBQcm9iaW5nIFZGSU8gc3VwcG9ydC4uLg0KRUFMOiBWRklP IHN1cHBvcnQgaW5pdGlhbGl6ZWQNCkVBTDogUENJIGRldmljZSAwMDAwOjA0OjAwLjAgb24gTlVN QSBzb2NrZXQgMA0KRUFMOiAgIHByb2JlIGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6 IFBDSSBkZXZpY2UgMDAwMDowNDowMC4xIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBk cml2ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2aWNlIDAwMDA6MDQ6MDAuMiBv biBOVU1BIHNvY2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1NzIgbmV0X2k0MGUN CkVBTDogUENJIGRldmljZSAwMDAwOjA0OjAwLjMgb24gTlVNQSBzb2NrZXQgMA0KRUFMOiAgIHBy b2JlIGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpLTkk6IENhbiBub3Qgb3BlbiAvZGV2L2tu aQ0KOyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo7IENvcHlyaWdodChj KSAyMDEwLTIwMTggSW50ZWwgQ29ycG9yYXRpb24NCg0KOyBUaGUgcGlwZWxpbmUgYmVsb3cgaW1w bGVtZW50cyBhIHNpbXBsZSBwYXNzLXRocm91Z2ggY29ubmVjdGlvbiBiZXR3ZWVuIHRoZQ0KOyBp bnB1dCBwb3J0cyB0byB0aGUgb3V0cHV0IHBvcnRzLCBhcyBpbiB0aGlzIGRpYWdyYW06DQo7ICAg ICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fDQo7IExJTkswIFJYUTAgLS0tPnwuLi4uLi4u Li4uLi4uLi4ufC0tLT4gTElOSzEgVFhRMA0KOyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwNCjsgTElOSzEgUlhRMCAtLS0+fC4uLi4uLi4uLi4uLi4uLi58LS0tPiBMSU5LMCBUWFEw DQo7ICAgICAgICAgICAgICAgIHwgICAgUElQRUxJTkUwICAgfA0KOyBMSU5LMiBSWFEwIC0tLT58 Li4uLi4uLi4uLi4uLi4uLnwtLS0+IExJTkszIFRYUTANCjsgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICB8DQo7IExJTkszIFJYUTAgLS0tPnwuLi4uLi4uLi4uLi4uLi4ufC0tLT4gTElO SzIgVFhRMA0KOyAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX19fX3wNCjsNCg0KbWVtcG9v bCBNRU1QT09MMCBidWZmZXIgMjMwNCBwb29sIDMySyBjYWNoZSAyNTYgY3B1IDANCg0KbGluayBM SU5LMCBkZXYgMDAwMDowNDowMC4wIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlz Y3VvdXMgb24NCmxpbmsgTElOSzEgZGV2IDAwMDA6MDQ6MDAuMSByeHEgMSAxMjggTUVNUE9PTDAg dHhxIDEgNTEyIHByb21pc2N1b3VzIG9uDQpsaW5rIExJTksyIGRldiAwMDAwOjA0OjAwLjIgcnhx IDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KbGluayBMSU5LMyBkZXYg MDAwMDowNDowMC4zIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlzY3VvdXMgb24N Cg0KcGlwZWxpbmUgUElQRUxJTkUwIHBlcmlvZCAxMCBvZmZzZXRfcG9ydF9pZCAwIGNwdSAwDQoN CnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIGJzeiAzMiBsaW5rIExJTkswIHJ4cSAwDQpwaXBl bGluZSBQSVBFTElORTAgcG9ydCBpbiBic3ogMzIgbGluayBMSU5LMSByeHEgMA0KcGlwZWxpbmUg UElQRUxJTkUwIHBvcnQgaW4gYnN6IDMyIGxpbmsgTElOSzIgcnhxIDANCnBpcGVsaW5lIFBJUEVM SU5FMCBwb3J0IGluIGJzeiAzMiBsaW5rIExJTkszIHJ4cSAwDQoNCnBpcGVsaW5lIFBJUEVMSU5F MCBwb3J0IG91dCBic3ogMzIgbGluayBMSU5LMCB0eHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBv cnQgb3V0IGJzeiAzMiBsaW5rIExJTksxIHR4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBv dXQgYnN6IDMyIGxpbmsgTElOSzIgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBi c3ogMzIgbGluayBMSU5LMyB0eHEgMA0KDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgbWF0Y2gg c3R1Yg0KcGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIG1hdGNoIHN0dWINCnBpcGVsaW5lIFBJUEVM SU5FMCB0YWJsZSBtYXRjaCBzdHViDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgbWF0Y2ggc3R1 Yg0KDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiAwIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVM SU5FMCBwb3J0IGluIDEgdGFibGUgMQ0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gMiB0YWJs ZSAyDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiAzIHRhYmxlIDMNCg0KdGhyZWFkIDEgcGlw ZWxpbmUgUElQRUxJTkUwIGVuYWJsZQ0KDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgMCBydWxl IGFkZCBtYXRjaCBkZWZhdWx0IGFjdGlvbiBmd2QgcG9ydCAxDQpwaXBlbGluZSBQSVBFTElORTAg dGFibGUgMSBydWxlIGFkZCBtYXRjaCBkZWZhdWx0IGFjdGlvbiBmd2QgcG9ydCAwDQpwaXBlbGlu ZSBQSVBFTElORTAgdGFibGUgMiBydWxlIGFkZCBtYXRjaCBkZWZhdWx0IGFjdGlvbiBmd2QgcG9y dCAzCjIzLzA4LzIwMTkgMTE6NTA6NTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBy bSAtZiAvdG1wL3RjcGR1bXBfZW5zMTYwZjEucGNhcAoyMy8wOC8yMDE5IDExOjUwOjU5ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTA6NTkgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVt cF9lbnMxNjBmMS5wY2FwIC1pIGVuczE2MGYxIHRjcCAyPi90bXAvdGNwZHVtcF9lbnMxNjBmMS5v dXQgJgoyMy8wOC8yMDE5IDExOjUwOjU5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog WzFdIDE5NDI1CjIzLzA4LzIwMTkgMTE6NTA6NTkgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5IDExOjUxOjAwICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTE6MDAgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDExOjUxOjAwICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBnbnVw bG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBvcnQg UHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJOSU5H OiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8gZGVmYXVsdCByb3V0 ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1MTowMiAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9wdF8wLnBjYXAiKQoy My8wOC8yMDE5IDExOjUxOjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogG1szNG0b WzFtCjIzLzA4LzIwMTkgMTE6NTE6MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBz ZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6NTE6 MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4KMjMv MDgvMjAxOSAxMTo1MTowNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoy My8wOC8yMDE5IDExOjUxOjA0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4 LzIwMTkgMTE6NTE6MDQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxsIHRj cGR1bXAKMjMvMDgvMjAxOSAxMTo1MTowNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3Rt cC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYwZjEgdGNwIDI+IC90bXAvdGNwZHVtcF9l bnMxNjBmMS5vdXQKMjMvMDgvMjAxOSAxMTo1MTowNiAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1MTowNiAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjUx OjA3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2Vu bzE2Nzc3OTg0LnBjYXAKMjMvMDgvMjAxOSAxMTo1MTowNyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUxOjA3ICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNh cCAtaSBlbm8xNjc3Nzk4NCB0Y3AgMj4vdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0ICYKMjMv MDgvMjAxOSAxMTo1MTowNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTQz MQoyMy8wOC8yMDE5IDExOjUxOjA3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNo byAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1MTowNyAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUxOjA3ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1MTowOCAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFw cGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29u J3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91 dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2Vs Y29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTE6MTAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcHRfMS5wY2FwIikKMjMvMDgvMjAx OSAxMTo1MToxMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8w OC8yMDE5IDExOjUxOjEwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0 LCBpZmFjZT0iZW5zMTYwZjEiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjUxOjEwICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6 NTE6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAx MTo1MToxMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUx OjEyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4 LzIwMTkgMTE6NTE6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25l ICAgICAgICAgICAgICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9l bm8xNjc3Nzk4NC5wY2FwIC1pIGVubzE2Nzc3OTg0IHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5vMTY3 Nzc5ODQub3V0CjIzLzA4LzIwMTkgMTE6NTE6MTMgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6NTE6MTMgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MTox NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbnMy MjRmMS5wY2FwCjIzLzA4LzIwMTkgMTE6NTE6MTQgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo1MToxNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VuczIyNGYxLnBjYXAgLWkgZW5z MjI0ZjEgdGNwIDI+L3RtcC90Y3BkdW1wX2VuczIyNGYxLm91dCAmCjIzLzA4LzIwMTkgMTE6NTE6 MTQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0gMTk0MzcKMjMvMDgvMjAxOSAx MTo1MToxNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2Nh cHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTE6MTUgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MToxNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTE6MTUgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdudXBsb3Qgd3JhcHBlciAuIFdvbid0IGJl IGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9ydCBQeVguIFdvbid0IGJlIGFibGUgdG8g dXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5JTkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJ UHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJvdXRlPykNCldlbGNvbWUgdG8gU2NhcHkg KDIuMi4wKQoyMy8wOC8yMDE5IDExOjUxOjE3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogcGt0ID0gcmRwY2FwKCIvdG1wL3B0XzIucGNhcCIpCjIzLzA4LzIwMTkgMTE6NTE6MTcgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAbWzM0bRtbMW0KMjMvMDgvMjAxOSAxMTo1MTox NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNlbmRwKHBrdCwgaWZhY2U9ImVubzUw MzM2NTEyIiwgY291bnQ9MSkKMjMvMDgvMjAxOSAxMTo1MToxNyAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRzLgoyMy8wOC8yMDE5IDExOjUxOjE5ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhpdCgpCjIzLzA4LzIwMTkgMTE6NTE6MTkgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MToxOSAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNwZHVtcAoyMy8wOC8yMDE5IDExOjUx OjIwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdKyAgRG9uZSAgICAgICAgICAg ICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMjI0ZjEucGNh cCAtaSBlbnMyMjRmMSB0Y3AgMj4gL3RtcC90Y3BkdW1wX2VuczIyNGYxLm91dAoyMy8wOC8yMDE5 IDExOjUxOjIxICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcg YnVmZmVyIgoyMy8wOC8yMDE5IDExOjUxOjIxICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogQ2xlYW5pbmcgYnVmZmVyCjIzLzA4LzIwMTkgMTE6NTE6MjIgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBybSAtZiAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcAoyMy8wOC8y MDE5IDExOjUxOjIyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkg MTE6NTE6MjIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1R IGluIC13IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5wY2FwIC1pIGVubzUwMzM2NTEyIHRjcCAy Pi90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5vdXQgJgoyMy8wOC8yMDE5IDExOjUxOjIyICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdIDE5NDQzCjIzLzA4LzIwMTkgMTE6NTE6MjIg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0 LnR4dAoyMy8wOC8yMDE5IDExOjUxOjIyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog CjIzLzA4LzIwMTkgMTE6NTE6MjIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2Fw eQoyMy8wOC8yMDE5IDExOjUxOjIyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5G TzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBnbnVwbG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRv IHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBvcnQgUHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1 bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJOSU5HOiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0 aW5hdGlvbiA6OiAobm8gZGVmYXVsdCByb3V0ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkK MjMvMDgvMjAxOSAxMTo1MToyNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9 IHJkcGNhcCgiL3RtcC9wdF8zLnBjYXAiKQoyMy8wOC8yMDE5IDExOjUxOjI1ICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogG1szNG0bWzFtCjIzLzA4LzIwMTkgMTE6NTE6MjUgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzZW5kcChwa3QsIGlmYWNlPSJlbnMyMjRmMSIsIGNv dW50PTEpCjIzLzA4LzIwMTkgMTE6NTE6MjUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiAuDQpTZW50IDEgcGFja2V0cy4KMjMvMDgvMjAxOSAxMTo1MToyNyAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoyMy8wOC8yMDE5IDExOjUxOjI3ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTE6MjcgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBraWxsYWxsIHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1MToyNyAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRj cGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLnBjYXAgLWkgZW5v NTAzMzY1MTIgdGNwIDI+IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5vdXQKMjMvMDgvMjAxOSAx MTo1MToyOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1 ZmZlciIKMjMvMDgvMjAxOSAxMTo1MToyOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjUxOjI5ICAgICAgICAgICAgICAgICBUZXN0 SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3RfbDJmd2RfcGlwZWxpbmUgUmVzdWx0IFBBU1NFRDoK MjMvMDgvMjAxOSAxMTo1MTozMCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IF5DCjIz LzA4LzIwMTkgMTE6NTE6MzAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgv MjAxOSAxMTo1MTozMCAgICAgICAgICAgICAgICAgVGVzdElQUGlwZWxpbmU6IFRlc3QgQ2FzZSB0 ZXN0X3BmZHBka192Zl9sMmZ3ZF9waXBlbGluZSBCZWdpbgoyMy8wOC8yMDE5IDExOjUxOjMwICAg ICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTE6MzAgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MTozMCAgICAgICAgICAg ICBkdXQuMTAuMjQwLjE3Ni4xNTE6IG1vZHByb2JlIHZmaW8tcGNpCjIzLzA4LzIwMTkgMTE6NTE6 MzAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MTozMyAg ICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8w MDAwXDowNFw6MDIuMC92ZW5kb3IKMjMvMDgvMjAxOSAxMTo1MTozMyAgICAgICAgICAgICBkdXQu MTAuMjQwLjE3Ni4xNTE6IDB4ODA4NgoyMy8wOC8yMDE5IDExOjUxOjMzICAgICAgICAgICAgIGR1 dC4xMC4yNDAuMTc2LjE1MTogY2F0IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDBcOjA0XDowMi4w L2RldmljZQoyMy8wOC8yMDE5IDExOjUxOjM0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1 MTogMHgxNTRjCjIzLzA4LzIwMTkgMTE6NTE6MzQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYu MTUxOiBjYXQgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MDRcOjAyLjAvdmVuZG9yCjIzLzA4 LzIwMTkgMTE6NTE6MzQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAweDgwODYKMjMv MDgvMjAxOSAxMTo1MTozNCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IGNhdCAvc3lz L2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowNFw6MDIuMC9kZXZpY2UKMjMvMDgvMjAxOSAxMTo1MToz NCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IDB4MTU0YwoyMy8wOC8yMDE5IDExOjUx OjM3ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogY2F0IC9zeXMvYnVzL3BjaS9kZXZp Y2VzLzAwMDBcOjA0XDowNi4wL3ZlbmRvcgoyMy8wOC8yMDE5IDExOjUxOjM3ICAgICAgICAgICAg IGR1dC4xMC4yNDAuMTc2LjE1MTogMHg4MDg2CjIzLzA4LzIwMTkgMTE6NTE6MzcgICAgICAgICAg ICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBjYXQgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MDRc OjA2LjAvZGV2aWNlCjIzLzA4LzIwMTkgMTE6NTE6MzcgICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiAweDE1NGMKMjMvMDgvMjAxOSAxMTo1MTozNyAgICAgICAgICAgICBkdXQuMTAuMjQw LjE3Ni4xNTE6IGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowNFw6MDYuMC92ZW5kb3IK MjMvMDgvMjAxOSAxMTo1MTozNyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IDB4ODA4 NgoyMy8wOC8yMDE5IDExOjUxOjM3ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogY2F0 IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDBcOjA0XDowNi4wL2RldmljZQoyMy8wOC8yMDE5IDEx OjUxOjM3ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogMHgxNTRjCjIzLzA4LzIwMTkg MTE6NTE6NDEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBjYXQgL3N5cy9idXMvcGNp L2RldmljZXMvMDAwMFw6MDRcOjBhLjAvdmVuZG9yCjIzLzA4LzIwMTkgMTE6NTE6NDEgICAgICAg ICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAweDgwODYKMjMvMDgvMjAxOSAxMTo1MTo0MSAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAw XDowNFw6MGEuMC9kZXZpY2UKMjMvMDgvMjAxOSAxMTo1MTo0MSAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IDB4MTU0YwoyMy8wOC8yMDE5IDExOjUxOjQxICAgICAgICAgICAgIGR1dC4x MC4yNDAuMTc2LjE1MTogY2F0IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDBcOjA0XDowYS4wL3Zl bmRvcgoyMy8wOC8yMDE5IDExOjUxOjQxICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTog MHg4MDg2CjIzLzA4LzIwMTkgMTE6NTE6NDEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUx OiBjYXQgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MDRcOjBhLjAvZGV2aWNlCjIzLzA4LzIw MTkgMTE6NTE6NDEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAweDE1NGMKMjMvMDgv MjAxOSAxMTo1MTo0NCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IGNhdCAvc3lzL2J1 cy9wY2kvZGV2aWNlcy8wMDAwXDowNFw6MGUuMC92ZW5kb3IKMjMvMDgvMjAxOSAxMTo1MTo0NCAg ICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IDB4ODA4NgoyMy8wOC8yMDE5IDExOjUxOjQ0 ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogY2F0IC9zeXMvYnVzL3BjaS9kZXZpY2Vz LzAwMDBcOjA0XDowZS4wL2RldmljZQoyMy8wOC8yMDE5IDExOjUxOjQ0ICAgICAgICAgICAgIGR1 dC4xMC4yNDAuMTc2LjE1MTogMHgxNTRjCjIzLzA4LzIwMTkgMTE6NTE6NDQgICAgICAgICAgICAg ZHV0LjEwLjI0MC4xNzYuMTUxOiBjYXQgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MDRcOjBl LjAvdmVuZG9yCjIzLzA4LzIwMTkgMTE6NTE6NDQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYu MTUxOiAweDgwODYKMjMvMDgvMjAxOSAxMTo1MTo0NCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3 Ni4xNTE6IGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowNFw6MGUuMC9kZXZpY2UKMjMv MDgvMjAxOSAxMTo1MTo0NSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IDB4MTU0Ywoy My8wOC8yMDE5IDExOjUxOjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1p ICcvXmxpbmsgTElOSy9kJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2wyZndkLmNs aQoyMy8wOC8yMDE5IDExOjUxOjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIz LzA4LzIwMTkgMTE6NTE6NTAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkg Jy9tZW1wb29sIE1FTVBPT0wwL2FcbGluayBMSU5LMCBkZXYgMDAwMDowNDowMi4wIHJ4cSAxIDEy OCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlzY3VvdXMgb24nIC4vZXhhbXBsZXMvaXBfcGlwZWxp bmUvZXhhbXBsZXMvbDJmd2QuY2xpCjIzLzA4LzIwMTkgMTE6NTE6NTAgICAgICAgICAgICAgZHV0 LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MTo1MCAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IHNlZCAtaSAnL21lbXBvb2wgTUVNUE9PTDAvYVxsaW5rIExJTksxIGRldiAw MDAwOjA0OjA2LjAgcnhxIDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbicg Li9leGFtcGxlcy9pcF9waXBlbGluZS9leGFtcGxlcy9sMmZ3ZC5jbGkKMjMvMDgvMjAxOSAxMTo1 MTo1MSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUxOjUx ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pICcvbWVtcG9vbCBNRU1QT09M MC9hXGxpbmsgTElOSzIgZGV2IDAwMDA6MDQ6MGEuMCByeHEgMSAxMjggTUVNUE9PTDAgdHhxIDEg NTEyIHByb21pc2N1b3VzIG9uJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2wyZndk LmNsaQoyMy8wOC8yMDE5IDExOjUxOjUxICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTog CjIzLzA4LzIwMTkgMTE6NTE6NTEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQg LWkgJy9tZW1wb29sIE1FTVBPT0wwL2FcbGluayBMSU5LMyBkZXYgMDAwMDowNDowZS4wIHJ4cSAx IDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlzY3VvdXMgb24nIC4vZXhhbXBsZXMvaXBfcGlw ZWxpbmUvZXhhbXBsZXMvbDJmd2QuY2xpCjIzLzA4LzIwMTkgMTE6NTE6NTEgICAgICAgICAgICAg ZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1MTo1MSAgICAgICAgICAgICBkdXQu MTAuMjQwLjE3Ni4xNTE6IGxzY3B1IHwgZ3JlcCBTb2NrZXQgfCBhd2sgLUYgJyAnIHsncHJpbnQg JDInfQoyMy8wOC8yMDE5IDExOjUxOjUxICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTog MgoyMy8wOC8yMDE5IDExOjUxOjUxICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogLi94 ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtYyAweGYwIC1uIDQgIC13IDAw MDA6MDQ6MDAuMCAtdyAwMDAwOjA0OjAwLjEgLXcgMDAwMDowNDowMC4yIC13IDAwMDA6MDQ6MDAu MyAtLWZpbGUtcHJlZml4PXBmIC0tc29ja2V0LW1lbSAxMDI0LDEwMjQgLS0gLWkKMjMvMDgvMjAx OSAxMTo1MTo1MiAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IEVBTDogRGV0ZWN0ZWQg NzIgbGNvcmUocykNCkVBTDogRGV0ZWN0ZWQgMiBOVU1BIG5vZGVzDQpFQUw6IE11bHRpLXByb2Nl c3Mgc29ja2V0IC92YXIvcnVuL2RwZGsvcGYvbXBfc29ja2V0DQpFQUw6IFNlbGVjdGVkIElPVkEg bW9kZSAnUEEnDQpFQUw6IDEwMjQgaHVnZXBhZ2VzIG9mIHNpemUgMjA5NzE1MiByZXNlcnZlZCwg YnV0IG5vIG1vdW50ZWQgaHVnZXRsYmZzIGZvdW5kIGZvciB0aGF0IHNpemUNCkVBTDogUHJvYmlu ZyBWRklPIHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0IGluaXRpYWxpemVkDQpFQUw6IFBD SSBkZXZpY2UgMDAwMDowNDowMC4wIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2 ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2aWNlIDAwMDA6MDQ6MDAuMSBvbiBO VU1BIHNvY2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1NzIgbmV0X2k0MGUNCkVB TDogUENJIGRldmljZSAwMDAwOjA0OjAwLjIgb24gTlVNQSBzb2NrZXQgMA0KRUFMOiAgIHByb2Jl IGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4z IG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQw ZQ0KSW50ZXJhY3RpdmUtbW9kZSBzZWxlY3RlZA0KdGVzdHBtZDogY3JlYXRlIGEgbmV3IG1idWYg cG9vbCA8bWJ1Zl9wb29sX3NvY2tldF8wPjogbj0xNzE0NTYsIHNpemU9MjE3Niwgc29ja2V0PTAN CnRlc3RwbWQ6IHByZWZlcnJlZCBtZW1wb29sIG9wcyBzZWxlY3RlZDogcmluZ19tcF9tYw0KQ29u ZmlndXJpbmcgUG9ydCAwIChzb2NrZXQgMCkNCmk0MGVfcGZfaG9zdF9zZW5kX21zZ190b192Zigp OiBGYWlsIHRvIHNlbmQgbWVzc2FnZSB0byBWRiwgZXJyIDEyDQpQb3J0IDA6IDNDOkZEOkZFOkIy OjQzOjg4DQpDb25maWd1cmluZyBQb3J0IDEgKHNvY2tldCAwKQ0KaTQwZV9wZl9ob3N0X3NlbmRf bXNnX3RvX3ZmKCk6IEZhaWwgdG8gc2VuZCBtZXNzYWdlIHRvIFZGLCBlcnIgMTINClBvcnQgMTog M0M6RkQ6RkU6QjI6NDM6ODkNCkNvbmZpZ3VyaW5nIFBvcnQgMiAoc29ja2V0IDApDQppNDBlX3Bm X2hvc3Rfc2VuZF9tc2dfdG9fdmYoKTogRmFpbCB0byBzZW5kIG1lc3NhZ2UgdG8gVkYsIGVyciAx Mg0KUG9ydCAyOiAzQzpGRDpGRTpCMjo0Mzo4QQ0KQ29uZmlndXJpbmcgUG9ydCAzIChzb2NrZXQg MCkNCmk0MGVfcGZfaG9zdF9zZW5kX21zZ190b192ZigpOiBGYWlsIHRvIHNlbmQgbWVzc2FnZSB0 byBWRiwgZXJyIDEyDQpQb3J0IDM6IDNDOkZEOkZFOkIyOjQzOjhCDQpDaGVja2luZyBsaW5rIHN0 YXR1c2VzLi4uDQpEb25lCjIzLzA4LzIwMTkgMTE6NTE6NTIgICAgICAgICAgICAgZHV0LjEwLjI0 MC4xNzYuMTUxOiBzZXQgdmYgbWFjIGFkZHIgMCAwIDAwOjExOjIyOjMzOjQ0OjU1CjIzLzA4LzIw MTkgMTE6NTE6NTIgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZXQgdmYgbWFjIGFk ZHIgMCAwIDAwOjExOjIyOjMzOjQ0OjU1DQoyMy8wOC8yMDE5IDExOjUxOjUyICAgICAgICAgICAg IGR1dC4xMC4yNDAuMTc2LjE1MTogc2V0IHZmIG1hYyBhZGRyIDEgMCAwMDoxMToyMjozMzo0NDo1 NgoyMy8wOC8yMDE5IDExOjUxOjUyICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2V0 IHZmIG1hYyBhZGRyIDEgMCAwMDoxMToyMjozMzo0NDo1Ng0KMjMvMDgvMjAxOSAxMTo1MTo1MiAg ICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNldCB2ZiBtYWMgYWRkciAyIDAgMDA6MTE6 MjI6MzM6NDQ6NTcKMjMvMDgvMjAxOSAxMTo1MTo1MyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3 Ni4xNTE6IHNldCB2ZiBtYWMgYWRkciAyIDAgMDA6MTE6MjI6MzM6NDQ6NTcNCjIzLzA4LzIwMTkg MTE6NTE6NTMgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZXQgdmYgbWFjIGFkZHIg MyAwIDAwOjExOjIyOjMzOjQ0OjU4CjIzLzA4LzIwMTkgMTE6NTE6NTMgICAgICAgICAgICAgZHV0 LjEwLjI0MC4xNzYuMTUxOiBzZXQgdmYgbWFjIGFkZHIgMyAwIDAwOjExOjIyOjMzOjQ0OjU4DQoy My8wOC8yMDE5IDExOjUxOjU3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYg L3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAKMjMvMDgvMjAxOSAxMTo1MTo1NyAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUxOjU3ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5z MTYwZjEucGNhcCAtaSBlbnMxNjBmMSB0Y3AgMj4vdG1wL3RjcGR1bXBfZW5zMTYwZjEub3V0ICYK MjMvMDgvMjAxOSAxMTo1MTo1NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAx OTQ0OQoyMy8wOC8yMDE5IDExOjUxOjU3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog ZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1MTo1NyAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUxOjU3ICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1MTo1OCAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3 cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4g V29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8g cm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0K V2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTI6MDAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcHRfMC5wY2FwIikKMjMvMDgv MjAxOSAxMTo1MjowMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoy My8wOC8yMDE5IDExOjUyOjAwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAo cGt0LCBpZmFjZT0iZW5vMTY3Nzc5ODQiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjUyOjAwICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIw MTkgMTE6NTI6MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgv MjAxOSAxMTo1MjowMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5 IDExOjUyOjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1w CjIzLzA4LzIwMTkgMTE6NTI6MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0r ICBEb25lICAgICAgICAgICAgICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNw ZHVtcF9lbnMxNjBmMS5wY2FwIC1pIGVuczE2MGYxIHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5zMTYw ZjEub3V0CjIzLzA4LzIwMTkgMTE6NTI6MDMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6NTI6MDMgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MjowNCAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbm8xNjc3 Nzk4NC5wY2FwCjIzLzA4LzIwMTkgMTE6NTI6MDQgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo1MjowNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAgLWkg ZW5vMTY3Nzc5ODQgdGNwIDI+L3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0Lm91dCAmCjIzLzA4LzIw MTkgMTE6NTI6MDQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0gMTk0NTUKMjMv MDgvMjAxOSAxMTo1MjowNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gLW4g JycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTI6MDUgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MjowNSAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTI6MDUgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdudXBsb3Qgd3JhcHBlciAu IFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9ydCBQeVguIFdvbid0IGJl IGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5JTkc6IE5vIHJvdXRlIGZv dW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJvdXRlPykNCldlbGNvbWUg dG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjUyOjA3ICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL3B0XzEucGNhcCIpCjIzLzA4LzIwMTkgMTE6 NTI6MDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAbWzM0bRtbMW0KMjMvMDgvMjAx OSAxMTo1MjowNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNlbmRwKHBrdCwgaWZh Y2U9ImVuczE2MGYxIiwgY291bnQ9MSkKMjMvMDgvMjAxOSAxMTo1MjowNyAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRzLgoyMy8wOC8yMDE5IDExOjUyOjA5 ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhpdCgpCjIzLzA4LzIwMTkgMTE6NTI6 MDkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MjowOSAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNwZHVtcAoyMy8wOC8yMDE5 IDExOjUyOjEwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdKyAgRG9uZSAgICAg ICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vMTY3 Nzc5ODQucGNhcCAtaSBlbm8xNjc3Nzk4NCB0Y3AgMj4gL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0 Lm91dAoyMy8wOC8yMDE5IDExOjUyOjExICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog ZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5IDExOjUyOjExICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVyCjIzLzA4LzIwMTkgMTE6NTI6MTIgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBybSAtZiAvdG1wL3RjcGR1bXBfZW5zMjI0ZjEu cGNhcAoyMy8wOC8yMDE5IDExOjUyOjEyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog CjIzLzA4LzIwMTkgMTE6NTI6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3Bk dW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5wY2FwIC1pIGVuczIyNGYx IHRjcCAyPi90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQgJgoyMy8wOC8yMDE5IDExOjUyOjEyICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdIDE5NDYyCjIzLzA4LzIwMTkgMTE6NTI6 MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVz dWx0LnR4dAoyMy8wOC8yMDE5IDExOjUyOjEyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogCjIzLzA4LzIwMTkgMTE6NTI6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBz Y2FweQoyMy8wOC8yMDE5IDExOjUyOjEzICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog SU5GTzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBnbnVwbG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxl IHRvIHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBvcnQgUHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBw c2R1bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJOSU5HOiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBk ZXN0aW5hdGlvbiA6OiAobm8gZGVmYXVsdCByb3V0ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIu MCkKMjMvMDgvMjAxOSAxMTo1MjoxNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBr dCA9IHJkcGNhcCgiL3RtcC9wdF8yLnBjYXAiKQoyMy8wOC8yMDE5IDExOjUyOjE1ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RlcjogG1szNG0bWzFtCjIzLzA4LzIwMTkgMTE6NTI6MTUgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzZW5kcChwa3QsIGlmYWNlPSJlbm81MDMzNjUx MiIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6NTI6MTUgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4KMjMvMDgvMjAxOSAxMTo1MjoxNyAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoyMy8wOC8yMDE5IDExOjUyOjE3ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTI6MTcgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxsIHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1MjoxNyAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAg ICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VuczIyNGYxLnBjYXAgLWkg ZW5zMjI0ZjEgdGNwIDI+IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQKMjMvMDgvMjAxOSAxMTo1 MjoxOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZl ciIKMjMvMDgvMjAxOSAxMTo1MjoxOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENs ZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjUyOjE5ICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLnBjYXAKMjMvMDgvMjAxOSAx MTo1MjoxOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUy OjE5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAt dyAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcCAtaSBlbm81MDMzNjUxMiB0Y3AgMj4vdG1w L3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0ICYKMjMvMDgvMjAxOSAxMTo1MjoxOSAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTQ2OAoyMy8wOC8yMDE5IDExOjUyOjE5ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQK MjMvMDgvMjAxOSAxMTo1MjoxOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8w OC8yMDE5IDExOjUyOjE5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMv MDgvMjAxOSAxMTo1MjoyMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENh bid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90 Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkg b3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRp b24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4 LzIwMTkgMTE6NTI6MjIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBj YXAoIi90bXAvcHRfMy5wY2FwIikKMjMvMDgvMjAxOSAxMTo1MjoyMiAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjUyOjIyICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5zMjI0ZjEiLCBjb3VudD0x KQoyMy8wOC8yMDE5IDExOjUyOjIyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogLg0K U2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTI6MjQgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1MjoyNCAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUyOjI0ICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTI6MjQgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAgICAgICAgICB0Y3BkdW1w IC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5wY2FwIC1pIGVubzUwMzM2 NTEyIHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0CjIzLzA4LzIwMTkgMTE6NTI6 MjUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIi CjIzLzA4LzIwMTkgMTE6NTI6MjYgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVh bmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1MjozMyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3 Ni4xNTE6IHF1aXQKMjMvMDgvMjAxOSAxMTo1MjozNSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3 Ni4xNTE6IHF1aXQNDQoNClN0b3BwaW5nIHBvcnQgMC4uLg0KU3RvcHBpbmcgcG9ydHMuLi4NCkRv bmUNCg0KU3RvcHBpbmcgcG9ydCAxLi4uDQpTdG9wcGluZyBwb3J0cy4uLg0KaTQwZV9wZl9ob3N0 X3NlbmRfbXNnX3RvX3ZmKCk6IEZhaWwgdG8gc2VuZCBtZXNzYWdlIHRvIFZGLCBlcnIgMTINCg0K UG9ydCAwOiBsaW5rIHN0YXRlIGNoYW5nZSBldmVudA0KRG9uZQ0KDQpTdG9wcGluZyBwb3J0IDIu Li4NClN0b3BwaW5nIHBvcnRzLi4uDQppNDBlX3BmX2hvc3Rfc2VuZF9tc2dfdG9fdmYoKTogRmFp bCB0byBzZW5kIG1lc3NhZ2UgdG8gVkYsIGVyciAxMg0KDQpQb3J0IDE6IGxpbmsgc3RhdGUgY2hh bmdlIGV2ZW50DQpEb25lDQoNClN0b3BwaW5nIHBvcnQgMy4uLg0KU3RvcHBpbmcgcG9ydHMuLi4N Cmk0MGVfcGZfaG9zdF9zZW5kX21zZ190b192ZigpOiBGYWlsIHRvIHNlbmQgbWVzc2FnZSB0byBW RiwgZXJyIDEyDQoNClBvcnQgMjogbGluayBzdGF0ZSBjaGFuZ2UgZXZlbnQNCkRvbmUNCg0KU2h1 dHRpbmcgZG93biBwb3J0IDAuLi4NCkNsb3NpbmcgcG9ydHMuLi4NCmk0MGVfcGZfaG9zdF9zZW5k X21zZ190b192ZigpOiBGYWlsIHRvIHNlbmQgbWVzc2FnZSB0byBWRiwgZXJyIDEyDQoNClBvcnQg MzogbGluayBzdGF0ZSBjaGFuZ2UgZXZlbnQNCkRvbmUNCg0KU2h1dHRpbmcgZG93biBwb3J0IDEu Li4NCkNsb3NpbmcgcG9ydHMuLi4NCkRvbmUNCg0KU2h1dHRpbmcgZG93biBwb3J0IDIuLi4NCkNs b3NpbmcgcG9ydHMuLi4NCkRvbmUNCg0KU2h1dHRpbmcgZG93biBwb3J0IDMuLi4NCkNsb3Npbmcg cG9ydHMuLi4NCkRvbmUNCg0KQnllLi4uCjIzLzA4LzIwMTkgMTE6NTI6NTMgICAgICAgICAgICAg ICAgIFRlc3RJUFBpcGVsaW5lOiBUZXN0IENhc2UgdGVzdF9wZmRwZGtfdmZfbDJmd2RfcGlwZWxp bmUgUmVzdWx0IFBBU1NFRDoKMjMvMDgvMjAxOSAxMTo1Mjo1NCAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IF5DCjIzLzA4LzIwMTkgMTE6NTI6NTQgICAgICAgICAgICAgZHV0LjEwLjI0 MC4xNzYuMTUxOiBeQwoyMy8wOC8yMDE5IDExOjUyOjU0ICAgICAgICAgICAgICAgICBUZXN0SVBQ aXBlbGluZTogVGVzdCBDYXNlIHRlc3RfcGZrZXJuZWxfdmZfbDJmd2RfcGlwZWxpbmUgQmVnaW4K MjMvMDgvMjAxOSAxMTo1Mjo1NCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8w OC8yMDE5IDExOjUyOjU0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIw MTkgMTE6NTI6NTQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBtb2Rwcm9iZSB2Zmlv LXBjaQoyMy8wOC8yMDE5IDExOjUyOjU0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTog CjIzLzA4LzIwMTkgMTE6NTM6MTMgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBpcCBs aW5rIHNldCBlbnMyNjFmMCB2ZiAwIG1hYyAwMDoxMToyMjozMzo0NDo1NQoyMy8wOC8yMDE5IDEx OjUzOjEzICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6 MTMgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBpcCBsaW5rIHNldCBlbnMyNjFmMCB2 ZiAwIHNwb29mY2hrIG9mZgoyMy8wOC8yMDE5IDExOjUzOjE0ICAgICAgICAgICAgIGR1dC4xMC4y NDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MTQgICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiBpcCBsaW5rIHNldCBlbnMyNjFmMSB2ZiAwIG1hYyAwMDoxMToyMjozMzo0NDo1Ngoy My8wOC8yMDE5IDExOjUzOjE0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4 LzIwMTkgMTE6NTM6MTQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBpcCBsaW5rIHNl dCBlbnMyNjFmMSB2ZiAwIHNwb29mY2hrIG9mZgoyMy8wOC8yMDE5IDExOjUzOjE0ICAgICAgICAg ICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MTQgICAgICAgICAgICAg ZHV0LjEwLjI0MC4xNzYuMTUxOiBpcCBsaW5rIHNldCBlbnMyNjFmMiB2ZiAwIG1hYyAwMDoxMToy MjozMzo0NDo1NwoyMy8wOC8yMDE5IDExOjUzOjE0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MTQgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUx OiBpcCBsaW5rIHNldCBlbnMyNjFmMiB2ZiAwIHNwb29mY2hrIG9mZgoyMy8wOC8yMDE5IDExOjUz OjE0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MTQg ICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBpcCBsaW5rIHNldCBlbnMyNjFmMyB2ZiAw IG1hYyAwMDoxMToyMjozMzo0NDo1OAoyMy8wOC8yMDE5IDExOjUzOjE0ICAgICAgICAgICAgIGR1 dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MTQgICAgICAgICAgICAgZHV0LjEw LjI0MC4xNzYuMTUxOiBpcCBsaW5rIHNldCBlbnMyNjFmMyB2ZiAwIHNwb29mY2hrIG9mZgoyMy8w OC8yMDE5IDExOjUzOjE1ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIw MTkgMTE6NTM6MjAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgJy9ebGlu ayBMSU5LL2QnIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvbDJmd2QuY2xpCjIzLzA4 LzIwMTkgMTE6NTM6MjAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAx OSAxMTo1MzoyMCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNlZCAtaSAnL21lbXBv b2wgTUVNUE9PTDAvYVxsaW5rIExJTkswIGRldiAwMDAwOjA0OjAyLjAgcnhxIDEgMTI4IE1FTVBP T0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbicgLi9leGFtcGxlcy9pcF9waXBlbGluZS9leGFt cGxlcy9sMmZ3ZC5jbGkKMjMvMDgvMjAxOSAxMTo1MzoyMCAgICAgICAgICAgICBkdXQuMTAuMjQw LjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUzOjIwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogc2VkIC1pICcvbWVtcG9vbCBNRU1QT09MMC9hXGxpbmsgTElOSzEgZGV2IDAwMDA6MDQ6 MDYuMCByeHEgMSAxMjggTUVNUE9PTDAgdHhxIDEgNTEyIHByb21pc2N1b3VzIG9uJyAuL2V4YW1w bGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL2wyZndkLmNsaQoyMy8wOC8yMDE5IDExOjUzOjIwICAg ICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTM6MjAgICAgICAg ICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgJy9tZW1wb29sIE1FTVBPT0wwL2FcbGlu ayBMSU5LMiBkZXYgMDAwMDowNDowYS4wIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJv bWlzY3VvdXMgb24nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvbDJmd2QuY2xpCjIz LzA4LzIwMTkgMTE6NTM6MjAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgv MjAxOSAxMTo1MzoyMCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNlZCAtaSAnL21l bXBvb2wgTUVNUE9PTDAvYVxsaW5rIExJTkszIGRldiAwMDAwOjA0OjBlLjAgcnhxIDEgMTI4IE1F TVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbicgLi9leGFtcGxlcy9pcF9waXBlbGluZS9l eGFtcGxlcy9sMmZ3ZC5jbGkKMjMvMDgvMjAxOSAxMTo1MzoyMCAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjUzOjI0ICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAKMjMvMDgvMjAxOSAxMTo1 MzoyNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUzOjI0 ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAv dG1wL3RjcGR1bXBfZW5zMTYwZjEucGNhcCAtaSBlbnMxNjBmMSB0Y3AgMj4vdG1wL3RjcGR1bXBf ZW5zMTYwZjEub3V0ICYKMjMvMDgvMjAxOSAxMTo1MzoyNCAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IFsxXSAxOTQ3NgoyMy8wOC8yMDE5IDExOjUzOjI0ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAx MTo1MzoyNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUz OjI0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1 MzoyNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBw eXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2Fu J3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgp Lg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRl ZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTM6 MjcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcHRf MC5wY2FwIikKMjMvMDgvMjAxOSAxMTo1MzoyNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjUzOjI3ICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5vMTY3Nzc5ODQiLCBjb3VudD0xKQoyMy8wOC8y MDE5IDExOjUzOjI3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogLg0KU2VudCAxIHBh Y2tldHMuCjIzLzA4LzIwMTkgMTE6NTM6MjkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1MzoyOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IAoyMy8wOC8yMDE5IDExOjUzOjI5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog a2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTM6MjkgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAgICAgICAgICB0Y3BkdW1wIC1uIC1lIC1R IGluIC13IC90bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwIC1pIGVuczE2MGYxIHRjcCAyPiAvdG1w L3RjcGR1bXBfZW5zMTYwZjEub3V0CjIzLzA4LzIwMTkgMTE6NTM6MzAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6NTM6 MzEgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMvMDgv MjAxOSAxMTo1MzozMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90bXAv dGNwZHVtcF9lbm8xNjc3Nzk4NC5wY2FwCjIzLzA4LzIwMTkgMTE6NTM6MzIgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MzozMiAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VubzE2 Nzc3OTg0LnBjYXAgLWkgZW5vMTY3Nzc5ODQgdGNwIDI+L3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0 Lm91dCAmCjIzLzA4LzIwMTkgMTE6NTM6MzIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBbMV0gMTk0ODIKMjMvMDgvMjAxOSAxMTo1MzozMiAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTM6MzIg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1MzozMiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTM6MzIgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdu dXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9y dCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5J Tkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJv dXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjUzOjM0ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL3B0XzEucGNhcCIp CjIzLzA4LzIwMTkgMTE6NTM6MzUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAbWzM0 bRtbMW0KMjMvMDgvMjAxOSAxMTo1MzozNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IHNlbmRwKHBrdCwgaWZhY2U9ImVuczE2MGYxIiwgY291bnQ9MSkKMjMvMDgvMjAxOSAxMTo1Mzoz NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRzLgoyMy8w OC8yMDE5IDExOjUzOjM3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhpdCgpCjIz LzA4LzIwMTkgMTE6NTM6MzcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgv MjAxOSAxMTo1MzozNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNw ZHVtcAoyMy8wOC8yMDE5IDExOjUzOjM3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog WzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1w L3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcCAtaSBlbm8xNjc3Nzk4NCB0Y3AgMj4gL3RtcC90Y3Bk dW1wX2VubzE2Nzc3OTg0Lm91dAoyMy8wOC8yMDE5IDExOjUzOjM4ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5IDExOjUzOjM4 ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVyCjIzLzA4LzIw MTkgMTE6NTM6MzkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBybSAtZiAvdG1wL3Rj cGR1bXBfZW5zMjI0ZjEucGNhcAoyMy8wOC8yMDE5IDExOjUzOjM5ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTM6MzkgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5w Y2FwIC1pIGVuczIyNGYxIHRjcCAyPi90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQgJgoyMy8wOC8y MDE5IDExOjUzOjM5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdIDE5NDg4CjIz LzA4LzIwMTkgMTE6NTM6MzkgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvIC1u ICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5IDExOjUzOjM5ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTM6MzkgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDExOjUzOjQwICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0IHB5dGhvbiBnbnVwbG90IHdyYXBwZXIg LiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBDYW4ndCBpbXBvcnQgUHlYLiBXb24ndCBi ZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1wKCkuDQpXQVJOSU5HOiBObyByb3V0ZSBm b3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8gZGVmYXVsdCByb3V0ZT8pDQpXZWxjb21l IHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1Mzo0MiAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9wdF8yLnBjYXAiKQoyMy8wOC8yMDE5IDEx OjUzOjQyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogG1szNG0bWzFtCjIzLzA4LzIw MTkgMTE6NTM6NDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzZW5kcChwa3QsIGlm YWNlPSJlbm81MDMzNjUxMiIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6NTM6NDIgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4KMjMvMDgvMjAxOSAxMTo1 Mzo0NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoyMy8wOC8yMDE5IDEx OjUzOjQ0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTM6 NDQgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxsIHRjcGR1bXAKMjMvMDgv MjAxOSAxMTo1Mzo0NCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSsgIERvbmUg ICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2Vu czIyNGYxLnBjYXAgLWkgZW5zMjI0ZjEgdGNwIDI+IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQK MjMvMDgvMjAxOSAxMTo1Mzo0NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8g IkNsZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1Mzo0NSAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjUzOjQ2ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLnBj YXAKMjMvMDgvMjAxOSAxMTo1Mzo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoy My8wOC8yMDE5IDExOjUzOjQ3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVt cCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcCAtaSBlbm81MDMz NjUxMiB0Y3AgMj4vdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0ICYKMjMvMDgvMjAxOSAxMTo1 Mzo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTQ5NAoyMy8wOC8yMDE5 IDExOjUzOjQ3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBz Y2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1Mzo0NyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUzOjQ3ICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1Mzo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3Qg YmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0 byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9y IElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2Fw eSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTM6NDkgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcHRfMy5wY2FwIikKMjMvMDgvMjAxOSAxMTo1Mzo0OSAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjUz OjQ5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5z MjI0ZjEiLCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjUzOjUwICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTM6NTIgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1Mzo1MiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjUzOjUyICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTM6 NTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAg ICAgICAgICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5w Y2FwIC1pIGVubzUwMzM2NTEyIHRjcCAyPiAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0CjIz LzA4LzIwMTkgMTE6NTM6NTMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJD bGVhbmluZyBidWZmZXIiCjIzLzA4LzIwMTkgMTE6NTM6NTMgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiBDbGVhbmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1NDowMCAgICAgICAgICAg ICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHF1aXQKMjMvMDgvMjAxOSAxMTo1NDowMSAgICAgICAgICAg ICBkdXQuMTAuMjQwLjE3Ni4xNTE6IGJhc2g6IHF1aXQ6IGNvbW1hbmQgbm90IGZvdW5kLi4uDQpT aW1pbGFyIGNvbW1hbmQgaXM6ICdxdW90JwoyMy8wOC8yMDE5IDExOjU0OjI2ICAgICAgICAgICAg ICAgICBUZXN0SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3RfcGZrZXJuZWxfdmZfbDJmd2RfcGlw ZWxpbmUgUmVzdWx0IFBBU1NFRDoKMjMvMDgvMjAxOSAxMTo1NDoyNyAgICAgICAgICAgICBkdXQu MTAuMjQwLjE3Ni4xNTE6IF5DCjIzLzA4LzIwMTkgMTE6NTQ6MjcgICAgICAgICAgICAgZHV0LjEw LjI0MC4xNzYuMTUxOiBeQwoyMy8wOC8yMDE5IDExOjU0OjI3ICAgICAgICAgICAgICAgICBUZXN0 SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3RfcGlwZWxpbmVfd2l0aF90YXAgQmVnaW4KMjMvMDgv MjAxOSAxMTo1NDoyNyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5 IDExOjU0OjI3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6 NTQ6MjcgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAwMDow MjowMC4wLzAwMDA6MDQ6MDAuMC8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvdGFw LmNsaQoyMy8wOC8yMDE5IDExOjU0OjI3ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTog CjIzLzA4LzIwMTkgMTE6NTQ6MjcgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQg LWkgLWUgJ3MvMDAwMDowMjowMC4xLzAwMDA6MDQ6MDAuMS8nIC4vZXhhbXBsZXMvaXBfcGlwZWxp bmUvZXhhbXBsZXMvdGFwLmNsaQoyMy8wOC8yMDE5IDExOjU0OjI3ICAgICAgICAgICAgIGR1dC4x MC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTQ6MjcgICAgICAgICAgICAgZHV0LjEwLjI0 MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAwMDowNjowMC4wLzAwMDA6MDQ6MDAuMi8nIC4vZXhh bXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvdGFwLmNsaQoyMy8wOC8yMDE5IDExOjU0OjI3ICAg ICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTQ6MjcgICAgICAg ICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAwMDowNjowMC4xLzAwMDA6 MDQ6MDAuMy8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvdGFwLmNsaQoyMy8wOC8y MDE5IDExOjU0OjI4ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkg MTE6NTQ6MjggICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvZGVm YXVsdCBhY3Rpb24gZndkIHBvcnQgNC9kZWZhdWx0IGFjdGlvbiBmd2QgcG9ydCA0LycgLi9leGFt cGxlcy9pcF9waXBlbGluZS9leGFtcGxlcy90YXAuY2xpCjIzLzA4LzIwMTkgMTE6NTQ6MjggICAg ICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1NDoyOCAgICAgICAg ICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvYnVpbGQvaXBf cGlwZWxpbmUgLWMgMHgzIC1uIDQgIC13IDAwMDA6MDQ6MDAuMCAtdyAwMDAwOjA0OjAwLjEgLS0g LXMgLi9leGFtcGxlcy9pcF9waXBlbGluZS9leGFtcGxlcy90YXAuY2xpCjIzLzA4LzIwMTkgMTE6 NTQ6MjggICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBFQUw6IERldGVjdGVkIDcyIGxj b3JlKHMpDQpFQUw6IERldGVjdGVkIDIgTlVNQSBub2Rlcw0KRUFMOiBNdWx0aS1wcm9jZXNzIHNv Y2tldCAvdmFyL3J1bi9kcGRrL3J0ZS9tcF9zb2NrZXQNCkVBTDogU2VsZWN0ZWQgSU9WQSBtb2Rl ICdQQScNCkVBTDogMTAyNCBodWdlcGFnZXMgb2Ygc2l6ZSAyMDk3MTUyIHJlc2VydmVkLCBidXQg bm8gbW91bnRlZCBodWdldGxiZnMgZm91bmQgZm9yIHRoYXQgc2l6ZQ0KRUFMOiBQcm9iaW5nIFZG SU8gc3VwcG9ydC4uLg0KRUFMOiBWRklPIHN1cHBvcnQgaW5pdGlhbGl6ZWQNCkVBTDogUENJIGRl dmljZSAwMDAwOjA0OjAwLjAgb24gTlVNQSBzb2NrZXQgMA0KRUFMOiAgIHByb2JlIGRyaXZlcjog ODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4xIG9uIE5VTUEg c29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KS05JOiBD YW4gbm90IG9wZW4gL2Rldi9rbmkNCjsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNs YXVzZQ0KOyBDb3B5cmlnaHQoYykgMjAxMC0yMDE4IEludGVsIENvcnBvcmF0aW9uDQoNCjsgICAg ICAgICAgICAgICAgIF9fX19fX19fX19fX19fXyAgICAgICAgICBfX19fX19fX19fX19fX19fX19f X19fDQo7ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICBUQVAwICB8ICAgICAgICAg ICAgICAgICAgICAgIHwNCjsgTElOSzAgUlhRMCAtLS0+fC4uLi4uLi4uLi4uLi4uLnwtLS0tLS0t PnwtLSsgICAgICAgICAgICAgICAgICAgfA0KOyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgfCAgVEFQMSAgfCAgfCBicjAgICAgICAgICAgICAgICB8DQo7IExJTksxIFRYUTAgPC0tLXwu Li4uLi4uLi4uLi4uLi58PC0tLS0tLS18PC0rICAgICAgICAgICAgICAgICAgIHwNCjsgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgIExpbnV4IEtlcm5lbCAgICAg fA0KOyAgICAgICAgICAgICAgICB8ICAgUElQRUxJTkUwICAgfCAgICAgICAgfCAgICAgTmV0d29y ayBTdGFjayAgICB8DQo7ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICBUQVAxICB8 ICAgICAgICAgICAgICAgICAgICAgIHwNCjsgTElOSzEgUlhRMCAtLS0+fC4uLi4uLi4uLi4uLi4u LnwtLS0tLS0tPnwtLSsgICAgICAgICAgICAgICAgICAgfA0KOyAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgfCAgVEFQMCAgfCAgfCBicjAgICAgICAgICAgICAgICB8DQo7IExJTkswIFRY UTAgPC0tLXwuLi4uLi4uLi4uLi4uLi58PC0tLS0tLS18PC0rICAgICAgICAgICAgICAgICAgIHwN CjsgICAgICAgICAgICAgICAgfF9fX19fX19fX19fX19fX3wgICAgICAgIHxfX19fX19fX19fX19f X19fX19fX19ffA0KOw0KOyBDb25maWd1cmUgTGludXgga2VybmVsIGJyaWRnZSBiZXR3ZWVuIFRB UDAgYW5kIFRBUDEgaW50ZXJmYWNlczoNCjsgICAgW0xpbnV4XSQgYnJjdGwgYWRkYnIgYnIwDQo7 ICAgIFtMaW51eF0kIGJyY3RsIGFkZGlmIGJyMCBUQVAwDQo7ICAgIFtMaW51eF0kIGJyY3RsIGFk ZGlmIGJyMCBUQVAxDQo7ICAgIFtMaW51eF0kIGlmY29uZmlnIFRBUDAgdXANCjsgICAgW0xpbnV4 XSQgaWZjb25maWcgVEFQMSB1cA0KOyAgICBbTGludXhdJCBpZmNvbmZpZyBicjAgdXANCjsNCjsg TW9uaXRvciBwYWNrZXQgZm9yd2FyZGluZyBwZXJmb3JtZWQgYnkgTGludXgga2VybmVsIGJldHdl ZW4gVEFQMCBhbmQgVEFQMToNCjsgICAgW0xpbnV4XSQgdGNwZHVtcCAtaSBUQVAwDQo7ICAgIFtM aW51eF0kIHRjcGR1bXAgLWkgVEFQMQ0KDQptZW1wb29sIE1FTVBPT0wwIGJ1ZmZlciAyMzA0IHBv b2wgMzJLIGNhY2hlIDI1NiBjcHUgMA0KDQpsaW5rIExJTkswIGRldiAwMDAwOjA0OjAwLjAgcnhx IDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KbGluayBMSU5LMSBkZXYg MDAwMDowNDowMC4xIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlzY3VvdXMgb24N Cg0KdGFwIFRBUDANCnRhcCBUQVAxDQoNCnRhYmxlIGFjdGlvbiBwcm9maWxlIEFQMCBpcHY0IG9m ZnNldCAyNzAgZndkDQoNCnBpcGVsaW5lIFBJUEVMSU5FMCBwZXJpb2QgMTAgb2Zmc2V0X3BvcnRf aWQgMCBjcHUgMA0KDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiBic3ogMzIgbGluayBMSU5L MCByeHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gYnN6IDMyIHRhcCBUQVAxIG1lbXBv b2wgTUVNUE9PTDAgbXR1IDE1MDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIGJzeiAzMiBs aW5rIExJTksxIHJ4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiBic3ogMzIgdGFwIFRB UDAgbWVtcG9vbCBNRU1QT09MMCBtdHUgMTUwMA0KDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBv dXQgYnN6IDMyIHRhcCBUQVAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIGxp bmsgTElOSzEgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBic3ogMzIgdGFwIFRB UDENCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBic3ogMzIgbGluayBMSU5LMCB0eHEgMA0K DQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUgbWF0Y2ggc3R1YiBhY3Rpb24gQVAwDQpwaXBlbGlu ZSBQSVBFTElORTAgdGFibGUgbWF0Y2ggc3R1YiBhY3Rpb24gQVAwDQpwaXBlbGluZSBQSVBFTElO RTAgdGFibGUgbWF0Y2ggc3R1YiBhY3Rpb24gQVAwDQpwaXBlbGluZSBQSVBFTElORTAgdGFibGUg bWF0Y2ggc3R1YiBhY3Rpb24gQVAwDQoNCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDAgdGFi bGUgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gMSB0YWJsZSAxDQpwaXBlbGluZSBQSVBF TElORTAgcG9ydCBpbiAyIHRhYmxlIDINCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDMgdGFi bGUgMw0KDQp0aHJlYWQgMSBwaXBlbGluZSBQSVBFTElORTAgZW5hYmxlDQoNCnBpcGVsaW5lIFBJ UEVMSU5FMCB0YWJsZSAwIHJ1bGUgYWRkIG1hdGNoIGRlZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDAN CnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAxIHJ1bGUgYWRkIG1hdGNoIGRlZmF1bHQgYWN0aW9u IGZ3ZCBwb3J0IDENCnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAyIHJ1bGUgYWRkIG1hdGNoIGRl ZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDIKMjMvMDgvMjAxOSAxMTo1NDozMiAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwCjIzLzA4 LzIwMTkgMTE6NTQ6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAx OSAxMTo1NDozMyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUg LVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYwZjEgdGNwIDI+L3Rt cC90Y3BkdW1wX2VuczE2MGYxLm91dCAmCjIzLzA4LzIwMTkgMTE6NTQ6MzMgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBbMV0gMTk1MDEKMjMvMDgvMjAxOSAxMTo1NDozMyAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIz LzA4LzIwMTkgMTE6NTQ6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgv MjAxOSAxMTo1NDozMyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4 LzIwMTkgMTE6NTQ6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4n dCBpbXBvcnQgcHl0aG9uIGdudXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4N CklORk86IENhbid0IGltcG9ydCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9y IHBkZmR1bXAoKS4NCldBUk5JTkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9u IDo6IChubyBkZWZhdWx0IHJvdXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8y MDE5IDExOjU0OjM1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2Fw KCIvdG1wL3B0XzAucGNhcCIpCjIzLzA4LzIwMTkgMTE6NTQ6MzUgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiAbWzM0bRtbMW0KMjMvMDgvMjAxOSAxMTo1NDozNSAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IHNlbmRwKHBrdCwgaWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9 MSkKMjMvMDgvMjAxOSAxMTo1NDozNiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4N ClNlbnQgMSBwYWNrZXRzLgoyMy8wOC8yMDE5IDExOjU0OjM4ICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogZXhpdCgpCjIzLzA4LzIwMTkgMTE6NTQ6MzggICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NDozOCAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IGtpbGxhbGwgdGNwZHVtcAoyMy8wOC8yMDE5IDExOjU0OjM4ICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogWzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVt cCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMTYwZjEucGNhcCAtaSBlbnMxNjBmMSB0 Y3AgMj4gL3RtcC90Y3BkdW1wX2VuczE2MGYxLm91dAoyMy8wOC8yMDE5IDExOjU0OjM5ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8y MDE5IDExOjU0OjM5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVm ZmVyCjIzLzA4LzIwMTkgMTE6NTQ6NDAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBy bSAtZiAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcAoyMy8wOC8yMDE5IDExOjU0OjQwICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTQ6NDAgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNw ZHVtcF9lbm8xNjc3Nzk4NC5wY2FwIC1pIGVubzE2Nzc3OTg0IHRjcCAyPi90bXAvdGNwZHVtcF9l bm8xNjc3Nzk4NC5vdXQgJgoyMy8wOC8yMDE5IDExOjU0OjQwICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogWzFdIDE5NTA3CjIzLzA4LzIwMTkgMTE6NTQ6NDAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBlY2hvIC1uICcnID4gIHNjYXB5UmVzdWx0LnR4dAoyMy8wOC8yMDE5 IDExOjU0OjQwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6 NTQ6NDAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBzY2FweQoyMy8wOC8yMDE5IDEx OjU0OjQxICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogSU5GTzogQ2FuJ3QgaW1wb3J0 IHB5dGhvbiBnbnVwbG90IHdyYXBwZXIgLiBXb24ndCBiZSBhYmxlIHRvIHBsb3QuDQpJTkZPOiBD YW4ndCBpbXBvcnQgUHlYLiBXb24ndCBiZSBhYmxlIHRvIHVzZSBwc2R1bXAoKSBvciBwZGZkdW1w KCkuDQpXQVJOSU5HOiBObyByb3V0ZSBmb3VuZCBmb3IgSVB2NiBkZXN0aW5hdGlvbiA6OiAobm8g ZGVmYXVsdCByb3V0ZT8pDQpXZWxjb21lIHRvIFNjYXB5ICgyLjIuMCkKMjMvMDgvMjAxOSAxMTo1 NDo0MyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHBrdCA9IHJkcGNhcCgiL3RtcC9w dF8xLnBjYXAiKQoyMy8wOC8yMDE5IDExOjU0OjQzICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RlcjogG1szNG0bWzFtCjIzLzA4LzIwMTkgMTE6NTQ6NDMgICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdGVyOiBzZW5kcChwa3QsIGlmYWNlPSJlbnMxNjBmMSIsIGNvdW50PTEpCjIzLzA4LzIw MTkgMTE6NTQ6NDMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFj a2V0cy4KMjMvMDgvMjAxOSAxMTo1NDo0NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IGV4aXQoKQoyMy8wOC8yMDE5IDExOjU0OjQ1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogCjIzLzA4LzIwMTkgMTE6NTQ6NDUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBr aWxsYWxsIHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1NDo0NSAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEg aW4gLXcgL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAgLWkgZW5vMTY3Nzc5ODQgdGNwIDI+ IC90bXAvdGNwZHVtcF9lbm8xNjc3Nzk4NC5vdXQKMjMvMDgvMjAxOSAxMTo1NDo0NiAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAx OSAxMTo1NDo0NiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZl cgoyMy8wOC8yMDE5IDExOjU0OjQ4ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogXkMK MjMvMDgvMjAxOSAxMTo1NDo0OCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8w OC8yMDE5IDExOjU0OjQ5ICAgICAgICAgICAgICAgICBUZXN0SVBQaXBlbGluZTogVGVzdCBDYXNl IHRlc3RfcGlwZWxpbmVfd2l0aF90YXAgUmVzdWx0IFBBU1NFRDoKMjMvMDgvMjAxOSAxMTo1NDo1 MCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IF5DCjIzLzA4LzIwMTkgMTE6NTQ6NTAg ICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBeQwoyMy8wOC8yMDE5IDExOjU0OjUwICAg ICAgICAgICAgICAgICBUZXN0SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3Rfcm91dGluZ19waXBl bGluZSBCZWdpbgoyMy8wOC8yMDE5IDExOjU0OjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogCjIzLzA4LzIwMTkgMTE6NTQ6NTAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiAKMjMvMDgvMjAxOSAxMTo1NDo1MCAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNl ZCAtaSAtZSAncy8wMDAwOjAyOjAwLjAvMDAwMDowNDowMC4wLycgLi9leGFtcGxlcy9pcF9waXBl bGluZS9leGFtcGxlcy9yb3V0ZS5jbGkKMjMvMDgvMjAxOSAxMTo1NDo1MCAgICAgICAgICAgICBk dXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjU0OjUwICAgICAgICAgICAgIGR1dC4x MC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDI6MDAuMS8wMDAwOjA0OjAwLjEvJyAu L2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL3JvdXRlLmNsaQoyMy8wOC8yMDE5IDExOjU0 OjUwICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTQ6NTAg ICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBzZWQgLWkgLWUgJ3MvMDAwMDowNjowMC4w LzAwMDA6MDQ6MDAuMi8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvcm91dGUuY2xp CjIzLzA4LzIwMTkgMTE6NTQ6NTEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMv MDgvMjAxOSAxMTo1NDo1MSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IHNlZCAtaSAt ZSAncy8wMDAwOjA2OjAwLjEvMDAwMDowNDowMC4zLycgLi9leGFtcGxlcy9pcF9waXBlbGluZS9l eGFtcGxlcy9yb3V0ZS5jbGkKMjMvMDgvMjAxOSAxMTo1NDo1MSAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjU0OjUxICAgICAgICAgICAgIGR1dC4xMC4yNDAu MTc2LjE1MTogc2VkIC1pIC1lICdzL2RlZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDQvZGVmYXVsdCBh Y3Rpb24gZndkIHBvcnQgNC8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvcm91dGUu Y2xpCjIzLzA4LzIwMTkgMTE6NTQ6NTEgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAK MjMvMDgvMjAxOSAxMTo1NDo1MSAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IC4vZXhh bXBsZXMvaXBfcGlwZWxpbmUvYnVpbGQvaXBfcGlwZWxpbmUgLWMgMHgzIC1uIDQgIC13IDAwMDA6 MDQ6MDAuMCAtdyAwMDAwOjA0OjAwLjEgLXcgMDAwMDowNDowMC4yIC13IDAwMDA6MDQ6MDAuMyAt LSAtcyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL3JvdXRlLmNsaQoyMy8wOC8yMDE5 IDExOjU0OjUyICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogRUFMOiBEZXRlY3RlZCA3 MiBsY29yZShzKQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9kZXMNCkVBTDogTXVsdGktcHJvY2Vz cyBzb2NrZXQgL3Zhci9ydW4vZHBkay9ydGUvbXBfc29ja2V0DQpFQUw6IFNlbGVjdGVkIElPVkEg bW9kZSAnUEEnDQpFQUw6IDEwMjQgaHVnZXBhZ2VzIG9mIHNpemUgMjA5NzE1MiByZXNlcnZlZCwg YnV0IG5vIG1vdW50ZWQgaHVnZXRsYmZzIGZvdW5kIGZvciB0aGF0IHNpemUNCkVBTDogUHJvYmlu ZyBWRklPIHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0IGluaXRpYWxpemVkDQpFQUw6IFBD SSBkZXZpY2UgMDAwMDowNDowMC4wIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2 ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2aWNlIDAwMDA6MDQ6MDAuMSBvbiBO VU1BIHNvY2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1NzIgbmV0X2k0MGUNCkVB TDogUENJIGRldmljZSAwMDAwOjA0OjAwLjIgb24gTlVNQSBzb2NrZXQgMA0KRUFMOiAgIHByb2Jl IGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4z IG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQw ZQ0KS05JOiBDYW4gbm90IG9wZW4gL2Rldi9rbmkNCjsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0zLUNsYXVzZQ0KOyBDb3B5cmlnaHQoYykgMjAxMC0yMDE4IEludGVsIENvcnBvcmF0aW9u DQoNCjsgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fXw0KOyBMSU5LMCBSWFEwIC0tLT58 ICAgICAgICAgICAgICAgfC0tLT4gTElOSzAgVFhRMA0KOyAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfA0KOyBMSU5LMSBSWFEwIC0tLT58ICAgICAgICAgICAgICAgfC0tLT4gTElOSzEg VFhRMA0KOyAgICAgICAgICAgICAgICB8ICAgIFJvdXRpbmcgICAgfA0KOyBMSU5LMiBSWFEwIC0t LT58ICAgICAgICAgICAgICAgfC0tLT4gTElOSzIgVFhRMA0KOyAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgfA0KOyBMSU5LMyBSWFEwIC0tLT58ICAgICAgICAgICAgICAgfC0tLT4gTElO SzMgVFhRMA0KOyAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX19ffA0KOyAgICAgICAgICAg ICAgICAgICAgICAgIHwNCjsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0+IFNJ TkswIChyb3V0ZSBtaXNzKQ0KOw0KOyBJbnB1dCBwYWNrZXQ6IEV0aGVybmV0L0lQdjQNCjsNCjsg UGFja2V0IGJ1ZmZlciBsYXlvdXQ6DQo7ICMgICBGaWVsZCBOYW1lICAgICAgIE9mZnNldCAoQnl0 ZXMpICAgU2l6ZSAoQnl0ZXMpDQo7IDAgICBNYnVmICAgICAgICAgICAgIDAgICAgICAgICAgICAg ICAgMTI4DQo7IDEgICBIZWFkcm9vbSAgICAgICAgIDEyOCAgICAgICAgICAgICAgMTI4DQo7IDIg ICBFdGhlcm5ldCBoZWFkZXIgIDI1NiAgICAgICAgICAgICAgMTQNCjsgMyAgIElQdjQgaGVhZGVy ICAgICAgMjcwICAgICAgICAgICAgICAyMA0KDQptZW1wb29sIE1FTVBPT0wwIGJ1ZmZlciAyMzA0 IHBvb2wgMzJLIGNhY2hlIDI1NiBjcHUgMA0KDQpsaW5rIExJTkswIGRldiAwMDAwOjA0OjAwLjAg cnhxIDEgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KbGluayBMSU5LMSBk ZXYgMDAwMDowNDowMC4xIHJ4cSAxIDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJvbWlzY3VvdXMg b24NCmxpbmsgTElOSzIgZGV2IDAwMDA6MDQ6MDAuMiByeHEgMSAxMjggTUVNUE9PTDAgdHhxIDEg NTEyIHByb21pc2N1b3VzIG9uDQpsaW5rIExJTkszIGRldiAwMDAwOjA0OjAwLjMgcnhxIDEgMTI4 IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbg0KDQp0YWJsZSBhY3Rpb24gcHJvZmls ZSBBUDAgaXB2NCBvZmZzZXQgMjcwIGZ3ZCBlbmNhcCBldGhlcg0KDQpwaXBlbGluZSBQSVBFTElO RTAgcGVyaW9kIDEwIG9mZnNldF9wb3J0X2lkIDAgY3B1IDANCg0KcGlwZWxpbmUgUElQRUxJTkUw IHBvcnQgaW4gYnN6IDMyIGxpbmsgTElOSzAgcnhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0 IGluIGJzeiAzMiBsaW5rIExJTksxIHJ4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiBi c3ogMzIgbGluayBMSU5LMiByeHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gYnN6IDMy IGxpbmsgTElOSzMgcnhxIDANCg0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgb3V0IGJzeiAzMiBs aW5rIExJTkswIHR4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIGxpbmsg TElOSzEgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IG91dCBic3ogMzIgbGluayBMSU5L MiB0eHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgb3V0IGJzeiAzMiBsaW5rIExJTkszIHR4 cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIHNpbmsNCg0KcGlwZWxpbmUg UElQRUxJTkUwIHRhYmxlIG1hdGNoIGxwbSBpcHY0IG9mZnNldCAyODYgc2l6ZSA0SyBhY3Rpb24g QVAwDQoNCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDAgdGFibGUgMA0KcGlwZWxpbmUgUElQ RUxJTkUwIHBvcnQgaW4gMSB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiAyIHRh YmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDMgdGFibGUgMA0KDQp0aHJlYWQgMSBw aXBlbGluZSBQSVBFTElORTAgZW5hYmxlDQoNCnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAwIHJ1 bGUgYWRkIG1hdGNoIGRlZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDQNCnBpcGVsaW5lIFBJUEVMSU5F MCB0YWJsZSAwIHJ1bGUgYWRkIG1hdGNoIGxwbSBpcHY0IDEwMC4wLjAuMCAxMCBhY3Rpb24gZndk IHBvcnQgMCBlbmNhcCBldGhlciBhMDphMTphMjphMzphNDphNSAwMDowMTowMjowMzowNDowNQ0K cGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIDAgcnVsZSBhZGQgbWF0Y2ggbHBtIGlwdjQgMTAwLjY0 LjAuMCAxMCBhY3Rpb24gZndkIHBvcnQgMSBlbmNhcCBldGhlciBiMDpiMTpiMjpiMzpiNDpiNSAx MDoxMToxMjoxMzoxNDoxNQ0KcGlwZWxpbmUgUElQRUxJTkUwIHRhYmxlIDAgcnVsZSBhZGQgbWF0 Y2ggbHBtIGlwdjQgMTAwLjEyOC4wLjAgMTAgYWN0aW9uIGZ3ZCBwb3J0IDIgZW5jYXAgZXRoZXIg YzA6YzE6YzI6YzM6YzQ6YzUgMjA6MjE6MjI6MjM6MjQ6MjUKMjMvMDgvMjAxOSAxMTo1NDo1MiAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbm8xNjc3 Nzk4NC5wY2FwCjIzLzA4LzIwMTkgMTE6NTQ6NTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo1NDo1MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAgLWkg ZW5vMTY3Nzc5ODQgZHN0IGhvc3QgMTAwLjAuMC4xIDI+L3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0 Lm91dCAmCjIzLzA4LzIwMTkgMTE6NTQ6NTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBbMV0gMTk1MTMKMjMvMDgvMjAxOSAxMTo1NDo1MiAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTQ6NTIg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NDo1MiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTQ6NTMgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdu dXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9y dCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5J Tkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJv dXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjU0OjU1ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL3JvdXRlXzAucGNh cCIpCjIzLzA4LzIwMTkgMTE6NTQ6NTUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAb WzM0bRtbMW0KMjMvMDgvMjAxOSAxMTo1NDo1NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IHNlbmRwKHBrdCwgaWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9MSkKMjMvMDgvMjAxOSAx MTo1NDo1NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRz LgoyMy8wOC8yMDE5IDExOjU0OjU3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhp dCgpCjIzLzA4LzIwMTkgMTE6NTQ6NTcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAK MjMvMDgvMjAxOSAxMTo1NDo1NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxh bGwgdGNwZHVtcAoyMy8wOC8yMDE5IDExOjU0OjU3ICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RlcjogWzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAt dyAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcCAtaSBlbm8xNjc3Nzk4NCBkc3QgaG9zdCAx MDAuMC4wLjEgMj4gL3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0Lm91dAoyMy8wOC8yMDE5IDExOjU0 OjU4ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVy IgoyMy8wOC8yMDE5IDExOjU0OjU4ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xl YW5pbmcgYnVmZmVyCjIzLzA4LzIwMTkgMTE6NTQ6NTkgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdGVyOiBybSAtZiAvdG1wL3RjcGR1bXBfZW5zMTYwZjEucGNhcAoyMy8wOC8yMDE5IDExOjU0 OjU5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTQ6NTkg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90 bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwIC1pIGVuczE2MGYxIGRzdCBob3N0IDEwMC42NC4wLjEg Mj4vdG1wL3RjcGR1bXBfZW5zMTYwZjEub3V0ICYKMjMvMDgvMjAxOSAxMTo1NTowMCAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTUxOQoyMy8wOC8yMDE5IDExOjU1OjAwICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50 eHQKMjMvMDgvMjAxOSAxMTo1NTowMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoy My8wOC8yMDE5IDExOjU1OjAwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkK MjMvMDgvMjAxOSAxMTo1NTowMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86 IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBw bG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1w KCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGlu YXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIz LzA4LzIwMTkgMTE6NTU6MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSBy ZHBjYXAoIi90bXAvcm91dGVfMS5wY2FwIikKMjMvMDgvMjAxOSAxMTo1NTowMiAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjU1OjAyICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5vMTY3Nzc5ODQi LCBjb3VudD0xKQoyMy8wOC8yMDE5IDExOjU1OjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RlcjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTU6MDQgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1NTowNSAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjU1OjA1ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTU6MDUgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAgICAgICAg ICB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwIC1pIGVu czE2MGYxIGRzdCBob3N0IDEwMC42NC4wLjEgMj4gL3RtcC90Y3BkdW1wX2VuczE2MGYxLm91dAoy My8wOC8yMDE5IDExOjU1OjA2ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAi Q2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5IDExOjU1OjA2ICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVyCjIzLzA4LzIwMTkgMTE6NTU6MDcgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBybSAtZiAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIucGNh cAoyMy8wOC8yMDE5IDExOjU1OjA3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIz LzA4LzIwMTkgMTE6NTU6MDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1w IC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbm81MDMzNjUxMi5wY2FwIC1pIGVubzUwMzM2 NTEyIGRzdCBob3N0IDEwMC4xMjguMC4xIDI+L3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLm91dCAm CjIzLzA4LzIwMTkgMTE6NTU6MDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0g MTk1MjUKMjMvMDgvMjAxOSAxMTo1NTowNyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTU6MDcgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NTowNyAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTU6MDggICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdudXBsb3Qg d3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9ydCBQeVgu IFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5JTkc6IE5v IHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJvdXRlPykN CldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjU1OjEwICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL3JvdXRlXzIucGNhcCIpCjIz LzA4LzIwMTkgMTE6NTU6MTAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAbWzM0bRtb MW0KMjMvMDgvMjAxOSAxMTo1NToxMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNl bmRwKHBrdCwgaWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9MSkKMjMvMDgvMjAxOSAxMTo1NTox MCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRzLgoyMy8w OC8yMDE5IDExOjU1OjEyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhpdCgpCjIz LzA4LzIwMTkgMTE6NTU6MTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgv MjAxOSAxMTo1NToxMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNw ZHVtcAoyMy8wOC8yMDE5IDExOjU1OjEyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog WzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1w L3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcCAtaSBlbm81MDMzNjUxMiBkc3QgaG9zdCAxMDAuMTI4 LjAuMSAyPiAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0CjIzLzA4LzIwMTkgMTE6NTU6MTMg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIiCjIz LzA4LzIwMTkgMTE6NTU6MTMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVhbmlu ZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1NToxNCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbnMyMjRmMS5wY2FwCjIzLzA4LzIwMTkgMTE6NTU6MTQg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NToxNCAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90 Y3BkdW1wX2VuczIyNGYxLnBjYXAgLWkgZW5zMjI0ZjEgZHN0IGhvc3QgMTAwLjE5Mi4wLjEgMj4v dG1wL3RjcGR1bXBfZW5zMjI0ZjEub3V0ICYKMjMvMDgvMjAxOSAxMTo1NToxNCAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTUzMQoyMy8wOC8yMDE5IDExOjU1OjE0ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQK MjMvMDgvMjAxOSAxMTo1NToxNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8w OC8yMDE5IDExOjU1OjE1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMv MDgvMjAxOSAxMTo1NToxNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENh bid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90 Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkg b3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRp b24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4 LzIwMTkgMTE6NTU6MTcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBj YXAoIi90bXAvcm91dGVfMy5wY2FwIikKMjMvMDgvMjAxOSAxMTo1NToxNyAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IBtbMzRtG1sxbQoyMy8wOC8yMDE5IDExOjU1OjE3ICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3Rlcjogc2VuZHAocGt0LCBpZmFjZT0iZW5vMTY3Nzc5ODQiLCBj b3VudD0xKQoyMy8wOC8yMDE5IDExOjU1OjE3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogLg0KU2VudCAxIHBhY2tldHMuCjIzLzA4LzIwMTkgMTE6NTU6MTkgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiBleGl0KCkKMjMvMDgvMjAxOSAxMTo1NToxOSAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjU1OjE5ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjIzLzA4LzIwMTkgMTE6NTU6MjAgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0rICBEb25lICAgICAgICAgICAgICAgICAgICB0 Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5wY2FwIC1pIGVuczIy NGYxIGRzdCBob3N0IDEwMC4xOTIuMC4xIDI+IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQKMjMv MDgvMjAxOSAxMTo1NToyMSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNs ZWFuaW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1NToyMSAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjU1OjIyICAgICAgICAgICAg ICAgICBUZXN0SVBQaXBlbGluZTogVGVzdCBDYXNlIHRlc3Rfcm91dGluZ19waXBlbGluZSBSZXN1 bHQgUEFTU0VEOgoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2 LjE1MTogXkMKMjMvMDgvMjAxOSAxMTo1NToyMyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4x NTE6IAoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAgICAgICBUZXN0SVBQaXBlbGluZTog VGVzdCBDYXNlIHRlc3RfcnNzX3BpcGVsaW5lIEJlZ2luCjIzLzA4LzIwMTkgMTE6NTU6MjMgICAg ICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiAKMjMvMDgvMjAxOSAxMTo1NToyMyAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAg IGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDI6MDAuMC8wMDAwOjA0OjAw LjAvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL3Jzcy5jbGkKMjMvMDgvMjAxOSAx MTo1NToyMyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjU1 OjIzICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDI6 MDAuMS8wMDAwOjA0OjAwLjEvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL3Jzcy5j bGkKMjMvMDgvMjAxOSAxMTo1NToyMyAgICAgICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoy My8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1p IC1lICdzLzAwMDA6MDY6MDAuMC8wMDAwOjA0OjAwLjIvJyAuL2V4YW1wbGVzL2lwX3BpcGVsaW5l L2V4YW1wbGVzL3Jzcy5jbGkKMjMvMDgvMjAxOSAxMTo1NToyMyAgICAgICAgICAgICBkdXQuMTAu MjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAgIGR1dC4xMC4yNDAu MTc2LjE1MTogc2VkIC1pIC1lICdzLzAwMDA6MDY6MDAuMS8wMDAwOjA0OjAwLjMvJyAuL2V4YW1w bGVzL2lwX3BpcGVsaW5lL2V4YW1wbGVzL3Jzcy5jbGkKMjMvMDgvMjAxOSAxMTo1NToyMyAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE3Ni4xNTE6IAoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAg ICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogc2VkIC1pIC1lICdzL2RlZmF1bHQgYWN0aW9uIGZ3ZCBw b3J0IDQvZGVmYXVsdCBhY3Rpb24gZndkIHBvcnQgNC8nIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUv ZXhhbXBsZXMvcnNzLmNsaQoyMy8wOC8yMDE5IDExOjU1OjIzICAgICAgICAgICAgIGR1dC4xMC4y NDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6NTU6MjMgICAgICAgICAgICAgZHV0LjEwLjI0MC4x NzYuMTUxOiAuL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2J1aWxkL2lwX3BpcGVsaW5lIC1jIDB4MWYg LW4gNCAgLXcgMDAwMDowNDowMC4wIC13IDAwMDA6MDQ6MDAuMSAtdyAwMDAwOjA0OjAwLjIgLXcg MDAwMDowNDowMC4zIC0tIC1zIC4vZXhhbXBsZXMvaXBfcGlwZWxpbmUvZXhhbXBsZXMvcnNzLmNs aQoyMy8wOC8yMDE5IDExOjU1OjI0ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogRUFM OiBEZXRlY3RlZCA3MiBsY29yZShzKQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9kZXMNCkVBTDog TXVsdGktcHJvY2VzcyBzb2NrZXQgL3Zhci9ydW4vZHBkay9ydGUvbXBfc29ja2V0DQpFQUw6IFNl bGVjdGVkIElPVkEgbW9kZSAnUEEnDQpFQUw6IDEwMjQgaHVnZXBhZ2VzIG9mIHNpemUgMjA5NzE1 MiByZXNlcnZlZCwgYnV0IG5vIG1vdW50ZWQgaHVnZXRsYmZzIGZvdW5kIGZvciB0aGF0IHNpemUN CkVBTDogUHJvYmluZyBWRklPIHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0IGluaXRpYWxp emVkDQpFQUw6IFBDSSBkZXZpY2UgMDAwMDowNDowMC4wIG9uIE5VTUEgc29ja2V0IDANCkVBTDog ICBwcm9iZSBkcml2ZXI6IDgwODY6MTU3MiBuZXRfaTQwZQ0KRUFMOiBQQ0kgZGV2aWNlIDAwMDA6 MDQ6MDAuMSBvbiBOVU1BIHNvY2tldCAwDQpFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1NzIg bmV0X2k0MGUNCkVBTDogUENJIGRldmljZSAwMDAwOjA0OjAwLjIgb24gTlVNQSBzb2NrZXQgMA0K RUFMOiAgIHByb2JlIGRyaXZlcjogODA4NjoxNTcyIG5ldF9pNDBlDQpFQUw6IFBDSSBkZXZpY2Ug MDAwMDowNDowMC4zIG9uIE5VTUEgc29ja2V0IDANCkVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6 MTU3MiBuZXRfaTQwZQ0KS05JOiBDYW4gbm90IG9wZW4gL2Rldi9rbmkNCjsgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KOyBDb3B5cmlnaHQoYykgMjAxMC0yMDE4IEludGVs IENvcnBvcmF0aW9uDQoNCjsgVGhpcyBzZXR1cCBkZW1vbnN0cmF0ZXMgdGhlIHVzYWdlIG9mIE5J QyBSZWNlaXZlIFNpZGUgU2NhbGluZyAoUlNTKSBmZWF0dXJlLg0KOyBFYWNoIE5JQyBzcGxpdHMg dGhlIGlucHV0IHRyYWZmaWMgaW50byA0IFJYIHF1ZXVlcywgd2l0aCBlYWNoIG9mIGl0cyBSWCBx dWV1ZXMNCjsgYmVpbmcgaGFuZGxlZCBieSBhIGRpZmZlcmVudCBwaXBlbGluZToNCjsNCjsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t LS0tKyAgICArLS0tLS0tLS0tLSsNCjsgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0+fCAgICAgICAgICAgfCAgICB8ICAgICAgICAgIHwNCjsgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0+fCBQSVBFTElORTAg Ky0tLT58ICBMSU5LIDAgIHwtLS0+DQo7ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwg ICAgICstLS0tLS0tLS0tLS0tPnwgKENPUkUgQSkgIHwgICAgfCAgICBUWCAgICB8DQo7ICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgIHwgICAgICstLS0tLS0tPnwgICAgICAgICAg IHwgICAgfCAgICAgICAgICB8DQo7ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAg IHwgICAgIHwgICAgICAgICstLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0rDQo7ICAgICstLS0t LS0tLS0tKyAgICAgICB8ICAgICAgIHwgICAgIHwgICAgIHwNCjsgICAgfCAgICAgICAgICB8LS0t LS0tLSsgICAgICAgfCAgICAgfCAgICAgfA0KOy0tLT58ICBMSU5LIDAgIHwtLS0tLS0tLS0tLSsg ICB8ICAgICB8ICAgICB8DQo7ICAgIHwgICAgUlggICAgfC0tLS0tLS0tLSsgfCAgIHwgICAgIHwg ICAgIHwNCjsgICAgfCAgICAgICAgICB8LS0tLS0tLSsgfCB8ICAgfCAgICAgfCAgICAgfA0KOyAg ICArLS0tLS0tLS0tLSsgICAgICAgfCB8IHwgICB8ICAgICB8ICAgICB8ICAgICAgICArLS0tLS0t LS0tLS0rICAgICstLS0tLS0tLS0tKw0KOyAgICAgICAgICAgICAgICAgICAgICAgfCB8ICstLS18 LS0tLS18LS0tLS18LS0tLS0tLT58ICAgICAgICAgICB8ICAgIHwgICAgICAgICAgfA0KOyAgICAr LS0tLS0tLS0tLSsgICAgICAgfCB8ICAgICB8ICstLS18LS0tLS18LS0tLS0tLT58IFBJUEVMSU5F MSArLS0tPnwgIExJTksgMSAgfC0tLT4NCjsgICAgfCAgICAgICAgICB8LS0tLS0tLXwtfC0tLS0t KyB8ICAgfCArLS0tfC0tLS0tLS0+fCAoQ09SRSBCKSAgfCAgICB8ICAgIFRYICAgIHwNCjstLS0+ fCAgTElOSyAxICB8LS0tLS0tLXwtfC0tLS0tLS0rICAgfCB8ICAgfCArLS0tLS0+fCAgICAgICAg ICAgfCAgICB8ICAgICAgICAgIHwNCjsgICAgfCAgICBSWCAgICB8LS0tLS0tLXwtfC0tLS0tLS0r ICAgfCB8ICAgfCB8ICAgICAgKy0tLS0tLS0tLS0tKyAgICArLS0tLS0tLS0tLSsNCjsgICAgfCAg ICAgICAgICB8LS0tLS0tLXwtfC0tLS0tKyB8ICAgfCB8ICAgfCB8DQo7ICAgICstLS0tLS0tLS0t KyAgICAgICB8IHwgICAgIHwgfCAgIHwgfCAgIHwgfA0KOyAgICAgICAgICAgICAgICAgICAgICAg fCB8ICAgICB8IHwgICB8IHwgICB8IHwNCjsgICAgKy0tLS0tLS0tLS0rICAgICAgIHwgfCAgICAg fCB8ICAgfCB8ICAgfCB8DQo7ICAgIHwgICAgICAgICAgfC0tLS0tLS18LXwtLS0tLXwtfC0tLSsg fCAgIHwgfA0KOy0tLT58ICBMSU5LIDIgIHwtLS0tLS0tfC18LS0tLS18LXwtLS0tLSsgICB8IHwg ICAgICArLS0tLS0tLS0tLS0rICAgICstLS0tLS0tLS0tKw0KOyAgICB8ICAgIFJYICAgIHwtLS0t LSsgfCArLS0tLS18LXwtLS0tLS0tLS18LXwtLS0tLT58ICAgICAgICAgICB8ICAgIHwgICAgICAg ICAgfA0KOyAgICB8ICAgICAgICAgIHwtLS0rIHwgfCAgICAgICB8ICstLS0tLS0tLS18LXwtLS0t LT58IFBJUEVMSU5FMiArLS0tPnwgIExJTksgMiAgfC0tLT4NCjsgICAgKy0tLS0tLS0tLS0rICAg fCArLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC18LS0tLS0+fCAoQ09SRSBDKSAgfCAgICB8ICAgIFRY ICAgIHwNCjsgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgfCAgICAgICAgICAgfCB8ICst LS0+fCAgICAgICAgICAgfCAgICB8ICAgICAgICAgIHwNCjsgICAgKy0tLS0tLS0tLS0rICAgfCAg IHwgICAgICAgfCAgICAgICAgICAgfCB8IHwgICAgKy0tLS0tLS0tLS0tKyAgICArLS0tLS0tLS0t LSsNCjsgICAgfCAgICAgICAgICB8LS0tfC0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tKyB8IHwNCjst LS0+fCAgTElOSyAzICB8LS0tfC0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0rIHwNCjsgICAgfCAg ICBSWCAgICB8LS0tfC0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLSsNCjsgICAgfCAgICAgICAg ICB8LS0tfC0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tKw0KOyAgICArLS0tLS0tLS0tLSsgICB8ICAg fCAgICAgICB8ICAgICAgICAgICB8DQo7ICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICstLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0rDQo7ICAgICAg ICAgICAgICAgICAgIHwgICArLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tPnwgICAgICAgICAg IHwgICAgfCAgICAgICAgICB8DQo7ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICstLS0t LS0tLS0tLXwtLS0tLS0tPnwgUElQRUxJTkUzICstLS0+fCAgTElOSyAzICB8LS0tPg0KOyAgICAg ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLT58IChDT1JFIEQp ICB8ICAgIHwgICAgVFggICAgfA0KOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArLS0tLS0tLT58ICAgICAgICAgICB8ICAgIHwgICAgICAgICAgfA0KOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0r ICAgICstLS0tLS0tLS0tKw0KOw0KOw0KDQptZW1wb29sIE1FTVBPT0wwIGJ1ZmZlciAyMzA0IHBv b2wgMzJLIGNhY2hlIDI1NiBjcHUgMA0KDQpsaW5rIExJTkswIGRldiAwMDAwOjA0OjAwLjAgcnhx IDQgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9taXNjdW91cyBvbiByc3MgMCAxIDIgMw0KbGlu ayBMSU5LMSBkZXYgMDAwMDowNDowMC4xIHJ4cSA0IDEyOCBNRU1QT09MMCB0eHEgMSA1MTIgcHJv bWlzY3VvdXMgb24gcnNzIDAgMSAyIDMNCmxpbmsgTElOSzIgZGV2IDAwMDA6MDQ6MDAuMiByeHEg NCAxMjggTUVNUE9PTDAgdHhxIDEgNTEyIHByb21pc2N1b3VzIG9uIHJzcyAwIDEgMiAzDQpsaW5r IExJTkszIGRldiAwMDAwOjA0OjAwLjMgcnhxIDQgMTI4IE1FTVBPT0wwIHR4cSAxIDUxMiBwcm9t aXNjdW91cyBvbiByc3MgMCAxIDIgMw0KDQpwaXBlbGluZSBQSVBFTElORTAgcGVyaW9kIDEwIG9m ZnNldF9wb3J0X2lkIDAgY3B1IDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIGJzeiAzMiBs aW5rIExJTkswIHJ4cSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBpbiBic3ogMzIgbGluayBM SU5LMSByeHEgMA0KcGlwZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gYnN6IDMyIGxpbmsgTElOSzIg cnhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIGJzeiAzMiBsaW5rIExJTkszIHJ4cSAw DQpwaXBlbGluZSBQSVBFTElORTAgcG9ydCBvdXQgYnN6IDMyIGxpbmsgTElOSzAgdHhxIDANCnBp cGVsaW5lIFBJUEVMSU5FMCB0YWJsZSBtYXRjaCBzdHViDQpwaXBlbGluZSBQSVBFTElORTAgcG9y dCBpbiAwIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMCBwb3J0IGluIDEgdGFibGUgMA0KcGlw ZWxpbmUgUElQRUxJTkUwIHBvcnQgaW4gMiB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTAgcG9y dCBpbiAzIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMCB0YWJsZSAwIHJ1bGUgYWRkIG1hdGNo IGRlZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDANCg0KcGlwZWxpbmUgUElQRUxJTkUxIHBlcmlvZCAx MCBvZmZzZXRfcG9ydF9pZCAwIGNwdSAwDQpwaXBlbGluZSBQSVBFTElORTEgcG9ydCBpbiBic3og MzIgbGluayBMSU5LMCByeHEgMQ0KcGlwZWxpbmUgUElQRUxJTkUxIHBvcnQgaW4gYnN6IDMyIGxp bmsgTElOSzEgcnhxIDENCnBpcGVsaW5lIFBJUEVMSU5FMSBwb3J0IGluIGJzeiAzMiBsaW5rIExJ TksyIHJ4cSAxDQpwaXBlbGluZSBQSVBFTElORTEgcG9ydCBpbiBic3ogMzIgbGluayBMSU5LMyBy eHEgMQ0KcGlwZWxpbmUgUElQRUxJTkUxIHBvcnQgb3V0IGJzeiAzMiBsaW5rIExJTksxIHR4cSAw DQpwaXBlbGluZSBQSVBFTElORTEgdGFibGUgbWF0Y2ggc3R1Yg0KcGlwZWxpbmUgUElQRUxJTkUx IHBvcnQgaW4gMCB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTEgcG9ydCBpbiAxIHRhYmxlIDAN CnBpcGVsaW5lIFBJUEVMSU5FMSBwb3J0IGluIDIgdGFibGUgMA0KcGlwZWxpbmUgUElQRUxJTkUx IHBvcnQgaW4gMyB0YWJsZSAwDQpwaXBlbGluZSBQSVBFTElORTEgdGFibGUgMCBydWxlIGFkZCBt YXRjaCBkZWZhdWx0IGFjdGlvbiBmd2QgcG9ydCAwDQoNCnBpcGVsaW5lIFBJUEVMSU5FMiBwZXJp b2QgMTAgb2Zmc2V0X3BvcnRfaWQgMCBjcHUgMA0KcGlwZWxpbmUgUElQRUxJTkUyIHBvcnQgaW4g YnN6IDMyIGxpbmsgTElOSzAgcnhxIDINCnBpcGVsaW5lIFBJUEVMSU5FMiBwb3J0IGluIGJzeiAz MiBsaW5rIExJTksxIHJ4cSAyDQpwaXBlbGluZSBQSVBFTElORTIgcG9ydCBpbiBic3ogMzIgbGlu ayBMSU5LMiByeHEgMg0KcGlwZWxpbmUgUElQRUxJTkUyIHBvcnQgaW4gYnN6IDMyIGxpbmsgTElO SzMgcnhxIDINCnBpcGVsaW5lIFBJUEVMSU5FMiBwb3J0IG91dCBic3ogMzIgbGluayBMSU5LMiB0 eHEgMA0KcGlwZWxpbmUgUElQRUxJTkUyIHRhYmxlIG1hdGNoIHN0dWINCnBpcGVsaW5lIFBJUEVM SU5FMiBwb3J0IGluIDAgdGFibGUgMA0KcGlwZWxpbmUgUElQRUxJTkUyIHBvcnQgaW4gMSB0YWJs ZSAwDQpwaXBlbGluZSBQSVBFTElORTIgcG9ydCBpbiAyIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVM SU5FMiBwb3J0IGluIDMgdGFibGUgMA0KcGlwZWxpbmUgUElQRUxJTkUyIHRhYmxlIDAgcnVsZSBh ZGQgbWF0Y2ggZGVmYXVsdCBhY3Rpb24gZndkIHBvcnQgMA0KDQpwaXBlbGluZSBQSVBFTElORTMg cGVyaW9kIDEwIG9mZnNldF9wb3J0X2lkIDAgY3B1IDANCnBpcGVsaW5lIFBJUEVMSU5FMyBwb3J0 IGluIGJzeiAzMiBsaW5rIExJTkswIHJ4cSAzDQpwaXBlbGluZSBQSVBFTElORTMgcG9ydCBpbiBi c3ogMzIgbGluayBMSU5LMSByeHEgMw0KcGlwZWxpbmUgUElQRUxJTkUzIHBvcnQgaW4gYnN6IDMy IGxpbmsgTElOSzIgcnhxIDMNCnBpcGVsaW5lIFBJUEVMSU5FMyBwb3J0IGluIGJzeiAzMiBsaW5r IExJTkszIHJ4cSAzDQpwaXBlbGluZSBQSVBFTElORTMgcG9ydCBvdXQgYnN6IDMyIGxpbmsgTElO SzMgdHhxIDANCnBpcGVsaW5lIFBJUEVMSU5FMyB0YWJsZSBtYXRjaCBzdHViDQpwaXBlbGluZSBQ SVBFTElORTMgcG9ydCBpbiAwIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMyBwb3J0IGluIDEg dGFibGUgMA0KcGlwZWxpbmUgUElQRUxJTkUzIHBvcnQgaW4gMiB0YWJsZSAwDQpwaXBlbGluZSBQ SVBFTElORTMgcG9ydCBpbiAzIHRhYmxlIDANCnBpcGVsaW5lIFBJUEVMSU5FMyB0YWJsZSAwIHJ1 bGUgYWRkIG1hdGNoIGRlZmF1bHQgYWN0aW9uIGZ3ZCBwb3J0IDANCg0KdGhyZWFkIDEgcGlwZWxp bmUgUElQRUxJTkUwIGVuYWJsZQ0KdGhyZWFkIDIgcGlwZWxpbmUgUElQRUxJTkUxIGVuYWJsZQ0K dGhyZWFkIDMgcGlwZWxpbmUgUElQRUxJTkUyIGVuYWJsZQoyMy8wOC8yMDE5IDExOjU1OjI0ICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzE2Nzc3 OTg0LnBjYXAKMjMvMDgvMjAxOSAxMTo1NToyNSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IAoyMy8wOC8yMDE5IDExOjU1OjI1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjog dGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQucGNhcCAtaSBl bm8xNjc3Nzk4NCBkc3QgaG9zdCAxMDAuMC4yMC4yIDI+L3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0 Lm91dCAmCjIzLzA4LzIwMTkgMTE6NTU6MjUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBbMV0gMTk1MzcKMjMvMDgvMjAxOSAxMTo1NToyNSAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0CjIzLzA4LzIwMTkgMTE6NTU6MjUg ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NToyNSAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIzLzA4LzIwMTkgMTE6NTU6MjUgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBDYW4ndCBpbXBvcnQgcHl0aG9uIGdu dXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxvdC4NCklORk86IENhbid0IGltcG9y dCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgpIG9yIHBkZmR1bXAoKS4NCldBUk5J Tkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0aW9uIDo6IChubyBkZWZhdWx0IHJv dXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8wOC8yMDE5IDExOjU1OjI3ICAgICAg ICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRwY2FwKCIvdG1wL3Jzc18wLnBjYXAi KQoyMy8wOC8yMDE5IDExOjU1OjI3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogG1sz NG0bWzFtCjIzLzA4LzIwMTkgMTE6NTU6MjcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiBzZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNvdW50PTEpCjIzLzA4LzIwMTkgMTE6 NTU6MjggICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAuDQpTZW50IDEgcGFja2V0cy4K MjMvMDgvMjAxOSAxMTo1NTozMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGV4aXQo KQoyMy8wOC8yMDE5IDExOjU1OjMwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjIz LzA4LzIwMTkgMTE6NTU6MzAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBraWxsYWxs IHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1NTozMCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0 ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcg L3RtcC90Y3BkdW1wX2VubzE2Nzc3OTg0LnBjYXAgLWkgZW5vMTY3Nzc5ODQgZHN0IGhvc3QgMTAw LjAuMjAuMiAyPiAvdG1wL3RjcGR1bXBfZW5vMTY3Nzc5ODQub3V0CjIzLzA4LzIwMTkgMTE6NTU6 MzEgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBlY2hvICJDbGVhbmluZyBidWZmZXIi CjIzLzA4LzIwMTkgMTE6NTU6MzEgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBDbGVh bmluZyBidWZmZXIKMjMvMDgvMjAxOSAxMTo1NTozMiAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IHJtIC1mIC90bXAvdGNwZHVtcF9lbnMxNjBmMS5wY2FwCjIzLzA4LzIwMTkgMTE6NTU6 MzIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1NTozMiAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW4gLWUgLVEgaW4gLXcgL3Rt cC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYwZjEgZHN0IGhvc3QgMTAwLjAuMC4xIDI+ L3RtcC90Y3BkdW1wX2VuczE2MGYxLm91dCAmCjIzLzA4LzIwMTkgMTE6NTU6MzIgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0gMTk1NDMKMjMvMDgvMjAxOSAxMTo1NTozMiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gLW4gJycgPiAgc2NhcHlSZXN1bHQudHh0 CjIzLzA4LzIwMTkgMTE6NTU6MzIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMv MDgvMjAxOSAxMTo1NTozMiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNjYXB5CjIz LzA4LzIwMTkgMTE6NTU6MzMgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBJTkZPOiBD YW4ndCBpbXBvcnQgcHl0aG9uIGdudXBsb3Qgd3JhcHBlciAuIFdvbid0IGJlIGFibGUgdG8gcGxv dC4NCklORk86IENhbid0IGltcG9ydCBQeVguIFdvbid0IGJlIGFibGUgdG8gdXNlIHBzZHVtcCgp IG9yIHBkZmR1bXAoKS4NCldBUk5JTkc6IE5vIHJvdXRlIGZvdW5kIGZvciBJUHY2IGRlc3RpbmF0 aW9uIDo6IChubyBkZWZhdWx0IHJvdXRlPykNCldlbGNvbWUgdG8gU2NhcHkgKDIuMi4wKQoyMy8w OC8yMDE5IDExOjU1OjM1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogcGt0ID0gcmRw Y2FwKCIvdG1wL3Jzc18xLnBjYXAiKQoyMy8wOC8yMDE5IDExOjU1OjM1ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogG1szNG0bWzFtCjIzLzA4LzIwMTkgMTE6NTU6MzUgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdGVyOiBzZW5kcChwa3QsIGlmYWNlPSJlbm8xNjc3Nzk4NCIsIGNv dW50PTEpCjIzLzA4LzIwMTkgMTE6NTU6MzUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVy OiAuDQpTZW50IDEgcGFja2V0cy4KMjMvMDgvMjAxOSAxMTo1NTozNyAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IGV4aXQoKQoyMy8wOC8yMDE5IDExOjU1OjM3ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTU6MzcgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBraWxsYWxsIHRjcGR1bXAKMjMvMDgvMjAxOSAxMTo1NTozNyAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSsgIERvbmUgICAgICAgICAgICAgICAgICAgIHRj cGR1bXAgLW4gLWUgLVEgaW4gLXcgL3RtcC90Y3BkdW1wX2VuczE2MGYxLnBjYXAgLWkgZW5zMTYw ZjEgZHN0IGhvc3QgMTAwLjAuMC4xIDI+IC90bXAvdGNwZHVtcF9lbnMxNjBmMS5vdXQKMjMvMDgv MjAxOSAxMTo1NTozOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFu aW5nIGJ1ZmZlciIKMjMvMDgvMjAxOSAxMTo1NTozOCAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0ZXI6IENsZWFuaW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjU1OjM5ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjogcm0gLWYgL3RtcC90Y3BkdW1wX2VubzUwMzM2NTEyLnBjYXAKMjMv MDgvMjAxOSAxMTo1NTozOSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8y MDE5IDExOjU1OjM5ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtbiAt ZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIucGNhcCAtaSBlbm81MDMzNjUxMiBk c3QgaG9zdCAxMDAuMC4wLjIgMj4vdG1wL3RjcGR1bXBfZW5vNTAzMzY1MTIub3V0ICYKMjMvMDgv MjAxOSAxMTo1NTo0MCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAxOTU0OQoy My8wOC8yMDE5IDExOjU1OjQwICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZWNobyAt biAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAxMTo1NTo0MCAgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjU1OjQwICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1NTo0MCAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBweXRob24gZ251cGxvdCB3cmFwcGVy IC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2FuJ3QgaW1wb3J0IFB5WC4gV29uJ3Qg YmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgpLg0KV0FSTklORzogTm8gcm91dGUg Zm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRlZmF1bHQgcm91dGU/KQ0KV2VsY29t ZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTU6NDIgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcnNzXzIucGNhcCIpCjIzLzA4LzIwMTkg MTE6NTU6NDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAbWzM0bRtbMW0KMjMvMDgv MjAxOSAxMTo1NTo0MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHNlbmRwKHBrdCwg aWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9MSkKMjMvMDgvMjAxOSAxMTo1NTo0MiAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBwYWNrZXRzLgoyMy8wOC8yMDE5IDEx OjU1OjQ0ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogZXhpdCgpCjIzLzA4LzIwMTkg MTE6NTU6NDUgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMjMvMDgvMjAxOSAxMTo1 NTo0NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNwZHVtcAoyMy8w OC8yMDE5IDExOjU1OjQ1ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogWzFdKyAgRG9u ZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAtUSBpbiAtdyAvdG1wL3RjcGR1bXBf ZW5vNTAzMzY1MTIucGNhcCAtaSBlbm81MDMzNjUxMiBkc3QgaG9zdCAxMDAuMC4wLjIgMj4gL3Rt cC90Y3BkdW1wX2VubzUwMzM2NTEyLm91dAoyMy8wOC8yMDE5IDExOjU1OjQ2ICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogZWNobyAiQ2xlYW5pbmcgYnVmZmVyIgoyMy8wOC8yMDE5IDEx OjU1OjQ2ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogQ2xlYW5pbmcgYnVmZmVyCjIz LzA4LzIwMTkgMTE6NTU6NDcgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBybSAtZiAv dG1wL3RjcGR1bXBfZW5zMjI0ZjEucGNhcAoyMy8wOC8yMDE5IDExOjU1OjQ3ICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RlcjogCjIzLzA4LzIwMTkgMTE6NTU6NDcgICAgICAgICAgICAgICAg ICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1uIC1lIC1RIGluIC13IC90bXAvdGNwZHVtcF9lbnMy MjRmMS5wY2FwIC1pIGVuczIyNGYxIGRzdCBob3N0IDEwMC4wLjEwLjIgMj4vdG1wL3RjcGR1bXBf ZW5zMjI0ZjEub3V0ICYKMjMvMDgvMjAxOSAxMTo1NTo0NyAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IFsxXSAxOTU1NQoyMy8wOC8yMDE5IDExOjU1OjQ3ICAgICAgICAgICAgICAgICAg ICAgICAgIHRlc3RlcjogZWNobyAtbiAnJyA+ICBzY2FweVJlc3VsdC50eHQKMjMvMDgvMjAxOSAx MTo1NTo0NyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoyMy8wOC8yMDE5IDExOjU1 OjQ3ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjogc2NhcHkKMjMvMDgvMjAxOSAxMTo1 NTo0OCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IElORk86IENhbid0IGltcG9ydCBw eXRob24gZ251cGxvdCB3cmFwcGVyIC4gV29uJ3QgYmUgYWJsZSB0byBwbG90Lg0KSU5GTzogQ2Fu J3QgaW1wb3J0IFB5WC4gV29uJ3QgYmUgYWJsZSB0byB1c2UgcHNkdW1wKCkgb3IgcGRmZHVtcCgp Lg0KV0FSTklORzogTm8gcm91dGUgZm91bmQgZm9yIElQdjYgZGVzdGluYXRpb24gOjogKG5vIGRl ZmF1bHQgcm91dGU/KQ0KV2VsY29tZSB0byBTY2FweSAoMi4yLjApCjIzLzA4LzIwMTkgMTE6NTU6 NTAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBwa3QgPSByZHBjYXAoIi90bXAvcnNz XzMucGNhcCIpCjIzLzA4LzIwMTkgMTE6NTU6NTAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAbWzM0bRtbMW0KMjMvMDgvMjAxOSAxMTo1NTo1MCAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXN0ZXI6IHNlbmRwKHBrdCwgaWZhY2U9ImVubzE2Nzc3OTg0IiwgY291bnQ9MSkKMjMvMDgv MjAxOSAxMTo1NTo1MCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IC4NClNlbnQgMSBw YWNrZXRzLgoyMy8wOC8yMDE5IDExOjU1OjUyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rl cjogZXhpdCgpCjIzLzA4LzIwMTkgMTE6NTU6NTIgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMjMvMDgvMjAxOSAxMTo1NTo1MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IGtpbGxhbGwgdGNwZHVtcAoyMy8wOC8yMDE5IDExOjU1OjUyICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RlcjogWzFdKyAgRG9uZSAgICAgICAgICAgICAgICAgICAgdGNwZHVtcCAtbiAtZSAt USBpbiAtdyAvdG1wL3RjcGR1bXBfZW5zMjI0ZjEucGNhcCAtaSBlbnMyMjRmMSBkc3QgaG9zdCAx MDAuMC4xMC4yIDI+IC90bXAvdGNwZHVtcF9lbnMyMjRmMS5vdXQKMjMvMDgvMjAxOSAxMTo1NTo1 MyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGVjaG8gIkNsZWFuaW5nIGJ1ZmZlciIK MjMvMDgvMjAxOSAxMTo1NTo1MyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IENsZWFu aW5nIGJ1ZmZlcgoyMy8wOC8yMDE5IDExOjU1OjU0ICAgICAgICAgICAgICAgICBUZXN0SVBQaXBl bGluZTogVGVzdCBDYXNlIHRlc3RfcnNzX3BpcGVsaW5lIFJlc3VsdCBQQVNTRUQ6CjIzLzA4LzIw MTkgMTE6NTU6NTUgICAgICAgICAgICAgZHV0LjEwLjI0MC4xNzYuMTUxOiBeQwoyMy8wOC8yMDE5 IDExOjU1OjU1ICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTc2LjE1MTogCjIzLzA4LzIwMTkgMTE6 NTU6NTggICAgICAgICAgICAgICAgICAgICAgICAgICAgZHRzOiAKVEVTVCBTVUlURSBFTkRFRDog VGVzdElQUGlwZWxpbmUK --_002_4DC48DF9BDA3E54A836D2D3C057DEC6F0BB80248SHSMSX103ccrcor_--