From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id E5A151FF15C for ; Fri, 14 Nov 2025 12:18:56 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 51FB2F80F; Fri, 14 Nov 2025 12:18:47 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Fri, 14 Nov 2025 12:17:08 +0100 Message-ID: <20251114111828.160294-11-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251114111828.160294-1-d.kral@proxmox.com> References: <20251114111828.160294-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763119087270 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.016 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH ha-manager v4 10/21] compile ha rules to a more compact representation X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" VGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgZmV0Y2hpbmcgYSBoYSByZXNvdXJjZSdzIHJ1 bGVzIGluIHRoZQpzY2hlZHVsZXIgYW5kIG90aGVyIHVzZXJzIGlzIHJhdGhlciBpbmVmZmljaWVu dCBhcyBpdCBuZWVkcyB0byBnbwp0aHJvdWdoIHRoZSByYXcgcnVsZXMgaGFzaCBtYXAgYW5kIGdh dGhlcnMgcXVpdGUgYSBsb3Qgb2YgaW5mb3JtYXRpb24Kd2hpY2ggZG9lc24ndCBjaGFuZ2UgdW5s ZXNzIHRoZSBIQSBydWxlcyBuZWVkIHRvIGJlIHJlLXRyYW5zbGF0ZWQKYW55d2F5LgoKVGhlcmVm b3JlIGFkZCBhIGNvbXBpbGUgc3RhZ2Ugd2hlbiByZS10cmFuc2xhdGluZyB0aGUgSEEgcnVsZXMs IHdoaWNoCmNvbXBpbGVzIGVhY2ggcnVsZSBwbHVnaW4ncyBydWxlcyBpbnRvIGEgbW9yZSBjb21w YWN0IGRhdGEgc3RydWN0dXJlLgpUaGlzIHJlZHVjZXMgdGhlIHVubmVjZXNzYXJ5IHJlY29tcHV0 YXRpb24gb2YgaW52YXJpYW50IGRhdGEgZG9uZSBpbiB0aGUKaG90IHBhdGggb2YgdGhlIHNjaGVk dWxlcidzIHNlbGVjdF9zZXJ2aWNlX25vZGUoLi4uKS4KCkEgYmVuY2htYXJrIGRvbmUgd2l0aCBO WVRQcm9mIFswXSBzaG93cyB0aGUgZm9sbG93aW5nIHJ1bnRpbWUKaW1wcm92ZW1lbnQsIHdoZXJl IGVhY2ggZHVyYXRpb24gaXMgdGhlIGF2ZXJhZ2UgdGltZSBuZWVkZWQgcGVyIGNhbGwuClRoZSBi ZW5jaG1hcmsgd2FzIGRvbmUgYnkgc3RhcnRpbmcgdXAgYSAzLW5vZGUgY2x1c3RlciB3aXRoIDEy MDAKY29uZmlndXJlZCBIQSByZXNvdXJjZXMsIHdoZXJlIGVhY2ggSEEgcmVzb3VyY2UgaXMgaW4g YSBub2RlIGFmZmluaXR5CnJ1bGUgYW5kIGEgbmVnYXRpdmUgcmVzb3VyY2UgYWZmaW5pdHkgdG8g dHdvIG90aGVyIEhBIHJlc291cmNlcy4KCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rCnwgRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg fCBCZWZvcmUgfCBBZnRlciB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0rCnwgc2VsZWN0X3NlcnZpY2Vfbm9kZSAgICAgICAgICAgICAgfCAxMC41 bXMgfCA0NMK1cyAgfAp8IGdldF9ub2RlX2FmZmluaXR5ICAgICAgICAgICAgICAgIHwgNS4yNm1z IHwgMTDCtXMgIHwKfCBnZXRfcmVzb3VyY2VfYWZmaW5pdHkgICAgICAgICAgICB8IDUuMTdtcyB8 IDEywrVzICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0rCgpbMF0gaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0RldmVsOjpOWVRQcm9mCgpTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgotLS0KY2hhbmdlcyBz aW5jZSB2MzoKIC0gZG8gbm90IGFkZCBSLWIgYW5kIFQtYiBmcm9tIE1pY2hhZWwgYmVjYXVzZS4u LgogLSBmaXggYXV0by12aXZpZmljYXRpb24gaW4gZ2V0X3Jlc291cmNlX2FmZmluaXR5KC4uLiks IG9yIG1vcmUgbGlrZQogICBwcm9wYWdhdGUgdGhhdCBmaXggZnJvbSB0aGUgZ3JhbnVsYXIgYWNj b3VudGluZyB2NCBzZXJpZXMKCiBzcmMvUFZFL0hBL0NvbmZpZy5wbSAgICAgICAgICAgICAgICAg fCAgIDkgKystCiBzcmMvUFZFL0hBL01hbmFnZXIucG0gICAgICAgICAgICAgICAgfCAgMzEgKysr Ky0tLS0KIHNyYy9QVkUvSEEvUnVsZXMucG0gICAgICAgICAgICAgICAgICB8ICA1OSArKysrKysr KysrKysrKysKIHNyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtICAgICB8ICA4MCArKysr KysrKysrLS0tLS0tLS0tLQogc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBtIHwg MTA3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEu cGwgICAgICAgICAgIHwgIDE1ICsrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMo KyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvUFZFL0hBL0NvbmZpZy5wbSBi L3NyYy9QVkUvSEEvQ29uZmlnLnBtCmluZGV4IGJkODdhMGFiLi41NDhhODllNiAxMDA2NDQKLS0t IGEvc3JjL1BWRS9IQS9Db25maWcucG0KKysrIGIvc3JjL1BWRS9IQS9Db25maWcucG0KQEAgLTIy NCw3ICsyMjQsNyBAQCBzdWIgcmVhZF9hbmRfY2hlY2tfcnVsZXNfY29uZmlnIHsKICAgICByZXR1 cm4gJHJ1bGVzOwogfQogCi1zdWIgcmVhZF9hbmRfY2hlY2tfZWZmZWN0aXZlX3J1bGVzX2NvbmZp ZyB7CitzdWIgcmVhZF9hbmRfY29tcGlsZV9ydWxlc19jb25maWcgewogCiAgICAgbXkgJHJ1bGVz ID0gcmVhZF9hbmRfY2hlY2tfcnVsZXNfY29uZmlnKCk7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCBz dWIgcmVhZF9hbmRfY2hlY2tfZWZmZWN0aXZlX3J1bGVzX2NvbmZpZyB7CiAKICAgICBQVkU6OkhB OjpSdWxlcy0+dHJhbnNmb3JtKCRydWxlcywgJG5vZGVzKTsKIAotICAgIHJldHVybiAkcnVsZXM7 CisgICAgcmV0dXJuIFBWRTo6SEE6OlJ1bGVzLT5jb21waWxlKCRydWxlcywgJG5vZGVzKTsKIH0K IAogc3ViIHdyaXRlX3J1bGVzX2NvbmZpZyB7CkBAIC0zOTEsOCArMzkxLDkgQEAgc3ViIGdldF9y ZXNvdXJjZV9tb3Rpb25faW5mbyB7CiAgICAgICAgIG15ICRzcyA9ICRtYW5hZ2VyX3N0YXR1cy0+ e3NlcnZpY2Vfc3RhdHVzfTsKICAgICAgICAgbXkgJG5zID0gJG1hbmFnZXJfc3RhdHVzLT57bm9k ZV9zdGF0dXN9OwogCi0gICAgICAgIG15ICRydWxlcyA9IHJlYWRfYW5kX2NoZWNrX2VmZmVjdGl2 ZV9ydWxlc19jb25maWcoKTsKLSAgICAgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdl dF9hZmZpbml0aXZlX3Jlc291cmNlcygkcnVsZXMsICRzaWQpOworICAgICAgICBteSAkY29tcGls ZWRfcnVsZXMgPSByZWFkX2FuZF9jb21waWxlX3J1bGVzX2NvbmZpZygpOworICAgICAgICBteSAk cmVzb3VyY2VfYWZmaW5pdHkgPSAkY29tcGlsZWRfcnVsZXMtPnsncmVzb3VyY2UtYWZmaW5pdHkn fTsKKyAgICAgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9hZmZpbml0aXZlX3Jl c291cmNlcygkcmVzb3VyY2VfYWZmaW5pdHksICRzaWQpOwogCiAgICAgICAgIGZvciBteSAkY3Np ZCAoc29ydCBrZXlzICUkdG9nZXRoZXIpIHsKICAgICAgICAgICAgIG5leHQgaWYgIWRlZmluZWQo JHNzLT57JGNzaWR9KTsKZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvTWFuYWdlci5wbSBiL3NyYy9Q VkUvSEEvTWFuYWdlci5wbQppbmRleCBhMjZiZGU3Ni4uZTE3ZTMyMDkgMTAwNjQ0Ci0tLSBhL3Ny Yy9QVkUvSEEvTWFuYWdlci5wbQorKysgYi9zcmMvUFZFL0hBL01hbmFnZXIucG0KQEAgLTEyNiwx MiArMTI2LDEyIEBAIHN1YiBmbHVzaF9tYXN0ZXJfc3RhdHVzIHsKIAogPWhlYWQzIHNlbGVjdF9z ZXJ2aWNlX25vZGUoLi4uKQogCi09aGVhZDMgc2VsZWN0X3NlcnZpY2Vfbm9kZSgkcnVsZXMsICRv bmxpbmVfbm9kZV91c2FnZSwgJHNpZCwgJHNlcnZpY2VfY29uZiwgJHNzLCAkbm9kZV9wcmVmZXJl bmNlKQorPWhlYWQzIHNlbGVjdF9zZXJ2aWNlX25vZGUoJGNvbXBpbGVkX3J1bGVzLCAkb25saW5l X25vZGVfdXNhZ2UsICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVfcHJlZmVyZW5jZSkK IAogVXNlZCB0byBzZWxlY3QgdGhlIGJlc3QgZml0dGluZyBub2RlIGZvciB0aGUgc2VydmljZSBD PCRzaWQ+LCB3aXRoIHRoZQotY29uZmlndXJhdGlvbiBDPCRzZXJ2aWNlX2NvbmY+LCBhY2NvcmRp bmcgdG8gdGhlIHJ1bGVzIGRlZmluZWQgaW4gQzwkcnVsZXM+LAotYXZhaWxhYmxlIG5vZGUgdXRp bGl6YXRpb24gaW4gQzwkb25saW5lX25vZGVfdXNhZ2U+LCB0aGUgc2VydmljZSBzdGF0ZXMgaW4K LUM8JHNzPiBhbmQgdGhlIGdpdmVuIEM8JG5vZGVfcHJlZmVyZW5jZT4uCitjb25maWd1cmF0aW9u IEM8JHNlcnZpY2VfY29uZj4sIGFjY29yZGluZyB0byB0aGUgcnVsZXMgZGVmaW5lZCBpbgorQzwk Y29tcGlsZWRfcnVsZXM+LCBhdmFpbGFibGUgbm9kZSB1dGlsaXphdGlvbiBpbiBDPCRvbmxpbmVf bm9kZV91c2FnZT4sIHRoZQorc2VydmljZSBzdGF0ZXMgaW4gQzwkc3M+IGFuZCB0aGUgZ2l2ZW4g Qzwkbm9kZV9wcmVmZXJlbmNlPi4KIAogVGhlIEM8JG5vZGVfcHJlZmVyZW5jZT4gY2FuIGJlIHNl dCB0bzoKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRoZSBDPCRub2RlX3ByZWZlcmVuY2U+IGNhbiBi ZSBzZXQgdG86CiA9Y3V0CiAKIHN1YiBzZWxlY3Rfc2VydmljZV9ub2RlIHsKLSAgICBteSAoJHJ1 bGVzLCAkb25saW5lX25vZGVfdXNhZ2UsICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVf cHJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbXBpbGVkX3J1bGVzLCAkb25saW5lX25vZGVf dXNhZ2UsICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVfcHJlZmVyZW5jZSkgPSBAXzsK IAogICAgIGRpZSAiJyRub2RlX3ByZWZlcmVuY2UnIGlzIG5vdCBhIHZhbGlkIG5vZGVfcHJlZmVy ZW5jZSBmb3Igc2VsZWN0X3NlcnZpY2Vfbm9kZVxuIgogICAgICAgICBpZiAkbm9kZV9wcmVmZXJl bmNlICF+IG0vKG5vbmV8YmVzdC1zY29yZXx0cnktbmV4dCkvOwpAQCAtMTU2LDEzICsxNTYsMTUg QEAgc3ViIHNlbGVjdF9zZXJ2aWNlX25vZGUgewogICAgIG15ICRzZCA9ICRzcy0+eyRzaWR9Owog ICAgIG15ICgkY3VycmVudF9ub2RlLCAkdHJpZWRfbm9kZXMsICRtYWludGVuYW5jZV9mYWxsYmFj aykgPQogICAgICAgICAkc2QtPkB7cXcobm9kZSBmYWlsZWRfbm9kZXMgbWFpbnRlbmFuY2Vfbm9k ZSl9OworICAgIG15ICgkbm9kZV9hZmZpbml0eSwgJHJlc291cmNlX2FmZmluaXR5KSA9CisgICAg ICAgICRjb21waWxlZF9ydWxlcy0+QHtxdyhub2RlLWFmZmluaXR5IHJlc291cmNlLWFmZmluaXR5 KX07CiAKICAgICBteSAkb25saW5lX25vZGVzID0geyBtYXAgeyAkXyA9PiAxIH0gJG9ubGluZV9u b2RlX3VzYWdlLT5saXN0X25vZGVzKCkgfTsKLSAgICBteSAoJGFsbG93ZWRfbm9kZXMsICRwcmlf bm9kZXMpID0gZ2V0X25vZGVfYWZmaW5pdHkoJHJ1bGVzLCAkc2lkLCAkb25saW5lX25vZGVzKTsK KyAgICBteSAoJGFsbG93ZWRfbm9kZXMsICRwcmlfbm9kZXMpID0gZ2V0X25vZGVfYWZmaW5pdHko JG5vZGVfYWZmaW5pdHksICRzaWQsICRvbmxpbmVfbm9kZXMpOwogCiAgICAgcmV0dXJuIHVuZGVm IGlmICElJHByaV9ub2RlczsKIAotICAgIG15ICgkdG9nZXRoZXIsICRzZXBhcmF0ZSkgPSBnZXRf cmVzb3VyY2VfYWZmaW5pdHkoJHJ1bGVzLCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpOworICAg IG15ICgkdG9nZXRoZXIsICRzZXBhcmF0ZSkgPSBnZXRfcmVzb3VyY2VfYWZmaW5pdHkoJHJlc291 cmNlX2FmZmluaXR5LCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpOwogCiAgICAgIyBzdGF5IG9u IGN1cnJlbnQgbm9kZSBpZiBwb3NzaWJsZSAoYXZvaWRzIHJhbmRvbSBtaWdyYXRpb25zKQogICAg IGlmICgKQEAgLTM4OSw3ICszOTEsOCBAQCBzdWIgZXhlY3V0ZV9taWdyYXRpb24gewogCiAgICAg bXkgKCRoYWVudiwgJHNzKSA9ICRzZWxmLT5Ae3F3KGhhZW52IHNzKX07CiAKLSAgICBteSAoJHRv Z2V0aGVyLCAkc2VwYXJhdGUpID0gZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzKCRzZWxmLT57cnVs ZXN9LCAkc2lkKTsKKyAgICBteSAkcmVzb3VyY2VfYWZmaW5pdHkgPSAkc2VsZi0+e2NvbXBpbGVk X3J1bGVzfS0+eydyZXNvdXJjZS1hZmZpbml0eSd9OworICAgIG15ICgkdG9nZXRoZXIsICRzZXBh cmF0ZSkgPSBnZXRfYWZmaW5pdGl2ZV9yZXNvdXJjZXMoJHJlc291cmNlX2FmZmluaXR5LCAkc2lk KTsKIAogICAgIGZvciBteSAkY3NpZCAoc29ydCBrZXlzICUkc2VwYXJhdGUpIHsKICAgICAgICAg bmV4dCBpZiAhZGVmaW5lZCgkc3MtPnskY3NpZH0pOwpAQCAtNzE5LDcgKzcyMiw3IEBAIHN1YiBt YW5hZ2UgewogICAgIFBWRTo6SEE6Okdyb3Vwczo6bWlncmF0ZV9ncm91cHNfdG9fcmVzb3VyY2Vz KCRzZWxmLT57Z3JvdXBzfSwgJHNjKTsKIAogICAgIGlmICgKLSAgICAgICAgISRzZWxmLT57cnVs ZXN9CisgICAgICAgICEkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfQogICAgICAgICB8fCAkaGFzX2No YW5nZWRfbm9kZWxpc3QKICAgICAgICAgfHwgJG5ld19ydWxlcy0+e2RpZ2VzdH0gbmUgJHNlbGYt PntsYXN0X3J1bGVzX2RpZ2VzdH0KICAgICAgICAgfHwgJHNlbGYtPntncm91cHN9LT57ZGlnZXN0 fSBuZSAkc2VsZi0+e2xhc3RfZ3JvdXBzX2RpZ2VzdH0KQEAgLTczMSw5ICs3MzQsOSBAQCBzdWIg bWFuYWdlIHsKICAgICAgICAgbXkgJG1lc3NhZ2VzID0gUFZFOjpIQTo6UnVsZXMtPnRyYW5zZm9y bSgkbmV3X3J1bGVzLCAkbm9kZXMpOwogICAgICAgICAkaGFlbnYtPmxvZygnaW5mbycsICRfKSBm b3IgQCRtZXNzYWdlczsKIAotICAgICAgICAkc2VsZi0+e3J1bGVzfSA9ICRuZXdfcnVsZXM7Cisg ICAgICAgICRzZWxmLT57Y29tcGlsZWRfcnVsZXN9ID0gUFZFOjpIQTo6UnVsZXMtPmNvbXBpbGUo JG5ld19ydWxlcywgJG5vZGVzKTsKIAotICAgICAgICAkc2VsZi0+e2xhc3RfcnVsZXNfZGlnZXN0 fSA9ICRzZWxmLT57cnVsZXN9LT57ZGlnZXN0fTsKKyAgICAgICAgJHNlbGYtPntsYXN0X3J1bGVz X2RpZ2VzdH0gPSAkbmV3X3J1bGVzLT57ZGlnZXN0fTsKICAgICAgICAgJHNlbGYtPntsYXN0X2dy b3Vwc19kaWdlc3R9ID0gJHNlbGYtPntncm91cHN9LT57ZGlnZXN0fTsKICAgICAgICAgJHNlbGYt PntsYXN0X3NlcnZpY2VzX2RpZ2VzdH0gPSAkc2VydmljZXNfZGlnZXN0OwogICAgIH0KQEAgLTk5 MSw3ICs5OTQsNyBAQCBzdWIgbmV4dF9zdGF0ZV9yZXF1ZXN0X3N0YXJ0IHsKIAogICAgIGlmICgk c2VsZi0+e2Nyc30tPntyZWJhbGFuY2Vfb25fcmVxdWVzdF9zdGFydH0pIHsKICAgICAgICAgbXkg JHNlbGVjdGVkX25vZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAotICAgICAgICAgICAgJHNlbGYt PntydWxlc30sCisgICAgICAgICAgICAkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfSwKICAgICAgICAg ICAgICRzZWxmLT57b25saW5lX25vZGVfdXNhZ2V9LAogICAgICAgICAgICAgJHNpZCwKICAgICAg ICAgICAgICRjZCwKQEAgLTExNTgsNyArMTE2MSw3IEBAIHN1YiBuZXh0X3N0YXRlX3N0YXJ0ZWQg ewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBteSAkbm9kZSA9IHNlbGVjdF9zZXJ2aWNl X25vZGUoCi0gICAgICAgICAgICAgICAgJHNlbGYtPntydWxlc30sCisgICAgICAgICAgICAgICAg JHNlbGYtPntjb21waWxlZF9ydWxlc30sCiAgICAgICAgICAgICAgICAgJHNlbGYtPntvbmxpbmVf bm9kZV91c2FnZX0sCiAgICAgICAgICAgICAgICAgJHNpZCwKICAgICAgICAgICAgICAgICAkY2Qs CkBAIC0xMjcyLDcgKzEyNzUsNyBAQCBzdWIgbmV4dF9zdGF0ZV9yZWNvdmVyeSB7CiAgICAgbXkg JGZlbmNlZF9ub2RlID0gJHNkLT57bm9kZX07ICMgZm9yIGxvZ2dpbmcgcHVycG9zZQogCiAgICAg bXkgJHJlY292ZXJ5X25vZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAotICAgICAgICAkc2VsZi0+ e3J1bGVzfSwKKyAgICAgICAgJHNlbGYtPntjb21waWxlZF9ydWxlc30sCiAgICAgICAgICRzZWxm LT57b25saW5lX25vZGVfdXNhZ2V9LAogICAgICAgICAkc2lkLAogICAgICAgICAkY2QsCmRpZmYg LS1naXQgYS9zcmMvUFZFL0hBL1J1bGVzLnBtIGIvc3JjL1BWRS9IQS9SdWxlcy5wbQppbmRleCBh MDc1ZmVhYy4uNjljNTMzNTYgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMucG0KKysrIGIv c3JjL1BWRS9IQS9SdWxlcy5wbQpAQCAtNDcsNiArNDcsMTIgQEAgRWFjaCBJPHJ1bGUgcGx1Z2lu PiBpcyByZXF1aXJlZCB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZHMgQzxMPHR5cGUoKT4+LAogQzxM PHByb3BlcnRpZXMoKT4+LCBhbmQgQzxMPG9wdGlvbnM+PiBmcm9tIHRoZSBDPEw8UFZFOjpTZWN0 aW9uQ29uZmlnPj4gdG8KIGV4dGVuZCB0aGUgcHJvcGVydGllcyBvZiB0aGlzIEk8YmFzZSBwbHVn aW4+IHdpdGggcGx1Z2luLXNwZWNpZmljIHByb3BlcnRpZXMuCiAKK0VhY2ggSTxydWxlIHBsdWdp bj4gaXMgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QKK0M8TDw8IHBsdWdpbl9jb21w aWxlKCl8LyRjbGFzcy0+cGx1Z2luX2NvbXBpbGUoLi4uKSA+Pj4gdG8gZGlzdGlsbCBhIGNvbXBp bGVkCityZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9yZSB2ZXJib3NlIEM8JHJ1bGVzPiBmcm9tIHRo ZSBjb25maWcgZmlsZSwgd2hpY2ggaXMKK3JldHVybmVkIGJ5IEM8TDw8IGNvbXBpbGUoKXwvJGNs YXNzLT5jb21waWxlKC4uLikgPj4+IHRvIGJlIG1vcmUgYXBwcm9wcmlhdGUKK2FuZCBlZmZpY2ll bnQgZm9yIHRoZSBzY2hlZHVsZXIgYW5kIG90aGVyIHVzZXJzLgorCiA9aGVhZDIgUkVHSVNURVJJ TkcgQ0hFQ0tTCiAKIEluIG9yZGVyIHRvIEM8TDw8IHJlZ2lzdGVyIGNoZWNrc3wvJGNsYXNzLT5y ZWdpc3Rlcl9jaGVjayguLi4pID4+PiBmb3IgYSBydWxlCkBAIC00NTMsNiArNDU5LDU5IEBAIHN1 YiB0cmFuc2Zvcm0gOiBwcm90b3R5cGUoJCQkKSB7CiAgICAgcmV0dXJuICRtZXNzYWdlczsKIH0K IAorPWhlYWQzICRjbGFzcy0+cGx1Z2luX2NvbXBpbGUoLi4uKQorCis9aGVhZDMgJGNsYXNzLT5w bHVnaW5fY29tcGlsZSgkcnVsZXMsICRub2RlcykKKworQjxNQU5EQVRPUlk6PiBNdXN0IGJlIGlt cGxlbWVudGVkIGluIGEgSTxydWxlIHBsdWdpbj4uCisKK0NhbGxlZCBpbiBDPCRjbGFzcy0+Y29t cGlsZSgkcnVsZXMsICRub2Rlcyk+IGluIG9yZGVyIHRvIGdldCBhIG1vcmUgY29tcGFjdAorcmVw cmVzZW50YXRpb24gb2YgdGhlIHJ1bGUgcGx1Z2luJ3MgcnVsZXMgaW4gQzwkcnVsZXM+LCB3aGlj aCBob2xkcyBvbmx5IHRoZQorcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHRoZSBzY2hlZHVsZXIg YW5kIG90aGVyIHVzZXJzLgorCitDPCRub2Rlcz4gaXMgYSBsaXN0IG9mIHRoZSBjb25maWd1cmVk IGNsdXN0ZXIgbm9kZXMuCisKKz1jdXQKKworc3ViIHBsdWdpbl9jb21waWxlIHsKKyAgICBteSAo JGNsYXNzLCAkcnVsZXMsICRub2RlcykgPSBAXzsKKworICAgIGRpZSAiaW1wbGVtZW50IGluIHN1 YmNsYXNzIjsKK30KKworPWhlYWQzICRjbGFzcy0+Y29tcGlsZSguLi4pCisKKz1oZWFkMyAkY2xh c3MtPmNvbXBpbGUoJHJ1bGVzLCAkbm9kZXMpCisKK0NvbXBpbGVzIGFuZCByZXR1cm5zIGEgaGFz aCwgd2hlcmUgZWFjaCBrZXktdmFsdWUgcGFpciByZXByZXNlbnRzIGEgcnVsZQorcGx1Z2luJ3Mg bW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uIGNvbXBpbGVkIGZyb20gdGhlIG1vcmUgdmVyYm9z ZSBydWxlcworZGVmaW5lZCBpbiBDPCRydWxlcz4uCisKK0M8JG5vZGVzPiBpcyBhIGxpc3Qgb2Yg dGhlIGNvbmZpZ3VyZWQgY2x1c3RlciBub2Rlcy4KKworVGhlIHRyYW5zZm9ybWF0aW9uIHRvIHRo ZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uIGZvciBlYWNoIHJ1bGUgcGx1Z2luIGlzCitpbXBsZW1l bnRlZCBpbiBDPEw8PCBwbHVnaW5fY29tcGlsZSgpfC8kY2xhc3MtPnBsdWdpbl9jb21waWxlKC4u LikgPj4+LgorCis9Y3V0CisKK3N1YiBjb21waWxlIHsKKyAgICBteSAoJGNsYXNzLCAkcnVsZXMs ICRub2RlcykgPSBAXzsKKworICAgIG15ICRjb21waWxlZF9ydWxlcyA9IHt9OworCisgICAgZm9y IG15ICR0eXBlIChAJHR5cGVzKSB7CisgICAgICAgIG15ICRwbHVnaW4gPSAkY2xhc3MtPmxvb2t1 cCgkdHlwZSk7CisgICAgICAgIG15ICRjb21waWxlZF9wbHVnaW5fcnVsZXMgPSAkcGx1Z2luLT5w bHVnaW5fY29tcGlsZSgkcnVsZXMsICRub2Rlcyk7CisKKyAgICAgICAgZGllICJwbHVnaW5fY29t cGlsZSguLi4pIG9mIHR5cGUgJyR0eXBlJyBtdXN0IHJldHVybiBoYXNoIHJlZmVyZW5jZVxuIgor ICAgICAgICAgICAgaWYgcmVmKCRjb21waWxlZF9wbHVnaW5fcnVsZXMpIG5lICdIQVNIJzsKKwor ICAgICAgICAkY29tcGlsZWRfcnVsZXMtPnskdHlwZX0gPSAkY29tcGlsZWRfcGx1Z2luX3J1bGVz OworICAgIH0KKworICAgIHJldHVybiAkY29tcGlsZWRfcnVsZXM7Cit9CisKID1oZWFkMSBGVU5D VElPTlMKIAogPWN1dApkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9SdWxlcy9Ob2RlQWZmaW5pdHku cG0gYi9zcmMvUFZFL0hBL1J1bGVzL05vZGVBZmZpbml0eS5wbQppbmRleCAxMTFmZjZmZS4uYWRl Zjk3ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtCisrKyBi L3NyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtCkBAIC0xNTUsNiArMTU1LDQwIEBAIHN1 YiBnZXRfcGx1Z2luX2NoZWNrX2FyZ3VtZW50cyB7CiAgICAgcmV0dXJuICRyZXN1bHQ7CiB9CiAK K3N1YiBwbHVnaW5fY29tcGlsZSB7CisgICAgbXkgKCRjbGFzcywgJHJ1bGVzLCAkbm9kZXMpID0g QF87CisKKyAgICBteSAkbm9kZV9hZmZpbml0eSA9IHt9OworCisgICAgUFZFOjpIQTo6UnVsZXM6 OmZvcmVhY2hfcnVsZSgKKyAgICAgICAgJHJ1bGVzLAorICAgICAgICBzdWIgeworICAgICAgICAg ICAgbXkgKCRydWxlKSA9IEBfOworCisgICAgICAgICAgICBteSAkZWZmZWN0aXZlX25vZGVzID0g ZGNsb25lKCRydWxlLT57bm9kZXN9KTsKKworICAgICAgICAgICAgIyBhZGQgcmVtYWluaW5nIG5v ZGVzIHdpdGggbG93IHByaW9yaXR5IGZvciBub24tc3RyaWN0IG5vZGUgYWZmaW5pdHkKKyAgICAg ICAgICAgIGlmICghJHJ1bGUtPntzdHJpY3R9KSB7CisgICAgICAgICAgICAgICAgZm9yIG15ICRu b2RlIChAJG5vZGVzKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkZWZm ZWN0aXZlX25vZGVzLT57JG5vZGV9KTsKKworICAgICAgICAgICAgICAgICAgICAkZWZmZWN0aXZl X25vZGVzLT57JG5vZGV9ID0geyBwcmlvcml0eSA9PiAtMSB9OworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIG15ICRzaWQgKGtleXMgJHJ1bGUtPnty ZXNvdXJjZXN9LT4lKikgeworICAgICAgICAgICAgICAgICRub2RlX2FmZmluaXR5LT57JHNpZH0g PSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGVzID0+ICRlZmZlY3RpdmVfbm9kZXMsCisgICAg ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgdHlwZSA9 PiAnbm9kZS1hZmZpbml0eScsCisgICAgICAgIGV4Y2x1ZGVfZGlzYWJsZWRfcnVsZXMgPT4gMSwK KyAgICApOworCisgICAgcmV0dXJuICRub2RlX2FmZmluaXR5OworfQorCiA9aGVhZDEgTk9ERSBB RkZJTklUWSBSVUxFIENIRUNLRVJTCiAKID1jdXQKQEAgLTIxNywzMCArMjUxLDEwIEBAIF9fUEFD S0FHRV9fLT5yZWdpc3Rlcl9jaGVjaygKIAogPWN1dAogCi1teSAkZ2V0X3Jlc291cmNlX25vZGVf YWZmaW5pdHlfcnVsZSA9IHN1YiB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCkgPSBAXzsKLQotICAg ICMgd2l0aCB0aGUgY3VycmVudCByZXN0cmljdGlvbiBhIHJlc291cmNlIGNhbiBvbmx5IGJlIGlu IG9uZSBub2RlIGFmZmluaXR5IHJ1bGUKLSAgICBteSAkbm9kZV9hZmZpbml0eV9ydWxlOwotICAg IFBWRTo6SEE6OlJ1bGVzOjpmb3JlYWNoX3J1bGUoCi0gICAgICAgICRydWxlcywKLSAgICAgICAg c3ViIHsKLSAgICAgICAgICAgIG15ICgkcnVsZSkgPSBAXzsKLQotICAgICAgICAgICAgJG5vZGVf YWZmaW5pdHlfcnVsZSA9IGRjbG9uZSgkcnVsZSkgaWYgISRub2RlX2FmZmluaXR5X3J1bGU7Ci0g ICAgICAgIH0sCi0gICAgICAgIHNpZCA9PiAkc2lkLAotICAgICAgICB0eXBlID0+ICdub2RlLWFm ZmluaXR5JywKLSAgICAgICAgZXhjbHVkZV9kaXNhYmxlZF9ydWxlcyA9PiAxLAotICAgICk7Ci0K LSAgICByZXR1cm4gJG5vZGVfYWZmaW5pdHlfcnVsZTsKLX07Ci0KLT1oZWFkMyBnZXRfbm9kZV9h ZmZpbml0eSgkcnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZXMpCis9aGVhZDMgZ2V0X25vZGVfYWZm aW5pdHkoJG5vZGVfYWZmaW5pdHksICRzaWQsICRvbmxpbmVfbm9kZXMpCiAKIFJldHVybnMgYSBs aXN0IG9mIHR3byBoYXNoZXMgcmVwcmVzZW50aW5nIHRoZSBub2RlIGFmZmluaXR5IG9mIEM8JHNp ZD4KLWFjY29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBydWxlcyBpbiBDPCRydWxlcz4gYW5k IHRoZSBhdmFpbGFibGUgbm9kZXMgaW4KK2FjY29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBD PCRub2RlX2FmZmluaXR5PiBhbmQgdGhlIGF2YWlsYWJsZSBub2RlcyBpbgogdGhlIEM8JG9ubGlu ZV9ub2Rlcz4gaGFzaC4KIAogVGhlIGZpcnN0IGhhc2ggaXMgYSBoYXNoIHNldCBvZiBhdmFpbGFi bGUgbm9kZXMsIGkuZS4gbm9kZXMgd2hlcmUgdGhlCkBAIC0yNTIsMzAgKzI2NiwxNCBAQCBJZiB0 aGVyZSBhcmUgbm8gYXZhaWxhYmxlIG5vZGVzIGF0IGFsbCwgcmV0dXJucyBDPHVuZGVmPi4KID1j dXQKIAogc3ViIGdldF9ub2RlX2FmZmluaXR5IDogcHJvdG90eXBlKCQkJCkgewotICAgIG15ICgk cnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZXMpID0gQF87CisgICAgbXkgKCRub2RlX2FmZmluaXR5 LCAkc2lkLCAkb25saW5lX25vZGVzKSA9IEBfOwogCi0gICAgbXkgJG5vZGVfYWZmaW5pdHlfcnVs ZSA9ICRnZXRfcmVzb3VyY2Vfbm9kZV9hZmZpbml0eV9ydWxlLT4oJHJ1bGVzLCAkc2lkKTsKLQot ICAgICMgZGVmYXVsdCB0byBhIG5vZGUgYWZmaW5pdHkgcnVsZSB3aXRoIGFsbCBhdmFpbGFibGUg bm9kZXMKLSAgICBpZiAoISRub2RlX2FmZmluaXR5X3J1bGUpIHsKLSAgICAgICAgZm9yIG15ICRu b2RlIChrZXlzICUkb25saW5lX25vZGVzKSB7Ci0gICAgICAgICAgICAkbm9kZV9hZmZpbml0eV9y dWxlLT57bm9kZXN9LT57JG5vZGV9ID0geyBwcmlvcml0eSA9PiAwIH07Ci0gICAgICAgIH0KLSAg ICB9Ci0KLSAgICAjIGFkZCByZW1haW5pbmcgbm9kZXMgd2l0aCBsb3cgcHJpb3JpdHkgZm9yIG5v bi1zdHJpY3Qgbm9kZSBhZmZpbml0eSBydWxlcwotICAgIGlmICghJG5vZGVfYWZmaW5pdHlfcnVs ZS0+e3N0cmljdH0pIHsKLSAgICAgICAgZm9yIG15ICRub2RlIChrZXlzICUkb25saW5lX25vZGVz KSB7Ci0gICAgICAgICAgICBuZXh0IGlmIGRlZmluZWQoJG5vZGVfYWZmaW5pdHlfcnVsZS0+e25v ZGVzfS0+eyRub2RlfSk7Ci0KLSAgICAgICAgICAgICRub2RlX2FmZmluaXR5X3J1bGUtPntub2Rl c30tPnskbm9kZX0gPSB7IHByaW9yaXR5ID0+IC0xIH07Ci0gICAgICAgIH0KLSAgICB9CisgICAg cmV0dXJuICgkb25saW5lX25vZGVzLCAkb25saW5lX25vZGVzKSBpZiAhZGVmaW5lZCgkbm9kZV9h ZmZpbml0eS0+eyRzaWR9KTsKIAogICAgIG15ICRhbGxvd2VkX25vZGVzID0ge307CiAgICAgbXkg JHByaW9yaXRpemVkX25vZGVzID0ge307CiAKLSAgICB3aGlsZSAobXkgKCRub2RlLCAkcHJvcHMp ID0gZWFjaCAleyAkbm9kZV9hZmZpbml0eV9ydWxlLT57bm9kZXN9IH0pIHsKKyAgICB3aGlsZSAo bXkgKCRub2RlLCAkcHJvcHMpID0gZWFjaCAkbm9kZV9hZmZpbml0eS0+eyRzaWR9LT57bm9kZXN9 LT4lKikgewogICAgICAgICBuZXh0IGlmICFkZWZpbmVkKCRvbmxpbmVfbm9kZXMtPnskbm9kZX0p OyAjIG5vZGUgaXMgb2ZmbGluZQogCiAgICAgICAgICRhbGxvd2VkX25vZGVzLT57JG5vZGV9ID0g MTsKZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbSBiL3Ny Yy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQppbmRleCA0ZWY0OWYyYy4uOTFiZTIx Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQorKysg Yi9zcmMvUFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0KQEAgLTEwMSw2ICsxMDEsMzUg QEAgc3ViIGdldF9wbHVnaW5fY2hlY2tfYXJndW1lbnRzIHsKICAgICByZXR1cm4gJHJlc3VsdDsK IH0KIAorc3ViIHBsdWdpbl9jb21waWxlIHsKKyAgICBteSAoJGNsYXNzLCAkcnVsZXMsICRub2Rl cykgPSBAXzsKKworICAgIG15ICRwb3NpdGl2ZSA9IHt9OworICAgIG15ICRuZWdhdGl2ZSA9IHt9 OworCisgICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVhY2hfcnVsZSgKKyAgICAgICAgJHJ1bGVzLAor ICAgICAgICBzdWIgeworICAgICAgICAgICAgbXkgKCRydWxlLCAkcnVsZWlkKSA9IEBfOworCisg ICAgICAgICAgICBteSAkYWZmaW5pdHlfc2V0ID0gJHJ1bGUtPnthZmZpbml0eX0gZXEgJ3Bvc2l0 aXZlJyA/ICRwb3NpdGl2ZSA6ICRuZWdhdGl2ZTsKKworICAgICAgICAgICAgZm9yIG15ICRzaWQg KGtleXMgJHJ1bGUtPntyZXNvdXJjZXN9LT4lKikgeworICAgICAgICAgICAgICAgIGZvciBteSAk Y3NpZCAoa2V5cyAkcnVsZS0+e3Jlc291cmNlc30tPiUqKSB7CisgICAgICAgICAgICAgICAgICAg ICRhZmZpbml0eV9zZXQtPnskc2lkfS0+eyRjc2lkfSA9IDEgaWYgJGNzaWQgbmUgJHNpZDsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHR5cGUg PT4gJ3Jlc291cmNlLWFmZmluaXR5JywKKyAgICAgICAgZXhjbHVkZV9kaXNhYmxlZF9ydWxlcyA9 PiAxLAorICAgICk7CisKKyAgICByZXR1cm4geworICAgICAgICBwb3NpdGl2ZSA9PiAkcG9zaXRp dmUsCisgICAgICAgIG5lZ2F0aXZlID0+ICRuZWdhdGl2ZSwKKyAgICB9OworfQorCiA9aGVhZDEg UkVTT1VSQ0UgQUZGSU5JVFkgUlVMRSBDSEVDS0VSUwogCiA9Y3V0CkBAIC00MDQsMTIgKzQzMywx MiBAQCBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfdHJhbnNmb3JtKHN1YiB7CiAKID1jdXQKIAotPWhl YWQzIGdldF9hZmZpbml0aXZlX3Jlc291cmNlcygkcnVsZXMsICRzaWQpCis9aGVhZDMgZ2V0X2Fm ZmluaXRpdmVfcmVzb3VyY2VzKCRyZXNvdXJjZV9hZmZpbml0eSwgJHNpZCkKIAogUmV0dXJucyBh IGxpc3Qgb2YgdHdvIGhhc2ggc2V0cywgd2hlcmUgdGhlIGZpcnN0IGhhc2ggc2V0IGNvbnRhaW5z IHRoZQogcmVzb3VyY2VzLCB3aGljaCBDPCRzaWQ+IGlzIHBvc2l0aXZlbHkgYWZmaW5pdGl2ZSB0 bywgYW5kIHRoZSBzZWNvbmQgaGFzaAogY29udGFpbnMgdGhlIHJlc291cmNlcywgd2hpY2ggQzwk c2lkPiBpcyBuZWdhdGl2ZWx5IGFmZmluaXRpdmUgdG8sIGFjb3JkaW5nIHRvCi10aGUgcmVzb3Vy Y2UgYWZmaW5pdHkgcnVsZXMgaW4gQzwkcnVsZXM+LgordGhlIHJlc291cmNlJ3MgcmVzb3VyY2Ug YWZmaW5pdHkgaW4gQzwkcmVzb3VyY2VfYWZmaW5pdHk+LgogCiBOb3RlIHRoYXQgYSByZXNvdXJj ZSBDPCRzaWQ+IGJlY29tZXMgcGFydCBvZiBhbnkgbmVnYXRpdmUgYWZmaW5pdHkgcmVsYXRpb24K IG9mIGl0cyBwb3NpdGl2ZWx5IGFmZmluaXRpdmUgcmVzb3VyY2VzLgpAQCAtNDMwLDM2ICs0NTks MjAgQEAgYWZmaW5pdGl2ZSB0byBDPCdjdDoyMDAnPiBhbmQgQzwnY3Q6MjAxJz4sIHRoZSByZXR1 cm5lZCB2YWx1ZSB3aWxsIGJlOgogPWN1dAogCiBzdWIgZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2Vz IDogcHJvdG90eXBlKCQkKSB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCkgPSBAXzsKKyAgICBteSAo JHJlc291cmNlX2FmZmluaXR5LCAkc2lkKSA9IEBfOwogCi0gICAgbXkgJHRvZ2V0aGVyID0ge307 Ci0gICAgbXkgJHNlcGFyYXRlID0ge307Ci0KLSAgICBQVkU6OkhBOjpSdWxlczo6Zm9yZWFjaF9y dWxlKAotICAgICAgICAkcnVsZXMsCi0gICAgICAgIHN1YiB7Ci0gICAgICAgICAgICBteSAoJHJ1 bGUsICRydWxlaWQpID0gQF87Ci0KLSAgICAgICAgICAgIG15ICRhZmZpbml0eV9zZXQgPSAkcnVs ZS0+e2FmZmluaXR5fSBlcSAncG9zaXRpdmUnID8gJHRvZ2V0aGVyIDogJHNlcGFyYXRlOwotCi0g ICAgICAgICAgICBmb3IgbXkgJGNzaWQgKHNvcnQga2V5cyAleyAkcnVsZS0+e3Jlc291cmNlc30g fSkgewotICAgICAgICAgICAgICAgICRhZmZpbml0eV9zZXQtPnskY3NpZH0gPSAxIGlmICRjc2lk IG5lICRzaWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHNpZCA9PiAkc2lk LAotICAgICAgICB0eXBlID0+ICdyZXNvdXJjZS1hZmZpbml0eScsCi0gICAgICAgIGV4Y2x1ZGVf ZGlzYWJsZWRfcnVsZXMgPT4gMSwKLSAgICApOworICAgIG15ICR0b2dldGhlciA9ICRyZXNvdXJj ZV9hZmZpbml0eS0+e3Bvc2l0aXZlfS0+eyRzaWR9IC8vIHt9OworICAgIG15ICRzZXBhcmF0ZSA9 ICRyZXNvdXJjZV9hZmZpbml0eS0+e25lZ2F0aXZlfS0+eyRzaWR9IC8vIHt9OwogCiAgICAgcmV0 dXJuICgkdG9nZXRoZXIsICRzZXBhcmF0ZSk7CiB9CiAKLT1oZWFkMyBnZXRfcmVzb3VyY2VfYWZm aW5pdHkoJHJ1bGVzLCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpCis9aGVhZDMgZ2V0X3Jlc291 cmNlX2FmZmluaXR5KCRyZXNvdXJjZV9hZmZpbml0eSwgJHNpZCwgJHNzLCAkb25saW5lX25vZGVz KQogCiBSZXR1cm5zIGEgbGlzdCBvZiB0d28gaGFzaGVzLCB3aGVyZSB0aGUgZmlyc3QgZGVzY3Jp YmVzIHRoZSBwb3NpdGl2ZSByZXNvdXJjZQogYWZmaW5pdHkgYW5kIHRoZSBzZWNvbmQgaGFzaCBk ZXNjcmliZXMgdGhlIG5lZ2F0aXZlIHJlc291cmNlIGFmZmluaXR5IGZvcgotcmVzb3VyY2UgQzwk c2lkPiBhY2NvcmRpbmcgdG8gdGhlIHJlc291cmNlIGFmZmluaXR5IHJ1bGVzIGluIEM8JHJ1bGVz PiwgdGhlCi1zZXJ2aWNlIHN0YXR1cyBDPCRzcz4gYW5kIHRoZSBDPCRvbmxpbmVfbm9kZXM+IGhh c2guCityZXNvdXJjZSBDPCRzaWQ+IGFjY29yZGluZyB0byB0aGUgcmVzb3VyY2UncyByZXNvdXJj ZSBhZmZpbml0eSBydWxlcyBpbgorQzwkcmVzb3VyY2VfYWZmaW5pdHk+LCB0aGUgc2VydmljZSBz dGF0dXMgQzwkc3M+IGFuZCB0aGUgQzwkb25saW5lX25vZGVzPiBoYXNoLgogCiBGb3IgdGhlIHBv c2l0aXZlIHJlc291cmNlIGFmZmluaXR5IG9mIGEgcmVzb3VyY2UgQzwkc2lkPiwgZWFjaCBlbGVt ZW50IGluIHRoZQogaGFzaCByZXByZXNlbnRzIGFuIG9ubGluZSBub2RlLCB3aGVyZSBvdGhlciBy ZXNvdXJjZXMsIHdoaWNoIEM8JHNpZD4gaXMgaW4KQEAgLTQ4OCwzOSArNTAxLDMzIEBAIHJlc291 cmNlIEM8JHNpZD4gaXMgaW4gYSBuZWdhdGl2ZSBhZmZpbml0eSB3aXRoLCB0aGUgcmV0dXJuZWQg dmFsdWUgd2lsbCBiZToKID1jdXQKIAogc3ViIGdldF9yZXNvdXJjZV9hZmZpbml0eSA6IHByb3Rv dHlwZSgkJCQkKSB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCwgJHNzLCAkb25saW5lX25vZGVzKSA9 IEBfOworICAgIG15ICgkcmVzb3VyY2VfYWZmaW5pdHksICRzaWQsICRzcywgJG9ubGluZV9ub2Rl cykgPSBAXzsKIAogICAgIG15ICR0b2dldGhlciA9IHt9OwogICAgIG15ICRzZXBhcmF0ZSA9IHt9 OwogCi0gICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVhY2hfcnVsZSgKLSAgICAgICAgJHJ1bGVzLAot ICAgICAgICBzdWIgewotICAgICAgICAgICAgbXkgKCRydWxlKSA9IEBfOworICAgIG15ICgkcG9z aXRpdmUsICRuZWdhdGl2ZSkgPSBnZXRfYWZmaW5pdGl2ZV9yZXNvdXJjZXMoJHJlc291cmNlX2Fm ZmluaXR5LCAkc2lkKTsKIAotICAgICAgICAgICAgZm9yIG15ICRjc2lkIChrZXlzICV7ICRydWxl LT57cmVzb3VyY2VzfSB9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCBpZiAkY3NpZCBlcSAkc2lk OwotICAgICAgICAgICAgICAgIG5leHQgaWYgIWRlZmluZWQoJHNzLT57JGNzaWR9KTsKKyAgICBt eSAkZ2V0X3VzZWRfc2VydmljZV9ub2RlcyA9IHN1YiB7CisgICAgICAgIG15ICgkc2lkKSA9IEBf OworICAgICAgICByZXR1cm4gKHVuZGVmLCB1bmRlZikgaWYgIWRlZmluZWQoJHNzLT57JHNpZH0p OworICAgICAgICBteSAoJHN0YXRlLCAkbm9kZSwgJHRhcmdldCkgPSAkc3MtPnskc2lkfS0+QHtx dyhzdGF0ZSBub2RlIHRhcmdldCl9OworICAgICAgICByZXR1cm4gUFZFOjpIQTo6VXNhZ2U6Omdl dF91c2VkX3NlcnZpY2Vfbm9kZXMoJG9ubGluZV9ub2RlcywgJHN0YXRlLCAkbm9kZSwgJHRhcmdl dCk7CisgICAgfTsKIAotICAgICAgICAgICAgICAgIG15ICgkc3RhdGUsICRub2RlLCAkdGFyZ2V0 KSA9ICRzcy0+eyRjc2lkfS0+QHtxdyhzdGF0ZSBub2RlIHRhcmdldCl9OwotICAgICAgICAgICAg ICAgIG15ICgkY3VycmVudF9ub2RlLCAkdGFyZ2V0X25vZGUpID0KLSAgICAgICAgICAgICAgICAg ICAgUFZFOjpIQTo6VXNhZ2U6OmdldF91c2VkX3NlcnZpY2Vfbm9kZXMoJG9ubGluZV9ub2Rlcywg JHN0YXRlLCAkbm9kZSwgJHRhcmdldCk7CisgICAgZm9yIG15ICRjc2lkIChrZXlzICRwb3NpdGl2 ZS0+JSopIHsKKyAgICAgICAgbXkgKCRjdXJyZW50X25vZGUsICR0YXJnZXRfbm9kZSkgPSAkZ2V0 X3VzZWRfc2VydmljZV9ub2Rlcy0+KCRjc2lkKTsKIAotICAgICAgICAgICAgICAgIGlmICgkcnVs ZS0+e2FmZmluaXR5fSBlcSAncG9zaXRpdmUnKSB7Ci0gICAgICAgICAgICAgICAgICAgICR0b2dl dGhlci0+eyRjdXJyZW50X25vZGV9KysgaWYgZGVmaW5lZCgkY3VycmVudF9ub2RlKTsKLSAgICAg ICAgICAgICAgICAgICAgJHRvZ2V0aGVyLT57JHRhcmdldF9ub2RlfSsrIGlmIGRlZmluZWQoJHRh cmdldF9ub2RlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcnVsZS0+e2FmZmluaXR5fSBl cSAnbmVnYXRpdmUnKSB7Ci0gICAgICAgICAgICAgICAgICAgICRzZXBhcmF0ZS0+eyRjdXJyZW50 X25vZGV9ID0gMSBpZiBkZWZpbmVkKCRjdXJyZW50X25vZGUpOwotICAgICAgICAgICAgICAgICAg ICAkc2VwYXJhdGUtPnskdGFyZ2V0X25vZGV9ID0gMSBpZiBkZWZpbmVkKCR0YXJnZXRfbm9kZSk7 Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGllICJ1bmlt cGxlbWVudGVkIHJlc291cmNlIGFmZmluaXR5IHR5cGUgJHJ1bGUtPnthZmZpbml0eX1cbiI7Ci0g ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBzaWQg PT4gJHNpZCwKLSAgICAgICAgdHlwZSA9PiAncmVzb3VyY2UtYWZmaW5pdHknLAotICAgICAgICBl eGNsdWRlX2Rpc2FibGVkX3J1bGVzID0+IDEsCi0gICAgKTsKKyAgICAgICAgJHRvZ2V0aGVyLT57 JGN1cnJlbnRfbm9kZX0rKyBpZiBkZWZpbmVkKCRjdXJyZW50X25vZGUpOworICAgICAgICAkdG9n ZXRoZXItPnskdGFyZ2V0X25vZGV9KysgaWYgZGVmaW5lZCgkdGFyZ2V0X25vZGUpOworICAgIH0K KworICAgIGZvciBteSAkY3NpZCAoa2V5cyAkbmVnYXRpdmUtPiUqKSB7CisgICAgICAgIG15ICgk Y3VycmVudF9ub2RlLCAkdGFyZ2V0X25vZGUpID0gJGdldF91c2VkX3NlcnZpY2Vfbm9kZXMtPigk Y3NpZCk7CisKKyAgICAgICAgJHNlcGFyYXRlLT57JGN1cnJlbnRfbm9kZX0gPSAxIGlmIGRlZmlu ZWQoJGN1cnJlbnRfbm9kZSk7CisgICAgICAgICRzZXBhcmF0ZS0+eyR0YXJnZXRfbm9kZX0gPSAx IGlmIGRlZmluZWQoJHRhcmdldF9ub2RlKTsKKyAgICB9CiAKICAgICByZXR1cm4gKCR0b2dldGhl ciwgJHNlcGFyYXRlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3RfZmFpbG92ZXIxLnBs IGIvc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEucGwKaW5kZXggNDk1ZDRiNGIuLjFkMzM2YmUwIDEw MDc1NQotLS0gYS9zcmMvdGVzdC90ZXN0X2ZhaWxvdmVyMS5wbAorKysgYi9zcmMvdGVzdC90ZXN0 X2ZhaWxvdmVyMS5wbApAQCAtMjEsMTEgKzIxLDEzIEBAIG5vZGUtYWZmaW5pdHk6IHByZWZlcl9u b2RlMQogCW5vZGVzIG5vZGUxCiBFT0QKIAorbXkgJG5vZGVzID0gWydub2RlMScsICdub2RlMics ICdub2RlMyddOworCitteSAkY29tcGlsZWRfcnVsZXMgPSBQVkU6OkhBOjpSdWxlcy0+Y29tcGls ZSgkcnVsZXMsICRub2Rlcyk7CisKICMgUmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIGJhc2lj IHBsdWdpbiBkb2Vzbid0IHVzZSB0aGUgaGFlbnYuCiBteSAkb25saW5lX25vZGVfdXNhZ2UgPSBQ VkU6OkhBOjpVc2FnZTo6QmFzaWMtPm5ldygpOwotJG9ubGluZV9ub2RlX3VzYWdlLT5hZGRfbm9k ZSgibm9kZTEiKTsKLSRvbmxpbmVfbm9kZV91c2FnZS0+YWRkX25vZGUoIm5vZGUyIik7Ci0kb25s aW5lX25vZGVfdXNhZ2UtPmFkZF9ub2RlKCJub2RlMyIpOworJG9ubGluZV9ub2RlX3VzYWdlLT5h ZGRfbm9kZSgkXykgZm9yIEAkbm9kZXM7CiAKIG15ICRzZXJ2aWNlX2NvbmYgPSB7CiAgICAgbm9k ZSA9PiAnbm9kZTEnLApAQCAtNDYsNyArNDgsMTIgQEAgc3ViIHRlc3QgewogICAgIG15ICRzZWxl Y3Rfbm9kZV9wcmVmZXJlbmNlID0gJHRyeV9uZXh0ID8gJ3RyeS1uZXh0JyA6ICdub25lJzsKIAog ICAgIG15ICRub2RlID0gUFZFOjpIQTo6TWFuYWdlcjo6c2VsZWN0X3NlcnZpY2Vfbm9kZSgKLSAg ICAgICAgJHJ1bGVzLCAkb25saW5lX25vZGVfdXNhZ2UsICIkc2lkIiwgJHNlcnZpY2VfY29uZiwg JHNzLCAkc2VsZWN0X25vZGVfcHJlZmVyZW5jZSwKKyAgICAgICAgJGNvbXBpbGVkX3J1bGVzLAor ICAgICAgICAkb25saW5lX25vZGVfdXNhZ2UsCisgICAgICAgICRzaWQsCisgICAgICAgICRzZXJ2 aWNlX2NvbmYsCisgICAgICAgICRzcywKKyAgICAgICAgJHNlbGVjdF9ub2RlX3ByZWZlcmVuY2Us CiAgICAgKTsKIAogICAgIG15ICh1bmRlZiwgdW5kZWYsICRsaW5lKSA9IGNhbGxlcigpOwotLSAK Mi40Ny4zCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBz Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=