X-Original-To: alpine-aports@mail.alpinelinux.org Delivered-To: alpine-aports@mail.alpinelinux.org Received: from mail.alpinelinux.org (dallas-a1.alpinelinux.org [127.0.0.1]) by mail.alpinelinux.org (Postfix) with ESMTP id 60CE8DC0174 for ; Mon, 7 Sep 2015 21:52:24 +0000 (UTC) Received: from lithium.8pit.net (lithium.8pit.net [141.101.32.65]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.alpinelinux.org (Postfix) with ESMTPS id B1C54DC013B; Mon, 7 Sep 2015 21:52:23 +0000 (UTC) Received: from localhost (ip5f5ac8f2.dynamic.kabel-deutschland.de [95.90.200.242]); by lithium.8pit.net (OpenSMTPD) with ESMTPSA id 926fa03c; TLS version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO; Mon, 7 Sep 2015 23:52:21 +0200 (CEST) From: =?UTF-8?q?S=C3=B6ren=20Tempel?= To: alpine-aports@lists.alpinelinux.org Subject: [alpine-aports] [PATCH] testing/nftables: new aport Date: Mon, 7 Sep 2015 23:52:17 +0200 Message-Id: <1441662737-9994-1-git-send-email-soeren+git@soeren-tempel.net> X-Mailer: git-send-email 2.5.1 X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Virus-Scanned: ClamAV using ClamSMTP TWlnaHQgbmVlZCBzb21lIGFkZGl0aW9uYWwgdGVzdGluZy4gRXNwZWNpYWxseSB0aGUgT3BlblJD IHNlcnZpY2Ugd2Fzbid0DQp0ZXN0ZWQgdG8gZXh0ZW5zaXZlbHkgYnkgbXlzZWxmLg0KLS0tDQog Li4uL25mdGFibGVzLzAxLWZpeC1vYmplY3Qtb3JkZXItdmlhLW5mdC0tZi5wYXRjaCAgfCAgNTAg KysrKysrKw0KIHRlc3RpbmcvbmZ0YWJsZXMvQVBLQlVJTEQgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDcwICsrKysrKysrKw0KIHRlc3RpbmcvbmZ0YWJsZXMvbmZ0YWJsZXMuY29uZmQgICAg ICAgICAgICAgICAgICAgIHwgIDE5ICsrKw0KIHRlc3RpbmcvbmZ0YWJsZXMvbmZ0YWJsZXMuaW5p dGQgICAgICAgICAgICAgICAgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKw0KIDQgZmls ZXMgY2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdGlu Zy9uZnRhYmxlcy8wMS1maXgtb2JqZWN0LW9yZGVyLXZpYS1uZnQtLWYucGF0Y2gNCiBjcmVhdGUg bW9kZSAxMDA2NDQgdGVzdGluZy9uZnRhYmxlcy9BUEtCVUlMRA0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0ZXN0aW5nL25mdGFibGVzL25mdGFibGVzLmNvbmZkDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RpbmcvbmZ0YWJsZXMvbmZ0YWJsZXMuaW5pdGQNCg0KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbmZ0 YWJsZXMvMDEtZml4LW9iamVjdC1vcmRlci12aWEtbmZ0LS1mLnBhdGNoIGIvdGVzdGluZy9uZnRh Ymxlcy8wMS1maXgtb2JqZWN0LW9yZGVyLXZpYS1uZnQtLWYucGF0Y2gNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwLi42MDkyMDMyDQotLS0gL2Rldi9udWxsDQorKysgYi90ZXN0 aW5nL25mdGFibGVzLzAxLWZpeC1vYmplY3Qtb3JkZXItdmlhLW5mdC0tZi5wYXRjaA0KQEAgLTAs MCArMSw1MCBAQA0KK0Zyb20gNDU0ZmZhYjljYzY5NWI5NjE4MzI0YTZhMGE0ZGVhZDZkNTI4OWY4 ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCitGcm9tOiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFi bG9AbmV0ZmlsdGVyLm9yZz4NCitEYXRlOiBTYXQsIDE0IEZlYiAyMDE1IDIxOjQxOjIzICswMTAw DQorU3ViamVjdDogcnVsZTogZml4IG9iamVjdCBvcmRlciB2aWEgbmZ0IC1mDQorDQorVGhlIG9i amVjdHMgbmVlZCB0byBiZSBsb2FkZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoNCisNCisJIzEg dGFibGVzDQorCSMyIGNoYWlucw0KKwkjMyBzZXRzDQorCSM0IHJ1bGVzDQorDQorV2UgaGF2ZSB0 byBtYWtlIHN1cmUgdGhhdCBjaGFpbnMgYXJlIGluIHBsYWNlIGJ5IHdoZW4gd2UgYWRkIHJ1bGVz IHdpdGgNCitqdW1wcy9nb3Rvcy4gU2ltaWxhcmx5LCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0 IHRoZSBzZXRzIGFyZSBpbiBwbGFjZQ0KK2J5IHdoZW4gcnVsZXMgcmVmZXJlbmNlIHRoZW0uDQor DQorV2l0aG91dCB0aGlzIHBhdGNoLCB5b3UgbWF5IGhpdCBFTk9FTlQgZXJyb3JzIGRlcGVuZGlu ZyBvbiB5b3VyIHJ1bGVzZXQNCitjb25maWd1cmF0aW9uLg0KKw0KK1NpZ25lZC1vZmYtYnk6IFBh YmxvIE5laXJhIEF5dXNvIDxwYWJsb0BuZXRmaWx0ZXIub3JnPg0KKw0KK2RpZmYgLS1naXQgYS9z cmMvcnVsZS5jIGIvc3JjL3J1bGUuYw0KK2luZGV4IGZlYWZlMjYuLjhkNzZmZDAgMTAwNjQ0DQor LS0tIGEvc3JjL3J1bGUuYw0KKysrKyBiL3NyYy9ydWxlLmMNCitAQCAtNjU4LDE0ICs2NTgsMTkg QEAgc3RhdGljIGludCBkb19hZGRfdGFibGUoc3RydWN0IG5ldGxpbmtfY3R4ICpjdHgsIGNvbnN0 IHN0cnVjdCBoYW5kbGUgKmgsDQorIAlpZiAobmV0bGlua19hZGRfdGFibGUoY3R4LCBoLCBsb2Ms IHRhYmxlLCBleGNsKSA8IDApDQorIAkJcmV0dXJuIC0xOw0KKyAJaWYgKHRhYmxlICE9IE5VTEwp IHsNCisrCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCAmdGFibGUtPmNoYWlucywgbGlzdCkg ew0KKysJCQlpZiAobmV0bGlua19hZGRfY2hhaW4oY3R4LCAmY2hhaW4tPmhhbmRsZSwNCisrCQkJ CQkgICAgICAmY2hhaW4tPmxvY2F0aW9uLCBjaGFpbiwNCisrCQkJCQkgICAgICBleGNsKSA8IDAp DQorKwkJCQlyZXR1cm4gLTE7DQorKwkJfQ0KKyAJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2V0LCAm dGFibGUtPnNldHMsIGxpc3QpIHsNCisgCQkJaGFuZGxlX21lcmdlKCZzZXQtPmhhbmRsZSwgJnRh YmxlLT5oYW5kbGUpOw0KKyAJCQlpZiAoZG9fYWRkX3NldChjdHgsICZzZXQtPmhhbmRsZSwgc2V0 KSA8IDApDQorIAkJCQlyZXR1cm4gLTE7DQorIAkJfQ0KKyAJCWxpc3RfZm9yX2VhY2hfZW50cnko Y2hhaW4sICZ0YWJsZS0+Y2hhaW5zLCBsaXN0KSB7DQorLQkJCWlmIChkb19hZGRfY2hhaW4oY3R4 LCAmY2hhaW4tPmhhbmRsZSwgJmNoYWluLT5sb2NhdGlvbiwNCistCQkJCQkgY2hhaW4sIGV4Y2wp IDwgMCkNCisrCQkJaWYgKG5ldGxpbmtfYWRkX3J1bGVfbGlzdChjdHgsIGgsICZjaGFpbi0+cnVs ZXMpIDwgMCkNCisgCQkJCXJldHVybiAtMTsNCisgCQl9DQorIAl9DQorLS0gDQorY2dpdCB2MC4x MC4yDQorDQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9uZnRhYmxlcy9BUEtCVUlMRCBiL3Rlc3Rpbmcv bmZ0YWJsZXMvQVBLQlVJTEQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4w Njc5YjViDQotLS0gL2Rldi9udWxsDQorKysgYi90ZXN0aW5nL25mdGFibGVzL0FQS0JVSUxEDQpA QCAtMCwwICsxLDcwIEBADQorIyBDb250cmlidXRvcjogU8O2cmVuIFRlbXBlbCA8c29lcmVuK2Fs cGluZUBzb2VyZW4tdGVtcGVsLm5ldD4NCisjIE1haW50YWluZXI6IFPDtnJlbiBUZW1wZWwgPHNv ZXJlbithbHBpbmVAc29lcmVuLXRlbXBlbC5uZXQ+DQorcGtnbmFtZT1uZnRhYmxlcw0KK3BrZ3Zl cj0wLjQNCitwa2dyZWw9MA0KK3BrZ2Rlc2M9Ik5ldGZpbHRlciB0YWJsZXMgdXNlcnNwYWNlIHRv b2xzIg0KK3VybD0iaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvbmZ0YWJsZXMvIg0KK2Fy Y2g9ImFsbCINCitsaWNlbnNlPSJHUEwyIg0KK2RlcGVuZHM9IiINCitkZXBlbmRzX2Rldj0ibGli bW5sLWRldiBsaWJuZnRubC1kZXYgZ21wLWRldiByZWFkbGluZS1kZXYgbmN1cnNlcy1kZXYiDQor bWFrZWRlcGVuZHM9IiRkZXBlbmRzX2RldiBiaXNvbiBmbGV4Ig0KK2luc3RhbGw9IiINCitzdWJw YWNrYWdlcz0iIiAjIC1kb2Mgd291bGQgcmVxdWlyZSBkb2Nib29rMnggd2hpY2ggaXNuJ3QgcGFj a2FnZWQgeWV0DQorc291cmNlPSJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy8kcGtnbmFt ZS9maWxlcy8kcGtnbmFtZS0kcGtndmVyLnRhci5iejINCisJbmZ0YWJsZXMuY29uZmQNCisJbmZ0 YWJsZXMuaW5pdGQNCisJMDEtZml4LW9iamVjdC1vcmRlci12aWEtbmZ0LS1mLnBhdGNoIg0KKw0K K19idWlsZGRpcj0iJHNyY2RpciIvJHBrZ25hbWUtJHBrZ3Zlcg0KK3ByZXBhcmUoKSB7DQorCWNk ICIkX2J1aWxkZGlyIg0KKw0KKwl1cGRhdGVfY29uZmlnX3N1YiB8fCByZXR1cm4gMQ0KKwlzZWQg LWkgJzFpI2luY2x1ZGUgImNvbmZpZy5oIicgc3JjL3Byb3RvLmMNCisNCisJbG9jYWwgaT0NCisJ Zm9yIGkgaW4gJHNvdXJjZTsgZG8NCisJCWNhc2UgJGkgaW4NCisJCSoucGF0Y2gpIG1zZyAkaTsg cGF0Y2ggLXAxIC1pICIkc3JjZGlyIi8kaSB8fCByZXR1cm4gMTs7DQorCQllc2FjDQorCWRvbmUN Cit9DQorDQorYnVpbGQoKSB7DQorCWNkICIkX2J1aWxkZGlyIg0KKwkuL2NvbmZpZ3VyZSBcDQor CQktLWJ1aWxkPSRDQlVJTEQgXA0KKwkJLS1ob3N0PSRDSE9TVCBcDQorCQktLXByZWZpeD0vdXNy IFwNCisJCS0tc3lzY29uZmRpcj0vZXRjIFwNCisJCS0tbWFuZGlyPS91c3Ivc2hhcmUvbWFuIFwN CisJCS0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gXA0KKwkJLS1sb2NhbHN0YXRlZGlyPS92YXIg XA0KKwkJfHwgcmV0dXJuIDENCisJbWFrZSB8fCByZXR1cm4gMQ0KK30NCisNCitwYWNrYWdlKCkg ew0KKwljZCAiJF9idWlsZGRpciINCisJbWFrZSBERVNURElSPSIkcGtnZGlyIiBpbnN0YWxsIHx8 IHJldHVybiAxDQorDQorCWluc3RhbGwgLURtNzU1ICIkc3JjZGlyIi8kcGtnbmFtZS5pbml0ZCBc DQorCQkiJHBrZ2RpciIvZXRjL2luaXQuZC8kcGtnbmFtZSB8fCByZXR1cm4gMQ0KKwlpbnN0YWxs IC1EbTY0NCAiJHNyY2RpciIvJHBrZ25hbWUuY29uZmQgXA0KKwkJIiRwa2dkaXIiL2V0Yy9jb25m LmQvJHBrZ25hbWUgfHwgcmV0dXJuIDENCit9DQorDQorbWQ1c3Vtcz0iMDliNjg2YzQ4OWZmMTBk YjY3MGNhNjBkYmVkN2ZmNDMgIG5mdGFibGVzLTAuNC50YXIuYnoyDQorMDBmN2RjNjFiY2MxZjdj MmU0OGViZWFlYjhiNmI2YjUgIG5mdGFibGVzLmNvbmZkDQorZjU3MDNmODZlYjIxMjljZGVjZThj MjMwY2MwMzZiZDcgIG5mdGFibGVzLmluaXRkDQorYzBhMThmNDNhNWNlMDJjYjYxYzllMDA3MTcy NTUyOWEgIDAxLWZpeC1vYmplY3Qtb3JkZXItdmlhLW5mdC0tZi5wYXRjaCINCitzaGEyNTZzdW1z PSJmNmNhNjliNzVjNjg5MTVmOWYzYTM5NzIyNzRlYzY4MzU0ZGZiYmNmYzBiOWZjNTVjODEzYTA1 MjVjMzUxZDNjICBuZnRhYmxlcy0wLjQudGFyLmJ6Mg0KK2Q1ZTMwNzczNDVkZmVhMDI4NDlhNzBh ZWEyMjAzOTYzMjJhMTBjMzgwOGYwMzAzYjk4ODExOWFkYmM1NmZkYmQgIG5mdGFibGVzLmNvbmZk DQorMjkzZDVhMGVmNjg3YzY5ZmZmZGNlOTEyYTgzM2NmNTgxMjI3MmMwYmFhZTlmNTlkNjAzYWRh OGVmYTU4MjhhNiAgbmZ0YWJsZXMuaW5pdGQNCithYjUwNjhhMzBlNGEwZGY3MmI1ODlhZWM1MDBh NGE2YTFjM2E1YWI1MGVlNzNmYWQwMzRlZWU2NzZlYWJlOWJiICAwMS1maXgtb2JqZWN0LW9yZGVy LXZpYS1uZnQtLWYucGF0Y2giDQorc2hhNTEyc3Vtcz0iMDkzMmNmOTg3ZGE2MDIyODVmYmY3Yzdm NjEzMjhiMGQ3NGQ2ODc4ODljMmQ0YTViZDJiZDdmZTExZThiOTk0MzNiYzVlZTUzZWJiZGRhZGYy YzkwZTQwYWNkY2IyOGY2YmFiZjA3ZTExZmVlZGZmODE1YzU3MWMzYjc4MmRmZmMgIG5mdGFibGVz LTAuNC50YXIuYnoyDQorODM3MGFiY2RjODlmY2Q5ZGE1ZGM3ZDE2MjBiZTZhZmI0NjMzYjhiY2Qw YThhMTIwYjQ2NGNjMWE3ZTFmYWI2ZjM0OTU2YzI5M2RhM2Y2ZDNjYmUxZjdhMmUwMzAzOGZkMGM5 NGE2MTQxMzdhZTU2NTdkMjlmZmRiNWYzZmExNDQgIG5mdGFibGVzLmNvbmZkDQorZWM0M2NjNjMw YjQ1ZWEyNzI2MDQ0YjMwOTI1ZTA0ZjE2ZmRiNDhmZjJlZTE4NzFjMTEyZmRlNWI0MDZmNDdjNzVi NTNjZTA1ZGI0ZGZhYjg1NTgxNTZkYTk2ZTliZjQ4NGViYWIxZjAwZjVjZGEyMGJiZTg1OTdjNjNi MTc4ZmUgIG5mdGFibGVzLmluaXRkDQorOWI3YjUxYzU1NjgxZmMyNWJiNTNmZWY2YmYzOGUxMjUz NzdhM2IzMmJkZjZlOWM4YzcwNTZhNzJkZWI3ZjI0YjdiNmUyZGNjY2IzMDY1NjQ1ZTY5Njc1ODQ4 NTg1YzYwNTFlODk5MmQ5MTc5ZjE2MDlmYmUxZDg3M2NiM2JkZGYgIDAxLWZpeC1vYmplY3Qtb3Jk ZXItdmlhLW5mdC0tZi5wYXRjaCINCmRpZmYgLS1naXQgYS90ZXN0aW5nL25mdGFibGVzL25mdGFi bGVzLmNvbmZkIGIvdGVzdGluZy9uZnRhYmxlcy9uZnRhYmxlcy5jb25mZA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmU4M2E0YjkNCi0tLSAvZGV2L251bGwNCisrKyBiL3Rl c3RpbmcvbmZ0YWJsZXMvbmZ0YWJsZXMuY29uZmQNCkBAIC0wLDAgKzEsMTkgQEANCisjIC9ldGMv Y29uZi5kL25mdGFibGVzDQorDQorIyBMb2NhdGlvbiBpbiB3aGljaCBuZnRhYmxlcyBpbml0c2Ny aXB0IHdpbGwgc2F2ZSBzZXQgcnVsZXMgb24gDQorIyBzZXJ2aWNlIHNodXRkb3duDQorTkZUQUJM RVNfU0FWRT0iL3Zhci9saWIvbmZ0YWJsZXMvcnVsZXMtc2F2ZSINCisNCisjIE9wdGlvbnMgdG8g cGFzcyB0byBuZnQgb24gc2F2ZQ0KK1NBVkVfT1BUSU9OUz0iLW4iDQorDQorIyBTYXZlIHN0YXRl IG9uIHN0b3BwaW5nIG5mdGFibGVzDQorU0FWRV9PTl9TVE9QPSJ5ZXMiDQorDQorIyBJZiB5b3Ug bmVlZCB0byBsb2cgbmZ0YWJsZXMgbWVzc2FnZXMgYXMgc29vbiBhcyBuZnRhYmxlcyBzdGFydHMs DQorIyBBTkQgeW91ciBsb2dnZXIgZG9lcyBOT1QgZGVwZW5kIG9uIHRoZSBuZXR3b3JrLCB0aGVu IHlvdSBtYXkgd2lzaA0KKyMgdG8gdW5jb21tZW50IHRoZSBuZXh0IGxpbmUuDQorIyBJZiB5b3Vy IGxvZ2dlciBkZXBlbmRzIG9uIHRoZSBuZXR3b3JrLCBhbmQgeW91IHVuY29tbWVudCB0aGlzIGxp bmUNCisjIHlvdSB3aWxsIGNyZWF0ZSBhbiB1bnJlc29sdmFibGUgY2lyY3VsYXIgZGVwZW5kZW5j eSBkdXJpbmcgc3RhcnR1cC4NCisjIEFmdGVyIGNvbW1lbnRpbmcgb3IgdW5jb21tZW50aW5nIHRo aXMgbGluZSwgeW91IG11c3QgcnVuICdyYy11cGRhdGUgLXUnLg0KKyNyY191c2U9ImxvZ2dlciIN CmRpZmYgLS1naXQgYS90ZXN0aW5nL25mdGFibGVzL25mdGFibGVzLmluaXRkIGIvdGVzdGluZy9u ZnRhYmxlcy9uZnRhYmxlcy5pbml0ZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAuLmM3MjYzOTMNCi0tLSAvZGV2L251bGwNCisrKyBiL3Rlc3RpbmcvbmZ0YWJsZXMvbmZ0YWJs ZXMuaW5pdGQNCkBAIC0wLDAgKzEsMTY2IEBADQorIyEvc2Jpbi9ydW5zY3JpcHQNCisjIENvcHly aWdodCAyMDE0IE5pY2hvbGFzIFZpbnNvbg0KKyMgQ29weXJpZ2h0IDE5OTktMjAxNCBHZW50b28g Rm91bmRhdGlvbg0KKyMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2Mg0KKw0KK2V4dHJhX2NvbW1hbmRzPSJjbGVhciBsaXN0IHBh bmljIHNhdmUiDQorZXh0cmFfc3RhcnRlZF9jb21tYW5kcz0icmVsb2FkIg0KKw0KK2RlcGVuZCgp IHsNCisgICAgbmVlZCBsb2NhbG1vdW50ICM0MzQ3NzQNCisgICAgYmVmb3JlIG5ldA0KK30NCisN CitjaGVja2tlcm5lbCgpIHsNCisgICAgaWYgISBuZnQgbGlzdCB0YWJsZXMgPi9kZXYvbnVsbCAy PiYxOyB0aGVuDQorICAgICAgICBlZXJyb3IgIllvdXIga2VybmVsIGxhY2tzIG5mdGFibGVzIHN1 cHBvcnQsIHBsZWFzZSBsb2FkIg0KKyAgICAgICAgZWVycm9yICJhcHByb3ByaWF0ZSBtb2R1bGVz IGFuZCB0cnkgYWdhaW4uIg0KKyAgICAgICAgcmV0dXJuIDENCisgICAgZmkNCisgICAgcmV0dXJu IDANCit9DQorDQorY2hlY2tjb25maWcoKSB7DQorICAgIGlmIFsgISAtZiAke05GVEFCTEVTX1NB VkV9IF07IHRoZW4NCisgICAgICAgIGVlcnJvciAiTm90IHN0YXJ0aW5nIG5mdGFibGVzLiAgRmly c3QgY3JlYXRlIHNvbWUgcnVsZXMgdGhlbiBydW46Ig0KKyAgICAgICAgZWVycm9yICJyYy1zZXJ2 aWNlIG5mdGFibGVzIHNhdmUiDQorICAgICAgICByZXR1cm4gMQ0KKyAgICBmaQ0KKyAgICByZXR1 cm4gMA0KK30NCisNCitnZXRmYW1pbGllcygpIHsNCisgICAgbG9jYWwgZmFtaWxpZXMNCisgICAg Zm9yIGwzZiBpbiBpcCBhcnAgaXA2IGJyaWRnZSBpbmV0OyBkbw0KKyAgICAgICAgaWYgbmZ0IGxp c3QgdGFibGVzICR7bDNmfSA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgICAgICAgICAgZmFt aWxpZXM9IiR7ZmFtaWxpZXN9JHtsM2Z9ICINCisgICAgICAgIGZpDQorICAgIGRvbmUNCisgICAg ZWNobyAke2ZhbWlsaWVzfQ0KK30NCisNCitjbGVhck5GVCgpIHsNCisgICAgbG9jYWwgbDNmIGxp bmUgdGFibGUgY2hhaW4NCisNCisgICAgZm9yIGwzZiBpbiAkKGdldGZhbWlsaWVzKTsgZG8NCisg ICAgICAgIG5mdCBsaXN0IHRhYmxlcyAke2wzZn0gfCB3aGlsZSByZWFkIGxpbmU7IGRvDQorICAg ICAgICAgICAgdGFibGU9JChlY2hvICR7bGluZX0gfCBzZWQgInMvdGFibGVbIFx0XSovLyIpDQor ICAgICAgICAgICAgbmZ0IGZsdXNoIHRhYmxlICR7bDNmfSAke3RhYmxlfQ0KKyAgICAgICAgICAg IG5mdCBsaXN0IHRhYmxlICR7bDNmfSAke3RhYmxlfSB8IHdoaWxlIHJlYWQgbDsgZG8NCisgICAg ICAgICAgICAgICAgY2hhaW49JChlY2hvICRsIHwgZ3JlcCAtbyAnY2hhaW4gW15bOnNwYWNlOl1d XCsnIHxcDQorICAgICAgICAgICAgICAgICAgICAgICAgY3V0IC1kICcgJyAtZjIpDQorICAgICAg ICAgICAgICAgIGlmIFsgLW4gIiR7Y2hhaW59IiBdOyB0aGVuDQorICAgICAgICAgICAgICAgICAg ICBuZnQgZmx1c2ggY2hhaW4gJHtsM2Z9ICR7dGFibGV9ICR7Y2hhaW59DQorICAgICAgICAgICAg ICAgICAgICBuZnQgZGVsZXRlIGNoYWluICR7bDNmfSAke3RhYmxlfSAke2NoYWlufQ0KKyAgICAg ICAgICAgICAgICBmaQ0KKyAgICAgICAgICAgIGRvbmUNCisgICAgICAgICAgICBuZnQgZGVsZXRl IHRhYmxlICR7bDNmfSAke3RhYmxlfQ0KKyAgICAgICAgZG9uZQ0KKyAgICBkb25lDQorfQ0KKw0K K2FkZHBhbmljdGFibGUoKSB7DQorICAgIGxvY2FsIGwzZj0kMQ0KKyAgICBuZnQgYWRkIHRhYmxl ICR7bDNmfSBwYW5pYw0KKyAgICBuZnQgYWRkIGNoYWluICR7bDNmfSBwYW5pYyBpbnB1dCBceyB0 eXBlIGZpbHRlciBob29rIGlucHV0IHByaW9yaXR5IDBcOyBcfQ0KKyAgICBuZnQgYWRkIGNoYWlu ICR7bDNmfSBwYW5pYyBvdXRwdXQgXHsgdHlwZSBmaWx0ZXIgaG9vayBvdXRwdXQgcHJpb3JpdHkg MFw7IFx9DQorICAgIG5mdCBhZGQgY2hhaW4gJHtsM2Z9IHBhbmljIGZvcndhcmQgXHsgdHlwZSBm aWx0ZXIgaG9vayBmb3J3YXJkIHByaW9yaXR5IDBcOyBcfQ0KKyAgICBuZnQgYWRkIHJ1bGUgJHts M2Z9IHBhbmljIGlucHV0IGRyb3ANCisgICAgbmZ0IGFkZCBydWxlICR7bDNmfSBwYW5pYyBvdXRw dXQgZHJvcA0KKyAgICBuZnQgYWRkIHJ1bGUgJHtsM2Z9IHBhbmljIGZvcndhcmQgZHJvcA0KK30N CisNCitzdGFydF9wcmUoKSB7DQorICAgIGNoZWNra2VybmVsIHx8IHJldHVybiAxDQorICAgIGNo ZWNrY29uZmlnIHx8IHJldHVybiAxDQorCXJldHVybiAwDQorfQ0KKw0KK3N0YXJ0KCkgew0KKyAg ICBlYmVnaW4gIkxvYWRpbmcgbmZ0YWJsZXMgc3RhdGUgYW5kIHN0YXJ0aW5nIGZpcmV3YWxsIg0K KyAgICBjbGVhck5GVA0KKyAgICBuZnQgLWYgJHtORlRBQkxFU19TQVZFfQ0KKyAgICBlZW5kICQ/ DQorfQ0KKw0KK3N0b3AoKSB7DQorICAgIGlmIHllc25vICR7U0FWRV9PTl9TVE9QOi15ZXN9OyB0 aGVuDQorICAgICAgICBzYXZlIHx8IHJldHVybiAxDQorICAgIGZpDQorDQorICAgIGViZWdpbiAi U3RvcHBpbmcgZmlyZXdhbGwiDQorICAgIGNsZWFyTkZUDQorICAgIGVlbmQgJD8NCit9DQorDQor cmVsb2FkKCkgew0KKyAgICBjaGVja2tlcm5lbCB8fCByZXR1cm4gMQ0KKyAgICAjIGNoZWNrcnVs ZXMgfHwgcmV0dXJuIDENCisgICAgZWJlZ2luICJGbHVzaGluZyBmaXJld2FsbCINCisgICAgY2xl YXJORlQNCisNCisgICAgc3RhcnQNCit9DQorDQorY2xlYXIoKSB7DQorICAgIGNsZWFyTkZUDQor fQ0KKw0KK2xpc3QoKSB7DQorICAgIGxvY2FsIGwzZg0KKw0KKyAgICBmb3IgbDNmIGluICQoZ2V0 ZmFtaWxpZXMpOyBkbw0KKyAgICAgICAgbmZ0IGxpc3QgdGFibGVzICR7bDNmfSB8IHdoaWxlIHJl YWQgbGluZTsgZG8NCisgICAgICAgICAgICBsaW5lPSQoZWNobyAke2xpbmV9IHwgc2VkICJzL3Rh YmxlL3RhYmxlICR7bDNmfS8iKQ0KKyAgICAgICAgICAgIGVjaG8gIiQobmZ0IGxpc3QgJHtsaW5l fSkiDQorICAgICAgICBkb25lDQorICAgIGRvbmUNCit9DQorDQorc2F2ZSgpIHsNCisgICAgZWJl Z2luICJTYXZpbmcgbmZ0YWJsZXMgc3RhdGUiDQorICAgIGNoZWNrcGF0aCAtcSAtZCAiJChkaXJu YW1lICIke05GVEFCTEVTX1NBVkV9IikiDQorICAgIGNoZWNrcGF0aCAtcSAtbSAwNjAwIC1mICIk e05GVEFCTEVTX1NBVkV9Ig0KKw0KKyAgICBsb2NhbCBsM2YgbGluZSB0bXBfc2F2ZT0iJHtORlRB QkxFU19TQVZFfS50bXAiDQorDQorICAgIHRvdWNoICIke3RtcF9zYXZlfSINCisgICAgZm9yIGwz ZiBpbiAkKGdldGZhbWlsaWVzKTsgZG8NCisgICAgICAgIG5mdCBsaXN0IHRhYmxlcyAke2wzZn0g fCB3aGlsZSByZWFkIGxpbmU7IGRvDQorICAgICAgICAgICAgbGluZT0kKGVjaG8gJHtsaW5lfSB8 IHNlZCAicy90YWJsZS90YWJsZSAke2wzZn0vIikNCisgICAgICAgICAgICAjIFRoZSBiZWxvdyBz dWJzdGl0dXRpb24gZml4ZXMgYW4gaXNzdWUgd2hlcmUgbmZ0IC1uIG91dHB1dCBtYXkgbm90DQor ICAgICAgICAgICAgIyBhbHdheXMgYmUgcGFyc2FibGUgYnkgbmZ0IC1mLiAgRm9yIGV4YW1wbGUs IG5mdCAtbiBtaWdodCBwcmludA0KKyAgICAgICAgICAgICMNCisgICAgICAgICAgICAjICAgICBp cDYgc2FkZHIgOjoxIGlwNiBkYWRkciA6OjEgY291bnRlciBwYWNrZXRzIDAgYnl0ZXMgMCBhY2Nl cHQNCisgICAgICAgICAgICAjDQorICAgICAgICAgICAgIyBidXQgbmZ0IC1mIHJlZnVzZXMgdG8g cGFyc2UgdGhhdCBzdHJpbmcgd2l0aCBlcnJvcjoNCisgICAgICAgICAgICAjDQorICAgICAgICAg ICAgIyAgICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGludGVybmFsOjA6MC0wOg0KKyAgICAgICAg ICAgICMgICAgIC92YXIvbGliL25mdGFibGVzL3J1bGVzLXNhdmU6MToxLTI6IEVycm9yOiBDb3Vs ZCBub3QgcHJvY2VzcyBydWxlOg0KKyAgICAgICAgICAgICMgICAgIEludmFsaWQgYXJndW1lbnQN CisgICAgICAgICAgICAjICAgICB0YWJsZSBpcDYgZmlsdGVyIHsNCisgICAgICAgICAgICAjICAg ICBeXg0KKyAgICAgICAgICAgIGVjaG8gIiQobmZ0ICR7U0FWRV9PUFRJT05TfSBsaXN0ICR7bGlu ZX0gfFwNCisgICAgICAgICAgICAgICAgICAgIHNlZCAncy9cKDo6WzAtOWEtZkEtRl1cK1wpXChb Xi9dXCkvXDFcLzEyOFwyL2cnKSIgPj4gIiR7dG1wX3NhdmV9Ig0KKyAgICAgICAgZG9uZQ0KKyAg ICBkb25lDQorICAgIG12ICIke3RtcF9zYXZlfSIgIiR7TkZUQUJMRVNfU0FWRX0iDQorfQ0KKw0K K3BhbmljKCkgew0KKyAgICBjaGVja2tlcm5lbCB8fCByZXR1cm4gMQ0KKyAgICBpZiBzZXJ2aWNl X3N0YXJ0ZWQgJHtSQ19TVkNOQU1FfTsgdGhlbg0KKyAgICAgICAgcmMtc2VydmljZSAke1JDX1NW Q05BTUV9IHN0b3ANCisgICAgZmkNCisNCisgICAgZWJlZ2luICJEcm9wcGluZyBhbGwgcGFja2V0 cyINCisgICAgY2xlYXJORlQNCisNCisgICAgbG9jYWwgbDNmDQorICAgIGZvciBsM2YgaW4gJChn ZXRmYW1pbGllcyk7IGRvDQorICAgICAgICBjYXNlICR7bDNmfSBpbg0KKyAgICAgICAgICAgIGlw KSBhZGRwYW5pY3RhYmxlICR7bDNmfSA7Ow0KKyAgICAgICAgICAgIGlwNikgYWRkcGFuaWN0YWJs ZSAke2wzZn0gOzsNCisgICAgICAgIGVzYWMNCisgICAgZG9uZQ0KK30NCi0tIA0KMi41LjENCg0K DQoNCi0tLQ0KVW5zdWJzY3JpYmU6ICBhbHBpbmUtYXBvcnRzK3Vuc3Vic2NyaWJlQGxpc3RzLmFs cGluZWxpbnV4Lm9yZw0KSGVscDogICAgICAgICBhbHBpbmUtYXBvcnRzK2hlbHBAbGlzdHMuYWxw aW5lbGludXgub3JnDQotLS0NCg==