From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x12b.google.com (mail-il1-x12b.google.com [IPv6:2607:f8b0:4864:20::12b]) by sourceware.org (Postfix) with ESMTPS id 9EFFF385780E; Tue, 29 Sep 2020 12:30:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9EFFF385780E Received: by mail-il1-x12b.google.com with SMTP id t12so4650689ilh.3; Tue, 29 Sep 2020 05:30:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kBOCLW62T0UI/DyYbqUz2nzpHiHJoVyuQZzZl2bWVQY=; b=gu/7ZXYs/HGoz6fIT94O+cCqsdXr9K0awdDeZ66PSmzIHINXO3NhrpikMw4Qld1Opb g4rNL1RLgZ1mH0g5uvXrD9+TbGD2lMwJNPh1s3br2m6jHFajmZmW66KxyfHmpx6gtz/w AWevPnP57ln3OPLS9gfW62YVDeMunDIk0t85S4wU3CxTKCp/0T2IJPBetK7PkiptUz49 4q7qmsU+O6YIxVs74MMqFCUoacf9tdOFFtd4s9FJSrQKkM5RfxgUvEiq4uY3ak0hAJLW xstjtzxzs4fol8xqwmf0Av6sO6A4jDRqluvavb5pbVRs6vPVuTGo5toR31nECI70z4Yo JxIw== X-Gm-Message-State: AOAM5304sES3sqdqpiugQg02W///sRHPS3JJqiRb7qow/1zwJGQ8ikbH iPmel7cjs7b7boxUNBwL+s6s7U8Z3B3uYiREleqdHpPWytA= X-Google-Smtp-Source: ABdhPJzE4B+ak8jeHaM2TEQVu3sWbiI4ra4A3M2LatfAKqqIPrGQ7iHoTcqdossoUsmnzyy/RFy4WTWWzYnsF6A4Vio= X-Received: by 2002:a92:1589:: with SMTP id 9mr2866882ilv.292.1601382646065; Tue, 29 Sep 2020 05:30:46 -0700 (PDT) MIME-Version: 1.0 References: <20200918160709.949608-1-hjl.tools@gmail.com> <20200918160709.949608-3-hjl.tools@gmail.com> <87eemm6n37.fsf@oldenburg2.str.redhat.com> <42e48ec7-4b11-387c-eaf0-50bc564dbca0@sourceware.org> <565f21f3-0630-2d4e-dff4-6cda90533fb5@gotplt.org> In-Reply-To: <565f21f3-0630-2d4e-dff4-6cda90533fb5@gotplt.org> From: "H.J. Lu" Date: Tue, 29 Sep 2020 05:30:09 -0700 Message-ID: Subject: V4 [PATCH] Set tunable value as well as min/max values To: Siddhesh Poyarekar Cc: Siddhesh Poyarekar , Florian Weimer , "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="000000000000c5f2ac05b072f3e2" X-Spam-Status: No, score=-3038.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Sep 2020 12:30:48 -0000 --000000000000c5f2ac05b072f3e2 Content-Type: text/plain; charset="UTF-8" On Mon, Sep 28, 2020 at 9:47 PM Siddhesh Poyarekar wrote: > > (Sorry, replying to myself) > > On 29/09/20 10:15, Siddhesh Poyarekar via Libc-alpha wrote: > > There should be a check here to ensure that the bounds do not exceed > > statically set bounds. That is: > > > > if (minp != NULL && cur->type.min < *((int64_t *) minp)) > > cur->type.min = *((int64_t *) minp); > > if (maxp != NULL && cur->type.max > *((int64_t *) maxp)) > > cur->type.max = *((int64_t *) maxp); > > Also check for min > max type invalid ranges. > Here is the updated patch with TUNABLE_SET_BOUNDS_IF_VALID. OK for master? Thanks. -- H.J. --000000000000c5f2ac05b072f3e2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Set-tunable-value-as-well-as-min-max-values.patch" Content-Disposition: attachment; filename="0001-Set-tunable-value-as-well-as-min-max-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfnxtm7y0 RnJvbSBhYTQ5OTk2ZjhlMjMzYjA4MWQ1MTE0NDFkMWYxYjU1N2E3ZmQ0OThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMSBKdW4gMjAyMCAxNDoxMTozMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNldCB0dW5h YmxlIHZhbHVlIGFzIHdlbGwgYXMgbWluL21heCB2YWx1ZXMKClNvbWUgdHVuYWJsZSB2YWx1ZXMg YW5kIHRoZWlyIG1pbmltdW0vbWF4aW11bSB2YWx1ZXMgbXVzdCBiZSBkZXRlcm1pbnRlZAphdCBy dW4tdGltZS4gIEFkZCBUVU5BQkxFX1NFVF9XSVRIX0JPVU5EUyBhbmQgVFVOQUJMRV9TRVRfV0lU SF9CT1VORFNfRlVMTAp0byB1cGRhdGUgdHVuYWJsZSB2YWx1ZSB0b2dldGhlciB3aXRoIG1pbmlt dW0gYW5kIG1heGltdW0gdmFsdWVzLgpfX3R1bmFibGVfc2V0X3ZhbCBpcyB1cGRhdGVkIHRvIHNl dCB0dW5hYmxlIHZhbHVlIGFzIHdlbGwgYXMgbWluL21heAp2YWx1ZXMuCi0tLQogZWxmL2RsLXR1 bmFibGVzLmMgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZWxm L2RsLXR1bmFibGVzLmggICAgICB8IDIxICsrKysrKysrKysrKysrKysrKystLQogbWFudWFsL1JF QURNRS50dW5hYmxlcyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFu Z2VkLCA3MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2VsZi9k bC10dW5hYmxlcy5jIGIvZWxmL2RsLXR1bmFibGVzLmMKaW5kZXggMjZlNmUyNjYxMi4uNmU4Y2Ez NmZlZiAxMDA2NDQKLS0tIGEvZWxmL2RsLXR1bmFibGVzLmMKKysrIGIvZWxmL2RsLXR1bmFibGVz LmMKQEAgLTEwMCw4ICsxMDAsMzAgQEAgZ2V0X25leHRfZW52IChjaGFyICoqZW52cCwgY2hhciAq Km5hbWUsIHNpemVfdCAqbmFtZWxlbiwgY2hhciAqKnZhbCwKICAgICB9CQkJCQkJCQkJICAgICAg XAogfSkKIAorI2RlZmluZSBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQoX19jdXIsIF9fbWF4 cCwgX19taW5wLCBfX3R5cGUpCSAgICAgIFwKKyh7CQkJCQkJCQkJICAgICAgXAorICBfX3R5cGUg bWluID0gX19taW5wID8gKigoX190eXBlICopIF9fbWlucCkgOiAoX19jdXIpLT50eXBlLm1pbjsJ ICAgICAgXAorICBfX3R5cGUgbWF4ID0gX19tYXhwID8gKigoX190eXBlICopIF9fbWF4cCkgOiAo X19jdXIpLT50eXBlLm1heDsJICAgICAgXAorICBpZiAoX19taW5wKQkJCQkJCQkJICAgICAgXAor ICAgIHsJCQkJCQkJCQkgICAgICBcCisgICAgICBpZiAoX19tYXhwKQkJCQkJCQkgICAgICBcCisJ ewkJCQkJCQkJICAgICAgXAorCSAgaWYgKG1heCA+IG1pbikJCQkJCQkgICAgICBcCisJICAgIHsJ CQkJCQkJCSAgICAgIFwKKwkgICAgICAoX19jdXIpLT50eXBlLm1pbiA9IG1pbjsJCQkJCSAgICAg IFwKKwkgICAgICAoX19jdXIpLT50eXBlLm1heCA9IG1heDsJCQkJCSAgICAgIFwKKwkgICAgfQkJ CQkJCQkJICAgICAgXAorCX0JCQkJCQkJCSAgICAgIFwKKyAgICAgIGVsc2UgaWYgKG1heCA+IG1p bikJCQkJCQkgICAgICBcCisJKF9fY3VyKS0+dHlwZS5taW4gPSBtaW47CQkJCQkgICAgICBcCisg ICAgfQkJCQkJCQkJCSAgICAgIFwKKyAgZWxzZSBpZiAobWF4ID4gbWluKQkJCQkJCQkgICAgICBc CisgICAgKF9fY3VyKS0+dHlwZS5tYXggPSBtaW47CQkJCQkJICAgICAgXAorfSkKKwogc3RhdGlj IHZvaWQKLWRvX3R1bmFibGVfdXBkYXRlX3ZhbCAodHVuYWJsZV90ICpjdXIsIGNvbnN0IHZvaWQg KnZhbHApCitkb190dW5hYmxlX3VwZGF0ZV92YWwgKHR1bmFibGVfdCAqY3VyLCBjb25zdCB2b2lk ICp2YWxwLAorCQkgICAgICAgY29uc3Qgdm9pZCAqbWlucCwgY29uc3Qgdm9pZCAqbWF4cCkKIHsK ICAgdWludDY0X3QgdmFsOwogCkBAIC0xMTIsMTYgKzEzNCwxOSBAQCBkb190dW5hYmxlX3VwZGF0 ZV92YWwgKHR1bmFibGVfdCAqY3VyLCBjb25zdCB2b2lkICp2YWxwKQogICAgIHsKICAgICBjYXNl IFRVTkFCTEVfVFlQRV9JTlRfMzI6CiAJeworCSAgVFVOQUJMRV9TRVRfQk9VTkRTX0lGX1ZBTElE IChjdXIsIG1pbnAsIG1heHAsIGludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElE X1JBTkdFIChjdXIsIHZhbCwgaW50NjRfdCk7CiAJICBicmVhazsKIAl9CiAgICAgY2FzZSBUVU5B QkxFX1RZUEVfVUlOVF82NDoKIAl7CisJICBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQgKGN1 ciwgbWlucCwgbWF4cCwgdWludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElEX1JB TkdFIChjdXIsIHZhbCwgdWludDY0X3QpOwogCSAgYnJlYWs7CiAJfQogICAgIGNhc2UgVFVOQUJM RV9UWVBFX1NJWkVfVDoKIAl7CisJICBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQgKGN1ciwg bWlucCwgbWF4cCwgdWludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElEX1JBTkdF IChjdXIsIHZhbCwgdWludDY0X3QpOwogCSAgYnJlYWs7CiAJfQpAQCAtMTUzLDE1ICsxNzgsMTUg QEAgdHVuYWJsZV9pbml0aWFsaXplICh0dW5hYmxlX3QgKmN1ciwgY29uc3QgY2hhciAqc3RydmFs KQogICAgICAgY3VyLT5pbml0aWFsaXplZCA9IHRydWU7CiAgICAgICB2YWxwID0gc3RydmFsOwog ICAgIH0KLSAgZG9fdHVuYWJsZV91cGRhdGVfdmFsIChjdXIsIHZhbHApOworICBkb190dW5hYmxl X3VwZGF0ZV92YWwgKGN1ciwgdmFscCwgTlVMTCwgTlVMTCk7CiB9CiAKIHZvaWQKLV9fdHVuYWJs ZV9zZXRfdmFsICh0dW5hYmxlX2lkX3QgaWQsIHZvaWQgKnZhbHApCitfX3R1bmFibGVfc2V0X3Zh bCAodHVuYWJsZV9pZF90IGlkLCB2b2lkICp2YWxwLCB2b2lkICptaW5wLCB2b2lkICptYXhwKQog ewogICB0dW5hYmxlX3QgKmN1ciA9ICZ0dW5hYmxlX2xpc3RbaWRdOwogCi0gIGRvX3R1bmFibGVf dXBkYXRlX3ZhbCAoY3VyLCB2YWxwKTsKKyAgZG9fdHVuYWJsZV91cGRhdGVfdmFsIChjdXIsIHZh bHAsIG1pbnAsIG1heHApOwogfQogCiAjaWYgVFVOQUJMRVNfRlJPTlRFTkQgPT0gVFVOQUJMRVNf RlJPTlRFTkRfdmFsc3RyaW5nCmRpZmYgLS1naXQgYS9lbGYvZGwtdHVuYWJsZXMuaCBiL2VsZi9k bC10dW5hYmxlcy5oCmluZGV4IGYwNWViNTBjMmYuLjU1MGIwY2M3ZjQgMTAwNjQ0Ci0tLSBhL2Vs Zi9kbC10dW5hYmxlcy5oCisrKyBiL2VsZi9kbC10dW5hYmxlcy5oCkBAIC03MCw5ICs3MCwxMCBA QCB0eXBlZGVmIHN0cnVjdCBfdHVuYWJsZSB0dW5hYmxlX3Q7CiAKIGV4dGVybiB2b2lkIF9fdHVu YWJsZXNfaW5pdCAoY2hhciAqKik7CiBleHRlcm4gdm9pZCBfX3R1bmFibGVfZ2V0X3ZhbCAodHVu YWJsZV9pZF90LCB2b2lkICosIHR1bmFibGVfY2FsbGJhY2tfdCk7Ci1leHRlcm4gdm9pZCBfX3R1 bmFibGVfc2V0X3ZhbCAodHVuYWJsZV9pZF90LCB2b2lkICopOworZXh0ZXJuIHZvaWQgX190dW5h YmxlX3NldF92YWwgKHR1bmFibGVfaWRfdCwgdm9pZCAqLCB2b2lkICosIHZvaWQgKik7CiBydGxk X2hpZGRlbl9wcm90byAoX190dW5hYmxlc19pbml0KQogcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVu YWJsZV9nZXRfdmFsKQorcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9zZXRfdmFsKQogCiAv KiBEZWZpbmUgVFVOQUJMRV9HRVQgYW5kIFRVTkFCTEVfU0VUIGluIHNob3J0IGZvcm0gaWYgVE9Q X05BTUVTUEFDRSBhbmQKICAgIFRVTkFCTEVfTkFNRVNQQUNFIGFyZSBkZWZpbmVkLiAgVGhpcyBp cyB1c2VmdWwgc2hvcnRoYW5kIHRvIGdldCBhbmQgc2V0CkBAIC04MiwxMSArODMsMTggQEAgcnRs ZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9nZXRfdmFsKQogICBUVU5BQkxFX0dFVF9GVUxMIChU T1BfTkFNRVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgX190eXBlLCBfX2NiKQogIyBk ZWZpbmUgVFVOQUJMRV9TRVQoX19pZCwgX190eXBlLCBfX3ZhbCkgXAogICBUVU5BQkxFX1NFVF9G VUxMIChUT1BfTkFNRVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgX190eXBlLCBfX3Zh bCkKKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTKF9faWQsIF9fdHlwZSwgX192YWws IF9fbWluLCBfX21heCkgXAorICBUVU5BQkxFX1NFVF9XSVRIX0JPVU5EU19GVUxMIChUT1BfTkFN RVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgXAorCQkJCV9fdHlwZSwgX192YWwsIF9f bWluLCBfX21heCkKICNlbHNlCiAjIGRlZmluZSBUVU5BQkxFX0dFVChfX3RvcCwgX19ucywgX19p ZCwgX190eXBlLCBfX2NiKSBcCiAgIFRVTkFCTEVfR0VUX0ZVTEwgKF9fdG9wLCBfX25zLCBfX2lk LCBfX3R5cGUsIF9fY2IpCiAjIGRlZmluZSBUVU5BQkxFX1NFVChfX3RvcCwgX19ucywgX19pZCwg X190eXBlLCBfX3ZhbCkgXAogICBUVU5BQkxFX1NFVF9GVUxMIChfX3RvcCwgX19ucywgX19pZCwg X190eXBlLCBfX3ZhbCkKKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTKF9fdG9wLCBf X25zLCBfX2lkLCBfX3R5cGUsIF9fdmFsLCBcCisJCQkJIF9fbWluLCBfX21heCkgXAorICBUVU5B QkxFX1NFVF9XSVRIX0JPVU5EU19GVUxMIChfX3RvcCwgX19ucywgX19pZCwgX190eXBlLCBfX3Zh bCwgXAorCQkJCV9fbWluLCBfX21heCkKICNlbmRpZgogCiAvKiBHZXQgYW5kIHJldHVybiBhIHR1 bmFibGUgdmFsdWUuICBJZiB0aGUgdHVuYWJsZSB3YXMgc2V0IGV4dGVybmFsbHkgYW5kIF9fQ0IK QEAgLTEwMyw3ICsxMTEsMTYgQEAgcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9nZXRfdmFs KQogIyBkZWZpbmUgVFVOQUJMRV9TRVRfRlVMTChfX3RvcCwgX19ucywgX19pZCwgX190eXBlLCBf X3ZhbCkgXAogKHsJCQkJCQkJCQkgICAgICBcCiAgIF9fdHVuYWJsZV9zZXRfdmFsIChUVU5BQkxF X0VOVU1fTkFNRSAoX190b3AsIF9fbnMsIF9faWQpLAkJICAgICAgXAotCQkJJiAoX190eXBlKSB7 X192YWx9KTsJCQkJICAgICAgXAorCQkgICAgICYgKF9fdHlwZSkge19fdmFsfSwgTlVMTCwgTlVM TCk7CQkJICAgICAgXAorfSkKKworLyogU2V0IGEgdHVuYWJsZSB2YWx1ZSB0b2dldGhlciB3aXRo IG1pbi9tYXggdmFsdWVzLiAgKi8KKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTX0ZV TEwoX190b3AsIF9fbnMsIF9faWQsIF9fdHlwZSwgX192YWwsCSAgICAgIFwKKwkJCQkgICAgICBf X21pbiwgX19tYXgpCQkJICAgICAgXAorKHsJCQkJCQkJCQkgICAgICBcCisgIF9fdHVuYWJsZV9z ZXRfdmFsIChUVU5BQkxFX0VOVU1fTkFNRSAoX190b3AsIF9fbnMsIF9faWQpLAkJICAgICAgXAor CQkgICAgICYgKF9fdHlwZSkge19fdmFsfSwgICYgKF9fdHlwZSkge19fbWlufSwJCSAgICAgIFwK KwkJICAgICAmIChfX3R5cGUpIHtfX21heH0pOwkJCQkgICAgICBcCiB9KQogCiAvKiBOYW1lc3Bh Y2Ugc2FuaXR5IGZvciBjYWxsYmFjayBmdW5jdGlvbnMuICBVc2UgdGhpcyBtYWNybyB0byBrZWVw IHRoZQpkaWZmIC0tZ2l0IGEvbWFudWFsL1JFQURNRS50dW5hYmxlcyBiL21hbnVhbC9SRUFETUUu dHVuYWJsZXMKaW5kZXggZjg3YTMxYTY1ZS4uZmZmNmMyYTg3ZSAxMDA2NDQKLS0tIGEvbWFudWFs L1JFQURNRS50dW5hYmxlcworKysgYi9tYW51YWwvUkVBRE1FLnR1bmFibGVzCkBAIC02Nyw3ICs2 Nyw3IEBAIFRoZSBsaXN0IG9mIGFsbG93ZWQgYXR0cmlidXRlcyBhcmU6CiAJCQkJICAgICBub24t QVRfU0VDVVJFIHN1YnByb2Nlc3Nlcy4KIAkJCU5PTkU6IFJlYWQgYWxsIHRoZSB0aW1lLgogCi0y LiBVc2UgVFVOQUJMRV9HRVQvVFVOQUJMRV9TRVQgdG8gZ2V0IGFuZCBzZXQgdHVuYWJsZXMuCisy LiBVc2UgVFVOQUJMRV9HRVQvVFVOQUJMRV9TRVQvVFVOQUJMRV9TRVRfV0lUSF9CT1VORFMgdG8g Z2V0IGFuZCBzZXQgdHVuYWJsZXMuCiAKIDMuIE9QVElPTkFMOiBJZiB0dW5hYmxlcyBpbiBhIG5h bWVzcGFjZSBhcmUgYmVpbmcgdXNlZCBtdWx0aXBsZSB0aW1lcyB3aXRoaW4gYQogICAgc3BlY2lm aWMgbW9kdWxlLCBzZXQgdGhlIFRVTkFCTEVfTkFNRVNQQUNFIG1hY3JvIHRvIHJlZHVjZSB0aGUg YW1vdW50IG9mCkBAIC0xMTIsOSArMTEyLDI5IEBAIGZvcm0gb2YgdGhlIG1hY3JvcyBhcyBmb2xs b3dzOgogd2hlcmUgJ2dsaWJjJyBpcyB0aGUgdG9wIG5hbWVzcGFjZSwgJ2NwdScgaXMgdGhlIHR1 bmFibGUgbmFtZXNwYWNlIGFuZCB0aGUKIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1l IGFzIHRoZSBzaG9ydCBmb3JtIG1hY3Jvcy4KIAorVGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFs dWVzIGNhbiB1cGRhdGVkIHRvZ2V0aGVyIHdpdGggdGhlIHR1bmFibGUgdmFsdWUKK3VzaW5nOgor CisgIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTIChjaGVjaywgaW50MzJfdCwgdmFsLCBtaW4sIG1h eCkKKword2hlcmUgJ2NoZWNrJyBpcyB0aGUgdHVuYWJsZSBuYW1lLCAnaW50MzJfdCcgaXMgdGhl IEMgdHlwZSBvZiB0aGUgdHVuYWJsZSwKKyd2YWwnIGlzIGEgdmFsdWUgb2Ygc2FtZSB0eXBlLCAn bWluJyBhbmQgJ21heCcgYXJlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtCit2YWx1ZXMgb2YgdGhl IHR1bmFibGUuCisKK1RvIHNldCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdHVu YWJsZXMgaW4gYSBkaWZmZXJlbnQgbmFtZXNwYWNlCitmcm9tIHRoYXQgbW9kdWxlLCB1c2UgdGhl IGZ1bGwgZm9ybSBvZiB0aGUgbWFjcm9zIGFzIGZvbGxvd3M6CisKKyAgdmFsID0gVFVOQUJMRV9H RVRfRlVMTCAoZ2xpYmMsIGNwdSwgaHdjYXBfbWFzaywgdWludDY0X3QsIE5VTEwpCisKKyAgVFVO QUJMRV9TRVRfV0lUSF9CT1VORFNfRlVMTCAoZ2xpYmMsIGNwdSwgaHdjYXBfbWFzaywgdWludDY0 X3QsIHZhbCwgbWluLCBtYXgpCisKK3doZXJlICdnbGliYycgaXMgdGhlIHRvcCBuYW1lc3BhY2Us ICdjcHUnIGlzIHRoZSB0dW5hYmxlIG5hbWVzcGFjZSBhbmQgdGhlCityZW1haW5pbmcgYXJndW1l bnRzIGFyZSB0aGUgc2FtZSBhcyB0aGUgc2hvcnQgZm9ybSBtYWNyb3MuCisKIFdoZW4gVFVOQUJM RV9OQU1FU1BBQ0UgaXMgbm90IGRlZmluZWQgaW4gYSBtb2R1bGUsIFRVTkFCTEVfR0VUIGlzIGVx dWl2YWxlbnQgdG8KIFRVTkFCTEVfR0VUX0ZVTEwsIHNvIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlk ZSBmdWxsIG5hbWVzcGFjZSBpbmZvcm1hdGlvbiBmb3IKLWJvdGggbWFjcm9zLiAgTGlrZXdpc2Ug Zm9yIFRVTkFCTEVfU0VUIGFuZCBUVU5BQkxFX1NFVF9GVUxMLgorYm90aCBtYWNyb3MuICBMaWtl d2lzZSBmb3IgVFVOQUJMRV9TRVQsIFRVTkFCTEVfU0VUX0ZVTEwsCitUVU5BQkxFX1NFVF9XSVRI X0JPVU5EUyBhbmQgVFVOQUJMRV9TRVRfV0lUSF9CT1VORFNfRlVMTC4KIAogKiogSU1QT1JUQU5U IE5PVEUgKioKIAotLSAKMi4yNi4yCgo= --000000000000c5f2ac05b072f3e2--