From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 50C2013877A for ; Sun, 17 Aug 2014 18:38:28 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 22F26E0A40; Sun, 17 Aug 2014 18:38:21 +0000 (UTC) Received: from mail-qc0-f179.google.com (mail-qc0-f179.google.com [209.85.216.179]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A365EE09B5 for ; Sun, 17 Aug 2014 18:38:19 +0000 (UTC) Received: by mail-qc0-f179.google.com with SMTP id m20so4117041qcx.10 for ; Sun, 17 Aug 2014 11:38:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=UzTovke/BFDYLmbnP09mNHrccyfoQxH0zk5kd2wzUag=; b=Yau6tr24sX5cCRi9x+15yz2wJQ+XcEYzCNa9jD2BhVjvfAhGA4B0bpYEvTOGNYKb6o FXgE2zDo33OMpCCq6NO5TI8HN8/+GE0Lu7LwEqdLQaloRh/X4c7vg6SbZjH1oYMEylDW I0IgQMkPd/K8APFxUUzECqsF5psR7o4QlL8z3L4Q8zCf7IUTRvRha21jsk5JXM1Uqg5i cvgJ8/WfMDTNJwqMX5Sb7LY+dnlDPegs6n6PGh72UcmM47bhB4wEWwcf8BXEfDpNx8FW eGifAvJd7mguDeRIlSbO2IKvqnoCQ6KaZxHemJ/zOR4puDFHxdX9kNaJbjs6U3y8ceag y0jg== Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 X-Received: by 10.229.231.68 with SMTP id jp4mr48874173qcb.4.1408300698815; Sun, 17 Aug 2014 11:38:18 -0700 (PDT) Sender: davidepesa@gmail.com Received: by 10.224.193.201 with HTTP; Sun, 17 Aug 2014 11:38:18 -0700 (PDT) Date: Sun, 17 Aug 2014 20:38:18 +0200 X-Google-Sender-Auth: J4BgETWcj5nX9ABYeNoTEhF7S3E Message-ID: Subject: [gentoo-dev] [RFC] qt5-build.eclass From: Davide Pesavento To: gentoo-dev@lists.gentoo.org Content-Type: multipart/mixed; boundary=001a1134497ae425810500d78ec9 X-Archives-Salt: 1f7ee09c-f312-4877-96d4-d3bd0ee4dbf1 X-Archives-Hash: a152de6d82868de1d20fc50b0cbdd94c --001a1134497ae425810500d78ec9 Content-Type: text/plain; charset=UTF-8 Hi guys, In preparation for moving Qt5 to gentoo-x86 (finally!), please review the attached eclass that is inherited by every Qt5 ebuild. If you want to get an idea about how the ebuild code looks like, see any ebuild in the dev-qt category of our overlay that inherits the eclass: https://git.overlays.gentoo.org/gitweb/?p=proj/qt.git;a=tree;f=dev-qt;hb=HEAD or on the github mirror (easier to navigate and nicer looking): https://github.com/gentoo/qt/tree/master/dev-qt For reference, the tracker bug is https://bugs.gentoo.org/show_bug.cgi?id=qt5 I will commit the eclass in about 7-10 days from now, unless major problems are found during the review. The actual Qt5 packages will follow soon thereafter, initially under package.mask. Thanks, Pesa --001a1134497ae425810500d78ec9 Content-Type: application/octet-stream; name="qt5-build.eclass" Content-Disposition: attachment; filename="qt5-build.eclass" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hyypjb7x0 IyBDb3B5cmlnaHQgMTk5OS0yMDE0IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk ZXI6ICQKCiMgQEVDTEFTUzogcXQ1LWJ1aWxkLmVjbGFzcwojIEBNQUlOVEFJTkVSOgojIFF0IGhl cmQgPHF0QGdlbnRvby5vcmc+CiMgQEFVVEhPUjoKIyBEYXZpZGUgUGVzYXZlbnRvIDxwZXNhQGdl bnRvby5vcmc+CiMgQEJMVVJCOiBFY2xhc3MgZm9yIFF0NSBzcGxpdCBlYnVpbGRzLgojIEBERVND UklQVElPTjoKIyBUaGlzIGVjbGFzcyBjb250YWlucyB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0IGFy ZSB1c2VkIHdoZW4gYnVpbGRpbmcgUXQ1LgojIFJlcXVpcmVzIEVBUEkgNS4KCmNhc2UgJHtFQVBJ fSBpbgoJNSkJOiA7OwoJKikJZGllICJxdDUtYnVpbGQuZWNsYXNzOiB1bnN1cHBvcnRlZCBFQVBJ PSR7RUFQSTotMH0iIDs7CmVzYWMKCmluaGVyaXQgZXV0aWxzIGZsYWctby1tYXRpYyBtdWx0aWxp YiB0b29sY2hhaW4tZnVuY3MgdmlydHVhbHgKCkhPTUVQQUdFPSJodHRwOi8vcXQtcHJvamVjdC5v cmcvIGh0dHA6Ly9xdC5kaWdpYS5jb20vIgpMSUNFTlNFPSJ8fCAoIExHUEwtMi4xIEdQTC0zICki ClNMT1Q9IjUiCgojIEBFQ0xBU1MtVkFSSUFCTEU6IFFUNV9NT0RVTEUKIyBAREVTQ1JJUFRJT046 CiMgVGhlIHVwc3RyZWFtIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGlzIHBhY2thZ2UgYmVsb25ncyB0 by4gVXNlZCBmb3IKIyBTUkNfVVJJIGFuZCBFR0lUX1JFUE9fVVJJLiBNdXN0IGJlIGRlZmluZWQg YmVmb3JlIGluaGVyaXRpbmcgdGhlIGVjbGFzcy4KOiAke1FUNV9NT0RVTEU6PSR7UE59fQoKY2Fz ZSAke1BWfSBpbgoJNS45OTk5KQoJCSMgZ2l0IGRldiBicmFuY2gKCQlRVDVfQlVJTERfVFlQRT0i bGl2ZSIKCQlFR0lUX0JSQU5DSD0iZGV2IgoJCTs7Cgk1Lj8uOTk5OSkKCQkjIGdpdCBzdGFibGUg YnJhbmNoZXMgKDUueCkKCQlRVDVfQlVJTERfVFlQRT0ibGl2ZSIKCQlFR0lUX0JSQU5DSD0ke1BW JS45OTk5fQoJCTs7CgkqX2FscGhhKnwqX2JldGEqfCpfcmMqKQoJCSMgZGV2ZWxvcG1lbnQgcmVs ZWFzZXMKCQlRVDVfQlVJTERfVFlQRT0icmVsZWFzZSIKCQlNWV9QPSR7UVQ1X01PRFVMRX0tb3Bl bnNvdXJjZS1zcmMtJHtQVi9fLy19CgkJU1JDX1VSST0iaHR0cDovL2Rvd25sb2FkLnF0LXByb2pl Y3Qub3JnL2RldmVsb3BtZW50X3JlbGVhc2VzL3F0LyR7UFYlLip9LyR7UFYvXy8tfS9zdWJtb2R1 bGVzLyR7TVlfUH0udGFyLnh6IgoJCVM9JHtXT1JLRElSfS8ke01ZX1B9CgkJOzsKCSopCgkJIyBv ZmZpY2lhbCBzdGFibGUgcmVsZWFzZXMKCQlRVDVfQlVJTERfVFlQRT0icmVsZWFzZSIKCQlNWV9Q PSR7UVQ1X01PRFVMRX0tb3BlbnNvdXJjZS1zcmMtJHtQVn0KCQlTUkNfVVJJPSJodHRwOi8vZG93 bmxvYWQucXQtcHJvamVjdC5vcmcvb2ZmaWNpYWxfcmVsZWFzZXMvcXQvJHtQViUuKn0vJHtQVn0v c3VibW9kdWxlcy8ke01ZX1B9LnRhci54eiIKCQlTPSR7V09SS0RJUn0vJHtNWV9QfQoJCTs7CmVz YWMKCkVHSVRfUkVQT19VUkk9KAoJImdpdDovL2dpdG9yaW91cy5vcmcvcXQvJHtRVDVfTU9EVUxF fS5naXQiCgkiaHR0cHM6Ly9naXQuZ2l0b3Jpb3VzLm9yZy9xdC8ke1FUNV9NT0RVTEV9LmdpdCIK KQpbWyAke1FUNV9CVUlMRF9UWVBFfSA9PSBsaXZlIF1dICYmIGluaGVyaXQgZ2l0LXIzCgpJVVNF PSJkZWJ1ZyB0ZXN0IgoKREVQRU5EPSIKCWRldi1sYW5nL3BlcmwKCXZpcnR1YWwvcGtnY29uZmln CiIKaWYgW1sgJHtQTn0gIT0gcXR0ZXN0IF1dOyB0aGVuCglpZiBbWyAke1FUNV9NT0RVTEV9ID09 IHF0YmFzZSBdXTsgdGhlbgoJCURFUEVORCs9IiB0ZXN0PyAoIH5kZXYtcXQvcXR0ZXN0LSR7UFZ9 W2RlYnVnPV0gKSIKCWVsc2UKCQlERVBFTkQrPSIgdGVzdD8gKCA+PWRldi1xdC9xdHRlc3QtJHtQ Vn06NVtkZWJ1Zz1dICkiCglmaQpmaQoKRVhQT1JUX0ZVTkNUSU9OUyBzcmNfdW5wYWNrIHNyY19w cmVwYXJlIHNyY19jb25maWd1cmUgc3JjX2NvbXBpbGUgc3JjX2luc3RhbGwgc3JjX3Rlc3QgcGtn X3Bvc3RpbnN0IHBrZ19wb3N0cm0KCiMgQEVDTEFTUy1WQVJJQUJMRTogUEFUQ0hFUwojIEBERUZB VUxUX1VOU0VUCiMgQERFU0NSSVBUSU9OOgojIEFycmF5IHZhcmlhYmxlIGNvbnRhaW5pbmcgYWxs IHRoZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQuIFRoaXMgdmFyaWFibGUKIyBpcyBleHBlY3RlZCB0 byBiZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwgc2NvcGUgb2YgZWJ1aWxkcy4gTWFrZSBzdXJlIHRv CiMgc3BlY2lmeSB0aGUgZnVsbCBwYXRoLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gc3JjX3By ZXBhcmUgcGhhc2UuCiMKIyBFeGFtcGxlOgojIEBDT0RFCiMJUEFUQ0hFUz0oCiMJCSIke0ZJTEVT RElSfS9teXBhdGNoLnBhdGNoIgojCQkiJHtGSUxFU0RJUn0vbXlwYXRjaDIucGF0Y2giCiMJKQoj IEBDT0RFCgojIEBFQ0xBU1MtVkFSSUFCTEU6IFFUNV9UQVJHRVRfU1VCRElSUwojIEBERUZBVUxU X1VOU0VUCiMgQERFU0NSSVBUSU9OOgojIEFycmF5IHZhcmlhYmxlIGNvbnRhaW5pbmcgdGhlIHNv dXJjZSBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBidWlsdC4KIyBBbGwgcGF0aHMgbXVzdCBi ZSByZWxhdGl2ZSB0byAke1N9LgoKIyBARUNMQVNTLVZBUklBQkxFOiBRVDVfQlVJTERfRElSCiMg QERFU0NSSVBUSU9OOgojIEJ1aWxkIGRpcmVjdG9yeSBmb3Igb3V0LW9mLXNvdXJjZSBidWlsZHMu CmNhc2UgJHtRVDVfQlVJTERfVFlQRX0gaW4KCWxpdmUpICAgIDogJHtRVDVfQlVJTERfRElSOj0k e1N9X2J1aWxkfSA7OwoJcmVsZWFzZSkgOiAke1FUNV9CVUlMRF9ESVI6PSR7U319IDs7ICMgd29y a2Fyb3VuZCBmb3IgYnVnIDQ5NzMxMgplc2FjCgojIEBFQ0xBU1MtVkFSSUFCTEU6IFFUNV9HRU5U T09fQ09ORklHCiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJT046CiMgQXJyYXkgb2YgPHVz ZWZsYWc6ZmVhdHVyZTptYWNybz4gdHJpcGxldHMgdGhhdCBhcmUgZXZhbHVhdGVkIGluIHNyY19p bnN0YWxsCiMgdG8gZ2VuZXJhdGUgdGhlIHBlci1wYWNrYWdlIGxpc3Qgb2YgZW5hYmxlZCBRVF9D T05GSUcgZmVhdHVyZXMgYW5kIG1hY3JvCiMgZGVmaW5pdGlvbnMsIHdoaWNoIGFyZSB0aGVuIG1l cmdlZCB0b2dldGhlciB3aXRoIGFsbCBvdGhlciBRdDUgcGFja2FnZXMKIyBpbnN0YWxsZWQgb24g dGhlIHN5c3RlbSB0byBvYnRhaW4gdGhlIGdsb2JhbCBxY29uZmlnLntoLHByaX0gZmlsZXMuCgoj IEBFQ0xBU1MtVkFSSUFCTEU6IFZJUlRVQUxYX1JFUVVJUkVECiMgQERFU0NSSVBUSU9OOgojIEZv ciBwcm9wZXIgZGVzY3JpcHRpb24gc2VlIHZpcnR1YWx4LmVjbGFzcyBtYW4gcGFnZS4KIyBIZXJl IHdlIHJlZGVmaW5lIGRlZmF1bHQgdmFsdWUgdG8gYmUgbWFudWFsLCBpZiB5b3VyIHBhY2thZ2Ug bmVlZHMgdmlydHVhbHgKIyBmb3IgdGVzdHMgeW91IHNob3VsZCBwcm9jZWVkIHdpdGggc2V0dGlu ZyBWSVJUVUFMWF9SRVFVSVJFRD10ZXN0Lgo6ICR7VklSVFVBTFhfUkVRVUlSRUQ6PW1hbnVhbH0K CgojIyMjIyMgIFBoYXNlIGZ1bmN0aW9ucyAgIyMjIyMjCgojIEBGVU5DVElPTjogcXQ1LWJ1aWxk X3NyY191bnBhY2sKIyBAREVTQ1JJUFRJT046CiMgVW5wYWNrcyB0aGUgc291cmNlcy4KcXQ1LWJ1 aWxkX3NyY191bnBhY2soKSB7CglpZiBbWyAkKGdjYy1tYWpvci12ZXJzaW9uKSAtbHQgNCBdXSB8 fCBbWyAkKGdjYy1tYWpvci12ZXJzaW9uKSAtZXEgNCAmJiAkKGdjYy1taW5vci12ZXJzaW9uKSAt bHQgNSBdXTsgdGhlbgoJCWV3YXJuCgkJZXdhcm4gIlVzaW5nIGEgR0NDIHZlcnNpb24gbG93ZXIg dGhhbiA0LjUgaXMgbm90IHN1cHBvcnRlZC4iCgkJZXdhcm4KCWZpCgoJaWYgW1sgJHtQTn0gPT0g cXR3ZWJraXQgXV07IHRoZW4KCQllc2hvcHRzX3B1c2ggLXMgZXh0Z2xvYgoJCWlmIGlzLWZsYWdx ICctZz8oZ2RiKT8oWzEtOV0pJzsgdGhlbgoJCQlld2FybgoJCQlld2FybiAiWW91IGhhdmUgZW5h YmxlZCBkZWJ1ZyBpbmZvIChwcm9iYWJseSBoYXZlIC1nIG9yIC1nZ2RiIGluIHlvdXIgQ0ZMQUdT L0NYWEZMQUdTKS4iCgkJCWV3YXJuICJZb3UgbWF5IGV4cGVyaWVuY2UgcmVhbGx5IGxvbmcgY29t cGlsYXRpb24gdGltZXMgYW5kL29yIGluY3JlYXNlZCBtZW1vcnkgdXNhZ2UuIgoJCQlld2FybiAi SWYgY29tcGlsYXRpb24gZmFpbHMsIHBsZWFzZSB0cnkgcmVtb3ZpbmcgLWcvLWdnZGIgYmVmb3Jl IHJlcG9ydGluZyBhIGJ1Zy4iCgkJCWV3YXJuICJGb3IgbW9yZSBpbmZvIGNoZWNrIG91dCBodHRw czovL2J1Z3MuZ2VudG9vLm9yZy8zMDc4NjEiCgkJCWV3YXJuCgkJZmkKCQllc2hvcHRzX3BvcAoJ ZmkKCgljYXNlICR7UVQ1X0JVSUxEX1RZUEV9IGluCgkJbGl2ZSkgICAgZ2l0LXIzX3NyY191bnBh Y2sgOzsKCQlyZWxlYXNlKSBkZWZhdWx0IDs7Cgllc2FjCn0KCiMgQEZVTkNUSU9OOiBxdDUtYnVp bGRfc3JjX3ByZXBhcmUKIyBAREVTQ1JJUFRJT046CiMgUHJlcGFyZXMgdGhlIHNvdXJjZXMgYmVm b3JlIHRoZSBjb25maWd1cmUgcGhhc2UuCnF0NS1idWlsZF9zcmNfcHJlcGFyZSgpIHsKCXF0NV9w cmVwYXJlX2VudgoKCWlmIFtbICR7UVQ1X01PRFVMRX0gPT0gcXRiYXNlIF1dOyB0aGVuCgkJIyBB dm9pZCB1bm5lY2Vzc2FyeSBxbWFrZSByZWNvbXBpbGF0aW9ucwoJCXNlZCAtaSAtcmUgInN8Xmlm IHRydWU7LiooXFsgJ1whJykuKihcIlxcXCRvdXRwYXRoL2Jpbi9xbWFrZVwiLiopfGlmIFwxIC1l IFwyIHRoZW58IiBcCgkJCWNvbmZpZ3VyZSB8fCBkaWUgInNlZCBmYWlsZWQgKHNraXAgcW1ha2Ug Ym9vdHN0cmFwKSIKCgkJIyBSZXNwZWN0IENDLCBDWFgsICpGTEFHUywgTUFLRU9QVFMgYW5kIEVY VFJBX0VNQUtFIHdoZW4gYm9vdHN0cmFwcGluZyBxbWFrZQoJCXNlZCAtaSAtZSAiL291dHBhdGhc L3FtYWtlXCIuKlwiXCRNQUtFXCIpLyBzOik6IFwKCQkJJHtNQUtFT1BUU30gJHtFWFRSQV9FTUFL RX0gJ0NDPSQodGMtZ2V0Q0MpJyAnQ1hYPSQodGMtZ2V0Q1hYKScgXAoJCQknUU1BS0VfQ0ZMQUdT PSR7Q0ZMQUdTfScgJ1FNQUtFX0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyAnUU1BS0VfTEZMQUdTPSR7 TERGTEFHU30nJjoiIFwKCQkJLWUgJy8iJENGR19SRUxFQVNFX1FNQUtFIi8sL15cc1wrZmkkLyBk JyBcCgkJCWNvbmZpZ3VyZSB8fCBkaWUgInNlZCBmYWlsZWQgKHJlc3BlY3QgZW52IGZvciBxbWFr ZSBidWlsZCkiCgkJc2VkIC1pIC1lICcvXkNQUEZMQUdTXHMqPS8gcy8tZyAvLycgXAoJCQlxbWFr ZS9NYWtlZmlsZS51bml4IHx8IGRpZSAic2VkIGZhaWxlZCAoQ1BQRkxBR1MgZm9yIHFtYWtlIGJ1 aWxkKSIKCgkJIyBSZXNwZWN0IENYWCBpbiB7YnN5bWJvbGljX2Z1bmN0aW9ucyxmdmlzaWJpbGl0 eSxwcmVjb21wfS50ZXN0CgkJc2VkIC1pIC1lICIvXlFNQUtFX0NPTkZfQ09NUElMRVI9LyBzOj0u Kjo9XCIkKHRjLWdldENYWClcIjoiIFwKCQkJY29uZmlndXJlIHx8IGRpZSAic2VkIGZhaWxlZCAo UU1BS0VfQ09ORl9DT01QSUxFUikiCgoJCSMgUmVzcGVjdCB0b29sY2hhaW4gYW5kIGZsYWdzIGlu IGNvbmZpZy50ZXN0cwoJCWZpbmQgY29uZmlnLnRlc3RzL3VuaXggLW5hbWUgJyoudGVzdCcgLXR5 cGUgZiAtcHJpbnQwIFwKCQkJfCB4YXJncyAtMCBzZWQgLWkgLWUgJy9iaW5cL3FtYWtlLyBzLy1u b2NhY2hlIC8vJyBcCgkJCXx8IGRpZSAic2VkIGZhaWxlZCAoY29uZmlnLnRlc3RzKSIKCWZpCgoJ aWYgW1sgJHtQTn0gIT0gcXRjb3JlIF1dOyB0aGVuCgkJcXQ1X3N5bWxpbmtfdG9vbHNfdG9fYnVp bGRfZGlyCglmaQoKCSMgYXBwbHkgcGF0Y2hlcwoJW1sgJHtQQVRDSEVTW0BdfSBdXSAmJiBlcGF0 Y2ggIiR7UEFUQ0hFU1tAXX0iCgllcGF0Y2hfdXNlcgp9CgojIEBGVU5DVElPTjogcXQ1LWJ1aWxk X3NyY19jb25maWd1cmUKIyBAREVTQ1JJUFRJT046CiMgUnVucyBxbWFrZSwgcG9zc2libHkgcHJl Y2VkZWQgYnkgLi9jb25maWd1cmUuCnF0NS1idWlsZF9zcmNfY29uZmlndXJlKCkgewoJaWYgW1sg JHtRVDVfTU9EVUxFfSA9PSBxdGJhc2UgXV07IHRoZW4KCQlxdDVfYmFzZV9jb25maWd1cmUKCWZp CgoJcXQ1X2ZvcmVhY2hfdGFyZ2V0X3N1YmRpciBxdDVfcW1ha2UKfQoKIyBARlVOQ1RJT046IHF0 NS1idWlsZF9zcmNfY29tcGlsZQojIEBERVNDUklQVElPTjoKIyBDb21waWxlcyB0aGUgY29kZSBp biB0YXJnZXQgZGlyZWN0b3JpZXMuCnF0NS1idWlsZF9zcmNfY29tcGlsZSgpIHsKCXF0NV9mb3Jl YWNoX3RhcmdldF9zdWJkaXIgZW1ha2UKfQoKIyBARlVOQ1RJT046IHF0NS1idWlsZF9zcmNfdGVz dAojIEBERVNDUklQVElPTjoKIyBSdW5zIHRlc3RzIGluIHRhcmdldCBkaXJlY3Rvcmllcy4KcXQ1 LWJ1aWxkX3NyY190ZXN0KCkgewoJZWNobyAiPj4+IFRlc3QgcGhhc2UgW1F0VGVzdF06ICR7Q0FU RUdPUll9LyR7UEZ9IgoKCSMgY3JlYXRlIGEgY3VzdG9tIHRlc3RydW5uZXIgc2NyaXB0IHRoYXQg Y29ycmVjdGx5IHNldHMKCSMgeyxEWX1MRF9MSUJSQVJZX1BBVEggYmVmb3JlIGV4ZWN1dGluZyB0 aGUgZ2l2ZW4gdGVzdAoJbG9jYWwgdGVzdHJ1bm5lcj0ke1FUNV9CVUlMRF9ESVJ9L2dlbnRvby10 ZXN0cnVubmVyCgljYXQgPDwtRU9GID4gIiR7dGVzdHJ1bm5lcn0iCgkjIS9iaW4vc2gKCWV4cG9y dCBMRF9MSUJSQVJZX1BBVEg9IiR7UVQ1X0JVSUxEX0RJUn0vbGliOiR7UVQ1X0xJQkRJUn0iCgll eHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9IiR7UVQ1X0JVSUxEX0RJUn0vbGliOiR7UVQ1X0xJQkRJ Un0iCgkiXCRAIgoJRU9GCgljaG1vZCAreCAiJHt0ZXN0cnVubmVyfSIKCgkjICctYWZ0ZXIgU1VC RElSUy09Y21ha2UnIGRpc2FibGVzIGJyb2tlbiB0ZXN0cyAtIGJ1ZyAjNDc0MDA0CglxdDVfZm9y ZWFjaF90YXJnZXRfc3ViZGlyIHF0NV9xbWFrZSAtYWZ0ZXIgU1VCRElSUy09Y21ha2UKCXF0NV9m b3JlYWNoX3RhcmdldF9zdWJkaXIgZW1ha2UKCglfdGVzdF9ydW5uZXIoKSB7CgkJcXQ1X2ZvcmVh Y2hfdGFyZ2V0X3N1YmRpciBlbWFrZSBURVNUUlVOTkVSPSInJHt0ZXN0cnVubmVyfSciIGNoZWNr Cgl9CgoJaWYgW1sgJHtWSVJUVUFMWF9SRVFVSVJFRH0gPT0gdGVzdCBdXTsgdGhlbgoJCVZJUlRV QUxYX0NPTU1BTkQ9Il90ZXN0X3J1bm5lciIgdmlydHVhbG1ha2UKCWVsc2UKCQlfdGVzdF9ydW5u ZXIKCWZpCn0KCiMgQEZVTkNUSU9OOiBxdDUtYnVpbGRfc3JjX2luc3RhbGwKIyBAREVTQ1JJUFRJ T046CiMgUGVyZm9ybXMgdGhlIGFjdHVhbCBpbnN0YWxsYXRpb24gb2YgdGFyZ2V0IGRpcmVjdG9y aWVzLgpxdDUtYnVpbGRfc3JjX2luc3RhbGwoKSB7CglxdDVfZm9yZWFjaF90YXJnZXRfc3ViZGly IGVtYWtlIElOU1RBTExfUk9PVD0iJHtEfSIgaW5zdGFsbAoKCWlmIFtbICR7UE59ID09IHF0Y29y ZSBdXTsgdGhlbgoJCXB1c2hkICIke1FUNV9CVUlMRF9ESVJ9IiA+L2Rldi9udWxsIHx8IGRpZQoJ CWVpbmZvICJSdW5uaW5nIGVtYWtlIElOU1RBTExfUk9PVD0ke0R9IGluc3RhbGxfe21rc3BlY3Ms cW1ha2Usc3luY3F0fSIKCQllbWFrZSBJTlNUQUxMX1JPT1Q9IiR7RH0iIGluc3RhbGxfe21rc3Bl Y3MscW1ha2Usc3luY3F0fQoJCXBvcGQgPi9kZXYvbnVsbCB8fCBkaWUKCgkJIyBpbnN0YWxsIGFu IGVtcHR5IEdlbnRvby9nZW50b28tcWNvbmZpZy5oIGluICR7RH0KCQkjIHNvIHRoYXQgaXQncyBw bGFjZWQgdW5kZXIgcGFja2FnZSBtYW5hZ2VyIGNvbnRyb2wKCQk+ICIke1R9Ii9nZW50b28tcWNv bmZpZy5oCgkJKAoJCQlpbnNpbnRvICIke1FUNV9IRUFERVJESVIjJHtFUFJFRklYfX0iL0dlbnRv bwoJCQlkb2lucyAiJHtUfSIvZ2VudG9vLXFjb25maWcuaAoJCSkKCgkJIyBpbmNsdWRlIGdlbnRv by1xY29uZmlnLmggYXQgdGhlIGJlZ2lubmluZyBvZiBRdENvcmUvcWNvbmZpZy5oCgkJc2VkIC1p IC1lICcxYSNpbmNsdWRlIDxHZW50b28vZ2VudG9vLXFjb25maWcuaD5cbicgXAoJCQkiJHtEfSR7 UVQ1X0hFQURFUkRJUn0iL1F0Q29yZS9xY29uZmlnLmggXAoJCQl8fCBkaWUgInNlZCBmYWlsZWQg KHFjb25maWcuaCkiCglmaQoKCXF0NV9pbnN0YWxsX21vZHVsZV9xY29uZmlncwoJcHJ1bmVfbGli dG9vbF9maWxlcwp9CgojIEBGVU5DVElPTjogcXQ1LWJ1aWxkX3BrZ19wb3N0aW5zdAojIEBERVND UklQVElPTjoKIyBSZWdlbmVyYXRlIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgaW5zdGFsbGF0aW9uIG9y IHVwZ3JhZGUvZG93bmdyYWRlLgpxdDUtYnVpbGRfcGtnX3Bvc3RpbnN0KCkgewoJcXQ1X3JlZ2Vu ZXJhdGVfZ2xvYmFsX3Fjb25maWdzCn0KCiMgQEZVTkNUSU9OOiBxdDUtYnVpbGRfcGtnX3Bvc3Ry bQojIEBERVNDUklQVElPTjoKIyBSZWdlbmVyYXRlIGNvbmZpZ3VyYXRpb24gd2hlbiBhIG1vZHVs ZSBpcyBjb21wbGV0ZWx5IHJlbW92ZWQuCnF0NS1idWlsZF9wa2dfcG9zdHJtKCkgewoJaWYgW1sg LXogJHtSRVBMQUNFRF9CWV9WRVJTSU9OfSAmJiAke1BOfSAhPSBxdGNvcmUgXV07IHRoZW4KCQlx dDVfcmVnZW5lcmF0ZV9nbG9iYWxfcWNvbmZpZ3MKCWZpCn0KCgojIyMjIyMgIFB1YmxpYyBoZWxw ZXJzICAjIyMjIyMKCiMgQEZVTkNUSU9OOiBxdF91c2UKIyBAVVNBR0U6IDxmbGFnPiBbZmVhdHVy ZV0gW2VuYWJsZW9wdF0KIyBAREVTQ1JJUFRJT046CiMgPGZsYWc+IGlzIHRoZSBuYW1lIG9mIGEg ZmxhZyBpbiBJVVNFLgojCiMgRWNob2VzICItJHtlbmFibGVvcHR9LSR7ZmVhdHVyZX0iIGlmIDxm bGFnPiBpcyBlbmFibGVkLCBvciAiLW5vLSR7ZmVhdHVyZX0iCiMgaWYgaXQgaXMgZGlzYWJsZWQu IElmIFtmZWF0dXJlXSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byB0aGUgdmFsdWUK IyBvZiA8ZmxhZz4uIElmIFtlbmFibGVvcHRdIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB3aG9sZSAi LSR7ZW5hYmxlb3B0fSIgcHJlZml4CiMgaXMgb21pdHRlZC4KcXRfdXNlKCkgewoJW1sgJCMgLWdl IDEgXV0gfHwgZGllICIke0ZVTkNOQU1FfSgpIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVu dCIKCgl1c2UgIiQxIiAmJiBlY2hvICIkezM6Ky0kM30tJHsyOi0kMX0iIHx8IGVjaG8gIi1uby0k ezI6LSQxfSIKfQoKIyBARlVOQ1RJT046IHF0X3VzZV9jb21waWxlX3Rlc3QKIyBAVVNBR0U6IDxm bGFnPiBbY29uZmlnXQojIEBERVNDUklQVElPTjoKIyA8ZmxhZz4gaXMgdGhlIG5hbWUgb2YgYSBm bGFnIGluIElVU0UuCiMgW2NvbmZpZ10gaXMgdGhlIGFyZ3VtZW50IG9mIHF0Q29tcGlsZVRlc3Qs IGRlZmF1bHRzIHRvIDxmbGFnPi4KIwojIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvIGRpc2Fi bGUgb3B0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGNoZWNrZWQKIyBhdCBxbWFrZS10aW1l IHVzaW5nIHRoZSBxdENvbXBpbGVUZXN0KCkgZnVuY3Rpb24uIElmIDxmbGFnPiBpcyBkaXNhYmxl ZCwKIyB0aGUgY29tcGlsZSB0ZXN0IGlzIHNraXBwZWQgYW5kIHRoZSBkZXBlbmRlbmN5IGlzIGFz c3VtZWQgdG8gYmUgdW5hdmFpbGFibGUsCiMgaS5lLiB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJl IHdpbGwgYmUgZGlzYWJsZWQuIE5vdGUgdGhhdCBhbGwgaW52b2NhdGlvbnMKIyBvZiB0aGlzIGZ1 bmN0aW9uIG11c3QgaGFwcGVuIGJlZm9yZSBjYWxsaW5nIHF0NS1idWlsZF9zcmNfY29uZmlndXJl LgpxdF91c2VfY29tcGlsZV90ZXN0KCkgewoJW1sgJCMgLWdlIDEgXV0gfHwgZGllICIke0ZVTkNO QU1FfSgpIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKCglpZiAhIHVzZSAiJDEiOyB0 aGVuCgkJbWtkaXIgLXAgIiR7UVQ1X0JVSUxEX0RJUn0iIHx8IGRpZQoJCWVjaG8gIkNPTkZJRyAr PSBkb25lX2NvbmZpZ18kezI6LSQxfSIgPj4gIiR7UVQ1X0JVSUxEX0RJUn0iLy5xbWFrZS5jYWNo ZSB8fCBkaWUKCWZpCn0KCiMgQEZVTkNUSU9OOiBxdF91c2VfZGlzYWJsZV9tb2QKIyBAVVNBR0U6 IDxmbGFnPiA8bW9kdWxlPiA8ZmlsZXMuLi4+CiMgQERFU0NSSVBUSU9OOgojIDxmbGFnPiBpcyB0 aGUgbmFtZSBvZiBhIGZsYWcgaW4gSVVTRS4KIyA8bW9kdWxlPiBpcyB0aGUgKGxvd2VyY2FzZSkg bmFtZSBvZiBhIFF0NSBtb2R1bGUuCiMgPGZpbGVzLi4uPiBpcyBhIGxpc3Qgb2Ygb25lIG9yIG1v cmUgcW1ha2UgcHJvamVjdCBmaWxlcy4KIwojIFRoaXMgZnVuY3Rpb24gcGF0Y2hlcyA8ZmlsZXM+ IHRvIHRyZWF0IDxtb2R1bGU+IGFzIG5vdCBpbnN0YWxsZWQKIyB3aGVuIDxmbGFnPiBpcyBkaXNh YmxlZCwgb3RoZXJ3aXNlIGl0IGRvZXMgbm90aGluZy4KIyBUaGlzIGNhbiBiZSB1c2VmdWwgdG8g YXZvaWQgYW4gYXV0b21hZ2ljIGRlcGVuZGVuY3kgd2hlbiB0aGUgbW9kdWxlCiMgaXMgcHJlc2Vu dCBvbiB0aGUgc3lzdGVtIGJ1dCB0aGUgY29ycmVzcG9uZGluZyBVU0UgZmxhZyBpcyBkaXNhYmxl ZC4KcXRfdXNlX2Rpc2FibGVfbW9kKCkgewoJW1sgJCMgLWdlIDMgXV0gfHwgZGllICIke0ZVTkNO QU1FfSgpIHJlcXVpcmVzIGF0IGxlYXN0IHRocmVlIGFyZ3VtZW50cyIKCglsb2NhbCBmbGFnPSQx Cglsb2NhbCBtb2R1bGU9JDIKCXNoaWZ0IDIKCglpZiAhIHVzZSAiJHtmbGFnfSI7IHRoZW4KCQll Y2hvICIkQCIgfCB4YXJncyBzZWQgLWkgLWUgInMvcXRIYXZlTW9kdWxlKCR7bW9kdWxlfSkvZmFs c2UvZyIgfHwgZGllCglmaQp9CgoKIyMjIyMjICBJbnRlcm5hbCBmdW5jdGlvbnMgICMjIyMjIwoK IyBARlVOQ1RJT046IHF0NV9wcmVwYXJlX2VudgojIEBJTlRFUk5BTAojIEBERVNDUklQVElPTjoK IyBQcmVwYXJlcyB0aGUgZW52aXJvbm1lbnQgZm9yIGJ1aWxkaW5nIFF0LgpxdDVfcHJlcGFyZV9l bnYoKSB7CgkjIHNldHVwIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcwoJUVQ1X1BSRUZJWD0ke0VQ UkVGSVh9L3VzcgoJUVQ1X0hFQURFUkRJUj0ke1FUNV9QUkVGSVh9L2luY2x1ZGUvcXQ1CglRVDVf TElCRElSPSR7UVQ1X1BSRUZJWH0vJChnZXRfbGliZGlyKQoJUVQ1X0FSQ0hEQVRBRElSPSR7UVQ1 X1BSRUZJWH0vJChnZXRfbGliZGlyKS9xdDUKCVFUNV9CSU5ESVI9JHtRVDVfQVJDSERBVEFESVJ9 L2JpbgoJUVQ1X1BMVUdJTkRJUj0ke1FUNV9BUkNIREFUQURJUn0vcGx1Z2lucwoJUVQ1X0xJQkVY RUNESVI9JHtRVDVfQVJDSERBVEFESVJ9L2xpYmV4ZWMKCVFUNV9JTVBPUlRESVI9JHtRVDVfQVJD SERBVEFESVJ9L2ltcG9ydHMKCVFUNV9RTUxESVI9JHtRVDVfQVJDSERBVEFESVJ9L3FtbAoJUVQ1 X0RBVEFESVI9JHtRVDVfUFJFRklYfS9zaGFyZS9xdDUKCVFUNV9ET0NESVI9JHtRVDVfUFJFRklY fS9zaGFyZS9kb2MvcXQtJHtQVn0KCVFUNV9UUkFOU0xBVElPTkRJUj0ke1FUNV9EQVRBRElSfS90 cmFuc2xhdGlvbnMKCVFUNV9FWEFNUExFU0RJUj0ke1FUNV9EQVRBRElSfS9leGFtcGxlcwoJUVQ1 X1RFU1RTRElSPSR7UVQ1X0RBVEFESVJ9L3Rlc3RzCglRVDVfU1lTQ09ORkRJUj0ke0VQUkVGSVh9 L2V0Yy94ZGcKCglpZiBbWyAke1FUNV9NT0RVTEV9ID09IHF0YmFzZSBdXTsgdGhlbgoJCSMgc2Vl IG1rc3BlY3MvZmVhdHVyZXMvcXRfY29uZmlnLnByZgoJCWV4cG9ydCBRTUFLRU1PRFVMRVM9IiR7 UVQ1X0JVSUxEX0RJUn0vbWtzcGVjcy9tb2R1bGVzOiR7U30vbWtzcGVjcy9tb2R1bGVzOiR7UVQ1 X0FSQ0hEQVRBRElSfS9ta3NwZWNzL21vZHVsZXMiCglmaQp9CgojIEBGVU5DVElPTjogcXQ1X2Zv cmVhY2hfdGFyZ2V0X3N1YmRpcgojIEBJTlRFUk5BTAojIEBERVNDUklQVElPTjoKIyBFeGVjdXRl cyB0aGUgYXJndW1lbnRzIGluc2lkZSBlYWNoIGRpcmVjdG9yeSBsaXN0ZWQgaW4gUVQ1X1RBUkdF VF9TVUJESVJTLgpxdDVfZm9yZWFjaF90YXJnZXRfc3ViZGlyKCkgewoJW1sgLXogJHtRVDVfVEFS R0VUX1NVQkRJUlNbQF19IF1dICYmIFFUNV9UQVJHRVRfU1VCRElSUz0oIiIpCgoJbG9jYWwgcmV0 PTAgc3ViZGlyPQoJZm9yIHN1YmRpciBpbiAiJHtRVDVfVEFSR0VUX1NVQkRJUlNbQF19IjsgZG8K CQlpZiBbWyAke0VCVUlMRF9QSEFTRX0gPT0gdGVzdCBdXTsgdGhlbgoJCQlzdWJkaXI9dGVzdHMv YXV0byR7c3ViZGlyI3NyY30KCQkJW1sgLWQgJHtTfS8ke3N1YmRpcn0gXV0gfHwgY29udGludWUK CQlmaQoKCQlta2RpciAtcCAiJHtRVDVfQlVJTERfRElSfS8ke3N1YmRpcn0iIHx8IGRpZQoJCXB1 c2hkICIke1FUNV9CVUlMRF9ESVJ9LyR7c3ViZGlyfSIgPi9kZXYvbnVsbCB8fCBkaWUKCgkJZWlu Zm8gIlJ1bm5pbmcgJCogJHtzdWJkaXI6K2luICR7c3ViZGlyfX0iCgkJIiRAIgoJCSgocmV0Kz0k PykpCgoJCXBvcGQgPi9kZXYvbnVsbCB8fCBkaWUKCWRvbmUKCglyZXR1cm4gJHtyZXR9Cn0KCiMg QEZVTkNUSU9OOiBxdDVfc3ltbGlua190b29sc190b19idWlsZF9kaXIKIyBASU5URVJOQUwKIyBA REVTQ1JJUFRJT046CiMgU3ltbGlua3MgcXRjb3JlIHRvb2xzIHRvIFFUNV9CVUlMRF9ESVIsIHNv IHRoZXkgY2FuIGJlIHVzZWQgd2hlbiBidWlsZGluZyBvdGhlciBtb2R1bGVzLgpxdDVfc3ltbGlu a190b29sc190b19idWlsZF9kaXIoKSB7Cglta2RpciAtcCAiJHtRVDVfQlVJTERfRElSfSIvYmlu IHx8IGRpZQoKCWxvY2FsIGJpbgoJZm9yIGJpbiBpbiAiJHtRVDVfQklORElSfSIve3FtYWtlLG1v YyxyY2MsdWljLHFkb2MscWRidXNjcHAyeG1sLHFkYnVzeG1sMmNwcH07IGRvCgkJaWYgW1sgLWUg JHtiaW59IF1dOyB0aGVuCgkJCWxuIC1zICIke2Jpbn0iICIke1FUNV9CVUlMRF9ESVJ9Ii9iaW4v IHx8IGRpZSAiZmFpbGVkIHRvIHN5bWxpbmsgJHtiaW59IgoJCWZpCglkb25lCn0KCiMgQEZVTkNU SU9OOiBxdDVfYmFzZV9jb25maWd1cmUKIyBASU5URVJOQUwKIyBAREVTQ1JJUFRJT046CiMgUnVu cyAuL2NvbmZpZ3VyZSBmb3IgbW9kdWxlcyBiZWxvbmdpbmcgdG8gcXRiYXNlLgpxdDVfYmFzZV9j b25maWd1cmUoKSB7CgkjIHNldHVwIHRvb2xjaGFpbiB2YXJpYWJsZXMgdXNlZCBieSBjb25maWd1 cmUKCXRjLWV4cG9ydCBDQyBDWFggUkFOTElCIFNUUklQCglleHBvcnQgTEQ9IiQodGMtZ2V0Q1hY KSIKCgkjIGNvbmZpZ3VyZSBhcmd1bWVudHMKCWxvY2FsIGNvbmY9KAoJCSMgaW5zdGFsbGF0aW9u IHBhdGhzCgkJLXByZWZpeCAiJHtRVDVfUFJFRklYfSIKCQktYmluZGlyICIke1FUNV9CSU5ESVJ9 IgoJCS1oZWFkZXJkaXIgIiR7UVQ1X0hFQURFUkRJUn0iCgkJLWxpYmRpciAiJHtRVDVfTElCRElS fSIKCQktYXJjaGRhdGFkaXIgIiR7UVQ1X0FSQ0hEQVRBRElSfSIKCQktcGx1Z2luZGlyICIke1FU NV9QTFVHSU5ESVJ9IgoJCS1saWJleGVjZGlyICIke1FUNV9MSUJFWEVDRElSfSIKCQktaW1wb3J0 ZGlyICIke1FUNV9JTVBPUlRESVJ9IgoJCS1xbWxkaXIgIiR7UVQ1X1FNTERJUn0iCgkJLWRhdGFk aXIgIiR7UVQ1X0RBVEFESVJ9IgoJCS1kb2NkaXIgIiR7UVQ1X0RPQ0RJUn0iCgkJLXRyYW5zbGF0 aW9uZGlyICIke1FUNV9UUkFOU0xBVElPTkRJUn0iCgkJLXN5c2NvbmZkaXIgIiR7UVQ1X1NZU0NP TkZESVJ9IgoJCS1leGFtcGxlc2RpciAiJHtRVDVfRVhBTVBMRVNESVJ9IgoJCS10ZXN0c2RpciAi JHtRVDVfVEVTVFNESVJ9IgoKCQkjIGRlYnVnL3JlbGVhc2UKCQkkKHVzZSBkZWJ1ZyAmJiBlY2hv IC1kZWJ1ZyB8fCBlY2hvIC1yZWxlYXNlKQoJCS1uby1zZXBhcmF0ZS1kZWJ1Zy1pbmZvCgoJCSMg bGljZW5zaW5nIHN0dWZmCgkJLW9wZW5zb3VyY2UgLWNvbmZpcm0tbGljZW5zZQoKCQkjIGxldCBj b25maWd1cmUgYXV0b21hdGljYWxseSBmaWd1cmUgb3V0IGlmIEMrKzExIGlzIHN1cHBvcnRlZAoJ CSMtYysrMTEKCgkJIyBidWlsZCBzaGFyZWQgbGlicmFyaWVzCgkJLXNoYXJlZAoKCQkjIGFsd2F5 cyBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0CgkJLWxhcmdlZmlsZQoKCQkjIGRpc2FibGluZyBh Y2Nlc3NpYmlsaXR5IGlzIG5vdCByZWNvbW1lbmRlZCBieSB1cHN0cmVhbSwgYXMKCQkjIGl0IHdp bGwgYnJlYWsgUVN0eWxlIGFuZCBtYXkgYnJlYWsgb3RoZXIgaW50ZXJuYWwgcGFydHMgb2YgUXQK CQktYWNjZXNzaWJpbGl0eQoKCQkjIGRpc2FibGUgYWxsIFNRTCBkcml2ZXJzIGJ5IGRlZmF1bHQs IG92ZXJyaWRlIGluIHF0c3FsCgkJLW5vLXNxbC1kYjIgLW5vLXNxbC1pYmFzZSAtbm8tc3FsLW15 c3FsIC1uby1zcWwtb2NpIC1uby1zcWwtb2RiYwoJCS1uby1zcWwtcHNxbCAtbm8tc3FsLXNxbGl0 ZSAtbm8tc3FsLXNxbGl0ZTIgLW5vLXNxbC10ZHMKCgkJIyBvYnNvbGV0ZSBmbGFnLCBkb2VzIG5v dGhpbmcKCQkjLXFtbC1kZWJ1ZwoKCQkjIHVzZSBwa2ctY29uZmlnIHRvIGRldGVjdCBpbmNsdWRl IGFuZCBsaWJyYXJ5IHBhdGhzCgkJLXBrZy1jb25maWcKCgkJIyBwcmVmZXIgc3lzdGVtIGxpYnJh cmllcyAob25seSBjb21tb24gZGVwcyBoZXJlKQoJCS1zeXN0ZW0temxpYgoJCS1zeXN0ZW0tcGNy ZQoKCQkjIGRvbid0IHNwZWNpZnkgLW5vLWdpZiBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBv dmVycmlkZSBpdCBsYXRlcgoJCSMtbm8tZ2lmCgoJCSMgZGlzYWJsZSBldmVyeXRoaW5nIHRvIHBy ZXZlbnQgYXV0b21hZ2ljIGRlcHMgKHBhcnQgMSkKCQktbm8tbXRkZXYKCQktbm8tam91cm5hbGQK CQktbm8tbGlicG5nIC1uby1saWJqcGVnCgkJLW5vLWZyZWV0eXBlIC1uby1oYXJmYnV6egoJCS1u by1vcGVuc3NsCgkJLW5vLXhpbnB1dDIgLW5vLXhjYi14bGliCgoJCSMgYWx3YXlzIGVuYWJsZSBn bGliIGV2ZW50IGxvb3Agc3VwcG9ydAoJCS1nbGliCgoJCSMgZGlzYWJsZSBldmVyeXRoaW5nIHRv IHByZXZlbnQgYXV0b21hZ2ljIGRlcHMgKHBhcnQgMikKCQktbm8tcHVsc2VhdWRpbyAtbm8tYWxz YQoKCQkjIGRpc2FibGUgZ3Rrc3R5bGUgYmVjYXVzZSBpdCBhZGRzIHF0NCBpbmNsdWRlIHBhdGhz IHRvIHRoZSBjb21waWxlcgoJCSMgY29tbWFuZCBsaW5lIGlmIHgxMS1saWJzL2NhaXJvIGlzIGJ1 aWx0IHdpdGggVVNFPXF0NCAoYnVnIDQzMzgyNikKCQktbm8tZ3Rrc3R5bGUKCgkJIyBleGNsdWRl IGV4YW1wbGVzIGFuZCB0ZXN0cyBmcm9tIGRlZmF1bHQgYnVpbGQKCQktbm9tYWtlIGV4YW1wbGVz CgkJLW5vbWFrZSB0ZXN0cwoJCS1uby1jb21waWxlLWV4YW1wbGVzCgoJCSMgZGlzYWJsZSBycGF0 aCBvbiBub24tcHJlZml4IChidWdzIDM4MDQxNSBhbmQgNDE3MTY5KQoJCSQodXNlIHByZWZpeCB8 fCBlY2hvIC1uby1ycGF0aCkKCgkJIyBwcmludCB2ZXJib3NlIGluZm9ybWF0aW9uIGFib3V0IGVh Y2ggY29uZmlndXJlIHRlc3QKCQktdmVyYm9zZQoKCQkjIGRvZXNuJ3QgYWN0dWFsbHkgbWF0dGVy IHNpbmNlIHdlIG92ZXJyaWRlIENYWEZMQUdTCgkJIy1uby1vcHRpbWl6ZWQtcW1ha2UKCgkJIyBv YnNvbGV0ZSBmbGFnLCBkb2VzIG5vdGhpbmcKCQkjLW5pcwoKCQkjIGFsd2F5cyBlbmFibGUgaWNv bnYgc3VwcG9ydAoJCS1pY29udgoKCQkjIGRpc2FibGUgZXZlcnl0aGluZyB0byBwcmV2ZW50IGF1 dG9tYWdpYyBkZXBzIChwYXJ0IDMpCgkJLW5vLWN1cHMgLW5vLWV2ZGV2IC1uby1pY3UgLW5vLWZv bnRjb25maWcgLW5vLWRidXMKCgkJIyBkb24ndCBzdHJpcAoJCS1uby1zdHJpcAoKCQkjIHByZWNv bXBpbGVkIGhlYWRlcnMgYXJlIG5vdCB0aGF0IHVzZWZ1bCBmb3IgdXMKCQkjIGFuZCBjYXVzZSBw cm9ibGVtcyBvbiBoYXJkZW5lZCwgc28gdHVybiB0aGVtIG9mZgoJCS1uby1wY2gKCgkJIyByZWR1 Y2VkIHJlbG9jYXRpb25zIGNhdXNlIG1ham9yIGJyZWFrYWdlIG9uIGF0IGxlYXN0IGFybSBhbmQg cHBjLCBzbyB3ZQoJCSMgZG9uJ3Qgc3BlY2lmeSBhbnl0aGluZyBhbmQgbGV0IGNvbmZpZ3VyZSBm aWd1cmUgb3V0IGlmIHRoZXkgYXJlIHN1cHBvcnRlZCwKCQkjIHNlZSBhbHNvIGh0dHBzOi8vYnVn cmVwb3J0cy5xdC1wcm9qZWN0Lm9yZy9icm93c2UvUVRCVUctMzYxMjkKCQkjLXJlZHVjZS1yZWxv Y2F0aW9ucwoKCQkjIGxldCBjb25maWd1cmUgYXV0b21hdGljYWxseSBkZXRlY3QgaWYgR05VIGdv bGQgaXMgYXZhaWxhYmxlCgkJIy11c2UtZ29sZC1saW5rZXIKCgkJIyBkaXNhYmxlIGFsbCBwbGF0 Zm9ybSBwbHVnaW5zIGJ5IGRlZmF1bHQsIG92ZXJyaWRlIGluIHF0Z3VpCgkJLW5vLXhjYiAtbm8t ZWdsZnMgLW5vLWRpcmVjdGZiIC1uby1saW51eGZiIC1uby1rbXMKCgkJIyBkaXNhYmxlIHVuZG9j dW1lbnRlZCBYMTEtcmVsYXRlZCBmbGFncywgb3ZlcnJpZGUgaW4gcXRndWkKCQkjIChub3Qgc2hv d24gaW4gLi9jb25maWd1cmUgLWhlbHAgb3V0cHV0KQoJCS1uby14a2IgLW5vLXhyZW5kZXIKCgkJ IyBkaXNhYmxlIG9ic29sZXRlL3VudXNlZCBYMTEtcmVsYXRlZCBmbGFncwoJCSMgKG5vdCBzaG93 biBpbiAuL2NvbmZpZ3VyZSAtaGVscCBvdXRwdXQpCgkJLW5vLW1pdHNobSAtbm8teGN1cnNvciAt bm8teGZpeGVzIC1uby14aW5lcmFtYSAtbm8teGlucHV0CgkJLW5vLXhyYW5kciAtbm8teHNoYXBl IC1uby14c3luYyAtbm8teHZpZGVvCgoJCSMgYWx3YXlzIGVuYWJsZSBzZXNzaW9uIG1hbmFnZW1l bnQgc3VwcG9ydDogaXQgZG9lc24ndCBuZWVkIGV4dHJhIGRlcHMKCQkjIGF0IGNvbmZpZ3VyZSB0 aW1lIGFuZCB0dXJuaW5nIGl0IG9mZiBpcyBkYW5nZXJvdXMsIHNlZSBidWcgNTE4MjYyCgkJLXNt CgoJCSMgdHlwZWRlZiBxcmVhbCB0byBkb3VibGUgKHdhcm5pbmc6IGNoYW5naW5nIHRoaXMgZmxh ZyBicmVha3MgdGhlIEFCSSkKCQktcXJlYWwgZG91YmxlCgoJCSMgZGlzYWJsZSBvcGVuZ2wgYW5k IGVnbCBieSBkZWZhdWx0LCBvdmVycmlkZSBpbiBxdGd1aSBhbmQgcXRvcGVuZ2wKCQktbm8tb3Bl bmdsIC1uby1lZ2wKCgkJIyB1c2UgdXBzdHJlYW0gZGVmYXVsdAoJCSMtbm8tc3lzdGVtLXByb3hp ZXMKCgkJIyBkbyBub3QgYnVpbGQgd2l0aCAtV2Vycm9yCgkJLW5vLXdhcm5pbmdzLWFyZS1lcnJv cnMKCgkJIyBtb2R1bGUtc3BlY2lmaWMgb3B0aW9ucwoJCSIke215Y29uZltAXX0iCgkpCgoJbWtk aXIgLXAgIiR7UVQ1X0JVSUxEX0RJUn0iIHx8IGRpZQoJcHVzaGQgIiR7UVQ1X0JVSUxEX0RJUn0i ID4vZGV2L251bGwgfHwgZGllCgoJZWluZm8gIkNvbmZpZ3VyaW5nIHdpdGg6ICR7Y29uZltAXX0i CgkiJHtTfSIvY29uZmlndXJlICIke2NvbmZbQF19IiB8fCBkaWUgImNvbmZpZ3VyZSBmYWlsZWQi CgoJcG9wZCA+L2Rldi9udWxsIHx8IGRpZQp9CgojIEBGVU5DVElPTjogcXQ1X3FtYWtlCiMgQElO VEVSTkFMCiMgQERFU0NSSVBUSU9OOgojIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJ1bnMgcW1ha2Ug aW4gdGhlIGN1cnJlbnQgdGFyZ2V0IHN1YmRpci4KIyBJbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkg cXQ1X2ZvcmVhY2hfdGFyZ2V0X3N1YmRpcigpLgpxdDVfcW1ha2UoKSB7Cglsb2NhbCBwcm9qZWN0 ZGlyPSR7UFdELyMke1FUNV9CVUlMRF9ESVJ9LyR7U319CgoJIiR7UVQ1X0JVSUxEX0RJUn0iL2Jp bi9xbWFrZSBcCgkJUU1BS0VfQVI9IiQodGMtZ2V0QVIpIGNxcyIgXAoJCVFNQUtFX0NDPSIkKHRj LWdldENDKSIgXAoJCVFNQUtFX0xJTktfQz0iJCh0Yy1nZXRDQykiIFwKCQlRTUFLRV9MSU5LX0Nf U0hMSUI9IiQodGMtZ2V0Q0MpIiBcCgkJUU1BS0VfQ1hYPSIkKHRjLWdldENYWCkiIFwKCQlRTUFL RV9MSU5LPSIkKHRjLWdldENYWCkiIFwKCQlRTUFLRV9MSU5LX1NITElCPSIkKHRjLWdldENYWCki IFwKCQlRTUFLRV9PQkpDT1BZPSIkKHRjLWdldE9CSkNPUFkpIiBcCgkJUU1BS0VfUkFOTElCPSBc CgkJUU1BS0VfU1RSSVA9IiQodGMtZ2V0U1RSSVApIiBcCgkJUU1BS0VfQ0ZMQUdTPSIke0NGTEFH U30iIFwKCQlRTUFLRV9DRkxBR1NfUkVMRUFTRT0gXAoJCVFNQUtFX0NGTEFHU19ERUJVRz0gXAoJ CVFNQUtFX0NYWEZMQUdTPSIke0NYWEZMQUdTfSIgXAoJCVFNQUtFX0NYWEZMQUdTX1JFTEVBU0U9 IFwKCQlRTUFLRV9DWFhGTEFHU19ERUJVRz0gXAoJCVFNQUtFX0xGTEFHUz0iJHtMREZMQUdTfSIg XAoJCVFNQUtFX0xGTEFHU19SRUxFQVNFPSBcCgkJUU1BS0VfTEZMQUdTX0RFQlVHPSBcCgkJIiR7 cHJvamVjdGRpcn0iIFwKCQkiJEAiIFwKCQl8fCBkaWUgInFtYWtlIGZhaWxlZCAoJHtwcm9qZWN0 ZGlyfSkiCn0KCiMgQEZVTkNUSU9OOiBxdDVfaW5zdGFsbF9tb2R1bGVfcWNvbmZpZ3MKIyBASU5U RVJOQUwKIyBAREVTQ1JJUFRJT046CiMgQ3JlYXRlcyBhbmQgaW5zdGFsbHMgZ2VudG9vLXNwZWNp ZmljICR7UE59LXFjb25maWcue2gscHJpfSBmaWxlcy4KcXQ1X2luc3RhbGxfbW9kdWxlX3Fjb25m aWdzKCkgewoJbG9jYWwgeCBxY29uZmlnX2FkZD0gcWNvbmZpZ19yZW1vdmU9CgoJPiAiJHtUfSIv JHtQTn0tcWNvbmZpZy5oCgk+ICIke1R9Ii8ke1BOfS1xY29uZmlnLnByaQoKCSMgZ2VuZXJhdGUg cWNvbmZpZ197YWRkLHJlbW92ZX0gYW5kICR7UE59LXFjb25maWcuaAoJZm9yIHggaW4gIiR7UVQ1 X0dFTlRPT19DT05GSUdbQF19IjsgZG8KCQlsb2NhbCBmbGFnPSR7eCUlOip9CgkJeD0ke3gjJHtm bGFnfTp9CgkJbG9jYWwgZmVhdHVyZT0ke3glJToqfQoJCXg9JHt4IyR7ZmVhdHVyZX06fQoJCWxv Y2FsIG1hY3JvPSR7eH0KCQltYWNybz0kKHRyICdhLXotJyAnQS1aXycgPDw8ICIke21hY3JvfSIp CgoJCWlmIFtbIC16ICR7ZmxhZ30gXV0gfHwgeyBbWyAke2ZsYWd9ICE9ICchJyBdXSAmJiB1c2Ug JHtmbGFnfTsgfTsgdGhlbgoJCQlbWyAtbiAke2ZlYXR1cmV9IF1dICYmIHFjb25maWdfYWRkKz0i ICR7ZmVhdHVyZX0iCgkJCVtbIC1uICR7bWFjcm99IF1dICYmIGVjaG8gIiNkZWZpbmUgUVRfJHtt YWNyb30iID4+ICIke1R9Ii8ke1BOfS1xY29uZmlnLmgKCQllbHNlCgkJCVtbIC1uICR7ZmVhdHVy ZX0gXV0gJiYgcWNvbmZpZ19yZW1vdmUrPSIgJHtmZWF0dXJlfSIKCQkJW1sgLW4gJHttYWNyb30g XV0gJiYgZWNobyAiI2RlZmluZSBRVF9OT18ke21hY3JvfSIgPj4gIiR7VH0iLyR7UE59LXFjb25m aWcuaAoJCWZpCglkb25lCgoJIyBpbnN0YWxsICR7UE59LXFjb25maWcuaAoJW1sgLXMgJHtUfS8k e1BOfS1xY29uZmlnLmggXV0gJiYgKAoJCWluc2ludG8gIiR7UVQ1X0hFQURFUkRJUiMke0VQUkVG SVh9fSIvR2VudG9vCgkJZG9pbnMgIiR7VH0iLyR7UE59LXFjb25maWcuaAoJKQoKCSMgZ2VuZXJh dGUgYW5kIGluc3RhbGwgJHtQTn0tcWNvbmZpZy5wcmkKCVtbIC1uICR7cWNvbmZpZ19hZGR9IF1d ICYmIGVjaG8gIlFDT05GSUdfQUREPSR7cWNvbmZpZ19hZGR9IiA+PiAiJHtUfSIvJHtQTn0tcWNv bmZpZy5wcmkKCVtbIC1uICR7cWNvbmZpZ19yZW1vdmV9IF1dICYmIGVjaG8gIlFDT05GSUdfUkVN T1ZFPSR7cWNvbmZpZ19yZW1vdmV9IiA+PiAiJHtUfSIvJHtQTn0tcWNvbmZpZy5wcmkKCVtbIC1z ICR7VH0vJHtQTn0tcWNvbmZpZy5wcmkgXV0gJiYgKAoJCWluc2ludG8gIiR7UVQ1X0FSQ0hEQVRB RElSIyR7RVBSRUZJWH19Ii9ta3NwZWNzL2dlbnRvbwoJCWRvaW5zICIke1R9Ii8ke1BOfS1xY29u ZmlnLnByaQoJKQp9CgojIEBGVU5DVElPTjogcXQ1X3JlZ2VuZXJhdGVfZ2xvYmFsX3Fjb25maWdz CiMgQElOVEVSTkFMCiMgQERFU0NSSVBUSU9OOgojIEdlbmVyYXRlcyBHZW50b28tc3BlY2lmaWMg cWNvbmZpZy57aCxwcml9IGFjY29yZGluZyB0byB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4KIyBE b24ndCBjYWxsIGRpZSBoZXJlIGJlY2F1c2UgZHlpbmcgaW4gcGtnX3Bvc3R7aW5zdCxybX0gb25s eSBtYWtlcyB0aGluZ3Mgd29yc2UuCnF0NV9yZWdlbmVyYXRlX2dsb2JhbF9xY29uZmlncygpIHsK CWVpbmZvICJSZWdlbmVyYXRpbmcgZ2VudG9vLXFjb25maWcuaCIKCglmaW5kICIke1JPT1QlL30k e1FUNV9IRUFERVJESVJ9Ii9HZW50b28gXAoJCS1uYW1lICcqLXFjb25maWcuaCcgLWEgXCEgLW5h bWUgJ2dlbnRvby1xY29uZmlnLmgnIC10eXBlIGYgXAoJCS1leGVjZGlyIGNhdCAne30nICsgfCBz b3J0IC11ID4gIiR7VH0iL2dlbnRvby1xY29uZmlnLmgKCglbWyAtcyAke1R9L2dlbnRvby1xY29u ZmlnLmggXV0gfHwgZXdhcm4gIkdlbmVyYXRlZCBnZW50b28tcWNvbmZpZy5oIGlzIGVtcHR5IgoJ bXYgLWYgIiR7VH0iL2dlbnRvby1xY29uZmlnLmggIiR7Uk9PVCUvfSR7UVQ1X0hFQURFUkRJUn0i L0dlbnRvby9nZW50b28tcWNvbmZpZy5oIFwKCQl8fCBlZXJyb3IgIkZhaWxlZCB0byBpbnN0YWxs IG5ldyBnZW50b28tcWNvbmZpZy5oIgoKCWVpbmZvICJVcGRhdGluZyBRVF9DT05GSUcgaW4gcWNv bmZpZy5wcmkiCgoJbG9jYWwgcWNvbmZpZ19wcmk9JHtST09UJS99JHtRVDVfQVJDSERBVEFESVJ9 L21rc3BlY3MvcWNvbmZpZy5wcmkKCWlmIFtbIC1mICR7cWNvbmZpZ19wcml9IF1dOyB0aGVuCgkJ bG9jYWwgeCBxY29uZmlnX2FkZD0gcWNvbmZpZ19yZW1vdmU9CgkJbG9jYWwgcXRfY29uZmlnPSQo c2VkIC1uICdzL15RVF9DT05GSUdccyorPVxzKi8vcCcgIiR7cWNvbmZpZ19wcml9IikKCQlsb2Nh bCBuZXdfcXRfY29uZmlnPQoKCQkjIGdlbmVyYXRlIGxpc3Qgb2YgUVRfQ09ORklHIGVudHJpZXMg ZnJvbSB0aGUgZXhpc3RpbmcgbGlzdCwKCQkjIGFwcGVuZGluZyBRQ09ORklHX0FERCBhbmQgZXhj bHVkaW5nIFFDT05GSUdfUkVNT1ZFCgkJZXNob3B0c19wdXNoIC1zIG51bGxnbG9iCgkJZm9yIHgg aW4gIiR7Uk9PVCUvfSR7UVQ1X0FSQ0hEQVRBRElSfSIvbWtzcGVjcy9nZW50b28vKi1xY29uZmln LnByaTsgZG8KCQkJcWNvbmZpZ19hZGQrPSIgJChzZWQgLW4gJ3MvXlFDT05GSUdfQUREPVxzKi8v cCcgIiR7eH0iKSIKCQkJcWNvbmZpZ19yZW1vdmUrPSIgJChzZWQgLW4gJ3MvXlFDT05GSUdfUkVN T1ZFPVxzKi8vcCcgIiR7eH0iKSIKCQlkb25lCgkJZXNob3B0c19wb3AKCQlmb3IgeCBpbiAke3F0 X2NvbmZpZ30gJHtxY29uZmlnX2FkZH07IGRvCgkJCWlmICEgaGFzICIke3h9IiAke25ld19xdF9j b25maWd9ICR7cWNvbmZpZ19yZW1vdmV9OyB0aGVuCgkJCQluZXdfcXRfY29uZmlnKz0iICR7eH0i CgkJCWZpCgkJZG9uZQoKCQkjIG5vdyByZXBsYWNlIHRoZSBleGlzdGluZyBRVF9DT05GSUcgd2l0 aCB0aGUgZ2VuZXJhdGVkIGxpc3QKCQlzZWQgLWkgLWUgInMvXlFUX0NPTkZJR1xzKis9LiovUVRf Q09ORklHICs9JHtuZXdfcXRfY29uZmlnfS8iIFwKCQkJIiR7cWNvbmZpZ19wcml9IiB8fCBlZXJy b3IgIkZhaWxlZCB0byBzZWQgUVRfQ09ORklHIGluICR7cWNvbmZpZ19wcml9IgoJZWxzZQoJCWV3 YXJuICIke3Fjb25maWdfcHJpfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSByZWd1bGFyIGZp bGUiCglmaQp9Cg== --001a1134497ae425810500d78ec9--