From owner-freebsd-fs@FreeBSD.ORG Thu Oct 1 23:20:02 2009 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C872E106566B for ; Thu, 1 Oct 2009 23:20:02 +0000 (UTC) (envelope-from artemb@gmail.com) Received: from mail-gx0-f214.google.com (mail-gx0-f214.google.com [209.85.217.214]) by mx1.freebsd.org (Postfix) with ESMTP id 836C58FC17 for ; Thu, 1 Oct 2009 23:20:02 +0000 (UTC) Received: by gxk6 with SMTP id 6so713185gxk.13 for ; Thu, 01 Oct 2009 16:20:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type; bh=MSOzVI2EPYgyYZB4LLvZdXMG2gE1E0jNZeERMyf60WE=; b=n9MyBFlCLH+DSLFkWF/ogCvsCfeHwLlo2YlrV0RzP0BEd995Wobjd/EUJbbsDkMv3f 2ZAb2wl9xebqNxr4AyxEYjQDeRDXXu1GLGIdzxmRT5EAKCNyDl7g4b/LMwHTlmIL4kGG QAKYiy6YgnfzCkm3E9Vkbx2cIpiTD5ebo+H3k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=wU5CIDJdd0donHqJQoT5RSLIsrRpWtOc4aIPEeyjxaMz6movTBQkdkMwRKar6KYFG7 u8nrsHVxU0Ikvqj3rnSjGRgYrNSTMySrK9upniEIumVEG/taBZKC5+AxaqFegfiUe8aZ FfwnuJMiCempinWg2+pfhuI+7wzJPHTQ5gfeg= MIME-Version: 1.0 Sender: artemb@gmail.com Received: by 10.90.245.3 with SMTP id s3mr1036917agh.43.1254439201553; Thu, 01 Oct 2009 16:20:01 -0700 (PDT) In-Reply-To: References: <8c9ae7950910011322j1a6b66fcp73615cc17ae20328@mail.gmail.com> Date: Thu, 1 Oct 2009 16:20:01 -0700 X-Google-Sender-Auth: 91188a5231aff42b Message-ID: From: Artem Belevich To: Alexander Shevchenko Content-Type: multipart/mixed; boundary=00163628407a0040900474e7e3d9 Cc: freebsd-fs@freebsd.org Subject: Re: ARC & L2ARC efficiency X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Oct 2009 23:20:03 -0000 --00163628407a0040900474e7e3d9 Content-Type: text/plain; charset=ISO-8859-1 Here's another script: http://www.solarisinternals.com/wiki/index.php/Arcstat Attached hacked FreeBSD version. --Artem On Thu, Oct 1, 2009 at 4:00 PM, Artem Belevich wrote: > There's a pretty useful script to present ARC stats (alas, L2ARC info > is not included) in a readable way: > http://cuddletech.com/arc_summary/ > > I've attaches somewhat hacked (and a bit outdated) version that runs on FreeBSD. > > --Artem > > > > On Thu, Oct 1, 2009 at 1:22 PM, Alexander Shevchenko wrote: >> Good time of day! >> >> How could i check the efficiency of ARC? --00163628407a0040900474e7e3d9 Content-Type: application/octet-stream; name="arcstat.pl" Content-Disposition: attachment; filename="arcstat.pl" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0a4la4q1 IyEvYmluL3BlcmwgLXcKIwojIFByaW50IG91dCBaRlMgQVJDIFN0YXRpc3RpY3MgZXhwb3J0ZWQg dmlhIGtzdGF0KDEpCiMgRm9yIGEgZGVmaW5pdGlvbiBvZiBmaWVsZHMsIG9yIHVzYWdlLCB1c2Ug YXJjdHN0YXQucGwgLXYKIwojIEF1dGhvcjogTmVlbGFrYW50aCBOYWRnaXIgaHR0cDovL2Jsb2dz LnN1bi5jb20vcmVhbG5lZWwKIyBDb21tZW50cy9RdWVzdGlvbnMvRmVlZGJhY2sgdG8gbmVlbF9z dW4uY29tIG9yIG5lZWxfZ251Lm9yZwojCiMgQ0RETCBIRUFERVIgU1RBUlQKIyAKIyBUaGUgY29u dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUKIyBDb21t b24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMCBvbmx5 CiMgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g Y29tcGxpYW5jZQojIHdpdGggdGhlIExpY2Vuc2UuCiMgCiMgWW91IGNhbiBvYnRhaW4gYSBjb3B5 IG9mIHRoZSBsaWNlbnNlIGF0IHVzci9zcmMvT1BFTlNPTEFSSVMuTElDRU5TRQojIG9yIGh0dHA6 Ly93d3cub3BlbnNvbGFyaXMub3JnL29zL2xpY2Vuc2luZy4KIyBTZWUgdGhlIExpY2Vuc2UgZm9y IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKIyBhbmQgbGltaXRh dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMgCiMgV2hlbiBkaXN0cmlidXRpbmcgQ292ZXJlZCBD b2RlLCBpbmNsdWRlIHRoaXMgQ0RETCBIRUFERVIgaW4gZWFjaAojIGZpbGUgYW5kIGluY2x1ZGUg dGhlIExpY2Vuc2UgZmlsZSBhdCB1c3Ivc3JjL09QRU5TT0xBUklTLkxJQ0VOU0UuCiMgSWYgYXBw bGljYWJsZSwgYWRkIHRoZSBmb2xsb3dpbmcgYmVsb3cgdGhpcyBDRERMIEhFQURFUiwgd2l0aCB0 aGUKIyBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIiByZXBsYWNlZCB3aXRoIHlvdXIg b3duIGlkZW50aWZ5aW5nCiMgaW5mb3JtYXRpb246IFBvcnRpb25zIENvcHlyaWdodCBbeXl5eV0g W25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQojIAojIENEREwgSEVBREVSIEVORAojCiMKIyBGaWVs ZHMgaGF2ZSBhIGZpeGVkIHdpZHRoLiBFdmVyeSBpbnRlcnZhbCwgd2UgZmlsbCB0aGUgInYiCiMg aGFzaCB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlICh2W2ZpZWxkXT12YWx1ZSkgdXNpbmcg Y2FsY3VsYXRlKCkuIAojIEBoZHIgaXMgdGhlIGFycmF5IG9mIGZpZWxkcyB0aGF0IG5lZWRzIHRv IGJlIHByaW50ZWQsIHNvIHdlCiMganVzdCBpdGVyYXRlIG92ZXIgdGhpcyBhcnJheSBhbmQgcHJp bnQgdGhlIHZhbHVlcyB1c2luZyBvdXIgcHJldHR5IHByaW50ZXIuCgp1c2Ugc3RyaWN0Owp1c2Ug UE9TSVggcXcoc3RyZnRpbWUpOwojdXNlIFN1bjo6U29sYXJpczo6S3N0YXQ7CnVzZSBHZXRvcHQ6 Okxvbmc7CnVzZSBJTzo6SGFuZGxlOwoKbXkgJWNvbHMgPSAoIyBIRFIgPT4gW1NpemUsIERlc2Ny aXB0aW9uXQoJIlRpbWUiCT0+WzgsICJUaW1lIl0sCgkiaGl0cyIJPT5bNCwgIkFyYyByZWFkcyBw ZXIgc2Vjb25kIl0sCgkibWlzcyIJPT5bNCwgIkFyYyBtaXNzZXMgcGVyIHNlY29uZCJdLAoJInJl YWQiCT0+WzQsICJUb3RhbCBBcmMgYWNjZXNzZXMgcGVyIHNlY29uZCJdLAoJIkhpdCUiCT0+WzQs ICJBcmMgSGl0IHBlcmNlbnRhZ2UiXSwKCSJtaXNzJSIJPT5bNSwgIkFyYyBtaXNzIHBlcmNlbnRh Z2UiXSwKCSJkaGl0Igk9Pls0LCAiRGVtYW5kIERhdGEgaGl0cyBwZXIgc2Vjb25kIl0sCgkiZG1p cyIJPT5bNCwgIkRlbWFuZCBEYXRhIG1pc3NlcyBwZXIgc2Vjb25kIl0sCgkiZGglIgk9PlszLCAi RGVtYW5kIERhdGEgaGl0IHBlcmNlbnRhZ2UiXSwKCSJkbSUiCT0+WzMsICJEZW1hbmQgRGF0YSBt aXNzIHBlcmNlbnRhZ2UiXSwKCSJwaGl0Igk9Pls0LCAiUHJlZmV0Y2ggaGl0cyBwZXIgc2Vjb25k Il0sCgkicG1pcyIJPT5bNCwgIlByZWZldGNoIG1pc3NlcyBwZXIgc2Vjb25kIl0sCgkicGglIgk9 PlszLCAiUHJlZmV0Y2ggaGl0cyBwZXJjZW50YWdlIl0sCgkicG0lIgk9PlszLCAiUHJlZmV0Y2gg bWlzcyBwZXJjZW50YWdlIl0sCgkibWhpdCIJPT5bNCwgIk1ldGFkYXRhIGhpdHMgcGVyIHNlY29u ZCJdLAoJIm1taXMiCT0+WzQsICJNZXRhZGF0YSBtaXNzZXMgcGVyIHNlY29uZCJdLAoJIm1yZWFk Igk9Pls1LCAiTWV0YWRhdGEgYWNjZXNzZXMgcGVyIHNlY29uZCJdLAoJIm1oJSIJPT5bMywgIk1l dGFkYXRhIGhpdCBwZXJjZW50YWdlIl0sCgkibW0lIgk9PlszLCAiTWV0YWRhdGEgbWlzcyBwZXJj ZW50YWdlIl0sCgkiYXJjc3oiCT0+WzUsICJBcmMgU2l6ZSJdLAoJImMiIAk9Pls0LCAiQXJjIFRh cmdldCBTaXplIl0sCgkibWZ1IiAJPT5bNCwgIk1GVSBMaXN0IGhpdHMgcGVyIHNlY29uZCJdLAoJ Im1ydSIgCT0+WzQsICJNUlUgTGlzdCBoaXRzIHBlciBzZWNvbmQiXSwKCSJtZnVnIiAJPT5bNCwg Ik1GVSBHaG9zdCBMaXN0IGhpdHMgcGVyIHNlY29uZCJdLAoJIm1ydWciIAk9Pls0LCAiTVJVIEdo b3N0IExpc3QgaGl0cyBwZXIgc2Vjb25kIl0sCgkiZXNraXAiCT0+WzUsICJldmljdF9za2lwIHBl ciBzZWNvbmQiXSwKCSJtdHhtaXMiPT5bNiwgIm11dGV4X21pc3MgcGVyIHNlY29uZCJdLAoJInJt aXMiCT0+WzQsICJyZWN5Y2xlX21pc3MgcGVyIHNlY29uZCJdLAoJImRyZWFkIgk9Pls1LCAiRGVt YW5kIGRhdGEgYWNjZXNzZXMgcGVyIHNlY29uZCJdLAoJInByZWFkIgk9Pls1LCAiUHJlZmV0Y2gg YWNjZXNzZXMgcGVyIHNlY29uZCJdLAopOwpteSAldj0oKTsKbXkgQGhkciA9IHF3KFRpbWUgcmVh ZCBtaXNzIG1pc3MlIGRtaXMgZG0lIHBtaXMgcG0lIG1taXMgbW0lIGFyY3N6IGMpOwpteSBAeGhk ciA9IHF3KFRpbWUgbWZ1IG1ydSBtZnVnIG1ydWcgZXNraXAgbXR4bWlzIHJtaXMgZHJlYWQgcHJl YWQgcmVhZCk7Cm15ICRpbnQgPSAxOwkJIyBQcmludCBzdGF0cyBldmVyeSAxIHNlY29uZCBieSBk ZWZhdWx0Cm15ICRjb3VudCA9IDA7CQkjIFByaW50IHN0YXRzIGZvcmV2ZXIKbXkgJGhkcl9pbnRy ID0gMjA7CSMgUHJpbnQgaGVhZGVyIGV2ZXJ5IDIwIGxpbmVzIG9mIG91dHB1dApteSAkb3BmaWxl ID0gIiI7Cm15ICRzZXAgPSAiICAiOwkJIyBEZWZhdWx0IHNlcGVyYXRvciBpcyAyIHNwYWNlcwpt eSAkdmVyc2lvbiA9ICIwLjEiOwpteSAkY21kID0gIlVzYWdlOiBhcmNzdGF0LnBsIFstaHZ4XSBb LWYgZmllbGRzXSBbLW8gZmlsZV0gW2ludGVydmFsIFtjb3VudF1dXG4iOwpteSAlY3VyOwpteSAl ZDsKbXkgJG91dDsKbXkgJGtzdGF0OyAjID0gU3VuOjpTb2xhcmlzOjpLc3RhdC0+bmV3KCk7ClNU RE9VVC0+YXV0b2ZsdXNoOwoKc3ViIGtzdGF0X3VwZGF0ZSB7CglteSBAayA9IGBzeXNjdGwgJ2tz dGF0Lnpmcy5taXNjLmFyY3N0YXRzJ2A7CgoJdW5kZWYgJGtzdGF0OwoKCWZvcmVhY2ggbXkgJGsg KEBrKSB7CgkgIGNob21wICRrOwoJICBteSAoJG5hbWUsJHZhbHVlKSA9IHNwbGl0IC86LywgJGs7 CgkgIG15IEB6ID0gc3BsaXQgL1wuLywgJG5hbWU7CgkgIG15ICRuID0gcG9wIEB6OwoJICAke2tz dGF0fS0+e3pmc30tPnswfS0+e2FyY3N0YXRzfS0+eyRufSA9ICR2YWx1ZTsKCX0KfQoKc3ViIGRl dGFpbGVkX3VzYWdlIHsKCXByaW50IFNUREVSUiAiQXJjc3RhdCB2ZXJzaW9uICR2ZXJzaW9uXG4k Y21kIjsKCXByaW50IFNUREVSUiAiRmllbGQgZGVmaW5pdGlvbnMgYXJlIGFzIGZvbGxvd3NcbiI7 Cglmb3JlYWNoIG15ICRoZHIgKGtleXMgJWNvbHMpIHsKCQlwcmludCBTVERFUlIgc3ByaW50Zigi JTZzIDogJXNcbiIsICRoZHIsICRjb2xzeyRoZHJ9WzFdKTsKCX0KCXByaW50IFNUREVSUiAiXG5O b3RlOiBLPTEwXjMgTT0xMF42IEc9MTBeOSBhbmQgc28gb25cbiI7CglleGl0KDEpOwoKfQoKc3Vi IHVzYWdlIHsKCXByaW50IFNUREVSUiAiQXJjc3RhdCB2ZXJzaW9uICR2ZXJzaW9uXG4kY21kIjsK CXByaW50IFNUREVSUiAiXHQgLXggOiBQcmludCBleHRlbmRlZCBzdGF0c1xuIjsKCXByaW50IFNU REVSUiAiXHQgLWYgOiBTcGVjaWZ5IHNwZWNpZmljIGZpZWxkcyB0byBwcmludCAoc2VlIC12KVxu IjsKCXByaW50IFNUREVSUiAiXHQgLW8gOiBQcmludCBzdGF0cyB0byBmaWxlXG4iOwoJcHJpbnQg U1RERVJSICJcdCAtcyA6IFNwZWNpZnkgYSBzZXBlcmF0b3JcblxuRXhhbXBsZXM6XG4iOwoJcHJp bnQgU1RERVJSICJcdGFyY3N0YXQgLW8gL3RtcC9hLmxvZyAyIDEwXG4iOwoJcHJpbnQgU1RERVJS ICJcdGFyY3N0YXQgLXMgLCAtbyAvdG1wL2EubG9nIDIgMTBcbiI7CglwcmludCBTVERFUlIgIlx0 YXJjc3RhdCAtdlxuIjsKCXByaW50IFNUREVSUiAiXHRhcmNzdGF0IC1mIFRpbWUsSGl0JSxkaCUs cGglLG1oJVxuIjsKCWV4aXQoMSk7Cn0KCnN1YiBpbml0IHsKCW15ICRkZXNpcmVkX2NvbHM7Cglt eSAkeGZsYWcgPSAnJzsKCW15ICRoZmxhZyA9ICcnOwoJbXkgJHZmbGFnOwoJbXkgJHJlcyA9IEdl dE9wdGlvbnMoJ3gnID0+IFwkeGZsYWcsCgkJJ289cycgPT4gXCRvcGZpbGUsCgkJJ2hlbHB8aHw/ JyA9PiBcJGhmbGFnLAoJCSd2JyA9PiBcJHZmbGFnLAoJCSdzPXMnID0+IFwkc2VwLAoJCSdmPXMn ID0+IFwkZGVzaXJlZF9jb2xzKTsKCSRpbnQgPSAkQVJHVlswXSB8fCAkaW50OwoJJGNvdW50ID0g JEFSR1ZbMV0gfHwgJGNvdW50OwoJdXNhZ2UoKSBpZiAhJHJlcyBvciAkaGZsYWcgb3IgKCR4Zmxh ZyBhbmQgJGRlc2lyZWRfY29scyk7CglkZXRhaWxlZF91c2FnZSgpIGlmICR2ZmxhZzsKCUBoZHIg PSBAeGhkciBpZiAkeGZsYWc7CQkjcmVzZXQgaGVhZGVycyB0byB4aGRyCglpZiAoJGRlc2lyZWRf Y29scykgewoJCUBoZHIgPSBzcGxpdCgvWyAsXSsvLCAkZGVzaXJlZF9jb2xzKTsKCQkjIE5vdyBj aGVjayBpZiB0aGV5IGFyZSB2YWxpZCBmaWVsZHMKCQlteSBAaW52YWxpZCA9ICgpOwoJCWZvcmVh Y2ggbXkgJGVsZSAoQGhkcikgewoJCQlwdXNoKEBpbnZhbGlkLCAkZWxlKSBpZiBub3QgZXhpc3Rz KCRjb2xzeyRlbGV9KTsKCQl9CgkJaWYgKHNjYWxhciBAaW52YWxpZCA+IDApIHsKCQkJcHJpbnQg U1RERVJSICJJbnZhbGlkIGNvbHVtbiBkZWZpbml0aW9uISAtLSAiCgkJCQkuICJAaW52YWxpZFxu XG4iOwoJCQl1c2FnZSgpOwoJCX0KCX0KCWlmICgkb3BmaWxlKSB7CgkJb3Blbigkb3V0LCAiPiRv cGZpbGUiKSB8fGRpZSAiQ2Fubm90IG9wZW4gJG9wZmlsZSBmb3Igd3JpdGluZyI7CgkJJG91dC0+ YXV0b2ZsdXNoOwoJCXNlbGVjdCAkb3V0OwoJfQp9CgojIENhcHR1cmUga3N0YXQgc3RhdGlzdGlj cy4gV2UgbWFpbnRhaW4gMyBoYXNoZXMsIHByZXYsIGN1ciwgYW5kCiMgZCAoZGVsdGEpLiBBcyB0 aGVpciBuYW1lcyBpbXBseSB0aGV5IG1haW50YWluIHRoZSBwcmV2aW91cywgY3VycmVudCwKIyBh bmQgZGVsdGEgKGN1ciAtIHByZXYpIHN0YXRpc3RpY3MuCnN1YiBzbmFwX3N0YXRzIHsKCW15ICVw cmV2ID0gJWN1cjsKCWtzdGF0X3VwZGF0ZSgpOwoKCW15ICRoYXNocmVmX2N1ciA9ICRrc3RhdC0+ eyJ6ZnMifXswfXsiYXJjc3RhdHMifTsKCSVjdXIgPSAlJGhhc2hyZWZfY3VyOwoJZm9yZWFjaCBt eSAka2V5IChrZXlzICVjdXIpIHsKCQluZXh0IGlmICRrZXkgPX4gL2NsYXNzLzsKCQlpZiAoZGVm aW5lZCAkcHJldnska2V5fSkgewoJCQkkZHska2V5fSA9ICRjdXJ7JGtleX0gLSAkcHJldnska2V5 fTsKCQl9IGVsc2UgewoJCQkkZHska2V5fSA9ICRjdXJ7JGtleX07CgkJfQoJfQp9CgojIFByZXR0 eSBwcmludCBudW0uIEFyZ3VtZW50cyBhcmUgd2lkdGggYW5kIG51bQpzdWIgcHJldHR5bnVtIHsK CW15IEBzdWZmaXg9KCcgJywnSycsICdNJywgJ0cnLCAnVCcsICdQJywgJ0UnLCAnWicpOwoJbXkg JG51bSA9ICRfWzFdIHx8IDA7CglteSAkc3ogPSAkX1swXTsKCW15ICRpbmRleCA9IDA7CglyZXR1 cm4gc3ByaW50ZigiJXMiLCAkbnVtKSBpZiBub3QgJG51bSA9fiAvXlswLTlcLl0rJC87Cgl3aGls ZSAoJG51bSA+IDEwMDAgYW5kICRpbmRleCA8IDgpIHsKCQkkbnVtID0gJG51bS8xMDAwOwoJCSRp bmRleCsrOwoJfQoJcmV0dXJuIHNwcmludGYoIiUqZCIsICRzeiwgJG51bSkgaWYgKCRpbmRleCA9 PSAwKTsKCXJldHVybiBzcHJpbnRmKCIlKmQlcyIsICRzeiAtIDEsICRudW0sJHN1ZmZpeFskaW5k ZXhdKTsKfQoKc3ViIHByaW50X3ZhbHVlcyB7Cglmb3JlYWNoIG15ICRjb2wgKEBoZHIpIHsKCQlw cmludGYoIiVzJXMiLCBwcmV0dHludW0oJGNvbHN7JGNvbH1bMF0sICR2eyRjb2x9KSwgJHNlcCk7 Cgl9CglwcmludGYoIlxuIik7Cn0KCnN1YiBwcmludF9oZWFkZXIgewoJZm9yZWFjaCBteSAkY29s IChAaGRyKSB7CgkJcHJpbnRmKCIlKnMlcyIsICRjb2xzeyRjb2x9WzBdLCAkY29sLCAkc2VwKTsK CX0KCXByaW50ZigiXG4iKTsKfQoKc3ViIGNhbGN1bGF0ZSB7Cgkldj0oKTsKCSR2eyJUaW1lIn0g PSBzdHJmdGltZSgiJUg6JU06JVMiLCBsb2NhbHRpbWUpOwoJJHZ7ImhpdHMifSA9ICRkeyJoaXRz In0vJGludDsKCSR2eyJtaXNzIn0gPSAkZHsibWlzc2VzIn0vJGludDsKCSR2eyJyZWFkIn0gPSAk dnsiaGl0cyJ9ICsgJHZ7Im1pc3MifTsKCSR2eyJIaXQlIn0gPSAxMDAqJHZ7ImhpdHMifS8kdnsi cmVhZCJ9IGlmICR2eyJyZWFkIn0gPiAwOwoJJHZ7Im1pc3MlIn0gPSAxMDAgLSAkdnsiSGl0JSJ9 IGlmICR2eyJyZWFkIn0gPiAwOwoKCSR2eyJkaGl0In0gPSAoJGR7ImRlbWFuZF9kYXRhX2hpdHMi fSArICRkeyJkZW1hbmRfbWV0YWRhdGFfaGl0cyJ9KS8kaW50OwoJJHZ7ImRtaXMifSA9ICgkZHsi ZGVtYW5kX2RhdGFfbWlzc2VzIn0rJGR7ImRlbWFuZF9tZXRhZGF0YV9taXNzZXMifSkvJGludDsK CSR2eyJkcmVhZCJ9ID0gJHZ7ImRoaXQifSArICR2eyJkbWlzIn07CgkkdnsiZGglIn0gPSAxMDAq JHZ7ImRoaXQifS8kdnsiZHJlYWQifSBpZiAkdnsiZHJlYWQifSA+IDA7CgkkdnsiZG0lIn0gPSAx MDAgLSAkdnsiZGglIn0gaWYgJHZ7ImRyZWFkIn0gPiAwOwoKCSR2eyJwaGl0In09KCRkeyJwcmVm ZXRjaF9kYXRhX2hpdHMifSArICRkeyJwcmVmZXRjaF9tZXRhZGF0YV9oaXRzIn0pLyRpbnQ7Cgkk dnsicG1pcyJ9PSgkZHsicHJlZmV0Y2hfZGF0YV9taXNzZXMifQoJCSskZHsicHJlZmV0Y2hfbWV0 YWRhdGFfbWlzc2VzIn0pLyRpbnQ7CgkkdnsicHJlYWQifSA9ICR2eyJwaGl0In0gKyAkdnsicG1p cyJ9OwoJJHZ7InBoJSJ9ID0gMTAwKiR2eyJwaGl0In0vJHZ7InByZWFkIn0gaWYgJHZ7InByZWFk In0gPiAwOwoJJHZ7InBtJSJ9ID0gMTAwIC0gJHZ7InBoJSJ9IGlmICR2eyJwcmVhZCJ9ID4gMDsK CgkkdnsibWhpdCJ9PSgkZHsicHJlZmV0Y2hfbWV0YWRhdGFfaGl0cyJ9KyRkeyJkZW1hbmRfbWV0 YWRhdGFfaGl0cyJ9KS8kaW50OwoJJHZ7Im1taXMifT0oJGR7InByZWZldGNoX21ldGFkYXRhX21p c3NlcyJ9CgkJKyRkeyJkZW1hbmRfbWV0YWRhdGFfbWlzc2VzIn0pLyRpbnQ7CgkkdnsibXJlYWQi fSA9ICR2eyJtaGl0In0gKyAkdnsibW1pcyJ9OwoJJHZ7Im1oJSJ9ID0gMTAwKiR2eyJtaGl0In0v JHZ7Im1yZWFkIn0gaWYgJHZ7Im1yZWFkIn0gPiAwOwoJJHZ7Im1tJSJ9ID0gMTAwIC0gJHZ7Im1o JSJ9IGlmICR2eyJtcmVhZCJ9ID4gMDsKCgkkdnsiYXJjc3oifSA9ICRjdXJ7InNpemUifTsKCSR2 eyJjIn0gPSAkY3VyeyJjIn07CgkkdnsibWZ1In0gPSAkZHsiaGl0cyJ9LyRpbnQ7CgkkdnsibXJ1 In0gPSAkZHsibXJ1X2hpdHMifS8kaW50OwoJJHZ7Im1ydWcifSA9ICRkeyJtcnVfZ2hvc3RfaGl0 cyJ9LyRpbnQ7CgkkdnsibWZ1ZyJ9ID0gJGR7Im1ydV9naG9zdF9oaXRzIn0vJGludDsKCSR2eyJl c2tpcCJ9ID0gJGR7ImV2aWN0X3NraXAifS8kaW50OwoJJHZ7InJtaXNzIn0gPSAkZHsicmVjeWNs ZV9taXNzIn0vJGludDsKCSR2eyJtdHhtaXMifSA9ICRkeyJtdXRleF9taXNzIn0vJGludDsKfQoK c3ViIG1haW4gewoJbXkgJGkgPSAwOwoJbXkgJGNvdW50X2ZsYWcgPSAwOwoKCWluaXQoKTsKCWlm ICgkY291bnQgPiAwKSB7ICRjb3VudF9mbGFnID0gMTsgfQoJd2hpbGUgKDEpIHsKCQlwcmludF9o ZWFkZXIoKSBpZiAoJGkgPT0gMCk7CgkJc25hcF9zdGF0cygpOwoJCWNhbGN1bGF0ZSgpOwoJCXBy aW50X3ZhbHVlcygpOwoJCWxhc3QgaWYgKCRjb3VudF9mbGFnID09IDEgJiYgJGNvdW50LS0gPD0g MSk7CgkJJGkgPSAoJGkgPT0gJGhkcl9pbnRyKSA/IDAgOiAkaSsxOwoJCXNsZWVwKCRpbnQpOwoJ fQoJY2xvc2UoJG91dCkgaWYgZGVmaW5lZCAkb3V0Owp9CgombWFpbjsK --00163628407a0040900474e7e3d9--