From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30606 invoked by alias); 18 Apr 2012 08:49:28 -0000 Received: (qmail 30590 invoked by uid 22791); 18 Apr 2012 08:49:22 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qa0-f48.google.com (HELO mail-qa0-f48.google.com) (209.85.216.48) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Apr 2012 08:49:08 +0000 Received: by qam2 with SMTP id 2so282404qam.0 for ; Wed, 18 Apr 2012 01:49:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=C4bYhXwec0dJC7fKyCl29S4swHwVMdkhp1rd8uTInvY=; b=ShNUQcVBoUdNxXs/YWeIAFkr4++y0kEYUGRRxdYweSI9oK2gsp9ZUuheouUe93/TOF U53lyT1Et9OzaT7UTa+psH29ilOxhzJg2j/yQrlYWufAVtd72b2Aiwn9e89CtzmAc0PR 5X5r1scOKCs9Tt/zhDe2vKTzNEjYyW/lq3Cm/fLyK3zNbdMukiau97bu6vHaDyPJOiME g7C3haXzxPbFwyJMGZJYJWzg5+1dON0i7iL/nqxn6KXakw6ZpO0BjUDbRi4hz+dYcwWL SCN3brkBlrRnm+IDbgZPoHbDdkCqVlMaLelalZFsYdMfVCT0GxWbqLaUT6aWe1a7JOLn OM4A== Received: by 10.224.175.67 with SMTP id w3mr2248807qaz.82.1334738947707; Wed, 18 Apr 2012 01:49:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.175.67 with SMTP id w3mr2248796qaz.82.1334738947611; Wed, 18 Apr 2012 01:49:07 -0700 (PDT) Received: by 10.224.35.2 with HTTP; Wed, 18 Apr 2012 01:49:07 -0700 (PDT) In-Reply-To: References: <831unms3jy.fsf@gnu.org> Date: Wed, 18 Apr 2012 09:15:00 -0000 Message-ID: Subject: Re: [RFC - Python scripting] New methods Symtab.global_block and Symtab.static_block (docs included) From: Siva Chandra To: Eli Zaretskii Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf303b4175d71b0104bdf020c2 X-System-Of-Record: true X-Gm-Message-State: ALoCoQnT+UkPJg55VmvpiDrUvFcg3bnMWrYRqGbItn72NGfRJkj3v2/bOdBQK9/iGGrJFjpjsrmOpddnPBH0AcGzN43MBRJ5UFcCiWeiMyRRBFFBVW/Mq2neZNM1tNlyv9o+01bY67wZSzmOBVoBqOHJRqWGZ/kWxg== X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00544.txt.bz2 --20cf303b4175d71b0104bdf020c2 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2208 >> +@defun Symtab.global_block () >> +Return the global block of the underlying symbol table. Note that, >> +though highly unlikely, the returned @code{gdb.Block} objects are not >> +guaranteed to be identical across different @value{GDBN} releases. >> +@end defun >> + >> +@defun Symtab.static_block () >> +Return the static block of the underlying symbol table. Note that, >> +though highly unlikely, the returned @code{gdb.Block} objects are not >> +guaranteed to be identical across different @value{GDBN} releases. >> +@end defun Eli> I think it would be a good idea to have here a cross-reference to Eli> "Blocks in Python". Eli> Eli> Also, the 2 identical sentences about the objects not being preserved Eli> across GDB releases should probably be replaced by just one sentence, Eli> saying this for both types of blocks. Thanks Eli, for taking a look. I have modified according to your comments. I would like you to take a look at the doc changes again since the suggestion wasn't objective for the second change. ChangeLog correction pointed to by Phil, and the use of accessor macros as suggested by Tom, are also in the attached patch. Code: 2012-04-18 Siva Chandra Reddy Add two new methods global_block and static_block to gdb.Symtab objects. * NEWS (Python scripting): Add entry about the new methods. * python/py-symtab.c (stpy_global_block): New function which implements the gdb.Symtab.global_block() method. (stpy_static_block): New function which implements the gdb.Symtab.static_block() method. (symtab_object_methods): Add entries for the two new methods. Testsuite: 2012-04-18 Siva Chandra Reddy * gdb.python/py-symbol.exp: Add tests to test the new methods gdb.Symtab.global_block() and gdb.Symtab.static_block(). * gdb.python/py-symbol.c: Add new struct to help test gdb.Symtab.static_block(). Docs: 2012-04-18 Siva Chandra Reddy * gdb.texinfo (Symbol Tables In Python): Add documentation about the new methods global_block and static_block on gdb.Symtab objects. Thanks, Siva Chandra --20cf303b4175d71b0104bdf020c2 Content-Type: text/plain; charset=US-ASCII; name="symtab_blocks_patch_v2.txt" Content-Disposition: attachment; filename="symtab_blocks_patch_v2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h164wf460 Content-length: 9061 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjUxMApkaWZmIC11IC1wIC1yMS41MTAgTkVXUwotLS0gTkVXUwkxNyBBcHIg MjAxMiAxNTo1NjoyMSAtMDAwMAkxLjUxMAorKysgTkVXUwkxOCBBcHIgMjAx MiAwNjoyNzoxNiAtMDAwMApAQCAtMzIsNiArMzIsMTAgQEAKICAgKiogQSBu ZXcgbWV0aG9kICdyZWZlcmVuY2VkX3ZhbHVlJyBvbiBnZGIuVmFsdWUgb2Jq ZWN0cyB3aGljaCBjYW4KICAgICAgZGVyZWZlcmVuY2UgcG9pbnRlciBhcyB3 ZWxsIGFzIEMrKyByZWZlcmVuY2UgdmFsdWVzLgogCisgICoqIE5ldyBtZXRo b2RzICdnbG9iYWxfYmxvY2snIGFuZCAnc3RhdGljX2Jsb2NrJyBvbiBnZGIu U3ltdGFiIG9iamVjdHMKKyAgICAgd2hpY2ggcmV0dXJuIHRoZSBnbG9iYWwg YW5kIHN0YXRpYyBibG9ja3MgKGFzIGdkYi5CbG9jayBvYmplY3RzKSwKKyAg ICAgb2YgdGhlIHVuZGVybHlpbmcgc3ltYm9sIHRhYmxlLCByZXNwZWN0aXZl bHkuCisKICogR0RCc2VydmVyIG5vdyBzdXBwb3J0cyBzdGRpbyBjb25uZWN0 aW9ucy4KICAgRS5nLiAoZ2RiKSB0YXJnZXQgcmVtb3RlIHwgc3NoIG15aG9z dCBnZGJzZXJ2ZXIgLSBoZWxsbwogCkluZGV4OiBkb2MvZ2RiLnRleGluZm8K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9kb2MvZ2RiLnRleGluZm8sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu OTQ0CmRpZmYgLXUgLXAgLXIxLjk0NCBnZGIudGV4aW5mbwotLS0gZG9jL2dk Yi50ZXhpbmZvCTE3IEFwciAyMDEyIDE1OjU2OjIxIC0wMDAwCTEuOTQ0Cisr KyBkb2MvZ2RiLnRleGluZm8JMTggQXByIDIwMTIgMDY6Mjc6NTUgLTAwMDAK QEAgLTI0OTIwLDggKzI0OTIwLDIzIEBAIGlmIGl0IGlzIGludmFsaWQgYXQg dGhlIHRpbWUgdGhlIG1ldGhvZCAKIEBkZWZ1biBTeW10YWIuZnVsbG5hbWUg KCkKIFJldHVybiB0aGUgc3ltYm9sIHRhYmxlJ3Mgc291cmNlIGFic29sdXRl IGZpbGUgbmFtZS4KIEBlbmQgZGVmdW4KKworQGRlZnVuIFN5bXRhYi5nbG9i YWxfYmxvY2sgKCkKK1JldHVybiB0aGUgZ2xvYmFsIGJsb2NrIG9mIHRoZSB1 bmRlcmx5aW5nIHN5bWJvbCB0YWJsZS4KK0B4cmVme0Jsb2NrcyBJbiBQeXRo b259LgorQGVuZCBkZWZ1bgorCitAZGVmdW4gU3ltdGFiLnN0YXRpY19ibG9j ayAoKQorUmV0dXJuIHRoZSBzdGF0aWMgYmxvY2sgb2YgdGhlIHVuZGVybHlp bmcgc3ltYm9sIHRhYmxlLgorQHhyZWZ7QmxvY2tzIEluIFB5dGhvbn0uCitA ZW5kIGRlZnVuCiBAZW5kIHRhYmxlCiAKK05vdGUgdGhhdCwgdGhvdWdoIGhp Z2hseSB1bmxpa2VseSwgdGhlIEBjb2Rle2dkYi5CbG9ja30gb2JqZWN0cyBy ZXR1cm5lZAorYnkgdGhlIG1ldGhvZHMgQGNvZGV7U3ltdGFiLmdsb2JhbF9i bG9jayAoKX0gYW5kCitAY29kZXtTeW10YWIuc3RhdGljX2Jsb2NrICgpfSBh cmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaWRlbnRpY2FsIGFjcm9zcworZGlm ZmVyZW50IEB2YWx1ZXtHREJOfSByZWxlYXNlcy4KKwogQG5vZGUgQnJlYWtw b2ludHMgSW4gUHl0aG9uCiBAc3Vic3Vic2VjdGlvbiBNYW5pcHVsYXRpbmcg YnJlYWtwb2ludHMgdXNpbmcgUHl0aG9uCiAKSW5kZXg6IHB5dGhvbi9weS1z eW10YWIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL3B5dGhvbi9weS1zeW10YWIuYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS44CmRpZmYgLXUgLXAgLXIxLjggcHktc3ltdGFiLmMKLS0t IHB5dGhvbi9weS1zeW10YWIuYwk0IEphbiAyMDEyIDA4OjE3OjI1IC0wMDAw CTEuOAorKysgcHl0aG9uL3B5LXN5bXRhYi5jCTE4IEFwciAyMDEyIDA2OjI3 OjU1IC0wMDAwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAic291cmNl LmgiCiAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCiAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKKyNpbmNsdWRlICJibG9jay5oIgogCiB0eXBlZGVmIHN0 cnVjdCBzdHB5X3N5bXRhYl9vYmplY3QgewogICBQeU9iamVjdF9IRUFECkBA IC0xNTMsNiArMTU0LDM4IEBAIHN0cHlfaXNfdmFsaWQgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAKICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKKy8qIFJl dHVybiB0aGUgR0xPQkFMX0JMT0NLIG9mIHRoZSB1bmRlcmx5aW5nIHN5bXRh Yi4gICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHB5X2dsb2JhbF9ibG9j ayAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBzdHJ1 Y3Qgc3ltdGFiICpzeW10YWIgPSBOVUxMOworICBzdHJ1Y3QgYmxvY2sgKmJs b2NrID0gTlVMTDsKKyAgc3RydWN0IGJsb2NrdmVjdG9yICpibG9ja3ZlY3Rv cjsKKworICBTVFBZX1JFUVVJUkVfVkFMSUQgKHNlbGYsIHN5bXRhYik7CisK KyAgYmxvY2t2ZWN0b3IgPSBCTE9DS1ZFQ1RPUiAoc3ltdGFiKTsKKyAgYmxv Y2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYmxvY2t2ZWN0b3IsIEdMT0JBTF9C TE9DSyk7CisgIHJldHVybiBibG9ja190b19ibG9ja19vYmplY3QgKGJsb2Nr LCBzeW10YWItPm9iamZpbGUpOworfQorCisvKiBSZXR1cm4gdGhlIFNUQVRJ Q19CTE9DSyBvZiB0aGUgdW5kZXJseWluZyBzeW10YWIuICAqLworCitzdGF0 aWMgUHlPYmplY3QgKgorc3RweV9zdGF0aWNfYmxvY2sgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgc3RydWN0IHN5bXRhYiAqc3lt dGFiID0gTlVMTDsKKyAgc3RydWN0IGJsb2NrICpibG9jayA9IE5VTEw7Cisg IHN0cnVjdCBibG9ja3ZlY3RvciAqYmxvY2t2ZWN0b3I7CisKKyAgU1RQWV9S RVFVSVJFX1ZBTElEIChzZWxmLCBzeW10YWIpOworCisgIGJsb2NrdmVjdG9y ID0gQkxPQ0tWRUNUT1IgKHN5bXRhYik7CisgIGJsb2NrID0gQkxPQ0tWRUNU T1JfQkxPQ0sgKGJsb2NrdmVjdG9yLCBTVEFUSUNfQkxPQ0spOworICByZXR1 cm4gYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChibG9jaywgc3ltdGFiLT5vYmpm aWxlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHNhbHB5X3N0ciAoUHlP YmplY3QgKnNlbGYpCiB7CkBAIC00NzcsNiArNTEwLDEyIEBAIFJldHVybiB0 cnVlIGlmIHRoaXMgc3ltYm9sIHRhYmxlIGlzIHZhbGkKICAgeyAiZnVsbG5h bWUiLCBzdHB5X2Z1bGxuYW1lLCBNRVRIX05PQVJHUywKICAgICAiZnVsbG5h bWUgKCkgLT4gU3RyaW5nLlxuXAogUmV0dXJuIHRoZSBzeW10YWIncyBmdWxs IHNvdXJjZSBmaWxlbmFtZS4iIH0sCisgIHsgImdsb2JhbF9ibG9jayIsIHN0 cHlfZ2xvYmFsX2Jsb2NrLCBNRVRIX05PQVJHUywKKyAgICAiZ2xvYmFsX2Js b2NrICgpIC0+IGdkYi5CbG9jay5cblwKK1JldHVybiB0aGUgZ2xvYmFsIGJs b2NrIG9mIHRoZSBzeW1ib2wgdGFibGUuIiB9LAorICB7ICJzdGF0aWNfYmxv Y2siLCBzdHB5X3N0YXRpY19ibG9jaywgTUVUSF9OT0FSR1MsCisgICAgInN0 YXRpY19ibG9jayAoKSAtPiBnZGIuQmxvY2suXG5cCitSZXR1cm4gdGhlIHN0 YXRpYyBibG9jayBvZiB0aGUgc3ltYm9sIHRhYmxlLiIgfSwKICAge05VTEx9 ICAvKiBTZW50aW5lbCAqLwogfTsKIApJbmRleDogdGVzdHN1aXRlL2dkYi5w eXRob24vcHktc3ltYm9sLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1zeW1ib2wuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXUg LXAgLXIxLjUgcHktc3ltYm9sLmMKLS0tIHRlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXN5bWJvbC5jCTcgRmViIDIwMTIgMTk6NDc6MTYgLTAwMDAJMS41Cisr KyB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zeW1ib2wuYwkxOCBBcHIgMjAx MiAwNjoyNzo1NiAtMDAwMApAQCAtNDQsNiArNDQsMTEgQEAgaW50IGZ1bmMg KGludCBhcmcpCiAgIHJldHVybiBhcmc7IC8qIEJsb2NrIGJyZWFrIGhlcmUu ICAqLwogfQogCitzdHJ1Y3Qgc2ltcGxlX3N0cnVjdAoreworICBpbnQgYTsK K307CisKIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogewog I2lmZGVmIF9fY3BsdXNwbHVzCkBAIC01MSw2ICs1Niw3IEBAIGludCBtYWlu IChpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2VuZGlmCiAgIGludCBhID0g MDsKICAgaW50IHJlc3VsdDsKKyAgc3RydWN0IHNpbXBsZV9zdHJ1Y3Qgc3Mg PSB7IDEwIH07CiAgIGVudW0gdGFnIHtvbmUsIHR3bywgdGhyZWV9OwogICBl bnVtIHRhZyB0ID0gb25lOwogCkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1zeW10YWIuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt c3ltdGFiLmV4cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLXUg LXAgLXIxLjggcHktc3ltdGFiLmV4cAotLS0gdGVzdHN1aXRlL2dkYi5weXRo b24vcHktc3ltdGFiLmV4cAk3IEZlYiAyMDEyIDE5OjQyOjI3IC0wMDAwCTEu OAorKysgdGVzdHN1aXRlL2dkYi5weXRob24vcHktc3ltdGFiLmV4cAkxOCBB cHIgMjAxMiAwNjoyNzo1NiAtMDAwMApAQCAtNDksNiArNDksMTEgQEAgZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJsb2NrIGJyZWFrIAogZ2RiX3B5 X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGZyYW1lID0gZ2RiLnNlbGVjdGVk X2ZyYW1lKCkiICJHZXQgRnJhbWUiIDAKIGdkYl9weV90ZXN0X3NpbGVudF9j bWQgInB5dGhvbiBzYWwgPSBmcmFtZS5maW5kX3NhbCgpIiAiR2V0IGJsb2Nr IiAwCiBnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3ltdGFiID0g c2FsLnN5bXRhYiIgIkdldCBibG9jayIgMAorZ2RiX3B5X3Rlc3Rfc2lsZW50 X2NtZCAicHl0aG9uIGdsb2JhbF9ibG9jayA9IHN5bXRhYi5nbG9iYWxfYmxv Y2soKSIgIkdldCBnbG9iYWwgYmxvY2siIDAKK2dkYl9weV90ZXN0X3NpbGVu dF9jbWQgInB5dGhvbiBzdGF0aWNfYmxvY2sgPSBzeW10YWIuc3RhdGljX2Js b2NrKCkiICJHZXQgc3RhdGljIGJsb2NrIiAwCitnZGJfcHlfdGVzdF9zaWxl bnRfY21kICJweXRob24gZ2xvYmFsX3N5bWJvbHMgPSBcW1xdOyBzdGF0aWNf c3ltYm9scyA9IFxbXF0iICJTZXQgdXAgc3ltYm9sIG5hbWUgbGlzdHMiIDAK K2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmb3Igc3ltIGluIGds b2JhbF9ibG9jazogZ2xvYmFsX3N5bWJvbHMuYXBwZW5kKHN5bS5uYW1lKSIg IkdldCBnbG9iYWwgc3ltYm9sIG5hbWVzIiAwCitnZGJfcHlfdGVzdF9zaWxl bnRfY21kICJweXRob24gZm9yIHN5bSBpbiBzdGF0aWNfYmxvY2s6IHN0YXRp Y19zeW1ib2xzLmFwcGVuZChzeW0ubmFtZSkiICJHZXQgc3RhdGljIHN5bWJv bCBuYW1lcyIgMAogCiAjIFRlc3Qgc2FsLgogZ2RiX3Rlc3QgInB5dGhvbiBw cmludCBzYWwuc3ltdGFiIiAiLipnZGIucHl0aG9uL3B5LXN5bWJvbC5jLioi ICJUZXN0IHN5bXRhYiIKQEAgLTYxLDYgKzY2LDEyIEBAIGdkYl90ZXN0ICJw eXRob24gcHJpbnQgc3ltdGFiLmZpbGVuYW1lIiAKIGdkYl90ZXN0ICJweXRo b24gcHJpbnQgc3ltdGFiLm9iamZpbGUiICI8Z2RiLk9iamZpbGUgb2JqZWN0 IGF0ICR7aGV4fT4iICJUZXN0IHN5bXRhYi5vYmpmaWxlIgogZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCBzeW10YWIuZnVsbG5hbWUoKSIgInRlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXN5bWJvbC5jLioiICJUZXN0IHN5bXRhYi5mdWxsbmFt ZSIKIGdkYl90ZXN0ICJweXRob24gcHJpbnQgc3ltdGFiLmlzX3ZhbGlkKCki ICJUcnVlIiAiVGVzdCBzeW10YWIuaXNfdmFsaWQoKSIKK2dkYl90ZXN0ICJw eXRob24gcHJpbnQgXCJxcVwiIGluIGdsb2JhbF9zeW1ib2xzIiAiVHJ1ZSIg IlRlc3QgcXEgaW4gZ2xvYmFsIHN5bWJvbHMiCitnZGJfdGVzdCAicHl0aG9u IHByaW50IFwiZnVuY1wiIGluIGdsb2JhbF9zeW1ib2xzIiAiVHJ1ZSIgIlRl c3QgZnVuYyBpbiBnbG9iYWwgc3ltYm9scyIKK2dkYl90ZXN0ICJweXRob24g cHJpbnQgXCJtYWluXCIgaW4gZ2xvYmFsX3N5bWJvbHMiICJUcnVlIiAiVGVz dCBtYWluIGluIGdsb2JhbCBzeW1ib2xzIgorZ2RiX3Rlc3QgInB5dGhvbiBw cmludCBcImludFwiIGluIHN0YXRpY19zeW1ib2xzIiAiVHJ1ZSIgIlRlc3Qg aW50IGluIHN0YXRpYyBzeW1ib2xzIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCBcImNoYXJcIiBpbiBzdGF0aWNfc3ltYm9scyIgIlRydWUiICJUZXN0IGNo YXIgaW4gc3RhdGljIHN5bWJvbHMiCitnZGJfdGVzdCAicHl0aG9uIHByaW50 IFwic2ltcGxlX3N0cnVjdFwiIGluIHN0YXRpY19zeW1ib2xzIiAiVHJ1ZSIg IlRlc3Qgc2ltcGxlX3N0cnVjdCBpbiBzdGF0aWMgc3ltYm9scyIKIAogIyBU ZXN0IGlzX3ZhbGlkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQuICBU aGlzIG11c3QgYmUgdGhlIGxhc3QKICMgdGVzdCBhcyBpdCB1bmxvYWRzIHRo ZSBvYmplY3QgZmlsZSBpbiBHREIuCg== --20cf303b4175d71b0104bdf020c2--