From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============9111902052197989936==" MIME-Version: 1.0 From: Walker, Benjamin Subject: Re: [SPDK] Helloworld program fails during device initialization. Date: Tue, 14 Nov 2017 21:44:29 +0000 Message-ID: <1510695867.2168.39.camel@intel.com> In-Reply-To: 82C9F782B054C94B9FC04A331649C77A9D42AE11@FMSMSX108.amr.corp.intel.com List-ID: To: spdk@lists.01.org --===============9111902052197989936== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable SPDK performs parallel initialization of all devices for performance reason= s, so the log below is both of the initialization paths of your devices muxed together. The part Paul highlighted is for your non-functioning device, whi= le all of the other log messages are for your functioning device, I think. It = would be easy to tell if you unplugged the working one and only left the one that wasn't working - can you try that and send the new log to confirm? When SPDK first reads the registers for your non-functioning SSD to figure = out what state it is in, it sees that the CC.EN bit is set to 1, but the CSTS.R= DY bit is 0. That means the device is performing some internal operation - i.e. it's already in the process of enabling itself. It is invalid for SPDK to w= rite any registers until CSTS.RDY flips to 1 in this case. However, it never doe= s and the code just times out. Unless I'm interpreting something incorrectly, I believe your device to be out of spec (probably because that particular dev= ice is not functioning, not because all models of that type are out of spec). Most commonly, problems like this are resolved by power cycling the device.= If you haven't tried rebooting, definitely give that a shot. Did you say that = the device does work with the kernel? When you load the kernel driver can you s= ee /dev/sdX and dd to it without errors? Thanks, Ben On Tue, 2017-11-14 at 21:07 +0000, Luse, Paul E wrote: > So in your output the highlighted lines below show one extra state that y= our > SSD goes through during init vs the SSD I have, looks like > NVME_CTRLR_STATE_DISABLE_WAIT_FOR_READY_1 is the state which is also stat= e 1 > in the enum which matches the error listed further below in red. Having = not > spent much time debugging this driver=E2=80=99s init I can=E2=80=99t say = for sure if this (the > additional output/steps between the extra state and the timeout) is expec= ted > or not. > = > You can wait for Daniel or someone w/more experience to reply or if you w= ant > to experiment you can either step through the hello_world code with gdb > putting a break point on nvme_ctrlr_process_init() with a good drive then= with > this one and get an idea of the correct flow vs what you are seeing you c= an > maybe mes around with the timeout being set in the condition below which = is > seen on your drive but not on mine. Up to you, my suggestion is just a s= hot > in the dark. > = > if (csts.bits.rdy =3D=3D 0) { > = > SPDK_DEBUGLOG(SPDK_TRACE_NVME, "CC.EN =3D 1 && CSTS.RDY =3D 0 - waiting f= or reset > to complete\n"); > = > nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_DISABLE_WAIT_FOR_READY_1, > ready_timeout_in_ms); > return 0; > } > = > Thx > Paul > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sree= nivasa) > Busam (Stellus) > Sent: Tuesday, November 14, 2017 1:14 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Thanks Daniel and Paul for helping debug it. > This is great, I know how to debug SPDK code J > Here is the debug log. > nvme_ctrlr.c:1372:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 > nvme_ctrlr.c:1386:nvme_ctrlr_process_init: *INFO*: Setting CC.EN =3D 0 > nvme_ctrlr.c: 617:nvme_ctrlr_set_state: *INFO*: setting state to disable = and > wait for CSTS.RDY =3D 0 (timeout 30000 ms) > nvme_ctrlr.c:1372:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 > nvme_ctrlr.c:1380:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 && CSTS.RD= Y =3D 0 - > waiting for reset to complete > nvme_ctrlr.c: 617:nvme_ctrlr_set_state: *INFO*: setting state to disable = and > wait for CSTS.RDY =3D 1 (timeout 30000 ms) > nvme_ctrlr.c:1432:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 0 && CSTS.RD= Y =3D 0 > nvme_ctrlr.c: 617:nvme_ctrlr_set_state: *INFO*: setting state to enable > controller by writing CC.EN =3D 1 (timeout 30000 ms) > nvme_ctrlr.c:1444:nvme_ctrlr_process_init: *INFO*: Setting CC.EN =3D 1 > nvme_ctrlr.c: 617:nvme_ctrlr_set_state: *INFO*: setting state to wait for > CSTS.RDY =3D 1 (timeout 30000 ms) > nvme_ctrlr.c:1451:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 && CSTS.RD= Y =3D 1 - > controller is ready > nvme_pcie.c:1521:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x100ff4c000 len:4096 > nvme_pcie.c:1548:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x3fb0d4c000 > nvme_ctrlr.c: 713:nvme_ctrlr_identify: *INFO*: transport max_xfer_size 20= 72576 > nvme_pcie.c:1521:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x100ff4b000 len:4096 > nvme_pcie.c:1548:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x3fb0d4b000 > nvme_ctrlr.c: 813:nvme_ctrlr_set_keep_alive_timeout: *INFO*: Controller K= AS is > 0 - not enabling Keep Alive > nvme_ctrlr.c: 883:nvme_ctrlr_set_host_id: *INFO*: Using 64-bit host ident= ifier > nvme_ctrlr.c: 899:nvme_ctrlr_set_host_id: *INFO*: User did not specify ho= st ID > - not sending Set Features - Host ID > nvme_ctrlr.c: 613:nvme_ctrlr_set_state: *INFO*: setting state to ready (no > timeout) > Attached to 0000:ad:00.0 > Using controller SAMSUNG MZQWV480HCGM (S1TRNYAFA00148 ) with 1 > namespaces. > Namespace ID: 1 size: 480GB > nvme_ctrlr.c:1475:nvme_ctrlr_process_init: *ERROR*: Initialization timed = out > in state 1 > nvme_ctrlr.c: 523:nvme_ctrlr_shutdown: *ERROR*: did not shutdown within 5 > seconds > spdk_nvme_probe() failed > nvme_ctrlr.c: 515:nvme_ctrlr_shutdown: *INFO*: shutdown complete > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Verkamp, Dan= iel > Sent: Tuesday, November 14, 2017 12:06 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Sorry, forgot to mention that you also need to compile with debug enabled > (make CONFIG_DEBUG=3Dy or ./configure --enable-debug); otherwise, the tra= ce flag > call doesn=E2=80=99t do anything. > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Luse, Paul E > Sent: Tuesday, November 14, 2017 12:56 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Sreeni, > = > Are you sure you got those statements added (also need to add #include > =E2=80=9Cspdk/log.h=E2=80=9D as I didn=E2=80=99t see some expected output= in your text. Here=E2=80=99s what > it should look like: > = > peluse(a)pels2-64:~/spdk/examples/nvme/hello_world$ sudo ./hello_world > Starting DPDK 17.08.0 initialization... > [ DPDK EAL parameters: hello_world -c 0x1 --file-prefix=3Dspdk0 --base- > virtaddr=3D0x1000000000 --proc-type=3Dauto ] > EAL: Detected 72 lcore(s) > EAL: Auto-detected process type: PRIMARY > EAL: No free hugepages reported in hugepages-1048576kB > EAL: Probing VFIO support... > Initializing NVMe Controllers > EAL: PCI device 0000:06:00.0 on NUMA socket 0 > EAL: probe driver: 8086:953 spdk_nvme > Attaching to 0000:06:00.0 > nvme_ctrlr.c: 623:nvme_ctrlr_set_state: *INFO*: setting state to init (no > timeout) > nvme_ctrlr.c:1382:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 > nvme_ctrlr.c:1396:nvme_ctrlr_process_init: *INFO*: Setting CC.EN =3D 0 > nvme_ctrlr.c: 627:nvme_ctrlr_set_state: *INFO*: setting state to disable = and > wait for CSTS.RDY =3D 0 (timeout 20000 ms) > nvme_ctrlr.c:1442:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 0 && CSTS.RD= Y =3D 0 > nvme_ctrlr.c: 627:nvme_ctrlr_set_state: *INFO*: setting state to enable > controller by writing CC.EN =3D 1 (timeout 20000 ms) > nvme_ctrlr.c:1454:nvme_ctrlr_process_init: *INFO*: Setting CC.EN =3D 1 > nvme_ctrlr.c: 627:nvme_ctrlr_set_state: *INFO*: setting state to wait for > CSTS.RDY =3D 1 (timeout 20000 ms) > nvme_ctrlr.c:1461:nvme_ctrlr_process_init: *INFO*: CC.EN =3D 1 && CSTS.RD= Y =3D 1 - > controller is ready > nvme_pcie.c:1541:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x103ff9b000 len:4096 > nvme_pcie.c:1568:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x45179b000 > nvme_ctrlr.c: 723:nvme_ctrlr_identify: *INFO*: transport max_xfer_size 20= 72576 > nvme_ctrlr.c: 727:nvme_ctrlr_identify: *INFO*: MDTS max_xfer_size 131072 > nvme_pcie.c:1541:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x103ff9a000 len:4096 > nvme_pcie.c:1568:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x45179a000 > nvme_ns.c: 98:nvme_ns_identify_update: *INFO*: ns 1 stripe size quirk 256 > blocks > nvme_pcie.c:1541:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x103ff9b000 len:512 > nvme_pcie.c:1568:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x45179b000 > nvme_ctrlr.c: 823:nvme_ctrlr_set_keep_alive_timeout: *INFO*: Controller K= AS is > 0 - not enabling Keep Alive > nvme_ctrlr.c: 893:nvme_ctrlr_set_host_id: *INFO*: Using 64-bit host ident= ifier > nvme_ctrlr.c: 909:nvme_ctrlr_set_host_id: *INFO*: User did not specify ho= st ID > - not sending Set Features - Host ID > nvme_ctrlr.c: 623:nvme_ctrlr_set_state: *INFO*: setting state to ready (no > timeout) > Attached to 0000:06:00.0 > Using controller INTEL SSDPEDMD400G4 (CVFT7203005M400LGN ) with 1 > namespaces. > Namespace ID: 1 size: 400GB > Initialization complete. > nvme_pcie.c:1541:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x103fe73000 len:512 > nvme_pcie.c:1568:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x451673000 > nvme_pcie.c:1541:nvme_pcie_prp_list_append: *INFO*: prp_index:0 > virt_addr:0x103fe73000 len:512 > nvme_pcie.c:1568:nvme_pcie_prp_list_append: *INFO*: prp1 =3D 0x451673000 > Hello world! > nvme_ctrlr.c: 512:nvme_ctrlr_shutdown: *INFO*: RTD3E =3D 0 us > nvme_ctrlr.c: 515:nvme_ctrlr_shutdown: *INFO*: shutdown timeout =3D 10000= ms > nvme_ctrlr.c: 525:nvme_ctrlr_shutdown: *INFO*: shutdown complete in 1808 > milliseconds > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sree= nivasa) > Busam (Stellus) > Sent: Tuesday, November 14, 2017 12:44 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Hi Daniel, > = > I added the debug flag you mentioned in the program and tested it. There = is > not much of any log which is helpful for the probe of the device. > Please ignore the printf from func pci_probe_all_drivers, it was printf a= dded > by me. > I have attached the file. > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sree= nivasa) > Busam (Stellus) > Sent: Tuesday, November 14, 2017 10:43 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Thanks Daniel for your comments. I think the SSD devices are of same model > looking at lspci output. > Let me confirm it with my lab administrator. > I will add the debug code and give you the output. > = > Sreeni > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Verkamp, Dan= iel > Sent: Tuesday, November 14, 2017 9:43 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > It looks to me like the device at 0000:ad:00.0 worked in both tests, and = the > device at 0000:ae:00.0 failed during identify and wasn=E2=80=99t used in = perf due to > the -r argument specifying only 0000:ad:00.0. > = > Are these two devices the same model/firmware of NVMe controller, or is t= here > some difference between them? > = > It would also be useful to see the debug output from the NVMe library for= the > failing controller; you can enable this in hello_world.c by adding these = two > lines at the beginning of main(): > = > spdk_log_set_print_level(SPDK_LOG_DEBUG); > spdk_log_set_trace_flag(=E2=80=9Call=E2=80=9D); > = > Thanks, > -- Daniel > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Luse, Paul E > Sent: Tuesday, November 14, 2017 6:46 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Well, maybe not. Could very well be an issue in the driver that=E2=80=99= s only > exposed via this hardware especially given that hello_world failed and pe= rf > did not. > = > Sreeni, do you have any other data points that you can share? Like, for > example, have you tried multiple SSDs of that same model or any other mod= el? > Does hello consistently fail and perf consistently pass? I haven=E2=80=99= t done a ton > of debug with either but with a little more info, if someone else doesn= =E2=80=99t jump > in with the answer, I can pretty easily help compare the init sequence in= a > few of these and maybe start to narrow down what=E2=80=99s different. > = > Thx > Paul > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Wu, WenzhongX > Sent: Tuesday, November 14, 2017 2:13 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Helloworld program fails during device initialization. > = > Hi Sreeni, > = > Verify with newest spdk source code with intel P3700 ,run helloword every= thing > is ok: > root(a)waikiki5-target:~/workspace/spdk1102/examples/nvme/hello_world# > ./hello_world > Starting DPDK 17.08.0 initialization... > [ DPDK EAL parameters: hello_world -c 0x1 --file-prefix=3Dspdk0 --base- > virtaddr=3D0x1000000000 --proc-type=3Dauto ] > EAL: Detected 36 lcore(s) > EAL: Auto-detected process type: PRIMARY > EAL: No free hugepages reported in hugepages-1048576kB > EAL: Probing VFIO support... > Initializing NVMe Controllers > EAL: PCI device 0000:81:00.0 on NUMA socket 1 > EAL: probe driver: 8086:953 spdk_nvme > Attaching to 0000:81:00.0 > EAL: PCI device 0000:84:00.0 on NUMA socket 1 > EAL: probe driver: 8086:953 spdk_nvme > Attaching to 0000:84:00.0 > EAL: PCI device 0000:85:00.0 on NUMA socket 1 > EAL: probe driver: 8086:953 spdk_nvme > Attaching to 0000:85:00.0 > Attached to 0000:85:00.0 > Using controller INTEL SSDPEDMD800G4 (PHFT6401011B800CGN ) with 1 > namespaces. > Namespace ID: 1 size: 800GB > Attached to 0000:81:00.0 > Using controller INTEL SSDPEDMD800G4 (PHFT5373002D800CGN ) with 1 > namespaces. > Namespace ID: 1 size: 800GB > Attached to 0000:84:00.0 > Using controller INTEL SSDPEDMD800G4 (PHFT53640003800CGN ) with 1 > namespaces. > Namespace ID: 1 size: 800GB > Initialization complete. > Hello world! > Hello world! > Hello world! > = > Seem it=E2=80=99s your hardware cause this issues. > = > Thanks > Wenzhong > = > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sree= nivasa) > Busam (Stellus) > Sent: Tuesday, November 14, 2017 2:36 PM > To: spdk(a)lists.01.org > Subject: [SPDK] Helloworld program fails during device initialization. > = > I was testing the helloworld program on ubuntu with NVMe SSD and the prob= e() > is failing. Please let me know if this is a known problem. > Let me know if there is workaround. > The perf program did not have any problem. > I have attached the output for both tests. > lspci| grep Non > ad:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe S= SD > Controller (rev 01) > ae:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe S= SD > Controller (rev 01) > uname -a > Linux sjca5radevct13 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 > 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux > 1. helloworld output: > --------------------------- > Attached to 0000:ad:00.0 > Using controller SAMSUNG MZQWV480HCGM (S1TRNYAFA00148 ) with 1 > namespaces. > Namespace ID: 1 size: 480GB > nvme_ctrlr.c:1475:nvme_ctrlr_process_init: *ERROR*: Initialization timed = out > in state 1 > nvme_ctrlr.c: 523:nvme_ctrlr_shutdown: *ERROR*: did not shutdown within 5 > seconds > spdk_nvme_probe() failed > = > 2. perf output: > sudo ./perf -q 1 -s 4096 -t 10 -w read -r "trtype:PCIe traddr:0000:ad:00.= 0" > --------------- > Starting DPDK 17.08.0 initialization... > [ DPDK EAL parameters: perf -c 0x1 --file-prefix=3Dspdk_pid7647 ] > EAL: Detected 32 lcore(s) > EAL: No free hugepages reported in hugepages-1048576kB > Attached to NVMe Controller at 0000:ad:00.0 [144d:a802] > Associating SAMSUNG MZQWV480HCGM (S1TRNYAFA00148 ) with lcore 0 > Initialization complete. Launching workers. > Starting thread on core 0 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > = > = = > Latency(us) > Device Information : IOPS = > MB/s Average min max > SAMSUNG MZQWV480HCGM (S1TRNYAFA00148 ) from core 0: 13773.50 = > 53.80 72.59 60.20 243.82 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > Total : 13773.50 = > 53.80 72.59 60.20 243.82 > = > Thanks for your help, > Sreeni > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk --===============9111902052197989936== Content-Type: application/x-pkcs7-signature MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" 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 npsySQSf0cxLmvA6/a4qPOUSitHit+cJQ58/EOt6PLrPGAbdu5sz9O+Iv+FUJakwUtg0sAY4RQID AQABo4ICNTCCAjEwHQYDVR0OBBYEFAU2hsr+3sx/M5e5WafmYD18VvX1MB8GA1UdIwQYMBaAFB5p KrTcKP5HGE4hCz+8rBEv8Jj1MGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly93d3cuaW50ZWwuY29t L3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUy MDRBLmNybDCBnwYIKwYBBQUHAQEEgZIwgY8waQYIKwYBBQUHMAKGXWh0dHA6Ly93d3cuaW50ZWwu Y29tL3JlcG9zaXRvcnkvY2VydGlmaWNhdGVzL0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElz c3VpbmclMjBDQSUyMDRBLmNydDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AuaW50ZWwuY29tLzAL BgNVHQ8EBAMCB4AwPAYJKwYBBAGCNxUHBC8wLQYlKwYBBAGCNxUIhsOMdYSZ5VGD/YEohY6fU4KR wAlngd69OZXwQwIBZAIBCTAfBgNVHSUEGDAWBggrBgEFBQcDBAYKKwYBBAGCNwoDDDApBgkrBgEE AYI3FQoEHDAaMAoGCCsGAQUFBwMEMAwGCisGAQQBgjcKAwwwTwYDVR0RBEgwRqApBgorBgEEAYI3 FAIDoBsMGWJlbmphbWluLndhbGtlckBpbnRlbC5jb22BGWJlbmphbWluLndhbGtlckBpbnRlbC5j b20wDQYJKoZIhvcNAQEFBQADggEBAMQUzXgrfwDLl92M7wNqp24Xe1poeurJ8YVAy5a2UukwC/uX uXE8Duoz2jMJL90QETn17H7EQQu1J7kc059H6GyDU42MkzPA3mqZQimrTgOaalPXxWXoVl/UUoLB PJZXGF3Ef1p8b1UVdSnZZ8wTD/QTUw7UhgljKZ1td/raLV1h96x6lKCVkZ0UKU8be5M3FHQ/GZJ9 CgUjvN0m2mYOUHDkNzsUTJb4bsV7vZDa3zixm4Gxu2F/uq328AEJ6JJmXA+jjFOzQ0FI8sa7XOSR 1UPvZSrwyA00M/zFZaDTln+sFPFNseYYGYFU7P711D8Wj1Hv1V/C2G4rSRBJG5f1WF8xggIXMIIC EwIBATCBkDB5MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC1NhbnRhIENsYXJh MRowGAYDVQQKExFJbnRlbCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgRXh0ZXJuYWwgQmFz aWMgSXNzdWluZyBDQSA0QQITMwAAi7krPkV7x3So3QAAAACLuTAJBgUrDgMCGgUAoF0wGAYJKoZI hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcxMTE0MjE0NDI3WjAjBgkqhkiG 9w0BCQQxFgQUjVF0nHlz8yC5kI5JtL9p2IQ57AkwDQYJKoZIhvcNAQEBBQAEggEAj5nJ8XXp32OS dyHR9I3AvP2fEooaoB+Kyy7P9pd0m9cXgdtd4/I5cbxLjfTVIklvT71ETovuOc3HXeP5aKXlwa/E imiJDI1J9qXBnx3LNJDekb75aL+Fj+ONwVF9FQdQJd2/SdGmJjjor/D5SYrdQvEUEkwRiy1HD0gS egsawi5n+GMVzpPIvGy1FLXqT8GpXVzMJlnNGtmetjW2p5nE/w+oSIcu9wBrQWoOC+aS9PfNYtB1 SK1JzNKEfe1YTu39gYUDb4WMUrl6/ojM2dE1El8DujffG+wTYWeKjEngzoJSIC2oBFd6s0Fyn7rX W9HdGWTFvfXyNbiP6mqDCLjTSgAAAAAAAA== --===============9111902052197989936==--