From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 34E921FF164
	for <inbox@lore.proxmox.com>; Fri, 28 Mar 2025 18:16:42 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id BC9FA8ED8;
	Fri, 28 Mar 2025 18:14:15 +0100 (CET)
From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri, 28 Mar 2025 18:13:05 +0100
Message-Id: <20250328171340.885413-18-g.goller@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250328171340.885413-1-g.goller@proxmox.com>
References: <20250328171340.885413-1-g.goller@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.025 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 proxmox-ve-rs 16/17] ve-config: add
 section-config to frr types conversion
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

QWRkIGEgRmFicmljQ29uZmlnIGJ1aWxkZXIgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCBub2RlcyBh
bmQgZ2VuZXJhdGVzCnRoZSBmcnIgY29uZmlnIGZvciB0aGUgc3BlY2lmaWVkIGN1cnJlbnRfbm9k
ZS4gVGhpcyBwYXJ0IGFsc28KZGlzdHJpYnV0ZXMgdGhlIGZhYnJpYyBvcHRpb25zIG9uIGFsbCB0
aGUgaW50ZXJmYWNlcyDigJMgZS5nLiB0aGUKaGVsbG8taW50ZXJ2YWwgb3B0aW9uIG9uIHRoZSBm
YWJyaWMgd2lsbCBiZSBhZGRlZCB0byBhbGwgaW50ZXJmYWNlcwpoZXJlLgoKV2UgbWFpbmx5IG5l
ZWQgdG8gYWRkIHRoZXNlIG9iamVjdHMgdG8gRlJSOgoKKiBpbnRlcmZhY2VzCiAgICBXZSBzaW1w
bHkgaXRlcmF0ZSB0aHJvdWdoIGFsbCBjb25maWd1cmVkIGludGVyZmFjZXMgYW5kIGFkZCB0aGVt
IEZSUgogICAgd2l0aCBhIHNob3J0IGNvbmZpZyBsaW5lIHRlbGxpbmcgdGhlIGRhZW1vbiB0byBl
bmFibGUKICAgIG9wZW5mYWJyaWMvb3NwZiBvbiB0aGlzIGludGVyZmFjZS4KCiogcm91dGVycwog
ICAgVGhlIHRlbGwgdGhlIEZSUiBkYWVtb24gdG8gaW5pdGlhdGUgdGhlIG9wZW5mYWJyaWMvb3Nw
ZiBkYWVtb24gb24KICAgIGV2ZXJ5IG5vZGUuCgoqIGFjY2Vzcy1saXN0cwogICAgV2UgdGhyb3cg
YWxsIHRoZSByb3V0ZXItaXBzIG9mIGFsbCB0aGUgb3RoZXIgbm9kZXMgaW4gdGhlIHNhbWUKICAg
IGZhYnJpYyBpbiBhY2Nlc3MtbGlzdC4gVGhpcyB3YXkgd2UgY2FuIHNpbXBseSB1c2UgYSByb3V0
ZS1tYXAgdG8KICAgIG1hdGNoIG9uIGl0LgoKKiByb3V0ZS1tYXBzCiAgICBXZSBhZGQgYSByb3V0
ZS1tYXAgdG8gZXZlcnkgZmFicmljIHNvIHRoYXQgd2UgcmV3cml0ZSB0aGUgc291cmNlCiAgICBh
ZGRyZXNzIHRvIHRoZSBjdXJyZW50IHJvdXRlci1pcCB3aGljaCBpcyBvbiB0aGUgbG9jYWwKICAg
IGR1bW15X2ludGVyZmFjZS4KCiogaXAtcHJvdG9jb2wgc3RhdGVtZW50cwogICAgVGhlc2UgYWRk
IHRoZSByb3V0ZS1tYXAgdG8gdGhlIHByb3RvY29sIGFuZCBhbGwgdGhlIHJvdXRlcyBmcm9tIHRo
ZQogICAgcHJvdG9jb2wgYXJlIGdvaW5nIHRocm91Z2ggdGhlIHJvdXRlLW1hcC4KClNpZ25lZC1v
ZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNvbT4KLS0tCiBwcm94bW94
LXZlLWNvbmZpZy9DYXJnby50b21sICAgICAgICAgICAgfCAgIDcgKwogcHJveG1veC12ZS1jb25m
aWcvZGViaWFuL2NvbnRyb2wgICAgICAgIHwgIDM3ICsrLQogcHJveG1veC12ZS1jb25maWcvc3Jj
L3Nkbi9mYWJyaWMvbW9kLnJzIHwgNDE2ICsrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxl
cyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9wcm94bW94LXZlLWNvbmZpZy9DYXJnby50b21sIGIvcHJveG1veC12ZS1jb25maWcvQ2FyZ28u
dG9tbAppbmRleCAzZjc2MzllZmExNTMuLjIzMWUyMzdmYjgyZiAxMDA2NDQKLS0tIGEvcHJveG1v
eC12ZS1jb25maWcvQ2FyZ28udG9tbAorKysgYi9wcm94bW94LXZlLWNvbmZpZy9DYXJnby50b21s
CkBAIC0yNCwzICsyNCwxMCBAQCBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9uID0gIjAuMS4yIiB9
CiBwcm94bW94LXN5cyA9ICIwLjYuNCIKIHByb3htb3gtc29ydGFibGUtbWFjcm8gPSAiMC4xLjMi
CiBwcm94bW94LW5ldHdvcmstdHlwZXMgPSB7IHZlcnNpb24gPSAiMC4xIiwgcGF0aCA9ICIuLi9w
cm94bW94LW5ldHdvcmstdHlwZXMvIiB9Citwcm94bW94LWZyciA9IHsgdmVyc2lvbiA9ICIwLjEi
LCBwYXRoID0gIi4uL3Byb3htb3gtZnJyLyIsIG9wdGlvbmFsID0gdHJ1ZSB9CisKK1tmZWF0dXJl
c10KK2ZyciA9IFsiZGVwOnByb3htb3gtZnJyIiBdCisKK1tkZXYtZGVwZW5kZW5jaWVzXQorc2lt
aWxhci1hc3NlcnRzID0gIjEiCmRpZmYgLS1naXQgYS9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4v
Y29udHJvbCBiL3Byb3htb3gtdmUtY29uZmlnL2RlYmlhbi9jb250cm9sCmluZGV4IDYwZWJjYmM0
MGUxYy4uNTU1NmJhNzQ3YjhhIDEwMDY0NAotLS0gYS9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4v
Y29udHJvbAorKysgYi9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4vY29udHJvbApAQCAtMiwyMiAr
MiwyNiBAQCBTb3VyY2U6IHJ1c3QtcHJveG1veC12ZS1jb25maWcKIFNlY3Rpb246IHJ1c3QKIFBy
aW9yaXR5OiBvcHRpb25hbAogQnVpbGQtRGVwZW5kczogZGViaGVscGVyLWNvbXBhdCAoPSAxMyks
Ci0gZGgtc2VxdWVuY2UtY2FyZ28sCi0gY2FyZ286bmF0aXZlIDwhbm9jaGVjaz4sCisgZGgtc2Vx
dWVuY2UtY2FyZ28KK0J1aWxkLURlcGVuZHMtQXJjaDogY2FyZ286bmF0aXZlIDwhbm9jaGVjaz4s
CiAgcnVzdGM6bmF0aXZlIDwhbm9jaGVjaz4sCiAgbGlic3RkLXJ1c3QtZGV2IDwhbm9jaGVjaz4s
CiAgbGlicnVzdC1hbnlob3ctMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3QtbG9n
LTAuNCtkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qtbml4LTAuMjYrZGVmYXVsdC1k
ZXYgPCFub2NoZWNrPiwKKyBsaWJydXN0LXByb3htb3gtbmV0d29yay10eXBlcy0wLjErZGVmYXVs
dC1kZXYgPCFub2NoZWNrPiwKICBsaWJydXN0LXByb3htb3gtc2NoZW1hLTQrZGVmYXVsdC1kZXYg
PCFub2NoZWNrPiwKKyBsaWJydXN0LXByb3htb3gtc2VjdGlvbi1jb25maWctMitkZWZhdWx0LWRl
diAoPj0gMi4xLjEtfn4pIDwhbm9jaGVjaz4sCisgbGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStk
ZWZhdWx0LWRldiAoPj0gMC4xLjItfn4pIDwhbm9jaGVjaz4sCiAgbGlicnVzdC1wcm94bW94LXNv
cnRhYmxlLW1hY3JvLTAuMStkZWZhdWx0LWRldiAoPj0gMC4xLjMtfn4pIDwhbm9jaGVjaz4sCiAg
bGlicnVzdC1wcm94bW94LXN5cy0wLjYrZGVmYXVsdC1kZXYgKD49IDAuNi40LX5+KSA8IW5vY2hl
Y2s+LAogIGxpYnJ1c3Qtc2VyZGUtMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qt
c2VyZGUtMStkZXJpdmUtZGV2IDwhbm9jaGVjaz4sCiAgbGlicnVzdC1zZXJkZS1qc29uLTErZGVm
YXVsdC1kZXYgPCFub2NoZWNrPiwKICBsaWJydXN0LXNlcmRlLXBsYWluLTErZGVmYXVsdC1kZXYg
PCFub2NoZWNrPiwKLSBsaWJydXN0LXNlcmRlLXdpdGgtMytkZWZhdWx0LWRldiA8IW5vY2hlY2s+
LAotIGxpYnJ1c3QtdGhpc2Vycm9yLTErZGVmYXVsdC1kZXYgKD49IDEuMC41OS1+fikgPCFub2No
ZWNrPgorIGxpYnJ1c3Qtc2VyZGUtd2l0aC0zK2RlZmF1bHQtZGV2ICg+PSAzLjguMS1+fikgPCFu
b2NoZWNrPiwKKyBsaWJydXN0LXRoaXNlcnJvci0yK2RlZmF1bHQtZGV2IDwhbm9jaGVjaz4sCisg
bGlicnVzdC10cmFjaW5nLTAuMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+CiBNYWludGFpbmVyOiBQ
cm94bW94IFN1cHBvcnQgVGVhbSA8c3VwcG9ydEBwcm94bW94LmNvbT4KIFN0YW5kYXJkcy1WZXJz
aW9uOiA0LjcuMAogVmNzLUdpdDogZ2l0Oi8vZ2l0LnByb3htb3guY29tL2dpdC9wcm94bW94LXZl
LXJzLmdpdApAQCAtMzMsMTUgKzM3LDIxIEBAIERlcGVuZHM6CiAgbGlicnVzdC1hbnlob3ctMStk
ZWZhdWx0LWRldiwKICBsaWJydXN0LWxvZy0wLjQrZGVmYXVsdC1kZXYsCiAgbGlicnVzdC1uaXgt
MC4yNitkZWZhdWx0LWRldiwKKyBsaWJydXN0LXByb3htb3gtbmV0d29yay10eXBlcy0wLjErZGVm
YXVsdC1kZXYsCiAgbGlicnVzdC1wcm94bW94LXNjaGVtYS00K2RlZmF1bHQtZGV2LAorIGxpYnJ1
c3QtcHJveG1veC1zZWN0aW9uLWNvbmZpZy0yK2RlZmF1bHQtZGV2ICg+PSAyLjEuMS1+fiksCisg
bGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStkZWZhdWx0LWRldiAoPj0gMC4xLjItfn4pLAogIGxp
YnJ1c3QtcHJveG1veC1zb3J0YWJsZS1tYWNyby0wLjErZGVmYXVsdC1kZXYgKD49IDAuMS4zLX5+
KSwKICBsaWJydXN0LXByb3htb3gtc3lzLTAuNitkZWZhdWx0LWRldiAoPj0gMC42LjQtfn4pLAog
IGxpYnJ1c3Qtc2VyZGUtMStkZWZhdWx0LWRldiwKICBsaWJydXN0LXNlcmRlLTErZGVyaXZlLWRl
diwKICBsaWJydXN0LXNlcmRlLWpzb24tMStkZWZhdWx0LWRldiwKICBsaWJydXN0LXNlcmRlLXBs
YWluLTErZGVmYXVsdC1kZXYsCi0gbGlicnVzdC1zZXJkZS13aXRoLTMrZGVmYXVsdC1kZXYsCi0g
bGlicnVzdC10aGlzZXJyb3ItMStkZWZhdWx0LWRldiAoPj0gMS4wLjU5LX5+KQorIGxpYnJ1c3Qt
c2VyZGUtd2l0aC0zK2RlZmF1bHQtZGV2ICg+PSAzLjguMS1+fiksCisgbGlicnVzdC10aGlzZXJy
b3ItMitkZWZhdWx0LWRldiwKKyBsaWJydXN0LXRyYWNpbmctMC4xK2RlZmF1bHQtZGV2CitTdWdn
ZXN0czoKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2Zyci1kZXYgKD0gJHtiaW5hcnk6VmVy
c2lvbn0pCiBQcm92aWRlczoKICBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2RlZmF1bHQtZGV2
ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKICBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAtZGV2
ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKQEAgLTUyLDMgKzYyLDE4IEBAIFByb3ZpZGVzOgogIGxp
YnJ1c3QtcHJveG1veC12ZS1jb25maWctMC4yLjIrZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVy
c2lvbn0pCiBEZXNjcmlwdGlvbjogUnVzdCBjcmF0ZSAicHJveG1veC12ZS1jb25maWciIC0gUnVz
dCBzb3VyY2UgY29kZQogIFNvdXJjZSBjb2RlIGZvciBEZWJpYW5pemVkIFJ1c3QgY3JhdGUgInBy
b3htb3gtdmUtY29uZmlnIgorCitQYWNrYWdlOiBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2Zy
ci1kZXYKK0FyY2hpdGVjdHVyZTogYW55CitNdWx0aS1BcmNoOiBzYW1lCitEZXBlbmRzOgorICR7
bWlzYzpEZXBlbmRzfSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLWRldiAoPSAke2JpbmFy
eTpWZXJzaW9ufSksCisgbGlicnVzdC1wcm94bW94LWZyci0wLjErZGVmYXVsdC1kZXYKK1Byb3Zp
ZGVzOgorIGxpYnJ1c3QtcHJveG1veC12ZS1jb25maWctMCtmcnItZGV2ICg9ICR7YmluYXJ5OlZl
cnNpb259KSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAuMitmcnItZGV2ICg9ICR7Ymlu
YXJ5OlZlcnNpb259KSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAuMi4yK2Zyci1kZXYg
KD0gJHtiaW5hcnk6VmVyc2lvbn0pCitEZXNjcmlwdGlvbjogUnVzdCBjcmF0ZSAicHJveG1veC12
ZS1jb25maWciIC0gZmVhdHVyZSAiZnJyIgorIFRoaXMgbWV0YXBhY2thZ2UgZW5hYmxlcyBmZWF0
dXJlICJmcnIiIGZvciB0aGUgUnVzdCBwcm94bW94LXZlLWNvbmZpZyBjcmF0ZSwgYnkKKyBwdWxs
aW5nIGluIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgdGhhdCBmZWF0dXJl
LgpkaWZmIC0tZ2l0IGEvcHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJzIGIv
cHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJzCmluZGV4IDk0OTQ4NmE4NjM1
NS4uNWRkNDg2NmUzM2JiIDEwMDY0NAotLS0gYS9wcm94bW94LXZlLWNvbmZpZy9zcmMvc2RuL2Zh
YnJpYy9tb2QucnMKKysrIGIvcHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJz
CkBAIC0zLDEyICszLDMyIEBAIHB1YiBtb2Qgb3NwZjsKIAogdXNlIG9wZW5mYWJyaWM6Ok9wZW5G
YWJyaWNTZWN0aW9uQ29uZmlnOwogdXNlIG9zcGY6Ok9zcGZTZWN0aW9uQ29uZmlnOwordXNlIHBy
b3htb3hfbmV0d29ya190eXBlczo6bmV0OjpOZXQ7CiB1c2UgcHJveG1veF9zZWN0aW9uX2NvbmZp
Zzo6dHlwZWQ6OkFwaVNlY3Rpb25EYXRhRW50cnk7CiB1c2UgcHJveG1veF9zZWN0aW9uX2NvbmZp
Zzo6dHlwZWQ6OlNlY3Rpb25Db25maWdEYXRhOwogCit1c2Ugc3RkOjpuZXQ6OntJcEFkZHIsIElw
djRBZGRyfTsKIHVzZSBzdGQ6Om9wczo6RGVyZWY7Cit1c2Ugc3RkOjpjb2xsZWN0aW9uczo6SGFz
aE1hcDsKIAogdXNlIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVPd25lZDsKK3VzZSBzZXJkZTo6e0Rl
c2VyaWFsaXplLCBTZXJpYWxpemV9OwordXNlIHRoaXNlcnJvcjo6RXJyb3I7CisKKyNbY2ZnKGZl
YXR1cmUgPSAiZnJyIildCit1c2UgeworICAgIGFueWhvdzo6YW55aG93LAorICAgIHByb3htb3hf
ZnJyOjp7CisgICAgICAgIG9zcGY6OkFyZWEsCisgICAgICAgIHJvdXRlX21hcDo6eworICAgICAg
ICAgICAgQWNjZXNzQWN0aW9uLCBBY2Nlc3NMaXN0LCBBY2Nlc3NMaXN0TmFtZSwgQWNjZXNzTGlz
dFJ1bGUsIFByb3RvY29sUm91dGVNYXAsCisgICAgICAgICAgICBSb3V0ZU1hcCwgUm91dGVNYXBO
YW1lLCBSb3V0ZU1hcFNldCwgUm91dGVNYXBNYXRjaCwgUHJvdG9jb2xUeXBlCisgICAgICAgIH0s
CisgICAgICAgIEZyckNvbmZpZywgRnJyV29yZCwgSW50ZXJmYWNlLCBJbnRlcmZhY2VOYW1lLCBS
b3V0ZXIsIFJvdXRlck5hbWUsCisgICAgfSwKKyAgICBwcm94bW94X25ldHdvcmtfdHlwZXM6Omhv
c3RuYW1lOjpIb3N0bmFtZSwKKyAgICBzdGQ6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcCwKK307CiAK
ICNbZGVyaXZlKERlYnVnLCBDbG9uZSldCiBwdWIgc3RydWN0IFZhbGlkPFQ+KFNlY3Rpb25Db25m
aWdEYXRhPFQ+KTsKQEAgLTQyLDMgKzYyLDM5OSBAQCB3aGVyZQogICAgIH0KIH0KIAorI1tkZXJp
dmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwgRGVidWcsIENsb25lLCBQYXJ0aWFsRXEsIEVxLCBQ
YXJ0aWFsT3JkLCBPcmQsIEhhc2gsIEVycm9yKV0KK3B1YiBlbnVtIENvbmZpZ0Vycm9yIHsKKyAg
ICAjW2Vycm9yKCJub2RlIGlkIGhhcyBpbnZhbGlkIGZvcm1hdCIpXQorICAgIEludmFsaWROb2Rl
SWQsCit9CisKKyNbZGVyaXZlKERlZmF1bHQsIENsb25lKV0KK3B1YiBzdHJ1Y3QgRmFicmljQ29u
ZmlnIHsKKyAgICBvcGVuZmFicmljOiBPcHRpb248VmFsaWQ8T3BlbkZhYnJpY1NlY3Rpb25Db25m
aWc+PiwKKyAgICBvc3BmOiBPcHRpb248VmFsaWQ8T3NwZlNlY3Rpb25Db25maWc+PiwKK30KKwor
aW1wbCBGYWJyaWNDb25maWcgeworICAgIHB1YiBmbiBuZXcocmF3X29wZW5mYWJyaWM6ICZzdHIs
IHJhd19vc3BmOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgYW55aG93OjpFcnJvcj4geworICAgICAg
ICBsZXQgb3BlbmZhYnJpYyA9IDxWYWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4+OjpwYXJz
ZV9zZWN0aW9uX2NvbmZpZygKKyAgICAgICAgICAgICJvcGVuZmFicmljLmNmZyIsCisgICAgICAg
ICAgICByYXdfb3BlbmZhYnJpYywKKyAgICAgICAgKT87CisgICAgICAgIGxldCBvc3BmID0gPFZh
bGlkPE9zcGZTZWN0aW9uQ29uZmlnPj46OnBhcnNlX3NlY3Rpb25fY29uZmlnKCJvc3BmLmNmZyIs
IHJhd19vc3BmKT87CisKKyAgICAgICAgT2soU2VsZiB7CisgICAgICAgICAgICBvcGVuZmFicmlj
OiBTb21lKG9wZW5mYWJyaWMpLAorICAgICAgICAgICAgb3NwZjogU29tZShvc3BmKSwKKyAgICAg
ICAgfSkKKyAgICB9CisKKyAgICBwdWIgZm4gb3BlbmZhYnJpYygmc2VsZikgLT4gJk9wdGlvbjxW
YWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4+IHsKKyAgICAgICAgJnNlbGYub3BlbmZhYnJp
YworICAgIH0KKyAgICBwdWIgZm4gb3NwZigmc2VsZikgLT4gJk9wdGlvbjxWYWxpZDxPc3BmU2Vj
dGlvbkNvbmZpZz4+IHsKKyAgICAgICAgJnNlbGYub3NwZgorICAgIH0KKworICAgIHB1YiBmbiB3
aXRoX29wZW5mYWJyaWMoY29uZmlnOiBWYWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4pIC0+
IEZhYnJpY0NvbmZpZyB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgb3BlbmZhYnJpYzog
U29tZShjb25maWcpLAorICAgICAgICAgICAgb3NwZjogTm9uZSwKKyAgICAgICAgfQorICAgIH0K
KworICAgIHB1YiBmbiB3aXRoX29zcGYoY29uZmlnOiBWYWxpZDxPc3BmU2VjdGlvbkNvbmZpZz4p
IC0+IEZhYnJpY0NvbmZpZyB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgb3NwZjogU29t
ZShjb25maWcpLAorICAgICAgICAgICAgb3BlbmZhYnJpYzogTm9uZSwKKyAgICAgICAgfQorICAg
IH0KK30KKworcHViIHRyYWl0IEZyb21TZWN0aW9uQ29uZmlnCit3aGVyZQorICAgIFNlbGY6IFNp
emVkICsgVHJ5RnJvbTxTZWN0aW9uQ29uZmlnRGF0YTxTZWxmOjpTZWN0aW9uPj4sCisgICAgPFNl
bGYgYXMgVHJ5RnJvbTxTZWN0aW9uQ29uZmlnRGF0YTxTZWxmOjpTZWN0aW9uPj4+OjpFcnJvcjog
c3RkOjpmbXQ6OkRlYnVnLAoreworICAgIHR5cGUgU2VjdGlvbjogQXBpU2VjdGlvbkRhdGFFbnRy
eSArIERlc2VyaWFsaXplT3duZWQ7CisKKyAgICBmbiBmcm9tX3NlY3Rpb25fY29uZmlnKHJhdzog
JnN0cikgLT4gUmVzdWx0PFNlbGYsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IHNlY3Rp
b25fY29uZmlnX2RhdGEgPSBTZWxmOjpTZWN0aW9uOjpzZWN0aW9uX2NvbmZpZygpCisgICAgICAg
ICAgICAucGFyc2UoU2VsZjo6ZmlsZW5hbWUoKSwgcmF3KT8KKyAgICAgICAgICAgIC50cnlfaW50
bygpPzsKKworICAgICAgICBsZXQgb3V0cHV0ID0gU2VsZjo6dHJ5X2Zyb20oc2VjdGlvbl9jb25m
aWdfZGF0YSkudW53cmFwKCk7CisgICAgICAgIE9rKG91dHB1dCkKKyAgICB9CisKKyAgICBmbiBm
aWxlbmFtZSgpIC0+IFN0cmluZzsKK30KKworLy8vIEJ1aWxkZXIgdGhhdCBoZWxwcyBidWlsZGlu
ZyB0aGUgRnJyQ29uZmlnLgorI1tkZXJpdmUoRGVmYXVsdCldCisjW2NmZyhmZWF0dXJlID0gImZy
ciIpXQorcHViIHN0cnVjdCBGcnJDb25maWdCdWlsZGVyIHsKKyAgICBmYWJyaWNzOiBGYWJyaWND
b25maWcsCit9CisKKyNbY2ZnKGZlYXR1cmUgPSAiZnJyIildCitpbXBsIEZyckNvbmZpZ0J1aWxk
ZXIgeworICAgIC8vLyBBZGQgZmFicmljcyB0byB0aGUgYnVpbGRlcgorICAgIHB1YiBmbiBhZGRf
ZmFicmljcyhtdXQgc2VsZiwgZmFicmljOiBGYWJyaWNDb25maWcpIC0+IEZyckNvbmZpZ0J1aWxk
ZXIgeworICAgICAgICBzZWxmLmZhYnJpY3MgPSBmYWJyaWM7CisgICAgICAgIHNlbGYKKyAgICB9
CisKKyAgICAvLy8gQnVpbGQgdGhlIGNvbXBsZXRlIFtgRnJyQ29uZmlnYF0gZnJvbSB0aGlzIGJ1
aWxkZXIgY29uZmlndXJhdGlvbiBnaXZlbiB0aGUgaG9zdG5hbWUgb2YgdGhlCisgICAgLy8vIG5v
ZGUgZm9yIHdoaWNoIHdlIHdhbnQgdG8gYnVpbGQgdGhlIGNvbmZpZy4gV2UgYWxzbyBpbmplY3Qg
dGhlIGNvbW1vbiBmYWJyaWMtbGV2ZWwgb3B0aW9ucworICAgIC8vLyBpbnRvIHRoZSBpbnRlcmZh
Y2VzIGhlcmUuIChlLmcuIHRoZSBmYWJyaWMtbGV2ZWwgImhlbGxvLWludGVydmFsIiBnZXRzIGFk
ZGVkIHRvIGV2ZXJ5CisgICAgLy8vIGludGVyZmFjZSBpZiB0aGVyZSBpc24ndCBhIG1vcmUgc3Bl
Y2lmaWMgb25lLikKKyAgICBwdWIgZm4gYnVpbGQoc2VsZiwgY3VycmVudF9ub2RlOiBIb3N0bmFt
ZSkgLT4gUmVzdWx0PEZyckNvbmZpZywgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgbXV0
IHJvdXRlcjogQlRyZWVNYXA8Um91dGVyTmFtZSwgUm91dGVyPiA9IEJUcmVlTWFwOjpuZXcoKTsK
KyAgICAgICAgbGV0IG11dCBpbnRlcmZhY2VzOiBCVHJlZU1hcDxJbnRlcmZhY2VOYW1lLCBJbnRl
cmZhY2U+ID0gQlRyZWVNYXA6Om5ldygpOworICAgICAgICBsZXQgbXV0IGFjY2Vzc19saXN0czog
QlRyZWVNYXA8QWNjZXNzTGlzdE5hbWUsIEFjY2Vzc0xpc3Q+ID0gQlRyZWVNYXA6Om5ldygpOwor
ICAgICAgICBsZXQgbXV0IHJvdXRlbWFwczogVmVjPFJvdXRlTWFwPiA9IFZlYzo6bmV3KCk7Cisg
ICAgICAgIGxldCBtdXQgcHJvdG9jb2xfcm91dGVtYXBzOiBWZWM8UHJvdG9jb2xSb3V0ZU1hcD4g
PSBWZWM6Om5ldygpOworCisgICAgICAgIGlmIGxldCBTb21lKG9wZW5mYWJyaWMpID0gc2VsZi5m
YWJyaWNzLm9wZW5mYWJyaWMgeworICAgICAgICAgICAgbGV0IG11dCBmYWJyaWNzID0gSGFzaE1h
cDo6bmV3KCk7CisgICAgICAgICAgICBsZXQgbXV0IGxvY2FsX2NvbmZpZ3VyYXRpb24gPSBWZWM6
Om5ldygpOworCisgICAgICAgICAgICBmb3IgKF8sIHNlY3Rpb24pIGluIG9wZW5mYWJyaWMuaXRl
cigpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCBzZWN0aW9uIHsKKyAgICAgICAgICAgICAgICAg
ICAgT3BlbkZhYnJpY1NlY3Rpb25Db25maWc6OkZhYnJpYyhmYWJyaWMpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhYnJpY3MuaW5zZXJ0KGZhYnJpYy5mYWJyaWNfaWQuY2xvbmUoKSwg
ZmFicmljKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgT3Bl
bkZhYnJpY1NlY3Rpb25Db25maWc6Ok5vZGUobm9kZSkgPT4geworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbm9kZS5ub2RlX2lkLm5vZGUgPT0gY3VycmVudF9ub2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhbF9jb25maWd1cmF0aW9uLnB1c2gobm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBtdXQgcm91dGVtYXBfc2VxID0g
MTAwOworCisgICAgICAgICAgICBmb3Igbm9kZSBpbiBsb2NhbF9jb25maWd1cmF0aW9uIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZmFicmljID0gZmFicmljcy5nZXQoJm5vZGUubm9kZV9pZC5mYWJy
aWNfaWQpCisgICAgICAgICAgICAgICAgICAgIC5va19vcl9lbHNlKHx8IGFueWhvdyEoImNvdWxk
IG5vdCBmaW5kIGZhYnJpYzoge30iLCBub2RlLm5vZGVfaWQuZmFicmljX2lkKSk/OworCisgICAg
ICAgICAgICAgICAgbGV0IChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pID0gU2VsZjo6YnVpbGRf
b3BlbmZhYnJpY19yb3V0ZXIoCisgICAgICAgICAgICAgICAgICAgICZub2RlLm5vZGVfaWQuZmFi
cmljX2lkLAorICAgICAgICAgICAgICAgICAgICAmbm9kZS5yb3V0ZXJfaWQuaW50bygpLAorICAg
ICAgICAgICAgICAgICk/OworICAgICAgICAgICAgICAgIHJvdXRlci5pbnNlcnQocm91dGVyX25h
bWUsIHJvdXRlcl9pdGVtKTsKKworICAgICAgICAgICAgICAgIGxldCAoaW50ZXJmYWNlLCBpbnRl
cmZhY2VfbmFtZSkgPSBTZWxmOjpidWlsZF9vcGVuZmFicmljX2R1bW15X2ludGVyZmFjZSgKKyAg
ICAgICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5mYWJyaWNfaWQsCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUucm91dGVyX2lkLAorICAgICAgICAgICAgICAgICk/OworCisgICAgICAgICAg
ICAgICAgaWYgaW50ZXJmYWNlcy5pbnNlcnQoaW50ZXJmYWNlX25hbWUsIGludGVyZmFjZSkuaXNf
c29tZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6ZXJyb3IhKAorICAgICAgICAg
ICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGR1
bW15IGludGVyZmFjZSBleGlzdHMiCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIGludGVyZmFjZSBpbiBub2RlLmludGVyZmFj
ZS5pdGVyKCkgeworICAgICAgICAgICAgICAgICAgICBsZXQgKGludGVyZmFjZSwgaW50ZXJmYWNl
X25hbWUpID0gU2VsZjo6YnVpbGRfb3BlbmZhYnJpY19pbnRlcmZhY2UoCisgICAgICAgICAgICAg
ICAgICAgICAgICAmbm9kZS5ub2RlX2lkLmZhYnJpY19pZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhYnJpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUucm91dGVyX2lkLAorICAgICAgICAgICAgICAgICAgICApPzsK
KworICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcmZhY2VzLmluc2VydChpbnRlcmZhY2VfbmFt
ZSwgaW50ZXJmYWNlKS5pc19zb21lKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2lu
Zzo6d2FybiEoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSBjYW5u
b3QgYmUgaW4gbXVsdGlwbGUgb3BlbmZhYnJpYyBmYWJyaWNzIgorICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGxldCBhY2Nlc3NfbGlzdF9uYW1lID0gQWNjZXNzTGlzdE5hbWU6Om5ldyhm
b3JtYXQhKAorICAgICAgICAgICAgICAgICAgICAib3BlbmZhYnJpY197fV9pcHMiLAorICAgICAg
ICAgICAgICAgICAgICBub2RlLm5vZGVfaWQuZmFicmljX2lkCisgICAgICAgICAgICAgICAgKSk7
CisKKyAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IEFjY2Vzc0xpc3RSdWxlIHsKKyAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uOiBBY2Nlc3NBY3Rpb246OlBlcm1pdCwKKyAgICAgICAgICAgICAg
ICAgICAgbmV0d29yazogZmFicmljLmxvb3BiYWNrX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAg
ICAgc2VxOiBOb25lLAorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhY2Nl
c3NfbGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLmVudHJ5KGFjY2Vzc19saXN0X25hbWUuY2xv
bmUoKSkKKyAgICAgICAgICAgICAgICAgICAgLmFuZF9tb2RpZnkofGx8IGwucnVsZXMucHVzaChy
dWxlLmNsb25lKCkpKQorICAgICAgICAgICAgICAgICAgICAub3JfaW5zZXJ0KEFjY2Vzc0xpc3Qg
eworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWNjZXNzX2xpc3RfbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1bGVzOiB2ZWMhW3J1bGVdLAorICAgICAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIGxldCByb3V0ZW1hcCA9IFNlbGY6OmJ1aWxkX29wZW5m
YWJyaWNfZHVtbXlfcm91dGVtYXAoCisgICAgICAgICAgICAgICAgICAgICZub2RlLm5vZGVfaWQu
ZmFicmljX2lkLAorICAgICAgICAgICAgICAgICAgICBub2RlLnJvdXRlcl9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgcm91dGVtYXBfc2VxCisgICAgICAgICAgICAgICAgKT87CisKKyAgICAgICAg
ICAgICAgICByb3V0ZW1hcF9zZXEgKz0gMTA7CisKKyAgICAgICAgICAgICAgICByb3V0ZW1hcHMu
cHVzaChyb3V0ZW1hcCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcHJvdG9jb2xfcm91dGVtYXAg
PSBQcm90b2NvbFJvdXRlTWFwIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6IFByb3Rv
Y29sVHlwZTo6T3BlbkZhYnJpYywKKyAgICAgICAgICAgICAgICAgICAgcm91dGVtYXBfbmFtZTog
Um91dGVNYXBOYW1lOjpuZXcoIm9wZW5mYWJyaWMiLnRvX293bmVkKCkpLAorICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICBwcm90b2NvbF9yb3V0ZW1hcHMucHVzaChwcm90b2Nv
bF9yb3V0ZW1hcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiBsZXQg
U29tZShvc3BmKSA9IHNlbGYuZmFicmljcy5vc3BmIHsKKyAgICAgICAgICAgIGxldCBtdXQgZmFi
cmljcyA9IEhhc2hNYXA6Om5ldygpOworICAgICAgICAgICAgbGV0IG11dCBsb2NhbF9jb25maWd1
cmF0aW9uID0gVmVjOjpuZXcoKTsKKworICAgICAgICAgICAgZm9yIChfLCBzZWN0aW9uKSBpbiBv
c3BmLml0ZXIoKSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggc2VjdGlvbiB7CisgICAgICAgICAg
ICAgICAgICAgIE9zcGZTZWN0aW9uQ29uZmlnOjpGYWJyaWMoZmFicmljKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmYWJyaWNzLmluc2VydChmYWJyaWMuYXJlYS5jbG9uZSgpLCBmYWJy
aWMpOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBPc3BmU2Vj
dGlvbkNvbmZpZzo6Tm9kZShub2RlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBu
b2RlLm5vZGVfaWQubm9kZSA9PSBjdXJyZW50X25vZGUgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2FsX2NvbmZpZ3VyYXRpb24ucHVzaChub2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZm9yIG5vZGUgaW4gbG9jYWxfY29uZmlndXJhdGlvbiB7
CisgICAgICAgICAgICAgICAgbGV0IGZhYnJpYyA9IGZhYnJpY3MuZ2V0KCZub2RlLm5vZGVfaWQu
YXJlYSkKKyAgICAgICAgICAgICAgICAgICAgLm9rX29yX2Vsc2UofHwgYW55aG93ISgiY291bGQg
bm90IGZpbmQgZmFicmljOiB7fSIsIG5vZGUubm9kZV9pZC5hcmVhKSk/OworCisgICAgICAgICAg
ICAgICAgbGV0IChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pID0KKyAgICAgICAgICAgICAgICAg
ICAgU2VsZjo6YnVpbGRfb3NwZl9yb3V0ZXIoJm5vZGUubm9kZV9pZC5hcmVhLCBub2RlKT87Cisg
ICAgICAgICAgICAgICAgcm91dGVyLmluc2VydChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pOwor
CisgICAgICAgICAgICAgICAgLy8gQWRkIGR1bW15IGludGVyZmFjZQorICAgICAgICAgICAgICAg
IGxldCAoaW50ZXJmYWNlLCBpbnRlcmZhY2VfbmFtZSkgPQorICAgICAgICAgICAgICAgICAgICBT
ZWxmOjpidWlsZF9vc3BmX2R1bW15X2ludGVyZmFjZSgmbm9kZS5ub2RlX2lkLmFyZWEpPzsKKwor
ICAgICAgICAgICAgICAgIGlmIGludGVyZmFjZXMuaW5zZXJ0KGludGVyZmFjZV9uYW1lLCBpbnRl
cmZhY2UpLmlzX3NvbWUoKSB7CisgICAgICAgICAgICAgICAgICAgIHRyYWNpbmc6OmVycm9yISgK
KyAgICAgICAgICAgICAgICAgICAgICAgICJBbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1l
IGFzIHRoZSBkdW1teSBpbnRlcmZhY2UgZXhpc3RzIgorICAgICAgICAgICAgICAgICAgICApOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciBpbnRlcmZhY2UgaW4gbm9k
ZS5pbnRlcmZhY2UuaXRlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IChpbnRlcmZhY2Us
IGludGVyZmFjZV9uYW1lKSA9IFNlbGY6OmJ1aWxkX29zcGZfaW50ZXJmYWNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5hcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICApPzsKKworICAgICAgICAgICAgICAg
ICAgICBpZiBpbnRlcmZhY2VzLmluc2VydChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlKS5pc19z
b21lKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6d2FybiEoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSBjYW5ub3QgYmUgaW4gbXVsdGlwbGUg
b3BlbmZhYnJpYyBmYWJyaWNzIgorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxldCBh
Y2Nlc3NfbGlzdF9uYW1lID0gQWNjZXNzTGlzdE5hbWU6Om5ldyhmb3JtYXQhKAorICAgICAgICAg
ICAgICAgICAgICAib3NwZl97fV9pcHMiLAorICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVf
aWQuYXJlYQorICAgICAgICAgICAgICAgICkpOworCisgICAgICAgICAgICAgICAgbGV0IHJ1bGUg
PSBBY2Nlc3NMaXN0UnVsZSB7CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogQWNjZXNzQWN0
aW9uOjpQZXJtaXQsCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcms6IGZhYnJpYy5sb29wYmFj
a19wcmVmaXguaW50bygpLAorICAgICAgICAgICAgICAgICAgICBzZXE6IE5vbmUsCisgICAgICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGFjY2Vzc19saXN0cworICAgICAgICAgICAg
ICAgICAgICAuZW50cnkoYWNjZXNzX2xpc3RfbmFtZS5jbG9uZSgpKQorICAgICAgICAgICAgICAg
ICAgICAuYW5kX21vZGlmeSh8bHwgbC5ydWxlcy5wdXNoKHJ1bGUuY2xvbmUoKSkpCisgICAgICAg
ICAgICAgICAgICAgIC5vcl9pbnNlcnQoQWNjZXNzTGlzdCB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiBhY2Nlc3NfbGlzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgcnVs
ZXM6IHZlYyFbcnVsZV0sCisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgbGV0IHJvdXRlbWFwID0gU2VsZjo6YnVpbGRfb3NwZl9kdW1teV9yb3V0ZW1hcCgKKyAgICAg
ICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5hcmVhLAorICAgICAgICAgICAgICAgICAgICBu
b2RlLnJvdXRlcl9pZCwKKyAgICAgICAgICAgICAgICApPzsKKyAgICAgICAgICAgICAgICByb3V0
ZW1hcHMucHVzaChyb3V0ZW1hcCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcHJvdG9jb2xfcm91
dGVtYXAgPSBQcm90b2NvbFJvdXRlTWFwIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6
IFByb3RvY29sVHlwZTo6T3NwZiwKKyAgICAgICAgICAgICAgICAgICAgcm91dGVtYXBfbmFtZTog
Um91dGVNYXBOYW1lOjpuZXcoIm9zcGYiLnRvX293bmVkKCkpLAorICAgICAgICAgICAgICAgIH07
CisKKyAgICAgICAgICAgICAgICBwcm90b2NvbF9yb3V0ZW1hcHMucHVzaChwcm90b2NvbF9yb3V0
ZW1hcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBPayhGcnJDb25maWcg
eworICAgICAgICAgICAgcm91dGVyLAorICAgICAgICAgICAgaW50ZXJmYWNlcywKKyAgICAgICAg
ICAgIGFjY2Vzc19saXN0cywKKyAgICAgICAgICAgIHJvdXRlbWFwcywKKyAgICAgICAgICAgIHBy
b3RvY29sX3JvdXRlbWFwcywKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9vc3Bm
X3JvdXRlcigKKyAgICAgICAgYXJlYTogJm9zcGY6OkFyZWEsCisgICAgICAgIG5vZGVfY29uZmln
OiAmb3NwZjo6Tm9kZVNlY3Rpb24sCisgICAgKSAtPiBSZXN1bHQ8KFJvdXRlck5hbWUsIFJvdXRl
ciksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IG9zcGZfcm91dGVyOiBwcm94bW94X2Zy
cjo6b3NwZjo6T3NwZlJvdXRlciA9IG5vZGVfY29uZmlnLnRvX293bmVkKCkuaW50bygpOworICAg
ICAgICBsZXQgcm91dGVyX2l0ZW0gPSBSb3V0ZXI6Ok9zcGYob3NwZl9yb3V0ZXIpOworICAgICAg
ICBsZXQgZnJyX3dvcmRfaWQgPSBGcnJXb3JkOjpuZXcoYXJlYS50b19zdHJpbmcoKSk/OworICAg
ICAgICBsZXQgcm91dGVyX25hbWUgPSBSb3V0ZXJOYW1lOjpPc3BmKHByb3htb3hfZnJyOjpvc3Bm
OjpPc3BmUm91dGVyTmFtZTo6ZnJvbShBcmVhOjpuZXcoCisgICAgICAgICAgICBmcnJfd29yZF9p
ZCwKKyAgICAgICAgKT8pKTsKKyAgICAgICAgT2soKHJvdXRlcl9uYW1lLCByb3V0ZXJfaXRlbSkp
CisgICAgfQorCisgICAgZm4gYnVpbGRfb3BlbmZhYnJpY19yb3V0ZXIoCisgICAgICAgIGZhYnJp
Y19pZDogJm9wZW5mYWJyaWM6OkZhYnJpY0lkLAorICAgICAgICBuZXQ6ICZOZXQsCisgICAgKSAt
PiBSZXN1bHQ8KFJvdXRlck5hbWUsIFJvdXRlciksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAg
bGV0IG9mciA9IHByb3htb3hfZnJyOjpvcGVuZmFicmljOjpPcGVuRmFicmljUm91dGVyIHsgbmV0
OiBuZXQuY2xvbmUoKSB9OworICAgICAgICBsZXQgcm91dGVyX2l0ZW0gPSBSb3V0ZXI6Ok9wZW5G
YWJyaWMob2ZyKTsKKyAgICAgICAgbGV0IGZycl93b3JkX2lkID0gRnJyV29yZDo6bmV3KGZhYnJp
Y19pZC50b19zdHJpbmcoKSk/OworICAgICAgICBsZXQgcm91dGVyX25hbWUgPSBSb3V0ZXJOYW1l
OjpPcGVuRmFicmljKGZycl93b3JkX2lkLmludG8oKSk7CisgICAgICAgIE9rKChyb3V0ZXJfbmFt
ZSwgcm91dGVyX2l0ZW0pKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29zcGZfaW50ZXJmYWNlKAor
ICAgICAgICBhcmVhOiAmb3NwZjo6QXJlYSwKKyAgICAgICAgaW50ZXJmYWNlOiAmb3NwZjo6SW50
ZXJmYWNlUHJvcGVydGllcywKKyAgICApIC0+IFJlc3VsdDwoSW50ZXJmYWNlLCBJbnRlcmZhY2VO
YW1lKSwgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgZnJyX2ludGVyZmFjZTogcHJveG1v
eF9mcnI6Om9zcGY6Ok9zcGZJbnRlcmZhY2UgPSBpbnRlcmZhY2UudG9fZnJyX2ludGVyZmFjZShh
cmVhKT87CisKKyAgICAgICAgbGV0IGludGVyZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3Nw
ZihpbnRlcmZhY2UubmFtZS5wYXJzZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNlLmlu
dG8oKSwgaW50ZXJmYWNlX25hbWUpKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29zcGZfZHVtbXlf
aW50ZXJmYWNlKAorICAgICAgICBmYWJyaWNfaWQ6ICZvc3BmOjpBcmVhLAorICAgICkgLT4gUmVz
dWx0PChJbnRlcmZhY2UsIEludGVyZmFjZU5hbWUpLCBhbnlob3c6OkVycm9yPiB7CisgICAgICAg
IGxldCBmcnJfd29yZCA9IEZycldvcmQ6Om5ldyhmYWJyaWNfaWQudG9fc3RyaW5nKCkpPzsKKyAg
ICAgICAgbGV0IGZycl9pbnRlcmZhY2UgPSBwcm94bW94X2Zycjo6b3NwZjo6T3NwZkludGVyZmFj
ZSB7CisgICAgICAgICAgICBhcmVhOiBmcnJfd29yZC50cnlfaW50bygpPywKKyAgICAgICAgICAg
IHBhc3NpdmU6IFNvbWUodHJ1ZSksCisgICAgICAgICAgICBuZXR3b3JrX3R5cGU6IE5vbmUsCisg
ICAgICAgIH07CisgICAgICAgIGxldCBpbnRlcmZhY2VfbmFtZSA9IEludGVyZmFjZU5hbWU6Ok9w
ZW5GYWJyaWMoZm9ybWF0ISgiZHVtbXlfe30iLCBmYWJyaWNfaWQpLnBhcnNlKCk/KTsKKyAgICAg
ICAgT2soKGZycl9pbnRlcmZhY2UuaW50bygpLCBpbnRlcmZhY2VfbmFtZSkpCisgICAgfQorCisg
ICAgZm4gYnVpbGRfb3BlbmZhYnJpY19pbnRlcmZhY2UoCisgICAgICAgIGZhYnJpY19pZDogJm9w
ZW5mYWJyaWM6OkZhYnJpY0lkLAorICAgICAgICBpbnRlcmZhY2U6ICZvcGVuZmFicmljOjpJbnRl
cmZhY2VQcm9wZXJ0aWVzLAorICAgICAgICBmYWJyaWNfY29uZmlnOiAmb3BlbmZhYnJpYzo6RmFi
cmljU2VjdGlvbiwKKyAgICAgICAgcm91dGVyX2lkOiBJcEFkZHIsCisgICAgKSAtPiBSZXN1bHQ8
KEludGVyZmFjZSwgSW50ZXJmYWNlTmFtZSksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0
IG11dCBmcnJfaW50ZXJmYWNlOiBwcm94bW94X2Zycjo6b3BlbmZhYnJpYzo6T3BlbkZhYnJpY0lu
dGVyZmFjZSA9CisgICAgICAgICAgICBpbnRlcmZhY2UudG9fZnJyX2ludGVyZmFjZShmYWJyaWNf
aWQsIHJvdXRlcl9pZC5pc19pcHY2KCkpPzsKKyAgICAgICAgLy8gSWYgbm8gc3BlY2lmaWMgaGVs
bG9faW50ZXJ2YWwgaXMgc2V0LCBnZXQgZGVmYXVsdCBvbmUgZnJvbSBmYWJyaWMKKyAgICAgICAg
Ly8gY29uZmlnCisgICAgICAgIGlmIGZycl9pbnRlcmZhY2UuaGVsbG9faW50ZXJ2YWwoKS5pc19u
b25lKCkgeworICAgICAgICAgICAgZnJyX2ludGVyZmFjZS5zZXRfaGVsbG9faW50ZXJ2YWwoZmFi
cmljX2NvbmZpZy5oZWxsb19pbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IGludGVy
ZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3BlbkZhYnJpYyhpbnRlcmZhY2UubmFtZS5wYXJz
ZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNlLmludG8oKSwgaW50ZXJmYWNlX25hbWUp
KQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJyaWNfZHVtbXlfaW50ZXJmYWNlKAorICAg
ICAgICBmYWJyaWNfaWQ6ICZvcGVuZmFicmljOjpGYWJyaWNJZCwKKyAgICAgICAgcm91dGVyX2lk
OiBJcEFkZHIsCisgICAgKSAtPiBSZXN1bHQ8KEludGVyZmFjZSwgSW50ZXJmYWNlTmFtZSksIGFu
eWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IGZycl93b3JkID0gRnJyV29yZDo6bmV3KGZhYnJp
Y19pZC50b19zdHJpbmcoKSk/OworICAgICAgICBsZXQgZnJyX2ludGVyZmFjZSA9IHByb3htb3hf
ZnJyOjpvcGVuZmFicmljOjpPcGVuRmFicmljSW50ZXJmYWNlIHsKKyAgICAgICAgICAgIGZhYnJp
Y19pZDogZnJyX3dvcmQuaW50bygpLAorICAgICAgICAgICAgaGVsbG9faW50ZXJ2YWw6IE5vbmUs
CisgICAgICAgICAgICBwYXNzaXZlOiBTb21lKHRydWUpLAorICAgICAgICAgICAgY3NucF9pbnRl
cnZhbDogTm9uZSwKKyAgICAgICAgICAgIGhlbGxvX211bHRpcGxpZXI6IE5vbmUsCisgICAgICAg
ICAgICBpc19pcHY2OiByb3V0ZXJfaWQuaXNfaXB2NigpLAorICAgICAgICB9OworICAgICAgICBs
ZXQgaW50ZXJmYWNlX25hbWUgPSBJbnRlcmZhY2VOYW1lOjpPcGVuRmFicmljKGZvcm1hdCEoImR1
bW15X3t9IiwgZmFicmljX2lkKS5wYXJzZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNl
LmludG8oKSwgaW50ZXJmYWNlX25hbWUpKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJy
aWNfZHVtbXlfcm91dGVtYXAoCisgICAgICAgIGZhYnJpY19pZDogJm9wZW5mYWJyaWM6OkZhYnJp
Y0lkLAorICAgICAgICByb3V0ZXJfaXA6IElwQWRkciwKKyAgICAgICAgc2VxOiB1MzIKKyAgICAp
IC0+IFJlc3VsdDxSb3V0ZU1hcCwgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgcm91dGVt
YXBfbmFtZSA9IFJvdXRlTWFwTmFtZTo6bmV3KCJvcGVuZmFicmljIi50b19vd25lZCgpKTsKKyAg
ICAgICAgLy8gY3JlYXRlIHJvdXRlLW1hcAorICAgICAgICBsZXQgcm91dGVtYXAgPSBSb3V0ZU1h
cCB7CisgICAgICAgICAgICBuYW1lOiByb3V0ZW1hcF9uYW1lLmNsb25lKCksCisgICAgICAgICAg
ICBzZXEsCisgICAgICAgICAgICBhY3Rpb246IEFjY2Vzc0FjdGlvbjo6UGVybWl0LAorICAgICAg
ICAgICAgbWF0Y2hlczogdmVjIVtSb3V0ZU1hcE1hdGNoOjpJcEFkZHJlc3MoQWNjZXNzTGlzdE5h
bWU6Om5ldyhmb3JtYXQhKAorICAgICAgICAgICAgICAgICJvcGVuZmFicmljX3tmYWJyaWNfaWR9
X2lwcyIKKyAgICAgICAgICAgICkpKV0sCisgICAgICAgICAgICBzZXRzOiB2ZWMhW1JvdXRlTWFw
U2V0OjpJcFNyYyhyb3V0ZXJfaXApXSwKKyAgICAgICAgfTsKKyAgICAgICAgT2socm91dGVtYXAp
CisgICAgfQorCisgICAgZm4gYnVpbGRfb3NwZl9kdW1teV9yb3V0ZW1hcCgKKyAgICAgICAgYXJl
YTogJm9zcGY6OkFyZWEsCisgICAgICAgIHJvdXRlcl9pcDogSXB2NEFkZHIsCisgICAgKSAtPiBS
ZXN1bHQ8Um91dGVNYXAsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IHJvdXRlbWFwX25h
bWUgPSBSb3V0ZU1hcE5hbWU6Om5ldygib3NwZiIudG9fb3duZWQoKSk7CisgICAgICAgIC8vIGNy
ZWF0ZSByb3V0ZS1tYXAKKyAgICAgICAgbGV0IHJvdXRlbWFwID0gUm91dGVNYXAgeworICAgICAg
ICAgICAgbmFtZTogcm91dGVtYXBfbmFtZS5jbG9uZSgpLAorICAgICAgICAgICAgc2VxOiAxMCwK
KyAgICAgICAgICAgIGFjdGlvbjogQWNjZXNzQWN0aW9uOjpQZXJtaXQsCisgICAgICAgICAgICBt
YXRjaGVzOiB2ZWMhW1JvdXRlTWFwTWF0Y2g6OklwQWRkcmVzcyhBY2Nlc3NMaXN0TmFtZTo6bmV3
KGZvcm1hdCEoCisgICAgICAgICAgICAgICAgIm9zcGZfe2FyZWF9X2lwcyIKKyAgICAgICAgICAg
ICkpKV0sCisgICAgICAgICAgICBzZXRzOiB2ZWMhW1JvdXRlTWFwU2V0OjpJcFNyYyhJcEFkZHI6
OmZyb20ocm91dGVyX2lwKSldLAorICAgICAgICB9OworCisgICAgICAgIE9rKHJvdXRlbWFwKQor
ICAgIH0KK30KLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m
by9wdmUtZGV2ZWwK