From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thompson, David" Subject: Re: [PATCH 11/15] gnu: system: Add Linux container module. Date: Thu, 9 Jul 2015 09:00:09 -0400 Message-ID: References: <1436188604-2813-1-git-send-email-dthompson2@worcester.edu> <1436188604-2813-11-git-send-email-dthompson2@worcester.edu> <87bnfohy1u.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113498d4d61f29051a70d563 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37839) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDBR4-0006iV-HN for guix-devel@gnu.org; Thu, 09 Jul 2015 09:00:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZDBQw-0006em-Vs for guix-devel@gnu.org; Thu, 09 Jul 2015 09:00:18 -0400 Received: from mail-lb0-f178.google.com ([209.85.217.178]:35869) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDBQw-0006eE-L1 for guix-devel@gnu.org; Thu, 09 Jul 2015 09:00:10 -0400 Received: by lbbpo10 with SMTP id po10so74609493lbb.3 for ; Thu, 09 Jul 2015 06:00:09 -0700 (PDT) In-Reply-To: <87bnfohy1u.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: guix-devel , David Thompson --001a113498d4d61f29051a70d563 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Tue, Jul 7, 2015 at 9:55 AM, Ludovic Court=C3=A8s wrote: > David Thompson skribis: > >> * gnu/system/linux-container.scm: New file. >> * gnu-system.am (GNU_SYSTEM_MODULES): Add it. >> * gnu/system.scm: Export 'operating-system-etc-directory', >> 'operating-system-boot-script', 'operating-system-locale-directory', a= nd >> 'file-union'. >> (operating-system-boot-script): Add #:container? keyword argument. >> (operating-system-activation-script): Add #:container? keyword argume= nt. >> Don't call 'activate-firmware' or 'activate-ptrace-attach' when activa= ting a >> container. > > [...] > >> +(define* (operating-system-boot-script os #:key container?) >> "Return the boot script for OS---i.e., the code started by the initrd= once >> we're running in the final root." > > Augment the docstring with something like: > > When CONTAINER? is true, skip all hardware-related operations as > necessary when booting a Linux container. > >> +(define (system-container os) > > docstring > >> +(define* (container-script os #:key (mappings '())) > > docstring > > OK with these changes! I made these changes and added a 'containerized-operating-system' procedure to the module that does something similar to 'virtualized-operating-system' in (gnu system vm), as discussed in the main thread. Updated patch attached. WDYT? - Dave - Dave --001a113498d4d61f29051a70d563 Content-Type: text/x-diff; charset=UTF-8; name="0001-gnu-system-Add-Linux-container-module.patch" Content-Disposition: attachment; filename="0001-gnu-system-Add-Linux-container-module.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibw7bul40 RnJvbSA3YzQxZTc2NWE5MWY2YTRjNTBiNjkyZjYyMzBkNmUwZTNlM2I3MDk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBUaG9tcHNvbiA8ZGF2ZXRAZ251Lm9yZz4KRGF0ZTog TW9uLCA4IEp1biAyMDE1IDA4OjU5OjAwIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gZ251OiBzeXN0 ZW06IEFkZCBMaW51eCBjb250YWluZXIgbW9kdWxlLgoKKiBnbnUvc3lzdGVtL2xpbnV4LWNvbnRh aW5lci5zY206IE5ldyBmaWxlLgoqIGdudS1zeXN0ZW0uYW0gKEdOVV9TWVNURU1fTU9EVUxFUyk6 IEFkZCBpdC4KKiBnbnUvc3lzdGVtLnNjbTogRXhwb3J0ICdvcGVyYXRpbmctc3lzdGVtLWV0Yy1k aXJlY3RvcnknLAogICdvcGVyYXRpbmctc3lzdGVtLWJvb3Qtc2NyaXB0JywgJ29wZXJhdGluZy1z eXN0ZW0tbG9jYWxlLWRpcmVjdG9yeScsIGFuZAogICdmaWxlLXVuaW9uJy4KICAob3BlcmF0aW5n LXN5c3RlbS1ib290LXNjcmlwdCk6IEFkZCAjOmNvbnRhaW5lcj8ga2V5d29yZCBhcmd1bWVudC4K ICAob3BlcmF0aW5nLXN5c3RlbS1hY3RpdmF0aW9uLXNjcmlwdCk6IEFkZCAjOmNvbnRhaW5lcj8g IGtleXdvcmQgYXJndW1lbnQuCiAgRG9uJ3QgY2FsbCAnYWN0aXZhdGUtZmlybXdhcmUnIG9yICdh Y3RpdmF0ZS1wdHJhY2UtYXR0YWNoJyB3aGVuIGFjdGl2YXRpbmcgYQogIGNvbnRhaW5lci4KLS0t CiBnbnUtc3lzdGVtLmFtICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ251L3N5c3RlbS5zY20g ICAgICAgICAgICAgICAgIHwgIDMwICsrKysrKystLS0tCiBnbnUvc3lzdGVtL2xpbnV4LWNvbnRh aW5lci5zY20gfCAxMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdudS9zeXN0ZW0vbGludXgtY29udGFpbmVyLnNjbQoKZGlmZiAtLWdp dCBhL2dudS1zeXN0ZW0uYW0gYi9nbnUtc3lzdGVtLmFtCmluZGV4IGQ2MzY5YjUuLjgzZDA0ZDgg MTAwNjQ0Ci0tLSBhL2dudS1zeXN0ZW0uYW0KKysrIGIvZ251LXN5c3RlbS5hbQpAQCAtMzQ2LDYg KzM0Niw3IEBAIEdOVV9TWVNURU1fTU9EVUxFUyA9CQkJCVwKICAgZ251L3N5c3RlbS9ncnViLnNj bQkJCQlcCiAgIGdudS9zeXN0ZW0vaW5zdGFsbC5zY20JCQlcCiAgIGdudS9zeXN0ZW0vbGludXgu c2NtCQkJCVwKKyAgZ251L3N5c3RlbS9saW51eC1jb250YWluZXIuc2NtCQlcCiAgIGdudS9zeXN0 ZW0vbGludXgtaW5pdHJkLnNjbQkJCVwKICAgZ251L3N5c3RlbS9sb2NhbGUuc2NtCQkJCVwKICAg Z251L3N5c3RlbS9uc3Muc2NtCQkJCVwKZGlmZiAtLWdpdCBhL2dudS9zeXN0ZW0uc2NtIGIvZ251 L3N5c3RlbS5zY20KaW5kZXggZWZhZDE0NS4uM2VjMWE0YyAxMDA2NDQKLS0tIGEvZ251L3N5c3Rl bS5zY20KKysrIGIvZ251L3N5c3RlbS5zY20KQEAgLTgyLDYgKzgyLDExIEBACiAgICAgICAgICAg ICBvcGVyYXRpbmctc3lzdGVtLWRlcml2YXRpb24KICAgICAgICAgICAgIG9wZXJhdGluZy1zeXN0 ZW0tcHJvZmlsZQogICAgICAgICAgICAgb3BlcmF0aW5nLXN5c3RlbS1ncnViLmNmZworICAgICAg ICAgICAgb3BlcmF0aW5nLXN5c3RlbS1ldGMtZGlyZWN0b3J5CisgICAgICAgICAgICBvcGVyYXRp bmctc3lzdGVtLWxvY2FsZS1kaXJlY3RvcnkKKyAgICAgICAgICAgIG9wZXJhdGluZy1zeXN0ZW0t Ym9vdC1zY3JpcHQKKworICAgICAgICAgICAgZmlsZS11bmlvbgogCiAgICAgICAgICAgICBsb2Nh bC1ob3N0LWFsaWFzZXMKICAgICAgICAgICAgICVzZXR1aWQtcHJvZ3JhbXMKQEAgLTY3OSw3ICs2 ODQsNyBAQCB2YXJpYWJsZSBpcyBub3Qgc2V0LS0taGVuY2UgdGhlIG5lZWQgZm9yIHRoaXMgd3Jh cHBlci4iCiAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGV4ZWNsICMkbW9kcHJvYmUKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgIyRtb2Rwcm9iZSAoY2RyIChjb21tYW5k LWxpbmUpKSkpKSkpKQogCi0oZGVmaW5lIChvcGVyYXRpbmctc3lzdGVtLWFjdGl2YXRpb24tc2Ny aXB0IG9zKQorKGRlZmluZSogKG9wZXJhdGluZy1zeXN0ZW0tYWN0aXZhdGlvbi1zY3JpcHQgb3Mg IzprZXkgY29udGFpbmVyPykKICAgIlJldHVybiB0aGUgYWN0aXZhdGlvbiBzY3JpcHQgZm9yIE9T LS0taS5lLiwgdGhlIGNvZGUgdGhhdCBcImFjdGl2YXRlc1wiIHRoZQogc3RhdGVmdWwgcGFydCBv ZiBPUywgaW5jbHVkaW5nIHVzZXIgYWNjb3VudHMgYW5kIGdyb3Vwcywgc3BlY2lhbCBkaXJlY3Rv cmllcywKIGV0Yy4iCkBAIC03NTMsMTIgKzc1OCwxNSBAQCBldGMuIgogICAgICAgICAgICAgICAg ICAgICA7OyBUZWxsIHRoZSBrZXJuZWwgdG8gdXNlIG91ciAnbW9kcHJvYmUnIGNvbW1hbmQuCiAg ICAgICAgICAgICAgICAgICAgIChhY3RpdmF0ZS1tb2Rwcm9iZSAjJG1vZHByb2JlKQogCi0gICAg ICAgICAgICAgICAgICAgIDs7IFRlbGwgdGhlIGtlcm5lbCB3aGVyZSBmaXJtd2FyZSBpcy4KLSAg ICAgICAgICAgICAgICAgICAgKGFjdGl2YXRlLWZpcm13YXJlCi0gICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCAjJGZpcm13YXJlICIvbGliL2Zpcm13YXJlIikpCi0KLSAgICAgICAg ICAgICAgICAgICAgOzsgTGV0IHVzZXJzIGRlYnVnIHRoZWlyIG93biBwcm9jZXNzZXMhCi0gICAg ICAgICAgICAgICAgICAgIChhY3RpdmF0ZS1wdHJhY2UtYXR0YWNoKQorICAgICAgICAgICAgICAg ICAgICA7OyBUZWxsIHRoZSBrZXJuZWwgd2hlcmUgZmlybXdhcmUgaXMsIHVubGVzcyB3ZSBhcmUK KyAgICAgICAgICAgICAgICAgICAgOzsgYWN0aXZhdGluZyBhIGNvbnRhaW5lci4KKyAgICAgICAg ICAgICAgICAgICAgIyRAKGlmIGNvbnRhaW5lcj8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICN+KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRlbGwgdGhlIGtlcm5lbCB3aGVy ZSBmaXJtd2FyZSBpcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICN+KChhY3RpdmF0ZS1m aXJtd2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICMk ZmlybXdhcmUgIi9saWIvZmlybXdhcmUiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IExldCB1c2VycyBkZWJ1ZyB0aGVpciBvd24gcHJvY2Vzc2VzIQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGFjdGl2YXRlLXB0cmFjZS1hdHRhY2gpKSkKIAogICAgICAgICAgICAg ICAgICAgICA7OyBSdW4gdGhlIHNlcnZpY2VzJyBhY3RpdmF0aW9uIHNuaXBwZXRzLgogICAgICAg ICAgICAgICAgICAgICA7OyBUT0RPOiBVc2UgJ2xvYWQtY29tcGlsZWQnLgpAQCAtNzY3LDExICs3 NzUsMTMgQEAgZXRjLiIKICAgICAgICAgICAgICAgICAgICAgOzsgU2V0IHVwIC9ydW4vY3VycmVu dC1zeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgIChhY3RpdmF0ZS1jdXJyZW50LXN5c3RlbSkp KSkpCiAKLShkZWZpbmUgKG9wZXJhdGluZy1zeXN0ZW0tYm9vdC1zY3JpcHQgb3MpCisoZGVmaW5l KiAob3BlcmF0aW5nLXN5c3RlbS1ib290LXNjcmlwdCBvcyAjOmtleSBjb250YWluZXI/KQogICAi UmV0dXJuIHRoZSBib290IHNjcmlwdCBmb3IgT1MtLS1pLmUuLCB0aGUgY29kZSBzdGFydGVkIGJ5 IHRoZSBpbml0cmQgb25jZQotd2UncmUgcnVubmluZyBpbiB0aGUgZmluYWwgcm9vdC4iCit3ZSdy ZSBydW5uaW5nIGluIHRoZSBmaW5hbCByb290LiAgV2hlbiBDT05UQUlORVI/IGlzIHRydWUsIHNr aXAgYWxsCitoYXJkd2FyZS1yZWxhdGVkIG9wZXJhdGlvbnMgYXMgbmVjZXNzYXJ5IHdoZW4gYm9v dGluZyBhIExpbnV4IGNvbnRhaW5lci4iCiAgIChtbGV0KiAlc3RvcmUtbW9uYWQgKChzZXJ2aWNl cyAob3BlcmF0aW5nLXN5c3RlbS1zZXJ2aWNlcyBvcykpCi0gICAgICAgICAgICAgICAgICAgICAg IChhY3RpdmF0ZSAob3BlcmF0aW5nLXN5c3RlbS1hY3RpdmF0aW9uLXNjcmlwdCBvcykpCisgICAg ICAgICAgICAgICAgICAgICAgIChhY3RpdmF0ZSAob3BlcmF0aW5nLXN5c3RlbS1hY3RpdmF0aW9u LXNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zICM6Y29udGFpbmVy PyBjb250YWluZXI/KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGRtZC1jb25mIChkbWQtY29u ZmlndXJhdGlvbi1maWxlIHNlcnZpY2VzKSkpCiAgICAgKGdleHAtPmZpbGUgImJvb3QiCiAgICAg ICAgICAgICAgICAgI34oYmVnaW4KZGlmZiAtLWdpdCBhL2dudS9zeXN0ZW0vbGludXgtY29udGFp bmVyLnNjbSBiL2dudS9zeXN0ZW0vbGludXgtY29udGFpbmVyLnNjbQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi45ZTliZmVhCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3N5c3Rl bS9saW51eC1jb250YWluZXIuc2NtCkBAIC0wLDAgKzEsMTE4IEBACis7OzsgR05VIEd1aXggLS0t IEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkg MjAxNSBEYXZpZCBUaG9tcHNvbiA8ZGF2ZXRAZ251Lm9yZz4KKzs7OworOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7 OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7 Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRo IEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor CisoZGVmaW5lLW1vZHVsZSAoZ251IHN5c3RlbSBsaW51eC1jb250YWluZXIpCisgICM6dXNlLW1v ZHVsZSAoaWNlLTkgbWF0Y2gpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNl LW1vZHVsZSAoZ3VpeCBjb25maWcpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBzdG9yZSkKKyAgIzp1 c2UtbW9kdWxlIChndWl4IGdleHApCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBkZXJpdmF0aW9ucykK KyAgIzp1c2UtbW9kdWxlIChndWl4IG1vbmFkcykKKyAgIzp1c2UtbW9kdWxlIChnbnUgYnVpbGQg bGludXgtY29udGFpbmVyKQorICAjOnVzZS1tb2R1bGUgKGdudSBzeXN0ZW0pCisgICM6dXNlLW1v ZHVsZSAoZ251IHN5c3RlbSBmaWxlLXN5c3RlbXMpCisgICM6ZXhwb3J0IChtYXBwaW5nLT5maWxl LXN5c3RlbQorICAgICAgICAgICAgc3lzdGVtLWNvbnRhaW5lcgorICAgICAgICAgICAgY29udGFp bmVyaXplZC1vcGVyYXRpbmctc3lzdGVtCisgICAgICAgICAgICBjb250YWluZXItc2NyaXB0KSkK KworKGRlZmluZSAobWFwcGluZy0+ZmlsZS1zeXN0ZW0gbWFwcGluZykKKyAgIlJldHVybiBhIGZp bGUgc3lzdGVtIHRoYXQgcmVhbGl6ZXMgTUFQUElORy4iCisgIChtYXRjaCBtYXBwaW5nCisgICAg KCgkIDxmaWxlLXN5c3RlbS1tYXBwaW5nPiBzb3VyY2UgdGFyZ2V0IHdyaXRhYmxlPykKKyAgICAg KGZpbGUtc3lzdGVtCisgICAgICAgKG1vdW50LXBvaW50IHRhcmdldCkKKyAgICAgICAoZGV2aWNl IHNvdXJjZSkKKyAgICAgICAodHlwZSAibm9uZSIpCisgICAgICAgKGZsYWdzIChpZiB3cml0YWJs ZT8KKyAgICAgICAgICAgICAgICAgICcoYmluZC1tb3VudCkKKyAgICAgICAgICAgICAgICAgICco YmluZC1tb3VudCByZWFkLW9ubHkpKSkKKyAgICAgICAoY2hlY2s/ICNmKQorICAgICAgIChjcmVh dGUtbW91bnQtcG9pbnQ/ICN0KSkpKSkKKworKGRlZmluZSAoc3lzdGVtLWNvbnRhaW5lciBvcykK KyAgIlJldHVybiBhIGRlcml2YXRpb24gdGhhdCBidWlsZHMgT1MgYXMgYSBMaW51eCBjb250YWlu ZXIuIgorICAobWxldCogJXN0b3JlLW1vbmFkCisgICAgICAoKHByb2ZpbGUgKG9wZXJhdGluZy1z eXN0ZW0tcHJvZmlsZSBvcykpCisgICAgICAgKGV0YyAgICAgKG9wZXJhdGluZy1zeXN0ZW0tZXRj LWRpcmVjdG9yeSBvcykpCisgICAgICAgKGJvb3QgICAgKG9wZXJhdGluZy1zeXN0ZW0tYm9vdC1z Y3JpcHQgb3MgIzpjb250YWluZXI/ICN0KSkKKyAgICAgICAobG9jYWxlICAob3BlcmF0aW5nLXN5 c3RlbS1sb2NhbGUtZGlyZWN0b3J5IG9zKSkpCisgICAgKGZpbGUtdW5pb24gInN5c3RlbS1jb250 YWluZXIiCisgICAgICAgICAgICAgICAgYCgoImJvb3QiICwjfiMkYm9vdCkKKyAgICAgICAgICAg ICAgICAgICgicHJvZmlsZSIgLCN+IyRwcm9maWxlKQorICAgICAgICAgICAgICAgICAgKCJsb2Nh bGUiICwjfiMkbG9jYWxlKQorICAgICAgICAgICAgICAgICAgKCJldGMiICwjfiMkZXRjKSkpKSkK KworKGRlZmluZSAoY29udGFpbmVyaXplZC1vcGVyYXRpbmctc3lzdGVtIG9zIG1hcHBpbmdzKQor ICAiUmV0dXJuIGFuIG9wZXJhdGluZyBzeXN0ZW0gYmFzZWQgb24gT1MgZm9yIHVzZSBpbiBhIExp bnV4IGNvbnRhaW5lcgorZW52aXJvbm1lbnQuICBNQVBQSU5HUyBpcyBhIGxpc3Qgb2YgPGZpbGUt c3lzdGVtLW1hcHBpbmc+IHRvIHJlYWxpemUgaW4gdGhlCitjb250YWluZXJpemVkIE9TLiIKKyAg KGRlZmluZSB1c2VyLWZpbGUtc3lzdGVtcworICAgIChyZW1vdmUgKGxhbWJkYSAoZnMpCisgICAg ICAgICAgICAgIChsZXQgKCh0YXJnZXQgKGZpbGUtc3lzdGVtLW1vdW50LXBvaW50IGZzKSkKKyAg ICAgICAgICAgICAgICAgICAgKHNvdXJjZSAoZmlsZS1zeXN0ZW0tZGV2aWNlIGZzKSkpCisgICAg ICAgICAgICAgICAgKG9yIChzdHJpbmc9PyB0YXJnZXQgKCVzdG9yZS1wcmVmaXgpKQorICAgICAg ICAgICAgICAgICAgICAoc3RyaW5nPT8gdGFyZ2V0ICIvIikKKyAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1wcmVmaXg/ICIvZGV2LyIgc291cmNlKQorICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLXByZWZpeD8gIi9kZXYiIHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1w cmVmaXg/ICIvc3lzIiB0YXJnZXQpKSkpCisgICAgICAgICAgICAob3BlcmF0aW5nLXN5c3RlbS1m aWxlLXN5c3RlbXMgb3MpKSkKKworICAoZGVmaW5lIChtYXBwaW5nLT5mcyBmcykKKyAgICAoZmls ZS1zeXN0ZW0gKGluaGVyaXQgKG1hcHBpbmctPmZpbGUtc3lzdGVtIGZzKSkKKyAgICAgIChuZWVk ZWQtZm9yLWJvb3Q/ICN0KSkpCisKKyAgKG9wZXJhdGluZy1zeXN0ZW0gKGluaGVyaXQgb3MpCisg ICAgKHN3YXAtZGV2aWNlcyAnKCkpIDsgZGlzYWJsZSBzd2FwCisgICAgKGZpbGUtc3lzdGVtcyAo YXBwZW5kIChtYXAgbWFwcGluZy0+ZnMgKGNvbnMgJXN0b3JlLW1hcHBpbmcgbWFwcGluZ3MpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAlY29udGFpbmVyLWZpbGUtc3lzdGVtcworICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2VyLWZpbGUtc3lzdGVtcykpKSkKKworKGRlZmluZSogKGNv bnRhaW5lci1zY3JpcHQgb3MgIzprZXkgKG1hcHBpbmdzICcoKSkpCisgICJSZXR1cm4gYSBkZXJp dmF0aW9uIG9mIGEgc2NyaXB0IHRoYXQgcnVucyBPUyBhcyBhIExpbnV4IGNvbnRhaW5lci4KK01B UFBJTkdTIGlzIGEgbGlzdCBvZiA8ZmlsZS1zeXN0ZW0+IG9iamVjdHMgdGhhdCBzcGVjaWZ5IHRo ZSBmaWxlcy9kaXJlY3RvcmllcwordGhhdCB3aWxsIGJlIHNoYXJlZCB3aXRoIHRoZSBob3N0IHN5 c3RlbS4iCisgIChsZXQqICgob3MgICAgICAgICAgIChjb250YWluZXJpemVkLW9wZXJhdGluZy1z eXN0ZW0gb3MgbWFwcGluZ3MpKQorICAgICAgICAgKGZpbGUtc3lzdGVtcyAoZmlsdGVyIGZpbGUt c3lzdGVtLW5lZWRlZC1mb3ItYm9vdD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo b3BlcmF0aW5nLXN5c3RlbS1maWxlLXN5c3RlbXMgb3MpKSkKKyAgICAgICAgIChzcGVjcyAgICAg ICAgKG1hcCBmaWxlLXN5c3RlbS0+c3BlYyBmaWxlLXN5c3RlbXMpKSkKKworICAgIChtbGV0KiAl c3RvcmUtbW9uYWQgKChvcy1kcnYgKHN5c3RlbS1jb250YWluZXIgb3MpKSkKKworICAgICAgKGRl ZmluZSBzY3JpcHQKKyAgICAgICAgI34oYmVnaW4KKyAgICAgICAgICAgICh1c2UtbW9kdWxlcyAo Z251IGJ1aWxkIGxpbnV4LWNvbnRhaW5lcikpCisKKyAgICAgICAgICAgIChjYWxsLXdpdGgtY29u dGFpbmVyICcjJHNwZWNzCisgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAg ICAoc2V0ZW52ICJIT01FIiAiL3Jvb3QiKQorICAgICAgICAgICAgICAgIChzZXRlbnYgIlRNUERJ UiIgIi90bXAiKQorICAgICAgICAgICAgICAgIChzZXRlbnYgIkdVSVhfTkVXX1NZU1RFTSIgIyRv cy1kcnYpCisgICAgICAgICAgICAgICAgKGZvci1lYWNoIG1rZGlyICcoIi9ydW4iICIvYmluIiAi L2V0YyIgIi9ob21lIiAiL3ZhciIpKQorICAgICAgICAgICAgICAgIChwcmltaXRpdmUtbG9hZCAo c3RyaW5nLWFwcGVuZCAjJG9zLWRydiAiL2Jvb3QiKSkpKSkpCisKKyAgICAgIChnZXhwLT5zY3Jp cHQgInJ1bi1jb250YWluZXIiIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAjOm1vZHVsZXMg JygoaWNlLTkgbWF0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcmZpIHNy ZmktOTgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWl4IGNvbmZpZykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aXggdXRpbHMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBzeXNjYWxscykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdudSBidWlsZCBmaWxlLXN5c3RlbXMpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChnbnUgYnVpbGQgbGludXgtY29udGFpbmVyKSkpKSkpCi0tIAoyLjQuMwoK --001a113498d4d61f29051a70d563--