From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28266 invoked by alias); 22 Aug 2013 13:13:11 -0000 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 Received: (qmail 28251 invoked by uid 89); 22 Aug 2013 13:13:10 -0000 X-Spam-SWARE-Status: No, score=-4.8 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL autolearn=ham version=3.3.2 Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 22 Aug 2013 13:13:09 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1VCUhH-0004dY-47 from Muhammad_Waqas@mentor.com ; Thu, 22 Aug 2013 06:13:07 -0700 Received: from SVR-IES-FEM-04.mgc.mentorg.com ([137.202.0.110]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 22 Aug 2013 06:13:06 -0700 Received: from EU-MBX-04.mgc.mentorg.com ([169.254.4.127]) by SVR-IES-FEM-04.mgc.mentorg.com ([137.202.0.110]) with mapi id 14.02.0247.003; Thu, 22 Aug 2013 14:13:05 +0100 From: "Waqas, Muhammad" To: Pedro Alves CC: "gdb-patches@sourceware.org" Subject: RE: [PATCH] fix PR-15501 Date: Thu, 22 Aug 2013 13:13:00 -0000 Message-ID: <53A5AC689E2AD547AE0EA5642E101306BB63F5@EU-MBX-04.mgc.mentorg.com> References: <520A0453.4070309@codesourcery.com> <520A6EEB.8010808@redhat.com> <520CAE24.7050301@codesourcery.com>,<52153C74.7080708@redhat.com> <53A5AC689E2AD547AE0EA5642E101306BB6120@EU-MBX-04.mgc.mentorg.com>,<5215FDBE.1060209@redhat.com> In-Reply-To: <5215FDBE.1060209@redhat.com> Content-Type: multipart/mixed; boundary="_002_53A5AC689E2AD547AE0EA5642E101306BB63F5EUMBX04mgcmentorg_" MIME-Version: 1.0 X-Virus-Found: No X-SW-Source: 2013-08/txt/msg00632.txt.bz2 --_002_53A5AC689E2AD547AE0EA5642E101306BB63F5EUMBX04mgcmentorg_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 9450 Thanks. Now carefully remove all typo error. ________________________________________ From: Pedro Alves [palves@redhat.com] Sent: Thursday, August 22, 2013 5:02 PM To: Waqas, Muhammad Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] fix PR-15501 On 08/22/2013 10:36 AM, Waqas, Muhammad wrote: > +# This proc will be able to perform test for disable/enable > +# commads on multiple locations and breakpoints, > +# if args will be according to below explained values. > +# Here arg are > +# "what" is command (disable/enable), > +# "what_res" is for breakpoints should be enabled or not, > +# "p1/p2" are proc(pass/fail) but must be opposite. > +# > +# Here arg's values > +# If "what" =3D "disable" then > +# "what_res" =3D "n" > +# "p1" =3D "pass" > +# "p2" =3D "fail". > +# > +# If "what" =3D "enable" then > +# "what_res" =3D "y" > +# "p1" =3D "fail" > +# "p2" =3D "pass". Thanks. I suggest this edit then: # Perform tests for disable/enable commands on multiple # locations and breakpoints. # # WHAT - the command to test (disable/enable), # WHAT_RES - whether breakpoints are expected to end # up enabled or disabled. # P1/P2 - proc to call (pass/fail). Must be # opposites. # # Furthermore, arguments must follow these rules: # # If "what" =3D "disable" then # "what_res" =3D "n" # "p1" =3D "pass" # "p2" =3D "fail". # # If "what" =3D "enable" then # "what_res" =3D "y" # "p1" =3D "fail" # "p2" =3D "pass". # > + > +proc test_ena_dis_br { what what_res p1 p2 } { > + global b1 > + global b2 > + global b3 > + global b4 > + global gdb_prompt > + > + # Now enable/disable $b.1 $b2.1. > + gdb_test_no_output "$what $b1.1 $b2.1" "$what \$b1.1 \$b2.1" > + set test1 "${what}d \$b1.1 and \$b2.1" > + > + # Now $b1.1 and $b2.1 should be enabled/disabled > + gdb_test_multiple "info break" "$test1" { > + -re "(${b1}.1)(\[^\n\r\]*)( n.*)(${b2}.1)(\[^\n\r\]*)( n.*)$gdb_p= rompt $" { > + $p1 "$test1" > + } > + -re ".*$gdb_prompt $" { > + $p2 "$test1" > + } > + } > + > + # Now enable/disbale $b1 fooo.1, it should give error on fooo. Typo: disbale. > + # Now enable/disbale $b1 fooo.1, it should give error on fooo. > + gdb_test "$what $b1 fooo.1" \ > + "Bad breakpoint number 'fooo'" \ > + "$what \$b1 fooo.1" > + > + # $b1 should be enabled/disabled. > + gdb_test "info break" \ > + "(${b1})(\[^\n\r]*)( $what_res.*)" \ > + "${what}d \$b1" > + > + # Here "oppos" is commmand that should be opposite of "what". > + set oppos "enable" > + set oppos_res "y" > + > + if { $what =3D=3D "enable" } { > + set oppos "disable" > + set oppos_res "n" Indentation is wrong here. If we're doing this, then one has to wonder why does the routine expect all these arguments: # If "what" =3D "disable" then # "what_res" =3D "n" # "p1" =3D "pass" # "p2" =3D "fail". # # If "what" =3D "enable" then # "what_res" =3D "y" # "p1" =3D "fail" # "p2" =3D "pass". ... instead of accepting only "what", and computing the rest from that itself. This is good to only receive "what" and computing the rest from that itself. I fixed this. > + Spurious newline. > + } > + > + gdb_test_no_output "$oppos $b3" "$oppos \$b3" > + gdb_test_no_output "$what $b4 $b3.1" "$what \$b4 \$b3.1" > + set test1 "${what}d \$b4 and \$b3.1,remain ${oppos}d \$b3" > + > + # Now $b4 $b3.1 should be enabled/disabled and > + # $b3 should remain enabled/disabled enabled/disabled ... enabled/disabled That's confusing, and says practically nothing... They're all either enabled or disabled. I suggest adjusting all these comments to be written in terms of "enabled", with the disabled state written on the right, in parens. So that'd be: # Now $b4 $b3.1 should be enabled(disabled) and # $b3 should remain disabled(enabled). So, when reading this, one now clearly understands that $b3 should end up in the opposite state of$b4 $b3.1 (it that's what should happen). fixed > + gdb_test_multiple "info break" "$test1" { > + -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b3}.1)(\[^\n\r\]*)( n.*)= (${b4})(\[^\n\r\]*)( $what_res.*)$gdb_prompt $" { > + $p1 "$test1" > + } > + -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b4})(\[^\n\r\]*)( $what_= res.*)$gdb_prompt $" { > + $p2 "$test1" > + } > + } > + > + # Now enable/disable $b4.1 fooobaar and > + # it should give warning on fooobaar. > + gdb_test "$what $b4.1 fooobaar" \ > + "warning: bad breakpoint number at or near 'fooobaar'" \ > + "$what \$b4.1 fooobar" > + set test1 "${what}d \$b4.1" > + > + # $b4.1 should be enabled/disbaled Typo. Please remember to always self review for typos. I think I'm noticing them at all iterations. I will be careful now on. > + gdb_test_multiple "info break" "$test1" { > + -re "(${b4}.1)(\[^\n\r\]*)( n.*)$gdb_prompt $" { > + $p1 "$test1" > + } > + -re ".*$gdb_prompt $" { > + $p2 "$test1" > + } > + } > +} > + > +test_ena_dis_br "disable" "n" "pass" "fail" > +test_ena_dis_br "enable" "y" "fail" "pass" > + > gdb_exit > return 0 Thanks, -- Pedro Alves Also find the attachment for same patch. gdb/ChangeLog 2013-08-12 Muhammad Waqas PR gdb/15501 * breakpoint.c (enable_command, disable_command): Iterate over all specified breakpoint locations. testsuite/ChangeLog 2013-07-12 Muhammad Waqas PR gdb/15501 * gdb.base/ena-dis-br.exp: Add test to verify enable/disable commands work correctly with multiple arguments that include multiple locations. Index: ena-dis-br.exp =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=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/testsuite/gdb.base/ena-dis-br.exp,v retrieving revision 1.22 diff -u -p -r1.22 ena-dis-br.exp --- ena-dis-br.exp 27 Jun 2013 18:50:30 -0000 1.22 +++ ena-dis-br.exp 22 Aug 2013 13:00:14 -0000 @@ -301,5 +301,114 @@ gdb_test_multiple "continue 2" "$test" { } } =20 +# Verify that GDB correctly handles the "enable/disable" command +# with arguments, that include multiple locations. +# +if ![runto_main] then { fail "enable/disable break tests suppressed" } + +set b1 0 +set b2 0 +set b3 0 +set b4 0 +set b1 [break_at main ""] +set b2 [break_at main ""] +set b3 [break_at main ""] +set b4 [break_at main ""] + +# Perform tests for disable/enable commands on multiple +# locations and breakpoints. +# +# WHAT - the command to test (disable/enable). +# +proc test_ena_dis_br { what } { + global b1 + global b2 + global b3 + global b4 + global gdb_prompt +=20=20=20=20 + # OPPOS - the command opposite to WHAT. + # WHAT_RES - whether breakpoints are expected to end + # up enabled or disabled. + # OPPOS_RES- same as WHAT_RES but opposite. + # P1/P2 - proc to call (pass/fail). Must be + # opposites. + # Set variable values for disable command. + set oppos "enable" + set oppos_res "y" + set what_res "n" + set p1 "pass" + set p2 "fail" + + if { "$what" =3D=3D "enable" } { + # Set variable values for enable command. + set oppos "disable" + set oppos_res "n" + set what_res "y" + set p1 "fail" + set p2 "pass" + + } + + # Now enable(disable) $b.1 $b2.1. + gdb_test_no_output "$what $b1.1 $b2.1" "$what \$b1.1 \$b2.1" + set test1 "${what}d \$b1.1 and \$b2.1" + + # Now $b1.1 and $b2.1 should be enabled(disabled) + gdb_test_multiple "info break" "$test1" { + -re "(${b1}.1)(\[^\n\r\]*)( n.*)(${b2}.1)(\[^\n\r\]*)( n.*)$gdb_pro= mpt $" { + $p1 "$test1" + } + -re ".*$gdb_prompt $" { + $p2 "$test1" + } + } + + # Now enable(disable) $b1 fooo.1, it should give error on fooo. + gdb_test "$what $b1 fooo.1" \ + "Bad breakpoint number 'fooo'" \ + "$what \$b1 fooo.1" + + # $b1 should be enabled(disabled). + gdb_test "info break" \ + "(${b1})(\[^\n\r]*)( $what_res.*)" \ + "${what}d \$b1" + + gdb_test_no_output "$oppos $b3" "$oppos \$b3" + gdb_test_no_output "$what $b4 $b3.1" "$what \$b4 \$b3.1" + set test1 "${what}d \$b4 and \$b3.1,remain ${oppos}d \$b3" + + # Now $b4 $b3.1 should be enabled(disabled) and + # $b3 should remain disabled(enabled) + gdb_test_multiple "info break" "$test1" { + -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b3}.1)(\[^\n\r\]*)( n.*)($= {b4})(\[^\n\r\]*)( $what_res.*)$gdb_prompt $" { + $p1 "$test1" + } + -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b4})(\[^\n\r\]*)( $what_re= s.*)$gdb_prompt $" { + $p2 "$test1" + } + } + + # Now enable(disable) $b4.1 fooobaar and + # it should give warning on fooobaar. + gdb_test "$what $b4.1 fooobaar" \ + "warning: bad breakpoint number at or near 'fooobaar'" \ + "$what \$b4.1 fooobar" + set test1 "${what}d \$b4.1" + + # $b4.1 should be enabled(disabled) + gdb_test_multiple "info break" "$test1" { + -re "(${b4}.1)(\[^\n\r\]*)( n.*)$gdb_prompt $" { + $p1 "$test1" + } + -re ".*$gdb_prompt $" { + $p2 "$test1" + } + } +} + +test_ena_dis_br "disable" +test_ena_dis_br "enable" + gdb_exit return 0 --_002_53A5AC689E2AD547AE0EA5642E101306BB63F5EUMBX04mgcmentorg_ Content-Type: text/x-patch; name="ena-dis-br.exp.patch" Content-Description: ena-dis-br.exp.patch Content-Disposition: attachment; filename="ena-dis-br.exp.patch"; size=3590; creation-date="Thu, 22 Aug 2013 13:11:56 GMT"; modification-date="Thu, 22 Aug 2013 13:11:56 GMT" Content-Transfer-Encoding: base64 Content-length: 4868 SW5kZXg6IGVuYS1kaXMtYnIuZXhwCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2VuYS1kaXMtYnIuZXhwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyCmRp ZmYgLXUgLXAgLXIxLjIyIGVuYS1kaXMtYnIuZXhwCi0tLSBlbmEtZGlzLWJy LmV4cAkyNyBKdW4gMjAxMyAxODo1MDozMCAtMDAwMAkxLjIyCisrKyBlbmEt ZGlzLWJyLmV4cAkyMiBBdWcgMjAxMyAxMzowMDoxNCAtMDAwMApAQCAtMzAx LDUgKzMwMSwxMTQgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIDIi ICIkdGVzdCIgewogICAgIH0KIH0KIAorIyBWZXJpZnkgdGhhdCBHREIgY29y cmVjdGx5IGhhbmRsZXMgdGhlICJlbmFibGUvZGlzYWJsZSIgY29tbWFuZAor IyB3aXRoIGFyZ3VtZW50cywgdGhhdCBpbmNsdWRlIG11bHRpcGxlIGxvY2F0 aW9ucy4KKyMKK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZhaWwgImVuYWJs ZS9kaXNhYmxlIGJyZWFrIHRlc3RzIHN1cHByZXNzZWQiIH0KKworc2V0IGIx IDAKK3NldCBiMiAwCitzZXQgYjMgMAorc2V0IGI0IDAKK3NldCBiMSBbYnJl YWtfYXQgbWFpbiAiIl0KK3NldCBiMiBbYnJlYWtfYXQgbWFpbiAiIl0KK3Nl dCBiMyBbYnJlYWtfYXQgbWFpbiAiIl0KK3NldCBiNCBbYnJlYWtfYXQgbWFp biAiIl0KKworIyBQZXJmb3JtIHRlc3RzIGZvciBkaXNhYmxlL2VuYWJsZSBj b21tYW5kcyBvbiBtdWx0aXBsZQorIyBsb2NhdGlvbnMgYW5kIGJyZWFrcG9p bnRzLgorIworIyBXSEFUICAgICAtIHRoZSBjb21tYW5kIHRvIHRlc3QgKGRp c2FibGUvZW5hYmxlKS4KKyMKK3Byb2MgdGVzdF9lbmFfZGlzX2JyIHsgd2hh dCB9IHsKKyAgICBnbG9iYWwgYjEKKyAgICBnbG9iYWwgYjIKKyAgICBnbG9i YWwgYjMKKyAgICBnbG9iYWwgYjQKKyAgICBnbG9iYWwgZ2RiX3Byb21wdAor ICAgIAorICAgICMgT1BQT1MgICAgLSB0aGUgY29tbWFuZCBvcHBvc2l0ZSB0 byBXSEFULgorICAgICMgV0hBVF9SRVMgLSB3aGV0aGVyIGJyZWFrcG9pbnRz IGFyZSBleHBlY3RlZCB0byBlbmQKKyAgICAjICAgICAgICAgICAgdXAgZW5h YmxlZCBvciBkaXNhYmxlZC4KKyAgICAjIE9QUE9TX1JFUy0gc2FtZSBhcyBX SEFUX1JFUyBidXQgb3Bwb3NpdGUuCisgICAgIyBQMS9QMiAgICAtIHByb2Mg dG8gY2FsbCAocGFzcy9mYWlsKS4gIE11c3QgYmUKKyAgICAjICAgICAgICAg ICAgb3Bwb3NpdGVzLgorICAgICMgU2V0IHZhcmlhYmxlIHZhbHVlcyBmb3Ig ZGlzYWJsZSBjb21tYW5kLgorICAgIHNldCBvcHBvcyAiZW5hYmxlIgorICAg IHNldCBvcHBvc19yZXMgInkiCisgICAgc2V0IHdoYXRfcmVzICJuIgorICAg IHNldCBwMSAicGFzcyIKKyAgICBzZXQgcDIgImZhaWwiCisKKyAgICBpZiB7 ICIkd2hhdCIgPT0gImVuYWJsZSIgfSB7CisJIyBTZXQgdmFyaWJhbGUgdmFs dWVzIGZvciBlbmFibGUgY29tbWFuZC4KKwlzZXQgb3Bwb3MgImRpc2FibGUi CisJc2V0IG9wcG9zX3JlcyAibiIKKwlzZXQgd2hhdF9yZXMgInkiCisJc2V0 IHAxICJmYWlsIgorCXNldCBwMiAicGFzcyIKKworICAgIH0KKworICAgICMg Tm93IGVuYWJsZShkaXNhYmxlKSAkYi4xICRiMi4xLgorICAgIGdkYl90ZXN0 X25vX291dHB1dCAiJHdoYXQgJGIxLjEgJGIyLjEiICIkd2hhdCBcJGIxLjEg XCRiMi4xIgorICAgIHNldCB0ZXN0MSAiJHt3aGF0fWQgXCRiMS4xIGFuZCBc JGIyLjEiCisKKyAgICAjIE5vdyAkYjEuMSBhbmQgJGIyLjEgc2hvdWxkIGJl IGVuYWJsZWQoZGlzYWJsZWQpCisgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImlu Zm8gYnJlYWsiICIkdGVzdDEiIHsKKyAgICAgICAtcmUgIigke2IxfS4xKShc W15cblxyXF0qKSggbi4qKSgke2IyfS4xKShcW15cblxyXF0qKSggbi4qKSRn ZGJfcHJvbXB0ICQiIHsKKyAgICAgICAgICAgJHAxICIkdGVzdDEiCisgICAg ICAgfQorICAgICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7CisgICAgICAg ICAgICRwMiAiJHRlc3QxIgorICAgICAgIH0KKyAgICB9CisKKyAgICAjIE5v dyBlbmFibGUoZGlzYWJsZSkgJGIxIGZvb28uMSwgaXQgc2hvdWxkIGdpdmUg ZXJyb3Igb24gZm9vby4KKyAgICBnZGJfdGVzdCAiJHdoYXQgJGIxIGZvb28u MSIgXAorICAgICAgICJCYWQgYnJlYWtwb2ludCBudW1iZXIgJ2Zvb28nIiBc CisgICAgICAgIiR3aGF0IFwkYjEgZm9vby4xIgorCisgICAgIyAkYjEgc2hv dWxkIGJlIGVuYWJsZWQoZGlzYWJsZWQpLgorICAgIGdkYl90ZXN0ICJpbmZv IGJyZWFrIiBcCisgICAgICAgIigke2IxfSkoXFteXG5ccl0qKSggJHdoYXRf cmVzLiopIiBcCisgICAgICAgIiR7d2hhdH1kIFwkYjEiCisKKyAgICBnZGJf dGVzdF9ub19vdXRwdXQgIiRvcHBvcyAkYjMiICIkb3Bwb3MgXCRiMyIKKyAg ICBnZGJfdGVzdF9ub19vdXRwdXQgIiR3aGF0ICRiNCAkYjMuMSIgIiR3aGF0 IFwkYjQgXCRiMy4xIgorICAgIHNldCB0ZXN0MSAiJHt3aGF0fWQgXCRiNCBh bmQgXCRiMy4xLHJlbWFpbiAke29wcG9zfWQgXCRiMyIKKworICAgICMgTm93 ICRiNCAkYjMuMSBzaG91bGQgYmUgZW5hYmxlZChkaXNhYmxlZCkgYW5kCisg ICAgIyAkYjMgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZChlbmFibGVkKQorICAg IGdkYl90ZXN0X211bHRpcGxlICJpbmZvIGJyZWFrIiAiJHRlc3QxIiB7Cisg ICAgICAgLXJlICIoJHtiM30pKFxbXlxuXHJdKikoICRvcHBvc19yZXMuKiko JHtiM30uMSkoXFteXG5cclxdKikoIG4uKikoJHtiNH0pKFxbXlxuXHJcXSop KCAkd2hhdF9yZXMuKikkZ2RiX3Byb21wdCAkIiB7CisgICAgICAgICAgICRw MSAiJHRlc3QxIgorICAgICAgIH0KKyAgICAgICAtcmUgIigke2IzfSkoXFte XG5ccl0qKSggJG9wcG9zX3Jlcy4qKSgke2I0fSkoXFteXG5cclxdKikoICR3 aGF0X3Jlcy4qKSRnZGJfcHJvbXB0ICQiIHsKKyAgICAgICAgICAgJHAyICIk dGVzdDEiCisgICAgICAgfQorICAgIH0KKworICAgICMgTm93IGVuYWJsZShk aXNhYmxlKSAkYjQuMSBmb29vYmFhciBhbmQKKyAgICAjIGl0IHNob3VsZCBn aXZlIHdhcm5pbmcgb24gZm9vb2JhYXIuCisgICAgZ2RiX3Rlc3QgIiR3aGF0 ICRiNC4xIGZvb29iYWFyIiBcCisgICAgICAgIndhcm5pbmc6IGJhZCBicmVh a3BvaW50IG51bWJlciBhdCBvciBuZWFyICdmb29vYmFhciciIFwKKyAgICAg ICAiJHdoYXQgXCRiNC4xIGZvb29iYXIiCisgICAgc2V0IHRlc3QxICIke3do YXR9ZCBcJGI0LjEiCisKKyAgICAjICRiNC4xIHNob3VsZCBiZSBlbmFibGVk KGRpc2FibGVkKQorICAgIGdkYl90ZXN0X211bHRpcGxlICJpbmZvIGJyZWFr IiAiJHRlc3QxIiB7CisgICAgICAgIC1yZSAiKCR7YjR9LjEpKFxbXlxuXHJc XSopKCBuLiopJGdkYl9wcm9tcHQgJCIgeworICAgICAgICAgICAkcDEgIiR0 ZXN0MSIKKyAgICAgICB9CisgICAgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQi IHsKKyAgICAgICAgICAgJHAyICIkdGVzdDEiCisgICAgICAgfQorICAgIH0K K30KKwordGVzdF9lbmFfZGlzX2JyICJkaXNhYmxlIgordGVzdF9lbmFfZGlz X2JyICJlbmFibGUiCisKIGdkYl9leGl0CiByZXR1cm4gMAo= --_002_53A5AC689E2AD547AE0EA5642E101306BB63F5EUMBX04mgcmentorg_--