From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 28bYAoEap2OH+QAAbAwnHQ (envelope-from ) for ; Sat, 24 Dec 2022 16:28:01 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id kCcoAoEap2NXTQEA9RJhRA (envelope-from ) for ; Sat, 24 Dec 2022 16:28:01 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 66F7B3E69A for ; Sat, 24 Dec 2022 16:28:00 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p96QI-0000cC-MN; Sat, 24 Dec 2022 10:26:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p96QF-0000bu-Dh for emacs-orgmode@gnu.org; Sat, 24 Dec 2022 10:26:51 -0500 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p96QC-0002UK-BX for emacs-orgmode@gnu.org; Sat, 24 Dec 2022 10:26:51 -0500 Received: by mail-ed1-x531.google.com with SMTP id u18so9269700eda.9 for ; Sat, 24 Dec 2022 07:26:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=xkYvBQqg6JUD7udNp4wUT9/5uXRzAKT4mWRWGhNjuLg=; b=mD7px79x3/tDJkyFiitst7GLDAwvh/HuFkdpM+J9iJ2U+6Lm1+y2TPbkED4zX+Yx6T 1/CQZZVEg5zeiRNleGk/i9YT26Yj1/Lx61gyXuzACbeBnflE/Onnh4gQwmJsXYdqH6IU iDTScGNKmmIsIj5vftIiEU1TRlRBpH4ZvamQwo6vcl81T7BMzS65wEVXGm0Z82TE7gaO y8rhZ8+0C8+nqAN563vcOvURBzelcB/sLq5skqjwONCBSFIQ6D7IAvIRvxDiZtY7lyVf MveTLjlUsE0t6CLrTZqf1qCrSnlSkV/Hw6OhMXkE8VGyDyQHSLzt6JhduJgYbL8HOvUa tsIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=xkYvBQqg6JUD7udNp4wUT9/5uXRzAKT4mWRWGhNjuLg=; b=DAp+2umAsLn0/g6JabZY/ggYS3Ue4bW89eYS3nvPEvmJFT50M2CtU4yT8xXS3Q6zAf ZMk2imY7kypyLYaAbSOxZNbEiHtrTJJuSW3S4xD3SW1ffmkTIeY3VXlVf7WkiIrxtDa8 bd65FICr0gHy+Ek+CpPT5STDsUinaBKVRplph/HCqiWA+7JySU82Vd9WE+YbimCk8P61 9zDFn1ddvziZIPo+T3fzwtZWvZwvUulTP+gZ3WVq57f+ZbnDOGvyDUq8gv5REP4m2uFr 5/eVXjLrRLNJfP+4ePTP1WkWPhEe8pB0xCAZyDnOqOy1lgTx80bcVER1CzNYYEpG3ku3 eDxg== X-Gm-Message-State: AFqh2koyHfaHGNaTgoT3eJLVvnV9hQwgvL/HEhG7MFtiiBIzzJdab2hU bmCh4OpHeOdsuNK1Ufax5AVpavqZA7Bnaj9UorfnWxiV X-Google-Smtp-Source: AMrXdXvB5g+pE+IZhbRX4xw28trcdVGrc060zAoMezOsibAx0NpyygUGDJFjRGwHlo+O340N64IkUCFeutkbcfz8XjU= X-Received: by 2002:a05:6402:1693:b0:46a:be65:4906 with SMTP id a19-20020a056402169300b0046abe654906mr1639295edv.207.1671895605867; Sat, 24 Dec 2022 07:26:45 -0800 (PST) MIME-Version: 1.0 From: "David O'Toole" Date: Sat, 24 Dec 2022 10:26:34 -0500 Message-ID: Subject: Updated patch for org-info-src.js To: emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="000000000000b0a22505f09487aa" Received-SPF: pass client-ip=2a00:1450:4864:20::531; envelope-from=deeteeoh1138@gmail.com; helo=mail-ed1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1671895680; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=VrdEfooHn+uhNEHkCgKjpdtoE3NI5mJV+19YGSUsYGI=; b=VS9IKOG7pgQBBi5QDhQWUXVxQ1UsBtGnLT5DH1bHm+dvHHurkEeGhQXtOTQNfNZsSDoAJa 6wlaUzWvEQ6VbZPAsRYKcgqaivH+69ANhH8m7iIV4smAA9jIdS6IOypqU+DYUJAFvbsShl H1atNjqPqKnqlXLS4XiQRldnxhTxXCjoDeaTMxevgBRfPyKfvuxWRTmeiy1zfQyO5HtYAT yeu4TWZpedby6E/yEsnXjppvhErDLYFhgqu2BTvZahHhNYeWczWqSa+O4deXOEW2lqEtV+ iMnigd+iWShVyrg05X+53l8V4TQzyFRpk7tkLm8oTR91bWA9tmNUYJwSEJ9FMg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=mD7px79x; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1671895680; a=rsa-sha256; cv=none; b=mDzxykQMiHFRjK/sHUTJF+ltSByPRWSPANMQhTmUAOjXLg/fV7R67AuQ+jFv/LhpU86RwT XM8zFqL58Bt0iZInbFhd4arJ6IsVgeC/hUEc8NCbgATrmyz8jyYeZwxvFYMcoVDTLt6I+W xb/Zs0BtytUQIRIgWzTg2y/k3UtAhaQ4Y2tjhLHVQJPFkkFmaNdSMB5b2HksG7PFkTg6TG nixXrcVCMDlaA4bCLlrSwIMvs2cj+w3/dL3LpUti1wBuBI+p5suaDImut2BLq+QVbkE5l2 /X7z4OrBh2saYgtH7o9hvgM9XlN8y3Yuy/wiNPeUO56fkK+ibuA9+tK3/PiMXg== X-Spam: Yes X-Migadu-Queue-Id: 66F7B3E69A X-Migadu-Spam: Yes X-Spam-Score: 14.79 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=mD7px79x; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none) X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: 14.79 X-Migadu-Mailbox-Spam: Yes X-TUID: /QnYWuzrZ/gc --000000000000b0a22505f09487aa Content-Type: multipart/alternative; boundary="000000000000b0a21e05f09487a8" --000000000000b0a21e05f09487a8 Content-Type: text/plain; charset="UTF-8" Hi everyone, As you may recall, I have been working on org-info-js. I have fixed at least one bug since my last patch, where org-info-js had gotten out of sync with the details of Org HTML export. I also split several "paragraphs" of code out into their own functions so that I could call them from elsewhere. Thus I am submitting an updated patch for your consideration. I hope you will find it useful. --000000000000b0a21e05f09487a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi everyone,

As you may= recall, I have been working on org-info-js. I have fixed at least one bug = since my last patch, where org-info-js had gotten out of sync with the deta= ils of Org HTML export. I also split several "paragraphs" of code= out into their own functions so that I could call them from elsewhere. Thu= s I am submitting an updated patch for your consideration. I hope you will = find it useful.


--000000000000b0a21e05f09487a8-- --000000000000b0a22505f09487aa Content-Type: text/x-patch; charset="US-ASCII"; name="org-info-src.js.diff" Content-Disposition: attachment; filename="org-info-src.js.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lc23gbvy0 ZGlmZiAtdSAvaG9tZS9kdG8vRG93bmxvYWRzL29yZy1pbmZvLXNyYy5qcyAvaG9tZS9kdG8vbm90 ZWJvb2svb3JnLWluZm8tc3JjLmpzCi0tLSAvaG9tZS9kdG8vRG93bmxvYWRzL29yZy1pbmZvLXNy Yy5qcwkyMDIyLTEyLTEwIDExOjQ3OjIwLjA4Njc0NjA3MiAtMDUwMAorKysgL2hvbWUvZHRvL25v dGVib29rL29yZy1pbmZvLXNyYy5qcwkyMDIyLTEyLTI0IDEwOjE4OjM4LjAxMDI2MDExNSAtMDUw MApAQCAtMjgsMzAgKzI4LDg3IEBACiAgKiA8L3NjcmlwdD4KICAqCiAgKgotICogVGhlIHNjcmlw dCBpcyBub3cgcm91Z2hseSBkZXZpZGVkIGluIHNlY3Rpb25zIGJ5IGZvcm0tZmVlZHMuIEVkaXRv cnMgY2FuCi0gKiBtb3ZlIHNlY3Rpb24gd2lzZSB1c2luZyB0aGUgY29tbW9uIGVtYWNzIGNvbW1h bmRzIGZvciB0aGlzIHB1cnBvcyAoJ0MteCBdJwotICogYW5kICAnQy14IF0nKS4KKyAqIFRoZSBz Y3JpcHQgaXMgbm93IHJvdWdobHkgZGl2aWRlZCBpbnRvIHNlY3Rpb25zIGJ5CisgKiBmb3JtLWZl ZWRzLiBFZGl0b3JzIGNhbiBtb3ZlIHNlY3Rpb24td2lzZSB1c2luZyB0aGUgY29tbW9uIGVtYWNz CisgKiBjb21tYW5kcyBmb3IgdGhpcyBwdXJwb3NlICgnQy14IF0nIGFuZCAnQy14IF0nKS4KICAq CiAgKiBUaGUgc2VjdGlvbnMgYXJlOgogICogICAgMS4gVGhpcyBjb21tZW50IGJsb2NrLgotICog ICAgMi4gRXZlcnl0aGluZyBhcm91bmQgPU9yZ05vZGVzPS4KLSAqICAgIDMuID1vcmdfaHRtbF9t YW5hZ2VyPSBjb25zdHJ1Y3RvciBhbmQgc2V0dXAuCi0gKiAgICA0LiA9b3JnX2h0bWxfbWFuYWdl cj0gZm9sZGluZyBhbmQgdmlldyByZWxhdGVkIHN0dWZmLgotICogICAgNS4gPW9yZ19odG1sX21h bmFnZXI9IGhpc3RvcnkgcmVsYXRlZCBtZXRob2RzLgotICogICAgNi4gPW9yZ19odG1sX21hbmFn ZXI9IG1pbmlidWZmZXIgaGFuZGxpbmcuCi0gKiAgICA3LiA9b3JnX2h0bWxfbWFuYWdlcj0gdXNl ciBpbnB1dC4KLSAqICAgIDguID1vcmdfaHRtbF9tYW5hZ2VyPSBzZWFyY2ggZnVuY3RvbmFsaXR5 LgotICogICAgOS4gPW9yZ19odG1sX21hbmFnZXI9IG1pc2MuCi0gKiAgICAxMC4gR2xvYmFsIGZ1 bmN0aW9ucy4KKyAqICAgIDIuIENvbnRlbnQgaG9va3MKKyAqICAgIDMuIEV2ZXJ5dGhpbmcgYXJv dW5kID1PcmdOb2Rlcz0uCisgKiAgICA0LiA9b3JnX2h0bWxfbWFuYWdlcj0gY29uc3RydWN0b3Ig YW5kIHNldHVwLgorICogICAgNS4gPW9yZ19odG1sX21hbmFnZXI9IGZvbGRpbmcgYW5kIHZpZXcg cmVsYXRlZCBzdHVmZi4KKyAqICAgIDYuID1vcmdfaHRtbF9tYW5hZ2VyPSBoaXN0b3J5IHJlbGF0 ZWQgbWV0aG9kcy4KKyAqICAgIDcuID1vcmdfaHRtbF9tYW5hZ2VyPSBtaW5pYnVmZmVyIGhhbmRs aW5nLgorICogICAgOC4gPW9yZ19odG1sX21hbmFnZXI9IHVzZXIgaW5wdXQuCisgKiAgICA5LiA9 b3JnX2h0bWxfbWFuYWdlcj0gc2VhcmNoIGZ1bmN0b25hbGl0eS4KKyAqICAgIDEwLiA9b3JnX2h0 bWxfbWFuYWdlcj0gbWlzYy4KKyAqICAgIDExLiBHbG9iYWwgZnVuY3Rpb25zLgogICovCiAKKy8q KgorICogVGhpcyBwcm9ncmFtIGhhcyBiZWVuIG1vZGlmaWVkIGZyb20gaXRzIG9yaWdpbmFsIHZl cnNpb24gdG8gYWRkCisgKiBob29rcyBmb3IgcGVyLXBhZ2UgSFRNTCBpbmplY3Rpb24gYW5kIHBl ci1jbGljayBuYXZpZ2F0aW9uIGV2ZW50CisgKiByZXNwb25zZS4gQSBwYXRjaCBpcyBiZWluZyBz dWJtaXR0ZWQgdG8gdXBzdHJlYW0uIAorICogIC0gRGF2aWQgVC4gTydUb29sZSA8ZGVldGVlb2gx MTM4QGdtYWlsLmNvbT4KKyAqLwogCiAMCiAKIAordmFyIE9yZ0luZm9DdXJyZW50U2VjdGlvbk51 bWJlciA9IDA7CisKKy8qKgorICogVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBzaG91bGQgaG9sZCBh IGZ1bmN0aW9uIHdoaWNoIGFjY2VwdHMgYW4KKyAqIGludGVnZXIgcGFnZU51bWJlciBhbmQgc2hv dWxkIHJldHVybiBIVE1MIHRvIGJlIGluc2VydGVkIGluIHRoZQorICogT3JnSW5mbyBoZWFkZXIg b2YgZWFjaCBwYWdlLgorICovCit2YXIgT3JnSW5mb1BhZ2VJbnNlcnRGdW5jdGlvbiA9IGZ1bmN0 aW9uKHBhZ2VOdW1iZXIpIHtyZXR1cm4gJyc7fTsKKworCisvKioKKyAqIFRoZSBmb2xsb3dpbmcg dmFyaWFibGUgc2hvdWxkIGhvbGQgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHRzIGFuCisgKiBpbnRl Z2VyIHBhZ2VOdW1iZXIgYW5kIHBlcmZvcm1zIGEgdXNlci1kZWZpbmVkIGFjdGlvbiBhZnRlciB0 aGUKKyAqIHBhZ2UgaGFzIGZsaXBwZWQuCisgKgorICovCit2YXIgT3JnSW5mb0FmdGVyTmF2aWdh dGVGdW5jdGlvbiA9IGZ1bmN0aW9uKHBhZ2VOdW1iZXIpIHt9OworCisvKioKKyAqIFRoZSBmb2xs b3dpbmcgdmFyaWFibGUgc2hvdWxkIGhvbGQgYSBmdW5jdGlvbiB3aGljaCBwZXJmb3JtcyBhCisg KiB1c2VyLWRlZmluZWQgYWN0aW9uIGFmdGVyIFBsYWluIFZpZXcgaGFzIGJlZW4gYWN0aXZhdGVk LgorICoKKyAqLworCit2YXIgT3JnSW5mb0FmdGVyUGxhaW5WaWV3RnVuY3Rpb24gPSBmdW5jdGlv bigpIHt9OworCisvKioKKyAqIFRoZSBmb2xsb3dpbmcgdmFyaWFibGUgc2hvdWxkIGhvbGQgYSBm dW5jdGlvbiB3aGljaCBwZXJmb3JtcyBhCisgKiB1c2VyLWRlZmluZWQgYWN0aW9uIGFmdGVyIElu Zm8gVmlldyBoYXMgYmVlbiBhY3RpdmF0ZWQuCisgKgorICovCisKK3ZhciBPcmdJbmZvQWZ0ZXJJ bmZvVmlld0Z1bmN0aW9uID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBUaGUgZm9sbG93aW5n IHZhcmlhYmxlIHNob3VsZCBob2xkIGEgZnVuY3Rpb24gd2hpY2ggcGVyZm9ybXMgYQorICogdXNl ci1kZWZpbmVkIGFjdGlvbiBhZnRlciB0aGUgZG9jdW1lbnQgaXMgcmVhZHkuCisgKi8KKwordmFy IE9yZ0luZm9BZnRlclJlYWR5RnVuY3Rpb24gPSBmdW5jdGlvbigpIHt9OworCisvKioKKyAqIEN1 c3RvbSBrZXliaW5kaW5ncyBmb3IgWiwgSywgYW5kIFkuCisgKi8KK3ZhciBPcmdJbmZvVXNlcktl eVogPSBmdW5jdGlvbiAoKSB7fTsKK3ZhciBPcmdJbmZvVXNlcktleUsgPSBmdW5jdGlvbiAoKSB7 fTsKK3ZhciBPcmdJbmZvVXNlcktleVkgPSBmdW5jdGlvbiAoKSB7fTsKKworDAorCiAvKioKICAq IENyZWF0ZXMgYSBuZXcgT3JnTm9kZS4KLSAqIEFuIE9yZ091dGxpbmUgc3RvcmVzIHNvbWUgcmVm cyB0byBpdHMgYXNzb3ppYXRlZCBub2RlIGluIHRoZSBkb2N1bWVudCB0cmVlCisgKiBBbiBPcmdP dXRsaW5lIHN0b3JlcyBzb21lIHJlZnMgdG8gaXRzIGFzc29jaWF0ZWQgbm9kZSBpbiB0aGUgZG9j dW1lbnQgdHJlZQogICogYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgcHJvcGVydGllcy4KICAq LwogZnVuY3Rpb24gT3JnTm9kZSAoIF9kaXYsIF9oZWFkaW5nLCBfbGluaywgX2RlcHRoLCBfcGFy ZW50LCBfYmFzZV9pZCwgX3RvY19hbmNob3IpCkBAIC04Nyw4ICsxNDQsMTcgQEAKICAgICB2YXIg ZmlkID0gIF9iYXNlX2lkLnN1YnN0cmluZyg0KTsKICAgICBmb2xkZXIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgidGV4dC0iK2ZpZCk7IC8vIHRyeSBvbGQgc2NoZW1hCiAgIH0KLSAgaWYobnVs bCAhPSBmb2xkZXIpCi0gICAgdC5GT0xERVIgPSBmb2xkZXI7CisKKyAgICBpZihudWxsID09IGZv bGRlcikKKyAgICB7CisgICAgICAgIGlmIChudWxsICE9IHQuQkFTRV9JRCkgeworICAgICAgICAg ICAgdmFyIGRpZCA9IE9yZ0luZm9SZWNvdmVyU2VjdGlvbklEKGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKHQuQkFTRV9JRCkudGV4dENvbnRlbnQpOworICAgICAgICAgICAgZm9sZGVyID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoInRleHQtIitkaWQpOworICAgICAgICB9CisgICAgfQorICAgIAor ICAgIGlmKG51bGwgIT0gZm9sZGVyKQorICAgIHsgdC5GT0xERVIgPSBmb2xkZXI7fQogCiAgIHQu aXNUYXJnZXRGb3IgPSBuZXcgT2JqZWN0KCk7CiAgIHQuaXNUYXJnZXRGb3JbJyMnICsgdC5CQVNF X0lEXSA9IDI7CkBAIC00MzQsNyArNTAwLDcgQEAKICAgICAgICAgICB2YXIgdiA9IHNldHNbaV0u c3Vic3RyaW5nKHBvcysxKTsKICAgICAgICAgICB2YXIgayA9IHNldHNbaV0uc3Vic3RyaW5nKDAs IHBvcyk7CiAgICAgICAgICAgc3dpdGNoKGspIHsKLSAgICAgICAgICAgIC8vIEV4cGxpY2l0ZWx5 IGFsbG93IG92ZXJ3cml0ZXMuCisgICAgICAgICAgICAvLyBFeHBsaWNpdGx5IGFsbG93IG92ZXJ3 cml0ZXMuCiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2g6CiAgICAgICAgICAgY2FzZSAnVE9D JzoKICAgICAgICAgICBjYXNlICdUT0NfREVQVEgnOgpAQCAtNjM0LDYgKzcwMCw3IEBACiAgICAg fQogICAgIHQuSE9PS1MucnVuX2hvb2tzID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgIC8vIFVu YmxvY2sgYWxsIGhvb2tzLgogICAgIHQucnVuSG9va3MoJ29uUmVhZHknLCB0aGlzLk5PREUpOwor ICAgICAgT3JnSW5mb0FmdGVyUmVhZHlGdW5jdGlvbigpOwogICB9LAogCiAKQEAgLTczNCw3ICs4 MDEsNyBAQAogICAgICAgdC5jdXRUb2ModGhlSW5kZXgsIDEpOwogICAgIH0KIAotICAgIC8vIE1v dmUgdGhlIHRpdGxlIGludG8gdGhlIGZpcnN0IHZpc2libGUgc2VjdGlvbi4KKyAgICAvLyBNb3Zl IHRoZSB0aXRsZSBpbnRvIHRoZSBmaXJzdCB2aXNpYmxlIHNlY3Rpb24udXJyZW50cGFnZQogICAg IC8vIFRPRE86IHNob3cgdGl0bGUgYWJvdmUgZXZlcnl0aGluZyBpZiBGSVhFRF9UT0MgISEhCiAg ICAgdC5USVRMRSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInRpdGxlIilbMF07 CiAgICAgaWYodC5JTk5FUl9USVRMRSAmJiAhdC5GSVhFRF9UT0MgJiYgdC5WSUVXICE9IHQuU0xJ REVfVklFVykgewpAQCAtNzU0LDcgKzgyMSw3IEBACiAKICAgICB0LkJPRFkuaW5zZXJ0QmVmb3Jl KHQuV0lORE9XLCB0Lk5PREUuRElWKTsKIAotICAgIHJldHVybiB0cnVlOworICAgICAgcmV0dXJu IHRydWU7CiAgIH0sCiAKICAgLyoqCkBAIC05MDQsMTQgKzk3MSwxNiBAQAogICAgIGZvcih2YXIg aSA9IDA7IGkgPCB0aGlzLlNFQ1MubGVuZ3RoOyArK2kpCiAgICAgewogICAgICAgdGhpcy5TRUNT W2ldLklEWCA9IGk7Ci0gICAgICB2YXIgaHRtbCA9ICc8dGFibGUgY2xhc3M9Im9yZy1pbmZvLWpz X2luZm8tbmF2aWdhdGlvbiIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlci1i b3R0b206MXB4IHNvbGlkIGJsYWNrOyI+JwotICAgICAgICArJzx0cj48dGQgY29sc3Bhbj0iMyIg c3R5bGU9InRleHQtYWxpZ246bGVmdDtib3JkZXItc3R5bGU6bm9uZTt2ZXJ0aWNhbC1hbGlnbjpi b3R0b207Ij4nCi0gICAgICAgICsnPHNwYW4gc3R5bGU9ImZsb2F0OmxlZnQ7ZGlzcGxheTppbmxp bmU7dGV4dC1hbGlnbjpsZWZ0OyI+JwotICAgICAgICArJ1RvcDogPGEgYWNjZXNza2V5PSJ0IiBo cmVmPSJqYXZhc2NyaXB0Om9yZ19odG1sX21hbmFnZXIubmF2aWdhdGVUbygwKTsiPicraW5kZXhf bmFtZSsnPC9hPjwvc3Bhbj4nCi0gICAgICAgICsnPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0O2Rp c3BsYXk6aW5saW5lO3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjcwJTsiPicKLSAgICAgICAg KyB0aGlzLkxJTktTCi0gICAgICAgICsnPGEgYWNjZXNza2V5PSJtIiBocmVmPSJqYXZhc2NyaXB0 Om9yZ19odG1sX21hbmFnZXIudG9nZ2xlVmlldygnK2krJyk7Ij50b2dnbGUgdmlldzwvYT48L3Nw YW4+JwotICAgICAgICArJzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7 Ym9yZGVyLXN0eWxlOm5vbmU7dmVydGljYWwtYWxpZ246Ym90dG9tO3dpZHRoOjIyJSI+JzsKKyAg ICAgICAgdmFyIGh0bWwgPQorICAgICAgICAgICAgT3JnSW5mb1BhZ2VJbnNlcnRGdW5jdGlvbihp KQorICAgICAgICAgICAgKyAnPHRhYmxlIGNsYXNzPSJvcmctaW5mby1qc19pbmZvLW5hdmlnYXRp b24iIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIHN0eWxlPSJib3JkZXItYm90dG9tOjFweCBzb2xp ZCBibGFjazsiPicKKyAgICAgICAgICAgICsnPHRyPjx0ZCBjb2xzcGFuPSIzIiBzdHlsZT0idGV4 dC1hbGlnbjpsZWZ0O2JvcmRlci1zdHlsZTpub25lO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTsiPicK KyAgICAgICAgICAgICsgJzxzcGFuIHN0eWxlPSJmbG9hdDpsZWZ0O2Rpc3BsYXk6aW5saW5lO3Rl eHQtYWxpZ246bGVmdDsiPicKKyAgICAgICAgICAgICsgJ1RvcDogPGEgYWNjZXNza2V5PSJ0IiBo cmVmPSJqYXZhc2NyaXB0Om9yZ19odG1sX21hbmFnZXIubmF2aWdhdGVUbygwKTsiPicraW5kZXhf bmFtZSsnPC9hPjwvc3Bhbj4nCisgICAgICAgICAgICArICc8c3BhbiBzdHlsZT0iZmxvYXQ6cmln aHQ7ZGlzcGxheTppbmxpbmU7dGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6NzAlOyI+JworICAg ICAgICAgICAgKyAgdGhpcy5MSU5LUworICAgICAgICAgICAgKyAnPGEgYWNjZXNza2V5PSJtIiBo cmVmPSJqYXZhc2NyaXB0Om9yZ19odG1sX21hbmFnZXIudG9nZ2xlVmlldygnK2krJyk7Ij50b2dn bGUgdmlldzwvYT48L3NwYW4+JworICAgICAgICAgICAgKyAnPC90ZD48L3RyPjx0cj48dGQgc3R5 bGU9InRleHQtYWxpZ246bGVmdDtib3JkZXItc3R5bGU6bm9uZTt2ZXJ0aWNhbC1hbGlnbjpib3R0 b207d2lkdGg6MjIlIj4nOwogCiAgICAgICBpZihpPjApCiAgICAgICAgIGh0bWwgKz0gJzxhIGFj Y2Vzc2tleT0icCIgaHJlZj0iJyt0aGlzLlNFQ1NbaS0xXS5MCkBAIC05MzAsMTAgKzk5OSwxMCBA QAogICAgICAgaWYoaT4wICYmIHRoaXMuU0VDU1tpXS5QQVJFTlQuUEFSRU5UKSAvLyAhPSB0aGlz LlJPT1QpCiAgICAgICAgIGh0bWwgKz0gJzxhIGhyZWY9IicrdGhpcy5TRUNTW2ldLlBBUkVOVC5M CiAgICAgICAgICsnIiB0aXRsZT0iR28gdG86ICcrdGhpcy5yZW1vdmVUYWdzKHRoaXMuU0VDU1tp XS5QQVJFTlQuSEVBRElORy5pbm5lckhUTUwpKyciPicKLSAgICAgICAgKyc8c3BhbiBzdHlsZT0i Zm9udC12YXJpYW50OnNtYWxsLWNhcHM7Zm9udC1zdHlsZTppdGFsaWM7Ij4nCisgICAgICAgICsn PHNwYW4gY2xhc3M9Im9yZy1pbmZvLWpzX3BhcmVudC1oZWFkaW5nIiBzdHlsZT0iZm9udC12YXJp YW50OnNtYWxsLWNhcHM7Zm9udC1zdHlsZTppdGFsaWM7Ij4nCiAgICAgICAgICt0aGlzLlNFQ1Nb aV0uUEFSRU5ULkhFQURJTkcuaW5uZXJIVE1MKyc8L3NwYW4+PC9hPic7CiAgICAgICBlbHNlCi0g ICAgICAgIGh0bWwgKz0gJzxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2Fwcztmb250 LXN0eWxlOml0YWxpYzsiPicrdGhpcy5TRUNTW2ldLkhFQURJTkcuaW5uZXJIVE1MKyc8L3NwYW4+ JzsKKyAgICAgICAgaHRtbCArPSAnPHNwYW4gY2xhc3M9Im9yZy1pbmZvLWpzX3BhcmVudC1oZWFk aW5nIiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Zm9udC1zdHlsZTppdGFsaWM7Ij4n K3RoaXMuU0VDU1tpXS5IRUFESU5HLmlubmVySFRNTCsnPC9zcGFuPic7CiAKICAgICAgIC8vIFJp Z2h0OgogICAgICAgaHRtbCArPSAnPC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7dmVy dGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1zdHlsZTpub25lO3dpZHRoOjIyJSI+JzsKQEAgLTEx MzYsNyArMTIwNSw5IEBACiAgICAgICB0LnNob3dTZWN0aW9uKHNlYyk7CiAgICAgaWYodC5QT1NU QU1CTEUpIE9yZ05vZGUuc2hvd0VsZW1lbnQodC5QT1NUQU1CTEUpOwogICAgIGlmKHQuTk9ERS5J RFggPT0gMCkgd2luZG93LnNjcm9sbFRvKDAsIDApOwotICAgIGVsc2UgdC5OT0RFLkRJVi5zY3Jv bGxJbnRvVmlldyh0cnVlKTsKKyAgICAgIGVsc2UgdC5OT0RFLkRJVi5zY3JvbGxJbnRvVmlldyh0 cnVlKTsKKyAgICAgIC8vIGNhbGwgaG9vaworICAgICAgT3JnSW5mb0FmdGVyUGxhaW5WaWV3RnVu Y3Rpb24oKTsKICAgfSwKIAogICBpbmZvVmlldzogZnVuY3Rpb24gKHNlYywgc2tpcF9zaG93X3Nl Y3Rpb24pCkBAIC0xMTU3LDYgKzEyMjgsOCBAQAogICAgIGlmKCFza2lwX3Nob3dfc2VjdGlvbikK ICAgICAgIHQuc2hvd1NlY3Rpb24oc2VjKTsKICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7Cisg ICAgICAvLyBjYWxsIGhvb2sKKyAgICAgIE9yZ0luZm9BZnRlckluZm9WaWV3RnVuY3Rpb24oKTsK ICAgfSwKIAogICBzbGlkZVZpZXc6IGZ1bmN0aW9uIChzZWMsIHNraXBfc2hvd19zZWN0aW9uKQpA QCAtMTI1OSw3ICsxMzMyLDIxIEBACiAgICAgdC5OT0RFID0gdC5TRUNTW3NlY3Rpb25dOwogICAg IE9yZ05vZGUuc2hvd0VsZW1lbnQodC5OT0RFLkJVVFRPTlMpOwogICB9LAotCisgICAgCisgICAg dW5mb2xkQWxsOiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgdmFyIHQgPSB0aGlzOworICAg ICAgICBpZih0LlJPT1QuRElSVFkpIHsKKyAgICAgICAgICAgIHQuUk9PVC5TVEFURSA9IE9yZ05v ZGUuU1RBVEVfVU5GT0xERUQ7CisgICAgICAgIH0KKyAgICAgICAgZm9yKHZhciBpPTA7aTx0LlNF Q1MubGVuZ3RoOysraSkgeworICAgICAgICB0LlNFQ1NbaV0uU1RBVEUgPSBPcmdOb2RlLlNUQVRF X0ZPTERFRDsKKyAgICAgICAgdC5TRUNTW2ldLmZvbGQoZmFsc2UpOworICAgICAgICB9CisgICAg ICAgIHQuUk9PVC5TVEFURSA9IE9yZ05vZGUuU1RBVEVfVU5GT0xERUQ7CisgICAgICAgIHQuUk9P VC5ESVJUWSA9IGZhbHNlOyAgICAKKyAgICB9LAorICAgIAogICB0b2dnbGVHbG9iYWx5OiBmdW5j dGlvbiAoKQogICB7CiAgICAgdmFyIHQgPSB0aGlzOwpAQCAtMTMyMSw3ICsxNDA4LDcgQEAKICAg ICB2YXIgVCA9IHRoaXM7CiAgICAgdmFyIGkgPSBULk5PREUuSURYICsgMTsKICAgICBpZihpPFQu U0VDUy5sZW5ndGgpIFQubmF2aWdhdGVUbyhpKTsKLSAgICBlbHNlIFQud2FybigiQWxyZWFkeSBs YXN0IHNlY3Rpb24uIik7CisgICAgZWxzZSBULndhcm4oIlRoaXMgaXMgYWxyZWFkeSB0aGUgbGFz dCBzZWN0aW9uLiIpOwogICB9LAogCiAgIHByZXZpb3VzU2VjdGlvbjogZnVuY3Rpb24oKQpAQCAt MTMyOSw3ICsxNDE2LDcgQEAKICAgICB2YXIgdCA9IHRoaXM7CiAgICAgdmFyIGkgPSB0Lk5PREUu SURYOwogICAgIGlmKGk+MCkgdC5uYXZpZ2F0ZVRvKGktMSk7Ci0gICAgZWxzZSB0Lndhcm4oIkFs cmVhZHkgZmlyc3Qgc2VjdGlvbi4iKTsKKyAgICBlbHNlIHQud2FybigiVGhpcyBpcyBhbHJlYWR5 IHRoZSBmaXJzdCBzZWN0aW9uLiIpOwogICB9LAogCiAKQEAgLTEzNDUsNiArMTQzMiw4IEBACiAg ICAgaWYodC5WSUVXID09IHQuU0xJREVfVklFVykgdC5hZGp1c3RTbGlkZShzZWMpOwogICAgIHQu cHVzaEhpc3Rvcnkoc2VjLCB0Lk5PREUuSURYKTsKICAgICB0LnNob3dTZWN0aW9uKHNlYyk7Cisg ICAgICBPcmdJbmZvQ3VycmVudFNlY3Rpb25OdW1iZXIgPSBzZWM7CisgICAgICBPcmdJbmZvQWZ0 ZXJOYXZpZ2F0ZUZ1bmN0aW9uKCk7CiAgIH0sCiAKIApAQCAtMTM4Niw3ICsxNDc1LDcgQEAKICAg ICAgIGVsc2UgaWYodC5IRk8gJiYgaGlzdG9yeS5sZW5ndGgpIGhpc3RvcnkuZm9yd2FyZCgpOwog ICAgICAgZWxzZSB7CiAgICAgICAgIHQuSEZPPTE7Ci0gICAgICAgIHQud2FybigiSGlzdG9yeTog Tm8gd2hlcmUgdG8gZm9yZXdhcmQgZ28gZnJvbSBoZXJlLiBBbnkga2V5IGFuZCBgQicgdG8gbW92 ZSB0byBuZXh0IGZpbGUgaW4gaGlzdG9yeS4iKTsKKyAgICAgICAgdC53YXJuKCJIaXN0b3J5OiBU aGVyZSBpcyBub3doZXJlIHRvIGdvIGZvcndhcmQgdG8gZnJvbSBoZXJlLiBQcmVzcyBgQicgdG8g bW92ZSB0byB0aGUgbmV4dCBwYWdlIGluIHlvdXIgYnJvd3NlciBoaXN0b3J5LiIpOwogICAgICAg fQogICAgIH0gZWxzZSB7CiAgICAgICBpZih0LkhJU1RPUllbdC5ISVNUX0lOREVYIC0gMV0pIHsK QEAgLTE0MDYsNyArMTQ5NSw3IEBACiAgICAgICBlbHNlIGlmKHQuSEJPICYmIGhpc3RvcnkubGVu Z3RoKSBoaXN0b3J5LmJhY2soKTsKICAgICAgIGVsc2UgewogICAgICAgICB0LkhCTz0xOwotICAg ICAgICB0Lndhcm4oIkhpc3Rvcnk6IE5vIHdoZXJlIHRvIGJhY2sgZ28gZnJvbSBoZXJlLiBBbnkg a2V5IGFuZCBgYicgdG8gbW92ZSB0byBwcmV2aW91cyBmaWxlIGluIGhpc3RvcnkuIik7CisgICAg ICAgIHQud2FybigiSGlzdG9yeTogTm93aGVyZSB0byBnbyBiYWNrIHRvIGZyb20gaGVyZS4gUHJl c3MgYGInIHRvIG1vdmUgdG8gdGhlIHByZXZpb3VzIHBhZ2UgaW4geW91ciBicm93c2VyIGhpc3Rv cnkuIik7CiAgICAgICB9CiAgICAgfQogICB9LApAQCAtMTU0OSwxOCArMTYzOCwyMyBAQAogCiAg ICAgaWYgKDEgPT0gcy5sZW5ndGgpICAgIC8vIG9uZSBjaGFyIHdpZGUgY29tbWFuZHMKICAgICAg IHsKLSAgICAgICAgaWYgKCdiJyA9PSBzKSB7CisgICAgICAgIGlmICgneicgPT0gcykgeworICAg ICAgICAgICAgT3JnSW5mb1VzZXJLZXlaKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo J2snID09IHMpIHsKKyAgICAgICAgICAgIE9yZ0luZm9Vc2VyS2V5SygpOworICAgICAgICB9Cisg ICAgICAgIGVsc2UgaWYgKCd5JyA9PSBzKSB7CisgICAgICAgICAgICBPcmdJbmZvVXNlcktleVko KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgnYicgPT0gcykgewogICAgICAgICAgIHQu cG9wSGlzdG9yeSgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCdCJyA9PSBzKSB7CiAg ICAgICAgICAgdC5wb3BIaXN0b3J5KHRydWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYg KCdjJyA9PSBzKSB7Ci0gICAgICAgICAgdC5yZW1vdmVTZWFyY2hIaWdobGlnaHQoKTsKLSAgICAg ICAgICBpZih0LlZJRVcgPT0gdC5JTkZPX1ZJRVcgfHwgdC5WSUVXID09IHQuU0xJREVfVklFVykg ewotICAgICAgICAgICAgLy8gcmVkaXNwbGF5IGluIGluZm8gdmlldyBtb2RlOgotICAgICAgICAg ICAgdC5zaG93U2VjdGlvbih0Lk5PREUuSURYKTsKLSAgICAgICAgICB9CisgICAgICAgICAgICBP cmdJbmZvRG9SZW1vdmVTZWFyY2hIaWdobGlnaHQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAg ZWxzZSBpZiAoJ2knID09IHMpIHsKICAgICAgICAgICBpZighIHQuRklYRURfVE9DKSB7CkBAIC0x NTg0LDcgKzE2NzgsNyBAQAogICAgICAgICAgIGVsc2UgaWYodC5OT0RFLklEWCA8IHQuU0VDUy5s ZW5ndGggLSAxKSB7CiAgICAgICAgICAgICB0Lm5hdmlnYXRlVG8odC5OT0RFLklEWCArIDEpOwog ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0Lndhcm4oIkFscmVhZHkgbGFzdCBzZWN0 aW9uLiIpOworICAgICAgICAgICAgdC53YXJuKCJUaGlzIGlzIGFscmVhZHkgdGhlIGxhc3Qgc2Vj dGlvbi4iKTsKICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHJlbHkgb24gd2hhdCBoYXBwZW5kcyBpZiBtZXNzYWdpbmcKICAgICAgICAgICB9CiAgICAgICAg IH0KQEAgLTE2MDAsMTQgKzE2OTQsMTQgQEAKICAgICAgICAgICAgICAgKytpZHg7CiAgICAgICAg ICAgICB9CiAgICAgICAgICAgfQotICAgICAgICAgIHQud2FybigiTm8gbmV4dCBzaWJsaW5nLiIp OworICAgICAgICAgIHQud2FybigiVGhlcmUgaXMgbm8gbmV4dCBzaWJsaW5nLiIpOwogICAgICAg ICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gd2hhdCBoYXBw ZW5kcyBpZiBtZXNzYWdpbmcKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICgncCcgPT0gcykg ewogICAgICAgICAgIGlmKHQuTk9ERS5JRFggPiAwKSB7CiAgICAgICAgICAgICB0Lm5hdmlnYXRl VG8odC5OT0RFLklEWCAtIDEpOwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0Lndh cm4oIkFscmVhZHkgZmlyc3Qgc2VjdGlvbi4iKTsKKyAgICAgICAgICAgIHQud2FybigiVGhpcyBp cyBhbHJlYWR5IHRoZSBmaXJzdCBzZWN0aW9uLiIpOwogICAgICAgICAgICAgcmV0dXJuOyAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB3aGF0IGhhcHBlbmRzIGlmIG1lc3NhZ2lu ZwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTYyMyw3ICsxNzE3LDcgQEAKICAgICAgICAg ICAgICAgLS1pZHg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQotICAgICAgICAgIHQud2Fy bigiTm8gcHJldmlvdXMgc2libGluZy4iKTsKKyAgICAgICAgICB0Lndhcm4oIlRoZXJlIGlzIG5v IHByZXZpb3VzIHNpYmxpbmcuIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoJ3EnID09 IHMpIHsKICAgICAgICAgICBpZih3aW5kb3cuY29uZmlybSgiUmVhbGx5IGNsb3NlIHRoaXMgZmls ZT8iKSkgewpAQCAtMTgxMSw1NiArMTkwNSwxNSBAQAogICAgIH0KIAogICAgIGVsc2UgaWYoY29t bWFuZCA9PSAncycpIHsgLy8gc2VhcmNoCi0gICAgICBpZigiIiA9PSByZXN1bHQpIHJldHVybiBm YWxzZTsKLSAgICAgIGlmKHQuU0VBUkNIX0hJR0hMSUdIVF9PTikgdC5yZW1vdmVTZWFyY2hIaWdo bGlnaHQoKTsKLSAgICAgIHZhciByZXN0b3JlID0gdC5PQ0NVUjsKLSAgICAgIHZhciBwbHVzID0g MDsKLSAgICAgIGlmKHJlc3VsdCA9PSB0Lk9DQ1VSKSBwbHVzKys7Ci0gICAgICB0Lk9DQ1VSID0g cmVzdWx0OwotICAgICAgdC5tYWtlU2VhcmNoUmVnZXhwKCk7Ci0gICAgICBmb3IodmFyIGkgPSB0 Lk5PREUuSURYICsgcGx1czsgaSA8IHQuU0VDUy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZih0 LnNlYXJjaFRleHRJbk9yZ05vZGUoaSkpIHsKLSAgICAgICAgICB0Lk9DQ1VSID0gcmVzdWx0Owot ICAgICAgICAgIHQuaGlkZUNvbnNvbGUoKTsKLSAgICAgICAgICB0Lm5hdmlnYXRlVG8odC5TRUNT W2ldLklEWCk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB0 Lndhcm4oIlNlYXJjaCBmb3J3YXJkczogdGV4dCBub3QgZm91bmQuIiwgZmFsc2UsIHQuT0NDVVIp OwotICAgICAgdC5PQ0NVUiA9IHJlc3RvcmU7Ci0gICAgICByZXR1cm47CisgICAgICAgIE9yZ0lu Zm9Eb1NlYXJjaCh0aGlzLCByZXN1bHQpOwogICAgIH0KIAogICAgIGVsc2UgaWYoY29tbWFuZCA9 PSAnUycpIHsgLy8gcmVwZWF0IHNlYXJjaAotICAgICAgZm9yKHZhciBpID0gdC5OT0RFLklEWCAr IDE7IGkgPCB0LlNFQ1MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYodC5zZWFyY2hUZXh0SW5P cmdOb2RlKGkpKSB7Ci0gICAgICAgICAgdC5oaWRlQ29uc29sZSgpOwotICAgICAgICAgIHQubmF2 aWdhdGVUbyh0LlNFQ1NbaV0uSURYKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg ICAgIH0KLSAgICAgIHQud2FybigiU2VhcmNoIGZvcndhcmRzOiB0ZXh0IG5vdCBmb3VuZC4iLCBm YWxzZSwgdC5PQ0NVUik7Ci0gICAgICByZXR1cm47CisgICAgICAgIE9yZ0luZm9Eb1JlcGVhdFNl YXJjaCh0aGlzKTsKICAgICB9CiAKICAgICBlbHNlIGlmKGNvbW1hbmQgPT0gJ3InKSB7IC8vIHNl YXJjaCBiYWNrd2FyZHMKLSAgICAgIGlmKCIiID09IHJlc3VsdCkgcmV0dXJuIGZhbHNlOwotICAg ICAgaWYodC5TRUFSQ0hfSElHSExJR0hUX09OKSB0LnJlbW92ZVNlYXJjaEhpZ2hsaWdodCgpOwot ICAgICAgdmFyIHJlc3RvcmUgPSB0Lk9DQ1VSOwotICAgICAgdC5PQ0NVUiA9IHJlc3VsdDsKLSAg ICAgIHZhciBwbHVzID0gMDsKLSAgICAgIGlmKHJlc3VsdCA9PSB0Lk9DQ1VSKSBwbHVzKys7Ci0g ICAgICB0Lm1ha2VTZWFyY2hSZWdleHAoKTsKLSAgICAgIGZvcih2YXIgaSA9IHQuTk9ERS5JRFgg LSBwbHVzOyBpID4gLTE7IC0taSkgewotICAgICAgICBpZih0LnNlYXJjaFRleHRJbk9yZ05vZGUo aSkpIHsKLSAgICAgICAgICB0LmhpZGVDb25zb2xlKCk7Ci0gICAgICAgICAgdC5uYXZpZ2F0ZVRv KHQuU0VDU1tpXS5JRFgpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgfQot ICAgICAgdC53YXJuKCJTZWFyY2ggYmFja3dhcmRzOiB0ZXh0IG5vdCBmb3VuZC4iLCBmYWxzZSwg dC5PQ0NVUik7Ci0gICAgICB0Lk9DQ1VSID0gcmVzdG9yZTsKLSAgICAgIHJldHVybjsKKyAgICAg ICAgT3JnSW5mb0RvU2VhcmNoQmFja3dhcmQodGhpcywgcmVzdWx0KTsKICAgICB9CiAKICAgICBl bHNlIGlmKGNvbW1hbmQgPT0gJ1InKSB7IC8vIHJlcGVhdCBzZWFyY2ggYmFja3dhcmRzCkBAIC0y MDA0LDcgKzIwNTcsMTMgQEAKICAgICAgICAgdC5TRUNTW2ldLkhBU19ISUdITElHSFQgPSB0cnVl OwogICAgICAgICB0LlNFQVJDSF9ISUdITElHSFRfT04gPSB0cnVlOwogICAgICAgfQotICAgICAg aWYodC5TRUFSQ0hfUkVHRVgudGVzdCh0LlNFQ1NbaV0uRk9MREVSLmlubmVySFRNTCkpIHsKKwor ICAgICAgICBpZiAodC5TRUNTW2ldLkZPTERFUiA9PSBudWxsKQorICAgICAgICB7CisgICAgICAg ICAgICByZXQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBl bHNlIGlmICh0LlNFQVJDSF9SRUdFWC50ZXN0KHQuU0VDU1tpXS5GT0xERVIuaW5uZXJIVE1MKSkg ewogICAgICAgICByZXQgPSB0cnVlOwogICAgICAgICB0LnNldFNlYXJjaEhpZ2hsaWdodCh0LlNF Q1NbaV0uRk9MREVSKTsKICAgICAgICAgdC5TRUNTW2ldLkhBU19ISUdITElHSFQgPSB0cnVlOwpA QCAtMjAzMSwxMCArMjA5MCwxMSBAQAogICAgICAgICAgIHZhciB0bXAgPSB0LlNFQ1NbaV0uSEVB RElORy5pbm5lckhUTUw7CiAgICAgICAgICAgdC5TRUNTW2ldLkhFQURJTkcuaW5uZXJIVE1MID0g dG1wLnJlcGxhY2UodC5TRUFSQ0hfSExfUkVHRVgsICckMicpOwogICAgICAgICB9CisgICAgICAg ICAgaWYgKG51bGwgIT0gdC5TRUNTW2ldLkZPTERFUikgewogICAgICAgICB3aGlsZSh0LlNFQVJD SF9ITF9SRUdFWC50ZXN0KHQuU0VDU1tpXS5GT0xERVIuaW5uZXJIVE1MKSkgewogICAgICAgICAg IHZhciB0bXAgPSB0LlNFQ1NbaV0uRk9MREVSLmlubmVySFRNTDsKICAgICAgICAgICB0LlNFQ1Nb aV0uRk9MREVSLmlubmVySFRNTCA9IHRtcC5yZXBsYWNlKHQuU0VBUkNIX0hMX1JFR0VYLCAnJDIn KTsKLSAgICAgICAgfQorICAgICAgICB9fQogICAgICAgICB0LlNFQ1NbaV0uSEFTX0hJR0hMSUdI VCA9IGZhbHNlOwogICAgICAgfQogICAgIH0KQEAgLTIyNjIsOSArMjMyMiwxMiBAQAogCiAMCiAK K3ZhciBPcmdJbmZvRGlzYWJsZUtleWJpbmRpbmdzID0gbnVsbDsKIAogZnVuY3Rpb24gT3JnSHRt bE1hbmFnZXJLZXlFdmVudCAoZSkKIHsKKyAgICBpZiAoT3JnSW5mb0Rpc2FibGVLZXliaW5kaW5n cyA9PSB0cnVlKSByZXR1cm47CisgICAgCiAgIHZhciBjOwogICBpZiAoIWUpIGUgPSB3aW5kb3cu ZXZlbnQ7CiAgIGlmIChlLndoaWNoKSBjID0gZS53aGljaDsKQEAgLTIyOTEsMyArMjM1NCw4MSBA QAogewogICBvcmdfaHRtbF9tYW5hZ2VyLmluaXQoKTsKIH0KKworDAorCitmdW5jdGlvbiBPcmdJ bmZvRG9TZWFyY2ggKHQsIHJlc3VsdCkKK3sKKyAgICBpZigiIiA9PSByZXN1bHQpIHJldHVybiBm YWxzZTsKKyAgICBpZih0LlNFQVJDSF9ISUdITElHSFRfT04pIHQucmVtb3ZlU2VhcmNoSGlnaGxp Z2h0KCk7CisgICAgdmFyIHJlc3RvcmUgPSB0Lk9DQ1VSOworICAgIHZhciBwbHVzID0gMDsKKyAg ICBpZihyZXN1bHQgPT0gdC5PQ0NVUikgcGx1cysrOworICAgIHQuT0NDVVIgPSByZXN1bHQ7Cisg ICAgdC5tYWtlU2VhcmNoUmVnZXhwKCk7CisgICAgZm9yKHZhciBpID0gdC5OT0RFLklEWCArIHBs dXM7IGkgPCB0LlNFQ1MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYodC5zZWFyY2hUZXh0SW5P cmdOb2RlKGkpKSB7CisgICAgICAgICAgICB0Lk9DQ1VSID0gcmVzdWx0OworICAgICAgICAgICAg dC5oaWRlQ29uc29sZSgpOworICAgICAgICAgICAgdC5uYXZpZ2F0ZVRvKHQuU0VDU1tpXS5JRFgp OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIHQud2FybigiU2Vh cmNoIGZvcndhcmRzOiB0ZXh0IG5vdCBmb3VuZC4iLCBmYWxzZSwgdC5PQ0NVUik7CisgICAgdC5P Q0NVUiA9IHJlc3RvcmU7CisgICAgcmV0dXJuOworfQorCitmdW5jdGlvbiBPcmdJbmZvRG9SZXBl YXRTZWFyY2ggKHQpCit7CisgICAgZm9yKHZhciBpID0gdC5OT0RFLklEWCArIDE7IGkgPCB0LlNF Q1MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYodC5zZWFyY2hUZXh0SW5PcmdOb2RlKGkpKSB7 CisgICAgICAgICAgICB0LmhpZGVDb25zb2xlKCk7CisgICAgICAgICAgICB0Lm5hdmlnYXRlVG8o dC5TRUNTW2ldLklEWCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cisg ICAgdC53YXJuKCJTZWFyY2ggZm9yd2FyZHM6IHRleHQgbm90IGZvdW5kLiIsIGZhbHNlLCB0Lk9D Q1VSKTsKKyAgICByZXR1cm47Cit9CisKK2Z1bmN0aW9uIE9yZ0luZm9SZWNvdmVyU2VjdGlvbklE KGhlYWRpbmcpIHsKKyAgICB2YXIgZmlyc3RDaGFyID0gaGVhZGluZ1swXTsKKyAgICBpZiAoZmly c3RDaGFyID49ICcwJyAmJiBmaXJzdENoYXIgPD0gJzknKSB7CisgICAgICAgIHZhciBzdHJpbmdz ID0gaGVhZGluZy5zcGxpdCgnICcpOworICAgICAgICB2YXIgaWQgPSBzdHJpbmdzWzBdLnJlcGxh Y2VBbGwoJy4nLCAnLScpOworICAgICAgICB2YXIgbGVuID0gaWQubGVuZ3RoOworICAgICAgICB2 YXIgaWRmID0gaWQuc2xpY2UoMCwgbGVuLTEpOworICAgICAgICByZXR1cm4gaWRmOworICAgIH0K KyAgICByZXR1cm4gbnVsbDsKK30KKworZnVuY3Rpb24gT3JnSW5mb0RvU2VhcmNoQmFja3dhcmQo dCwgcmVzdWx0KSB7CisgICAgaWYoIiIgPT0gcmVzdWx0KSByZXR1cm4gZmFsc2U7CisgICAgaWYo dC5TRUFSQ0hfSElHSExJR0hUX09OKSB0LnJlbW92ZVNlYXJjaEhpZ2hsaWdodCgpOworICAgIHZh ciByZXN0b3JlID0gdC5PQ0NVUjsKKyAgICB0Lk9DQ1VSID0gcmVzdWx0OworICAgIHZhciBwbHVz ID0gMDsKKyAgICBpZihyZXN1bHQgPT0gdC5PQ0NVUikgcGx1cysrOworICAgIHQubWFrZVNlYXJj aFJlZ2V4cCgpOworICAgIGZvcih2YXIgaSA9IHQuTk9ERS5JRFggLSBwbHVzOyBpID4gLTE7IC0t aSkgeworICAgICAgICBpZih0LnNlYXJjaFRleHRJbk9yZ05vZGUoaSkpIHsKKyAgICAgICAgICAg IHQuaGlkZUNvbnNvbGUoKTsKKyAgICAgICAgICAgIHQubmF2aWdhdGVUbyh0LlNFQ1NbaV0uSURY KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICB0Lndhcm4oIlNl YXJjaCBiYWNrd2FyZHM6IHRleHQgbm90IGZvdW5kLiIsIGZhbHNlLCB0Lk9DQ1VSKTsKKyAgICB0 Lk9DQ1VSID0gcmVzdG9yZTsKKyAgICByZXR1cm47Cit9CisKK2Z1bmN0aW9uIE9yZ0luZm9Eb1Jl bW92ZVNlYXJjaEhpZ2hsaWdodCh0KSB7CisgICAgdC5yZW1vdmVTZWFyY2hIaWdobGlnaHQoKTsK KyAgICBpZih0LlZJRVcgPT0gdC5JTkZPX1ZJRVcgfHwgdC5WSUVXID09IHQuU0xJREVfVklFVykg eworICAgICAgICAvLyByZWRpc3BsYXkgaW4gaW5mbyB2aWV3IG1vZGU6CisgICAgICAgIHQuc2hv d1NlY3Rpb24odC5OT0RFLklEWCk7CisgICAgfQorfQorCgpEaWZmIGZpbmlzaGVkLiAgU2F0IERl YyAyNCAxMDoxODo0NiAyMDIyCg== --000000000000b0a22505f09487aa--