From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-f194.google.com ([209.85.215.194]:46545 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731121AbeGaXbx (ORCPT ); Tue, 31 Jul 2018 19:31:53 -0400 MIME-Version: 1.0 References: <20180731204236.3zrdclfbm5i3yaku@sernet.de> In-Reply-To: From: Steve French Date: Tue, 31 Jul 2018 16:49:19 -0500 Message-ID: Subject: Re: statistics on smb3 mount To: "Volker.Lendecke@sernet.de" , linux-fsdevel Cc: CIFS , samba-technical Content-Type: multipart/alternative; boundary="00000000000080e1680572528d26" Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --00000000000080e1680572528d26 Content-Type: text/plain; charset="UTF-8" On the subject of which statistics to display on a cifs/smb3 mount - one other example for comparison, mountstats. Note that nfs is the only filesystem which seems to display detailed information in /proc//mountstats See below sample output e.g. "cat /proc/1/mountstats" (would this be useful to add for cifs.ko? ie implementing "show_stats" superblock method as nfs does to display more detailed smb3 specific protocol statistics) device vmware-vmblock mounted on /run/vmblock-fuse with fstype fuse.vmware-vmblock device //localhost/test mounted on /mnt with fstype cifs device localhost:/nfsexport mounted on /mnt1 with fstype nfs4 statvers=1.1 opts: rw,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none age: 1191 impl_id: name='',domain='',date='0,0' caps: caps=0x1fbffff,wtmult=512,dtsize=32768,bsize=0,namlen=255 nfsv4: bm0=0xfdffbfff,bm1=0x40f9be3e,bm2=0x20803,acl=0x3,sessions,pnfs=not configured sec: flavor=1,pseudoflavor=1 events: 11 9 0 0 6 0 19 1 0 19 0 3 12 0 3 2 0 2 0 0 1 0 0 0 0 0 0 bytes: 471859200 5 0 0 503316480 5 122880 1 RPC iostats version: 1.0 p/v: 100003/4 (nfs) xprt: tcp 949 0 1 0 56 541 541 0 3932 0 11 13 3391 per-op statistics NULL: 0 0 0 0 0 0 0 0 READ: 480 480 0 115200 503366400 1216 1606 2827 WRITE: 1 1 0 268 176 0 4 4 COMMIT: 0 0 0 0 0 0 0 0 OPEN: 1 1 0 340 372 0 6 6 OPEN_CONFIRM: 0 0 0 0 0 0 0 0 OPEN_NOATTR: 1 1 0 292 352 0 0 0 OPEN_DOWNGRADE: 0 0 0 0 0 0 0 0 CLOSE: 2 2 0 480 288 0 0 0 SETATTR: 0 0 0 0 0 0 0 0 FSINFO: 1 1 0 188 164 0 0 0 ... On Tue, Jul 31, 2018 at 4:17 PM Steve French wrote: > > > On Tue, Jul 31, 2018 at 3:42 PM Volker Lendecke > wrote: > >> On Tue, Jul 31, 2018 at 03:21:02PM -0500, Steve French via >> samba-technical wrote: >> >> > There are other statistics that can be dumped in Windows redirector, but >> > those seem to be the most visible (those available via "net statistics >> > workstation"). Any other suggested statistics? >> >> Response times. I know they are more difficult to track, but a little >> logarithmic histogram might be doable. >> >> > Probably doable. What do you think of the output of iostat (here is > default iostat output)? > > $ iostat /dev/nvme0n1 > Linux 4.18.0-041800rc7-generic (smf-Thinkpad-P51) 07/31/2018 > _x86_64_ (8 CPU) > > avg-cpu: %user %nice %system %iowait %steal %idle > 11.74 0.19 5.31 0.05 0.00 82.71 > > Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn > nvme0n1 5.69 59.45 45.30 4187172 3190324 > > > Presumably nfsstats are not any more helpful - here is sample client stats > output from nfsstat > > $ nfsstat -c > Client rpc stats: > calls retrans authrefrsh > 522 0 522 > > Client nfs v4: > null read write commit > open > 1 0% 480 91% 1 0% 0 0% > 1 0% > open_conf open_noat open_dgrd close > setattr > 0 0% 1 0% 0 0% 2 0% > 0 0% > fsinfo renew setclntid confirm > lock > 3 0% 0 0% 0 0% 0 0% > 0 0% > lockt locku access getattr > lookup > 0 0% 0 0% 2 0% 12 2% > 2 0% > lookup_root remove rename link > symlink > 1 0% 0 0% 0 0% 0 0% > 0 0% > create pathconf statfs readlink > readdir > 0 0% 2 0% 2 0% 0 0% > 2 0% > server_caps delegreturn getacl setacl > fs_locations > 5 0% 0 0% 0 0% 0 0% > 0 0% > rel_lkowner secinfo fsid_present exchange_id > create_session > 0 0% 0 0% 0 0% 2 0% > 1 0% > destroy_session sequence get_lease_time reclaim_comp > layoutget > 0 0% 0 0% 0 0% 1 0% > 0 0% > getdevinfo layoutcommit layoutreturn secinfo_no > test_stateid > 0 0% 0 0% 0 0% 1 0% > 0 0% > free_stateid getdevicelist bind_conn_to_ses destroy_clientid > seek > 0 0% 0 0% 0 0% 0 0% > 0 0% > allocate deallocate layoutstats clone > 0 0% 0 0% 0 0% 0 0% > > -- > Thanks, > > Steve > -- Thanks, Steve --00000000000080e1680572528d26 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5PbiB0aGUgc3ViamVjdCBvZiB3aGljaCBzdGF0aXN0aWNzIHRv IGRpc3BsYXkgb24gYSBjaWZzL3NtYjMgbW91bnQgLSBvbmUgb3RoZXIgZXhhbXBsZSBmb3IgY29t cGFyaXNvbiwgbW91bnRzdGF0cy4gTm90ZSB0aGF0IG5mcyBpcyB0aGUgb25seSBmaWxlc3lzdGVt IHdoaWNoIHNlZW1zIHRvIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gaW4gL3Byb2MvJmx0 O3BpZCZndDsvbW91bnRzdGF0czwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U2VlIGJlbG93IHNh bXBsZSBvdXRwdXQgZS5nLiAmcXVvdDtjYXQgL3Byb2MvMS9tb3VudHN0YXRzJnF1b3Q7ICh3b3Vs ZCB0aGlzIGJlIHVzZWZ1bCB0byBhZGQgZm9yIGNpZnMua28/IGllIGltcGxlbWVudGluZyAmcXVv dDtzaG93X3N0YXRzJnF1b3Q7IHN1cGVyYmxvY2sgbWV0aG9kIGFzIG5mcyBkb2VzIHRvIGRpc3Bs YXkgbW9yZSBkZXRhaWxlZCBzbWIzIHNwZWNpZmljIHByb3RvY29sIHN0YXRpc3RpY3MpPGJyPjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ZGV2aWNlIHZtd2FyZS12bWJsb2NrIG1vdW50ZWQgb24g L3J1bi92bWJsb2NrLWZ1c2Ugd2l0aCBmc3R5cGUgZnVzZS52bXdhcmUtdm1ibG9jazxicj5kZXZp Y2UgLy9sb2NhbGhvc3QvdGVzdCBtb3VudGVkIG9uIC9tbnQgd2l0aCBmc3R5cGUgY2lmczxicj5k ZXZpY2UgbG9jYWxob3N0Oi9uZnNleHBvcnQgbW91bnRlZCBvbiAvbW50MSB3aXRoIGZzdHlwZSBu ZnM0IHN0YXR2ZXJzPTEuMTxicj7CoMKgwqAgb3B0czrCoMKgwqAgcncsdmVycz00LjIscnNpemU9 MTA0ODU3Nix3c2l6ZT0xMDQ4NTc2LG5hbWxlbj0yNTUsYWNyZWdtaW49MyxhY3JlZ21heD02MCxh Y2Rpcm1pbj0zMCxhY2Rpcm1heD02MCxoYXJkLHByb3RvPXRjcCx0aW1lbz02MDAscmV0cmFucz0y LHNlYz1zeXMsY2xpZW50YWRkcj0xMjcuMC4wLjEsbG9jYWxfbG9jaz1ub25lPGJyPsKgwqDCoCBh Z2U6wqDCoMKgIDExOTE8YnI+wqDCoMKgIGltcGxfaWQ6wqDCoMKgIG5hbWU9JiMzOTsmIzM5Oyxk b21haW49JiMzOTsmIzM5OyxkYXRlPSYjMzk7MCwwJiMzOTs8YnI+wqDCoMKgIGNhcHM6wqDCoMKg IGNhcHM9MHgxZmJmZmZmLHd0bXVsdD01MTIsZHRzaXplPTMyNzY4LGJzaXplPTAsbmFtbGVuPTI1 NTxicj7CoMKgwqAgbmZzdjQ6wqDCoMKgIGJtMD0weGZkZmZiZmZmLGJtMT0weDQwZjliZTNlLGJt Mj0weDIwODAzLGFjbD0weDMsc2Vzc2lvbnMscG5mcz1ub3QgY29uZmlndXJlZDxicj7CoMKgwqAg c2VjOsKgwqDCoCBmbGF2b3I9MSxwc2V1ZG9mbGF2b3I9MTxicj7CoMKgwqAgZXZlbnRzOsKgwqDC oCAxMSA5IDAgMCA2IDAgMTkgMSAwIDE5IDAgMyAxMiAwIDMgMiAwIDIgMCAwIDEgMCAwIDAgMCAw IDAgPGJyPsKgwqDCoCBieXRlczrCoMKgwqAgNDcxODU5MjAwIDUgMCAwIDUwMzMxNjQ4MCA1IDEy Mjg4MCAxIDxicj7CoMKgwqAgUlBDIGlvc3RhdHMgdmVyc2lvbjogMS4wwqAgcC92OiAxMDAwMDMv NCAobmZzKTxicj7CoMKgwqAgeHBydDrCoMKgwqAgdGNwIDk0OSAwIDEgMCA1NiA1NDEgNTQxIDAg MzkzMiAwIDExIDEzIDMzOTE8YnI+wqDCoMKgIHBlci1vcCBzdGF0aXN0aWNzPGJyPsKgwqDCoCDC oMKgwqDCoMKgwqDCoCBOVUxMOiAwIDAgMCAwIDAgMCAwIDA8YnI+wqDCoMKgIMKgwqDCoMKgwqDC oMKgIFJFQUQ6IDQ4MCA0ODAgMCAxMTUyMDAgNTAzMzY2NDAwIDEyMTYgMTYwNiAyODI3PGJyPsKg wqDCoCDCoMKgwqDCoMKgwqAgV1JJVEU6IDEgMSAwIDI2OCAxNzYgMCA0IDQ8YnI+wqDCoMKgIMKg wqDCoMKgwqAgQ09NTUlUOiAwIDAgMCAwIDAgMCAwIDA8YnI+wqDCoMKgIMKgwqDCoMKgwqDCoMKg IE9QRU46IDEgMSAwIDM0MCAzNzIgMCA2IDY8YnI+wqDCoMKgIE9QRU5fQ09ORklSTTogMCAwIDAg MCAwIDAgMCAwPGJyPsKgwqDCoCDCoE9QRU5fTk9BVFRSOiAxIDEgMCAyOTIgMzUyIDAgMCAwPGJy PsKgwqDCoCBPUEVOX0RPV05HUkFERTogMCAwIDAgMCAwIDAgMCAwPGJyPsKgwqDCoCDCoMKgwqDC oMKgwqAgQ0xPU0U6IDIgMiAwIDQ4MCAyODggMCAwIDA8YnI+wqDCoMKgIMKgwqDCoMKgIFNFVEFU VFI6IDAgMCAwIDAgMCAwIDAgMDxicj7CoMKgwqAgwqDCoMKgwqDCoCBGU0lORk86IDEgMSAwIDE4 OCAxNjQgMCAwIDA8YnI+Li4uPGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9x dW90ZSI+PGRpdiBkaXI9Imx0ciI+T24gVHVlLCBKdWwgMzEsIDIwMTggYXQgNDoxNyBQTSBTdGV2 ZSBGcmVuY2ggJmx0OzxhIGhyZWY9Im1haWx0bzpzbWZyZW5jaEBnbWFpbC5jb20iPnNtZnJlbmNo QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21h aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48YnI+PGJyPjxkaXYgY2xhc3M9 ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIj5PbiBUdWUsIEp1bCAzMSwgMjAxOCBhdCAzOjQy IFBNIFZvbGtlciBMZW5kZWNrZSAmbHQ7PGEgaHJlZj0ibWFpbHRvOlZvbGtlci5MZW5kZWNrZUBz ZXJuZXQuZGUiIHRhcmdldD0iX2JsYW5rIj5Wb2xrZXIuTGVuZGVja2VAc2VybmV0LmRlPC9hPiZn dDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwy MDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij5PbiBUdWUsIEp1bCAzMSwgMjAxOCBhdCAwMzoyMTow MlBNIC0wNTAwLCBTdGV2ZSBGcmVuY2ggdmlhIHNhbWJhLXRlY2huaWNhbCB3cm90ZTo8YnI+DQo8 YnI+DQomZ3Q7IFRoZXJlIGFyZSBvdGhlciBzdGF0aXN0aWNzIHRoYXQgY2FuIGJlIGR1bXBlZCBp biBXaW5kb3dzIHJlZGlyZWN0b3IsIGJ1dDxicj4NCiZndDsgdGhvc2Ugc2VlbSB0byBiZSB0aGUg bW9zdCB2aXNpYmxlICh0aG9zZSBhdmFpbGFibGUgdmlhICZxdW90O25ldCBzdGF0aXN0aWNzPGJy Pg0KJmd0OyB3b3Jrc3RhdGlvbiZxdW90OykuwqAgwqBBbnkgb3RoZXIgc3VnZ2VzdGVkIHN0YXRp c3RpY3M/PGJyPg0KPGJyPg0KUmVzcG9uc2UgdGltZXMuIEkga25vdyB0aGV5IGFyZSBtb3JlIGRp ZmZpY3VsdCB0byB0cmFjaywgYnV0IGEgbGl0dGxlPGJyPg0KbG9nYXJpdGhtaWMgaGlzdG9ncmFt IG1pZ2h0IGJlIGRvYWJsZS48YnI+DQo8YnIgY2xlYXI9ImFsbCI+PC9ibG9ja3F1b3RlPjxkaXY+ PGJyPjwvZGl2PjxkaXY+UHJvYmFibHkgZG9hYmxlLsKgIFdoYXQgZG8geW91IHRoaW5rIG9mIHRo ZSBvdXRwdXQgb2YgaW9zdGF0IChoZXJlIGlzIGRlZmF1bHQgaW9zdGF0IG91dHB1dCk/PGJyPjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+JCBpb3N0YXQgL2Rldi9udm1lMG4xPGJyPkxpbnV4IDQu MTguMC0wNDE4MDByYzctZ2VuZXJpYyAoc21mLVRoaW5rcGFkLVA1MSkgwqDCoMKgIDA3LzMxLzIw MTggwqDCoMKgIF94ODZfNjRfwqDCoMKgICg4IENQVSk8YnI+PGJyPmF2Zy1jcHU6wqAgJXVzZXLC oMKgICVuaWNlICVzeXN0ZW0gJWlvd2FpdMKgICVzdGVhbMKgwqAgJWlkbGU8YnI+wqDCoMKgwqDC oMKgwqDCoMKgIDExLjc0wqDCoMKgIDAuMTnCoMKgwqAgNS4zMcKgwqDCoCAwLjA1wqDCoMKgIDAu MDDCoMKgIDgyLjcxPGJyPjxicj5EZXZpY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHBzwqDC oMKgIGtCX3JlYWQvc8KgwqDCoCBrQl93cnRuL3PCoMKgwqAga0JfcmVhZMKgwqDCoCBrQl93cnRu PGJyPm52bWUwbjHCoMKgwqDCoMKgwqDCoMKgwqDCoCA1LjY5wqDCoMKgwqDCoMKgwqAgNTkuNDXC oMKgwqDCoMKgwqDCoCA0NS4zMMKgwqDCoCA0MTg3MTcywqDCoMKgIDMxOTAzMjQ8YnI+PGJyPjwv ZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UHJlc3VtYWJseSBuZnNzdGF0cyBhcmUgbm90 IGFueSBtb3JlIGhlbHBmdWwgLSBoZXJlIGlzIHNhbXBsZSBjbGllbnQgc3RhdHMgb3V0cHV0IGZy b20gbmZzc3RhdDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+JCBuZnNzdGF0IC1jPGJyPkNsaWVu dCBycGMgc3RhdHM6PGJyPmNhbGxzwqDCoMKgwqDCoCByZXRyYW5zwqDCoMKgIGF1dGhyZWZyc2g8 YnI+NTIywqDCoMKgwqDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqDCoCA1MjLCoMKgwqDCoCA8YnI+ PGJyPkNsaWVudCBuZnMgdjQ6PGJyPm51bGzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29tbWl0 wqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8YnI+McKg wqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCA0ODDCoMKgwqDCoMKgIDkxJcKgwqDCoMKgIDHCoMKg wqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAxwqDC oMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDxicj5vcGVuX2NvbmbCoMKgwqDCoMKgwqDCoCBvcGVu X25vYXTCoMKgwqDCoMKgwqDCoCBvcGVuX2RncmTCoMKgwqDCoMKgwqDCoCBjbG9zZcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc2V0YXR0csKgwqDCoMKgwqDCoMKgwqDCoCA8YnI+MMKgwqDCoMKgwqDC oMKgwqAgMCXCoMKgwqDCoCAxwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKg wqDCoMKgIDAlwqDCoMKgwqAgMsKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDC oMKgwqDCoCAwJcKgwqDCoMKgIDxicj5mc2luZm/CoMKgwqDCoMKgwqDCoMKgwqDCoCByZW5ld8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0Y2xudGlkwqDCoMKgwqDCoMKgwqAgY29uZmlybcKgwqDC oMKgwqDCoMKgwqDCoCBsb2NrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxicj4zwqDCoMKgwqDC oMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKg wqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDC oMKgwqDCoMKgIDAlwqDCoMKgwqAgPGJyPmxvY2t0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2Nr dcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjZXNzwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0YXR0 csKgwqDCoMKgwqDCoMKgwqDCoCBsb29rdXDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8YnI+MMKgwqDC oMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDLCoMKg wqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMTLCoMKgwqDCoMKgwqDCoCAyJcKgwqDCoMKgIDLCoMKg wqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgPGJyPmxvb2t1cF9yb290wqDCoMKgwqDCoCByZW1vdmXC oMKgwqDCoMKgwqDCoMKgwqDCoCByZW5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaW5rwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN5bWxpbmvCoMKgwqDCoMKgwqDCoMKgwqAgPGJyPjHCoMKgwqDC oMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKg wqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDC oMKgwqDCoMKgwqAgMCXCoMKgwqDCoCA8YnI+Y3JlYXRlwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGF0 aGNvbmbCoMKgwqDCoMKgwqDCoMKgIHN0YXRmc8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWRsaW5r wqDCoMKgwqDCoMKgwqDCoCByZWFkZGlywqDCoMKgwqDCoMKgwqDCoMKgIDxicj4wwqDCoMKgwqDC oMKgwqDCoCAwJcKgwqDCoMKgIDLCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMsKgwqDCoMKg wqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDLCoMKgwqDC oMKgwqDCoMKgIDAlwqDCoMKgwqAgPGJyPnNlcnZlcl9jYXBzwqDCoMKgwqDCoCBkZWxlZ3JldHVy bsKgwqDCoMKgwqAgZ2V0YWNswqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0YWNswqDCoMKgwqDCoMKg wqDCoMKgwqAgZnNfbG9jYXRpb25zwqDCoMKgwqAgPGJyPjXCoMKgwqDCoMKgwqDCoMKgIDAlwqDC oMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKg wqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCXC oMKgwqDCoCA8YnI+cmVsX2xrb3duZXLCoMKgwqDCoMKgIHNlY2luZm/CoMKgwqDCoMKgwqDCoMKg wqAgZnNpZF9wcmVzZW50wqDCoMKgwqAgZXhjaGFuZ2VfaWTCoMKgwqDCoMKgIGNyZWF0ZV9zZXNz aW9uwqDCoCA8YnI+MMKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDC oCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMsKgwqDCoMKgwqDCoMKg wqAgMCXCoMKgwqDCoCAxwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDxicj5kZXN0cm95X3Nl c3Npb27CoCBzZXF1ZW5jZcKgwqDCoMKgwqDCoMKgwqAgZ2V0X2xlYXNlX3RpbWXCoMKgIHJlY2xh aW1fY29tcMKgwqDCoMKgIGxheW91dGdldMKgwqDCoMKgwqDCoMKgIDxicj4wwqDCoMKgwqDCoMKg wqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKgwqDC oMKgwqAgMCXCoMKgwqDCoCAxwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKg wqDCoMKgIDAlwqDCoMKgwqAgPGJyPmdldGRldmluZm/CoMKgwqDCoMKgwqAgbGF5b3V0Y29tbWl0 wqDCoMKgwqAgbGF5b3V0cmV0dXJuwqDCoMKgwqAgc2VjaW5mb19ub8KgwqDCoMKgwqDCoCB0ZXN0 X3N0YXRlaWTCoMKgwqDCoCA8YnI+MMKgwqDCoMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKg wqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMcKgwqDC oMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDxicj5m cmVlX3N0YXRlaWTCoMKgwqDCoCBnZXRkZXZpY2VsaXN0wqDCoMKgIGJpbmRfY29ubl90b19zZXMg ZGVzdHJveV9jbGllbnRpZCBzZWVrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxicj4wwqDCoMKg wqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDC oMKgwqDCoMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKg wqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgPGJyPmFsbG9jYXRlwqDCoMKgwqDCoMKgwqDCoCBkZWFs bG9jYXRlwqDCoMKgwqDCoMKgIGxheW91dHN0YXRzwqDCoMKgwqDCoCBjbG9uZcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgPGJyPjDCoMKgwqDCoMKgwqDCoMKgIDAlwqDCoMKgwqAgMMKgwqDCoMKgwqDC oMKgwqAgMCXCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJcKgwqDCoMKgIDDCoMKgwqDCoMKg wqDCoMKgIDAlwqDCoCA8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+LS0gPGJyPjxkaXYgZGlyPSJs dHIiIGNsYXNzPSJtXzgxNjIyODk4MDg5Nzg2Mjg1NDBnbWFpbC1tXzI3NzkxODAwMDQ5MDE3MzE4 NTRnbWFpbF9zaWduYXR1cmUiPlRoYW5rcyw8YnI+PGJyPlN0ZXZlPC9kaXY+PC9kaXY+DQo8L2Js b2NrcXVvdGU+PC9kaXY+PGJyIGNsZWFyPSJhbGwiPjxicj4tLSA8YnI+PGRpdiBkaXI9Imx0ciIg Y2xhc3M9ImdtYWlsX3NpZ25hdHVyZSIgZGF0YS1zbWFydG1haWw9ImdtYWlsX3NpZ25hdHVyZSI+ VGhhbmtzLDxicj48YnI+U3RldmU8L2Rpdj4NCg== --00000000000080e1680572528d26--