From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Hartwig Newsgroups: gmane.lisp.guile.devel Subject: [PATCH] In string-split, add support for character sets and predicates. Date: Mon, 8 Oct 2012 19:23:09 +0800 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d043c08604608f504cb8a727a X-Trace: ger.gmane.org 1349695402 14393 80.91.229.3 (8 Oct 2012 11:23:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 8 Oct 2012 11:23:22 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Oct 08 13:23:28 2012 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TLBQm-0003Ew-5V for guile-devel@m.gmane.org; Mon, 08 Oct 2012 13:23:28 +0200 Original-Received: from localhost ([::1]:57254 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLBQf-0003IN-TI for guile-devel@m.gmane.org; Mon, 08 Oct 2012 07:23:21 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:59980) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLBQX-0003HH-6o for guile-devel@gnu.org; Mon, 08 Oct 2012 07:23:18 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TLBQV-0001Ry-Ku for guile-devel@gnu.org; Mon, 08 Oct 2012 07:23:12 -0400 Original-Received: from mail-we0-f169.google.com ([74.125.82.169]:54089) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLBQV-0001Rq-AK for guile-devel@gnu.org; Mon, 08 Oct 2012 07:23:11 -0400 Original-Received: by mail-we0-f169.google.com with SMTP id u3so2740379wey.0 for ; Mon, 08 Oct 2012 04:23:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=4p2t5reTEu9gqiU/OwlmojUNv3QOcxCV3BXl637u0Iw=; b=nBk+KCMfkyQaIg2F+7bhf2CPFk4k2NnL0DqLy8ztBP1XSEvi7nzIjdIT7Y2JXfpra3 1hqqtkfqAJASKl3ZU5F7AwOYy63IspxR4fRd2J3X8nSe2GHR/aqSmwQ0XFc38Fy+CuPM qk9bFt8bzzHP/UQwtizfyCn+3m7/7P/6ca1yqL0YWLSJD6AG/R25NzK+kTRCQltj84qN BABvOxYuBNOobkRpjOPxLGJK5DxjuJkI0+B7lSq9ZTUYwy4P5u5dQd8MLBKV9nrNpLKR On3GZ22sb3hzYsXgCJuIKR6fvc6Qh2RQRUtVr0Ekcp5mrNgnIm1SACh6KjPqoQmrXyBt vh+g== Original-Received: by 10.180.93.106 with SMTP id ct10mr21162040wib.8.1349695389960; Mon, 08 Oct 2012 04:23:09 -0700 (PDT) Original-Received: by 10.216.158.13 with HTTP; Mon, 8 Oct 2012 04:23:09 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 74.125.82.169 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:14940 Archived-At: --f46d043c08604608f504cb8a727a Content-Type: text/plain; charset=UTF-8 Following up on the thread from last time regexp-split was discussed. On 8 January 2012 07:05, Andy Wingo wrote: > On Sat 31 Dec 2011 06:54, Daniel Hartwig writes: >> * [Vanilla `string-split' expanded to support the CHAR_PRED >> semantics of `string-index' et al.] > > Makes sense to me. > Attached, with perhaps too many test cases as well. Commit message contains the details on why it's done the way it is. --f46d043c08604608f504cb8a727a Content-Type: application/octet-stream; name="0001-In-string-split-add-support-for-character-sets-and-p.patch" Content-Disposition: attachment; filename="0001-In-string-split-add-support-for-character-sets-and-p.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h81hmb9n0 RnJvbSAwYWVlZDE2YmFhNzBlY2ExNDNmZWMwNWU4NjRmOThkOTVkNzI2N2U4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgSGFydHdpZyA8bWFuZHlrZUBnbWFpbC5jb20+CkRh dGU6IE1vbiwgOCBPY3QgMjAxMiAxODozNTowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEluIHN0 cmluZy1zcGxpdCwgYWRkIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBzZXRzIGFuZAogcHJlZGljYXRl cy4KCiogbGliZ3VpbGUvc3JmaS0xMy5jIChzdHJpbmctc3BsaXQpOiBBZGQgc3VwcG9ydCBmb3Ig c3BsaXR0aW5nIG9uCiAgY2hhcmFjdGVyIHNldHMgYW5kIHByZWRpY2F0ZXMsIGxpa2Ugc3RyaW5n LWluZGV4IGFuZCBvdGhlcnMuICBLZWVwIHRoZQogIG9yaWdpbmFsIChmYXN0KSBwYXRoIHdoZW4g c3BsaXR0aW5nIGJ5IGNoYXJhY3RlciBhbmQgcmVmYWN0b3IgdXNpbmcKICBzdHJpbmctaW5kZXgt cmlnaHQgZm9yIG90aGVyIHR5cGVzOyB0aGUgbGF0ZXIgaW52b2x2ZXMgaGFuZGxpbmcgU0NNCiAg dmFsdWVzIHNvIHRoZXJlIGlzIGxlc3MgY2hhbmNlIHRvIG9wdGltaXplIGFueXdheS4KKiB0ZXN0 LXN1aXRlL3Rlc3RzL3N0cmluZ3MudGVzdCAoc3RyaW5nLXNwbGl0KTogQWRkIHRlc3RzIGNvdmVy aW5nCiAgdGhlIG5ldyBhcmd1bWVudCB0eXBlcy4KLS0tCiBsaWJndWlsZS9zcmZpLTEzLmMgICAg ICAgICAgICB8ICAgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogbGliZ3Vp bGUvc3JmaS0xMy5oICAgICAgICAgICAgfCAgICAyICstCiB0ZXN0LXN1aXRlL3Rlc3RzL3N0cmlu Z3MudGVzdCB8ICAgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IDMgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGliZ3VpbGUvc3JmaS0xMy5jIGIvbGliZ3VpbGUvc3JmaS0xMy5jCmluZGV4IDI4 MzQ1NTMuLjE4NzQ3NTQgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL3NyZmktMTMuYworKysgYi9saWJn dWlsZS9zcmZpLTEzLmMKQEAgLTI5OTMsMTEgKzI5OTMsMjIgQEAgU0NNX0RFRklORSAoc2NtX3N0 cmluZ190b2tlbml6ZSwgInN0cmluZy10b2tlbml6ZSIsIDEsIDMsIDAsCiAjdW5kZWYgRlVOQ19O QU1FCiAKIFNDTV9ERUZJTkUgKHNjbV9zdHJpbmdfc3BsaXQsICJzdHJpbmctc3BsaXQiLCAyLCAw LCAwLAotCSAgICAoU0NNIHN0ciwgU0NNIGNociksCisJICAgIChTQ00gc3RyLCBTQ00gY2hhcl9w cmVkKSwKIAkgICAgIlNwbGl0IHRoZSBzdHJpbmcgQHZhcntzdHJ9IGludG8gYSBsaXN0IG9mIHRo ZSBzdWJzdHJpbmdzIGRlbGltaXRlZFxuIgotCSAgICAiYnkgYXBwZWFyYW5jZXMgb2YgdGhlIGNo YXJhY3RlciBAdmFye2Nocn0uICBOb3RlIHRoYXQgYW4gZW1wdHkgc3Vic3RyaW5nXG4iCi0JICAg ICJiZXR3ZWVuIHNlcGFyYXRvciBjaGFyYWN0ZXJzIHdpbGwgcmVzdWx0IGluIGFuIGVtcHR5IHN0 cmluZyBpbiB0aGVcbiIKLQkgICAgInJlc3VsdCBsaXN0LlxuIgorCSAgICAiYnkgYXBwZWFyYW5j ZXMgY2hhcmFjdGVycyB3aGljaFxuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIkBp dGVtaXplIEBidWxsZXRcbiIKKyAgICAgICAgICAgICJAaXRlbVxuIgorICAgICAgICAgICAgImVx dWFscyBAdmFye2NoYXJfcHJlZH0sIGlmIGl0IGlzIGEgY2hhcmFjdGVyLFxuIgorICAgICAgICAg ICAgIlxuIgorICAgICAgICAgICAgIkBpdGVtXG4iCisgICAgICAgICAgICAic2F0aXNmaWVzIHRo ZSBwcmVkaWNhdGUgQHZhcntjaGFyX3ByZWR9LCBpZiBpdCBpcyBhIHByb2NlZHVyZSxcbiIKKyAg ICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJAaXRlbVxuIgorICAgICAgICAgICAgImlzIGlu IHRoZSBzZXQgQHZhcntjaGFyX3ByZWR9LCBpZiBpdCBpcyBhIGNoYXJhY3RlciBzZXQuXG4iCisg ICAgICAgICAgICAiQGVuZCBpdGVtaXplXG5cbiIKKyAgICAgICAgICAgICJOb3RlIHRoYXQgYW4g ZW1wdHkgc3Vic3RyaW5nIGJldHdlZW4gc2VwYXJhdG9yIGNoYXJhY3RlcnNcbiIKKyAgICAgICAg ICAgICJ3aWxsIHJlc3VsdCBpbiBhbiBlbXB0eSBzdHJpbmcgaW4gdGhlIHJlc3VsdCBsaXN0Llxu IgogCSAgICAiXG4iCiAJICAgICJAbGlzcFxuIgogCSAgICAiKHN0cmluZy1zcGxpdCBcInJvb3Q6 eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcIiAjXFw6KVxuIgpAQCAtMzAxNCwxMyArMzAyNSwz OSBAQCBTQ01fREVGSU5FIChzY21fc3RyaW5nX3NwbGl0LCAic3RyaW5nLXNwbGl0IiwgMiwgMCwg MCwKIAkgICAgIkBlbmQgbGlzcCIpCiAjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9zdHJpbmdfc3Bs aXQKIHsKKyAgU0NNIHNpZHgsIHNsYXN0X2lkeDsKICAgbG9uZyBpZHgsIGxhc3RfaWR4OwogICBp bnQgbmFycm93OwogICBTQ00gcmVzID0gU0NNX0VPTDsKIAogICBTQ01fVkFMSURBVEVfU1RSSU5H ICgxLCBzdHIpOwotICBTQ01fVkFMSURBVEVfQ0hBUiAoMiwgY2hyKTsKICAgCisgIGlmIChTQ01f Q0hBUlAgKGNoYXJfcHJlZCkpCisgICAgeworICAgICAgZ290byBzcGxpdF9jaGFyOworICAgIH0K KyAgZWxzZSBpZiAoIVNDTV9DSEFSU0VUUCAoY2hhcl9wcmVkKSkKKyAgICB7CisgICAgICBTQ01f QVNTRVJUIChzY21faXNfdHJ1ZSAoc2NtX3Byb2NlZHVyZV9wIChjaGFyX3ByZWQpKSwKKyAgICAg ICAgICAgICAgICAgIGNoYXJfcHJlZCwgU0NNX0FSRzIsIEZVTkNfTkFNRSk7CisgICAgfQorCisg IHNpZHggPSBzY21fc3RyaW5nX2xlbmd0aCAoc3RyKTsKKyAgc2xhc3RfaWR4ID0gU0NNX0JPT0xf RjsKKyAgd2hpbGUgKHNjbV9pc190cnVlIChzaWR4KSkKKyAgICB7CisgICAgICBzbGFzdF9pZHgg PSBzaWR4OworICAgICAgc2lkeCA9IHNjbV9zdHJpbmdfaW5kZXhfcmlnaHQgKHN0ciwgY2hhcl9w cmVkLCBTQ01fSU5VTTAsIHNsYXN0X2lkeCk7CisgICAgICBpZiAoc2NtX2lzX3RydWUgKHNpZHgp KQorICAgICAgICB7CisgICAgICAgICAgU0NNIHN1YnN0ciA9IHNjbV9zdWJzdHJpbmcgKHN0ciwg c2NtX29uZXBsdXMgKHNpZHgpLCBzbGFzdF9pZHgpOworICAgICAgICAgIHJlcyA9IHNjbV9jb25z IChzdWJzdHIsIHJlcyk7CisgICAgICAgIH0KKyAgICB9CisgIHJlcyA9IHNjbV9jb25zIChzY21f c3Vic3RyaW5nIChzdHIsIFNDTV9JTlVNMCwgc2xhc3RfaWR4KSwgcmVzKTsKKyAgZ290byBkb25l OworCisgc3BsaXRfY2hhcjoKICAgLyogVGhpcyBpcyBleHBsaWNpdCB3aWRlL25hcnJvdyBsb2dp YyAoaW5zdGVhZCBvZiB1c2luZwogICAgICBzY21faV9zdHJpbmdfcmVmKSBpcyBhIHNwZWVkIG9w dGltaXphdGlvbi4gICovCiAgIGlkeCA9IHNjbV9pX3N0cmluZ19sZW5ndGggKHN0cik7CkBAIC0z MDMxLDcgKzMwNjgsNyBAQCBTQ01fREVGSU5FIChzY21fc3RyaW5nX3NwbGl0LCAic3RyaW5nLXNw bGl0IiwgMiwgMCwgMCwKICAgICAgIHdoaWxlIChpZHggPj0gMCkKICAgICAgICAgewogICAgICAg ICAgIGxhc3RfaWR4ID0gaWR4OwotICAgICAgICAgIHdoaWxlIChpZHggPiAwICYmIGJ1ZltpZHgt MV0gIT0gKGNoYXIpIFNDTV9DSEFSKGNocikpCisgICAgICAgICAgd2hpbGUgKGlkeCA+IDAgJiYg YnVmW2lkeC0xXSAhPSAoY2hhcikgU0NNX0NIQVIoY2hhcl9wcmVkKSkKICAgICAgICAgICAgIGlk eC0tOwogICAgICAgICAgIGlmIChpZHggPj0gMCkKICAgICAgICAgICAgIHsKQEAgLTMwNDYsNyAr MzA4Myw3IEBAIFNDTV9ERUZJTkUgKHNjbV9zdHJpbmdfc3BsaXQsICJzdHJpbmctc3BsaXQiLCAy LCAwLCAwLAogICAgICAgd2hpbGUgKGlkeCA+PSAwKQogICAgICAgICB7CiAgICAgICAgICAgbGFz dF9pZHggPSBpZHg7Ci0gICAgICAgICAgd2hpbGUgKGlkeCA+IDAgJiYgYnVmW2lkeC0xXSAhPSBT Q01fQ0hBUihjaHIpKQorICAgICAgICAgIHdoaWxlIChpZHggPiAwICYmIGJ1ZltpZHgtMV0gIT0g U0NNX0NIQVIoY2hhcl9wcmVkKSkKICAgICAgICAgICAgIGlkeC0tOwogICAgICAgICAgIGlmIChp ZHggPj0gMCkKICAgICAgICAgICAgIHsKQEAgLTMwNTUsNiArMzA5Miw4IEBAIFNDTV9ERUZJTkUg KHNjbV9zdHJpbmdfc3BsaXQsICJzdHJpbmctc3BsaXQiLCAyLCAwLCAwLAogICAgICAgICAgICAg fQogICAgICAgICB9CiAgICAgfQorCisgZG9uZToKICAgc2NtX3JlbWVtYmVyX3VwdG9faGVyZV8x IChzdHIpOwogICByZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvc3JmaS0xMy5o IGIvbGliZ3VpbGUvc3JmaS0xMy5oCmluZGV4IGY2MzIzOWEuLjMyNWUyMjIgMTAwNjQ0Ci0tLSBh L2xpYmd1aWxlL3NyZmktMTMuaAorKysgYi9saWJndWlsZS9zcmZpLTEzLmgKQEAgLTExMCw3ICsx MTAsNyBAQCBTQ01fQVBJIFNDTSBzY21feHN1YnN0cmluZyAoU0NNIHMsIFNDTSBmcm9tLCBTQ00g dG8sIFNDTSBzdGFydCwgU0NNIGVuZCk7CiBTQ01fQVBJIFNDTSBzY21fc3RyaW5nX3hjb3B5X3gg KFNDTSB0YXJnZXQsIFNDTSB0c3RhcnQsIFNDTSBzLCBTQ00gc2Zyb20sIFNDTSBzdG8sIFNDTSBz dGFydCwgU0NNIGVuZCk7CiBTQ01fQVBJIFNDTSBzY21fc3RyaW5nX3JlcGxhY2UgKFNDTSBzMSwg U0NNIHMyLCBTQ00gc3RhcnQxLCBTQ00gZW5kMSwgU0NNIHN0YXJ0MiwgU0NNIGVuZDIpOwogU0NN X0FQSSBTQ00gc2NtX3N0cmluZ190b2tlbml6ZSAoU0NNIHMsIFNDTSB0b2tlbl9jaGFyLCBTQ00g c3RhcnQsIFNDTSBlbmQpOwotU0NNX0FQSSBTQ00gc2NtX3N0cmluZ19zcGxpdCAoU0NNIHMsIFND TSBjaHIpOworU0NNX0FQSSBTQ00gc2NtX3N0cmluZ19zcGxpdCAoU0NNIHMsIFNDTSBjaGFyX3By ZWQpOwogU0NNX0FQSSBTQ00gc2NtX3N0cmluZ19maWx0ZXIgKFNDTSBjaGFyX3ByZWQsIFNDTSBz LCBTQ00gc3RhcnQsIFNDTSBlbmQpOwogU0NNX0FQSSBTQ00gc2NtX3N0cmluZ19kZWxldGUgKFND TSBjaGFyX3ByZWQsIFNDTSBzLCBTQ00gc3RhcnQsIFNDTSBlbmQpOwogCmRpZmYgLS1naXQgYS90 ZXN0LXN1aXRlL3Rlc3RzL3N0cmluZ3MudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3RyaW5ncy50 ZXN0CmluZGV4IGQ4OTJiNzAuLjY3OWUxNzMgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMv c3RyaW5ncy50ZXN0CisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3RyaW5ncy50ZXN0CkBAIC01NTcs NyArNTU3LDY3IEBACiAgIChwYXNzLWlmICJjaGFyIDI1NSIKICAgICAoZXF1YWw/ICcoImEiICJi IikKIAkgICAgKHN0cmluZy1zcGxpdCAoc3RyaW5nICNcYSAoaW50ZWdlci0+Y2hhciAyNTUpICNc YikKLQkJCSAgKGludGVnZXItPmNoYXIgMjU1KSkpKSkKKwkJCSAgKGludGVnZXItPmNoYXIgMjU1 KSkpKQorCisgIChwYXNzLWlmICJlbXB0eSBzdHJpbmcgLSBjaGFyIgorICAgIChlcXVhbD8gJygi IikKKyAgICAgICAgICAgIChzdHJpbmctc3BsaXQgIiIgI1w6KSkpCisKKyAgKHBhc3MtaWYgIm5v bi1lbXB0eSAtIGNoYXIgLSBubyBkZWxpbWl0ZXJzIgorICAgIChlcXVhbD8gJygiZm9vYmFyZnJv YiIpCisgICAgICAgICAgICAoc3RyaW5nLXNwbGl0ICJmb29iYXJmcm9iIiAjXDopKSkKKworICAo cGFzcy1pZiAibm9uLWVtcHR5IC0gY2hhciAtIGRlbGltaXRlcnMiCisgICAgKGVxdWFsPyAnKCJm b28iICJiYXIiICJmcm9iIikKKyAgICAgICAgICAgIChzdHJpbmctc3BsaXQgImZvbzpiYXI6ZnJv YiIgI1w6KSkpCisKKyAgKHBhc3MtaWYgIm5vbi1lbXB0eSAtIGNoYXIgLSBsZWFkaW5nIGRlbGlt aXRlcnMiCisgICAgKGVxdWFsPyAnKCIiICIiICJmb28iICJiYXIiICJmcm9iIikKKyAgICAgICAg ICAgIChzdHJpbmctc3BsaXQgIjo6Zm9vOmJhcjpmcm9iIiAjXDopKSkKKworICAocGFzcy1pZiAi bm9uLWVtcHR5IC0gY2hhciAtIHRyYWlsaW5nIGRlbGltaXRlcnMiCisgICAgKGVxdWFsPyAnKCJm b28iICJiYXIiICJmcm9iIiAiIiAiIikKKyAgICAgICAgICAgIChzdHJpbmctc3BsaXQgImZvbzpi YXI6ZnJvYjo6IiAjXDopKSkKKworICAocGFzcy1pZiAiZW1wdHkgc3RyaW5nIC0gY2hhcnNldCIK KyAgICAoZXF1YWw/ICcoIiIpCisgICAgICAgICAgICAoc3RyaW5nLXNwbGl0ICIiIChjaGFyLXNl dCAjXDopKSkpCisKKyAgKHBhc3MtaWYgIm5vbi1lbXB0eSAtIGNoYXJzZXQgLSBubyBkZWxpbWl0 ZXJzIgorICAgIChlcXVhbD8gJygiZm9vYmFyZnJvYiIpCisgICAgICAgICAgICAoc3RyaW5nLXNw bGl0ICJmb29iYXJmcm9iIiAoY2hhci1zZXQgI1w6KSkpKQorCisgIChwYXNzLWlmICJub24tZW1w dHkgLSBjaGFyc2V0IC0gZGVsaW1pdGVycyIKKyAgICAoZXF1YWw/ICcoImZvbyIgImJhciIgImZy b2IiKQorICAgICAgICAgICAgKHN0cmluZy1zcGxpdCAiZm9vOmJhcjpmcm9iIiAoY2hhci1zZXQg I1w6KSkpKQorCisgIChwYXNzLWlmICJub24tZW1wdHkgLSBjaGFyc2V0IC0gbGVhZGluZyBkZWxp bWl0ZXJzIgorICAgIChlcXVhbD8gJygiIiAiIiAiZm9vIiAiYmFyIiAiZnJvYiIpCisgICAgICAg ICAgICAoc3RyaW5nLXNwbGl0ICI6OmZvbzpiYXI6ZnJvYiIgKGNoYXItc2V0ICNcOikpKSkKKwor ICAocGFzcy1pZiAibm9uLWVtcHR5IC0gY2hhcnNldCAtIHRyYWlsaW5nIGRlbGltaXRlcnMiCisg ICAgKGVxdWFsPyAnKCJmb28iICJiYXIiICJmcm9iIiAiIiAiIikKKyAgICAgICAgICAgIChzdHJp bmctc3BsaXQgImZvbzpiYXI6ZnJvYjo6IiAoY2hhci1zZXQgI1w6KSkpKQorCisgIChwYXNzLWlm ICJlbXB0eSBzdHJpbmcgLSBwcmVkIgorICAgIChlcXVhbD8gJygiIikKKyAgICAgICAgICAgIChz dHJpbmctc3BsaXQgIiIgKG5lZ2F0ZSBjaGFyLWFscGhhYmV0aWM/KSkpKQorCisgIChwYXNzLWlm ICJub24tZW1wdHkgLSBwcmVkIC0gbm8gZGVsaW1pdGVycyIKKyAgICAoZXF1YWw/ICcoImZvb2Jh cmZyb2IiKQorICAgICAgICAgICAgKHN0cmluZy1zcGxpdCAiZm9vYmFyZnJvYiIgKG5lZ2F0ZSBj aGFyLWFscGhhYmV0aWM/KSkpKQorCisgIChwYXNzLWlmICJub24tZW1wdHkgLSBwcmVkIC0gZGVs aW1pdGVycyIKKyAgICAoZXF1YWw/ICcoImZvbyIgImJhciIgImZyb2IiKQorICAgICAgICAgICAg KHN0cmluZy1zcGxpdCAiZm9vOmJhcjpmcm9iIiAobmVnYXRlIGNoYXItYWxwaGFiZXRpYz8pKSkp CisKKyAgKHBhc3MtaWYgIm5vbi1lbXB0eSAtIHByZWQgLSBsZWFkaW5nIGRlbGltaXRlcnMiCisg ICAgKGVxdWFsPyAnKCIiICIiICJmb28iICJiYXIiICJmcm9iIikKKyAgICAgICAgICAgIChzdHJp bmctc3BsaXQgIjo6Zm9vOmJhcjpmcm9iIiAobmVnYXRlIGNoYXItYWxwaGFiZXRpYz8pKSkpCisK KyAgKHBhc3MtaWYgIm5vbi1lbXB0eSAtIHByZWQgLSB0cmFpbGluZyBkZWxpbWl0ZXJzIgorICAg IChlcXVhbD8gJygiZm9vIiAiYmFyIiAiZnJvYiIgIiIgIiIpCisgICAgICAgICAgICAoc3RyaW5n LXNwbGl0ICJmb286YmFyOmZyb2I6OiIgKG5lZ2F0ZSBjaGFyLWFscGhhYmV0aWM/KSkpKSkKIAog KHdpdGgtdGVzdC1wcmVmaXggInN1YnN0cmluZy1tb3ZlISIKIAotLSAKMS43LjkKCg== --f46d043c08604608f504cb8a727a--