From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 80679 invoked by alias); 11 Sep 2017 19:16:07 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 80618 invoked by uid 89); 11 Sep 2017 19:15:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=HTo:U*damian, HTo:U*tkoenig, ky, cr X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-yw0-f182.google.com Received: from mail-yw0-f182.google.com (HELO mail-yw0-f182.google.com) (209.85.161.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 11 Sep 2017 19:15:55 +0000 Received: by mail-yw0-f182.google.com with SMTP id s62so23729968ywg.0; Mon, 11 Sep 2017 12:15:55 -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:from:date:message-id:subject:to; bh=v6Ge3rEs8qgsIXSyx8zhOHjJsh0Xb+hhA53T2VsEyU8=; b=eV/M8k3fqSMqG6eizNgaZu93n0KpsNkOP0tdTpAMDEf6H1WQmlDQBPRLoQmLq/udmt CGRRIUcW48y1BO0hUcKeUyqZftcIUTpnG8VwytoBL3PJmkVaqc3BIrTPV3xDB5cCXc32 VAcFKP2amWuDHa7tTSmB6cLy03sErJJm82IaFFPFMm5+7gCDdVq99jo8IJar8d0VUMl9 JXesgDQqdtBaFemVidl+wDuoGIOk31/YCpsz0sttX4BhezCR3VWgGP0Fgnk/3RO65vcu RXEM7vHz+rGwvW7Iz8QVydNo1Dg4WJxWib6pJaUqfvoKMufdPjZ4jATyS6t3TTimu1Zx TjOw== X-Gm-Message-State: AHPjjUhWDodF6aLzHCX7fBySBjFe4nKJUNGJAKs1pLTKfYQCicn5Q9xj KVOyglUcTC4TIJGCFSxGn5uChVrStw== X-Google-Smtp-Source: ADKCNb4j1x4roW5MBcYc/63PK8X1P4kR2vqU57UmfmglfFVen/eA2EpPn3stUwtfU8x1481HtYTA9VRZMZsLZJWNEL0= X-Received: by 10.13.194.70 with SMTP id e67mr11066600ywd.65.1505157348724; Mon, 11 Sep 2017 12:15:48 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.145.147 with HTTP; Mon, 11 Sep 2017 12:15:47 -0700 (PDT) From: Paul Richard Thomas Date: Mon, 11 Sep 2017 19:16:00 -0000 Message-ID: Subject: [Patch, fortran] PR82173 (PDT) - [meta-bug] Parameterized derived type errors To: Thomas Koenig , "fortran@gcc.gnu.org" , gcc-patches , Damian Rouson , David Kinniburgh Content-Type: multipart/mixed; boundary="001a114f50061a2fa20558eec180" X-IsSubscribed: yes X-SW-Source: 2017-09/txt/msg00029.txt.bz2 --001a114f50061a2fa20558eec180 Content-Type: text/plain; charset="UTF-8" Content-length: 2087 Dear Thomas, dear All, I have fixed all the PDT bugs that have been reported to me so far in the attached patch. The patch is straightforward and is commented for clarity where necessary. Please note that whitespace changes have been suppressed. For this reason, if you are tempted to try the patch use the -l option when you apply it. Bootstrapped and regtested on FC23/x86_64 - OK for trunk? Since I really want to get on with other things, if I do not receive any contrary comments I will commit tomorrow night. Cheers Paul 2017-09-11 Paul Thomas PR fortran/82173 PR fortran/82168 * decl.c (variable_decl): Check pdt template components for appearance of KIND/LEN components in the type parameter name list, that components corresponding to type parameters have either KIND or LEN attributes and that KIND or LEN components are scalar. Copy the initializer to the parameter value. (gfc_get_pdt_instance): Add a label 'error_return' and follow it with repeated code, while replacing this code with a jump. Check if a parameter appears as a component in the template. Make sure that the parameter expressions are integer. Validate KIND expressions. (gfc_match_decl_type_spec): Search for pdt_types in the parent namespace since they are instantiated in the template ns. * expr.c (gfc_extract_int): Use a KIND parameter if it appears as a component expression. (gfc_check_init_expr): Allow expressions with the pdt_kind attribute. *primary.c (gfc_match_actual_arglist): Make sure that the first keyword argument is recognised when 'pdt' is set. 2017-09-11 Paul Thomas PR fortran/82173 * gfortran.dg/pdt_4.f03 : Remove the 'is being used before it is defined' error. * gfortran.dg/pdt_6.f03 : New test. * gfortran.dg/pdt_7.f03 : New test. * gfortran.dg/pdt_8.f03 : New test. PR fortran/82168 * gfortran.dg/pdt_9.f03 : New test. -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein --001a114f50061a2fa20558eec180 Content-Type: text/plain; charset="UTF-8"; name="bugs1.diff" Content-Disposition: attachment; filename="bugs1.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j7gjsyh90 Content-length: 21391 SW5kZXg6IGdjYy9mb3J0cmFuL2RlY2wuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CioqKiBnY2MvZm9ydHJhbi9kZWNsLmMJKHJldmlzaW9uIDI1MTk0OCkK LS0tIGdjYy9mb3J0cmFuL2RlY2wuYwkod29ya2luZyBjb3B5KQoqKioqKioq KioqKioqKiogdmFyaWFibGVfZGVjbCAoaW50IGVsZW0pCioqKiAyNTM3LDI1 NDIgKioqKgotLS0gMjUzNywyNTc1IC0tLS0KICAgICAgICBnb3RvIGNsZWFu dXA7CiAgICAgIH0KCisgICBpZiAoZ2ZjX2N1cnJlbnRfc3RhdGUgKCkgPT0g Q09NUF9ERVJJVkVECisgICAgICAgJiYgZ2ZjX2N1cnJlbnRfYmxvY2sgKCkt PmF0dHIucGR0X3RlbXBsYXRlKQorICAgICB7CisgICAgICAgZ2ZjX3N5bWJv bCAqcGFyYW07CisgICAgICAgZ2ZjX2ZpbmRfc3ltYm9sIChuYW1lLCBnZmNf Y3VycmVudF9ibG9jayAoKS0+ZjJrX2Rlcml2ZWQsCisgCQkgICAgICAgMCwg JnBhcmFtKTsKKyAgICAgICBpZiAoIXBhcmFtICYmIChjdXJyZW50X2F0dHIu cGR0X2tpbmQgfHwgY3VycmVudF9hdHRyLnBkdF9sZW4pKQorIAl7CisgCSAg Z2ZjX2Vycm9yICgiVGhlIGNvbXBvbmVudCB3aXRoIEtJTkQgb3IgTEVOIGF0 dHJpYnV0ZSBhdCAlQyBkb2VzIG5vdCAiCisgCQkgICAgICJub3QgYXBwZWFy IGluIHRoZSB0eXBlIHBhcmFtZXRlciBsaXN0IGF0ICVMIiwKKyAJCSAgICAg JmdmY19jdXJyZW50X2Jsb2NrICgpLT5kZWNsYXJlZF9hdCk7CisgCSAgbSA9 IE1BVENIX0VSUk9SOworIAkgIGdvdG8gY2xlYW51cDsKKyAJfQorICAgICAg IGVsc2UgaWYgKHBhcmFtICYmICEoY3VycmVudF9hdHRyLnBkdF9raW5kIHx8 IGN1cnJlbnRfYXR0ci5wZHRfbGVuKSkKKyAJeworIAkgIGdmY19lcnJvciAo IlRoZSBjb21wb25lbnQgYXQgJUMgdGhhdCBhcHBlYXJzIGluIHRoZSB0eXBl IHBhcmFtZXRlciAiCisgCQkgICAgICJsaXN0IGF0ICVMIGhhcyBuZWl0aGVy IHRoZSBLSU5EIG5vciBMRU4gYXR0cmlidXRlIiwKKyAJCSAgICAgJmdmY19j dXJyZW50X2Jsb2NrICgpLT5kZWNsYXJlZF9hdCk7CisgCSAgbSA9IE1BVENI X0VSUk9SOworIAkgIGdvdG8gY2xlYW51cDsKKyAJfQorICAgICAgIGVsc2Ug aWYgKGFzICYmIChjdXJyZW50X2F0dHIucGR0X2tpbmQgfHwgY3VycmVudF9h dHRyLnBkdF9sZW4pKQorIAl7CisgCSAgZ2ZjX2Vycm9yICgiVGhlIGNvbXBv bmVudCBhdCAlQyB3aGljaCBpcyBhIHR5cGUgcGFyYW1ldGVyIG11c3QgYmUg IgorIAkJICAgICAiYSBzY2FsYXIiKTsKKyAJICBtID0gTUFUQ0hfRVJST1I7 CisgCSAgZ290byBjbGVhbnVwOworIAl9CisgICAgICAgZWxzZSBpZiAocGFy YW0gJiYgaW5pdGlhbGl6ZXIpCisgCXBhcmFtLT52YWx1ZSA9IGdmY19jb3B5 X2V4cHIgKGluaXRpYWxpemVyKTsKKyAgICAgfQorCiAgICAvKiBBZGQgdGhl IGluaXRpYWxpemVyLiAgTm90ZSB0aGF0IGl0IGlzIGZpbmUgaWYgaW5pdGlh bGl6ZXIgaXMKICAgICAgIE5VTEwgaGVyZSwgYmVjYXVzZSB3ZSBzb21ldGlt ZXMgYWxzbyBuZWVkIHRvIGNoZWNrIGlmIGEKICAgICAgIGRlY2xhcmF0aW9u ICptdXN0KiBoYXZlIGFuIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24uICAq LwoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRfaW5zdGFuY2UgKGdmY19h Y3R1YWxfYXJnbGlzdAoqKiogMzE5MywzMjAwICoqKioKICAJICAgIHsKICAJ ICAgICAgZ2ZjX2Vycm9yICgiVGhlIHR5cGUgcGFyYW1ldGVyIHNwZWMgbGlz dCBhdCAlQyBjYW5ub3QgY29udGFpbiAiCiAgCQkJICJib3RoIEFTU1VNRUQg YW5kIERFRkVSUkVEIHBhcmFtZXRlcnMiKTsKISAJICAgICAgZ2ZjX2ZyZWVf YWN0dWFsX2FyZ2xpc3QgKHR5cGVfcGFyYW1fc3BlY19saXN0KTsKISAJICAg ICAgcmV0dXJuIE1BVENIX0VSUk9SOwogIAkgICAgfQogIAl9CgotLS0gMzIy NiwzMjMyIC0tLS0KICAJICAgIHsKICAJICAgICAgZ2ZjX2Vycm9yICgiVGhl IHR5cGUgcGFyYW1ldGVyIHNwZWMgbGlzdCBhdCAlQyBjYW5ub3QgY29udGFp biAiCiAgCQkJICJib3RoIEFTU1VNRUQgYW5kIERFRkVSUkVEIHBhcmFtZXRl cnMiKTsKISAJICAgICAgZ290byBlcnJvcl9yZXR1cm47CiAgCSAgICB9CiAg CX0KCioqKioqKioqKioqKioqKiBnZmNfZ2V0X3BkdF9pbnN0YW5jZSAoZ2Zj X2FjdHVhbF9hcmdsaXN0CioqKiAzMjAyLDMyMTEgKioqKgogIAluYW1lX3Nl ZW4gPSB0cnVlOwogICAgICAgIHBhcmFtID0gdHlwZV9wYXJhbV9uYW1lX2xp c3QtPnN5bTsKCiAgICAgICAga2luZF9leHByID0gTlVMTDsKICAgICAgICBp ZiAoIW5hbWVfc2VlbikKICAJewohIAkgIGlmIChhY3R1YWxfcGFyYW0gJiYg YWN0dWFsX3BhcmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19FWFBMSUNJVCkKICAJ ICAgIGtpbmRfZXhwciA9IGdmY19jb3B5X2V4cHIgKGFjdHVhbF9wYXJhbS0+ ZXhwcik7CiAgCX0KICAgICAgICBlbHNlCi0tLSAzMjM0LDMyNjAgLS0tLQog IAluYW1lX3NlZW4gPSB0cnVlOwogICAgICAgIHBhcmFtID0gdHlwZV9wYXJh bV9uYW1lX2xpc3QtPnN5bTsKCisgICAgICAgYzEgPSBnZmNfZmluZF9jb21w b25lbnQgKHBkdCwgcGFyYW0tPm5hbWUsIGZhbHNlLCB0cnVlLCBOVUxMKTsK KyAgICAgICBpZiAoIXBkdC0+YXR0ci51c2VfYXNzb2MgJiYgIWMxKQorIAl7 CisgCSAgZ2ZjX2Vycm9yICgiVGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgbGlz dCBhdCAlTCBjb250YWlucyBhIHBhcmFtZXRlciAiCisgCQkgICAgICInJXFz JyAsIHdoaWNoIGlzIG5vdCBkZWNsYXJlZCBhcyBhIGNvbXBvbmVudCBvZiB0 aGUgdHlwZSIsCisgCQkgICAgICZwZHQtPmRlY2xhcmVkX2F0LCBwYXJhbS0+ bmFtZSk7CisgCSAgZ290byBlcnJvcl9yZXR1cm47CisgCX0KKwogICAgICAg IGtpbmRfZXhwciA9IE5VTEw7CiAgICAgICAgaWYgKCFuYW1lX3NlZW4pCiAg CXsKISAJICBpZiAoIWFjdHVhbF9wYXJhbSAmJiAhKGMxICYmIGMxLT5pbml0 aWFsaXplcikpCiEgCSAgICB7CiEgCSAgICAgIGdmY19lcnJvciAoIlRoZSB0 eXBlIHBhcmFtZXRlciBzcGVjIGxpc3QgYXQgJUMgZG9lcyBub3QgY29udGFp biAiCiEgCQkJICJlbm91Z2ggcGFyYW1ldGVyIGV4cHJlc3Npb25zIik7CiEg CSAgICAgIGdvdG8gZXJyb3JfcmV0dXJuOwohIAkgICAgfQohIAkgIGVsc2Ug aWYgKCFhY3R1YWxfcGFyYW0gJiYgYzEgJiYgYzEtPmluaXRpYWxpemVyKQoh IAkgICAga2luZF9leHByID0gZ2ZjX2NvcHlfZXhwciAoYzEtPmluaXRpYWxp emVyKTsKISAJICBlbHNlIGlmIChhY3R1YWxfcGFyYW0gJiYgYWN0dWFsX3Bh cmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19FWFBMSUNJVCkKICAJICAgIGtpbmRf ZXhwciA9IGdmY19jb3B5X2V4cHIgKGFjdHVhbF9wYXJhbS0+ZXhwcik7CiAg CX0KICAgICAgICBlbHNlCioqKioqKioqKioqKioqKiBnZmNfZ2V0X3BkdF9p bnN0YW5jZSAoZ2ZjX2FjdHVhbF9hcmdsaXN0CioqKiAzMjI1LDMyMzEgKioq KgogIAkJewogIAkJICBnZmNfZXJyb3IgKCJUaGUgZGVyaXZlZCBwYXJhbWV0 ZXIgJyVxcycgYXQgJUMgZG9lcyBub3QgIgogIAkJCSAgICAgImhhdmUgYSBk ZWZhdWx0IHZhbHVlIiwgcGFyYW0tPm5hbWUpOwohIAkJICByZXR1cm4gTUFU Q0hfRVJST1I7CiAgCQl9CiAgCSAgICB9CiAgCX0KLS0tIDMyNzQsMzI4MCAt LS0tCiAgCQl7CiAgCQkgIGdmY19lcnJvciAoIlRoZSBkZXJpdmVkIHBhcmFt ZXRlciAnJXFzJyBhdCAlQyBkb2VzIG5vdCAiCiAgCQkJICAgICAiaGF2ZSBh IGRlZmF1bHQgdmFsdWUiLCBwYXJhbS0+bmFtZSk7CiEgCQkgIGdvdG8gZXJy b3JfcmV0dXJuOwogIAkJfQogIAkgICAgfQogIAl9CioqKioqKioqKioqKioq KiBnZmNfZ2V0X3BkdF9pbnN0YW5jZSAoZ2ZjX2FjdHVhbF9hcmdsaXN0Cioq KiAzMjQ3LDMyNTIgKioqKgotLS0gMzI5NiwzMzEyIC0tLS0KCiAgICAgICAg aWYgKGtpbmRfZXhwcikKICAJeworIAkgIC8qIFZhcmlhYmxlIGV4cHJlc3Np b25zIHNlZW0gdG8gZGVmYXVsdCB0byBCVF9QUk9DRURVUkUuCisgCSAgICAg VE9ETyBmaW5kIG91dCB3aHkgdGhpcyBpcyBhbmQgZml4IGl0LiAgKi8KKyAJ ICBpZiAoa2luZF9leHByLT50cy50eXBlICE9IEJUX0lOVEVHRVIKKyAJICAg ICAgJiYga2luZF9leHByLT50cy50eXBlICE9IEJUX1BST0NFRFVSRSkKKyAJ ICAgIHsKKyAJICAgICAgZ2ZjX2Vycm9yICgiVGhlIHBhcmFtZXRlciBleHBy ZXNzaW9uIGF0ICVDIG11c3QgYmUgb2YgIgorIAkJICAgICAgICAgIklOVEVH RVIgdHlwZSBhbmQgbm90ICVzIHR5cGUiLAorIAkJCSBnZmNfYmFzaWNfdHlw ZW5hbWUgKGtpbmRfZXhwci0+dHMudHlwZSkpOworIAkgICAgICBnb3RvIGVy cm9yX3JldHVybjsKKyAJICAgIH0KKwogIAkgIHRhaWwtPmV4cHIgPSBnZmNf Y29weV9leHByIChraW5kX2V4cHIpOwogIAkgIC8qIFRyeSBzaW1wbGlmaWNh dGlvbiBldmVuIGZvciBMRU4gZXhwcmVzc2lvbnMuICAqLwogIAkgIGdmY19z aW1wbGlmeV9leHByICh0YWlsLT5leHByLCAxKTsKKioqKioqKioqKioqKioq IGdmY19nZXRfcGR0X2luc3RhbmNlIChnZmNfYWN0dWFsX2FyZ2xpc3QKKioq IDMyNTcsMzI2MyAqKioqCgogICAgICAgIGlmICghcGFyYW0tPmF0dHIucGR0 X2tpbmQpCiAgCXsKISAJICBpZiAoIW5hbWVfc2VlbikKICAJICAgIGFjdHVh bF9wYXJhbSA9IGFjdHVhbF9wYXJhbS0+bmV4dDsKICAJICBpZiAoa2luZF9l eHByKQogIAkgICAgewotLS0gMzMxNywzMzIzIC0tLS0KCiAgICAgICAgaWYg KCFwYXJhbS0+YXR0ci5wZHRfa2luZCkKICAJewohIAkgIGlmICghbmFtZV9z ZWVuICYmIGFjdHVhbF9wYXJhbSkKICAJICAgIGFjdHVhbF9wYXJhbSA9IGFj dHVhbF9wYXJhbS0+bmV4dDsKICAJICBpZiAoa2luZF9leHByKQogIAkgICAg ewoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRfaW5zdGFuY2UgKGdmY19h Y3R1YWxfYXJnbGlzdAoqKiogMzI3MywzMjg4ICoqKioKICAJewogIAkgIGdm Y19lcnJvciAoIlRoZSBLSU5EIHBhcmFtZXRlciAnJXFzJyBhdCAlQyBjYW5u b3QgZWl0aGVyIGJlICIKICAJCSAgICAgIkFTU1VNRUQgb3IgREVGRVJSRUQi LCBwYXJhbS0+bmFtZSk7CiEgCSAgZ2ZjX2ZyZWVfYWN0dWFsX2FyZ2xpc3Qg KHR5cGVfcGFyYW1fc3BlY19saXN0KTsKISAJICByZXR1cm4gTUFUQ0hfRVJS T1I7CiAgCX0KCiAgICAgICAgaWYgKCFraW5kX2V4cHIgfHwgIWdmY19pc19j b25zdGFudF9leHByIChraW5kX2V4cHIpKQogIAl7CiAgCSAgZ2ZjX2Vycm9y ICgiVGhlIHZhbHVlIGZvciB0aGUgS0lORCBwYXJhbWV0ZXIgJyVxcycgYXQg JUMgZG9lcyBub3QgIgogIAkJICAgICAicmVkdWNlIHRvIGEgY29uc3RhbnQg ZXhwcmVzc2lvbiIsIHBhcmFtLT5uYW1lKTsKISAJICBnZmNfZnJlZV9hY3R1 YWxfYXJnbGlzdCAodHlwZV9wYXJhbV9zcGVjX2xpc3QpOwohIAkgIHJldHVy biBNQVRDSF9FUlJPUjsKICAJfQoKICAgICAgICBnZmNfZXh0cmFjdF9pbnQg KGtpbmRfZXhwciwgJmtpbmRfdmFsdWUpOwotLS0gMzMzMywzMzQ2IC0tLS0K ICAJewogIAkgIGdmY19lcnJvciAoIlRoZSBLSU5EIHBhcmFtZXRlciAnJXFz JyBhdCAlQyBjYW5ub3QgZWl0aGVyIGJlICIKICAJCSAgICAgIkFTU1VNRUQg b3IgREVGRVJSRUQiLCBwYXJhbS0+bmFtZSk7CiEgCSAgZ290byBlcnJvcl9y ZXR1cm47CiAgCX0KCiAgICAgICAgaWYgKCFraW5kX2V4cHIgfHwgIWdmY19p c19jb25zdGFudF9leHByIChraW5kX2V4cHIpKQogIAl7CiAgCSAgZ2ZjX2Vy cm9yICgiVGhlIHZhbHVlIGZvciB0aGUgS0lORCBwYXJhbWV0ZXIgJyVxcycg YXQgJUMgZG9lcyBub3QgIgogIAkJICAgICAicmVkdWNlIHRvIGEgY29uc3Rh bnQgZXhwcmVzc2lvbiIsIHBhcmFtLT5uYW1lKTsKISAJICBnb3RvIGVycm9y X3JldHVybjsKICAJfQoKICAgICAgICBnZmNfZXh0cmFjdF9pbnQgKGtpbmRf ZXhwciwgJmtpbmRfdmFsdWUpOwoqKioqKioqKioqKioqKiogZ2ZjX2dldF9w ZHRfaW5zdGFuY2UgKGdmY19hY3R1YWxfYXJnbGlzdAoqKiogMzI5MywzMzA0 ICoqKioKICAgICAgICBnZmNfZnJlZV9leHByIChraW5kX2V4cHIpOwogICAg ICB9CgogICAgLyogTm93IHdlIHNlYXJjaCBmb3IgdGhlIFBEVCBpbnN0YW5j ZSAnbmFtZScuIElmIGl0IGRvZXNuJ3QgZXhpc3QsIHdlCiAgICAgICBidWls ZCBpdCwgdXNpbmcgJ3BkdCcgYXMgYSB0ZW1wbGF0ZS4gICovCiAgICBpZiAo Z2ZjX2dldF9zeW1ib2wgKG5hbWUsIHBkdC0+bnMsICZpbnN0YW5jZSkpCiAg ICAgIHsKICAgICAgICBnZmNfZXJyb3IgKCJQYXJhbWV0ZXJpemVkIGRlcml2 ZWQgdHlwZSBhdCAlQyBpcyBhbWJpZ3VvdXMiKTsKISAgICAgICByZXR1cm4g TUFUQ0hfRVJST1I7CiAgICAgIH0KCiAgICBtID0gTUFUQ0hfWUVTOwotLS0g MzM1MSwzMzY5IC0tLS0KICAgICAgICBnZmNfZnJlZV9leHByIChraW5kX2V4 cHIpOwogICAgICB9CgorICAgaWYgKCFuYW1lX3NlZW4gJiYgYWN0dWFsX3Bh cmFtKQorICAgICB7CisgICAgICAgZ2ZjX2Vycm9yICgiVGhlIHR5cGUgcGFy YW1ldGVyIHNwZWMgbGlzdCBhdCAlQyBjb250YWlucyB0b28gbWFueSAiCisg CQkgInBhcmFtZXRlciBleHByZXNzaW9ucyIpOworICAgICAgIGdvdG8gZXJy b3JfcmV0dXJuOworICAgICB9CisKICAgIC8qIE5vdyB3ZSBzZWFyY2ggZm9y IHRoZSBQRFQgaW5zdGFuY2UgJ25hbWUnLiBJZiBpdCBkb2Vzbid0IGV4aXN0 LCB3ZQogICAgICAgYnVpbGQgaXQsIHVzaW5nICdwZHQnIGFzIGEgdGVtcGxh dGUuICAqLwogICAgaWYgKGdmY19nZXRfc3ltYm9sIChuYW1lLCBwZHQtPm5z LCAmaW5zdGFuY2UpKQogICAgICB7CiAgICAgICAgZ2ZjX2Vycm9yICgiUGFy YW1ldGVyaXplZCBkZXJpdmVkIHR5cGUgYXQgJUMgaXMgYW1iaWd1b3VzIik7 CiEgICAgICAgZ290byBlcnJvcl9yZXR1cm47CiAgICAgIH0KCiAgICBtID0g TUFUQ0hfWUVTOwoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRfaW5zdGFu Y2UgKGdmY19hY3R1YWxfYXJnbGlzdAoqKiogMzM3MCwzMzc2ICoqKioKICAJ ICAgICAgZ2ZjX2Vycm9yICgiTWF4aW11bSBleHRlbnNpb24gbGV2ZWwgcmVh Y2hlZCB3aXRoIHR5cGUgJXFzIGF0ICVMIiwKICAJCQkgYzItPnRzLnUuZGVy aXZlZC0+bmFtZSwKICAJCQkgJmMyLT50cy51LmRlcml2ZWQtPmRlY2xhcmVk X2F0KTsKISAJICAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwogIAkgICAgfQog IAkgIGluc3RhbmNlLT5hdHRyLmV4dGVuc2lvbiA9IGMyLT50cy51LmRlcml2 ZWQtPmF0dHIuZXh0ZW5zaW9uICsgMTsKCi0tLSAzNDM1LDM0NDEgLS0tLQog IAkgICAgICBnZmNfZXJyb3IgKCJNYXhpbXVtIGV4dGVuc2lvbiBsZXZlbCBy ZWFjaGVkIHdpdGggdHlwZSAlcXMgYXQgJUwiLAogIAkJCSBjMi0+dHMudS5k ZXJpdmVkLT5uYW1lLAogIAkJCSAmYzItPnRzLnUuZGVyaXZlZC0+ZGVjbGFy ZWRfYXQpOwohIAkgICAgICBnb3RvIGVycm9yX3JldHVybjsKICAJICAgIH0K ICAJICBpbnN0YW5jZS0+YXR0ci5leHRlbnNpb24gPSBjMi0+dHMudS5kZXJp dmVkLT5hdHRyLmV4dGVuc2lvbiArIDE7CgoqKioqKioqKioqKioqKiogZ2Zj X2dldF9wZHRfaW5zdGFuY2UgKGdmY19hY3R1YWxfYXJnbGlzdAoqKiogMzM5 MCwzMzk1ICoqKioKLS0tIDM0NTUsMzQ2NiAtLS0tCiAgCSAgZ2ZjX2luc2Vy dF9raW5kX3BhcmFtZXRlcl9leHBycyAoZSk7CiAgCSAgZ2ZjX2V4dHJhY3Rf aW50IChlLCAmYzItPnRzLmtpbmQpOwogIAkgIGdmY19mcmVlX2V4cHIgKGUp OworIAkgIGlmIChnZmNfdmFsaWRhdGVfa2luZCAoYzItPnRzLnR5cGUsIGMy LT50cy5raW5kLCB0cnVlKSA8IDApCisgCSAgICB7CisgCSAgICAgIGdmY19l cnJvciAoIktpbmQgJWQgbm90IHN1cHBvcnRlZCBmb3IgdHlwZSAlcyBhdCAl QyIsCisgCQkJIGMyLT50cy5raW5kLCBnZmNfYmFzaWNfdHlwZW5hbWUgKGMy LT50cy50eXBlKSk7CisgCSAgICAgIGdvdG8gZXJyb3JfcmV0dXJuOworIAkg ICAgfQogIAl9CgogICAgICAgIC8qIFNpbWlsYXJseSwgc2V0IHRoZSBzdHJp bmcgbGVuZ3RoIGlmIHBhcmFtZXRlcml6ZWQuICAqLwoqKioqKioqKioqKioq KiogZ2ZjX2dldF9wZHRfaW5zdGFuY2UgKGdmY19hY3R1YWxfYXJnbGlzdAoq KiogMzQ5OSwzNTA0ICoqKioKLS0tIDM1NzAsMzU3OSAtLS0tCiAgICAgICpl eHRfcGFyYW1fbGlzdCA9IHR5cGVfcGFyYW1fc3BlY19saXN0OwogICAgKnN5 bSA9IGluc3RhbmNlOwogICAgcmV0dXJuIG07CisKKyBlcnJvcl9yZXR1cm46 CisgICBnZmNfZnJlZV9hY3R1YWxfYXJnbGlzdCAodHlwZV9wYXJhbV9zcGVj X2xpc3QpOworICAgcmV0dXJuIE1BVENIX0VSUk9SOwogIH0KCgoqKioqKioq KioqKioqKiogZ2ZjX21hdGNoX2RlY2xfdHlwZV9zcGVjIChnZmNfdHlwZXNw ZWMgKgoqKiogMzgyOSwzODM0ICoqKioKLS0tIDM5MDQsMzkyMiAtLS0tCiAg CX0KICAgICAgICBpZiAoc3ltLT5nZW5lcmljICYmICFkdF9zeW0pCiAgCWR0 X3N5bSA9IGdmY19maW5kX2R0X2luX2dlbmVyaWMgKHN5bSk7CisKKyAgICAg ICAvKiBIb3N0IGFzc29jaWF0ZWQgUERUcyBjYW4gZ2V0IGNvbmZ1c2VkIHdp dGggdGhlaXIgY29uc3RydWN0b3JzCisgCSBiZWNhdXNlIHRoZXkgYXIgaW5z dGFudGlhdGVkIGluIHRoZSB0ZW1wbGF0ZSdzIG5hbWVzcGFjZS4gICovCisg ICAgICAgaWYgKCFkdF9zeW0pCisgCXsKKyAJICBpZiAoZ2ZjX2ZpbmRfc3lt Ym9sIChkdF9uYW1lLCBOVUxMLCAxLCAmZHRfc3ltKSkKKyAJICAgIHsKKyAJ ICAgICAgZ2ZjX2Vycm9yICgiVHlwZSBuYW1lICVxcyBhdCAlQyBpcyBhbWJp Z3VvdXMiLCBuYW1lKTsKKyAJICAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwor IAkgICAgfQorIAkgIGlmIChkdF9zeW0gJiYgIWR0X3N5bS0+YXR0ci5wZHRf dHlwZSkKKyAJICAgIGR0X3N5bSA9IE5VTEw7CisgCX0KICAgICAgfQogICAg ZWxzZSBpZiAodHMtPmtpbmQgPT0gLTEpCiAgICAgIHsKSW5kZXg6IGdjYy9m b3J0cmFuL2V4cHIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CioqKiBnY2Mv Zm9ydHJhbi9leHByLmMJKHJldmlzaW9uIDI1MTk0OSkKLS0tIGdjYy9mb3J0 cmFuL2V4cHIuYwkod29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKiogZ2Zj X3JlcGxhY2VfZXhwciAoZ2ZjX2V4cHIgKmRlc3QsIGdmY19leAoqKiogNjI0 LDYyOSAqKioqCi0tLSA2MjQsNjQzIC0tLS0KICBib29sCiAgZ2ZjX2V4dHJh Y3RfaW50IChnZmNfZXhwciAqZXhwciwgaW50ICpyZXN1bHQsIGludCByZXBv cnRfZXJyb3IpCiAgeworICAgZ2ZjX3JlZiAqcmVmOworCisgICAvKiBBIEtJ TkQgY29tcG9uZW50IGlzIGEgcGFyYW1ldGVyIHRvby4gVGhlIGV4cHJlc3Np b24gZm9yIGl0CisgICAgICBpcyBzdG9yZWQgaW4gdGhlIGluaXRpYWxpemVy IGFuZCBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoCisgICAgICB0aGUgdGVz dHMgYmVsb3cuICAqLworICAgaWYgKGdmY19leHByX2F0dHIoZXhwcikucGR0 X2tpbmQpCisgICAgIHsKKyAgICAgICBmb3IgKHJlZiA9IGV4cHItPnJlZjsg cmVmOyByZWYgPSByZWYtPm5leHQpCisgCXsKKyAJICAgaWYgKHJlZi0+dS5j LmNvbXBvbmVudC0+YXR0ci5wZHRfa2luZCkKKyAJICAgICBleHByID0gcmVm LT51LmMuY29tcG9uZW50LT5pbml0aWFsaXplcjsKKyAJfQorICAgICB9CisK ICAgIGlmIChleHByLT5leHByX3R5cGUgIT0gRVhQUl9DT05TVEFOVCkKICAg ICAgewogICAgICAgIGlmIChyZXBvcnRfZXJyb3IgPiAwKQoqKioqKioqKioq KioqKiogZ2ZjX2NoZWNrX2luaXRfZXhwciAoZ2ZjX2V4cHIgKmUpCioqKiAy NTQ4LDI1NTQgKioqKgogICAgICAgIHQgPSB0cnVlOwoKICAgICAgICAvKiBU aGlzIG9jY3VycyB3aGVuIHBhcnNpbmcgcGR0IHRlbXBsYXRlcy4gICovCiEg ICAgICAgaWYgKGUtPnN5bXRyZWUtPm4uc3ltLT5hdHRyLnBkdF9raW5kKQog IAlicmVhazsKCiAgICAgICAgaWYgKGdmY19jaGVja19pdGVyX3ZhcmlhYmxl IChlKSkKLS0tIDI1NjIsMjU2OCAtLS0tCiAgICAgICAgdCA9IHRydWU7Cgog ICAgICAgIC8qIFRoaXMgb2NjdXJzIHdoZW4gcGFyc2luZyBwZHQgdGVtcGxh dGVzLiAgKi8KISAgICAgICBpZiAoZ2ZjX2V4cHJfYXR0ciAoZSkucGR0X2tp bmQpCiAgCWJyZWFrOwoKICAgICAgICBpZiAoZ2ZjX2NoZWNrX2l0ZXJfdmFy aWFibGUgKGUpKQpJbmRleDogZ2NjL2ZvcnRyYW4vcHJpbWFyeS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKioqIGdjYy9mb3J0cmFuL3ByaW1hcnkuYwko cmV2aXNpb24gMjUxOTQ4KQotLS0gZ2NjL2ZvcnRyYW4vcHJpbWFyeS5jCSh3 b3JraW5nIGNvcHkpCioqKioqKioqKioqKioqKiBnZmNfbWF0Y2hfYWN0dWFs X2FyZ2xpc3QgKGludCBzdWJfZmxhZywKKioqIDE3OTYsMTgwNiAqKioqCgog ICAgICAgIGlmIChzdWJfZmxhZyAmJiAhcGR0ICYmIGdmY19tYXRjaF9jaGFy ICgnKicpID09IE1BVENIX1lFUykKICAJewotIAkgIGlmIChwZHQpCi0gCSAg ICB7Ci0gCSAgICAgIHRhaWwtPnNwZWNfdHlwZSA9IFNQRUNfQVNTVU1FRDsK LSAJICAgICAgZ290byBuZXh0OwotIAkgICAgfQogIAkgIG0gPSBnZmNfbWF0 Y2hfc3RfbGFiZWwgKCZsYWJlbCk7CiAgCSAgaWYgKG0gPT0gTUFUQ0hfTk8p CiAgCSAgICBnZmNfZXJyb3IgKCJFeHBlY3RlZCBhbHRlcm5hdGUgcmV0dXJu IGxhYmVsIGF0ICVDIik7Ci0tLSAxNzk2LDE4MDEgLS0tLQoqKioqKioqKioq KioqKiogZ2ZjX21hdGNoX2FjdHVhbF9hcmdsaXN0IChpbnQgc3ViX2ZsYWcs CioqKiAxODI5LDE4MzQgKioqKgotLS0gMTgyNCwxODM4IC0tLS0KICAJICAg IH0KICAJICBlbHNlCiAgCSAgICB0YWlsLT5zcGVjX3R5cGUgPSBTUEVDX0VY UExJQ0lUOworCisgCSAgbSA9IG1hdGNoX2tleXdvcmRfYXJnICh0YWlsLCBo ZWFkLCBwZHQpOworIAkgIGlmIChtID09IE1BVENIX1lFUykKKyAJICAgIHsK KyAJICAgICAgc2Vlbl9rZXl3b3JkID0gMTsKKyAJICAgICAgZ290byBuZXh0 OworIAkgICAgfQorIAkgIGlmIChtID09IE1BVENIX0VSUk9SKQorIAkgICAg Z290byBjbGVhbnVwOwogIAl9CgogICAgICAgIC8qIEFmdGVyIHRoZSBmaXJz dCBrZXl3b3JkIGFyZ3VtZW50IGlzIHNlZW4sIHRoZSBmb2xsb3dpbmcKSW5k ZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzQuZjAzCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKioqIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvcGR0XzQuZjAzCShyZXZpc2lvbiAyNTE5NDgpCi0tLSBnY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL3BkdF80LmYwMwkod29ya2luZyBjb3B5KQoqKioq KioqKioqKioqKiogZW5kIG1vZHVsZQoqKiogODEsODggKioqKgogICAgZW5k IHNlbGVjdAogICAgZGVhbGxvY2F0ZSAoY3opCiAgY29udGFpbnMKISAgIHN1 YnJvdXRpbmUgZm9vKGFyZykgICAgICAgICAgICAgICAhIHsgZGctZXJyb3Ig ImhhcyBubyBJTVBMSUNJVCB0eXBlIiB9CiEgICAgIHR5cGUgKG15dHlwZSg0 LCAqKSkgOjogYXJnICAgICAgISB7IGRnLWVycm9yICJpcyBiZWluZyB1c2Vk IGJlZm9yZSBpdCBpcyBkZWZpbmVkIiB9CiAgICBlbmQgc3Vicm91dGluZQog ICAgc3Vicm91dGluZSBiYXIoYXJnKSAgICAgICAgICAgICAgICEgeyBkZy1l cnJvciAiY2Fubm90IGhhdmUgREVGRVJSRUQgdHlwZSBwYXJhbWV0ZXJzIiB9 CiAgICAgIHR5cGUgKHRoeXR5cGUoOCwgOiwgNCkgOjogYXJnCi0tLSA4MSw4 OCAtLS0tCiAgICBlbmQgc2VsZWN0CiAgICBkZWFsbG9jYXRlIChjeikKICBj b250YWlucwohICAgc3Vicm91dGluZSBmb28oYXJnKQohICAgICB0eXBlICht eXR5cGUoNCwgKikpIDo6IGFyZyAgICAgICEgdXNlZCB0byBoYXZlIGFuIGlu dmFsaWQgImlzIGJlaW5nIHVzZWQgYmVmb3JlIGl0IGlzIGRlZmluZWQiCiAg ICBlbmQgc3Vicm91dGluZQogICAgc3Vicm91dGluZSBiYXIoYXJnKSAgICAg ICAgICAgICAgICEgeyBkZy1lcnJvciAiY2Fubm90IGhhdmUgREVGRVJSRUQg dHlwZSBwYXJhbWV0ZXJzIiB9CiAgICAgIHR5cGUgKHRoeXR5cGUoOCwgOiwg NCkgOjogYXJnCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3Bk dF82LmYwMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CioqKiBnY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL3BkdF82LmYwMwkobm9uZXhpc3RlbnQpCi0tLSBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF82LmYwMwkod29ya2luZyBj b3B5KQoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0gMSwyNiAtLS0t CisgISB7IGRnLWRvIGNvbXBpbGUgfQorICEKKyAhIEZpeGVzIG9mIElDRSBv biBpbnZhbGlkICYgYWNjZXB0cyBpbnZhbGlkCisgIQorICEgQ29udHJpYnV0 ZWQgYnkgVGhvbWFzIEtvZW5pZyAgPHRrb2VuaWdAbmV0Y29sb2duZS5kZT4K KyAhCisgaW1wbGljaXQgbm9uZQorCisgdHlwZSA6OiBwYXJhbV9tYXRyaXgo YyxyKQorICAgaW50ZWdlciwgbGVuIDo6IGMscgorICAgcmVhbCA6OiBtKGMs cikKKyBlbmQgdHlwZQorCisgdHlwZSByZWFsX2FycmF5KGspCisgICBpbnRl Z2VyLCBraW5kIDo6IGsKKyAgIHJlYWwoa2luZD1rKSwgYWxsb2NhdGFibGUg Ojogcig6KQorIGVuZCB0eXBlCisKKyB0eXBlKHBhcmFtX21hdHJpeCgxKSkg OjogbTEgICAgICAgISB7IGRnLWVycm9yICJkb2VzIG5vdCBjb250YWluIGVu b3VnaCBwYXJhbWV0ZXIiIH0KKyB0eXBlKHBhcmFtX21hdHJpeCgxLDIpKSA6 OiBtMiAgICAgISBvaworIHR5cGUocGFyYW1fbWF0cml4KDEsMiwzKSkgOjog bTMgICAhIHsgZGctZXJyb3IgImNvbnRhaW5zIHRvbyBtYW55IHBhcmFtZXRl ciIgfQorIHR5cGUocGFyYW1fbWF0cml4KDEsMi41KSkgOjogbTQgICAhIHsg ZGctZXJyb3IgIm11c3QgYmUgb2YgSU5URUdFUiB0eXBlIiB9CisKKyB0eXBl KHJlYWxfYXJyYXkoNCkpIDo6IGExICAgICAgICAgISBvaworIHR5cGUocmVh bF9hcnJheSg1KSkgOjogYTIgICAgICAgICAhIHsgZGctZXJyb3IgIktpbmQg NSBub3Qgc3VwcG9ydGVkIGZvciB0eXBlIFJFQUwiIH0KKyBlbmQKSW5kZXg6 IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzcuZjAzCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKioqIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv cGR0XzcuZjAzCShub25leGlzdGVudCkKLS0tIGdjYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvcGR0XzcuZjAzCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioq KioqKgoqKiogMCAqKioqCi0tLSAxLDIwIC0tLS0KKyAhIHsgZGctZG8gcnVu IH0KKyAhCisgISBSZWplY3RlZCB2YWxpZAorICEKKyAhIENvbnRyaWJ1dGVk IGJ5IFRob21hcyBLb2VuaWcgIDx0a29lbmlnQG5ldGNvbG9nbmUuZGU+Cisg IQorIGltcGxpY2l0IG5vbmUKKworIHR5cGUgOjogcGFyYW1fbWF0cml4KGss YyxyKQorICAgaW50ZWdlciwga2luZCA6OiBrCisgICBpbnRlZ2VyLCBsZW4g OjogYyxyCisgICByZWFsKGtpbmQ9aykgOjogbShjLHIpCisgZW5kIHR5cGUK KworIHR5cGUocGFyYW1fbWF0cml4KDgsMywyKSkgOjogbWF0CisgcmVhbChr aW5kPW1hdCVrKSA6OiBtICAgICEgQ29ycmVjdGVkIGVycm9yOiBQYXJhbWV0 ZXIg4oCYbWF04oCZIGF0ICgxKSBoYXMgbm90IGJlZW4gZGVjbGFyZWQgb3Ig Li4uCisKKyBpZiAoa2luZChtKSAubmUuIDgpIGNhbGwgYWJvcnQKKworIGVu ZApJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfOC5mMDMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9wZHRfOC5mMDMJKG5vbmV4aXN0ZW50KQotLS0gZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9wZHRfOC5mMDMJKHdvcmtpbmcgY29weSkKKioq KioqKioqKioqKioqCioqKiAwICoqKioKLS0tIDEsMjMgLS0tLQorICEgeyBk Zy1kbyBjb21waWxlIH0KKyAhCisgISBGaXhlcyBvZiAiYWNjZXB0cyBpbnZh bGlkIi4KKyAhIE5vdGUgdGhhdCB0aGUgdW5kZWNsYXJlZCBwYXJhbWV0ZXIg J3knIGluICd0MScgd2FzIG9yaWdpbmFsbHkgaW4gdGhlCisgISB0eXBlICd0 Jy4gSXQgdHVybmVkIG91dCB0byBiZSBjb252ZW5pZW50IHRvIGRlZmVyIHRo ZSBlcnJvciB1bnRpbCB0aGUKKyAhIHR5cGUgaXMgdXNlZCBpbiB0aGUgZGVj bGFyYXRpb24gb2YgJ3onLgorICEKKyAhIENvbnRyaWJ1dGVkIGJ5IFRob21h cyBLb2VuaWcgIDx0a29lbmlnQG5ldGNvbG9nbmUuZGU+CisgIQorIGltcGxp Y2l0IG5vbmUKKyB0eXBlIDo6IHQoaSxhLHgpICAgICAgICAgISB7IGRnLWVy cm9yICJkb2VzIG5vdHxoYXMgbmVpdGhlciIgfQorICAgaW50ZWdlciwga2lu ZCA6OiBrICAgICAhIHsgZGctZXJyb3IgImRvZXMgbm90IG5vdCBhcHBlYXIg aW4gdGhlIHR5cGUgcGFyYW1ldGVyIGxpc3QiIH0KKyAgIGludGVnZXIgOjog aSAgICAgICAgICAgISB7IGRnLWVycm9yICJoYXMgbmVpdGhlciB0aGUgS0lO RCBub3IgTEVOIGF0dHJpYnV0ZSIgfQorICAgaW50ZWdlciwga2luZCA6OiBh KDMpICAhIHsgZGctZXJyb3IgIm11c3QgYmUgYSBzY2FsYXIiIH0KKyAgIHJl YWwsIGtpbmQgOjogeCAgICAgICAgISB7IGRnLWVycm9yICJtdXN0IGJlIElO VEVHRVIiIH0KKyBlbmQgdHlwZQorCisgdHlwZSA6OiB0MShrLHkpICAgICAg ICAgICEgeyBkZy1lcnJvciAibm90IGRlY2xhcmVkIGFzIGEgY29tcG9uZW50 IG9mIHRoZSB0eXBlIiB9CisgICBpbnRlZ2VyLCBraW5kIDo6IGsKKyBlbmQg dHlwZQorCisgdHlwZSh0MSg0LDQpKSA6OiB6CisgZW5kCkluZGV4OiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF85LmYwMwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CioqKiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF85 LmYwMwkobm9uZXhpc3RlbnQpCi0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL3BkdF85LmYwMwkod29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKioK KioqIDAgKioqKgotLS0gMSwyMyAtLS0tCisgISB7IGRnLWRvIGNvbXBpbGUg fQorICEKKyAhIFRlc3QgdGhlIGZpeCBmb3IgUFI4MjE2OCBpbiB3aGljaCB0 aGUgZGVjbGFyYXRpb25zIGZvciAnYScKKyAhIGFuZCAnYicgdGhyZXcgZXJy b3JzIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHZhbGlkLgorICEKKyAhIENvbnRy aWJ1dGVkIGJ5ICA8cGh5c2lrZXJAdG9hc3QyLm5ldD4KKyAhCisgbW9kdWxl IG1vZAorICAgaW1wbGljaXQgbm9uZQorICAgaW50ZWdlciwgcGFyYW1ldGVy IDo6IGRwID0ga2luZCAoMC4wZDApCisgICB0eXBlLCBwdWJsaWMgOjogdih6 LCBrKQorICAgICBpbnRlZ2VyLCBsZW4gOjogegorICAgICBpbnRlZ2VyLCBr aW5kIDo6IGsgPSBraW5kKDAuMCkKKyAgICAgcmVhbChraW5kID0gaykgOjog ZSh6KQorICAgZW5kIHR5cGUgdgorIGVuZCBtb2R1bGUgbW9kCisKKyBwcm9n cmFtIGJ1ZworICAgdXNlIG1vZAorICAgaW1wbGljaXQgbm9uZQorICAgdHlw ZSAodigyKSkgOjogYSAgICAgISBNaXNzaW5nIHBhcmFtZXRlciByZXBsYWNl ZCBieSBpbml0aWFsaXplci4KKyAgIHR5cGUgKHYoej06LCBrPWRwKSksIGFs bG9jYXRhYmxlIDo6IGIgISBLZXl3b3JkIHdhcyBub3Qgd29ya2luZyBmb3Ig JyonIG9yICc6JworIGVuZCBwcm9ncmFtIGJ1Zwo= --001a114f50061a2fa20558eec180--