
From nobody Wed Jul  1 09:14:33 2020
Return-Path: <zhang.zheng@zte.com.cn>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 434473A0CA9 for <rift@ietfa.amsl.com>; Wed,  1 Jul 2020 02:18:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level: 
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OeMWKQRddDdf for <rift@ietfa.amsl.com>; Wed,  1 Jul 2020 02:18:21 -0700 (PDT)
Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.217.80.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4BA063A0CA6 for <rift@ietf.org>; Wed,  1 Jul 2020 02:18:19 -0700 (PDT)
Received: from mxct.zte.com.cn (unknown [192.168.164.217]) by Forcepoint Email with ESMTPS id 6C085AF8C1CC0DDC4567; Wed,  1 Jul 2020 17:18:17 +0800 (CST)
Received: from mse-fl2.zte.com.cn (unknown [10.30.14.239]) by Forcepoint Email with ESMTPS id 811AEFF816955D538339; Wed,  1 Jul 2020 17:18:12 +0800 (CST)
Received: from njxapp03.zte.com.cn ([10.41.132.202]) by mse-fl2.zte.com.cn with SMTP id 0619HXi1066817; Wed, 1 Jul 2020 17:18:10 +0800 (GMT-8) (envelope-from zhang.zheng@zte.com.cn)
Received: from mapi (njxapp01[null]) by mapi (Zmail) with MAPI id mid203; Wed, 1 Jul 2020 17:18:10 +0800 (CST)
Date: Wed, 1 Jul 2020 17:18:10 +0800 (CST)
X-Zmail-TransId: 2af95efc54d20bee5966
X-Mailer: Zmail v1.0
Message-ID: <202007011718102617511@zte.com.cn>
In-Reply-To: <B35D4561-DB7F-4A32-AA62-1FB68156E7B4@gmail.com>
References: 95E6F23B-AC7D-4379-842E-01CB1B2D2BD6@juniper.net, B35D4561-DB7F-4A32-AA62-1FB68156E7B4@gmail.com
Mime-Version: 1.0
From: <zhang.zheng@zte.com.cn>
To: <brunorijsman@gmail.com>
Cc: <prz@juniper.net>, <alankar_sharma@comcast.com>, <pthubert@cisco.com>, <fl0w@yandex-team.ru>, <zzhang_ietf@hotmail.com>, <wei.yuehua@zte.com.cn>, <mashaowen@gmail.com>, <xufeng.liu.ietf@gmail.com>, <jefftant.ietf@gmail.com>, <zzhang@juniper.net>, <rift@ietf.org>
Content-Type: multipart/mixed; boundary="=====_001_next====="
X-MAIL: mse-fl2.zte.com.cn 0619HXi1066817
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/BGHld1w5wY3hBrJ3Y6yjGEq4hLU>
X-Mailman-Approved-At: Wed, 01 Jul 2020 09:14:31 -0700
Subject: Re: [Rift]  =?utf-8?q?Dear_RIFT_protocol_and_RIFT_YANG_co-author=2C_p?= =?utf-8?q?ls_review_theupdateof_RIFT_YANG_model?=
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Jul 2020 09:18:25 -0000

--=====_001_next=====
Content-Type: multipart/related;
	boundary="=====_002_next====="


--=====_002_next=====
Content-Type: multipart/alternative;
	boundary="=====_003_next====="


--=====_003_next=====
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: base64

SGkgQnJ1bm8sDQoNCg0KDQoNCg0KDQpUaGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGNvbW1l
bnRzIQ0KDQoNClBsZWFzZSBmaW5kIG15IGFuc3dlciBpbmxpbmUgd2l0aCBTYW5keT4uDQoNCg0K
DQoNCg0KDQpUaGFua3MsDQoNCg0KU2FuZHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQrl
jp/lp4vpgq7ku7YNCg0KDQoNCuWPkeS7tuS6uu+8mkJydW5vUmlqc21hbiA8YnJ1bm9yaWpzbWFu
QGdtYWlsLmNvbT4NCuaUtuS7tuS6uu+8muW8oOW+gTAwMDA3OTQwOw0K5oqE6YCB5Lq677yaQW50
b25pIFByenlnaWVuZGEgPHByekBqdW5pcGVyLm5ldD47YWxhbmthcl9zaGFybWFAY29tY2FzdC5j
b20gPGFsYW5rYXJfc2hhcm1hQGNvbWNhc3QuY29tPjtwdGh1YmVydEBjaXNjby5jb20gPHB0aHVi
ZXJ0QGNpc2NvLmNvbT47Zmwwd0B5YW5kZXgtdGVhbS5ydSA8Zmwwd0B5YW5kZXgtdGVhbS5ydT47
enpoYW5nX2lldGZAaG90bWFpbC5jb20gPHp6aGFuZ19pZXRmQGhvdG1haWwuY29tPjvprY/mnIjl
jY4wMDAxOTY1NTttYXNoYW93ZW5AZ21haWwuY29tIDxtYXNoYW93ZW5AZ21haWwuY29tPjt4dWZl
bmcubGl1LmlldGZAZ21haWwuY29tIDx4dWZlbmcubGl1LmlldGZAZ21haWwuY29tPjtqZWZmdGFu
dC5pZXRmQGdtYWlsLmNvbSA8amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20+O3p6aGFuZ0BqdW5pcGVy
Lm5ldCA8enpoYW5nQGp1bmlwZXIubmV0PjsNCuaXpSDmnJ8g77yaMjAyMOW5tDA25pyIMzDml6Ug
MTg6MTcNCuS4uyDpopgg77yaUmU6IERlYXIgUklGVCBwcm90b2NvbCBhbmQgUklGVCBZQU5HIGNv
LWF1dGhvciwgcGxzIHJldmlldyB0aGV1cGRhdGVvZiBSSUZUIFlBTkcgbW9kZWwNCg0KDQoNCg0K
SSBoYXZlIG5vdCB5ZXQgZmluaXNoZWQgcmV2aWV3aW5nIHRoZSBjb21wbGV0ZSBkYXRhIG1vZGVs
LCBidXQgaGVyZSBhcmUgc29tZSBpbml0aWFsIGFkZGl0aW9uYWwgY29tbWVudHMgZnJvbSBtZToN
Cg0KDQoNCm1vZHVsZTogaWV0Zi1yaWZ0DQoNCiAgYXVnbWVudCAvcnQ6cm91dGluZy9ydDpjb250
cm9sLXBsYW5lLXByb3RvY29scy9ydDpjb250cm9sLXBsYW5lLXByb3RvY29sOg0KDQogICAgKy0t
cncgcmlmdCENCg0KICAgICAgICstLXJ3IG5vZGUNCg0KICAgICAgIHwgICstLXJ3IG5hbWU/ICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZw0KDQogICAgICAgfCAgKy0tcncgbGV2ZWw/ICAg
ICAgICAgICAgICAgICAgICAgICAgbGV2ZWwNCg0KDQpXZSBuZWVkIHRvIGRpc3Rpbmd1aXNoIGNv
bmZpZ3VyZWQtbGV2ZWwgdnMgZGVyaXZlZC1sZXZlbCAoc2VlIHNlY3Rpb24gNC4yLjcuMS4gaW4g
ZHJhZnQtaWV0Zi1yaWZ0LXJpZnQtMTIpLg0KDQpTYW5keT4gSW4gZmFjdCB0aGlzIGlzIHRoZSBl
ZmZlY3RpdmUgdmFsdWUgaW4gdGhlIGRldmljZS4gSXQncyBub3QgZGlyZWN0bHkgYWNjb3JkaW5n
IHRvIHRoZSBDTEkgY29uZmlndXJhdGlvbi4gDQoNClRoZSBsZWFmIGhhbCBiZWxvdyBpbmRpY2F0
ZXMgdGhlIHBvdGVudGlhbCBkcml2ZWQgbGV2ZWwgdmFsdWUuIEl0IHNlZW1zIGxpa2UgaXQgaXMg
bm90IG5lY2Vzc2FyeSB0byBhZGQgYSBkZWRpY2F0ZWQgY29uZmlndXJlZCB2YWx1ZSBmb3IgaXQ/
IFdoYXQgZG8geW91IHRoaW5rIG9mIGl0Pw0KDQoNCg0KDQogICAgICAgfCAgKy0tcncgc3lzdGVt
LWlkICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLWlkDQoNCiAgICAgICB8ICArLS1ydyBwb2Q/
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzINCg0KICAgICAgIHwgICstLXJ3IG92ZXJs
b2FkPyAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4NCg0KICAgICAgIHwgICstLXJ3IG5vZGUt
Y2FwYWJpbGl0eQ0KDQoNClRoZSBuZWlnaGJvcnMgY29udGFpbmVyIChiZWxvdykgc2hvdWxkIGNv
bnRhaW4gdGhlIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5IGVhY2ggbmVpZ2hib3IuDQoNClNh
bmR5PiBPSy4gSSdsbCBhZGQgaXQuIA0KDQoNCg0KDQogICAgICAgfCAgfCAgKy0tcm8gcHJvdG9j
b2wtbWlub3ItdmVyc2lvbj8gICB1aW50MTYNCg0KDQpUaGlzIHNob3VsZCBub3QgYmUgb3B0aW9u
YWw7IHRoZSBSSUZUIGVuZ2luZSBhbHdheXMgaGFzIGEgc3BlY2lmaWMgbWlub3IgdmVyc2lvbiBh
bmQgaXQgaXMgYSByZXF1aXJlZCBmaWVsZCBpbiB0aGUgVGhyaWZ0IG1vZGVsLg0KDQpTYW5keT4g
T0suIEknbGwgbW9kaWZ5IGl0IHRvIG1hbmRhdG9yeS4gDQoNCg0KDQoNCiAgICAgICB8ICB8ICAr
LS1ybyBoaWVyYXJjaHktaW5kaWNhdGlvbnM/ICAgIGVudW1lcmF0aW9uDQoNCiAgICAgICB8ICB8
ICArLS1ydyBmbG9vZC1yZWR1Y2luZy1jYXBhYmxlPyAgIGJvb2xlYW4ge2Zsb29kLXJlZHVjaW5n
fT8NCg0KDQpMaW5ndWlzdGljIGhhaXJzcGxpdHRpbmc6IGlzIGNhcGFibGUgdGhlIHJpZ2h0IHdv
cmQ/IElmIHdlIHNldCB0aGlzIHRvIGZhbHNlLCBpdCBvbmx5IG1lYW5zIHRoYXQgZmxvb2QgcmVk
dWN0aW9uIGhhcyBiZWVuIGRpc2FibGVkLCBub3QgdGhhdCB0aGUgbm9kZSBpcyBub3QgY2FwYWJs
ZSBvZiBmbG9vZCByZWR1Y3Rpb24uDQoNClNhbmR5PiBZb3UgYXJlIHJpZ2h0LiBCdXQgSSBtb2Rp
ZmllZCB0aGUgbmFtZSBhY2NvcmRpbmcgdG8gVG9ueSdzIGNvbW1lbnRzLiBEbyB5b3UgdGhpbmsg
aXQncyBiZXR0ZXIgdG8gbW9kaWZ5IHRoZSBmZWF0dXJlIG5hbWUgdG8gImZsb29kLXJlZHVjaW5n
IiBvdGhlciB0aGFuIGxlYWYgbmFtZT8gIA0KDQoNCg0KDQogICAgICAgfCAgfCAgKy0tcncgbm9u
Y2UtZGVsdGE/ICAgICAgICAgICAgICB1aW50OCB7bm9uY2UtZGVsdGEtYWRqdXN0fT8NCg0KDQpX
aHkgaXMgdGhpcyB1bmRlciBjYXBhYmlsaXRpZXM/DQoNClNhbmR5PiBJJ2xsIG1vdmUgdGhpcyBs
ZWFmIG91dC4NCg0KDQoNCg0KICAgICAgIHwgICstLXJ3IGxpZS1pcHY0LW11bHRpY2FzdC1hZGRy
ZXNzPyAgIHJ0LXR5cGVzOmlwdjQtbXVsdGljYXN0LWdyb3VwLWFkZHJlc3MNCg0KICAgICAgIHwg
ICstLXJ3IGxpZS1pcHY2LW11bHRpY2FzdC1hZGRyZXNzPyAgIHJ0LXR5cGVzOmlwdjYtbXVsdGlj
YXN0LWdyb3VwLWFkZHJlc3MNCg0KICAgICAgIHwgICstLXJ3IGxpbmstY2FwYWJpbGl0eQ0KDQoN
ClRoZSBsaW5rIGNhcGFiaWxpdGllcyBhcmUgcGVyIGxpbmssIHNvIHRoZXkgc2hvdWxkIGJlIGlu
IHRoZSBuZWlnaGJvciB0YWJsZSBiZWxvdy4NCg0KU2FuZHk+IEkgd2lsbCBtb3ZlIGl0IHRvIGlu
dGVyZmFjZSBhbmQgbmVpZ2hib3IuIEJ1dCBkbyB3ZSBuZWVkIGEgZ2xvYmFsIHNldHRpbmcgZm9y
IGl0Pw0KDQoNCg0KDQogICAgICAgfCAgfCAgKy0tcncgYmZkPyAgICAgICAgICAgICAgICAgICAg
IGJvb2xlYW4ge2JmZH0/DQoNCiAgICAgICB8ICB8ICArLS1ydyB2NC1mb3J3YXJkaW5nLWNhcGFi
bGU/ICAgYm9vbGVhbg0KDQogICAgICAgfCAgKy0tcncgZmxvb2QtcG9ydD8gICAgICAgICAgICAg
ICAgICAgaW5ldDpwb3J0LW51bWJlcg0KDQogICAgICAgfCAgKy0tcncgbGllLXJ4LXBvcnQ/ICAg
ICAgICAgICAgICAgICAgaW5ldDpwb3J0LW51bWJlcg0KDQogICAgICAgfCAgKy0tcncgaG9sZHRp
bWU/ICAgICAgICAgICAgICAgICAgICAgcnQtdHlwZXM6dGltZXItdmFsdWUtc2Vjb25kczE2DQoN
CiAgICAgICB8ICArLS1ydyB0aWRlLWdlbmVyYXRpb24taW50ZXJ2YWw/ICAgICBydC10eXBlczp0
aW1lci12YWx1ZS1zZWNvbmRzMTYNCg0KICAgICAgIHwgICstLXJ3IHRpZS1zZWN1cml0eS1rZXkt
aWQ/ICAgICAgICAgIHVpbnQzMiB7YXV0aGVudGljYXRpb259Pw0KDQogICAgICAgfCAgKy0tcncg
bG9jYWwtbm9uY2U/ICAgICAgICAgICAgICAgICAgdWludDE2DQoNCg0KDQpUaGlzIHNob3VsZCBi
ZSBybyBpbnN0ZWFkIG9mIHJ3DQoNCkRpc3Rpbmd1aXNoIG5vbmNlLWxvY2FsIChzZW50KSB2ZXJz
dXMgbm9uY2UtcmVtb3RlIChyZWNlaXZlZCkNCk5vbmNlcyBhcmUgcGVyIGludGVyZmFjZSwgc28g
aXQgc2hvdWxkIGJlIGluIHRoZSBuZWlnaGJvciB0YWJsZSBiZWxvdw0KDQpTYW5keT4gSXMgdGhp
cyB2YWx1ZSBjYW4gYmUgYWRqdXN0ZWQ/IA0KDQpEbyB3ZSB1c2UgdGhlIHNhbWUgbm9uY2Ugb24g
YWxsIHRoZSBpbnRlcmZhY2U/IElmIG5vdCwgZG8geW91IHRoaW5rIGl0J3MgT0sgdG8gbW92ZSB0
aGUgbGVhZiB0byBsaW5rLWlkLXBhaXI/IA0KDQoNCg0KDQogICAgICAgfCAgKy0tcm8gaW50ZXJm
YWNlcw0KDQogICAgICAgfCAgfCAgKy0tcm8gaW50ZXJmYWNlKiBbbmFtZV0NCg0KICAgICAgIHwg
IHwgICAgICstLXJvIGxvY2FsLWxpbmstaWQ/ICAgICAgICAgICAgICAgICBsaW5raWQtdHlwZQ0K
DQogICAgICAgfCAgfCAgICAgKy0tcm8gbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
OmludGVyZmFjZS1yZWYNCg0KDQpZQU5HIG5ld2JpZSBxdWVzdGlvbiwgYWxsIHRhYmxlcyBpbiB0
aGlzIGRvY3VtZW50IGhhdmUgdGhpcyBhcHByb2FjaCB1c2luZyAyIGxldmVscyBvZiBuZXN0aW5n
LiBXaHkgaXMgaXQgbm90IHNpbXBseSAxIGxldmVsIG9mIG5lc3RpbmcgbGlrZSB0aGlzOg0KDQpT
YW5keT4gT0suIEknbGwgbW9kaWZ5IGl0Lg0KDQoNCg0KDQogICstLXJvIGludGVyZmFjZXMNCg0K
ICAgICArLS1ybyBpbnRlcmZhY2UqIFtuYW1lXQ0KDQogICAgICstLXJvIGxvY2FsLWxpbmstaWQN
Cg0KICAgICArLS1ybyBuYW1lDQoNCiAgICAgLi4uDQoNCg0KDQogICAgICAgfCAgfCAgICAgKy0t
cm8gYWRkcmVzcz8gICAgICAgICAgICAgICAgICAgICAgIGluZXQ6aXAtYWRkcmVzcw0KDQoNCg0K
VGhlIGFkZHJlc3Mgb2YgdGhlIGludGVyZmFjZSBkb2VzIG5vdCBiZWxvbmcgaGVyZSBpbiB0aGUg
UklGVCBtb2RlbDsgdGhlcmUgaXMgYSBzZXBhcmF0ZSBJRVRGIFlBTkcgZGF0YSBtb2RlbCBmb3Ig
aW50ZXJmYWNlcy4NCllvdSBjb3VsZCBtYWtlIGFuIGFyZ3VtZW50IHRoYXQgdGhlIHNvdXJjZSBh
ZGRyZXNzIHVzZWQgZm9yIHNlbmRpbmcgUklGVCBwYWNrZXRzIGNvdWxkIGJlIG1vZGVsZWQ7IGlm
IHNvLCBtdXN0IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIGxpZS1pcHY0LXNvdXJjZS1hZGRyZXNz
LCBsaWUtaXB2Ni1zb3VyY2UtYWRkcmVzcyAoTElFcyBhcmUgc2VudCBCT1RIIG9uIElQdjQgYW5k
IElQdjYpLCBmbG9vZGluZy1zb3VyY2UtYWRkcmVzcyAoZmxvb2RpbmcgaXMgZG9uZSBvbiBJUHY0
IE9SIElQdjYpLg0KDQpTYW5keT4gT0suIEknbGwgYWRkIGZvdXIgbGVhdmVzIGluc3RlYWQgb2Yg
aXQuDQoNCg0KDQoNCiAgICAgICB8ICB8ICAgICArLS1ybyBpZi1pbmRleD8gICAgICAgICAgICAg
ICAgICAgICAgdWludDMyDQoNCg0KQmVsb25ncyBpbiB0aGUgaW50ZXJmYWNlIFlBTkcgbW9kZWws
IG5vdCBpbiB0aGUgUklGVCBZQU5HIG1vZGVsLg0KDQpTYW5keT4gT0suIEknbGwgZGVsZXRlIGl0
Lg0KDQoNCg0KDQogICAgICAgfCAgfCAgICAgKy0tcm8gZGlyZWN0aW9uLXR5cGU/ICAgICAgICAg
ICAgICAgIGVudW1lcmF0aW9uDQoNCiAgICAgICB8ICB8ICAgICArLS1ybyB5b3UtYXJlLWZsb29k
LXJlcGVhdGVyPyAgICAgICAgYm9vbGVhbg0KDQogICAgICAgfCAgfCAgICAgKy0tcm8gbm90LWEt
enRwLW9mZmVyPyAgICAgICAgICAgICAgIGJvb2xlYW4NCg0KICAgICAgIHwgIHwgICAgICstLXJv
IHlvdS1hcmUtc2VuZGluZy10b28tcXVpY2tseT8gICBib29sZWFuDQoNCiAgICAgICB8ICArLS1y
dyBtaXNjYWJsZWQtbGlua3MqICAgICAgICAgICAgICBsaW5raWQtdHlwZQ0KDQogICAgICAgfCAg
Ky0tcncgKGFsZ29yaXRobS10eXBlKT8NCg0KICAgICAgIHwgIHwgICstLTooc3BmKQ0KDQogICAg
ICAgfCAgfCAgKy0tOihhbGwtcGF0aCkNCg0KICAgICAgIHwgICstLXJvIGhhbD8gICAgICAgICAg
ICAgICAgICAgICAgICAgIGxldmVsDQoNCiAgICAgICB8ICArLS1ybyB2b2wtbGlzdA0KDQogICAg
ICAgfCAgfCAgKy0tcm8gdm9sKiBbc3lzdGVtLWlkXQ0KDQogICAgICAgfCAgfCAgICAgKy0tcm8g
b2ZmZXJlZC1sZXZlbD8gICBsZXZlbA0KDQogICAgICAgfCAgfCAgICAgKy0tcm8gbmFtZT8gICAg
ICAgICAgICBzdHJpbmcNCg0KICAgICAgIHwgIHwgICAgICstLXJvIGxldmVsPyAgICAgICAgICAg
bGV2ZWwNCg0KICAgICAgIHwgIHwgICAgICstLXJvIHN5c3RlbS1pZCAgICAgICAgc3lzdGVtLWlk
DQoNCiAgICAgICB8ICB8ICAgICArLS1ybyBwb2Q/ICAgICAgICAgICAgIHVpbnQzMg0KDQogICAg
ICAgfCAgKy0tcncgaW5zdGFuY2UtbGFiZWw/ICAgICAgICAgICAgICAgdWludDMyDQoNCiAgICAg
ICArLS1ybyBuZWlnaGJvcg0KDQoNCg0KSW4gUklGVCB5b3UgY2Fubm90IGhhdmUgbXVsdGlwbGUg
KD4xKSBuZWlnaGJvcnMgcGVyIGludGVyZmFjZS4NCg0KVGh1cywgYSBuZWlnaGJvciBzaG91bGQg
YmUgYW4gb3B0aW9uYWwgc2luZ2xlLWVsZW1lbnQgY29udGFpbmVyIHVuZGVyIG5laWdoYm9yLg0K
RXZlbiBpZiB5b3UgZG8gbm90IGFncmVlIHdpdGggdGhhdCBhbmQgd2FudCB0byBrZWVwIG5laWdo
Ym9yIG91cnNpZGUgb2YgaW50ZXJmYWNlLCBpdCBzaG91bGQgYmUgdW5kZXIgbm9kZSBhbmQgbm90
IHVuZGVyIHJpZnQNCg0KU2FuZHk+IEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50LiBCdXQgdGhlcmUg
bWF5IGJlIG11bHRpcGxlIHBhcmFsbGVsIGxpbmtzIGNvbm5lY3QgdG8gYSBzYW1lIG5laWdoYm9y
LCByaWdodD8NCg0KDQoNCg0KICAgICAgIHwgICstLXJvIG5icnMqIFtzeXN0ZW0taWRdDQoNCg0K
U3BlbGwgbmJycyBvdXQgKG5laWdoYm9ycykNCg0KU2FuZHk+IE5vIHByb2JsZW0uIEknbGwgbW9k
aWZ5IGl0Lg0KDQoNCg0KDQogICAgICAgfCAgICAgKy0tcm8gbmFtZT8gICAgICAgICAgIHN0cmlu
Zw0KDQogICAgICAgfCAgICAgKy0tcm8gbGV2ZWw/ICAgICAgICAgIGxldmVsDQoNCiAgICAgICB8
ICAgICArLS1ybyBzeXN0ZW0taWQgICAgICAgc3lzdGVtLWlkDQoNCiAgICAgICB8ICAgICArLS1y
byBwb2Q/ICAgICAgICAgICAgdWludDMyDQoNCiAgICAgICB8ICAgICArLS1ybyBhZGRyZXNzPyAg
ICAgICAgaW5ldDppcC1hZGRyZXNzDQoNCiAgICAgICB8ICAgICArLS1ybyBjb3N0PyAgICAgICAg
ICAgdWludDMyDQoNCiAgICAgICB8ICAgICArLS1ybyByZW1vdGUtbm9uY2U/ICAgdWludDE2DQoN
CiAgICAgICB8ICAgICArLS1ybyBsaW5rLWlkLXBhaXIqIFtyZW1vdGUtaWRdDQoNCiAgICAgICB8
ICAgICB8ICArLS1ybyBsb2NhbC1pZD8gICAgICAgICAgICAgICAgdWludDMyDQoNCiAgICAgICB8
ICAgICB8ICArLS1ybyByZW1vdGUtaWQgICAgICAgICAgICAgICAgdWludDMyDQoNCiAgICAgICB8
ICAgICB8ICArLS1ybyBpZi1pbmRleD8gICAgICAgICAgICAgICAgdWludDMyDQoNCiAgICAgICB8
ICAgICB8ICArLS1ybyBpZi1uYW1lPyAgICAgICAgICAgICAgICAgaWY6aW50ZXJmYWNlLXJlZg0K
DQogICAgICAgfCAgICAgfCAgKy0tcm8gYmZkLXVwPyAgICAgICAgICAgICAgICAgIGJvb2xlYW4N
Cg0KICAgICAgIHwgICAgIHwgICstLXJvIG91dGVyLXNlY3VyaXR5LWtleS1pZD8gICB1aW50OCB7
YXV0aGVudGljYXRpb259Pw0KDQogICAgICAgfCAgICAgfCAgKy0tcm8gYWRkcmVzcy1mYW1pbGll
cw0KDQogICAgICAgfCAgICAgfCAgICAgKy0tcm8gYWRkcmVzcy1mYW1pbHkqIFthZGRyZXNzLWZh
bWlseV0NCg0KICAgICAgIHwgICAgIHwgICAgICAgICstLXJvIGFkZHJlc3MtZmFtaWx5ICAgIGlh
bmEtcnQtdHlwZXM6YWRkcmVzcy1mYW1pbHkNCg0KICAgICAgIHwgICAgICstLXJvIGJhbmR3aWR0
aD8gICAgICB1aW50MzINCg0KICAgICAgIHwgICAgICstLXJvIHN0YXRlPyAgICAgICAgICBlbnVt
ZXJhdGlvbg0KDQogICAgICAgKy0tcm8gZGF0YWJhc2UNCg0KDQpUaGUgZGF0YWJhc2UgY29udGFp
bmVyIHNob3VsZCBiZSB1bmRlciBub2RlIGFuZCBub3QgdW5kZXIgcmlmdA0KDQpTYW5keT4gWWVz
LiBUaGUgZGF0YWJhc2UgY29udGFpbmVyIGlzIHVuZGVyIG5vZGUsIG5vdCB1bmRlciByaWZ0LiBQ
bGVhc2UgcmVjb25maXJtIGl0LiBUaGFuayB5b3UgdmVyeSBtdWNoIQ0KDQoNCg0KDQogICAgICAg
fCAgKy0tcm8gdGllcyogW2RpcmVjdGlvbi10eXBlIG9yaWdpbmF0b3IgdGllLXR5cGUgdGllLW51
bWJlcl0NCg0KICAgICAgIHwgICAgICstLXJvIGRpcmVjdGlvbi10eXBlICAgICAgICAgIGVudW1l
cmF0aW9uDQoNCiAgICAgICB8ICAgICArLS1ybyBvcmlnaW5hdG9yICAgICAgICAgICAgICBzeXN0
ZW0taWQNCg0KICAgICAgIHwgICAgICstLXJvIHRpZS10eXBlICAgICAgICAgICAgICAgIGVudW1l
cmF0aW9uDQoNCiAgICAgICB8ICAgICArLS1ybyB0aWUtbnVtYmVyICAgICAgICAgICAgICB1aW50
MzINCg0KICAgICAgIHwgICAgICstLXJvIHNlcT8gICAgICAgICAgICAgICAgICAgIHVpbnQ2NA0K
DQogICAgICAgfCAgICAgKy0tcm8gb3JpZ2luYXRpb24tdGltZT8gICAgICAgdWludDMyDQoNCiAg
ICAgICB8ICAgICArLS1ybyBvcmlnaW5hdGlvbi1saWZldGltZT8gICB1aW50MzINCg0KICAgICAg
IHwgICAgICstLXJvIG5vZGUNCg0KICAgICAgIHwgICAgIHwgICstLXJvIG5hbWU/ICAgICAgICAg
ICAgICBzdHJpbmcNCg0KICAgICAgIHwgICAgIHwgICstLXJvIGxldmVsPyAgICAgICAgICAgICBs
ZXZlbA0KDQogICAgICAgfCAgICAgfCAgKy0tcm8gc3lzdGVtLWlkICAgICAgICAgIHN5c3RlbS1p
ZA0KDQogICAgICAgfCAgICAgfCAgKy0tcm8gcG9kPyAgICAgICAgICAgICAgIHVpbnQzMg0KDQog
ICAgICAgfCAgICAgfCAgKy0tcm8gbm9kZS1jYXBhYmlsaXR5DQoNCiAgICAgICB8ICAgICB8ICB8
ICArLS1ybyBwcm90b2NvbC1taW5vci12ZXJzaW9uPyAgIHVpbnQxNg0KDQogICAgICAgfCAgICAg
fCAgfCAgKy0tcm8gaGllcmFyY2h5LWluZGljYXRpb25zPyAgICBlbnVtZXJhdGlvbg0KDQogICAg
ICAgfCAgICAgfCAgfCAgKy0tcm8gZmxvb2QtcmVkdWNpbmctY2FwYWJsZT8gICBib29sZWFuIHtm
bG9vZC1yZWR1Y2luZ30/DQoNCiAgICAgICB8ICAgICB8ICB8ICArLS1ybyBub25jZS1kZWx0YT8g
ICAgICAgICAgICAgIHVpbnQ4IHtub25jZS1kZWx0YS1hZGp1c3R9Pw0KDQogICAgICAgfCAgICAg
fCAgKy0tcm8gb3ZlcmxvYWQ/ICAgICAgICAgIGJvb2xlYW4NCg0KICAgICAgIHwgICAgIHwgICst
LXJvIHN0YXJ0dXAtdGltZT8gICAgICB1aW50NjQNCg0KICAgICAgIHwgICAgIHwgICstLXJvIG5l
aWdoYm9ycyogW3N5c3RlbS1pZF0NCg0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIG5hbWU/ICAg
ICAgICAgICBzdHJpbmcNCg0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIGxldmVsPyAgICAgICAg
ICBsZXZlbA0KDQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gc3lzdGVtLWlkICAgICAgIHN5c3Rl
bS1pZA0KDQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gcG9kPyAgICAgICAgICAgIHVpbnQzMg0K
DQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gYWRkcmVzcz8gICAgICAgIGluZXQ6aXAtYWRkcmVz
cw0KDQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gY29zdD8gICAgICAgICAgIHVpbnQzMg0KDQog
ICAgICAgfCAgICAgfCAgfCAgKy0tcm8gcmVtb3RlLW5vbmNlPyAgIHVpbnQxNg0KDQogICAgICAg
fCAgICAgfCAgfCAgKy0tcm8gbGluay1pZC1wYWlyKiBbcmVtb3RlLWlkXQ0KDQogICAgICAgfCAg
ICAgfCAgfCAgfCAgKy0tcm8gbG9jYWwtaWQ/ICAgICAgICAgICAgICAgIHVpbnQzMg0KDQogICAg
ICAgfCAgICAgfCAgfCAgfCAgKy0tcm8gcmVtb3RlLWlkICAgICAgICAgICAgICAgIHVpbnQzMg0K
DQogICAgICAgfCAgICAgfCAgfCAgfCAgKy0tcm8gaWYtaW5kZXg/ICAgICAgICAgICAgICAgIHVp
bnQzMg0KDQogICAgICAgfCAgICAgfCAgfCAgfCAgKy0tcm8gaWYtbmFtZT8gICAgICAgICAgICAg
ICAgIGlmOmludGVyZmFjZS1yZWYNCg0KICAgICAgIHwgICAgIHwgIHwgIHwgICstLXJvIGJmZC11
cD8gICAgICAgICAgICAgICAgICBib29sZWFuDQoNCiAgICAgICB8ICAgICB8ICB8ICB8ICArLS1y
byBvdXRlci1zZWN1cml0eS1rZXktaWQ/ICAgdWludDgge2F1dGhlbnRpY2F0aW9ufT8NCg0KICAg
ICAgIHwgICAgIHwgIHwgIHwgICstLXJvIGFkZHJlc3MtZmFtaWxpZXMNCg0KICAgICAgIHwgICAg
IHwgIHwgIHwgICAgICstLXJvIGFkZHJlc3MtZmFtaWx5KiBbYWRkcmVzcy1mYW1pbHldDQoNCiAg
ICAgICB8ICAgICB8ICB8ICB8ICAgICAgICArLS1ybyBhZGRyZXNzLWZhbWlseSAgICBpYW5hLXJ0
LXR5cGVzOmFkZHJlc3MtZmFtaWx5DQoNCiAgICAgICB8ICAgICB8ICB8ICArLS1ybyBiYW5kd2lk
dGg/ICAgICAgdWludDMyDQoNCiAgICAgICB8ICAgICB8ICArLS1ybyBtaXNjYWJsZWQtbGlua3Mq
ICAgbGlua2lkLXR5cGUNCg0KICAgICAgIHwgICAgICstLXJvIHByZWZpeA0KDQogICAgICAgfCAg
ICAgICAgKy0tcm8gcHJlZml4PyAgICAgICAgICAgICAgaW5ldDppcC1wcmVmaXgNCg0KICAgICAg
IHwgICAgICAgICstLXJvICh0eXBlKT8NCg0KICAgICAgIHwgICAgICAgIHwgICstLToocHJlZml4
KQ0KDQogICAgICAgfCAgICAgICAgfCAgKy0tOihwb3NpdGl2ZS1kaXNhZ2dyZWdhdGlvbikNCg0K
ICAgICAgIHwgICAgICAgIHwgICstLToobmVnYXRpdmUtZGlzYWdncmVnYXRpb24pDQoNCiAgICAg
ICB8ICAgICAgICB8ICArLS06KGV4dGVybmFsKQ0KDQogICAgICAgfCAgICAgICAgfCAgKy0tOihw
b3NpdGl2ZS1leHRlcm5hbC1kaXNhZ2dyZWdhdGlvbikNCg0KICAgICAgIHwgICAgICAgIHwgICst
LToocGdwKQ0KDQogICAgICAgfCAgICAgICAgKy0tcm8gbWV0cmljPyAgICAgICAgICAgICAgdWlu
dDMyDQoNCiAgICAgICB8ICAgICAgICArLS1ybyB0YWdzKiAgICAgICAgICAgICAgICB1aW50NjQN
Cg0KICAgICAgIHwgICAgICAgICstLXJvIG1vbm90b25pYy1jbG9jaw0KDQogICAgICAgfCAgICAg
ICAgfCAgKy0tcm8gcHJlZml4LXNlcXVlbmNlLXR5cGUNCg0KICAgICAgIHwgICAgICAgIHwgICAg
ICstLXJvIHRpbWVzdGFtcCAgICAgICAgIGllZWU4MDItMWFzLXRpbWVzdGFtcC10eXBlDQoNCiAg
ICAgICB8ICAgICAgICB8ICAgICArLS1ybyB0cmFuc2FjdGlvbi1pZD8gICB1aW50OA0KDQogICAg
ICAgfCAgICAgICAgKy0tcm8gbG9vcGJhY2s/ICAgICAgICAgICAgYm9vbGVhbg0KDQogICAgICAg
fCAgICAgICAgKy0tcm8gZGlyZWN0bHktYXR0YWNoZWQ/ICAgYm9vbGVhbg0KDQogICAgICAgfCAg
ICAgICAgKy0tcm8gZnJvbS1saW5rPyAgICAgICAgICAgbGlua2lkLXR5cGUNCg0KICAgICAgICst
LXJvIGt2LXN0b3JlDQoNCiAgICAgICAgICArLS1ybyBrdnMqIFtrdnMtaW5kZXhdDQoNCiAgICAg
ICAgICAgICArLS1ybyBrdnMtaW5kZXggICAgdWludDMyDQoNCiAgICAgICAgICAgICArLS1ybyBr
dnMtdGllDQoNCiAgICAgICAgICAgICAgICArLS1ybyBkaXJlY3Rpb24tdHlwZT8gICAgICAgICBl
bnVtZXJhdGlvbg0KDQogICAgICAgICAgICAgICAgKy0tcm8gb3JpZ2luYXRvcj8gICAgICAgICAg
ICAgc3lzdGVtLWlkDQoNCiAgICAgICAgICAgICAgICArLS1ybyB0aWUtdHlwZT8gICAgICAgICAg
ICAgICBlbnVtZXJhdGlvbg0KDQogICAgICAgICAgICAgICAgKy0tcm8gdGllLW51bWJlcj8gICAg
ICAgICAgICAgdWludDMyDQoNCiAgICAgICAgICAgICAgICArLS1ybyBzZXE/ICAgICAgICAgICAg
ICAgICAgICB1aW50NjQNCg0KICAgICAgICAgICAgICAgICstLXJvIG9yaWdpbmF0aW9uLXRpbWU/
ICAgICAgIHVpbnQzMg0KDQogICAgICAgICAgICAgICAgKy0tcm8gb3JpZ2luYXRpb24tbGlmZXRp
bWU/ICAgdWludDMyDQoNCiAgICAgICAgICAgICAgICArLS1ybyBrZXktdmFsdWUNCg0KICAgICAg
ICAgICAgICAgICAgICstLXJvIGtleT8gICAgIHVpbnQxNg0KDQogICAgICAgICAgICAgICAgICAg
Ky0tcm8gdmFsdWU/ICAgdWludDMyDQoNCg0KDQogIG5vdGlmaWNhdGlvbnM6DQoNCiAgICArLS0t
biBlcnJvci1zZXQNCg0KICAgICAgICstLXJvIHRpZS1sZXZlbC1lcnJvcg0KDQogICAgICAgfCAg
Ky0tcm8gZGlyZWN0aW9uLXR5cGU/ICAgICAgICAgZW51bWVyYXRpb24NCg0KICAgICAgIHwgICst
LXJvIG9yaWdpbmF0b3I/ICAgICAgICAgICAgIHN5c3RlbS1pZA0KDQogICAgICAgfCAgKy0tcm8g
dGllLXR5cGU/ICAgICAgICAgICAgICAgZW51bWVyYXRpb24NCg0KICAgICAgIHwgICstLXJvIHRp
ZS1udW1iZXI/ICAgICAgICAgICAgIHVpbnQzMg0KDQogICAgICAgfCAgKy0tcm8gc2VxPyAgICAg
ICAgICAgICAgICAgICAgdWludDY0DQoNCiAgICAgICB8ICArLS1ybyBvcmlnaW5hdGlvbi10aW1l
PyAgICAgICB1aW50MzINCg0KICAgICAgIHwgICstLXJvIG9yaWdpbmF0aW9uLWxpZmV0aW1lPyAg
IHVpbnQzMg0KDQogICAgICAgKy0tcm8gbmJyLWVycm9yDQoNCg0KUmVwbGFjZSBuYnIgYnkgbmVp
Z2hib3IgKHNwZWxsIGl0IG91dCkNCg0KU2FuZHk+IE5vIHByb2JsZW0uIEknbGwgbW9kaWZ5IGl0
Lg0KDQoNCg0KDQogICAgICAgICAgKy0tcm8gbmJycyogW3N5c3RlbS1pZF0NCg0KICAgICAgICAg
ICAgICstLXJvIG5hbWU/ICAgICAgICAgICBzdHJpbmcNCg0KICAgICAgICAgICAgICstLXJvIGxl
dmVsPyAgICAgICAgICBsZXZlbA0KDQogICAgICAgICAgICAgKy0tcm8gc3lzdGVtLWlkICAgICAg
IHN5c3RlbS1pZA0KDQogICAgICAgICAgICAgKy0tcm8gcG9kPyAgICAgICAgICAgIHVpbnQzMg0K
DQogICAgICAgICAgICAgKy0tcm8gYWRkcmVzcz8gICAgICAgIGluZXQ6aXAtYWRkcmVzcw0KDQog
ICAgICAgICAgICAgKy0tcm8gY29zdD8gICAgICAgICAgIHVpbnQzMg0KDQogICAgICAgICAgICAg
Ky0tcm8gcmVtb3RlLW5vbmNlPyAgIHVpbnQxNg0KDQogICAgICAgICAgICAgKy0tcm8gbGluay1p
ZC1wYWlyKiBbcmVtb3RlLWlkXQ0KDQogICAgICAgICAgICAgfCAgKy0tcm8gbG9jYWwtaWQ/ICAg
ICAgICAgICAgICAgIHVpbnQzMg0KDQogICAgICAgICAgICAgfCAgKy0tcm8gcmVtb3RlLWlkICAg
ICAgICAgICAgICAgIHVpbnQzMg0KDQogICAgICAgICAgICAgfCAgKy0tcm8gaWYtaW5kZXg/ICAg
ICAgICAgICAgICAgIHVpbnQzMg0KDQogICAgICAgICAgICAgfCAgKy0tcm8gaWYtbmFtZT8gICAg
ICAgICAgICAgICAgIGlmOmludGVyZmFjZS1yZWYNCg0KICAgICAgICAgICAgIHwgICstLXJvIGJm
ZC11cD8gICAgICAgICAgICAgICAgICBib29sZWFuDQoNCiAgICAgICAgICAgICB8ICArLS1ybyBv
dXRlci1zZWN1cml0eS1rZXktaWQ/ICAgdWludDgge2F1dGhlbnRpY2F0aW9ufT8NCg0KICAgICAg
ICAgICAgIHwgICstLXJvIGFkZHJlc3MtZmFtaWxpZXMNCg0KICAgICAgICAgICAgIHwgICAgICst
LXJvIGFkZHJlc3MtZmFtaWx5KiBbYWRkcmVzcy1mYW1pbHldDQoNCiAgICAgICAgICAgICB8ICAg
ICAgICArLS1ybyBhZGRyZXNzLWZhbWlseSAgICBpYW5hLXJ0LXR5cGVzOmFkZHJlc3MtZmFtaWx5
DQoNCiAgICAgICAgICAgICArLS1ybyBiYW5kd2lkdGg/ICAgICAgdWludDMy


--=====_003_next=====
Content-Type: text/html ;
	charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBjbGFzcz0iemNvbnRlbnRSb3ciPjxwIHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LWZh
bWlseTphcmlhbDsiPkhpIEJydW5vLDwvcD48cCBzdHlsZT0iZm9udC1zaXplOjE0cHg7Zm9udC1m
YW1pbHk6YXJpYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LWZhbWls
eTphcmlhbDsiPlRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVudHMhPC9wPjxwIHN0
eWxlPSJmb250LXNpemU6MTRweDtmb250LWZhbWlseTphcmlhbDsiPlBsZWFzZSBmaW5kIG15IGFu
c3dlciBpbmxpbmUgd2l0aCBTYW5keSZndDsuPC9wPjxwIHN0eWxlPSJmb250LXNpemU6MTRweDtm
b250LWZhbWlseTphcmlhbDsiPjxicj48L3A+PHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2ZvbnQt
ZmFtaWx5OmFyaWFsOyI+VGhhbmtzLDwvcD48cCBzdHlsZT0iZm9udC1zaXplOjE0cHg7Zm9udC1m
YW1pbHk6YXJpYWw7Ij5TYW5keTwvcD48ZGl2IGNsYXNzPSJ6TWFpbFNpZ24iIHVub25hbWVjaD0i
5byg5b6BMDAwMDc5NDAiIHVub25hbWVlbj0iemhhbmcgemhlbmcwMDAwNzk0MCI+PGRpdiBjbGFz
cz0iek1haWxTaWduQ29udGVudCI+PGRpdj48cCBzdHlsZT0ibWFyZ2luOjA7bGluZS1oZWlnaHQ6
MjBweDsiPjxhIGhyZWY9Imh0dHA6Ly93d3cuenRlLmNvbS5jbi8iIHRhcmdldD0iX2JsYW5rIj48
YnI+PC9hPjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ6TWFpbEZyb20iPjwvZGl2
PjxkaXY+PGRpdiBjbGFzcz0iemhpc3RvcnlSb3ciIHN0eWxlPSJkaXNwbGF5OmJsb2NrIj48ZGl2
IGNsYXNzPSJ6aGlzdG9yeURlcyIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDI4cHg7IGxp
bmUtaGVpZ2h0OiAyOHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBFNUU5OyBjb2xvcjogIzEzODhG
RjsgdGV4dC1hbGlnbjogY2VudGVyOyIgbGFuZ3VhZ2UtZGF0YT0iSGlzdG9yeU9yZ1R4dCI+5Y6f
5aeL6YKu5Lu2PC9kaXY+PGRpdiBpZD0iendyaXRlSGlzdG9yeUNvbnRhaW5lciI+PGRpdiBjbGFz
cz0iY29udHJvbC1ncm91cCB6aGlzdG9yeVBhbmVsIj48ZGl2IGNsYXNzPSJ6aGlzdG9yeUhlYWRl
ciIgc3R5bGU9InBhZGRpbmc6IDhweDsgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjZGODsiPjxkaXY+
PHN0cm9uZyBsYW5ndWFnZS1kYXRhPSJIaXN0b3J5U2VuZGVyVHh0Ij7lj5Hku7bkurrvvJo8L3N0
cm9uZz48c3BhbiBjbGFzcz0ienJlYWRVc2VyTmFtZSI+QnJ1bm9SaWpzbWFuICZsdDticnVub3Jp
anNtYW5AZ21haWwuY29tJmd0Ozwvc3Bhbj48L2Rpdj48ZGl2PjxzdHJvbmcgbGFuZ3VhZ2UtZGF0
YT0iSGlzdG9yeVRPVHh0Ij7mlLbku7bkurrvvJo8L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWRV
c2VyTmFtZSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPuW8oOW+gTAwMDA3OTQwOzwvc3Bhbj48
L2Rpdj48ZGl2PjxzdHJvbmcgbGFuZ3VhZ2UtZGF0YT0iSGlzdG9yeUNDVHh0Ij7mioTpgIHkurrv
vJo8L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWRVc2VyTmFtZSIgc3R5bGU9ImRpc3BsYXk6IGlu
bGluZTsiPkFudG9uaSBQcnp5Z2llbmRhICZsdDtwcnpAanVuaXBlci5uZXQmZ3Q7Ozwvc3Bhbj48
c3BhbiBjbGFzcz0ienJlYWRVc2VyTmFtZSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPmFsYW5r
YXJfc2hhcm1hQGNvbWNhc3QuY29tICZsdDthbGFua2FyX3NoYXJtYUBjb21jYXN0LmNvbSZndDs7
PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxheTogaW5saW5l
OyI+cHRodWJlcnRAY2lzY28uY29tICZsdDtwdGh1YmVydEBjaXNjby5jb20mZ3Q7Ozwvc3Bhbj48
c3BhbiBjbGFzcz0ienJlYWRVc2VyTmFtZSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPmZsMHdA
eWFuZGV4LXRlYW0ucnUgJmx0O2ZsMHdAeWFuZGV4LXRlYW0ucnUmZ3Q7Ozwvc3Bhbj48c3BhbiBj
bGFzcz0ienJlYWRVc2VyTmFtZSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPnp6aGFuZ19pZXRm
QGhvdG1haWwuY29tICZsdDt6emhhbmdfaWV0ZkBob3RtYWlsLmNvbSZndDs7PC9zcGFuPjxzcGFu
IGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxheTogaW5saW5lOyI+6a2P5pyI5Y2O
MDAwMTk2NTU7PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxh
eTogaW5saW5lOyI+bWFzaGFvd2VuQGdtYWlsLmNvbSAmbHQ7bWFzaGFvd2VuQGdtYWlsLmNvbSZn
dDs7PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxheTogaW5s
aW5lOyI+eHVmZW5nLmxpdS5pZXRmQGdtYWlsLmNvbSAmbHQ7eHVmZW5nLmxpdS5pZXRmQGdtYWls
LmNvbSZndDs7PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxh
eTogaW5saW5lOyI+amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20gJmx0O2plZmZ0YW50LmlldGZAZ21h
aWwuY29tJmd0Ozs8L3NwYW4+PHNwYW4gY2xhc3M9InpyZWFkVXNlck5hbWUiIHN0eWxlPSJkaXNw
bGF5OiBpbmxpbmU7Ij56emhhbmdAanVuaXBlci5uZXQgJmx0O3p6aGFuZ0BqdW5pcGVyLm5ldCZn
dDs7PC9zcGFuPjwvZGl2PjxkaXY+PHN0cm9uZyBsYW5ndWFnZS1kYXRhPSJIaXN0b3J5RGF0ZVR4
dCI+5pelIOacnyDvvJo8L3N0cm9uZz48c3BhbiBjbGFzcz0iIj4yMDIw5bm0MDbmnIgzMOaXpSAx
ODoxNzwvc3Bhbj48L2Rpdj48ZGl2PjxzdHJvbmcgbGFuZ3VhZ2UtZGF0YT0iSGlzdG9yeVN1Ympl
Y3RUeHQiPuS4uyDpopgg77yaPC9zdHJvbmc+PHNwYW4gY2xhc3M9InpyZWFkVGl0bGUiPjxzdHJv
bmc+UmU6IERlYXIgUklGVCBwcm90b2NvbCBhbmQgUklGVCBZQU5HIGNvLWF1dGhvciwgcGxzIHJl
dmlldyB0aGV1cGRhdGVvZiBSSUZUIFlBTkcgbW9kZWw8L3N0cm9uZz48L3NwYW4+PC9kaXY+PC9k
aXY+PGRpdiB6bWFpbGJ1c2luZXNzPSJidXNpbmVzc0V4dGVybmFsIj48L2Rpdj48ZGl2IGNsYXNz
PSJ6aGlzdG9yeUNvbnRlbnQiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBdmVuaXItQm9vaztm
b250LXNpemU6IDE0cHg7Ij5JIGhhdmUgbm90IHlldCBmaW5pc2hlZCByZXZpZXdpbmcgdGhlIGNv
bXBsZXRlIGRhdGEgbW9kZWwsIGJ1dCBoZXJlIGFyZSBzb21lIGluaXRpYWwgYWRkaXRpb25hbCBj
b21tZW50cyBmcm9tIG1lOjwvc3Bhbj48ZGl2IGNsYXNzPSIiPjxiciBjbGFzcz0iIj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJp
ZXIgTmV3Ij5tb2R1bGU6IGlldGYtcmlmdDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7IGF1Z21lbnQgL3J0OnJvdXRp
bmcvcnQ6Y29udHJvbC1wbGFuZS1wcm90b2NvbHMvcnQ6Y29udHJvbC1wbGFuZS1wcm90b2NvbDo8
L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmll
ciBOZXciPiZuYnNwOyAmbmJzcDsgKy0tcncgcmlmdCE8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOystLXJ3IG5vZGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7Ky0tcncgbmFtZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3RyaW5nPC9zcGFu
PjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3
Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOystLXJ3IGxldmVsPyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO2xldmVsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48YnIgY2xhc3M9IiI+PC9zcGFuPjwvZGl2
PjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+V2UgbmVlZCB0byBkaXN0
aW5ndWlzaCBjb25maWd1cmVkLWxldmVsIHZzIGRlcml2ZWQtbGV2ZWwgKHNlZSBzZWN0aW9uIDQu
Mi43LjEuIGluIGRyYWZ0LWlldGYtcmlmdC1yaWZ0LTEyKS48L3NwYW4+PC9wPjxwPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+U2FuZHkmZ3Q7IEluIGZhY3QgdGhpcyBpcyB0
aGUgZWZmZWN0aXZlIHZhbHVlIGluIHRoZSBkZXZpY2UuIEl0J3Mgbm90IGRpcmVjdGx5IGFjY29y
ZGluZyB0byB0aGUgQ0xJIGNvbmZpZ3VyYXRpb24uJm5ic3A7PC9zcGFuPjwvcD48cD48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPlRoZSBsZWFmIGhhbCBiZWxvdyBpbmRpY2F0
ZXMgdGhlIHBvdGVudGlhbCBkcml2ZWQgbGV2ZWwgdmFsdWUuIEl0IHNlZW1zIGxpa2UgaXQgaXMg
bm90IG5lY2Vzc2FyeSB0byBhZGQgYSBkZWRpY2F0ZWQgY29uZmlndXJlZCB2YWx1ZSBmb3IgaXQ/
IFdoYXQgZG8geW91IHRoaW5rIG9mIGl0Pzwvc3Bhbj48L3A+PGRpdiBjbGFzcz0iIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+
PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tcncgc3lzdGVtLWlkICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyBzeXN0ZW0taWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0t
cncgcG9kPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzI8L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tcncgb3ZlcmxvYWQ/ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyBib29sZWFuPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyst
LXJ3IG5vZGUtY2FwYWJpbGl0eTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48cD48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPlRoZSBuZWlnaGJvcnMgY29udGFp
bmVyIChiZWxvdykgc2hvdWxkIGNvbnRhaW4gdGhlIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5
IGVhY2ggbmVpZ2hib3IuPC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291
cmllciBOZXciPlNhbmR5Jmd0OyBPSy4gSSdsbCBhZGQgaXQuPC9zcGFuPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTogJ0NvdXJpZXIgTmV3JzsiPiZuYnNwOzwvc3Bhbj48L3A+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3Nw
YW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBO
ZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsrLS1ybyBwcm90
b2NvbC1taW5vci12ZXJzaW9uPyAmbmJzcDsgdWludDE2PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9
IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48YnIgY2xhc3M9IiI+PC9z
cGFuPjwvZGl2PjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+VGhpcyBz
aG91bGQgbm90IGJlIG9wdGlvbmFsOyB0aGUgUklGVCBlbmdpbmUgYWx3YXlzIGhhcyBhIHNwZWNp
ZmljIG1pbm9yIHZlcnNpb24gYW5kIGl0IGlzIGEgcmVxdWlyZWQgZmllbGQgaW4gdGhlIFRocmlm
dCBtb2RlbC48L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5l
dyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIG1vZGlmeSBpdCB0byBtYW5kYXRvcnkuJm5ic3A7PC9zcGFu
PjwvcD48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+
PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8
ICZuYnNwOystLXJvIGhpZXJhcmNoeS1pbmRpY2F0aW9ucz8gJm5ic3A7ICZuYnNwO2VudW1lcmF0
aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNv
dXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7Ky0t
cncgZmxvb2QtcmVkdWNpbmctY2FwYWJsZT8gJm5ic3A7IGJvb2xlYW4ge2Zsb29kLXJlZHVjaW5n
fT88L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291
cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij5MaW5ndWlzdGljIGhhaXJzcGxpdHRpbmc6IGlzIGNhcGFibGUg
dGhlIHJpZ2h0IHdvcmQ/IElmIHdlIHNldCB0aGlzIHRvIGZhbHNlLCBpdCBvbmx5IG1lYW5zIHRo
YXQgZmxvb2QgcmVkdWN0aW9uIGhhcyBiZWVuIGRpc2FibGVkLCBub3QgdGhhdCB0aGUgbm9kZSBp
cyBub3QgY2FwYWJsZSBvZiBmbG9vZCByZWR1Y3Rpb24uPC9zcGFuPjwvcD48cD48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPlNhbmR5Jmd0OyBZb3UgYXJlIHJpZ2h0LiBCdXQg
SSBtb2RpZmllZCB0aGUgbmFtZSBhY2NvcmRpbmcgdG8gVG9ueSdzIGNvbW1lbnRzLiBEbyB5b3Ug
dGhpbmsgaXQncyBiZXR0ZXIgdG8gbW9kaWZ5IHRoZSBmZWF0dXJlIG5hbWUgdG8gImZsb29kLXJl
ZHVjaW5nIiBvdGhlciB0aGFuIGxlYWYgbmFtZT8gJm5ic3A7PC9zcGFuPjwvcD48ZGl2IGNsYXNz
PSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwv
c3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVy
IE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOystLXJ3IG5v
bmNlLWRlbHRhPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt1aW50OCB7bm9uY2UtZGVsdGEtYWRqdXN0fT88L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+
PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5XaHkgaXMgdGhp
cyB1bmRlciBjYXBhYmlsaXRpZXM/PC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPlNhbmR5Jmd0OyBJJ2xsIG1vdmUgdGhpcyBsZWFmIG91dC48L3NwYW4+
PC9wPjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48
YnIgY2xhc3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyst
LXJ3IGxpZS1pcHY0LW11bHRpY2FzdC1hZGRyZXNzPyAmbmJzcDsgcnQtdHlwZXM6aXB2NC1tdWx0
aWNhc3QtZ3JvdXAtYWRkcmVzczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAm
bmJzcDsrLS1ydyBsaWUtaXB2Ni1tdWx0aWNhc3QtYWRkcmVzcz8gJm5ic3A7IHJ0LXR5cGVzOmlw
djYtbXVsdGljYXN0LWdyb3VwLWFkZHJlc3M8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgJm5ic3A7Ky0tcncgbGluay1jYXBhYmlsaXR5PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9
IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48YnIgY2xhc3M9IiI+PC9z
cGFuPjwvZGl2PjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+VGhlIGxp
bmsgY2FwYWJpbGl0aWVzIGFyZSBwZXIgbGluaywgc28gdGhleSBzaG91bGQgYmUgaW4gdGhlIG5l
aWdoYm9yIHRhYmxlIGJlbG93Ljwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij5TYW5keSZndDsgSSB3aWxsIG1vdmUgaXQgdG8gaW50ZXJmYWNlIGFuZCBu
ZWlnaGJvci4gQnV0IGRvIHdlIG5lZWQgYSBnbG9iYWwgc2V0dGluZyBmb3IgaXQ/PC9zcGFuPjwv
cD48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJy
IGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZu
YnNwOystLXJ3IGJmZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGJvb2xlYW4ge2JmZH0/PC9zcGFuPjwvZGl2Pjxk
aXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7Ky0tcncgdjQtZm9yd2FyZGluZy1j
YXBhYmxlPyAmbmJzcDsgYm9vbGVhbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsrLS1ydyBmbG9vZC1wb3J0PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpbmV0OnBvcnQtbnVtYmVyPC9zcGFuPjwv
ZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOystLXJ3IGxpZS1yeC1wb3J0PyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O2luZXQ6cG9ydC1udW1iZXI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7Ky0tcncgaG9sZHRpbWU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBydC10eXBlczp0aW1lci12YWx1ZS1zZWNv
bmRzMTY8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tcncgdGlk
ZS1nZW5lcmF0aW9uLWludGVydmFsPyAmbmJzcDsgJm5ic3A7IHJ0LXR5cGVzOnRpbWVyLXZhbHVl
LXNlY29uZHMxNjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsrLS1y
dyB0aWUtc2VjdXJpdHkta2V5LWlkPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
dWludDMyIHthdXRoZW50aWNhdGlvbn0/PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8ICZuYnNwOystLXJ3IGxvY2FsLW5vbmNlPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNjwvc3Bhbj48L2Rpdj48ZGl2
IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNz
PSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+VGhpcyBzaG91bGQgYmUgcm8gaW5zdGVhZCBvZiBydzwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+RGlzdGlu
Z3Vpc2ggbm9uY2UtbG9jYWwgKHNlbnQpIHZlcnN1cyBub25jZS1yZW1vdGUgKHJlY2VpdmVkKTwv
c3Bhbj48L2Rpdj48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPk5vbmNl
cyBhcmUgcGVyIGludGVyZmFjZSwgc28gaXQgc2hvdWxkIGJlIGluIHRoZSBuZWlnaGJvciB0YWJs
ZSBiZWxvdzwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3
Ij5TYW5keSZndDsgSXMgdGhpcyB2YWx1ZSBjYW4gYmUgYWRqdXN0ZWQ/Jm5ic3A7PC9zcGFuPjwv
cD48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPkRvIHdlIHVzZSB0aGUg
c2FtZSBub25jZSBvbiBhbGwgdGhlIGludGVyZmFjZT8gSWYgbm90LCBkbyB5b3UgdGhpbmsgaXQn
cyBPSyB0byBtb3ZlIHRoZSBsZWFmIHRvIGxpbmstaWQtcGFpcj8mbmJzcDs8L3NwYW4+PC9wPjxk
aXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48YnIgY2xh
c3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOystLXJvIGlu
dGVyZmFjZXM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJz
cDsrLS1ybyBpbnRlcmZhY2UqIFtuYW1lXTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gbG9jYWwtbGluay1pZD8gJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBsaW5raWQtdHlw
ZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3Vy
aWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJz
cDsgKy0tcm8gbmFtZSAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaWY6aW50ZXJm
YWNlLXJlZjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48cD48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPllBTkcgbmV3YmllIHF1ZXN0aW9uLCBhbGwgdGFibGVz
IGluIHRoaXMgZG9jdW1lbnQgaGF2ZSB0aGlzIGFwcHJvYWNoIHVzaW5nIDIgbGV2ZWxzIG9mIG5l
c3RpbmcuIFdoeSBpcyBpdCBub3Qgc2ltcGx5IDEgbGV2ZWwgb2YgbmVzdGluZyBsaWtlIHRoaXM6
PC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPlNhbmR5
Jmd0OyBPSy4gSSdsbCBtb2RpZnkgaXQuPC9zcGFuPjwvcD48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7
ICstLXJvIGludGVyZmFjZXM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gaW50ZXJm
YWNlKiBbbmFtZV08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gbG9jYWwtbGluay1p
ZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3Vy
aWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsrLS1ybyBuYW1lPC9zcGFuPjwvZGl2PjxkaXYg
Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOy4uLjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNz
PSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gYWRkcmVzcz8gJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyBpbmV0OmlwLWFkZHJlc3M8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+
PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXci
PlRoZSBhZGRyZXNzIG9mIHRoZSBpbnRlcmZhY2UgZG9lcyBub3QgYmVsb25nIGhlcmUgaW4gdGhl
IFJJRlQgbW9kZWw7IHRoZXJlIGlzIGEgc2VwYXJhdGUgSUVURiBZQU5HIGRhdGEgbW9kZWwgZm9y
IGludGVyZmFjZXMuPC9zcGFuPjwvZGl2PjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3Vy
aWVyIE5ldyI+WW91IGNvdWxkIG1ha2UgYW4gYXJndW1lbnQgdGhhdCB0aGUgc291cmNlIGFkZHJl
c3MgdXNlZCBmb3Igc2VuZGluZyBSSUZUIHBhY2tldHMgY291bGQgYmUgbW9kZWxlZDsgaWYgc28s
IG11c3QgdXNlIHNlcGFyYXRlIGZpZWxkcyBmb3IgbGllLWlwdjQtc291cmNlLWFkZHJlc3MsIGxp
ZS1pcHY2LXNvdXJjZS1hZGRyZXNzIChMSUVzIGFyZSBzZW50IEJPVEggb24gSVB2NCBhbmQgSVB2
NiksIGZsb29kaW5nLXNvdXJjZS1hZGRyZXNzIChmbG9vZGluZyBpcyBkb25lIG9uIElQdjQgT1Ig
SVB2NikuPC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXci
PlNhbmR5Jmd0OyBPSy4gSSdsbCBhZGQgZm91ciBsZWF2ZXMgaW5zdGVhZCBvZiBpdC48L3NwYW4+
PC9wPjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48
YnIgY2xhc3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wg
Jm5ic3A7ICZuYnNwOyArLS1ybyBpZi1pbmRleD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwv
c3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVy
IE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48cD48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPkJlbG9uZ3MgaW4gdGhlIGludGVyZmFjZSBZQU5HIG1vZGVsLCBub3Qg
aW4gdGhlIFJJRlQgWUFORyBtb2RlbC48L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIGRlbGV0ZSBpdC48L3NwYW4+PC9w
PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij48YnIg
Y2xhc3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5i
c3A7ICZuYnNwOyArLS1ybyBkaXJlY3Rpb24tdHlwZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2VudW1lcmF0aW9uPC9zcGFuPjwvZGl2Pjxk
aXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyB5b3UtYXJl
LWZsb29kLXJlcGVhdGVyPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtib29sZWFuPC9zcGFu
PjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3
Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1y
byBub3QtYS16dHAtb2ZmZXI/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyBib29sZWFuPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyB5b3UtYXJlLXNlbmRpbmctdG9vLXF1aWNrbHk/ICZu
YnNwOyBib29sZWFuPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyst
LXJ3IG1pc2NhYmxlZC1saW5rcyogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7bGlua2lkLXR5cGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7Ky0tcncgKGFsZ29yaXRobS10eXBlKT88L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsrLS06KHNwZik8L3NwYW4+PC9kaXY+PGRpdiBjbGFz
cz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsrLS06KGFsbC1wYXRoKTwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsrLS1ybyBoYWw/ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO2xldmVsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
ICZuYnNwOystLXJvIHZvbC1saXN0PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
ICZuYnNwO3wgJm5ic3A7Ky0tcm8gdm9sKiBbc3lzdGVtLWlkXTwvc3Bhbj48L2Rpdj48ZGl2IGNs
YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gb2ZmZXJlZC1sZXZl
bD8gJm5ic3A7IGxldmVsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
O3wgJm5ic3A7ICZuYnNwOyArLS1ybyBuYW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3N0cmluZzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAm
bmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gbGV2ZWw/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgbGV2ZWw8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIHN5c3RlbS1pZCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDtzeXN0ZW0taWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7
fCAmbmJzcDsgJm5ic3A7ICstLXJvIHBvZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwOystLXJ3IGluc3RhbmNlLWxhYmVsPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsrLS1ybyBuZWlnaGJvcjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNs
YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+SW4gUklGVCB5b3Ug
Y2Fubm90IGhhdmUgbXVsdGlwbGUgKCZndDsxKSBuZWlnaGJvcnMgcGVyIGludGVyZmFjZS48L3Nw
YW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBO
ZXciPlRodXMsIGEgbmVpZ2hib3Igc2hvdWxkIGJlIGFuIG9wdGlvbmFsIHNpbmdsZS1lbGVtZW50
IGNvbnRhaW5lciB1bmRlciBuZWlnaGJvci48L3NwYW4+PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5FdmVuIGlmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGF0
IGFuZCB3YW50IHRvIGtlZXAgbmVpZ2hib3Igb3Vyc2lkZSBvZiBpbnRlcmZhY2UsIGl0IHNob3Vs
ZCBiZSB1bmRlciBub2RlIGFuZCBub3QgdW5kZXIgcmlmdDwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5TYW5keSZndDsgSSB1bmRlcnN0YW5kIHlvdXIg
cG9pbnQuIEJ1dCB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgcGFyYWxsZWwgbGlua3MgY29ubmVjdCB0
byBhIHNhbWUgbmVpZ2hib3IsIHJpZ2h0Pzwvc3Bhbj48L3A+PGRpdiBjbGFzcz0iIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+
PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tcm8gbmJycyogW3N5c3RlbS1pZF08L3Nw
YW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBO
ZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij5TcGVsbCBuYnJzIG91dCAobmVpZ2hib3JzKTwvc3Bhbj48L3A+PHA+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5TYW5keSZndDsgTm8gcHJvYmxlbS4g
SSdsbCBtb2RpZnkgaXQuPC9zcGFuPjwvcD48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNz
PSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIG5hbWU/ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgc3RyaW5nPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gbGV2ZWw/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDtsZXZlbDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsg
Jm5ic3A7ICstLXJvIHN5c3RlbS1pZCAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzeXN0ZW0taWQ8L3Nw
YW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBO
ZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyBwb2Q/
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjwv
ZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gYWRkcmVzcz8g
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aW5ldDppcC1hZGRyZXNzPC9zcGFuPjwvZGl2Pjxk
aXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gY29zdD8gJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyByZW1vdGUtbm9uY2U/ICZuYnNwOyB1aW50
MTY8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291
cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1y
byBsaW5rLWlkLXBhaXIqIFtyZW1vdGUtaWRdPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsrLS1ybyBsb2NhbC1pZD8gJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48
L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7Ky0tcm8g
cmVtb3RlLWlkICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7
ICZuYnNwOyB8ICZuYnNwOystLXJvIGlmLWluZGV4PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xh
c3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsrLS1ybyBpZi1uYW1lPyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmOmlu
dGVyZmFjZS1yZWY8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZu
YnNwOyB8ICZuYnNwOystLXJvIGJmZC11cD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtib29sZWFuPC9zcGFuPjwvZGl2PjxkaXYg
Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsrLS1ybyBvdXRlci1zZWN1
cml0eS1rZXktaWQ/ICZuYnNwOyB1aW50OCB7YXV0aGVudGljYXRpb259Pzwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7Ky0tcm8gYWRkcmVz
cy1mYW1pbGllczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5i
c3A7IHwgJm5ic3A7ICZuYnNwOyArLS1ybyBhZGRyZXNzLWZhbWlseSogW2FkZHJlc3MtZmFtaWx5
XTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3Vy
aWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gYWRkcmVzcy1mYW1pbHkgJm5ic3A7ICZuYnNw
O2lhbmEtcnQtdHlwZXM6YWRkcmVzcy1mYW1pbHk8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyBiYW5kd2lkdGg/ICZuYnNwOyAmbmJzcDsgJm5i
c3A7dWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJz
cDsgKy0tcm8gc3RhdGU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtlbnVtZXJh
dGlvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gZGF0YWJhc2U8L3Nw
YW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBO
ZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij5UaGUgZGF0YWJhc2UgY29udGFpbmVyIHNob3VsZCBiZSB1bmRlciBub2Rl
IGFuZCBub3QgdW5kZXIgcmlmdDwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij5TYW5keSZndDsgWWVzLiBUaGUgZGF0YWJhc2UgY29udGFpbmVyIGlzIHVu
ZGVyIG5vZGUsIG5vdCB1bmRlciByaWZ0LiBQbGVhc2UgcmVjb25maXJtIGl0LiBUaGFuayB5b3Ug
dmVyeSBtdWNoITwvc3Bhbj48L3A+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7Ky0tcm8gdGllcyogW2RpcmVjdGlvbi10eXBlIG9yaWdpbmF0b3IgdGll
LXR5cGUgdGllLW51bWJlcl08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7ICZuYnNwOyArLS1ybyBkaXJlY3Rpb24tdHlwZSAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ZW51bWVyYXRpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7ICZuYnNwOyArLS1ybyBvcmlnaW5hdG9yICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N5c3RlbS1pZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIHRpZS10eXBlICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtlbnVtZXJhdGlvbjwvc3Bhbj48
L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIHRpZS1udW1i
ZXIgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMy
PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJp
ZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8g
c2VxPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt1aW50NjQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7ICZuYnNwOyArLS1ybyBvcmlnaW5hdGlvbi10aW1lPyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyB1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZu
YnNwOyArLS1ybyBvcmlnaW5hdGlvbi1saWZldGltZT8gJm5ic3A7IHVpbnQzMjwvc3Bhbj48L2Rp
dj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIG5vZGU8L3NwYW4+
PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXci
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOystLXJv
IG5hbWU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0
cmluZzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwg
Jm5ic3A7Ky0tcm8gbGV2ZWw/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7IGxldmVsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJz
cDsgfCAmbmJzcDsrLS1ybyBzeXN0ZW0taWQgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3N5c3RlbS1pZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsg
Jm5ic3A7IHwgJm5ic3A7Ky0tcm8gcG9kPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsrLS1ybyBub2RlLWNhcGFiaWxpdHk8L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7
Ky0tcm8gcHJvdG9jb2wtbWlub3ItdmVyc2lvbj8gJm5ic3A7IHVpbnQxNjwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsrLS1y
byBoaWVyYXJjaHktaW5kaWNhdGlvbnM/ICZuYnNwOyAmbmJzcDtlbnVtZXJhdGlvbjwvc3Bhbj48
L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJz
cDsrLS1ybyBmbG9vZC1yZWR1Y2luZy1jYXBhYmxlPyAmbmJzcDsgYm9vbGVhbiB7Zmxvb2QtcmVk
dWNpbmd9Pzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7
IHwgJm5ic3A7fCAmbmJzcDsrLS1ybyBub25jZS1kZWx0YT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDgge25vbmNlLWRlbHRhLWFkanVzdH0/PC9z
cGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIg
TmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsr
LS1ybyBvdmVybG9hZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Jvb2xlYW48
L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmll
ciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNw
OystLXJvIHN0YXJ0dXAtdGltZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjQ8L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOystLXJvIG5l
aWdoYm9ycyogW3N5c3RlbS1pZF08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7Ky0tcm8gbmFtZT8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJpbmc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7Ky0tcm8gbGV2ZWw/ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtsZXZlbDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsrLS1ybyBzeXN0ZW0taWQg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgc3lzdGVtLWlkPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwOystLXJvIHBvZD8gJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzI8L3NwYW4+PC9kaXY+PGRp
diBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7Ky0tcm8g
YWRkcmVzcz8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aW5ldDppcC1hZGRyZXNzPC9zcGFu
PjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3
Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZu
YnNwOystLXJvIGNvc3Q/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDMy
PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJp
ZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJz
cDt8ICZuYnNwOystLXJvIHJlbW90ZS1ub25jZT8gJm5ic3A7IHVpbnQxNjwvc3Bhbj48L2Rpdj48
ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsrLS1y
byBsaW5rLWlkLXBhaXIqIFtyZW1vdGUtaWRdPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7Ky0tcm8gbG9jYWwt
aWQ/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNw
OyB8ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsrLS1ybyByZW1vdGUtaWQgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48L2Rp
dj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDt8
ICZuYnNwOystLXJvIGlmLWluZGV4PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7Ky0tcm8gaWYtbmFt
ZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyBpZjppbnRlcmZhY2UtcmVmPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7Ky0tcm8gYmZkLXVwPyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Jv
b2xlYW48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8
ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsrLS1ybyBvdXRlci1zZWN1cml0eS1rZXktaWQ/ICZuYnNw
OyB1aW50OCB7YXV0aGVudGljYXRpb259Pzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOystLXJvIGFkZHJlc3Mt
ZmFtaWxpZXM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNw
OyB8ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIGFkZHJlc3MtZmFtaWx5KiBb
YWRkcmVzcy1mYW1pbHldPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0t
cm8gYWRkcmVzcy1mYW1pbHkgJm5ic3A7ICZuYnNwO2lhbmEtcnQtdHlwZXM6YWRkcmVzcy1mYW1p
bHk8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291
cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZu
YnNwO3wgJm5ic3A7Ky0tcm8gYmFuZHdpZHRoPyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwv
c3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVy
IE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7
Ky0tcm8gbWlzY2FibGVkLWxpbmtzKiAmbmJzcDsgbGlua2lkLXR5cGU8L3NwYW4+PC9kaXY+PGRp
diBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyArLS1ybyBwcmVmaXg8L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0t
cm8gcHJlZml4PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDtpbmV0OmlwLXByZWZpeDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsrLS1ybyAodHlwZSk/PC9zcGFuPjwvZGl2PjxkaXYgY2xh
c3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tOihw
cmVmaXgpPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tOihwb3NpdGl2ZS1kaXNhZ2dyZWdhdGlvbik8L3NwYW4+
PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXci
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsrLS06KG5lZ2F0aXZlLWRpc2FnZ3JlZ2F0aW9uKTwvc3Bhbj48L2Rpdj48ZGl2IGNs
YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOystLToo
ZXh0ZXJuYWwpPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tOihwb3NpdGl2ZS1leHRlcm5hbC1kaXNhZ2dyZWdh
dGlvbik8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDsrLS06KHBncCk8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gbWV0cmljPyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzI8L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0t
cm8gdGFncyogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3VpbnQ2NDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsrLS1ybyBtb25vdG9uaWMtY2xvY2s8L3NwYW4+PC9kaXY+PGRp
diBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsr
LS1ybyBwcmVmaXgtc2VxdWVuY2UtdHlwZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gdGlt
ZXN0YW1wICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpZWVlODAyLTFhcy10aW1lc3RhbXAt
dHlwZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgKy0tcm8gdHJhbnNhY3Rpb24taWQ/ICZuYnNwOyB1
aW50ODwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsrLS1ybyBsb29wYmFjaz8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDtib29sZWFuPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIGRpcmVjdGx5LWF0dGFjaGVkPyAmbmJzcDsg
Ym9vbGVhbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsrLS1ybyBmcm9tLWxpbms/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgbGlua2lkLXR5cGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyst
LXJvIGt2LXN0b3JlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICst
LXJvIGt2cyogW2t2cy1pbmRleF08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIGt2cy1pbmRleCAmbmJzcDsgJm5ic3A7dWludDMyPC9z
cGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIg
TmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsrLS1y
byBrdnMtdGllPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICstLXJvIGRpcmVjdGlvbi10eXBlPyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgZW51bWVyYXRpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKy0tcm8gb3JpZ2luYXRvcj8gJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3lzdGVtLWlkPC9zcGFuPjwvZGl2PjxkaXYg
Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICstLXJvIHRpZS10
eXBlPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgZW51
bWVyYXRpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgKy0tcm8gdGllLW51bWJlcj8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICstLXJvIHNlcT8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu
dDY0PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNv
dXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICstLXJvIG9yaWdpbmF0aW9uLXRpbWU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHVp
bnQzMjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyArLS1ybyBvcmlnaW5hdGlvbi1saWZldGltZT8gJm5ic3A7IHVpbnQzMjwvc3Bh
bj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5l
dyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyArLS1ybyBrZXktdmFsdWU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIGtleT8gJm5ic3A7ICZu
YnNwOyB1aW50MTY8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIHZhbHVlPyAmbmJzcDsgdWludDMy
PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJp
ZXIgTmV3Ij48YnIgY2xhc3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgbm90aWZpY2F0aW9uczo8L3NwYW4+
PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXci
PiZuYnNwOyAmbmJzcDsgKy0tLW4gZXJyb3Itc2V0PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsrLS1ybyB0aWUtbGV2ZWwtZXJyb3I8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7Ky0tcm8gZGlyZWN0aW9uLXR5cGU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyBlbnVtZXJhdGlvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAm
bmJzcDsrLS1ybyBvcmlnaW5hdG9yPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyBzeXN0ZW0taWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7Ky0tcm8gdGllLXR5cGU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyBlbnVtZXJhdGlvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsrLS1ybyB0aWUtbnVtYmVyPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7Ky0tcm8gc2VxPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7Ky0tcm8gb3JpZ2luYXRpb24tdGltZT8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyst
LXJvIG9yaWdpbmF0aW9uLWxpZmV0aW1lPyAmbmJzcDsgdWludDMyPC9zcGFuPjwvZGl2PjxkaXYg
Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsrLS1ybyBuYnItZXJyb3I8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0i
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPjxiciBjbGFzcz0iIj48L3Nw
YW4+PC9kaXY+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5SZXBsYWNl
IG5iciBieSBuZWlnaGJvciAoc3BlbGwgaXQgb3V0KTwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij5TYW5keSZndDsgTm8gcHJvYmxlbS4gSSdsbCBtb2Rp
ZnkgaXQuPC9zcGFuPjwvcD48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD
b3VyaWVyIE5ldyI+PGJyIGNsYXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyArLS1ybyBuYnJzKiBbc3lzdGVtLWlkXTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNz
PSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gbmFtZT8gJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJpbmc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIGxldmVsPyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7bGV2ZWw8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJvIHN5c3RlbS1pZCAmbmJzcDsgJm5ic3A7ICZuYnNw
OyBzeXN0ZW0taWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOystLXJvIHBvZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt1aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOystLXJvIGFkZHJlc3M/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2luZXQ6
aXAtYWRkcmVzczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7Ky0tcm8gY29zdD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1
aW50MzI8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOystLXJvIHJlbW90ZS1ub25jZT8gJm5ic3A7IHVpbnQxNjwvc3Bhbj48L2Rpdj48ZGl2IGNs
YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ky0tcm8gbGluay1pZC1wYWlyKiBb
cmVtb3RlLWlkXTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDsrLS1ybyBsb2NhbC1pZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48L2Rpdj48ZGl2IGNs
YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsrLS1ybyByZW1vdGUt
aWQgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3VpbnQzMjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCAmbmJzcDsrLS1ybyBpZi1pbmRleD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNz
PSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsrLS1ybyBpZi1uYW1lPyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlm
OmludGVyZmFjZS1yZWY8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6Q291cmllciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0tcm8gYmZkLXVwPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Jvb2xlYW48L3NwYW4+PC9k
aXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmllciBOZXciPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7Ky0t
cm8gb3V0ZXItc2VjdXJpdHkta2V5LWlkPyAmbmJzcDsgdWludDgge2F1dGhlbnRpY2F0aW9ufT88
L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q291cmll
ciBOZXciPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7Ky0tcm8gYWRkcmVzcy1mYW1pbGllczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSIiPjxz
cGFuIHN0eWxlPSJmb250LWZhbWlseTpDb3VyaWVyIE5ldyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICstLXJvIGFkZHJlc3Mt
ZmFtaWx5KiBbYWRkcmVzcy1mYW1pbHldPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJpZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOystLXJv
IGFkZHJlc3MtZmFtaWx5ICZuYnNwOyAmbmJzcDtpYW5hLXJ0LXR5cGVzOmFkZHJlc3MtZmFtaWx5
PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNvdXJp
ZXIgTmV3Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsr
LS1ybyBiYW5kd2lkdGg/ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjwvZGl2Pjwv
ZGl2PjxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv
ZGl2PjwvZGl2PjxwPjxicj48L3A+PC9kaXY+


--=====_003_next=====--

--=====_002_next=====--

--=====_001_next=====--


From nobody Wed Jul  1 09:14:48 2020
Return-Path: <prz@juniper.net>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1C8A43A0B97 for <rift@ietfa.amsl.com>; Wed,  1 Jul 2020 06:54:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level: 
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=jVVlLvLX; dkim=pass (1024-bit key) header.d=juniper.net header.b=kTXAeksG
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q0nb_NqC8gJj for <rift@ietfa.amsl.com>; Wed,  1 Jul 2020 06:54:54 -0700 (PDT)
Received: from mx0b-00273201.pphosted.com (mx0a-00273201.pphosted.com [208.84.65.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 24B8A3A0BBE for <rift@ietf.org>; Wed,  1 Jul 2020 06:54:51 -0700 (PDT)
Received: from pps.filterd (m0108157.ppops.net [127.0.0.1]) by mx0a-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 061DcM9B020427; Wed, 1 Jul 2020 06:54:43 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=PPS1017; bh=npBr5nmDbPTlKttnDno20kftZ3Y8HTnpYTY/2TgxnW8=; b=jVVlLvLXWOTKCReXnnbebu4UB7b1w/1OlpPLHdVf+T2GzUlysiNBY6sJyhL2MVoPjRyg NlDjVq6HJgN/RanhF87BMQjFCY1+yiJYAqJCTFKi+qfWVkZM0amUsm7FYRQBbT0HKUnl wxtqfCPu86U+hRHJUI2orINaaTE1ZaA4RI01Uph0Y3TjMEVykkSVKAp8mkl5g3HVe95b kvFwDjWBV3xdoLy82toPgZJYSUEa8np8FZNEHptmtimLUCD1utzFrz+QBE85dThVfSFa YE9uysLq1tPMOQPHAh4laC9Wky0w6TnjNxnU4QxTNcxl3f4Y4aMh6JjhXuycTujwvCcC gQ== 
Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by mx0a-00273201.pphosted.com with ESMTP id 31yyb9jp90-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 01 Jul 2020 06:54:42 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F/L8jsZf4feQmNdX+OX9czPvfwkH/HfzheA/4ScbzZd8IqcPOYwKwN0U0NNGEi67L+lwW7VTEJkjUqRP03u9j0yqkOcdTWg8tyl9w+QKodwDeiNJFlnpCNCFo1oBMuyA5AAj4J3n2TVoe5gm/1k04gm0jtIE8jRkHNkbiDb3HbbzG7PaepDDe0Rq1sKSLZQZ/fBml9cYQUS2lCd0oLD6qG5xWUgFY3qVzlREXHK4C05cmLbCpvKwX87Oudp+D25xXcIj9Earjt7ZDFrtfhB3VacAtoxxhx13vrR5GyBajA3mQvZm3cL2fgpwzhUQDmw63jIXtO235ZpJ3C98ABD7SQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;  s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=npBr5nmDbPTlKttnDno20kftZ3Y8HTnpYTY/2TgxnW8=; b=AUb7pTvIshNEqsmdN8cY4LUrt+q648BGMFuYKX3bSQDoaHT/gqH4q/uC/QDD09HrWIuJ4qzpF63G6VHlrOq8L/oFJlYLLVc0e/aof0OIofXn8PCz2FiY/uw1LEJUGMe3btNLy2rD1lRUusjFJB75fetVwBNupyN2B72nZ/YHMHjP1d1EPK1k/K4i6/nz4GVDDfd3xOM6+KvDA4SBsEZxDRRobZMjSwSM//+7QexVc892FRJjx5sHTTiCRHFquXkvd50rG+79m/kiGw4uTXvSLZfBE8RmlCZ2Hrfm85+6VaiSPkyux92PVOxpTQpHi5yZV4V9gutzQrELIv5d4lkdMg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=npBr5nmDbPTlKttnDno20kftZ3Y8HTnpYTY/2TgxnW8=; b=kTXAeksG60ONlYzLByEkiS762Y2WmVYvRjt1K79qJSWag9alGC79s/zQiI92wW/2A0E5npYaU/Pt7GYfhnobyIRVw+nIR4wcs27402O58bky7NWXDN2RC8tew5T6oLjTWSU3jCYyryeIjGB+rOBYWmvgLrnnZ0s5IkkVZkRuahM=
Received: from BYAPR05MB4296.namprd05.prod.outlook.com (2603:10b6:a02:f4::20) by BYAPR05MB6200.namprd05.prod.outlook.com (2603:10b6:a03:a8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.8; Wed, 1 Jul 2020 13:54:39 +0000
Received: from BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::6178:9f88:5ba0:1c89]) by BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::6178:9f88:5ba0:1c89%7]) with mapi id 15.20.3174.008; Wed, 1 Jul 2020 13:54:39 +0000
From: Antoni Przygienda <prz@juniper.net>
To: "EXT-zhang.zheng@zte.com.cn" <zhang.zheng@zte.com.cn>, "brunorijsman@gmail.com" <brunorijsman@gmail.com>
CC: "alankar_sharma@comcast.com" <alankar_sharma@comcast.com>, "pthubert@cisco.com" <pthubert@cisco.com>, "fl0w@yandex-team.ru" <fl0w@yandex-team.ru>, "EXT-zzhang_ietf@hotmail.com" <zzhang_ietf@hotmail.com>, "wei.yuehua@zte.com.cn" <wei.yuehua@zte.com.cn>, "mashaowen@gmail.com" <mashaowen@gmail.com>, "xufeng.liu.ietf@gmail.com" <xufeng.liu.ietf@gmail.com>, "jefftant.ietf@gmail.com" <jefftant.ietf@gmail.com>, "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>, "rift@ietf.org" <rift@ietf.org>
Thread-Topic: Dear RIFT protocol and RIFT YANG co-author, pls review theupdateof RIFT YANG model
Thread-Index: AQHWT68qM29WnPzP1U2YO/56CVV+EQ==
Date: Wed, 1 Jul 2020 13:54:39 +0000
Message-ID: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=0; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=f7a7b3d1-253b-4950-ac30-00000b503568; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2020-07-01T13:51:28Z;  MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=Juniper Business Use Only;MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true;
user-agent: Microsoft-MacOutlook/16.38.20061401
authentication-results: zte.com.cn; dkim=none (message not signed) header.d=none;zte.com.cn; dmarc=none action=none header.from=juniper.net;
x-originating-ip: [66.129.239.11]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: 8307ccfb-4513-4421-20e2-08d81dc64c90
x-ms-traffictypediagnostic: BYAPR05MB6200:
x-ld-processed: bea78b3c-4cdb-4130-854a-1d193232e5f4,ExtAddr
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <BYAPR05MB62002AD9DD55D2C453DFF22DAC6C0@BYAPR05MB6200.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: ZYKoIFwl5amZuvAYUP1k/vavxcamjWKFq0z++YD9G0QtKK0gKJQbgMYA5bpeYe5ionuwpU6cqaHoGewh/fCIXZlhFHXhQD/SoWf+yTxcZ2gvajYhzXZmIPz3FFLVZfDfBmHpUcc8YwtH3aUIkUa+L8ZpWh2cqP9ypH4cGGMG77JeZrrJHuURPpXcJM0wVejUfdGqsk9nO8cZ7YAiKO0M3jGE4L6uDdlxySo3fIJQoGy4ZpTfL+0IwO4fW/1LVV6CLWGO2Arx3+b43BgWYw4kVqhgFcBTwLlmkWoqJXwHqkZvSIVJP+z6+psQnRGq+VwUanBCIVGGAJWDGMU0i4ONWzmzU1L1JyGAg2e1+AMgRdNE+oLPX3JD9ZqbOapjFkzZppRnGeqOei6OftWPvJ3sKBuwt3VwweZYpuq3EhJvbljcaNdhiYE2IjT7eOrzqqSQSrE6RFktUg4GzWlAW2m+og==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;  IPV:NLI; SFV:NSPM; H:BYAPR05MB4296.namprd05.prod.outlook.com; PTR:; CAT:NONE;  SFTY:; SFS:(4636009)(366004)(346002)(39860400002)(136003)(396003)(376002)(6486002)(26005)(53546011)(86362001)(7416002)(2616005)(36756003)(33656002)(2906002)(71200400001)(186003)(166002)(5660300002)(83380400001)(30864003)(8936002)(64756008)(66556008)(66476007)(4326008)(8676002)(6512007)(316002)(478600001)(54906003)(110136005)(45080400002)(6506007)(66446008)(66946007)(76116006)(491001)(579004)(559001); DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: qNZqlngMbggg3lSeQF07dAtSkMn7sp9vOQwodokQExvvJgjMFkzM5pIu/XBFyuw/m2I21dg3Jc695ii3nrrHdYQufiUxGcYowqRSNSNlz1tuCACKqKezigYNmfH6olix7IaWTwH+0MKpCZA6Hf6F6Dsaabk8xFM5lN+4IOqrJe49VkNHuOQoUNuJOffmoKV1SCas2CGx4/OvbPbaYOUxjQswCdv3u6iD9rYManp1kBgFQR/i5hpYxi4ToaO01H5V3yHlyCGKqvjZcHq0j00+AbPvwGjdUrG3VueuQIT/QVH72vnZqDRgXtuLmshr0Ee5gVTGDpAptEAtzxnhxO7FGUc65FLSv1qcc4WUVIgHJY0/eZEzG/KfJocyNgWG1ndfQUwU20aBdNuSVcBy19GZoJnRk3a8UpZ9rnSDqSDMsVHlb5MsPw9qzd2AN/orpqRgH6YBFpfBaUnLaJea6AyPFFF6gBPgdpuQyUQJLceuaZ+ZE4qL3/xB3b122byBB2XW
Content-Type: multipart/alternative; boundary="_000_BF881FFF9AFC48F0BC86AF8069DE957Ajunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BYAPR05MB4296.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8307ccfb-4513-4421-20e2-08d81dc64c90
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2020 13:54:39.7149 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: pAv8Lf8LjNiQj+wr0Mg1sHLiIs1//8xHEGRJOn8QiWcGiZrInJdvawnuWPix51gg
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB6200
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-01_08:2020-07-01, 2020-07-01 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 lowpriorityscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 clxscore=1015 cotscore=-2147483648 adultscore=0 mlxlogscore=999 spamscore=0 impostorscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2007010100
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/UVTsr-hgH4tU_kEHZ3n8gl9BRrI>
X-Mailman-Approved-At: Wed, 01 Jul 2020 09:14:31 -0700
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, pls review theupdateof RIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Jul 2020 13:55:06 -0000

--_000_BF881FFF9AFC48F0BC86AF8069DE957Ajunipernet_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

WW91IGdvdCBteSBjb21tZW50cyBhIHdoaWxlIGFnbywgSSB3YWl0IGZvciBuZXh0IHZlcnNpb24g
YW5kIGNvbW1lbnQgYWdhaW4uDQoNCkdlbmVyYWxseSwgSSB3YXMgc3RydWdnbGluZyB0byB1bmRl
cnN0YW5kIHdoYXQgd2FzIGNvbmZpZyAmIHdoYXQgd2FzIOKAnHN0YXRl4oCdIG9mIHRoZSBkZXZp
Y2UuIFlvdSBjYW4gc29sdmUgaXQgYnkgZmxhdHRlbmluZyBhbGwgaW4gb25lIGhpZXJhcmNoeSBi
dXQgeW91IG5lZWQgYmUgdmVyeSBjYXJlZnVsIHdoYXQgaXMgcncgYW5kIHdoYXQgaXMgcm8gIG9y
IHlvdSBzcGxpdCBpbnRvIHR3byBoaWVyYXJjaGllcyAoQUZBSVIgeW91IGRpZCB0aGF0KS4gTG90
cyBvZiBjb21tZW50cyBoZXJlIHNlZW1zIHRvIGZhbGwgb3V0IG9mIHRoYXQgKGFuZCBteSBjb21t
ZW50cyBhcyB3ZWxsKQ0KDQoNCiAgKiAgIFRvbnkNCg0KRnJvbTogInpoYW5nLnpoZW5nQHp0ZS5j
b20uY24iIDx6aGFuZy56aGVuZ0B6dGUuY29tLmNuPg0KRGF0ZTogV2VkbmVzZGF5LCBKdWx5IDEs
IDIwMjAgYXQgMjoxOCBBTQ0KVG86ICJicnVub3JpanNtYW5AZ21haWwuY29tIiA8YnJ1bm9yaWpz
bWFuQGdtYWlsLmNvbT4NCkNjOiBBbnRvbmkgUHJ6eWdpZW5kYSA8cHJ6QGp1bmlwZXIubmV0Piwg
IlNoYXJtYSwgQWxhbmthciIgPGFsYW5rYXJfc2hhcm1hQGNvbWNhc3QuY29tPiwgInB0aHViZXJ0
QGNpc2NvLmNvbSIgPHB0aHViZXJ0QGNpc2NvLmNvbT4sIERtaXRyeSBBZmFuYXNpZXYgPGZsMHdA
eWFuZGV4LXRlYW0ucnU+LCAiRVhULXp6aGFuZ19pZXRmQGhvdG1haWwuY29tIiA8enpoYW5nX2ll
dGZAaG90bWFpbC5jb20+LCAid2VpLnl1ZWh1YUB6dGUuY29tLmNuIiA8d2VpLnl1ZWh1YUB6dGUu
Y29tLmNuPiwgIm1hc2hhb3dlbkBnbWFpbC5jb20iIDxtYXNoYW93ZW5AZ21haWwuY29tPiwgInh1
ZmVuZy5saXUuaWV0ZkBnbWFpbC5jb20iIDx4dWZlbmcubGl1LmlldGZAZ21haWwuY29tPiwgImpl
ZmZ0YW50LmlldGZAZ21haWwuY29tIiA8amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20+LCBaaGFvaHVp
IFpoYW5nIDx6emhhbmdAanVuaXBlci5uZXQ+LCAicmlmdEBpZXRmLm9yZyIgPHJpZnRAaWV0Zi5v
cmc+DQpTdWJqZWN0OiBSZTpEZWFyIFJJRlQgcHJvdG9jb2wgYW5kIFJJRlQgWUFORyBjby1hdXRo
b3IsIHBscyByZXZpZXcgdGhldXBkYXRlb2YgUklGVCBZQU5HIG1vZGVsDQoNCltFeHRlcm5hbCBF
bWFpbC4gQmUgY2F1dGlvdXMgb2YgY29udGVudF0NCg0KDQpIaSBCcnVubywNCg0KDQoNClRoYW5r
IHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVudHMhDQoNClBsZWFzZSBmaW5kIG15IGFuc3dl
ciBpbmxpbmUgd2l0aCBTYW5keT4uDQoNCg0KDQpUaGFua3MsDQoNClNhbmR5DQoNCg0KPGh0dHBz
Oi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwOi93d3cuenRlLmNvbS5jbi9fXzshIU5FdDZ5TWFP
LWdrIVI0S1NPVlA5MVBzUC1RbjhSYmlvbkI4bUhYeEd1ampaT2tpUmpZYlVBX1dKelBsVEFvMnBT
b0xMU25VMUNRJD4NCuWOn+Wni+mCruS7tg0K5Y+R5Lu25Lq677yaQnJ1bm9SaWpzbWFuIDxicnVu
b3JpanNtYW5AZ21haWwuY29tPg0K5pS25Lu25Lq677ya5byg5b6BMDAwMDc5NDA7DQrmioTpgIHk
urrvvJpBbnRvbmkgUHJ6eWdpZW5kYSA8cHJ6QGp1bmlwZXIubmV0PjthbGFua2FyX3NoYXJtYUBj
b21jYXN0LmNvbSA8YWxhbmthcl9zaGFybWFAY29tY2FzdC5jb20+O3B0aHViZXJ0QGNpc2NvLmNv
bSA8cHRodWJlcnRAY2lzY28uY29tPjtmbDB3QHlhbmRleC10ZWFtLnJ1IDxmbDB3QHlhbmRleC10
ZWFtLnJ1Pjt6emhhbmdfaWV0ZkBob3RtYWlsLmNvbSA8enpoYW5nX2lldGZAaG90bWFpbC5jb20+
O+mtj+aciOWNjjAwMDE5NjU1O21hc2hhb3dlbkBnbWFpbC5jb20gPG1hc2hhb3dlbkBnbWFpbC5j
b20+O3h1ZmVuZy5saXUuaWV0ZkBnbWFpbC5jb20gPHh1ZmVuZy5saXUuaWV0ZkBnbWFpbC5jb20+
O2plZmZ0YW50LmlldGZAZ21haWwuY29tIDxqZWZmdGFudC5pZXRmQGdtYWlsLmNvbT47enpoYW5n
QGp1bmlwZXIubmV0IDx6emhhbmdAanVuaXBlci5uZXQ+Ow0K5pelIOacnyDvvJoyMDIw5bm0MDbm
nIgzMOaXpSAxODoxNw0K5Li7IOmimCDvvJpSZTogRGVhciBSSUZUIHByb3RvY29sIGFuZCBSSUZU
IFlBTkcgY28tYXV0aG9yLCBwbHMgcmV2aWV3IHRoZXVwZGF0ZW9mIFJJRlQgWUFORyBtb2RlbA0K
SSBoYXZlIG5vdCB5ZXQgZmluaXNoZWQgcmV2aWV3aW5nIHRoZSBjb21wbGV0ZSBkYXRhIG1vZGVs
LCBidXQgaGVyZSBhcmUgc29tZSBpbml0aWFsIGFkZGl0aW9uYWwgY29tbWVudHMgZnJvbSBtZToN
Cg0KbW9kdWxlOiBpZXRmLXJpZnQNCiAgYXVnbWVudCAvcnQ6cm91dGluZy9ydDpjb250cm9sLXBs
YW5lLXByb3RvY29scy9ydDpjb250cm9sLXBsYW5lLXByb3RvY29sOg0KICAgICstLXJ3IHJpZnQh
DQogICAgICAgKy0tcncgbm9kZQ0KICAgICAgIHwgICstLXJ3IG5hbWU/ICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZw0KICAgICAgIHwgICstLXJ3IGxldmVsPyAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsDQoNCg0KV2UgbmVlZCB0byBkaXN0aW5ndWlzaCBjb25maWd1cmVkLWxldmVs
IHZzIGRlcml2ZWQtbGV2ZWwgKHNlZSBzZWN0aW9uIDQuMi43LjEuIGluIGRyYWZ0LWlldGYtcmlm
dC1yaWZ0LTEyKS4NCg0KU2FuZHk+IEluIGZhY3QgdGhpcyBpcyB0aGUgZWZmZWN0aXZlIHZhbHVl
IGluIHRoZSBkZXZpY2UuIEl0J3Mgbm90IGRpcmVjdGx5IGFjY29yZGluZyB0byB0aGUgQ0xJIGNv
bmZpZ3VyYXRpb24uDQoNClRoZSBsZWFmIGhhbCBiZWxvdyBpbmRpY2F0ZXMgdGhlIHBvdGVudGlh
bCBkcml2ZWQgbGV2ZWwgdmFsdWUuIEl0IHNlZW1zIGxpa2UgaXQgaXMgbm90IG5lY2Vzc2FyeSB0
byBhZGQgYSBkZWRpY2F0ZWQgY29uZmlndXJlZCB2YWx1ZSBmb3IgaXQ/IFdoYXQgZG8geW91IHRo
aW5rIG9mIGl0Pw0KDQogICAgICAgfCAgKy0tcncgc3lzdGVtLWlkICAgICAgICAgICAgICAgICAg
ICAgc3lzdGVtLWlkDQogICAgICAgfCAgKy0tcncgcG9kPyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyDQogICAgICAgfCAgKy0tcncgb3ZlcmxvYWQ/ICAgICAgICAgICAgICAgICAgICAg
Ym9vbGVhbg0KICAgICAgIHwgICstLXJ3IG5vZGUtY2FwYWJpbGl0eQ0KDQoNClRoZSBuZWlnaGJv
cnMgY29udGFpbmVyIChiZWxvdykgc2hvdWxkIGNvbnRhaW4gdGhlIGNhcGFiaWxpdGllcyBhZHZl
cnRpc2VkIGJ5IGVhY2ggbmVpZ2hib3IuDQoNClNhbmR5PiBPSy4gSSdsbCBhZGQgaXQuDQoNCiAg
ICAgICB8ICB8ICArLS1ybyBwcm90b2NvbC1taW5vci12ZXJzaW9uPyAgIHVpbnQxNg0KDQoNClRo
aXMgc2hvdWxkIG5vdCBiZSBvcHRpb25hbDsgdGhlIFJJRlQgZW5naW5lIGFsd2F5cyBoYXMgYSBz
cGVjaWZpYyBtaW5vciB2ZXJzaW9uIGFuZCBpdCBpcyBhIHJlcXVpcmVkIGZpZWxkIGluIHRoZSBU
aHJpZnQgbW9kZWwuDQoNClNhbmR5PiBPSy4gSSdsbCBtb2RpZnkgaXQgdG8gbWFuZGF0b3J5Lg0K
DQogICAgICAgfCAgfCAgKy0tcm8gaGllcmFyY2h5LWluZGljYXRpb25zPyAgICBlbnVtZXJhdGlv
bg0KICAgICAgIHwgIHwgICstLXJ3IGZsb29kLXJlZHVjaW5nLWNhcGFibGU/ICAgYm9vbGVhbiB7
Zmxvb2QtcmVkdWNpbmd9Pw0KDQoNCkxpbmd1aXN0aWMgaGFpcnNwbGl0dGluZzogaXMgY2FwYWJs
ZSB0aGUgcmlnaHQgd29yZD8gSWYgd2Ugc2V0IHRoaXMgdG8gZmFsc2UsIGl0IG9ubHkgbWVhbnMg
dGhhdCBmbG9vZCByZWR1Y3Rpb24gaGFzIGJlZW4gZGlzYWJsZWQsIG5vdCB0aGF0IHRoZSBub2Rl
IGlzIG5vdCBjYXBhYmxlIG9mIGZsb29kIHJlZHVjdGlvbi4NCg0KU2FuZHk+IFlvdSBhcmUgcmln
aHQuIEJ1dCBJIG1vZGlmaWVkIHRoZSBuYW1lIGFjY29yZGluZyB0byBUb255J3MgY29tbWVudHMu
IERvIHlvdSB0aGluayBpdCdzIGJldHRlciB0byBtb2RpZnkgdGhlIGZlYXR1cmUgbmFtZSB0byAi
Zmxvb2QtcmVkdWNpbmciIG90aGVyIHRoYW4gbGVhZiBuYW1lPw0KDQogICAgICAgfCAgfCAgKy0t
cncgbm9uY2UtZGVsdGE/ICAgICAgICAgICAgICB1aW50OCB7bm9uY2UtZGVsdGEtYWRqdXN0fT8N
Cg0KDQpXaHkgaXMgdGhpcyB1bmRlciBjYXBhYmlsaXRpZXM/DQoNClNhbmR5PiBJJ2xsIG1vdmUg
dGhpcyBsZWFmIG91dC4NCg0KICAgICAgIHwgICstLXJ3IGxpZS1pcHY0LW11bHRpY2FzdC1hZGRy
ZXNzPyAgIHJ0LXR5cGVzOmlwdjQtbXVsdGljYXN0LWdyb3VwLWFkZHJlc3MNCiAgICAgICB8ICAr
LS1ydyBsaWUtaXB2Ni1tdWx0aWNhc3QtYWRkcmVzcz8gICBydC10eXBlczppcHY2LW11bHRpY2Fz
dC1ncm91cC1hZGRyZXNzDQogICAgICAgfCAgKy0tcncgbGluay1jYXBhYmlsaXR5DQoNCg0KVGhl
IGxpbmsgY2FwYWJpbGl0aWVzIGFyZSBwZXIgbGluaywgc28gdGhleSBzaG91bGQgYmUgaW4gdGhl
IG5laWdoYm9yIHRhYmxlIGJlbG93Lg0KDQpTYW5keT4gSSB3aWxsIG1vdmUgaXQgdG8gaW50ZXJm
YWNlIGFuZCBuZWlnaGJvci4gQnV0IGRvIHdlIG5lZWQgYSBnbG9iYWwgc2V0dGluZyBmb3IgaXQ/
DQoNCiAgICAgICB8ICB8ICArLS1ydyBiZmQ/ICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB7
YmZkfT8NCiAgICAgICB8ICB8ICArLS1ydyB2NC1mb3J3YXJkaW5nLWNhcGFibGU/ICAgYm9vbGVh
bg0KICAgICAgIHwgICstLXJ3IGZsb29kLXBvcnQ/ICAgICAgICAgICAgICAgICAgIGluZXQ6cG9y
dC1udW1iZXINCiAgICAgICB8ICArLS1ydyBsaWUtcngtcG9ydD8gICAgICAgICAgICAgICAgICBp
bmV0OnBvcnQtbnVtYmVyDQogICAgICAgfCAgKy0tcncgaG9sZHRpbWU/ICAgICAgICAgICAgICAg
ICAgICAgcnQtdHlwZXM6dGltZXItdmFsdWUtc2Vjb25kczE2DQogICAgICAgfCAgKy0tcncgdGlk
ZS1nZW5lcmF0aW9uLWludGVydmFsPyAgICAgcnQtdHlwZXM6dGltZXItdmFsdWUtc2Vjb25kczE2
DQogICAgICAgfCAgKy0tcncgdGllLXNlY3VyaXR5LWtleS1pZD8gICAgICAgICAgdWludDMyIHth
dXRoZW50aWNhdGlvbn0/DQogICAgICAgfCAgKy0tcncgbG9jYWwtbm9uY2U/ICAgICAgICAgICAg
ICAgICAgdWludDE2DQoNClRoaXMgc2hvdWxkIGJlIHJvIGluc3RlYWQgb2YgcncNCkRpc3Rpbmd1
aXNoIG5vbmNlLWxvY2FsIChzZW50KSB2ZXJzdXMgbm9uY2UtcmVtb3RlIChyZWNlaXZlZCkNCg0K
Tm9uY2VzIGFyZSBwZXIgaW50ZXJmYWNlLCBzbyBpdCBzaG91bGQgYmUgaW4gdGhlIG5laWdoYm9y
IHRhYmxlIGJlbG93DQoNClNhbmR5PiBJcyB0aGlzIHZhbHVlIGNhbiBiZSBhZGp1c3RlZD8NCg0K
RG8gd2UgdXNlIHRoZSBzYW1lIG5vbmNlIG9uIGFsbCB0aGUgaW50ZXJmYWNlPyBJZiBub3QsIGRv
IHlvdSB0aGluayBpdCdzIE9LIHRvIG1vdmUgdGhlIGxlYWYgdG8gbGluay1pZC1wYWlyPw0KDQog
ICAgICAgfCAgKy0tcm8gaW50ZXJmYWNlcw0KICAgICAgIHwgIHwgICstLXJvIGludGVyZmFjZSog
W25hbWVdDQogICAgICAgfCAgfCAgICAgKy0tcm8gbG9jYWwtbGluay1pZD8gICAgICAgICAgICAg
ICAgIGxpbmtpZC10eXBlDQogICAgICAgfCAgfCAgICAgKy0tcm8gbmFtZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmOmludGVyZmFjZS1yZWYNCg0KDQpZQU5HIG5ld2JpZSBxdWVzdGlvbiwg
YWxsIHRhYmxlcyBpbiB0aGlzIGRvY3VtZW50IGhhdmUgdGhpcyBhcHByb2FjaCB1c2luZyAyIGxl
dmVscyBvZiBuZXN0aW5nLiBXaHkgaXMgaXQgbm90IHNpbXBseSAxIGxldmVsIG9mIG5lc3Rpbmcg
bGlrZSB0aGlzOg0KDQpTYW5keT4gT0suIEknbGwgbW9kaWZ5IGl0Lg0KDQogICstLXJvIGludGVy
ZmFjZXMNCiAgICAgKy0tcm8gaW50ZXJmYWNlKiBbbmFtZV0NCiAgICAgKy0tcm8gbG9jYWwtbGlu
ay1pZA0KICAgICArLS1ybyBuYW1lDQogICAgIC4uLg0KDQogICAgICAgfCAgfCAgICAgKy0tcm8g
YWRkcmVzcz8gICAgICAgICAgICAgICAgICAgICAgIGluZXQ6aXAtYWRkcmVzcw0KDQpUaGUgYWRk
cmVzcyBvZiB0aGUgaW50ZXJmYWNlIGRvZXMgbm90IGJlbG9uZyBoZXJlIGluIHRoZSBSSUZUIG1v
ZGVsOyB0aGVyZSBpcyBhIHNlcGFyYXRlIElFVEYgWUFORyBkYXRhIG1vZGVsIGZvciBpbnRlcmZh
Y2VzLg0KDQpZb3UgY291bGQgbWFrZSBhbiBhcmd1bWVudCB0aGF0IHRoZSBzb3VyY2UgYWRkcmVz
cyB1c2VkIGZvciBzZW5kaW5nIFJJRlQgcGFja2V0cyBjb3VsZCBiZSBtb2RlbGVkOyBpZiBzbywg
bXVzdCB1c2Ugc2VwYXJhdGUgZmllbGRzIGZvciBsaWUtaXB2NC1zb3VyY2UtYWRkcmVzcywgbGll
LWlwdjYtc291cmNlLWFkZHJlc3MgKExJRXMgYXJlIHNlbnQgQk9USCBvbiBJUHY0IGFuZCBJUHY2
KSwgZmxvb2Rpbmctc291cmNlLWFkZHJlc3MgKGZsb29kaW5nIGlzIGRvbmUgb24gSVB2NCBPUiBJ
UHY2KS4NCg0KU2FuZHk+IE9LLiBJJ2xsIGFkZCBmb3VyIGxlYXZlcyBpbnN0ZWFkIG9mIGl0Lg0K
DQogICAgICAgfCAgfCAgICAgKy0tcm8gaWYtaW5kZXg/ICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMg0KDQoNCkJlbG9uZ3MgaW4gdGhlIGludGVyZmFjZSBZQU5HIG1vZGVsLCBub3QgaW4gdGhl
IFJJRlQgWUFORyBtb2RlbC4NCg0KU2FuZHk+IE9LLiBJJ2xsIGRlbGV0ZSBpdC4NCg0KICAgICAg
IHwgIHwgICAgICstLXJvIGRpcmVjdGlvbi10eXBlPyAgICAgICAgICAgICAgICBlbnVtZXJhdGlv
bg0KICAgICAgIHwgIHwgICAgICstLXJvIHlvdS1hcmUtZmxvb2QtcmVwZWF0ZXI/ICAgICAgICBi
b29sZWFuDQogICAgICAgfCAgfCAgICAgKy0tcm8gbm90LWEtenRwLW9mZmVyPyAgICAgICAgICAg
ICAgIGJvb2xlYW4NCiAgICAgICB8ICB8ICAgICArLS1ybyB5b3UtYXJlLXNlbmRpbmctdG9vLXF1
aWNrbHk/ICAgYm9vbGVhbg0KICAgICAgIHwgICstLXJ3IG1pc2NhYmxlZC1saW5rcyogICAgICAg
ICAgICAgIGxpbmtpZC10eXBlDQogICAgICAgfCAgKy0tcncgKGFsZ29yaXRobS10eXBlKT8NCiAg
ICAgICB8ICB8ICArLS06KHNwZikNCiAgICAgICB8ICB8ICArLS06KGFsbC1wYXRoKQ0KICAgICAg
IHwgICstLXJvIGhhbD8gICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsDQogICAgICAgfCAg
Ky0tcm8gdm9sLWxpc3QNCiAgICAgICB8ICB8ICArLS1ybyB2b2wqIFtzeXN0ZW0taWRdDQogICAg
ICAgfCAgfCAgICAgKy0tcm8gb2ZmZXJlZC1sZXZlbD8gICBsZXZlbA0KICAgICAgIHwgIHwgICAg
ICstLXJvIG5hbWU/ICAgICAgICAgICAgc3RyaW5nDQogICAgICAgfCAgfCAgICAgKy0tcm8gbGV2
ZWw/ICAgICAgICAgICBsZXZlbA0KICAgICAgIHwgIHwgICAgICstLXJvIHN5c3RlbS1pZCAgICAg
ICAgc3lzdGVtLWlkDQogICAgICAgfCAgfCAgICAgKy0tcm8gcG9kPyAgICAgICAgICAgICB1aW50
MzINCiAgICAgICB8ICArLS1ydyBpbnN0YW5jZS1sYWJlbD8gICAgICAgICAgICAgICB1aW50MzIN
CiAgICAgICArLS1ybyBuZWlnaGJvcg0KDQpJbiBSSUZUIHlvdSBjYW5ub3QgaGF2ZSBtdWx0aXBs
ZSAoPjEpIG5laWdoYm9ycyBwZXIgaW50ZXJmYWNlLg0KVGh1cywgYSBuZWlnaGJvciBzaG91bGQg
YmUgYW4gb3B0aW9uYWwgc2luZ2xlLWVsZW1lbnQgY29udGFpbmVyIHVuZGVyIG5laWdoYm9yLg0K
DQpFdmVuIGlmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGF0IGFuZCB3YW50IHRvIGtlZXAgbmVp
Z2hib3Igb3Vyc2lkZSBvZiBpbnRlcmZhY2UsIGl0IHNob3VsZCBiZSB1bmRlciBub2RlIGFuZCBu
b3QgdW5kZXIgcmlmdA0KDQpTYW5keT4gSSB1bmRlcnN0YW5kIHlvdXIgcG9pbnQuIEJ1dCB0aGVy
ZSBtYXkgYmUgbXVsdGlwbGUgcGFyYWxsZWwgbGlua3MgY29ubmVjdCB0byBhIHNhbWUgbmVpZ2hi
b3IsIHJpZ2h0Pw0KDQogICAgICAgfCAgKy0tcm8gbmJycyogW3N5c3RlbS1pZF0NCg0KDQpTcGVs
bCBuYnJzIG91dCAobmVpZ2hib3JzKQ0KDQpTYW5keT4gTm8gcHJvYmxlbS4gSSdsbCBtb2RpZnkg
aXQuDQoNCiAgICAgICB8ICAgICArLS1ybyBuYW1lPyAgICAgICAgICAgc3RyaW5nDQogICAgICAg
fCAgICAgKy0tcm8gbGV2ZWw/ICAgICAgICAgIGxldmVsDQogICAgICAgfCAgICAgKy0tcm8gc3lz
dGVtLWlkICAgICAgIHN5c3RlbS1pZA0KICAgICAgIHwgICAgICstLXJvIHBvZD8gICAgICAgICAg
ICB1aW50MzINCiAgICAgICB8ICAgICArLS1ybyBhZGRyZXNzPyAgICAgICAgaW5ldDppcC1hZGRy
ZXNzDQogICAgICAgfCAgICAgKy0tcm8gY29zdD8gICAgICAgICAgIHVpbnQzMg0KICAgICAgIHwg
ICAgICstLXJvIHJlbW90ZS1ub25jZT8gICB1aW50MTYNCiAgICAgICB8ICAgICArLS1ybyBsaW5r
LWlkLXBhaXIqIFtyZW1vdGUtaWRdDQogICAgICAgfCAgICAgfCAgKy0tcm8gbG9jYWwtaWQ/ICAg
ICAgICAgICAgICAgIHVpbnQzMg0KICAgICAgIHwgICAgIHwgICstLXJvIHJlbW90ZS1pZCAgICAg
ICAgICAgICAgICB1aW50MzINCiAgICAgICB8ICAgICB8ICArLS1ybyBpZi1pbmRleD8gICAgICAg
ICAgICAgICAgdWludDMyDQogICAgICAgfCAgICAgfCAgKy0tcm8gaWYtbmFtZT8gICAgICAgICAg
ICAgICAgIGlmOmludGVyZmFjZS1yZWYNCiAgICAgICB8ICAgICB8ICArLS1ybyBiZmQtdXA/ICAg
ICAgICAgICAgICAgICAgYm9vbGVhbg0KICAgICAgIHwgICAgIHwgICstLXJvIG91dGVyLXNlY3Vy
aXR5LWtleS1pZD8gICB1aW50OCB7YXV0aGVudGljYXRpb259Pw0KICAgICAgIHwgICAgIHwgICst
LXJvIGFkZHJlc3MtZmFtaWxpZXMNCiAgICAgICB8ICAgICB8ICAgICArLS1ybyBhZGRyZXNzLWZh
bWlseSogW2FkZHJlc3MtZmFtaWx5XQ0KICAgICAgIHwgICAgIHwgICAgICAgICstLXJvIGFkZHJl
c3MtZmFtaWx5ICAgIGlhbmEtcnQtdHlwZXM6YWRkcmVzcy1mYW1pbHkNCiAgICAgICB8ICAgICAr
LS1ybyBiYW5kd2lkdGg/ICAgICAgdWludDMyDQogICAgICAgfCAgICAgKy0tcm8gc3RhdGU/ICAg
ICAgICAgIGVudW1lcmF0aW9uDQogICAgICAgKy0tcm8gZGF0YWJhc2UNCg0KDQpUaGUgZGF0YWJh
c2UgY29udGFpbmVyIHNob3VsZCBiZSB1bmRlciBub2RlIGFuZCBub3QgdW5kZXIgcmlmdA0KDQpT
YW5keT4gWWVzLiBUaGUgZGF0YWJhc2UgY29udGFpbmVyIGlzIHVuZGVyIG5vZGUsIG5vdCB1bmRl
ciByaWZ0LiBQbGVhc2UgcmVjb25maXJtIGl0LiBUaGFuayB5b3UgdmVyeSBtdWNoIQ0KDQogICAg
ICAgfCAgKy0tcm8gdGllcyogW2RpcmVjdGlvbi10eXBlIG9yaWdpbmF0b3IgdGllLXR5cGUgdGll
LW51bWJlcl0NCiAgICAgICB8ICAgICArLS1ybyBkaXJlY3Rpb24tdHlwZSAgICAgICAgICBlbnVt
ZXJhdGlvbg0KICAgICAgIHwgICAgICstLXJvIG9yaWdpbmF0b3IgICAgICAgICAgICAgIHN5c3Rl
bS1pZA0KICAgICAgIHwgICAgICstLXJvIHRpZS10eXBlICAgICAgICAgICAgICAgIGVudW1lcmF0
aW9uDQogICAgICAgfCAgICAgKy0tcm8gdGllLW51bWJlciAgICAgICAgICAgICAgdWludDMyDQog
ICAgICAgfCAgICAgKy0tcm8gc2VxPyAgICAgICAgICAgICAgICAgICAgdWludDY0DQogICAgICAg
fCAgICAgKy0tcm8gb3JpZ2luYXRpb24tdGltZT8gICAgICAgdWludDMyDQogICAgICAgfCAgICAg
Ky0tcm8gb3JpZ2luYXRpb24tbGlmZXRpbWU/ICAgdWludDMyDQogICAgICAgfCAgICAgKy0tcm8g
bm9kZQ0KICAgICAgIHwgICAgIHwgICstLXJvIG5hbWU/ICAgICAgICAgICAgICBzdHJpbmcNCiAg
ICAgICB8ICAgICB8ICArLS1ybyBsZXZlbD8gICAgICAgICAgICAgbGV2ZWwNCiAgICAgICB8ICAg
ICB8ICArLS1ybyBzeXN0ZW0taWQgICAgICAgICAgc3lzdGVtLWlkDQogICAgICAgfCAgICAgfCAg
Ky0tcm8gcG9kPyAgICAgICAgICAgICAgIHVpbnQzMg0KICAgICAgIHwgICAgIHwgICstLXJvIG5v
ZGUtY2FwYWJpbGl0eQ0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIHByb3RvY29sLW1pbm9yLXZl
cnNpb24/ICAgdWludDE2DQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gaGllcmFyY2h5LWluZGlj
YXRpb25zPyAgICBlbnVtZXJhdGlvbg0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIGZsb29kLXJl
ZHVjaW5nLWNhcGFibGU/ICAgYm9vbGVhbiB7Zmxvb2QtcmVkdWNpbmd9Pw0KICAgICAgIHwgICAg
IHwgIHwgICstLXJvIG5vbmNlLWRlbHRhPyAgICAgICAgICAgICAgdWludDgge25vbmNlLWRlbHRh
LWFkanVzdH0/DQogICAgICAgfCAgICAgfCAgKy0tcm8gb3ZlcmxvYWQ/ICAgICAgICAgIGJvb2xl
YW4NCiAgICAgICB8ICAgICB8ICArLS1ybyBzdGFydHVwLXRpbWU/ICAgICAgdWludDY0DQogICAg
ICAgfCAgICAgfCAgKy0tcm8gbmVpZ2hib3JzKiBbc3lzdGVtLWlkXQ0KICAgICAgIHwgICAgIHwg
IHwgICstLXJvIG5hbWU/ICAgICAgICAgICBzdHJpbmcNCiAgICAgICB8ICAgICB8ICB8ICArLS1y
byBsZXZlbD8gICAgICAgICAgbGV2ZWwNCiAgICAgICB8ICAgICB8ICB8ICArLS1ybyBzeXN0ZW0t
aWQgICAgICAgc3lzdGVtLWlkDQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gcG9kPyAgICAgICAg
ICAgIHVpbnQzMg0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIGFkZHJlc3M/ICAgICAgICBpbmV0
OmlwLWFkZHJlc3MNCiAgICAgICB8ICAgICB8ICB8ICArLS1ybyBjb3N0PyAgICAgICAgICAgdWlu
dDMyDQogICAgICAgfCAgICAgfCAgfCAgKy0tcm8gcmVtb3RlLW5vbmNlPyAgIHVpbnQxNg0KICAg
ICAgIHwgICAgIHwgIHwgICstLXJvIGxpbmstaWQtcGFpciogW3JlbW90ZS1pZF0NCiAgICAgICB8
ICAgICB8ICB8ICB8ICArLS1ybyBsb2NhbC1pZD8gICAgICAgICAgICAgICAgdWludDMyDQogICAg
ICAgfCAgICAgfCAgfCAgfCAgKy0tcm8gcmVtb3RlLWlkICAgICAgICAgICAgICAgIHVpbnQzMg0K
ICAgICAgIHwgICAgIHwgIHwgIHwgICstLXJvIGlmLWluZGV4PyAgICAgICAgICAgICAgICB1aW50
MzINCiAgICAgICB8ICAgICB8ICB8ICB8ICArLS1ybyBpZi1uYW1lPyAgICAgICAgICAgICAgICAg
aWY6aW50ZXJmYWNlLXJlZg0KICAgICAgIHwgICAgIHwgIHwgIHwgICstLXJvIGJmZC11cD8gICAg
ICAgICAgICAgICAgICBib29sZWFuDQogICAgICAgfCAgICAgfCAgfCAgfCAgKy0tcm8gb3V0ZXIt
c2VjdXJpdHkta2V5LWlkPyAgIHVpbnQ4IHthdXRoZW50aWNhdGlvbn0/DQogICAgICAgfCAgICAg
fCAgfCAgfCAgKy0tcm8gYWRkcmVzcy1mYW1pbGllcw0KICAgICAgIHwgICAgIHwgIHwgIHwgICAg
ICstLXJvIGFkZHJlc3MtZmFtaWx5KiBbYWRkcmVzcy1mYW1pbHldDQogICAgICAgfCAgICAgfCAg
fCAgfCAgICAgICAgKy0tcm8gYWRkcmVzcy1mYW1pbHkgICAgaWFuYS1ydC10eXBlczphZGRyZXNz
LWZhbWlseQ0KICAgICAgIHwgICAgIHwgIHwgICstLXJvIGJhbmR3aWR0aD8gICAgICB1aW50MzIN
CiAgICAgICB8ICAgICB8ICArLS1ybyBtaXNjYWJsZWQtbGlua3MqICAgbGlua2lkLXR5cGUNCiAg
ICAgICB8ICAgICArLS1ybyBwcmVmaXgNCiAgICAgICB8ICAgICAgICArLS1ybyBwcmVmaXg/ICAg
ICAgICAgICAgICBpbmV0OmlwLXByZWZpeA0KICAgICAgIHwgICAgICAgICstLXJvICh0eXBlKT8N
CiAgICAgICB8ICAgICAgICB8ICArLS06KHByZWZpeCkNCiAgICAgICB8ICAgICAgICB8ICArLS06
KHBvc2l0aXZlLWRpc2FnZ3JlZ2F0aW9uKQ0KICAgICAgIHwgICAgICAgIHwgICstLToobmVnYXRp
dmUtZGlzYWdncmVnYXRpb24pDQogICAgICAgfCAgICAgICAgfCAgKy0tOihleHRlcm5hbCkNCiAg
ICAgICB8ICAgICAgICB8ICArLS06KHBvc2l0aXZlLWV4dGVybmFsLWRpc2FnZ3JlZ2F0aW9uKQ0K
ICAgICAgIHwgICAgICAgIHwgICstLToocGdwKQ0KICAgICAgIHwgICAgICAgICstLXJvIG1ldHJp
Yz8gICAgICAgICAgICAgIHVpbnQzMg0KICAgICAgIHwgICAgICAgICstLXJvIHRhZ3MqICAgICAg
ICAgICAgICAgIHVpbnQ2NA0KICAgICAgIHwgICAgICAgICstLXJvIG1vbm90b25pYy1jbG9jaw0K
ICAgICAgIHwgICAgICAgIHwgICstLXJvIHByZWZpeC1zZXF1ZW5jZS10eXBlDQogICAgICAgfCAg
ICAgICAgfCAgICAgKy0tcm8gdGltZXN0YW1wICAgICAgICAgaWVlZTgwMi0xYXMtdGltZXN0YW1w
LXR5cGUNCiAgICAgICB8ICAgICAgICB8ICAgICArLS1ybyB0cmFuc2FjdGlvbi1pZD8gICB1aW50
OA0KICAgICAgIHwgICAgICAgICstLXJvIGxvb3BiYWNrPyAgICAgICAgICAgIGJvb2xlYW4NCiAg
ICAgICB8ICAgICAgICArLS1ybyBkaXJlY3RseS1hdHRhY2hlZD8gICBib29sZWFuDQogICAgICAg
fCAgICAgICAgKy0tcm8gZnJvbS1saW5rPyAgICAgICAgICAgbGlua2lkLXR5cGUNCiAgICAgICAr
LS1ybyBrdi1zdG9yZQ0KICAgICAgICAgICstLXJvIGt2cyogW2t2cy1pbmRleF0NCiAgICAgICAg
ICAgICArLS1ybyBrdnMtaW5kZXggICAgdWludDMyDQogICAgICAgICAgICAgKy0tcm8ga3ZzLXRp
ZQ0KICAgICAgICAgICAgICAgICstLXJvIGRpcmVjdGlvbi10eXBlPyAgICAgICAgIGVudW1lcmF0
aW9uDQogICAgICAgICAgICAgICAgKy0tcm8gb3JpZ2luYXRvcj8gICAgICAgICAgICAgc3lzdGVt
LWlkDQogICAgICAgICAgICAgICAgKy0tcm8gdGllLXR5cGU/ICAgICAgICAgICAgICAgZW51bWVy
YXRpb24NCiAgICAgICAgICAgICAgICArLS1ybyB0aWUtbnVtYmVyPyAgICAgICAgICAgICB1aW50
MzINCiAgICAgICAgICAgICAgICArLS1ybyBzZXE/ICAgICAgICAgICAgICAgICAgICB1aW50NjQN
CiAgICAgICAgICAgICAgICArLS1ybyBvcmlnaW5hdGlvbi10aW1lPyAgICAgICB1aW50MzINCiAg
ICAgICAgICAgICAgICArLS1ybyBvcmlnaW5hdGlvbi1saWZldGltZT8gICB1aW50MzINCiAgICAg
ICAgICAgICAgICArLS1ybyBrZXktdmFsdWUNCiAgICAgICAgICAgICAgICAgICArLS1ybyBrZXk/
ICAgICB1aW50MTYNCiAgICAgICAgICAgICAgICAgICArLS1ybyB2YWx1ZT8gICB1aW50MzINCg0K
ICBub3RpZmljYXRpb25zOg0KICAgICstLS1uIGVycm9yLXNldA0KICAgICAgICstLXJvIHRpZS1s
ZXZlbC1lcnJvcg0KICAgICAgIHwgICstLXJvIGRpcmVjdGlvbi10eXBlPyAgICAgICAgIGVudW1l
cmF0aW9uDQogICAgICAgfCAgKy0tcm8gb3JpZ2luYXRvcj8gICAgICAgICAgICAgc3lzdGVtLWlk
DQogICAgICAgfCAgKy0tcm8gdGllLXR5cGU/ICAgICAgICAgICAgICAgZW51bWVyYXRpb24NCiAg
ICAgICB8ICArLS1ybyB0aWUtbnVtYmVyPyAgICAgICAgICAgICB1aW50MzINCiAgICAgICB8ICAr
LS1ybyBzZXE/ICAgICAgICAgICAgICAgICAgICB1aW50NjQNCiAgICAgICB8ICArLS1ybyBvcmln
aW5hdGlvbi10aW1lPyAgICAgICB1aW50MzINCiAgICAgICB8ICArLS1ybyBvcmlnaW5hdGlvbi1s
aWZldGltZT8gICB1aW50MzINCiAgICAgICArLS1ybyBuYnItZXJyb3INCg0KDQpSZXBsYWNlIG5i
ciBieSBuZWlnaGJvciAoc3BlbGwgaXQgb3V0KQ0KDQpTYW5keT4gTm8gcHJvYmxlbS4gSSdsbCBt
b2RpZnkgaXQuDQoNCiAgICAgICAgICArLS1ybyBuYnJzKiBbc3lzdGVtLWlkXQ0KICAgICAgICAg
ICAgICstLXJvIG5hbWU/ICAgICAgICAgICBzdHJpbmcNCiAgICAgICAgICAgICArLS1ybyBsZXZl
bD8gICAgICAgICAgbGV2ZWwNCiAgICAgICAgICAgICArLS1ybyBzeXN0ZW0taWQgICAgICAgc3lz
dGVtLWlkDQogICAgICAgICAgICAgKy0tcm8gcG9kPyAgICAgICAgICAgIHVpbnQzMg0KICAgICAg
ICAgICAgICstLXJvIGFkZHJlc3M/ICAgICAgICBpbmV0OmlwLWFkZHJlc3MNCiAgICAgICAgICAg
ICArLS1ybyBjb3N0PyAgICAgICAgICAgdWludDMyDQogICAgICAgICAgICAgKy0tcm8gcmVtb3Rl
LW5vbmNlPyAgIHVpbnQxNg0KICAgICAgICAgICAgICstLXJvIGxpbmstaWQtcGFpciogW3JlbW90
ZS1pZF0NCiAgICAgICAgICAgICB8ICArLS1ybyBsb2NhbC1pZD8gICAgICAgICAgICAgICAgdWlu
dDMyDQogICAgICAgICAgICAgfCAgKy0tcm8gcmVtb3RlLWlkICAgICAgICAgICAgICAgIHVpbnQz
Mg0KICAgICAgICAgICAgIHwgICstLXJvIGlmLWluZGV4PyAgICAgICAgICAgICAgICB1aW50MzIN
CiAgICAgICAgICAgICB8ICArLS1ybyBpZi1uYW1lPyAgICAgICAgICAgICAgICAgaWY6aW50ZXJm
YWNlLXJlZg0KICAgICAgICAgICAgIHwgICstLXJvIGJmZC11cD8gICAgICAgICAgICAgICAgICBi
b29sZWFuDQogICAgICAgICAgICAgfCAgKy0tcm8gb3V0ZXItc2VjdXJpdHkta2V5LWlkPyAgIHVp
bnQ4IHthdXRoZW50aWNhdGlvbn0/DQogICAgICAgICAgICAgfCAgKy0tcm8gYWRkcmVzcy1mYW1p
bGllcw0KICAgICAgICAgICAgIHwgICAgICstLXJvIGFkZHJlc3MtZmFtaWx5KiBbYWRkcmVzcy1m
YW1pbHldDQogICAgICAgICAgICAgfCAgICAgICAgKy0tcm8gYWRkcmVzcy1mYW1pbHkgICAgaWFu
YS1ydC10eXBlczphZGRyZXNzLWZhbWlseQ0KICAgICAgICAgICAgICstLXJvIGJhbmR3aWR0aD8g
ICAgICB1aW50MzINCg0KDQoNCg0KDQpKdW5pcGVyIEJ1c2luZXNzIFVzZSBPbmx5DQo=

--_000_BF881FFF9AFC48F0BC86AF8069DE957Ajunipernet_
Content-Type: text/html; charset="utf-8"
Content-ID: <0477F1139469734FBBEA74C0D306B4C9@namprd05.prod.outlook.com>
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4
bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l
dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg
bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj
ZQ0KCXtmb250LWZhbWlseTpXaW5nZGluZ3M7DQoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAg
MDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJNUyBHb3RoaWMiOw0KCXBhbm9zZS0xOjIg
MTEgNiA5IDcgMiA1IDggMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEg
TWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2Zv
bnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQ0KQGZv
bnQtZmFjZQ0KCXtmb250LWZhbWlseTpMYXRvOw0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMg
MiAzO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlBpbmdGYW5nIFRDIjsNCglwYW5vc2Ut
MToyIDExIDQgMCAwIDAgMCAwIDAgMDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJcQE1T
IEdvdGhpYyI7DQoJcGFub3NlLTE6MiAxMSA2IDkgNyAyIDUgOCAyIDQ7fQ0KQGZvbnQtZmFjZQ0K
CXtmb250LWZhbWlseToiXEBQaW5nRmFuZyBUQyI7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls
eTpBdmVuaXItQm9vazsNCglwYW5vc2UtMToyIDAgNSAzIDIgMCAwIDIgMCAzO30NCi8qIFN0eWxl
IERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFs
DQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMS4w
cHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KcC5Nc29MaXN0UGFyYWdy
YXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBhcmFncmFwaA0KCXttc28tc3R5
bGUtcHJpb3JpdHk6MzQ7DQoJbWFyZ2luLXRvcDowaW47DQoJbWFyZ2luLXJpZ2h0OjBpbjsNCglt
YXJnaW4tYm90dG9tOjBpbjsNCgltYXJnaW4tbGVmdDouNWluOw0KCW1hcmdpbi1ib3R0b206LjAw
MDFwdDsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNl
cmlmO30NCnNwYW4uenJlYWR1c2VybmFtZQ0KCXttc28tc3R5bGUtbmFtZTp6cmVhZHVzZXJuYW1l
O30NCnNwYW4uRW1haWxTdHlsZTIyDQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsLXJlcGx5Ow0K
CWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0K
Lk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1zaXpl
OjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJbWFy
Z2luOjEuMGluIDEuMGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpX
b3JkU2VjdGlvbjE7fQ0KLyogTGlzdCBEZWZpbml0aW9ucyAqLw0KQGxpc3QgbDANCgl7bXNvLWxp
c3QtaWQ6MTY5OTU3NjAzMjsNCgltc28tbGlzdC10eXBlOmh5YnJpZDsNCgltc28tbGlzdC10ZW1w
bGF0ZS1pZHM6MTAyNzM3ODI0NiAyMTIyOTc5NDA4IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5
IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzO30NCkBsaXN0IGww
OmxldmVsMQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRl
eHQ674GuOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9z
aXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6V2luZ2Rpbmdz
Ow0KCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJbXNvLWJpZGktZm9udC1mYW1p
bHk6IlRpbWVzIE5ldyBSb21hbiI7fQ0KQGxpc3QgbDA6bGV2ZWwyDQoJe21zby1sZXZlbC1udW1i
ZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDpvOw0KCW1zby1sZXZlbC10YWItc3Rv
cDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDot
LjI1aW47DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZlbDMNCgl7
bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CpzsNCglt
c28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7
DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBs
MDpsZXZlbDQNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10
ZXh0Ou+CtzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBv
c2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9
DQpAbGlzdCBsMDpsZXZlbDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1z
by1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51
bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseToi
Q291cmllciBOZXciO30NCkBsaXN0IGwwOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1h
dDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25l
Ow0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47
DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwwOmxldmVsNw0KCXttc28tbGV2ZWwt
bnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674K3Ow0KCW1zby1sZXZlbC10
YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWlu
ZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0IGwwOmxldmVsOA0KCXtt
c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28t
bGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJ
dGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0KQGxpc3Qg
bDA6bGV2ZWw5DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwt
dGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1w
b3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseTpXaW5nZGlu
Z3M7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7bWFyZ2luLWJvdHRvbTowaW47
fQ0KLS0+PC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2
bGluaz0icHVycGxlIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj5Zb3UgZ290IG15IGNvbW1lbnRzIGEgd2hpbGUgYWdvLCBJIHdhaXQgZm9yIG5leHQg
dmVyc2lvbiBhbmQgY29tbWVudCBhZ2Fpbi4NCjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5HZW5l
cmFsbHksIEkgd2FzIHN0cnVnZ2xpbmcgdG8gdW5kZXJzdGFuZCB3aGF0IHdhcyBjb25maWcgJmFt
cDsgd2hhdCB3YXMg4oCcc3RhdGXigJ0gb2YgdGhlIGRldmljZS4gWW91IGNhbiBzb2x2ZSBpdCBi
eSBmbGF0dGVuaW5nIGFsbCBpbiBvbmUgaGllcmFyY2h5IGJ1dCB5b3UgbmVlZCBiZSB2ZXJ5IGNh
cmVmdWwgd2hhdCBpcyBydyBhbmQgd2hhdCBpcyBybyZuYnNwOyBvciB5b3Ugc3BsaXQgaW50byB0
d28gaGllcmFyY2hpZXMgKEFGQUlSDQogeW91IGRpZCB0aGF0KS4gTG90cyBvZiBjb21tZW50cyBo
ZXJlIHNlZW1zIHRvIGZhbGwgb3V0IG9mIHRoYXQgKGFuZCBteSBjb21tZW50cyBhcyB3ZWxsKTxv
OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+
DQo8dWwgc3R5bGU9Im1hcmdpbi10b3A6MGluIiB0eXBlPSJkaXNjIj4NCjxsaSBjbGFzcz0iTXNv
TGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjBpbjttc28tbGlzdDpsMCBsZXZlbDEg
bGZvMSI+VG9ueQ0KPG86cD48L286cD48L2xpPjwvdWw+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6
c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNr
Ij5Gcm9tOiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJs
YWNrIj4mcXVvdDt6aGFuZy56aGVuZ0B6dGUuY29tLmNuJnF1b3Q7ICZsdDt6aGFuZy56aGVuZ0B6
dGUuY29tLmNuJmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5XZWRuZXNkYXksIEp1bHkgMSwgMjAyMCBh
dCAyOjE4IEFNPGJyPg0KPGI+VG86IDwvYj4mcXVvdDticnVub3JpanNtYW5AZ21haWwuY29tJnF1
b3Q7ICZsdDticnVub3JpanNtYW5AZ21haWwuY29tJmd0Ozxicj4NCjxiPkNjOiA8L2I+QW50b25p
IFByenlnaWVuZGEgJmx0O3ByekBqdW5pcGVyLm5ldCZndDssICZxdW90O1NoYXJtYSwgQWxhbmth
ciZxdW90OyAmbHQ7YWxhbmthcl9zaGFybWFAY29tY2FzdC5jb20mZ3Q7LCAmcXVvdDtwdGh1YmVy
dEBjaXNjby5jb20mcXVvdDsgJmx0O3B0aHViZXJ0QGNpc2NvLmNvbSZndDssIERtaXRyeSBBZmFu
YXNpZXYgJmx0O2ZsMHdAeWFuZGV4LXRlYW0ucnUmZ3Q7LCAmcXVvdDtFWFQtenpoYW5nX2lldGZA
aG90bWFpbC5jb20mcXVvdDsgJmx0O3p6aGFuZ19pZXRmQGhvdG1haWwuY29tJmd0OywgJnF1b3Q7
d2VpLnl1ZWh1YUB6dGUuY29tLmNuJnF1b3Q7DQogJmx0O3dlaS55dWVodWFAenRlLmNvbS5jbiZn
dDssICZxdW90O21hc2hhb3dlbkBnbWFpbC5jb20mcXVvdDsgJmx0O21hc2hhb3dlbkBnbWFpbC5j
b20mZ3Q7LCAmcXVvdDt4dWZlbmcubGl1LmlldGZAZ21haWwuY29tJnF1b3Q7ICZsdDt4dWZlbmcu
bGl1LmlldGZAZ21haWwuY29tJmd0OywgJnF1b3Q7amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20mcXVv
dDsgJmx0O2plZmZ0YW50LmlldGZAZ21haWwuY29tJmd0OywgWmhhb2h1aSBaaGFuZyAmbHQ7enpo
YW5nQGp1bmlwZXIubmV0Jmd0OywgJnF1b3Q7cmlmdEBpZXRmLm9yZyZxdW90OyAmbHQ7cmlmdEBp
ZXRmLm9yZyZndDs8YnI+DQo8Yj5TdWJqZWN0OiA8L2I+UmU6RGVhciBSSUZUIHByb3RvY29sIGFu
ZCBSSUZUIFlBTkcgY28tYXV0aG9yLCBwbHMgcmV2aWV3IHRoZXVwZGF0ZW9mIFJJRlQgWUFORyBt
b2RlbDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
IiBzdHlsZT0ibGluZS1oZWlnaHQ6MTIuMHB0O2JhY2tncm91bmQ6I0ZGRUI5QyI+PGI+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7TGF0byZxdW90OyxzYW5z
LXNlcmlmO2NvbG9yOmJsYWNrIj5bRXh0ZXJuYWwgRW1haWwuIEJlIGNhdXRpb3VzIG9mIGNvbnRl
bnRdPG86cD48L286cD48L3NwYW4+PC9iPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+
Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1zaXpl
OjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj5IaSBCcnVu
byw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVw
dDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj48bzpwPiZuYnNwOzwv
bzpwPjwvc3Bhbj48L3A+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZh
bWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj5UaGFuayB5b3UgdmVyeSBtdWNoIGZv
ciB5b3VyIGNvbW1lbnRzITxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYi
PlBsZWFzZSBmaW5kIG15IGFuc3dlciBpbmxpbmUgd2l0aCBTYW5keSZndDsuPG86cD48L286cD48
L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w
Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJp
YWwmcXVvdDssc2Fucy1zZXJpZiI+VGhhbmtzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7
LHNhbnMtc2VyaWYiPlNhbmR5PG86cD48L286cD48L3NwYW4+PC9wPg0KPGRpdj4NCjxkaXY+DQo8
ZGl2Pg0KPHAgc3R5bGU9Im1hcmdpbjowaW47bWFyZ2luLWJvdHRvbTouMDAwMXB0O2xpbmUtaGVp
Z2h0OjE1LjBwdCI+PGEgaHJlZj0iaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHA6L3d3
dy56dGUuY29tLmNuL19fOyEhTkV0NnlNYU8tZ2shUjRLU09WUDkxUHNQLVFuOFJiaW9uQjhtSFh4
R3VqalpPa2lSalliVUFfV0p6UGxUQW8ycFNvTExTblUxQ1EkIiB0YXJnZXQ9Il9ibGFuayI+PGJy
Pg0KPC9hPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0idGV4dC1hbGln
bjpjZW50ZXI7bGluZS1oZWlnaHQ6MjEuMHB0O2JhY2tncm91bmQ6I0UwRTVFOSI+DQo8c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7TVMgR290aGljJnF1b3Q7O2NvbG9yOiMxMzg4RkYiPuWO
n+Wnizwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7UGluZ0ZhbmcgVEMmcXVv
dDssc2Fucy1zZXJpZjtjb2xvcjojMTM4OEZGIj7pgq48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O01TIEdvdGhpYyZxdW90Oztjb2xvcjojMTM4OEZGIj7ku7Y8L3NwYW4+PHNw
YW4gc3R5bGU9ImNvbG9yOiMxMzg4RkYiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgaWQ9
Inp3cml0ZUhpc3RvcnlDb250YWluZXIiPg0KPGRpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCIgc3R5bGU9ImJhY2tncm91bmQ6I0Y1RjZGOCI+PHN0cm9uZz48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7UGluZ0ZhbmcgVEMmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpi
bGFjayI+5Y+RPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O01TIEdvdGhpYyZxdW90Oztjb2xvcjpibGFjayI+5Lu25Lq677yaPC9zcGFuPjwvc3Ry
b25nPjxzcGFuIGNsYXNzPSJ6cmVhZHVzZXJuYW1lIj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2si
PkJydW5vUmlqc21hbg0KICZsdDticnVub3JpanNtYW5AZ21haWwuY29tJmd0Ozwvc3Bhbj48L3Nw
YW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz
dHlsZT0iYmFja2dyb3VuZDojRjVGNkY4Ij48c3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6YmxhY2siPuaUtuS7tuS6uu+8mjwvc3Bhbj48
L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWR1c2VybmFtZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OiZxdW90O1BpbmdGYW5nIFRDJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPuW8oDwv
c3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InpyZWFkdXNlcm5hbWUiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6YmxhY2siPuW+gTwvc3Bhbj48L3Nw
YW4+PHNwYW4gY2xhc3M9InpyZWFkdXNlcm5hbWUiPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+
MDAwMDc5NDA7PC9zcGFuPjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJiYWNrZ3JvdW5kOiNGNUY2RjgiPjxzdHJvbmc+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O01TIEdvdGhpYyZxdW90Oztjb2xvcjpibGFjayI+
5oqE6YCB5Lq677yaPC9zcGFuPjwvc3Ryb25nPjxzcGFuIGNsYXNzPSJ6cmVhZHVzZXJuYW1lIj48
c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPkFudG9uaSBQcnp5Z2llbmRhICZsdDtwcnpAanVuaXBl
ci5uZXQmZ3Q7O2FsYW5rYXJfc2hhcm1hQGNvbWNhc3QuY29tICZsdDthbGFua2FyX3NoYXJtYUBj
b21jYXN0LmNvbSZndDs7cHRodWJlcnRAY2lzY28uY29tDQogJmx0O3B0aHViZXJ0QGNpc2NvLmNv
bSZndDs7Zmwwd0B5YW5kZXgtdGVhbS5ydSAmbHQ7Zmwwd0B5YW5kZXgtdGVhbS5ydSZndDs7enpo
YW5nX2lldGZAaG90bWFpbC5jb20gJmx0O3p6aGFuZ19pZXRmQGhvdG1haWwuY29tJmd0Ozs8L3Nw
YW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZHVzZXJuYW1lIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7TVMgR290aGljJnF1b3Q7O2NvbG9yOmJsYWNrIj7prY/mnIg8L3NwYW4+PC9z
cGFuPjxzcGFuIGNsYXNzPSJ6cmVhZHVzZXJuYW1lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
JnF1b3Q7UGluZ0ZhbmcgVEMmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+5Y2OPC9zcGFu
Pjwvc3Bhbj48c3BhbiBjbGFzcz0ienJlYWR1c2VybmFtZSI+PHNwYW4gc3R5bGU9ImNvbG9yOmJs
YWNrIj4wMDAxOTY1NTttYXNoYW93ZW5AZ21haWwuY29tDQogJmx0O21hc2hhb3dlbkBnbWFpbC5j
b20mZ3Q7O3h1ZmVuZy5saXUuaWV0ZkBnbWFpbC5jb20gJmx0O3h1ZmVuZy5saXUuaWV0ZkBnbWFp
bC5jb20mZ3Q7O2plZmZ0YW50LmlldGZAZ21haWwuY29tICZsdDtqZWZmdGFudC5pZXRmQGdtYWls
LmNvbSZndDs7enpoYW5nQGp1bmlwZXIubmV0ICZsdDt6emhhbmdAanVuaXBlci5uZXQmZ3Q7Ozwv
c3Bhbj48L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIiBzdHlsZT0iYmFja2dyb3VuZDojRjVGNkY4Ij48c3Ryb25nPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6YmxhY2siPuaXpTwvc3Bhbj48
L3N0cm9uZz48c3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1
b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPg0KPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O01TIEdvdGhpYyZxdW90Oztjb2xvcjpibGFjayI+
5pyfPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+DQo8L3NwYW4+PC9zdHJvbmc+
PHN0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7TVMgR290aGljJnF1b3Q7O2Nv
bG9yOmJsYWNrIj7vvJo8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4y
MDIwPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7
Y29sb3I6YmxhY2siPuW5tDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPjA2PC9zcGFu
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6Ymxh
Y2siPuaciDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPjMwPC9zcGFuPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6YmxhY2siPuaXpTwv
c3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPg0KIDE4OjE3PC9zcGFuPjxvOnA+PC9vOnA+
PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImJhY2tncm91
bmQ6I0Y1RjZGOCI+PHN0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7TVMgR290
aGljJnF1b3Q7O2NvbG9yOmJsYWNrIj7kuLs8L3NwYW4+PC9zdHJvbmc+PHN0cm9uZz48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJs
YWNrIj4NCjwvc3Bhbj48L3N0cm9uZz48c3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtQaW5nRmFuZyBUQyZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj7popg8L3NwYW4+
PC9zdHJvbmc+PHN0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx
dW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4NCjwvc3Bhbj48L3N0cm9uZz48c3Ryb25nPjxz
cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNUyBHb3RoaWMmcXVvdDs7Y29sb3I6YmxhY2si
Pu+8mjwvc3Bhbj48L3N0cm9uZz48c3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPlJlOiBEZWFyIFJJRlQgcHJv
dG9jb2wgYW5kIFJJRlQgWUFORyBjby1hdXRob3IsIHBscyByZXZpZXcgdGhldXBkYXRlb2YgUklG
VCBZQU5HIG1vZGVsPC9zcGFuPjwvc3Ryb25nPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEw
LjVwdDtmb250LWZhbWlseTpBdmVuaXItQm9vayI+SSBoYXZlIG5vdCB5ZXQgZmluaXNoZWQgcmV2
aWV3aW5nIHRoZSBjb21wbGV0ZSBkYXRhIG1vZGVsLCBidXQgaGVyZSBhcmUgc29tZSBpbml0aWFs
IGFkZGl0aW9uYWwgY29tbWVudHMgZnJvbSBtZTo8L3NwYW4+DQo8bzpwPjwvbzpwPjwvcD4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPm1vZHVsZTogaWV0Zi1yaWZ0PC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgYXVnbWVudCAv
cnQ6cm91dGluZy9ydDpjb250cm9sLXBsYW5lLXByb3RvY29scy9ydDpjb250cm9sLXBsYW5lLXBy
b3RvY29sOjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90
OyI+Jm5ic3A7ICZuYnNwOyAmIzQzOy0tcncgcmlmdCE8L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYj
NDM7LS1ydyBub2RlPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3
JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyBuYW1l
PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJpbmc8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7JiM0MzstLXJ3IGxldmVsPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2xldmVs
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+V2UgbmVlZCB0byBkaXN0aW5ndWlzaCBjb25m
aWd1cmVkLWxldmVsIHZzIGRlcml2ZWQtbGV2ZWwgKHNlZSBzZWN0aW9uIDQuMi43LjEuIGluIGRy
YWZ0LWlldGYtcmlmdC1yaWZ0LTEyKS48L3NwYW4+PG86cD48L286cD48L3A+DQo8cD48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPlNhbmR5Jmd0OyBJbiBm
YWN0IHRoaXMgaXMgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBpbiB0aGUgZGV2aWNlLiBJdCdzIG5vdCBk
aXJlY3RseSBhY2NvcmRpbmcgdG8gdGhlIENMSSBjb25maWd1cmF0aW9uLiZuYnNwOzwvc3Bhbj48
bzpwPjwvbzpwPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy
IE5ldyZxdW90OyI+VGhlIGxlYWYgaGFsIGJlbG93IGluZGljYXRlcyB0aGUgcG90ZW50aWFsIGRy
aXZlZCBsZXZlbCB2YWx1ZS4gSXQgc2VlbXMgbGlrZSBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGFk
ZCBhIGRlZGljYXRlZCBjb25maWd1cmVkIHZhbHVlIGZvciBpdD8gV2hhdCBkbyB5b3UgdGhpbmsg
b2YgaXQ/PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyBzeXN0ZW0taWQgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7IHN5c3RlbS1pZDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy
IE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcncg
cG9kPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzI8L3NwYW4+PG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJ3IG92ZXJsb2FkPyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgYm9vbGVh
bjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcncgbm9kZS1jYXBhYmlsaXR5
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+VGhlIG5laWdoYm9ycyBjb250YWluZXIgKGJl
bG93KSBzaG91bGQgY29udGFpbiB0aGUgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQgYnkgZWFjaCBu
ZWlnaGJvci48L3NwYW4+PG86cD48L286cD48L3A+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPlNhbmR5Jmd0OyBPSy4gSSdsbCBhZGQgaXQuJm5i
c3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv
OnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHByb3RvY29sLW1p
bm9yLXZlcnNpb24/ICZuYnNwOyB1aW50MTY8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2
Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5U
aGlzIHNob3VsZCBub3QgYmUgb3B0aW9uYWw7IHRoZSBSSUZUIGVuZ2luZSBhbHdheXMgaGFzIGEg
c3BlY2lmaWMgbWlub3IgdmVyc2lvbiBhbmQgaXQgaXMgYSByZXF1aXJlZCBmaWVsZCBpbiB0aGUg
VGhyaWZ0IG1vZGVsLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIG1vZGlm
eSBpdCB0byBtYW5kYXRvcnkuJm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7
JiM0MzstLXJvIGhpZXJhcmNoeS1pbmRpY2F0aW9ucz8gJm5ic3A7ICZuYnNwO2VudW1lcmF0aW9u
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJ3IGZsb29kLXJl
ZHVjaW5nLWNhcGFibGU/ICZuYnNwOyBib29sZWFuIHtmbG9vZC1yZWR1Y2luZ30/PC9zcGFuPjxv
OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4m
bmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDb3VyaWVyIE5ldyZxdW90OyI+TGluZ3Vpc3RpYyBoYWlyc3BsaXR0aW5nOiBpcyBjYXBhYmxl
IHRoZSByaWdodCB3b3JkPyBJZiB3ZSBzZXQgdGhpcyB0byBmYWxzZSwgaXQgb25seSBtZWFucyB0
aGF0IGZsb29kIHJlZHVjdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCwgbm90IHRoYXQgdGhlIG5vZGUg
aXMgbm90IGNhcGFibGUgb2YgZmxvb2QgcmVkdWN0aW9uLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N
CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+U2Fu
ZHkmZ3Q7IFlvdSBhcmUgcmlnaHQuIEJ1dCBJIG1vZGlmaWVkIHRoZSBuYW1lIGFjY29yZGluZyB0
byBUb255J3MgY29tbWVudHMuIERvIHlvdSB0aGluayBpdCdzIGJldHRlciB0byBtb2RpZnkgdGhl
IGZlYXR1cmUgbmFtZSB0byAmcXVvdDtmbG9vZC1yZWR1Y2luZyZxdW90OyBvdGhlciB0aGFuIGxl
YWYgbmFtZT8gJm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1
b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJ3
IG5vbmNlLWRlbHRhPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt1aW50OCB7bm9uY2UtZGVsdGEtYWRqdXN0fT88L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4N
CjwvZGl2Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1
b3Q7Ij5XaHkgaXMgdGhpcyB1bmRlciBjYXBhYmlsaXRpZXM/PC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5T
YW5keSZndDsgSSdsbCBtb3ZlIHRoaXMgbGVhZiBvdXQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyYjNDM7LS1ydyBsaWUtaXB2NC1tdWx0aWNhc3QtYWRkcmVzcz8gJm5ic3A7IHJ0LXR5cGVzOmlw
djQtbXVsdGljYXN0LWdyb3VwLWFkZHJlc3M8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7
JiM0MzstLXJ3IGxpZS1pcHY2LW11bHRpY2FzdC1hZGRyZXNzPyAmbmJzcDsgcnQtdHlwZXM6aXB2
Ni1tdWx0aWNhc3QtZ3JvdXAtYWRkcmVzczwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsm
IzQzOy0tcncgbGluay1jYXBhYmlsaXR5PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N
CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+VGhl
IGxpbmsgY2FwYWJpbGl0aWVzIGFyZSBwZXIgbGluaywgc28gdGhleSBzaG91bGQgYmUgaW4gdGhl
IG5laWdoYm9yIHRhYmxlIGJlbG93Ljwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+U2FuZHkmZ3Q7IEkgd2ls
bCBtb3ZlIGl0IHRvIGludGVyZmFjZSBhbmQgbmVpZ2hib3IuIEJ1dCBkbyB3ZSBuZWVkIGEgZ2xv
YmFsIHNldHRpbmcgZm9yIGl0Pzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l
dyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyYjNDM7
LS1ydyBiZmQ/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBib29sZWFuIHtiZmR9Pzwvc3Bhbj48bzpwPjwvbzpwPjwv
cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyB2NC1mb3J3YXJkaW5nLWNhcGFibGU/ICZuYnNw
OyBib29sZWFuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1
b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyBmbG9vZC1w
b3J0PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyBpbmV0OnBvcnQtbnVtYmVyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyYjNDM7LS1ydyBsaWUtcngtcG9ydD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpbmV0OnBvcnQtbnVtYmVyPC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyBob2xkdGltZT8gJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHJ0LXR5
cGVzOnRpbWVyLXZhbHVlLXNlY29uZHMxNjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsm
IzQzOy0tcncgdGlkZS1nZW5lcmF0aW9uLWludGVydmFsPyAmbmJzcDsgJm5ic3A7IHJ0LXR5cGVz
OnRpbWVyLXZhbHVlLXNlY29uZHMxNjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtD
b3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQz
Oy0tcncgdGllLXNlY3VyaXR5LWtleS1pZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3VpbnQzMiB7YXV0aGVudGljYXRpb259Pzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJz
cDsmIzQzOy0tcncgbG9jYWwtbm9uY2U/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2PC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPlRoaXMgc2hvdWxkIGJlIHJvIGluc3Rl
YWQgb2Ygcnc8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv
dDsiPkRpc3Rpbmd1aXNoIG5vbmNlLWxvY2FsIChzZW50KSB2ZXJzdXMgbm9uY2UtcmVtb3RlIChy
ZWNlaXZlZCk8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Tm9uY2VzIGFyZSBwZXIgaW50ZXJm
YWNlLCBzbyBpdCBzaG91bGQgYmUgaW4gdGhlIG5laWdoYm9yIHRhYmxlIGJlbG93PC9zcGFuPjxv
OnA+PC9vOnA+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg
TmV3JnF1b3Q7Ij5TYW5keSZndDsgSXMgdGhpcyB2YWx1ZSBjYW4gYmUgYWRqdXN0ZWQ/Jm5ic3A7
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
O0NvdXJpZXIgTmV3JnF1b3Q7Ij5EbyB3ZSB1c2UgdGhlIHNhbWUgbm9uY2Ugb24gYWxsIHRoZSBp
bnRlcmZhY2U/IElmIG5vdCwgZG8geW91IHRoaW5rIGl0J3MgT0sgdG8gbW92ZSB0aGUgbGVhZiB0
byBsaW5rLWlkLXBhaXI/Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg
TmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBp
bnRlcmZhY2VzPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1
b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJv
IGludGVyZmFjZSogW25hbWVdPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7
ICZuYnNwOyAmIzQzOy0tcm8gbG9jYWwtbGluay1pZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBsaW5raWQtdHlwZTwvc3Bhbj48bzpwPjwv
bzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIG5hbWUgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmOmludGVyZmFjZS1yZWY8L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwv
bzpwPjwvcD4NCjwvZGl2Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7Ij5ZQU5HIG5ld2JpZSBxdWVzdGlvbiwgYWxsIHRhYmxlcyBpbiB0aGlzIGRv
Y3VtZW50IGhhdmUgdGhpcyBhcHByb2FjaCB1c2luZyAyIGxldmVscyBvZiBuZXN0aW5nLiBXaHkg
aXMgaXQgbm90IHNpbXBseSAxIGxldmVsIG9mIG5lc3RpbmcgbGlrZSB0aGlzOjwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l
dyZxdW90OyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIG1vZGlmeSBpdC48L3NwYW4+PG86cD48L286cD48
L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmIzQzOy0tcm8gaW50ZXJmYWNlczwv
c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gaW50ZXJmYWNlKiBbbmFtZV08L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7
JiM0MzstLXJvIGxvY2FsLWxpbmstaWQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7JiM0MzstLXJvIG5hbWU8L3Nw
YW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAm
bmJzcDsgJm5ic3A7Li4uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmll
ciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsg
Jm5ic3A7ICYjNDM7LS1ybyBhZGRyZXNzPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGluZXQ6aXAtYWRk
cmVzczwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7
Ij5UaGUgYWRkcmVzcyBvZiB0aGUgaW50ZXJmYWNlIGRvZXMgbm90IGJlbG9uZyBoZXJlIGluIHRo
ZSBSSUZUIG1vZGVsOyB0aGVyZSBpcyBhIHNlcGFyYXRlIElFVEYgWUFORyBkYXRhIG1vZGVsIGZv
ciBpbnRlcmZhY2VzLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPHA+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5Zb3UgY291bGQgbWFrZSBh
biBhcmd1bWVudCB0aGF0IHRoZSBzb3VyY2UgYWRkcmVzcyB1c2VkIGZvciBzZW5kaW5nIFJJRlQg
cGFja2V0cyBjb3VsZCBiZSBtb2RlbGVkOyBpZiBzbywgbXVzdCB1c2Ugc2VwYXJhdGUgZmllbGRz
IGZvciBsaWUtaXB2NC1zb3VyY2UtYWRkcmVzcywgbGllLWlwdjYtc291cmNlLWFkZHJlc3MgKExJ
RXMgYXJlIHNlbnQgQk9USCBvbiBJUHY0IGFuZA0KIElQdjYpLCBmbG9vZGluZy1zb3VyY2UtYWRk
cmVzcyAoZmxvb2RpbmcgaXMgZG9uZSBvbiBJUHY0IE9SIElQdjYpLjwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90
OyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIGFkZCBmb3VyIGxlYXZlcyBpbnN0ZWFkIG9mIGl0Ljwvc3Bh
bj48bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNw
OzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIGlmLWluZGV4PyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N
CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+QmVs
b25ncyBpbiB0aGUgaW50ZXJmYWNlIFlBTkcgbW9kZWwsIG5vdCBpbiB0aGUgUklGVCBZQU5HIG1v
ZGVsLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+U2FuZHkmZ3Q7IE9LLiBJJ2xsIGRlbGV0ZSBpdC48L3Nw
YW4+PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJz
cDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBkaXJlY3Rpb24t
dHlwZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO2VudW1lcmF0aW9uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg
TmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZu
YnNwOyAmIzQzOy0tcm8geW91LWFyZS1mbG9vZC1yZXBlYXRlcj8gJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7Ym9vbGVhbjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy
IE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAm
bmJzcDsgJiM0MzstLXJvIG5vdC1hLXp0cC1vZmZlcj8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGJvb2xlYW48L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyB5b3UtYXJlLXNlbmRpbmctdG9vLXF1aWNr
bHk/ICZuYnNwOyBib29sZWFuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1y
dyBtaXNjYWJsZWQtbGlua3MqICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO2xpbmtpZC10eXBlPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0Nv
dXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7
LS1ydyAoYWxnb3JpdGhtLXR5cGUpPzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtD
b3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZu
YnNwOyYjNDM7LS06KHNwZik8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmll
ciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsm
IzQzOy0tOihhbGwtcGF0aCk8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmll
ciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJv
IGhhbD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGV2ZWw8L3NwYW4+PG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHZvbC1saXN0PC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHZvbCogW3N5c3RlbS1pZF08L3NwYW4+PG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBvZmZlcmVkLWxldmVs
PyAmbmJzcDsgbGV2ZWw8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBO
ZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsgJm5i
c3A7ICYjNDM7LS1ybyBuYW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3N0cmluZzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZx
dW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsg
JiM0MzstLXJvIGxldmVsPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGxldmVs
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8g
c3lzdGVtLWlkICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N5c3RlbS1pZDwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIHBvZD8gJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjxvOnA+PC9v
OnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ydyBpbnN0YW5jZS1sYWJlbD8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHVpbnQzMjwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7JiM0MzstLXJvIG5laWdoYm9yPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
b3Q7Q291cmllciBOZXcmcXVvdDsiPkluIFJJRlQgeW91IGNhbm5vdCBoYXZlIG11bHRpcGxlICgm
Z3Q7MSkgbmVpZ2hib3JzIHBlciBpbnRlcmZhY2UuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5UaHVzLCBhIG5laWdoYm9yIHNob3VsZCBiZSBhbiBv
cHRpb25hbCBzaW5nbGUtZWxlbWVudCBjb250YWluZXIgdW5kZXIgbmVpZ2hib3IuPC9zcGFuPjxv
OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDsiPkV2ZW4gaWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoYXQgYW5k
IHdhbnQgdG8ga2VlcCBuZWlnaGJvciBvdXJzaWRlIG9mIGludGVyZmFjZSwgaXQgc2hvdWxkIGJl
IHVuZGVyIG5vZGUgYW5kIG5vdCB1bmRlciByaWZ0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHA+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5TYW5keSZn
dDsgSSB1bmRlcnN0YW5kIHlvdXIgcG9pbnQuIEJ1dCB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgcGFy
YWxsZWwgbGlua3MgY29ubmVjdCB0byBhIHNhbWUgbmVpZ2hib3IsIHJpZ2h0Pzwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpw
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gbmJycyogW3N5c3RlbS1pZF08L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwv
bzpwPjwvcD4NCjwvZGl2Pg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7Ij5TcGVsbCBuYnJzIG91dCAobmVpZ2hib3JzKTwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90
OyI+U2FuZHkmZ3Q7IE5vIHByb2JsZW0uIEknbGwgbW9kaWZ5IGl0Ljwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4N
CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBuYW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7IHN0cmluZzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy
IE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYj
NDM7LS1ybyBsZXZlbD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2xldmVsPC9z
cGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIHN5c3RlbS1pZCAm
bmJzcDsgJm5ic3A7ICZuYnNwOyBzeXN0ZW0taWQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7ICZuYnNwOyAmIzQzOy0tcm8gcG9kPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy
IE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYj
NDM7LS1ybyBhZGRyZXNzPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpbmV0OmlwLWFkZHJl
c3M8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gY29zdD8g
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gcmVtb3RlLW5vbmNlPyAmbmJzcDsgdWlu
dDE2PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIGxpbmst
aWQtcGFpciogW3JlbW90ZS1pZF08L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291
cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNw
OyB8ICZuYnNwOyYjNDM7LS1ybyBsb2NhbC1pZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N
CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7JiM0MzstLXJvIHJlbW90ZS1pZCAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxv
OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8gaWYtaW5kZXg/
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1
aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOyYjNDM7
LS1ybyBpZi1uYW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7IGlmOmludGVyZmFjZS1yZWY8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7ICZuYnNwOyB8ICZuYnNwOyYjNDM7LS1ybyBiZmQtdXA/ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ym9vbGVhbjwvc3Bhbj48
bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7JiM0MzstLXJvIG91dGVyLXNl
Y3VyaXR5LWtleS1pZD8gJm5ic3A7IHVpbnQ4IHthdXRoZW50aWNhdGlvbn0/PC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8gYWRkcmVzcy1mYW1p
bGllczwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7ICZuYnNw
OyAmIzQzOy0tcm8gYWRkcmVzcy1mYW1pbHkqIFthZGRyZXNzLWZhbWlseV08L3NwYW4+PG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYj
NDM7LS1ybyBhZGRyZXNzLWZhbWlseSAmbmJzcDsgJm5ic3A7aWFuYS1ydC10eXBlczphZGRyZXNz
LWZhbWlseTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90
OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBi
YW5kd2lkdGg/ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIHN0YXRlPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ZW51bWVyYXRpb248L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyBk
YXRhYmFzZTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8cD48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPlRoZSBkYXRhYmFzZSBjb250YWlu
ZXIgc2hvdWxkIGJlIHVuZGVyIG5vZGUgYW5kIG5vdCB1bmRlciByaWZ0PC9zcGFuPjxvOnA+PC9v
OnA+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1
b3Q7Ij5TYW5keSZndDsgWWVzLiBUaGUgZGF0YWJhc2UgY29udGFpbmVyIGlzIHVuZGVyIG5vZGUs
IG5vdCB1bmRlciByaWZ0LiBQbGVhc2UgcmVjb25maXJtIGl0LiBUaGFuayB5b3UgdmVyeSBtdWNo
ITwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw
PiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gdGllcyogW2RpcmVjdGlvbi10eXBl
IG9yaWdpbmF0b3IgdGllLXR5cGUgdGllLW51bWJlcl08L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gZGlyZWN0aW9uLXR5cGUgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO2VudW1lcmF0aW9uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyAmbmJzcDsgJiM0MzstLXJvIG9yaWdpbmF0b3IgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3lzdGVtLWlkPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwOyAmbmJzcDsgJiM0MzstLXJvIHRpZS10eXBlICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtlbnVtZXJhdGlvbjwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyB0aWUtbnVtYmVyICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpwPjwvbzpw
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBzZXE/ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ2NDwv
c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBvcmlnaW5hdGlv
bi10aW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gb3JpZ2luYXRpb24tbGlmZXRpbWU/ICZuYnNwOyB1
aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gbm9k
ZTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7JiM0MzstLXJv
IG5hbWU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0
cmluZzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7JiM0Mzst
LXJvIGxldmVsPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBsZXZl
bDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7JiM0MzstLXJv
IHN5c3RlbS1pZCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3lzdGVtLWlkPC9z
cGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8gcG9k
PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDMy
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8g
bm9kZS1jYXBhYmlsaXR5PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg
TmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAm
bmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBwcm90b2NvbC1taW5vci12ZXJzaW9uPyAmbmJzcDsgdWlu
dDE2PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNw
OyYjNDM7LS1ybyBoaWVyYXJjaHktaW5kaWNhdGlvbnM/ICZuYnNwOyAmbmJzcDtlbnVtZXJhdGlv
bjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsm
IzQzOy0tcm8gZmxvb2QtcmVkdWNpbmctY2FwYWJsZT8gJm5ic3A7IGJvb2xlYW4ge2Zsb29kLXJl
ZHVjaW5nfT88L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv
dDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wg
Jm5ic3A7JiM0MzstLXJvIG5vbmNlLWRlbHRhPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OCB7bm9uY2UtZGVsdGEtYWRqdXN0fT88L3NwYW4+PG86
cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOyYjNDM7LS1ybyBvdmVybG9hZD8g
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Jvb2xlYW48L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwOyYjNDM7LS1ybyBzdGFydHVwLXRpbWU/ICZu
YnNwOyAmbmJzcDsgJm5ic3A7dWludDY0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAm
bmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8gbmVpZ2hib3JzKiBbc3lzdGVtLWlkXTwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gbmFt
ZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJpbmc8L3NwYW4+PG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIGxldmVs
PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGV2ZWw8L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHN5c3RlbS1p
ZCAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzeXN0ZW0taWQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Jm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHBvZD8gJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIGFkZHJlc3M/ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2luZXQ6aXAtYWRkcmVzczwvc3Bhbj48bzpwPjwvbzpwPjwv
cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gY29zdD8gJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIHJlbW90ZS1ub25jZT8g
Jm5ic3A7IHVpbnQxNjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l
dyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5i
c3A7fCAmbmJzcDsmIzQzOy0tcm8gbGluay1pZC1wYWlyKiBbcmVtb3RlLWlkXTwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyYjNDM7
LS1ybyBsb2NhbC1pZD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7
IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyByZW1vdGUtaWQgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48
bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyYj
NDM7LS1ybyBpZi1pbmRleD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtD
b3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5i
c3A7IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBpZi1uYW1lPyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmOmludGVyZmFj
ZS1yZWY8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5i
c3A7fCAmbmJzcDsmIzQzOy0tcm8gYmZkLXVwPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Jvb2xlYW48L3NwYW4+PG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8g
b3V0ZXItc2VjdXJpdHkta2V5LWlkPyAmbmJzcDsgdWludDgge2F1dGhlbnRpY2F0aW9ufT88L3Nw
YW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyB8ICZuYnNwO3wgJm5ic3A7fCAmbmJz
cDsmIzQzOy0tcm8gYWRkcmVzcy1mYW1pbGllczwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJz
cDsgJm5ic3A7IHwgJm5ic3A7fCAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIGFkZHJl
c3MtZmFtaWx5KiBbYWRkcmVzcy1mYW1pbHldPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyAmbmJzcDsgfCAmbmJzcDt8ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JiM0
MzstLXJvIGFkZHJlc3MtZmFtaWx5ICZuYnNwOyAmbmJzcDtpYW5hLXJ0LXR5cGVzOmFkZHJlc3Mt
ZmFtaWx5PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7
Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDt8ICZu
YnNwOyYjNDM7LS1ybyBiYW5kd2lkdGg/ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFu
PjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsmIzQzOy0tcm8gbWlzY2Fi
bGVkLWxpbmtzKiAmbmJzcDsgbGlua2lkLXR5cGU8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7ICZuYnNwOyAmIzQzOy0tcm8gcHJlZml4PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyBwcmVmaXg/ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2luZXQ6aXAtcHJlZml4PC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyAodHlwZSk/
PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7JiM0MzstLToocHJlZml4KTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS06KHBvc2l0aXZlLWRpc2FnZ3JlZ2F0aW9uKTwv
c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyYjNDM7LS06KG5lZ2F0aXZlLWRpc2FnZ3JlZ2F0aW9uKTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N
CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS06KGV4dGVybmFsKTwv
c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyYjNDM7LS06KHBvc2l0aXZlLWV4dGVybmFsLWRpc2FnZ3JlZ2F0aW9uKTwvc3Bhbj48bzpwPjwv
bzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS06KHBn
cCk8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JiM0
MzstLXJvIG1ldHJpYz8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7dWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3
JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyYjNDM7LS1ybyB0YWdzKiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDY0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyBtb25vdG9uaWMtY2xvY2s8L3NwYW4+PG86
cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0t
cm8gcHJlZml4LXNlcXVlbmNlLXR5cGU8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyB0aW1lc3RhbXAgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGllZWU4MDItMWFzLXRpbWVzdGFtcC10eXBlPC9zcGFu
PjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7ICZu
YnNwOyAmIzQzOy0tcm8gdHJhbnNhY3Rpb24taWQ/ICZuYnNwOyB1aW50ODwvc3Bhbj48bzpwPjwv
bzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gbG9vcGJhY2s/
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ym9vbGVhbjwvc3Bhbj48
bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gZGly
ZWN0bHktYXR0YWNoZWQ/ICZuYnNwOyBib29sZWFuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyBmcm9tLWxpbms/ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgbGlua2lkLXR5cGU8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyYjNDM7LS1ybyBrdi1zdG9yZTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmIzQzOy0t
cm8ga3ZzKiBba3ZzLWluZGV4XTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7JiM0MzstLXJvIGt2cy1pbmRleCAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8ga3ZzLXRpZTwvc3Bhbj48
bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8gZGly
ZWN0aW9uLXR5cGU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBlbnVtZXJhdGlvbjwvc3Bh
bj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmIzQzOy0tcm8g
b3JpZ2luYXRvcj8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3lz
dGVtLWlkPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7
Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICYjNDM7LS1ybyB0aWUtdHlwZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7IGVudW1lcmF0aW9uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyB0aWUtbnVtYmVyPyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJvIHNlcT8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu
dDY0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICYj
NDM7LS1ybyBvcmlnaW5hdGlvbi10aW1lPyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3Nw
YW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJiM0MzstLXJv
IG9yaWdpbmF0aW9uLWxpZmV0aW1lPyAmbmJzcDsgdWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBrZXktdmFsdWU8L3NwYW4+
PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyYjNDM7LS1ybyBrZXk/ICZuYnNwOyAmbmJzcDsgdWludDE2PC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gdmFs
dWU/ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7IG5vdGlmaWNhdGlvbnM6PC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICYjNDM7LS0tbiBl
cnJvci1zZXQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv
dDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyB0aWUtbGV2ZWwtZXJyb3I8
L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7JiM0MzstLXJvIGRpcmVjdGlvbi10eXBlPyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgZW51bWVyYXRpb248L3NwYW4+PG86cD48L286cD48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgJm5ic3A7JiM0MzstLXJvIG9yaWdpbmF0b3I/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7IHN5c3RlbS1pZDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJz
cDsmIzQzOy0tcm8gdGllLXR5cGU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyBlbnVtZXJhdGlvbjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsm
IzQzOy0tcm8gdGllLW51bWJlcj8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgdWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3
JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBzZXE/
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3VpbnQ2NDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy
aWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0t
cm8gb3JpZ2luYXRpb24tdGltZT8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDMyPC9zcGFuPjxv
OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBvcmlnaW5hdGlvbi1saWZldGltZT8gJm5i
c3A7IHVpbnQzMjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZx
dW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JiM0MzstLXJvIG5ici1lcnJvcjwvc3Bh
bj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv
OnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPlJlcGxhY2UgbmJyIGJ5IG5laWdoYm9yIChzcGVsbCBp
dCBvdXQpPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5TYW5keSZndDsgTm8gcHJvYmxlbS4gSSdsbCBtb2Rp
ZnkgaXQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICYjNDM7LS1ybyBuYnJzKiBbc3lzdGVtLWlk
XTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JiM0MzstLXJvIG5h
bWU/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3RyaW5nPC9zcGFuPjxvOnA+
PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gbGV2ZWw/ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtsZXZlbDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwv
ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7JiM0MzstLXJvIHN5c3RlbS1pZCAmbmJzcDsgJm5ic3A7ICZuYnNw
OyBzeXN0ZW0taWQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcm
cXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYj
NDM7LS1ybyBwb2Q/ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu
dDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8g
YWRkcmVzcz8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aW5ldDppcC1hZGRyZXNzPC9zcGFu
PjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0tcm8gY29zdD8gJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MzI8L3NwYW4+PG86cD48L286cD48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyByZW1vdGUtbm9uY2U/ICZuYnNwOyB1
aW50MTY8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi
PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1y
byBsaW5rLWlkLXBhaXIqIFtyZW1vdGUtaWRdPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBsb2NhbC1pZD8gJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMjwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gcmVtb3Rl
LWlkICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt1aW50MzI8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv
dDsiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5i
c3A7JiM0MzstLXJvIGlmLWluZGV4PyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+
DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx
dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBpZi1uYW1lPyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmOmludGVyZmFjZS1yZWY8
L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7JiM0Mzst
LXJvIGJmZC11cD8gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDtib29sZWFuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8ICZuYnNwOyYjNDM7LS1ybyBvdXRlci1zZWN1cml0eS1rZXktaWQ/ICZuYnNw
OyB1aW50OCB7YXV0aGVudGljYXRpb259Pzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv
dDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAmbmJzcDsmIzQzOy0tcm8gYWRkcmVzcy1mYW1pbGllczwvc3Bhbj48bzpw
PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICYjNDM7LS1y
byBhZGRyZXNzLWZhbWlseSogW2FkZHJlc3MtZmFtaWx5XTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N
CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmIzQzOy0t
cm8gYWRkcmVzcy1mYW1pbHkgJm5ic3A7ICZuYnNwO2lhbmEtcnQtdHlwZXM6YWRkcmVzcy1mYW1p
bHk8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyYjNDM7LS1ybyBi
YW5kd2lkdGg/ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyPC9zcGFuPjxvOnA+PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNw
OzwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rp
dj4NCjxwPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGJy
Pg0KPHAgc3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmk7Zm9udC1zaXplOjdwdDtjb2xvcjojMDAw
MDAwO21hcmdpbjoxNXB0OyIgYWxpZ249IkNlbnRlciI+DQpKdW5pcGVyIEJ1c2luZXNzIFVzZSBP
bmx5PGJyPg0KPC9wPg0KPC9ib2R5Pg0KPC9odG1sPg0K

--_000_BF881FFF9AFC48F0BC86AF8069DE957Ajunipernet_--


From nobody Thu Jul  2 03:07:53 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 709103A0920 for <rift@ietfa.amsl.com>; Thu,  2 Jul 2020 03:07:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OK6tufm1ukTl for <rift@ietfa.amsl.com>; Thu,  2 Jul 2020 03:07:49 -0700 (PDT)
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5143B3A0919 for <rift@ietf.org>; Thu,  2 Jul 2020 03:07:49 -0700 (PDT)
Received: by mail-ej1-x62d.google.com with SMTP id lx13so9953249ejb.4 for <rift@ietf.org>; Thu, 02 Jul 2020 03:07:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=kG2tnvu9as+MpgrVdfdvT87yRfb31ltFE9nObO5Mxjw=; b=trgfOy67tQpaxIv7zcMcHgVyzdS9JG4p1RBGdP7jyvSGbEjWI/z5PhHNDPijjwOYL4 /Tddg6KG9clVO60qorPD2jmKFASruHELuhKSIkt/BKcPxH86OCE1H6AZJv6nL2jXDsQS NTu0v/awny9hQxWdSCO5uGIfc40oQ+kqTeQJBHOV5M6kKsmTcxLBuCWa0Ah/T2iUlgDd JDFWexNMeBuq79qsM1TIlpAskcyURiUj2BrAvzQb28PhPKIpJwvIpFQIKVsJHIO3nJek nZBvkfx8/qdVcgJdMCNX7XN3MaxMGm1U6rxzG2sS3xA3WKhW7yAgSZKMN1I3x3YIX1xi KMvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=kG2tnvu9as+MpgrVdfdvT87yRfb31ltFE9nObO5Mxjw=; b=HrOmc/lu/NjB77j6qeiZG/HXtYtm+leSa7KZA/OZ/Tt+v9iQ+4q6MSlzkE6H4ZmSmo bmxVOdKe72NKFaNWCa0bTg8RmYprm1ECU5AFQ/n0mdfx28l+CufMkW2vPIupPdi5NNKE +Wc0QNOXIbZxepKIxsXHTdqTdVsSQ3+IHjhqcJbNI66UqO0h/rtsK7XNoiZMMBuuHEoV E8XG2BHvvqXdmkkn03KhINBoZ3OE8BbQqbw2MQ4IVaPqkMVRuSvWPVR5zsSUyIlEXgHH p6XkFWP+2mqi4caP19ZMdJN3ICaNn5XWHyAWOCbsgPVT+lW4lV+42U6UjG07VulS1stW 7jLw==
X-Gm-Message-State: AOAM5305Jo+60jH5TsWkMDixcJumXw4H6BEj/xQF6GFfwnrjnJSMMKA+ W/8vWPgiklpVpuv/a5EeQPc=
X-Google-Smtp-Source: ABdhPJzVK1VOFQ8F+FCT0TutNCI/gQE5bqQVqckrlzzBwsvvJG1BCLnCwNHvS6K9UFeOypE5T0kMCw==
X-Received: by 2002:a17:906:a1cc:: with SMTP id bx12mr25821618ejb.461.1593684467551;  Thu, 02 Jul 2020 03:07:47 -0700 (PDT)
Received: from [192.168.2.13] (ip4da78921.direct-adsl.nl. [77.167.137.33]) by smtp.gmail.com with ESMTPSA id r17sm8611020edw.68.2020.07.02.03.07.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 02 Jul 2020 03:07:46 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <E695E329-C4EC-4AC6-B74F-6E630B4C6D46@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_F9E4D0E9-825A-4E3B-86C3-09E8A2BFDB1C"
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
Date: Thu, 2 Jul 2020 12:07:37 +0200
In-Reply-To: <202007021504351629327@zte.com.cn>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net> <202007021504351629327@zte.com.cn>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/m8GOM9r-2IDeQmP1fs8LASikqoQ>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, pls reviewtheupdateof RIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Jul 2020 10:07:52 -0000

--Apple-Mail=_F9E4D0E9-825A-4E3B-86C3-09E8A2BFDB1C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

CC to RIFT mailing list and removed all individual emails from the CC =
list because the IETF mailing list will reject it if the CC list is too =
long.

This e-mail contains the discussion around the first batch of comments.

There will be additional batches of comments in separate e-mails.

>=20
>        |  +--rw level?                        level
> =20
> We need to distinguish configured-level vs derived-level (see section =
4.2.7.1. in draft-ietf-rift-rift-12).
>=20
> Sandy> In fact this is the effective value in the device. It's not =
directly according to the CLI configuration.=20
>=20
> The leaf hal below indicates the potential drived level value. It =
seems like it is not necessary to add a dedicated configured value for =
it? What do you think of it?
>=20

Yes, it is necessary to configure the level. Or at the very least, it is =
necessary to configure which of the nodes are the top-of-fabric nodes. =
This is in fact the only configuration that is really required in RIFT.

>        |  |  +--ro hierarchy-indications?    enumeration
>        |  |  +--rw flood-reducing-capable?   boolean {flood-reducing}?
> =20
> Linguistic hairsplitting: is capable the right word? If we set this to =
false, it only means that flood reduction has been disabled, not that =
the node is not capable of flood reduction.
>=20
> Sandy> You are right. But I modified the name according to Tony's =
comments. Do you think it's better to modify the feature name to =
"flood-reducing" other than leaf name? =20
>=20

I was thinking about the attribute name itself in my comment (as opposed =
to the feature name). For the attribute, I would use the exact same same =
as in the RIFT draft, which is flood-reduction. It is clear that we are =
talking about a capability because it is part of a capability group (I =
will have more to say about this in follow-up e-mail #1 after this one).

I don=E2=80=99t really see a need for having a flood-reduction feature =
in the YANG model.

In your updated data model, you moved hierarchy-indications and =
flood-reduction from a capabilities container to the node level. That is =
not what I had in mind.

Specifically, this is what I have in mind:
1) Create a group for node-capabilities (note: plural, not singular)
2) At the node level, have an attribute advertised-node-capabilities of =
type node-capabilities
3) At the neighbor level, have an attribute received-node-capabilities =
of type node-capabilities

Similarly:
1) Create a group for link-capabilities (once again, plural)
2) At the neighbor level, have an attribute advertised-link-capabilities =
of type link-capabilities. I am assuming here that we might advertise =
different link capabilities to different neighbors. If that is not the =
case, then we can move the advertised-link-capabilities from the =
neighbor level to the node level.
3) Also at the the neighbor level, have an attribute =
received-link-capabilities of type link-capabilities.

> Sandy> I will move it to interface and neighbor. But do we need a =
global setting for it?

The question =E2=80=9Cdo we need a global setting=E2=80=9D is a very =
interesting one.

In general, for every attribute that is configurable per-neighbor it is =
useful to have a configurable per-node attribute that allows the user to =
change the default value for all neighbor without having to explicitly =
configure it for every neighbor.  This is not only true for neighbors =
but for every table.  I am no YANG expert, but this seems such a general =
problem to me that it seems hard to imagine that YANG has not already =
solved this in a more general way.  Is there no YANG-idiomatic way to =
apply inheritance or something like this (neighbor foo inherits default =
values for all its attributes from some template neighbor, but overrides =
different values for attribute X and Y)?
> Nonces are per interface, so it should be in the neighbor table below
> Sandy> Is this value can be adjusted?=20
>=20
> Do we use the same nonce on all the interface? If not, do you think =
it's OK to move the leaf to link-id-pair?=20
>=20

The implementation chooses the nonce for each sent packet, so it has the =
potential to change on each packet.

The remote implementation chooses the nonce for each received packet, so =
once again it has the potential to change on each packet.

The remote implementation must also reflect the most recently sent =
nonce, and there will be some delta between the most recently sent nonce =
and the most recently received reflected nonce.=20

It does not make any sense to configure any of these (sent nonce, =
received nonce, received reflected nonce).

I though what you were trying to model was =E2=80=9Cthe most recently =
sent nonce=E2=80=9D and the =E2=80=9Cmost recently received nonce=E2=80=9D=
.

It *does* make sense to make the following things configurable:

 * The minimum interval for increasing sent nonces (e.g. every packet, =
once per minute, once per 5 minutes, etc.)

 * The maximum acceptable delta between the most recently sent nonce any =
received reflected nonce.

> YANG newbie question, all tables in this document have this approach =
using 2 levels of nesting. Why is it not simply 1 level of nesting like =
this:
> Sandy> OK. I'll modify it.
>=20

It might make sense for a YANG expert to weigh in on this as well.

> In RIFT you cannot have multiple (>1) neighbors per interface.
> Thus, a neighbor should be an optional single-element container under =
neighbor.
> Even if you do not agree with that and want to keep neighbor ourside =
of interface, it should be under node and not under rift
>=20
> Sandy> I understand your point. But there may be multiple parallel =
links connect to a same neighbor, right?
>=20

Maybe Tony can weigh in on this, but my understanding (and my code!) =
deals with this as follows.

If multiple interfaces are connected to the same neighboring node, then =
each interface is treated as a separate adjacency.

So, each interface has either 0 or 1 adjacencies=3Dneighbors. There is =
no attempt to track that neighbor on interface A is actually the same =
neighbor as on interface B. Each adjacency=3Dneighbor is treated =
completely independently (at least in my code, and I don=E2=80=99t =
recall any language in the draft that says otherwise).

That said, flooding reduction may choose to flood only on a subset of =
the links, but that is a general mechanism.

If there is a compelling reason to model neighbors separately from =
interfaces, and having parallel interfaces all refer to the same =
neighbor object, I would be very interested to know about this reason =
(because it would trigger me to restructure my code to do the same).

> The database container should be under node and not under rift
>=20
> Sandy> Yes. The database container is under node, not under rift. =
Please reconfirm it. Thank you very much!
>=20
I checked the most recent file that you e-mail (rift-yang-tree200702) =
and as far as I can tell, database and  neighbors and kv-store are still =
under rift instead of node.

=E2=80=94 Bruno


--Apple-Mail=_F9E4D0E9-825A-4E3B-86C3-09E8A2BFDB1C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D""><div>CC to RIFT mailing list and removed all individual =
emails from the CC list because the IETF mailing list will reject it if =
the CC list is too long.</div><div><br class=3D""></div><div>This e-mail =
contains the discussion around the first batch of =
comments.</div><div><br class=3D""></div><div>There will be additional =
batches of comments in separate e-mails.</div><div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"zcontentRow"=
 style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><div =
class=3D""><div class=3D"zhistoryRow" style=3D"display: block;"><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D"zhistoryPanel =
control-group"><div class=3D"zhistoryContent"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1;"><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D""><div =
class=3D""><div class=3D""><br class=3D""><div class=3D""><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--rw level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</span><o:p =
class=3D""></o:p></div></div><div class=3D""><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div></div><p class=3D""><span =
style=3D"font-family: &quot;Courier New&quot;;" class=3D"">We need to =
distinguish configured-level vs derived-level (see section 4.2.7.1. in =
draft-ietf-rift-rift-12).</span><o:p class=3D""></o:p></p><p =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;;" =
class=3D"">Sandy&gt; In fact this is the effective value in the device. =
It's not directly according to the CLI configuration.&nbsp;</span><o:p =
class=3D""></o:p></p><p class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">The leaf hal below indicates the =
potential drived level value. It seems like it is not necessary to add a =
dedicated configured value for it? What do you think of it?</span><o:p =
class=3D""></o:p></p><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>Yes, it is necessary to configure the level. Or at =
the very least, it is necessary to configure which of the nodes are the =
top-of-fabric nodes. This is in fact the only configuration that is =
really required in RIFT.</div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"zcontentRow" style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;"><div class=3D""><div class=3D"zhistoryRow" =
style=3D"display: block;"><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D"zhistoryPanel control-group"><div =
class=3D"zhistoryContent"><div class=3D""><div class=3D"WordSection1" =
style=3D"page: WordSection1;"><div class=3D""><div class=3D""><div =
class=3D""><div class=3D""><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D""><div class=3D""><div class=3D""><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;; font-size: 11pt;" class=3D"">&nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;| &nbsp;+--ro hierarchy-indications? &nbsp; =
&nbsp;enumeration</span></div></div></div></div></div></div></div></div></=
div></div></div></div></div></div></div></div></div></div></blockquote><bl=
ockquote type=3D"cite" class=3D""><div class=3D"zcontentRow" =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><div =
class=3D""><div class=3D"zhistoryRow" style=3D"display: block;"><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D"zhistoryPanel =
control-group"><div class=3D"zhistoryContent"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1;"><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D""></o:p></div></div><div class=3D""><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;| &nbsp;+--rw flood-reducing-capable? &nbsp; boolean =
{flood-reducing}?</span><o:p class=3D""></o:p></div></div><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div></div><p class=3D""><span =
style=3D"font-family: &quot;Courier New&quot;;" class=3D"">Linguistic =
hairsplitting: is capable the right word? If we set this to false, it =
only means that flood reduction has been disabled, not that the node is =
not capable of flood reduction.</span><o:p class=3D""></o:p></p><p =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;;" =
class=3D"">Sandy&gt; You are right. But I modified the name according to =
Tony's comments. Do you think it's better to modify the feature name to =
"flood-reducing" other than leaf name? &nbsp;</span><o:p =
class=3D""></o:p></p><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>I was thinking about the attribute name itself in =
my comment (as opposed to the feature name). For the attribute, I would =
use the exact same same as in the RIFT draft, which is flood-reduction. =
It is clear that we are talking about a capability because it is part of =
a capability group (I will have more to say about this in follow-up =
e-mail #1 after this one).</div><div><br class=3D""></div><div>I don=E2=80=
=99t really see a need for having a flood-reduction feature in the YANG =
model.</div><div><br class=3D""></div><div>In your updated data model, =
you moved hierarchy-indications and flood-reduction from a capabilities =
container to the node level. That is not what I had in =
mind.</div><div><br class=3D""></div><div>Specifically, this is what I =
have in mind:</div><div><div>1) Create a group for node-capabilities =
(note: plural, not singular)</div><div>2) At the node level, have an =
attribute advertised-node-capabilities of type =
node-capabilities</div><div>3) At the neighbor level, have an attribute =
received-node-capabilities of type node-capabilities</div><div><br =
class=3D""></div><div>Similarly:</div><div>1) Create a group for =
link-capabilities (once again, plural)</div><div>2) At the neighbor =
level, have an attribute advertised-link-capabilities of type =
link-capabilities. I am assuming here that we might advertise different =
link capabilities to different neighbors. If that is not the case, then =
we can move the advertised-link-capabilities from the neighbor level to =
the node level.</div><div>3) Also at the the neighbor level, have an =
attribute received-link-capabilities of type =
link-capabilities.</div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"zcontentRow" style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;"><div class=3D""><div class=3D"zhistoryRow" =
style=3D"display: block;"><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D"zhistoryPanel control-group"><div =
class=3D"zhistoryContent"><div class=3D""><div class=3D"WordSection1" =
style=3D"page: WordSection1;"><div class=3D""><div class=3D""><div =
class=3D""><div class=3D""><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D""><div class=3D""><div class=3D""><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;; font-size: 12px;" class=3D"">Sandy&gt; I will =
move it to interface and neighbor. But do we need a global setting for =
it?</span></div></div></div></div></div></div></div></div></div></div></di=
v></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>The question =E2=80=9Cdo we need a global =
setting=E2=80=9D is a very interesting one.</div><div><br =
class=3D""></div><div>In general, for every attribute that is =
configurable per-neighbor it is useful to have a configurable per-node =
attribute that allows the user to change the default value for all =
neighbor without having to explicitly configure it for every neighbor. =
&nbsp;This is not only true for neighbors but for every table. &nbsp;I =
am no YANG expert, but this seems such a general problem to me that it =
seems hard to imagine that YANG has not already solved this in a more =
general way. &nbsp;Is there no YANG-idiomatic way to apply inheritance =
or something like this (neighbor foo inherits default values for all its =
attributes from some template neighbor, but overrides different values =
for attribute X and Y)?</div><blockquote type=3D"cite" class=3D""><div =
class=3D"zcontentRow" style=3D"caret-color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;"><div class=3D""><div class=3D"zhistoryRow" style=3D"display: =
block;"><div id=3D"zwriteHistoryContainer" class=3D""><div =
class=3D"zhistoryPanel control-group"><div class=3D"zhistoryContent"><div =
class=3D""><div class=3D"WordSection1" style=3D"page: =
WordSection1;"><div class=3D""><div class=3D""><div class=3D""><div =
class=3D""><div id=3D"zwriteHistoryContainer" class=3D""><div =
class=3D""><div class=3D""><div class=3D""><p class=3D""><o:p =
class=3D""></o:p></p><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;; =
font-size: 12px;" class=3D"">Nonces are per interface, so it should be =
in the neighbor table below</span></div></div><p class=3D""><o:p =
class=3D""></o:p></p><p class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">Sandy&gt; Is this value can be =
adjusted?&nbsp;</span><o:p class=3D""></o:p></p><p class=3D""><span =
style=3D"font-family: &quot;Courier New&quot;;" class=3D"">Do we use the =
same nonce on all the interface? If not, do you think it's OK to move =
the leaf to link-id-pair?&nbsp;</span><o:p class=3D""></o:p></p><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>The implementation chooses the nonce for each sent =
packet, so it has the potential to change on each packet.</div><div><br =
class=3D""></div><div>The remote implementation chooses the nonce for =
each received packet, so once again it has the potential to change on =
each packet.</div><div><br class=3D""></div><div>The remote =
implementation must also reflect the most recently sent nonce, and there =
will be some delta between the most recently sent nonce and the most =
recently received reflected nonce.&nbsp;</div><div><br =
class=3D""></div><div><div>It does not make any sense to configure any =
of these (sent nonce, received nonce, received reflected =
nonce).</div><div><br class=3D""></div></div><div>I though what you were =
trying to model was =E2=80=9Cthe most recently sent nonce=E2=80=9D and =
the =E2=80=9Cmost recently received nonce=E2=80=9D.</div><div><br =
class=3D""></div><div><div>It *does* make sense to make the following =
things configurable:</div><div><br class=3D""></div><div>&nbsp;* The =
minimum interval for increasing sent nonces (e.g. every packet, once per =
minute, once per 5 minutes, etc.)</div><div><br =
class=3D""></div><div>&nbsp;* The maximum acceptable delta between the =
most recently sent nonce any received reflected nonce.</div></div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"zcontentRow"=
 style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><div =
class=3D""><div class=3D"zhistoryRow" style=3D"display: block;"><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D"zhistoryPanel =
control-group"><div class=3D"zhistoryContent"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1;"><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;; =
font-size: 12px;" class=3D"">YANG newbie question, all tables in this =
document have this approach using 2 levels of nesting. Why is it not =
simply 1 level of nesting like this:</span></div></div><p class=3D""><o:p =
class=3D""></o:p></p><p class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">Sandy&gt; OK. I'll modify =
it.</span><o:p class=3D""></o:p></p><div class=3D""><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>It might make sense for a YANG expert to weigh in =
on this as well.</div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"zcontentRow" style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;"><div class=3D""><div class=3D"zhistoryRow" =
style=3D"display: block;"><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D"zhistoryPanel control-group"><div =
class=3D"zhistoryContent"><div class=3D""><div class=3D"WordSection1" =
style=3D"page: WordSection1;"><div class=3D""><div class=3D""><div =
class=3D""><div class=3D""><div id=3D"zwriteHistoryContainer" =
class=3D""><div class=3D""><div class=3D""><div class=3D""><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;; font-size: 11pt;" class=3D"">In RIFT you cannot =
have multiple (&gt;1) neighbors per interface.</span></div></div><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D""></o:p></div></div><div class=3D""><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;;" =
class=3D"">Thus, a neighbor should be an optional single-element =
container under neighbor.</span><o:p class=3D""></o:p></div></div><p =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;;" =
class=3D"">Even if you do not agree with that and want to keep neighbor =
ourside of interface, it should be under node and not under =
rift</span><o:p class=3D""></o:p></p><p class=3D""><span =
style=3D"font-family: &quot;Courier New&quot;;" class=3D"">Sandy&gt; I =
understand your point. But there may be multiple parallel links connect =
to a same neighbor, right?</span><o:p class=3D""></o:p></p><div =
class=3D""><div style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; =
font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div>Maybe Tony can weigh in on this, but my =
understanding (and my code!) deals with this as follows.</div><div><br =
class=3D""></div><div>If multiple interfaces are connected to the same =
neighboring node, then each interface is treated as a separate =
adjacency.</div><div><br class=3D""></div><div>So, each interface has =
either 0 or 1 adjacencies=3Dneighbors. There is no attempt to track that =
neighbor on interface A is actually the same neighbor as on interface B. =
Each adjacency=3Dneighbor is treated completely independently (at least =
in my code, and I don=E2=80=99t recall any language in the draft that =
says otherwise).</div><div><br class=3D""></div><div>That said, flooding =
reduction may choose to flood only on a subset of the links, but that is =
a general mechanism.</div><div><br class=3D""></div><div>If there is a =
compelling reason to model neighbors separately from interfaces, and =
having parallel interfaces all refer to the same neighbor object, I =
would be very interested to know about this reason (because it would =
trigger me to restructure my code to do the same).</div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"zcontentRow"=
 style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><div =
class=3D""><div class=3D"zhistoryRow" style=3D"display: block;"><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D"zhistoryPanel =
control-group"><div class=3D"zhistoryContent"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1;"><div class=3D""><div =
class=3D""><div class=3D""><div class=3D""><div =
id=3D"zwriteHistoryContainer" class=3D""><div class=3D""><div =
class=3D""><div class=3D""><p class=3D""><span style=3D"font-family: =
&quot;Courier New&quot;;" class=3D"">The database container should be =
under node and not under rift</span><o:p class=3D""></o:p></p><p =
class=3D""><span style=3D"font-family: &quot;Courier New&quot;;" =
class=3D"">Sandy&gt; Yes. The database container is under node, not =
under rift. Please reconfirm it. Thank you very much!</span><o:p =
class=3D""></o:p></p><div class=3D""><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""></div></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></blockquote><div>I checked =
the most recent file that you e-mail (rift-yang-tree200702) and as far =
as I can tell, database and &nbsp;neighbors and kv-store are still under =
rift instead of node.</div><div><br class=3D""></div>=E2=80=94 =
Bruno</div><br class=3D""></body></html>=

--Apple-Mail=_F9E4D0E9-825A-4E3B-86C3-09E8A2BFDB1C--


From nobody Thu Jul  2 17:22:20 2020
Return-Path: <agenda@ietf.org>
X-Original-To: rift@ietf.org
Delivered-To: rift@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 9F7D83A0A0A; Thu,  2 Jul 2020 17:20:34 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "\"IETF Secretariat\"" <agenda@ietf.org>
To: <rift-chairs@ietf.org>, <jefftant.ietf@gmail.com>
Cc: aretana.ietf@gmail.com, rift@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 7.7.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <159373563463.30173.17624018883592275011@ietfa.amsl.com>
Date: Thu, 02 Jul 2020 17:20:34 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/Mf2DaoVUVEmroIehZiOb4KT0JXI>
Subject: [Rift] rift - Requested session has been scheduled for IETF 108
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 03 Jul 2020 00:20:45 -0000

Dear Jeff Tantsura,

The session(s) that you have requested have been scheduled.
Below is the scheduled session information followed by
the original request. 


    rift Session 1 (0:50 requested)
    Wednesday, 29 July 2020, Session II 1300-1350
    Room Name: Room 4 size: 4
    ---------------------------------------------


iCalendar: https://datatracker.ietf.org/meeting/108/sessions/rift.ics

Request Information:


---------------------------------------------------------
Working Group Name: Routing In Fat Trees
Area Name: Routing Area
Session Requester: Jeff Tantsura


Number of Sessions: 1
Length of Session(s):  50 Minutes
Number of Attendees: None
Conflicts to Avoid: 
 Chair Conflict: idr bier bess lsr lsvr mboned pim rtgarea rtgwg spring teas nmrg







People who must be present:
  Alvaro Retana
  Zhaohui (Jeffrey) Zhang
  Jeff Tantsura

Resources Requested:

Special Requests:
  
---------------------------------------------------------



From nobody Sat Jul  4 09:22:59 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5ADC13A0CC6 for <rift@ietfa.amsl.com>; Sat,  4 Jul 2020 09:22:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5GSMuSQZ87qJ for <rift@ietfa.amsl.com>; Sat,  4 Jul 2020 09:22:55 -0700 (PDT)
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EDC343A0CC5 for <rift@ietf.org>; Sat,  4 Jul 2020 09:22:54 -0700 (PDT)
Received: by mail-ej1-x62d.google.com with SMTP id w16so37581520ejj.5 for <rift@ietf.org>; Sat, 04 Jul 2020 09:22:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=DmC3KsOXVkN9b3kSWDFbuewUJTvRuduaPKjcRppFW4I=; b=e8t58TJPdAeQwKJ3JRww7UgALiqoLdifq/kx5EZLym2FlG0c9D6zJ8o5zGUEQ4/U44 dja6nmp5yB9ViURWz7WLHRH6D2OcwVfq34h4WzfrbZjEH8vf1uWTs/o6VAM6bnK/6WLA Gu7fVyMTUkMZuxxHYrrpIlQgoKGI9lvRmu4iPlaw3wUEsXAWcuM/83SpNVB2tjK5PH/a lXmyRstqYkoKH2oNHmLU5Zo+8lVXoZ7MX81GZkE4O734lRhn/65vz5FOdfonvMh6bTwg KeZHfyD4swG7p2oP+sMJw3pSAaq99LUfG7cFqNcTZ0259d666FysulrPSXiDL2wu0m9a nsfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=DmC3KsOXVkN9b3kSWDFbuewUJTvRuduaPKjcRppFW4I=; b=jUeR04SxU5imK5JURMOuApnVBQ+0rrCjcNuLvCMwX74qKLg7lq/Hvv9X1OkBIt3Z6l 7Q2yhqJGr1UUrUpra02TwbUf9/KsnbD2m5ShpphYj0Dzg7/EhoH6/f18vvnnSWICtUq1 NitgZr7lxS6i5N1M5kk3XqPGq56xeKOebcneudaT6oDo/YF7nrGE6EFJebFksJE+HoDc 4ulZ2y61JKgmaorQLwJ4j9sBqDRc+IZCdA+pC3FakZH+4F8ovAXlgo3xoReV02xgirCW o83/E0ay2eKf/0Fp99v6wZvn2RneSsnvW1Fgp8+8BqtGa7UA4HhATKX2FqtmZdw6Hvci 0ZuA==
X-Gm-Message-State: AOAM530EgF0tGNevPYG7V7atcI3FiGusLe9aeDGShptztZpf/Fo4yQbI kpEPozzlSSkl4obPeWSLgkA=
X-Google-Smtp-Source: ABdhPJyw0QQ8eNcnVSqHPiC/nqRpZCwmMTIDbhnP5TVMPwX5gjtROb5C3zFqG5c+F3cLKMSGADU4/w==
X-Received: by 2002:a17:906:add3:: with SMTP id lb19mr28894016ejb.304.1593879773163;  Sat, 04 Jul 2020 09:22:53 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id s10sm12625884ejs.91.2020.07.04.09.22.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jul 2020 09:22:52 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9440AC7E-6FDA-4FB4-B38F-C44F7709145A"
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
Date: Sat, 4 Jul 2020 18:22:51 +0200
In-Reply-To: <202007031742272486476@zte.com.cn>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, E695E329-C4EC-4AC6-B74F-6E630B4C6D46@gmail.com> <202007031742272486476@zte.com.cn>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/chE9YUwyay-vSTCzEw8ki7e-Fxs>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, pls reviewtheupdateofRIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 04 Jul 2020 16:22:58 -0000

--Apple-Mail=_9440AC7E-6FDA-4FB4-B38F-C44F7709145A
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi Sandy,

Thanks for the quick update to the datamodel.

If you don't mind, I would like to continue with the iterative approach =
of providing a few more additional feedback comments after each update =
until we converge.

It works rather nicely for me to send just a few comments in each batch, =
and then waiting for the next update.

But if that doesn't work for you, and you would rather have all comments =
in one huge batch, let me know, and I can do that too.

Here is my next batch of comments:

module: ietf-rift
  augment =
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
    +--rw rift!
       +--rw node
          +--rw name?                         string
          +--ro level?                        level
          +--rw system-id                     system-id
          +--rw pod?                          uint32
          +--rw configured-level?             level
          +--rw overload?                     boolean
          +--ro protocol-minor-version        uint16
          +--ro hierarchy-indications?        enumeration
          +--rw flood-reduction?              boolean
          +--rw nonce-increasing-interval?    uint16
          +--rw maximum-nonce-delta?          uint8 =
{nonce-delta-adjust}?
          +--rw lie-ipv4-multicast-address?   =
rt-types:ipv4-multicast-group-address
          +--rw lie-ipv6-multicast-address?   =
rt-types:ipv6-multicast-group-address
          +--rw global-link-capabilities
          |  +--rw bfd?                     boolean
          |  +--rw v4-forwarding-capable?   boolean
          +--rw flood-port?                   inet:port-number
          +--rw lie-rx-port?                  inet:port-number

Suggest moving this up a few lines, to keep it together with =
lie-ipv4/6-multicast-address.

We have to decide whether we want to allow implementations to use =
different LIE multicast addresses for TX and RX (my implementation =
allows this, and I think Juniper's also).
If so:
 * I suggest renaming lie-ipv4/6-multicast-address to =
lie-rx-ipv4/6-multicast-address for the sake of clarity and consistency.
 * I suggest adding lie-tx-ipv4/6-multicast-address and lie-tx-port
 * Distinguish rx-flood-port (and interface attribute) and tx-flood-port =
(a neighbor attribute since it is dynamically advertised in the LIE)

          +--rw holdtime?                     =
rt-types:timer-value-seconds16
          +--rw tide-generation-interval?     =
rt-types:timer-value-seconds16
          +--rw tie-security-key-id?          uint32
          +--rw interface* [name]

We should add the advertised RIFT metric to the interface (and the =
received RIFT metric as a neighbor attribute -- see longer comment =
below).

We could consider adding the following attributes to interface:  was the =
most recently received LIE accepted or rejected, and if rejected, why?

          |  +--ro local-link-id?                  linkid-type
          |  +--rw name                            if:interface-ref
          |  +--rw advertised-lie-tie-addresses

I don't see much value putting this in a separate container

          |  |  +--ro lie-ipv4-source-address?        inet:ipv4-address
          |  |  +--ro lie-ipv6-source-address?        inet:ipv6-address
          |  |  +--ro flooding-ipv4-source-address?   inet:ipv4-address
          |  |  +--ro flooding-ipv6-source-address?   inet:ipv6-address

I suggest renaming this from xxx-ipvx-source-address to =
rx-xxx-ipvx-address (this is address that the interface uses to receive =
packets).

          |  +--ro direction-type?                 enumeration
          |  +--ro you-are-flood-repeater?         boolean
          |  +--ro not-a-ztp-offer?                boolean
          |  +--ro you-are-sending-too-quickly?    boolean
          |  +--rw link-capabilities
          |  |  +--rw bfd?                     boolean
          |  |  +--rw v4-forwarding-capable?   boolean

Fields such as you-are-flood-repeater, not-a-ztp-offer, =
you-are-sending-too-quickly, etc. etc. are all fields that are present =
in the LIE packet.
For such fields we should make a clear distinction between the value =
that this node advertised to the neighbor and the values (plural!) that =
this node received from the neihghbors (plural!).
So, we should have:
 * you-are-flood-repeater as an interface attribute (our advertised =
value) and you-are-flood-repeater as a neighbor attribute (the value =
that we received from the neighbor). Or maybe to make it even more =
clear, we could call them tx-you-are-flood-repeater and =
rx-you-are-flood-repeater (or advertised-you-are-flood-repeater and =
received-you-are-flood-repeater).
 * Ditto for not-ztp-offer
 * Ditto for you-are-sending-too-quickly
 * Ditto for link-capabilities (=3D> this one you already did: we have =
link-capabilities under interface and received-link-capabilities under =
neighbor)
 * Etc. etc. etc.

          |  +--ro neighbors

There can only be zero or one neighbor per interface. Thus, you don't =
need a neighbors (plural) list with neighbor objects indexed by =
system-id. You just need a single optional neighbor object.

          |     +--ro neighbor* [system-id]
          |        +--ro name?                         string
          |        +--ro level?                        level
          |        +--ro system-id                     system-id
          |        +--ro pod?                          uint32
          |        +--ro protocol-version?             uint16
          |        +--ro address-families
          |        |  +--ro address-family* [address-family]
          |        |     +--ro address-family    =
iana-rt-types:address-family

I am not a YANG expert, but wouldn't a leaf-list make more sense here?

          |        +--ro received-lie-tie-addresses
          |        |  +--ro lie-ipv4-source-address?        =
inet:ipv4-address
          |        |  +--ro lie-ipv6-source-address?        =
inet:ipv6-address
          |        |  +--ro flooding-ipv4-source-address?   =
inet:ipv4-address
          |        |  +--ro flooding-ipv6-source-address?   =
inet:ipv6-address
          |        +--ro remote-id?                    uint32
          |        +--ro cost?                         uint32
          |        +--ro bandwidth?                    uint32
          |        +--ro flood-reduction?              boolean
          |        +--ro received-link-capabilities
          |        |  +--ro bfd?                     boolean
          |        |  +--ro v4-forwarding-capable?   boolean
          |        +--ro bfd-up?                       boolean
          |        +--ro outer-security-key-id?        uint8
          |        +--ro state?                        enumeration

The state should be an attribute of the interface, not the neighbor. In =
state one-way the interface doesn't have a neighbor but it does have a =
state (namely one-way).

(I stopped reviewing here, will wait for the next iteration)

          +--ro miscabled-links*              linkid-type
          +--rw (algorithm-type)?
          |  +--:(spf)
          |  +--:(all-path)
          +--ro hal?                          level
          +--ro vol-list
          |  +--ro vol* [system-id]
          |     +--ro offered-level?   level
          |     +--ro name?            string
          |     +--ro level?           level
          |     +--ro system-id        system-id
          |     +--ro pod?             uint32
          +--rw instance-label?               uint32
          +--ro database
          |  +--ro ties* [direction-type originator tie-type tie-number]
          |     +--ro direction-type          enumeration
          |     +--ro originator              system-id
          |     +--ro tie-type                enumeration
          |     +--ro tie-number              uint32
          |     +--ro seq?                    uint64
          |     +--ro origination-time?       uint32
          |     +--ro origination-lifetime?   uint32
          |     +--ro node
          |     |  +--ro name?              string
          |     |  +--ro level?             level
          |     |  +--ro system-id          system-id
          |     |  +--ro pod?               uint32
          |     |  +--ro flood-reduction?   boolean
          |     |  +--ro overload?          boolean
          |     |  +--ro startup-time?      uint64
          |     |  +--ro neighbors* [system-id]
          |     |  |  +--ro name?                         string
          |     |  |  +--ro level?                        level
          |     |  |  +--ro system-id                     system-id
          |     |  |  +--ro pod?                          uint32
          |     |  |  +--ro address-families
          |     |  |  |  +--ro address-family* [address-family]
          |     |  |  |     +--ro address-family    =
iana-rt-types:address-family
          |     |  |  +--ro received-lie-tie-addresses
          |     |  |  |  +--ro lie-ipv4-source-address?        =
inet:ipv4-address
          |     |  |  |  +--ro lie-ipv6-source-address?        =
inet:ipv6-address
          |     |  |  |  +--ro flooding-ipv4-source-address?   =
inet:ipv4-address
          |     |  |  |  +--ro flooding-ipv6-source-address?   =
inet:ipv6-address
          |     |  |  +--ro remote-id?                    uint32
          |     |  |  +--ro cost?                         uint32
          |     |  |  +--ro bandwidth?                    uint32
          |     |  |  +--ro flood-reduction?              boolean
          |     |  |  +--ro received-link-capabilities
          |     |  |  |  +--ro bfd?                     boolean
          |     |  |  |  +--ro v4-forwarding-capable?   boolean
          |     |  |  +--ro bfd-up?                       boolean
          |     |  |  +--ro outer-security-key-id?        uint8
          |     |  +--ro miscabled-links*   linkid-type
          |     +--ro prefix
          |        +--ro prefix?              inet:ip-prefix
          |        +--ro (type)?
          |        |  +--:(prefix)
          |        |  +--:(positive-disaggregation)
          |        |  +--:(negative-disaggregation)
          |        |  +--:(external)
          |        |  +--:(positive-external-disaggregation)
          |        |  +--:(pgp)
          |        +--ro metric?              uint32
          |        +--ro tags*                uint64
          |        +--ro monotonic-clock
          |        |  +--ro prefix-sequence-type
          |        |     +--ro timestamp         =
ieee802-1as-timestamp-type
          |        |     +--ro transaction-id?   uint8
          |        +--ro loopback?            boolean
          |        +--ro directly-attached?   boolean
          |        +--ro from-link?           linkid-type
          +--ro kv-store
             +--ro kvs* [kvs-index]
                +--ro kvs-index    uint32
                +--ro kvs-tie
                   +--ro direction-type?         enumeration
                   +--ro originator?             system-id
                   +--ro tie-type?               enumeration
                   +--ro tie-number?             uint32
                   +--ro seq?                    uint64
                   +--ro origination-time?       uint32
                   +--ro origination-lifetime?   uint32
                   +--ro key-value
                      +--ro key?     uint16
                      +--ro value?   uint32

  notifications:
    +---n error-set
       +--ro tie-level-error
       |  +--ro direction-type?         enumeration
       |  +--ro originator?             system-id
       |  +--ro tie-type?               enumeration
       |  +--ro tie-number?             uint32
       |  +--ro seq?                    uint64
       |  +--ro origination-time?       uint32
       |  +--ro origination-lifetime?   uint32
       +--ro neighbor-error
          +--ro neighbor* [system-id]
             +--ro name?                         string
             +--ro level?                        level
             +--ro system-id                     system-id
             +--ro pod?                          uint32
             +--ro protocol-version?             uint16
             +--ro address-families
             |  +--ro address-family* [address-family]
             |     +--ro address-family    iana-rt-types:address-family
             +--ro received-lie-tie-addresses
             |  +--ro lie-ipv4-source-address?        inet:ipv4-address
             |  +--ro lie-ipv6-source-address?        inet:ipv6-address
             |  +--ro flooding-ipv4-source-address?   inet:ipv4-address
             |  +--ro flooding-ipv6-source-address?   inet:ipv6-address
             +--ro remote-id?                    uint32
             +--ro cost?                         uint32
             +--ro bandwidth?                    uint32
             +--ro flood-reduction?              boolean
             +--ro received-link-capabilities
             |  +--ro bfd?                     boolean
             |  +--ro v4-forwarding-capable?   boolean
             +--ro bfd-up?                       boolean
             +--ro outer-security-key-id?        uint8


> On Jul 3, 2020, at 11:42 AM, <zhang.zheng@zte.com.cn> =
<zhang.zheng@zte.com.cn> wrote:
>=20
> Hi Bruno,
>=20
>=20
>=20
> Thank you very much!
>=20
> I updated the model again according to your comments.
>=20
> And sorry, I made mistakes for database/neighbor/kv-store level.
>=20
> Please review it one more time, thank you very much!
>=20
>=20
>=20
> Best regards,
>=20
> Sandy
>=20


--Apple-Mail=_9440AC7E-6FDA-4FB4-B38F-C44F7709145A
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><div =
class=3D"">Hi Sandy,</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks for the quick update to the datamodel.</div><div =
class=3D""><br class=3D""></div><div class=3D"">If you don't mind, I =
would like to continue with the iterative approach of providing a few =
more additional feedback comments after each update until we =
converge.</div><div class=3D""><br class=3D""></div><div class=3D"">It =
works rather nicely for me to send just a few comments in each batch, =
and then waiting for the next update.</div><div class=3D""><br =
class=3D""></div><div class=3D"">But if that doesn't work for you, and =
you would rather have all comments in one huge batch, let me know, and I =
can do that too.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Here is my next batch of comments:</div><div class=3D""><br =
class=3D""></div><div class=3D""><font face=3D"Courier New" =
class=3D"">module: ietf-rift</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; augment =
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:</font></=
div><div class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; =
+--rw rift!</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--rw node</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--ro level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw system-id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
configured-level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw overload? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
protocol-minor-version &nbsp; &nbsp; &nbsp; =
&nbsp;uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
hierarchy-indications? &nbsp; &nbsp; &nbsp; =
&nbsp;enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw flood-reduction? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw nonce-increasing-interval? &nbsp; =
&nbsp;uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw maximum-nonce-delta? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 =
{nonce-delta-adjust}?</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
lie-ipv4-multicast-address? &nbsp; =
rt-types:ipv4-multicast-group-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
lie-ipv6-multicast-address? &nbsp; =
rt-types:ipv6-multicast-group-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
global-link-capabilities</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw bfd? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw =
v4-forwarding-capable? &nbsp; boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
flood-port? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; inet:port-number</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw lie-rx-port? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;inet:port-number</font></div><div class=3D""><font face=3D"Courier =
New" class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">Suggest moving this up a =
few lines, to keep it together with =
lie-ipv4/6-multicast-address.</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D""><br =
class=3D""></b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">We have to decide whether we want to allow =
implementations to use different LIE multicast addresses for TX and RX =
(my implementation allows this, and I think Juniper's =
also).</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">If so:</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* I suggest renaming =
lie-ipv4/6-multicast-address to lie-rx-ipv4/6-multicast-address for the =
sake of clarity and consistency.</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* I suggest adding =
lie-tx-ipv4/6-multicast-address and lie-tx-port</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* =
Distinguish rx-flood-port (and interface attribute) and tx-flood-port (a =
neighbor attribute since it is dynamically advertised in the =
LIE)</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
holdtime? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; rt-types:timer-value-seconds16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
tide-generation-interval? &nbsp; &nbsp; =
rt-types:timer-value-seconds16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
tie-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw interface* =
[name]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">We should add the =
advertised RIFT metric to the interface (and the received RIFT metric as =
a neighbor attribute -- see longer comment below).</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><b class=3D""><br =
class=3D""></b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">We could consider adding the following =
attributes to interface: &nbsp;was the most recently received LIE =
accepted or rejected, and if rejected, why?</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
local-link-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;linkid-type</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw name &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;if:interface-ref</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--rw advertised-lie-tie-addresses</font></div><div class=3D""><font=
 face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><b class=3D"">I don't =
see much value putting this in a separate container</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
lie-ipv4-source-address? &nbsp; &nbsp; &nbsp; =
&nbsp;inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
lie-ipv6-source-address? &nbsp; &nbsp; &nbsp; =
&nbsp;inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
flooding-ipv4-source-address? &nbsp; inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro flooding-ipv6-source-address? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">I suggest renaming this =
from xxx-ipvx-source-address to rx-xxx-ipvx-address (this is address =
that the interface uses to receive packets).</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
direction-type? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
you-are-flood-repeater? &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
not-a-ztp-offer? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
you-are-sending-too-quickly? &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--rw link-capabilities</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--rw bfd? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--rw v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">Fields such as =
you-are-flood-repeater, not-a-ztp-offer, you-are-sending-too-quickly, =
etc. etc. are all fields that are present in the LIE =
packet.</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">For such fields we should make a clear =
distinction between the value that this node advertised to the neighbor =
and the values (plural!) that this node received from the neihghbors =
(plural!).</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">So, we should have:</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* =
you-are-flood-repeater as an interface attribute (our advertised value) =
and you-are-flood-repeater as a neighbor attribute (the value that we =
received from the neighbor). Or maybe to make it even more clear, we =
could call them tx-you-are-flood-repeater and rx-you-are-flood-repeater =
(or advertised-you-are-flood-repeater and =
received-you-are-flood-repeater).</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* Ditto for =
not-ztp-offer</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">&nbsp;* Ditto for =
you-are-sending-too-quickly</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">&nbsp;* Ditto for =
link-capabilities (=3D&gt; this one you already did: we have =
link-capabilities under interface and received-link-capabilities under =
neighbor)</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">&nbsp;* Etc. etc. etc.</b></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
neighbors</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">There can only be zero or =
one neighbor per interface. Thus, you don't need a neighbors (plural) =
list with neighbor objects indexed by system-id. You just need a single =
optional neighbor object.</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro neighbor* =
[system-id]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;+--ro level? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro protocol-version? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro address-families</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro address-family* =
[address-family]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;| &nbsp; &nbsp; +--ro address-family &nbsp; =
&nbsp;iana-rt-types:address-family</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><b class=3D"">I am not =
a YANG expert, but wouldn't a leaf-list make more sense =
here?</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
received-lie-tie-addresses</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro lie-ipv4-source-address? &nbsp; =
&nbsp; &nbsp; &nbsp;inet:ipv4-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro lie-ipv6-source-address? &nbsp; =
&nbsp; &nbsp; &nbsp;inet:ipv6-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro flooding-ipv4-source-address? =
&nbsp; inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro flooding-ipv6-source-address? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro remote-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro cost? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro bandwidth? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro flood-reduction? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
received-link-capabilities</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;| &nbsp;+--ro v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro bfd-up? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro outer-security-key-id? &nbsp; &nbsp; =
&nbsp; &nbsp;uint8</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro state? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;enumeration</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><b class=3D"">The state should be an attribute of the =
interface, not the neighbor. In state one-way the interface doesn't have =
a neighbor but it does have a state (namely =
one-way).</b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D"">(I stopped reviewing here, =
will wait for the next iteration)</b></font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><b class=3D""><br =
class=3D""></b></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro miscabled-links* =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;linkid-type</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
(algorithm-type)?</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--:(spf)</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--:(all-path)</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro hal? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;level</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
vol-list</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro vol* =
[system-id]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
offered-level? &nbsp; level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;string</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro system-id &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro pod? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw instance-label? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
database</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro ties* =
[direction-type originator tie-type tie-number]</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro direction-type &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;enumeration</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
+--ro originator &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
tie-type &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
tie-number &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro seq? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
origination-time? &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro origination-lifetime? &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
node</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;string</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro flood-reduction? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro overload? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro startup-time? &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro neighbors* [system-id]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro name? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
string</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font=
 face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro address-families</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro =
address-family* [address-family]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp; &nbsp; +--ro address-family =
&nbsp; &nbsp;iana-rt-types:address-family</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
received-lie-tie-addresses</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro lie-ipv4-source-address? =
&nbsp; &nbsp; &nbsp; &nbsp;inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro =
lie-ipv6-source-address? &nbsp; &nbsp; &nbsp; =
&nbsp;inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;| &nbsp;| &nbsp;+--ro flooding-ipv4-source-address? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;| &nbsp;+--ro flooding-ipv6-source-address? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro remote-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro cost? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro bandwidth? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro flood-reduction? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
received-link-capabilities</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;| &nbsp;+--ro v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro bfd-up? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro outer-security-key-id? &nbsp; &nbsp; =
&nbsp; &nbsp;uint8</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro miscabled-links* &nbsp; linkid-type</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro prefix</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;+--ro prefix? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inet:ip-prefix</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
(type)?</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;| &nbsp;+--:(prefix)</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(positive-disaggregation)</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(negative-disaggregation)</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--:(external)</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(positive-external-disaggregation)</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(pgp)</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro tags* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro monotonic-clock</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
prefix-sequence-type</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp; &nbsp; +--ro timestamp &nbsp; &nbsp; &nbsp; &nbsp; =
ieee802-1as-timestamp-type</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; +--ro transaction-id? &nbsp; =
uint8</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro loopback? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro directly-attached? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;+--ro from-link? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; linkid-type</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
kv-store</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro kvs* =
[kvs-index]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
kvs-index &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; +--ro kvs-tie</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro direction-type? &nbsp; &nbsp; =
&nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro originator? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro tie-type? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro tie-number? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro seq? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint64</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro origination-time? =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro origination-lifetime? &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro key-value</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro key? &nbsp; &nbsp; =
uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; +--ro value? &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; notifications:</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; +---n =
error-set</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
tie-level-error</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro direction-type? =
&nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
originator? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro tie-type? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp;| &nbsp;+--ro tie-number? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro seq? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro origination-time? =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
origination-lifetime? &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
neighbor-error</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro neighbor* =
[system-id]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro name? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; string</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro protocol-version? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro address-families</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro address-family* =
[address-family]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; =
&nbsp; +--ro address-family &nbsp; =
&nbsp;iana-rt-types:address-family</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro received-lie-tie-addresses</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro lie-ipv4-source-address? &nbsp; =
&nbsp; &nbsp; &nbsp;inet:ipv4-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro lie-ipv6-source-address? &nbsp; &nbsp; &nbsp; =
&nbsp;inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--ro flooding-ipv4-source-address? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
flooding-ipv6-source-address? &nbsp; inet:ipv6-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro remote-id? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro cost? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
bandwidth? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
flood-reduction? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
received-link-capabilities</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro bfd-up? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
outer-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp;uint8</font></div><div =
class=3D""><br class=3D""></div><div><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D"">On Jul 3, 2020, at 11:42 AM, =
&lt;<a href=3D"mailto:zhang.zheng@zte.com.cn" =
class=3D"">zhang.zheng@zte.com.cn</a>&gt; &lt;<a =
href=3D"mailto:zhang.zheng@zte.com.cn" =
class=3D"">zhang.zheng@zte.com.cn</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D"zcontentRow"><p style=3D"font-size:14px;font-family:arial;" =
class=3D"">Hi Bruno,</p><p style=3D"font-size:14px;font-family:arial;" =
class=3D""><br class=3D""></p><p =
style=3D"font-size:14px;font-family:arial;" class=3D"">Thank you very =
much!</p><p style=3D"font-size:14px;font-family:arial;" class=3D"">I =
updated the model again according to your comments.</p><p =
style=3D"font-size:14px;font-family:arial;" class=3D"">And sorry, I made =
mistakes for database/neighbor/kv-store level.<br class=3D""></p><p =
style=3D"font-size:14px;font-family:arial;" class=3D"">Please review it =
one more time, thank you very much!</p><p =
style=3D"font-size:14px;font-family:arial;" class=3D""><br =
class=3D""></p><p style=3D"font-size:14px;font-family:arial;" =
class=3D"">Best regards,</p><p style=3D"font-size:14px;font-family:arial;"=
 class=3D"">Sandy</p></div></div></blockquote></div><br =
class=3D""></body></html>=

--Apple-Mail=_9440AC7E-6FDA-4FB4-B38F-C44F7709145A--


From nobody Fri Jul 10 03:36:50 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 48A6B3A088F for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:36:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id o2tjYjifBbwy for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:36:47 -0700 (PDT)
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 35E9F3A088C for <rift@ietf.org>; Fri, 10 Jul 2020 03:36:47 -0700 (PDT)
Received: by mail-ej1-x62a.google.com with SMTP id l12so5493484ejn.10 for <rift@ietf.org>; Fri, 10 Jul 2020 03:36:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=5It+jCTA64U/o8ozkucP76puoYamYtLhKFpNs8wDDZI=; b=SF55fYbpihX+bgFt7Y57RhYCg83+Xw1M1ck4f2nu0pmdSdo0Ud7CytTh6A10quIRuQ 4PBNHR0Gk+jJ0UwVXZrF0YeMvptkJ64kBf1XTbusOVh77euX39E8NJuvYuQtoHNIlu3w yUI65+tuch2R9hplhJsxm3HZUSLG/f7ZfMq6aBirT/+ks8B3s3fCn+g+Kl7uStNLhVD8 48STiZidfeLQ33cf9WdnqYYaXIbzJbGQS/H2gvLdz4/S2tqYMngrAcze4hjqvmyNcQ5g jHaYBFUE6iMdS8eZxSuDcMj463Qw7x+K/us3qTqlNArOSFRoJ+H4jMDwBcDK97Ok9slG 0Wew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=5It+jCTA64U/o8ozkucP76puoYamYtLhKFpNs8wDDZI=; b=UfJswSz5oQdewS7ri15nBZ7Ty1vNwfyoF/6RX6QUeyS05eYP0HYAgGAnMi74x5aIkE DDY6HtdMErylQc+leKuX+M4Uug9FJBuXEK2FgeX5bPIMywmG/fTzznsvvKbyYZ0NdhIK D/HkQMH9EApiQuMBSxjOf/Xw4CZT6xRNsRVtXZm66NcozvaosvRxTdJWr9mkAyA6FKAl cADm/tZ2B0NOF3hxCenCTSF+g74YJOB7N3WIGP6M62enmSj8byuP9JCBj5vTAGtE8f14 MaQu99x3INmbvgvoo+qEO+dUwlMxrP+hDotFZPHVfCnBNW/YbERnGFhzplfMx0BviUij bWwg==
X-Gm-Message-State: AOAM533HpeNMKdlc7cIo7J1SJlmkqDR+w0q6q7Vqe1yF/4Rmgp+y7Gxc l5vR53XSS5J96K9Gov0eM08=
X-Google-Smtp-Source: ABdhPJyDWUE9yclLyYK011gFTkNbkwXXN/hfI7tNWra5DKrMQFbshH3SVfppC9zkdUDUKJYl0cLfGQ==
X-Received: by 2002:a17:907:1051:: with SMTP id oy17mr63007333ejb.394.1594377405668;  Fri, 10 Jul 2020 03:36:45 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id b6sm4110545eds.64.2020.07.10.03.36.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Jul 2020 03:36:45 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_493CE036-13C7-420D-97F9-E0474E88D995"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Fri, 10 Jul 2020 12:36:44 +0200
In-Reply-To: <202007061506485460169@zte.com.cn>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, 1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com> <202007061506485460169@zte.com.cn>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/a2W0EgIdDVVBXBawywb8ERy5Mq8>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, plsreviewtheupdateofRIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jul 2020 10:36:49 -0000

--Apple-Mail=_493CE036-13C7-420D-97F9-E0474E88D995
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi Sandy,

Thanks for the updated model; the next round of review comments will =
follow shortly.

Meanwhile, here are the answers to your questions:
> And I have two questions:
>=20
> There is a leaf "cost" in the neighbor grouping, is the "metric" =
duplicated with the "cost"?
>=20
Currently, your YANG datamodel has both cost and metric attributes per =
neighbor (as well as bandwidth):

+--ro neighbor
      +--ro cost?      uint32
      +--ro metric?    uint32
      +--ro bandwidth? uint32

Most of the text in the RIFT spec (including the definition) uses the =
term "cost" to mean the cost of a link to an immediately neighboring =
node. The term "distance" is used to mean the total cost of a path to a =
remote node.

The Thrift datamodel in the RIFT spec is super inconsistent in its =
terminology:

 /** neighbor of a node */
 struct NodeNeighborsTIEElement {
 /** level of neighbor */
 1: required common.LevelType level;
 /** Cost to neighbor.
 @note: All parallel links to same node
 incur same cost, in case the neighbor has multiple
 parallel links at different cost, the largest distance
 (highest numerical value) MUST be advertised.
 @note: any neighbor with cost <=3D 0 MUST be ignored
 in computations */
 3: optional common.MetricType cost
 =3D common.default_distance;

Note that the Thrift attribute is called "cost" but it's type is =
"MetricType" and it 's default value is "default_distance" 8-)

Bottom line: cost and metric are synonyms, we only need neighbor cost OR =
neighbor metric in the YANG (not both). I suggest that we only keep cost =
and get rid of metric. We do need bandwidth as a separate attribute.

Note: in a later e-mail I will send a rather long list of attributes =
that could be added to the YANG data model. bandwidth-adjusted-cost will =
be one of those additional attributes that I will suggest (see section =
4.3.6. Fabric Bandwidth Balancing in the RIFT spec).

> If different source addresses can be used for LIE and TIE sending?
>=20

One thing to consider is that LIEs are always sent on IPv4 *and* IPv6.  =
Flooding packets (not just TIEs, but also TIDEs and TIREs) are sent on =
IPv4 *or* IPv6 but not both.

For a given address family, I think that it would be reasonable to =
require that LIEs and flooding traffic *must* be sent on the same source =
address. The reason is that once a neighbor has been discovered by =
virtue of receiving LIEs from a particular address, we want to open up a =
listening socket for that particular neighbor for flooding traffic. That =
flooding socket has the same remote address but potentially a different =
UDP port.

My implementation does not actually bind to a remote address, but I =
*could* have chosen to do so:

agg_101> show interface if_101_1 sockets
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| Traffic  | Direction | Family | Local Address                | Local =
Port | Remote Address  | Remote Port |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| LIEs     | Receive   | IPv4   | 224.0.0.81                   | 20001   =
   | Any             | Any         |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| LIEs     | Receive   | IPv6   | ff02::a1f7%en0               | 20001   =
   | Any             | Any         |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| LIEs     | Send      | IPv4   | 192.168.178.192              | 63729   =
   | 224.0.0.71      | 20002       |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| LIEs     | Send      | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 63730   =
   | ff02::a1f7%en0  | 20002       |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| Flooding | Receive   | IPv4   | 192.168.178.192              | 20004   =
   | Any             | Any         |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| Flooding | Receive   | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004   =
   | Any             | Any         |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
| Flooding | Send      | IPv4   | 192.168.178.192              | 54629   =
   | 192.168.178.192 | 20003       |
=
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+



--Apple-Mail=_493CE036-13C7-420D-97F9-E0474E88D995
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D""><div><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">Hi Sandy,</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Thanks for the updated model; the =
next round of review comments will follow =
shortly.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" class=3D""><br class=3D""></font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">Meanwhile, =
here are the answers to your questions:</font></div><div><blockquote =
type=3D"cite" class=3D""><div class=3D""><div class=3D"zcontentRow"><p =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><b class=3D"">And I have two questions:</b></font></p><ol =
class=3D" list-paddingleft-2" style=3D"list-style-type: decimal;"><li =
class=3D""><p class=3D""><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" class=3D""><b class=3D"">There is a leaf "cost" in the neighbor =
grouping, is the "metric" duplicated with the =
"cost"?</b></font></p></li></ol></div></div></blockquote><div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D"">Currently, your YANG datamodel has both cost and metric =
attributes per neighbor (as well as bandwidth):</span></div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D""><br class=3D""></span></div><div><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">+--ro =
neighbor</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
+--ro cost? &nbsp; &nbsp; &nbsp;uint32</font></span></div><div><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; +--ro metric? &nbsp; =
&nbsp;uint32</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
+--ro bandwidth? uint32</font></span></div><div style=3D"font-family: =
Avenir-Book;"><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;"><span =
style=3D"font-size: 14px;" class=3D"">Most of the text in the RIFT spec =
(including the definition) uses the term "cost" to mean the cost of a =
link to an immediately neighboring node. The term "distance" is used to =
mean the total cost of a path to a remote node.</span></div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D""><br class=3D""></span></div><div style=3D"font-family: =
Avenir-Book;"><span style=3D"font-size: 14px;" class=3D"">The Thrift =
datamodel in the RIFT spec is super inconsistent in its =
terminology:</span></div><div style=3D"font-family: Avenir-Book;"><span =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" class=3D"">&nbsp;</font><font =
face=3D"Courier New" class=3D"">/** neighbor of a node =
*/</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;struct =
NodeNeighborsTIEElement {</font></span></div><div><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;/** level of neighbor */</font></span></div><div><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;1: required common.LevelType =
level;</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;/** <b =
class=3D"">Cost</b> to neighbor.</font></span></div><div><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;@note: All parallel links to same =
node</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;incur same <b =
class=3D"">cost</b>, in case the neighbor has =
multiple</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;parallel links at =
different cost, the largest distance</font></span></div><div><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;(highest numerical value) MUST be =
advertised.</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;@note: any =
neighbor with cost &lt;=3D 0 MUST be =
ignored</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;in computations =
*/</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;3: optional =
common.<b class=3D"">Metric</b>Type <b =
class=3D"">cost</b></font></span></div><div><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;=3D =
common.default_<b class=3D"">distance</b>;</font></span></div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D""><br class=3D""></span></div><div style=3D"font-family: =
Avenir-Book;"><span style=3D"font-size: 14px;" class=3D"">Note that the =
Thrift attribute is called "cost" but it's type is "MetricType" and it =
's default value is "default_distance" 8-)</span></div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D""><br class=3D""></span></div><div style=3D"font-family: =
Avenir-Book;"><span style=3D"font-size: 14px;" class=3D"">Bottom line: =
cost and metric are synonyms, we only need neighbor cost OR neighbor =
metric in the YANG (not both). I suggest that we only keep cost and get =
rid of metric. We do need bandwidth as a separate =
attribute.</span></div><div style=3D"font-family: Avenir-Book;"><span =
style=3D"font-size: 14px;" class=3D""><br class=3D""></span></div><div =
style=3D"font-family: Avenir-Book;"><span style=3D"font-size: 14px;" =
class=3D"">Note: in a later e-mail I will send a rather long list of =
attributes that could be added to the YANG data model. =
bandwidth-adjusted-cost will be one of those additional attributes that =
I will suggest (see section 4.3.6. Fabric Bandwidth Balancing in the =
RIFT spec).</span></div><div style=3D"font-family: Avenir-Book; =
font-size: 14px;"><br class=3D""></div></div><blockquote type=3D"cite" =
class=3D""><div class=3D""><div class=3D"zcontentRow"><ol class=3D" =
list-paddingleft-2" style=3D"list-style-type: decimal;" start=3D"2"><li =
class=3D""><p class=3D""><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" class=3D""><b class=3D"">If different source addresses can be =
used for LIE and TIE sending?<br =
class=3D""></b></font></p></li></ol></div></div></blockquote></div><div =
class=3D""><font face=3D"Avenir-Book" class=3D""><span style=3D"font-size:=
 14px;" class=3D"">One thing to consider is that LIEs are always sent on =
IPv4 *and* IPv6. &nbsp;Flooding packets (not just TIEs, but also TIDEs =
and TIREs) are sent on IPv4 *or* IPv6 but not =
both.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">For a given =
address family, I think that it would be reasonable to require that LIEs =
and flooding traffic *must* be sent on the same source address. The =
reason is that once a neighbor has been discovered by virtue of =
receiving LIEs from a particular address, we want to open up a listening =
socket for that particular neighbor for flooding traffic. That flooding =
socket has the same remote address but potentially a different UDP =
port.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">My implementation =
does not actually bind to a remote address, but I *could* have chosen to =
do so:</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" class=3D"">agg_101&gt; <b class=3D"">show interface =
if_101_1 sockets</b></font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Traffic&nbsp; | =
Direction | Family | Local Address&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Local Port | Remote Address&nbsp; | Remote Port =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv4 &nbsp; | 224.0.0.81 &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv6 &nbsp; | ff02::a1f7%en0 &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 63729&nbsp; &nbsp; &nbsp; | =
224.0.0.71&nbsp; &nbsp; &nbsp; | 20002 &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | =
63730&nbsp; &nbsp; &nbsp; | ff02::a1f7%en0&nbsp; | 20002 &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | 20004&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004&nbsp; &nbsp; =
&nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Send&nbsp; =
&nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | 54629&nbsp; &nbsp; &nbsp; | 192.168.178.192 | =
20003 &nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div></div><d=
iv class=3D""><font face=3D"Avenir-Book" class=3D""><span =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div></body></html>=

--Apple-Mail=_493CE036-13C7-420D-97F9-E0474E88D995--


From nobody Fri Jul 10 03:40:29 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EC5313A08A2 for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:40:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q-a4waXmmvLM for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:40:25 -0700 (PDT)
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C37BB3A089D for <rift@ietf.org>; Fri, 10 Jul 2020 03:40:24 -0700 (PDT)
Received: by mail-ej1-x635.google.com with SMTP id a1so5497652ejg.12 for <rift@ietf.org>; Fri, 10 Jul 2020 03:40:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=g07IDG6uSdu544NqQS/6cc9nIkck7jWq/7wcsFItU0w=; b=F+35M5j4MpbbUNNVeozP/frErN3r621sipkHiobeNF1p2Nm2n/h1mGvejX/jqqOFt5 etnK5pJg6g+KUxRYdINHrWlTTFcq7i07JHHR60v23p2nZDRPnEkxszErm8pBIk9SW8kr CTXbwuuZ1Xvrn+tR1Tkm2rKnvopHjLLHRkRcl2lVmLarlxlgx27M/aVqf4z7OjshbtzX hoITYdwNq5Yzf10Jk4FjcKC+y0N2IdpZE4c3rUhk0ztfDdf39Z/EePrO0pNBTF/p8doN whzBhLU0jcrTK94J0uMEEE3N5faJjQ9uSFOueysLLx5b5FSK4uT54VDojAB/9Uaeah4j o1yw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=g07IDG6uSdu544NqQS/6cc9nIkck7jWq/7wcsFItU0w=; b=pWFwlAOFXM3sGYslhE0QJcLL57n3mawectUFgB773/be8tn2uiq09N489kyYC5rIQr 7qooQq0ymjIZ/5yCNL/w5cTF5S3D/dt9hkwLsv0B+WfQpaAyTNPXB0AgvVAhZF8XaRfw VhJcMgXYowdoqHWNfiw+LRyVXg0Z+dTb6f/2IyAjP2tLK1kQX9mi3aiOBJdZZ9wl/RWq QVQoF4eCPaAXV9EtCbp6/VrDAp8gmJMXfrt5RbpRTZ5kpuQ9iGP9xKBnFF2UIeFjvhxW 1kuNDlzrhj0NiBwJGS2w/cR8m8ah2yuOwTVAz1PbvcBuITqfvaX+wBr4mdc6Fzo6gxeE CCEg==
X-Gm-Message-State: AOAM531qvLsXyU+G7xDUeQ6zM1b2wZDjJpS9zM2ylwPogCxNuHwbe8Bj uDdavSGTfn5FAi/5PPiK7aE=
X-Google-Smtp-Source: ABdhPJxbCvI6z94WfBrfGCLzzi/7vqV/VCJYgCOHo/jHzHunjgVyT+r17tK3QDbs5Otwgz6hpHZPnQ==
X-Received: by 2002:a17:906:7253:: with SMTP id n19mr35174930ejk.31.1594377623235;  Fri, 10 Jul 2020 03:40:23 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id d16sm3346342ejo.31.2020.07.10.03.40.22 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Jul 2020 03:40:22 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_ACF3E322-D145-4049-8D3F-04008A172542"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Fri, 10 Jul 2020 12:40:21 +0200
In-Reply-To: <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, 1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com> <202007061506485460169@zte.com.cn> <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/UmITmUEE7-CyM5nt6F-GfpUg314>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, plsreviewtheupdateofRIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jul 2020 10:40:27 -0000

--Apple-Mail=_ACF3E322-D145-4049-8D3F-04008A172542
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

I was just looking at the YANG data model, and I noticed that it does =
*not* allow different source addresses to be specified, so your question =
was sort of moot.

What it *does* allow is different RX addresses to be specified for TIEs =
and flooding traffic.  These are receive multicast addresses, so they =
will appear as the destination address on the packet.  They are not =
source addresses.

=E2=80=94 Bruno

> On Jul 10, 2020, at 12:36 PM, Bruno Rijsman <brunorijsman@gmail.com> =
wrote:
>=20
> Hi Sandy,
>=20
> Thanks for the updated model; the next round of review comments will =
follow shortly.
>=20
> Meanwhile, here are the answers to your questions:
>> And I have two questions:
>>=20
>> There is a leaf "cost" in the neighbor grouping, is the "metric" =
duplicated with the "cost"?
>>=20
> Currently, your YANG datamodel has both cost and metric attributes per =
neighbor (as well as bandwidth):
>=20
> +--ro neighbor
>       +--ro cost?      uint32
>       +--ro metric?    uint32
>       +--ro bandwidth? uint32
>=20
> Most of the text in the RIFT spec (including the definition) uses the =
term "cost" to mean the cost of a link to an immediately neighboring =
node. The term "distance" is used to mean the total cost of a path to a =
remote node.
>=20
> The Thrift datamodel in the RIFT spec is super inconsistent in its =
terminology:
>=20
>  /** neighbor of a node */
>  struct NodeNeighborsTIEElement {
>  /** level of neighbor */
>  1: required common.LevelType level;
>  /** Cost to neighbor.
>  @note: All parallel links to same node
>  incur same cost, in case the neighbor has multiple
>  parallel links at different cost, the largest distance
>  (highest numerical value) MUST be advertised.
>  @note: any neighbor with cost <=3D 0 MUST be ignored
>  in computations */
>  3: optional common.MetricType cost
>  =3D common.default_distance;
>=20
> Note that the Thrift attribute is called "cost" but it's type is =
"MetricType" and it 's default value is "default_distance" 8-)
>=20
> Bottom line: cost and metric are synonyms, we only need neighbor cost =
OR neighbor metric in the YANG (not both). I suggest that we only keep =
cost and get rid of metric. We do need bandwidth as a separate =
attribute.
>=20
> Note: in a later e-mail I will send a rather long list of attributes =
that could be added to the YANG data model. bandwidth-adjusted-cost will =
be one of those additional attributes that I will suggest (see section =
4.3.6. Fabric Bandwidth Balancing in the RIFT spec).
>=20
>> If different source addresses can be used for LIE and TIE sending?
>>=20
>=20
> One thing to consider is that LIEs are always sent on IPv4 *and* IPv6. =
 Flooding packets (not just TIEs, but also TIDEs and TIREs) are sent on =
IPv4 *or* IPv6 but not both.
>=20
> For a given address family, I think that it would be reasonable to =
require that LIEs and flooding traffic *must* be sent on the same source =
address. The reason is that once a neighbor has been discovered by =
virtue of receiving LIEs from a particular address, we want to open up a =
listening socket for that particular neighbor for flooding traffic. That =
flooding socket has the same remote address but potentially a different =
UDP port.
>=20
> My implementation does not actually bind to a remote address, but I =
*could* have chosen to do so:
>=20
> agg_101> show interface if_101_1 sockets
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | Traffic  | Direction | Family | Local Address                | Local =
Port | Remote Address  | Remote Port |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | LIEs     | Receive   | IPv4   | 224.0.0.81                   | 20001 =
     | Any             | Any         |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | LIEs     | Receive   | IPv6   | ff02::a1f7%en0               | 20001 =
     | Any             | Any         |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | LIEs     | Send      | IPv4   | 192.168.178.192              | 63729 =
     | 224.0.0.71      | 20002       |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | LIEs     | Send      | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 63730 =
     | ff02::a1f7%en0  | 20002       |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | Flooding | Receive   | IPv4   | 192.168.178.192              | 20004 =
     | Any             | Any         |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | Flooding | Receive   | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004 =
     | Any             | Any         |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
> | Flooding | Send      | IPv4   | 192.168.178.192              | 54629 =
     | 192.168.178.192 | 20003       |
> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>=20
>=20


--Apple-Mail=_ACF3E322-D145-4049-8D3F-04008A172542
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">I was just =
looking at the YANG data model, and I noticed that it does *not* allow =
different source addresses to be specified, so your question was sort of =
moot.</font><div class=3D""><font face=3D"Avenir-Book" style=3D"font-size:=
 14px;" class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">What it =
*does* allow is different RX addresses to be specified for TIEs and =
flooding traffic. &nbsp;These are receive multicast addresses, so they =
will appear as the destination address on the packet. &nbsp;They are not =
source addresses.</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">=E2=80=94 Bruno<br class=3D""></font><div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Jul =
10, 2020, at 12:36 PM, Bruno Rijsman &lt;<a =
href=3D"mailto:brunorijsman@gmail.com" =
class=3D"">brunorijsman@gmail.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii" =
class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: =
space; line-break: after-white-space;" class=3D""><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">Hi =
Sandy,</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">Thanks for the updated model; the next round of review =
comments will follow shortly.</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Meanwhile, here are the answers to =
your questions:</font></div><div class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div class=3D"zcontentRow"><p class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><b =
class=3D"">And I have two questions:</b></font></p><ol class=3D" =
list-paddingleft-2" style=3D"list-style-type: decimal;"><li class=3D""><p =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><b class=3D"">There is a leaf "cost" in the neighbor =
grouping, is the "metric" duplicated with the =
"cost"?</b></font></p></li></ol></div></div></blockquote><div =
class=3D""><div style=3D"font-family: Avenir-Book;" class=3D""><span =
style=3D"font-size: 14px;" class=3D"">Currently, your YANG datamodel has =
both cost and metric attributes per neighbor (as well as =
bandwidth):</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">+--ro =
neighbor</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; =
&nbsp; +--ro cost? &nbsp; &nbsp; &nbsp;uint32</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; +--ro metric? =
&nbsp; &nbsp;uint32</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; +--ro bandwidth? =
uint32</font></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Most of the text =
in the RIFT spec (including the definition) uses the term "cost" to mean =
the cost of a link to an immediately neighboring node. The term =
"distance" is used to mean the total cost of a path to a remote =
node.</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">The Thrift =
datamodel in the RIFT spec is super inconsistent in its =
terminology:</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" class=3D"">&nbsp;</font><font =
face=3D"Courier New" class=3D"">/** neighbor of a node =
*/</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;struct =
NodeNeighborsTIEElement {</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;/** level of neighbor */</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;1: required common.LevelType =
level;</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;/** <b =
class=3D"">Cost</b> to neighbor.</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;@note: All parallel links to same =
node</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;incur same <b =
class=3D"">cost</b>, in case the neighbor has =
multiple</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;parallel =
links at different cost, the largest distance</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;(highest numerical value) MUST be =
advertised.</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;@note: any =
neighbor with cost &lt;=3D 0 MUST be ignored</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;in computations =
*/</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;3: optional =
common.<b class=3D"">Metric</b>Type <b =
class=3D"">cost</b></font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;=3D common.default_<b =
class=3D"">distance</b>;</font></span></div><div style=3D"font-family: =
Avenir-Book;" class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Note that the =
Thrift attribute is called "cost" but it's type is "MetricType" and it =
's default value is "default_distance" 8-)</span></div><div =
style=3D"font-family: Avenir-Book;" class=3D""><span style=3D"font-size: =
14px;" class=3D""><br class=3D""></span></div><div style=3D"font-family: =
Avenir-Book;" class=3D""><span style=3D"font-size: 14px;" =
class=3D"">Bottom line: cost and metric are synonyms, we only need =
neighbor cost OR neighbor metric in the YANG (not both). I suggest that =
we only keep cost and get rid of metric. We do need bandwidth as a =
separate attribute.</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Note: in a later =
e-mail I will send a rather long list of attributes that could be added =
to the YANG data model. bandwidth-adjusted-cost will be one of those =
additional attributes that I will suggest (see section 4.3.6. Fabric =
Bandwidth Balancing in the RIFT spec).</span></div><div =
style=3D"font-family: Avenir-Book; font-size: 14px;" class=3D""><br =
class=3D""></div></div><blockquote type=3D"cite" class=3D""><div =
class=3D""><div class=3D"zcontentRow"><ol class=3D" list-paddingleft-2" =
style=3D"list-style-type: decimal;" start=3D"2"><li class=3D""><p =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><b class=3D"">If different source addresses can be used for =
LIE and TIE sending?<br =
class=3D""></b></font></p></li></ol></div></div></blockquote></div><div =
class=3D""><font face=3D"Avenir-Book" class=3D""><span style=3D"font-size:=
 14px;" class=3D"">One thing to consider is that LIEs are always sent on =
IPv4 *and* IPv6. &nbsp;Flooding packets (not just TIEs, but also TIDEs =
and TIREs) are sent on IPv4 *or* IPv6 but not =
both.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">For a given =
address family, I think that it would be reasonable to require that LIEs =
and flooding traffic *must* be sent on the same source address. The =
reason is that once a neighbor has been discovered by virtue of =
receiving LIEs from a particular address, we want to open up a listening =
socket for that particular neighbor for flooding traffic. That flooding =
socket has the same remote address but potentially a different UDP =
port.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">My implementation =
does not actually bind to a remote address, but I *could* have chosen to =
do so:</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" class=3D"">agg_101&gt; <b class=3D"">show interface =
if_101_1 sockets</b></font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Traffic&nbsp; | =
Direction | Family | Local Address&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Local Port | Remote Address&nbsp; | Remote Port =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv4 &nbsp; | 224.0.0.81 &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv6 &nbsp; | ff02::a1f7%en0 &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 63729&nbsp; &nbsp; &nbsp; | =
224.0.0.71&nbsp; &nbsp; &nbsp; | 20002 &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | =
63730&nbsp; &nbsp; &nbsp; | ff02::a1f7%en0&nbsp; | 20002 &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | 20004&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004&nbsp; &nbsp; =
&nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Send&nbsp; =
&nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | 54629&nbsp; &nbsp; &nbsp; | 192.168.178.192 | =
20003 &nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div></div><d=
iv class=3D""><font face=3D"Avenir-Book" class=3D""><span =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div></div></div></blockquote></div><br =
class=3D""></div></body></html>=

--Apple-Mail=_ACF3E322-D145-4049-8D3F-04008A172542--


From nobody Fri Jul 10 03:53:49 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 89A4B3A0928 for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:53:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8h6ZK_be7Zbk for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:53:46 -0700 (PDT)
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6C9DB3A0923 for <rift@ietf.org>; Fri, 10 Jul 2020 03:53:46 -0700 (PDT)
Received: by mail-ej1-x633.google.com with SMTP id rk21so5582932ejb.2 for <rift@ietf.org>; Fri, 10 Jul 2020 03:53:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=DrQlIZiu1Ukgydp4hnJMxyieyNuMcbeQbRD1RGKwZNs=; b=OynDxsYWWTIrPDHj8B6fT38L04MPQV6Qv1g5jTY0s02muJCf9WM7K9bAry8kbe9xIf F7Nui6H7g2ZGL9/9o5o57TdLFSjD2dDgj8qFwDgZOXh6OsKajHKR2TWC/qHM4Iozzgds z67Qc50BhZ8pUK7lTFrpt08SfL+k6jg6MaUWt3BfsUC1d2eF+7L0uM3DieH9u+op1LhH tEraoVjpbuVY7dZ68YGPpTwvGkEM61NruX5M1IsSGznbKokQYL57+gI0lMGzlFKQUko4 Wj29+1nk0Xnr6URtcaW0279tE8dfFGPfwlwdoHR5xZ5n3/UKVwcCd+IZIw8MVx3uFN3I M3wg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=DrQlIZiu1Ukgydp4hnJMxyieyNuMcbeQbRD1RGKwZNs=; b=YOcnZKuoyh7EzbjqcuB33R4KWMklnTvgIXINOsIEkLdh5Kj6mzL1uEgggw5eUhe8ZF xcPQfgeM7mVbg4vv1Q/f/6ak/P/XO0u9VIrZDYZ77eRSgD2VHk7uhS36CPfWLJVuHsAE 9VkbZvRk8FpgmRpbV8aEyVV5vcqqJ8+GYZq3FjRT4qYhwL6Uur1FH8hpb052XzeEo7Mr y6zqaMdXq4s1V7SccMF1eMlL316GHPBIUdImbZEfGdS/LiJLgGFdotWszVjm2F33XA5K xQyPBXQgWCTHPFwhzqab9WyEU02sR5K11FYetl7yYyFGIhQ7hjQ1eL4CuNIvMgae7dIp qWrw==
X-Gm-Message-State: AOAM533Ydcp5wlA4iwFftZWcb50RQEHDU2fopj8gYMbQ7Yo8RAP0R8yI tu8ba163UySJQqIAS46WfMk=
X-Google-Smtp-Source: ABdhPJxksUVn0UFglT117NcAJ7HF6RTcqs40IfMq7ZS8+MzdqBxs9GtoCbUcEzE6+evqL2Au5xrBfw==
X-Received: by 2002:a17:906:7709:: with SMTP id q9mr3440128ejm.123.1594378424741;  Fri, 10 Jul 2020 03:53:44 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id s24sm3379485ejv.110.2020.07.10.03.53.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Jul 2020 03:53:43 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <6C69F88A-DBF8-4472-8A76-C712719D39FC@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_07E55B0B-689F-4EC1-B1C0-626679D1A192"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Fri, 10 Jul 2020 12:53:43 +0200
In-Reply-To: <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, 1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com> <202007061506485460169@zte.com.cn> <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com> <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/H1re9PhpTJIKwPyHCQM6ZrCBcdc>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, plsreviewtheupdateofRIFT YANG model
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jul 2020 10:53:49 -0000

--Apple-Mail=_07E55B0B-689F-4EC1-B1C0-626679D1A192
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

One more remark on this topic (hopefully the last one).

Your YANG model currently has a metric attribute on the interface, and =
both a cost and metric attribute on the neighbor:

  +--rw interface* [name]
  |  +--rw metric?          uint32
  |  +--ro neighbor
  |     +--ro cost?         uint32
  |     +--ro metric?       uint32

I suggest that we change it to the following

  +--rw interface* [name]
  |  +--rw cost?            uint32
  |  +--ro neighbor
  |     +--ro cost?         uint32

Note that the interface cost is the cost from us to the neighbor, where =
as the neighbor cost is the cost from the neighbor to us (i.e. the cost =
that the neighbor advertised)

=E2=80=94 Bruno


> On Jul 10, 2020, at 12:40 PM, Bruno Rijsman <brunorijsman@gmail.com> =
wrote:
>=20
> I was just looking at the YANG data model, and I noticed that it does =
*not* allow different source addresses to be specified, so your question =
was sort of moot.
>=20
> What it *does* allow is different RX addresses to be specified for =
TIEs and flooding traffic.  These are receive multicast addresses, so =
they will appear as the destination address on the packet.  They are not =
source addresses.
>=20
> =E2=80=94 Bruno
>=20
>> On Jul 10, 2020, at 12:36 PM, Bruno Rijsman <brunorijsman@gmail.com =
<mailto:brunorijsman@gmail.com>> wrote:
>>=20
>> Hi Sandy,
>>=20
>> Thanks for the updated model; the next round of review comments will =
follow shortly.
>>=20
>> Meanwhile, here are the answers to your questions:
>>> And I have two questions:
>>>=20
>>> There is a leaf "cost" in the neighbor grouping, is the "metric" =
duplicated with the "cost"?
>>>=20
>> Currently, your YANG datamodel has both cost and metric attributes =
per neighbor (as well as bandwidth):
>>=20
>> +--ro neighbor
>>       +--ro cost?      uint32
>>       +--ro metric?    uint32
>>       +--ro bandwidth? uint32
>>=20
>> Most of the text in the RIFT spec (including the definition) uses the =
term "cost" to mean the cost of a link to an immediately neighboring =
node. The term "distance" is used to mean the total cost of a path to a =
remote node.
>>=20
>> The Thrift datamodel in the RIFT spec is super inconsistent in its =
terminology:
>>=20
>>  /** neighbor of a node */
>>  struct NodeNeighborsTIEElement {
>>  /** level of neighbor */
>>  1: required common.LevelType level;
>>  /** Cost to neighbor.
>>  @note: All parallel links to same node
>>  incur same cost, in case the neighbor has multiple
>>  parallel links at different cost, the largest distance
>>  (highest numerical value) MUST be advertised.
>>  @note: any neighbor with cost <=3D 0 MUST be ignored
>>  in computations */
>>  3: optional common.MetricType cost
>>  =3D common.default_distance;
>>=20
>> Note that the Thrift attribute is called "cost" but it's type is =
"MetricType" and it 's default value is "default_distance" 8-)
>>=20
>> Bottom line: cost and metric are synonyms, we only need neighbor cost =
OR neighbor metric in the YANG (not both). I suggest that we only keep =
cost and get rid of metric. We do need bandwidth as a separate =
attribute.
>>=20
>> Note: in a later e-mail I will send a rather long list of attributes =
that could be added to the YANG data model. bandwidth-adjusted-cost will =
be one of those additional attributes that I will suggest (see section =
4.3.6. Fabric Bandwidth Balancing in the RIFT spec).
>>=20
>>> If different source addresses can be used for LIE and TIE sending?
>>>=20
>>=20
>> One thing to consider is that LIEs are always sent on IPv4 *and* =
IPv6.  Flooding packets (not just TIEs, but also TIDEs and TIREs) are =
sent on IPv4 *or* IPv6 but not both.
>>=20
>> For a given address family, I think that it would be reasonable to =
require that LIEs and flooding traffic *must* be sent on the same source =
address. The reason is that once a neighbor has been discovered by =
virtue of receiving LIEs from a particular address, we want to open up a =
listening socket for that particular neighbor for flooding traffic. That =
flooding socket has the same remote address but potentially a different =
UDP port.
>>=20
>> My implementation does not actually bind to a remote address, but I =
*could* have chosen to do so:
>>=20
>> agg_101> show interface if_101_1 sockets
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | Traffic  | Direction | Family | Local Address                | =
Local Port | Remote Address  | Remote Port |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | LIEs     | Receive   | IPv4   | 224.0.0.81                   | =
20001      | Any             | Any         |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | LIEs     | Receive   | IPv6   | ff02::a1f7%en0               | =
20001      | Any             | Any         |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | LIEs     | Send      | IPv4   | 192.168.178.192              | =
63729      | 224.0.0.71      | 20002       |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | LIEs     | Send      | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | =
63730      | ff02::a1f7%en0  | 20002       |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | Flooding | Receive   | IPv4   | 192.168.178.192              | =
20004      | Any             | Any         |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | Flooding | Receive   | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | =
20004      | Any             | Any         |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>> | Flooding | Send      | IPv4   | 192.168.178.192              | =
54629      | 192.168.178.192 | 20003       |
>> =
+----------+-----------+--------+------------------------------+----------=
--+-----------------+-------------+
>>=20
>>=20
>=20


--Apple-Mail=_07E55B0B-689F-4EC1-B1C0-626679D1A192
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">One more =
remark on this topic (hopefully the last one).</font><div class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Your YANG model currently has a =
metric attribute on the interface, and both a cost and metric attribute =
on the neighbor:</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><div class=3D""><font face=3D"Courier New" class=3D"">&nbsp; =
+--rw interface* [name]</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; | &nbsp;+--rw metric? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; | &nbsp;+--ro neighbor</font></div><div class=3D""><font=
 face=3D"Courier New" class=3D"">&nbsp; | &nbsp; &nbsp; +--ro cost? =
&nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; | &nbsp; &nbsp; +--ro metric? =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">I suggest that we change it to the =
following</font></div><div class=3D""><br class=3D""></div><div =
class=3D""><div class=3D""><font face=3D"Courier New" class=3D"">&nbsp; =
+--rw interface* [name]</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; | &nbsp;+--rw cost? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; | &nbsp;+--ro neighbor</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; | &nbsp; &nbsp; =
+--ro cost? &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><br class=3D""></div></div><div class=3D""><span =
style=3D"font-family: Avenir-Book; font-size: 14px;" class=3D"">Note =
that the interface cost is the cost from us to the neighbor, where as =
the neighbor cost is the cost from the neighbor to us (i.e. the cost =
that the neighbor advertised)</span></div><div class=3D""><span =
style=3D"font-family: Avenir-Book; font-size: 14px;" class=3D""><br =
class=3D""></span></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">=E2=80=94 =
Bruno</span></font></div><div class=3D""><br class=3D""></div><div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Jul =
10, 2020, at 12:40 PM, Bruno Rijsman &lt;<a =
href=3D"mailto:brunorijsman@gmail.com" =
class=3D"">brunorijsman@gmail.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8" =
class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: =
space; line-break: after-white-space;" class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">I was just =
looking at the YANG data model, and I noticed that it does *not* allow =
different source addresses to be specified, so your question was sort of =
moot.</font><div class=3D""><font face=3D"Avenir-Book" style=3D"font-size:=
 14px;" class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">What it =
*does* allow is different RX addresses to be specified for TIEs and =
flooding traffic. &nbsp;These are receive multicast addresses, so they =
will appear as the destination address on the packet. &nbsp;They are not =
source addresses.</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">=E2=80=94 Bruno<br class=3D""></font><div class=3D""><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Jul =
10, 2020, at 12:36 PM, Bruno Rijsman &lt;<a =
href=3D"mailto:brunorijsman@gmail.com" =
class=3D"">brunorijsman@gmail.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii" =
class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: =
space; line-break: after-white-space;" class=3D""><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">Hi =
Sandy,</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">Thanks for the updated model; the next round of review =
comments will follow shortly.</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Meanwhile, here are the answers to =
your questions:</font></div><div class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div class=3D"zcontentRow"><p class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><b =
class=3D"">And I have two questions:</b></font></p><ol class=3D" =
list-paddingleft-2" style=3D"list-style-type: decimal;"><li class=3D""><p =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><b class=3D"">There is a leaf "cost" in the neighbor =
grouping, is the "metric" duplicated with the =
"cost"?</b></font></p></li></ol></div></div></blockquote><div =
class=3D""><div style=3D"font-family: Avenir-Book;" class=3D""><span =
style=3D"font-size: 14px;" class=3D"">Currently, your YANG datamodel has =
both cost and metric attributes per neighbor (as well as =
bandwidth):</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">+--ro =
neighbor</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; =
&nbsp; +--ro cost? &nbsp; &nbsp; &nbsp;uint32</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; +--ro metric? =
&nbsp; &nbsp;uint32</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; +--ro bandwidth? =
uint32</font></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Most of the text =
in the RIFT spec (including the definition) uses the term "cost" to mean =
the cost of a link to an immediately neighboring node. The term =
"distance" is used to mean the total cost of a path to a remote =
node.</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">The Thrift =
datamodel in the RIFT spec is super inconsistent in its =
terminology:</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" class=3D"">&nbsp;</font><font =
face=3D"Courier New" class=3D"">/** neighbor of a node =
*/</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;struct =
NodeNeighborsTIEElement {</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;/** level of neighbor */</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;1: required common.LevelType =
level;</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;/** <b =
class=3D"">Cost</b> to neighbor.</font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;@note: All parallel links to same =
node</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;incur same <b =
class=3D"">cost</b>, in case the neighbor has =
multiple</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;parallel =
links at different cost, the largest distance</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;(highest numerical value) MUST be =
advertised.</font></span></div><div class=3D""><span style=3D"font-size: =
14px;" class=3D""><font face=3D"Courier New" class=3D"">&nbsp;@note: any =
neighbor with cost &lt;=3D 0 MUST be ignored</font></span></div><div =
class=3D""><span style=3D"font-size: 14px;" class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp;in computations =
*/</font></span></div><div class=3D""><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp;3: optional =
common.<b class=3D"">Metric</b>Type <b =
class=3D"">cost</b></font></span></div><div class=3D""><span =
style=3D"font-size: 14px;" class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp;=3D common.default_<b =
class=3D"">distance</b>;</font></span></div><div style=3D"font-family: =
Avenir-Book;" class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Note that the =
Thrift attribute is called "cost" but it's type is "MetricType" and it =
's default value is "default_distance" 8-)</span></div><div =
style=3D"font-family: Avenir-Book;" class=3D""><span style=3D"font-size: =
14px;" class=3D""><br class=3D""></span></div><div style=3D"font-family: =
Avenir-Book;" class=3D""><span style=3D"font-size: 14px;" =
class=3D"">Bottom line: cost and metric are synonyms, we only need =
neighbor cost OR neighbor metric in the YANG (not both). I suggest that =
we only keep cost and get rid of metric. We do need bandwidth as a =
separate attribute.</span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></div><div style=3D"font-family: Avenir-Book;" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">Note: in a later =
e-mail I will send a rather long list of attributes that could be added =
to the YANG data model. bandwidth-adjusted-cost will be one of those =
additional attributes that I will suggest (see section 4.3.6. Fabric =
Bandwidth Balancing in the RIFT spec).</span></div><div =
style=3D"font-family: Avenir-Book; font-size: 14px;" class=3D""><br =
class=3D""></div></div><blockquote type=3D"cite" class=3D""><div =
class=3D""><div class=3D"zcontentRow"><ol class=3D" list-paddingleft-2" =
style=3D"list-style-type: decimal;" start=3D"2"><li class=3D""><p =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><b class=3D"">If different source addresses can be used for =
LIE and TIE sending?<br =
class=3D""></b></font></p></li></ol></div></div></blockquote></div><div =
class=3D""><font face=3D"Avenir-Book" class=3D""><span style=3D"font-size:=
 14px;" class=3D"">One thing to consider is that LIEs are always sent on =
IPv4 *and* IPv6. &nbsp;Flooding packets (not just TIEs, but also TIDEs =
and TIREs) are sent on IPv4 *or* IPv6 but not =
both.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">For a given =
address family, I think that it would be reasonable to require that LIEs =
and flooding traffic *must* be sent on the same source address. The =
reason is that once a neighbor has been discovered by virtue of =
receiving LIEs from a particular address, we want to open up a listening =
socket for that particular neighbor for flooding traffic. That flooding =
socket has the same remote address but potentially a different UDP =
port.</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D"">My implementation =
does not actually bind to a remote address, but I *could* have chosen to =
do so:</span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" class=3D"">agg_101&gt; <b class=3D"">show interface =
if_101_1 sockets</b></font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Traffic&nbsp; | =
Direction | Family | Local Address&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Local Port | Remote Address&nbsp; | Remote Port =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv4 &nbsp; | 224.0.0.81 &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Receive &nbsp; | IPv6 &nbsp; | ff02::a1f7%en0 &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | 20001&nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 63729&nbsp; &nbsp; &nbsp; | =
224.0.0.71&nbsp; &nbsp; &nbsp; | 20002 &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| LIEs &nbsp; &nbsp; | =
Send&nbsp; &nbsp; &nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | =
63730&nbsp; &nbsp; &nbsp; | ff02::a1f7%en0&nbsp; | 20002 &nbsp; &nbsp; =
&nbsp; |</font></span></div><div style=3D"margin: 0px; font-stretch: =
normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | 20004&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></span></div><div style=3D"margin: 0px; font-stretch: normal; =
line-height: normal;" class=3D""><span style=3D"font-variant-ligatures: =
no-common-ligatures" class=3D""><font face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Receive =
&nbsp; | IPv6 &nbsp; | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004&nbsp; &nbsp; =
&nbsp; | Any &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Any &nbsp; =
&nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: 0px; =
font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div><div =
style=3D"margin: 0px; font-stretch: normal; line-height: normal;" =
class=3D""><span style=3D"font-variant-ligatures: no-common-ligatures" =
class=3D""><font face=3D"Courier New" class=3D"">| Flooding | Send&nbsp; =
&nbsp; &nbsp; | IPv4 &nbsp; | 192.168.178.192&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | 54629&nbsp; &nbsp; &nbsp; | 192.168.178.192 | =
20003 &nbsp; &nbsp; &nbsp; |</font></span></div><div style=3D"margin: =
0px; font-stretch: normal; line-height: normal;" class=3D""><span =
style=3D"font-variant-ligatures: no-common-ligatures;" class=3D""><font =
face=3D"Courier New" =
class=3D"">+----------+-----------+--------+------------------------------=
+------------+-----------------+-------------+</font></span></div></div><d=
iv class=3D""><font face=3D"Avenir-Book" class=3D""><span =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font face=3D"Avenir-Book" =
class=3D""><span style=3D"font-size: 14px;" class=3D""><br =
class=3D""></span></font></div></div></div></blockquote></div><br =
class=3D""></div></div></div></blockquote></div><br =
class=3D""></div></body></html>=

--Apple-Mail=_07E55B0B-689F-4EC1-B1C0-626679D1A192--


From nobody Fri Jul 10 04:34:00 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 44D873A09D8 for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 04:33:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MisFLVNZqLoT for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 04:33:56 -0700 (PDT)
Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B5523A09D6 for <rift@ietf.org>; Fri, 10 Jul 2020 04:33:55 -0700 (PDT)
Received: by mail-ed1-x52b.google.com with SMTP id z17so4378036edr.9 for <rift@ietf.org>; Fri, 10 Jul 2020 04:33:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=NgwoMzam6SxrO0JA6zJbk1qW+dxoWhtv8GwFNT67gHw=; b=qAP7sipArJxTCYh1IF8j1flIymvfTdPa8oFXIh2R3mOe4XXHdrKs0FPQNpZJTU61Fo gLQfpFUrYZv4NwTdQN/BywEytsvKWL8KyWLfBll0AUYZJVUqUThwhuq4XR/Vkem1eCPI fBmKlyX00EaanooxcZw8sNjsM4QhABjQ+Qlh2wiu/M/xHBiQ5OtPI3rJOp4nypGnUvYF xR2Kje2Ny202hWzW8YhGq29I6I4jCG6H1ezgMR9iZSk4ZgNn6N+S62AUawZDFMFGQGJy TQsorJjwLQJ0aQba8wSNhjidiMh9bKrcKYfEQNTGdKe0zkv+uyAgVjiOMMFlBwUz/OFC L+Uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=NgwoMzam6SxrO0JA6zJbk1qW+dxoWhtv8GwFNT67gHw=; b=N/R84MVc8wJwtRxg4376fM6ngHcNXgE8jAm+9vzLtDax9i1sctfW2xI28QR1h6HO4u tAUx3cpSciGUMzFCY34J5XyNSLRussKBqrrQY9nNvv/1XmlefrYY3LLRgb3zg3C7sj54 DMV+MIH/BQCLgq6Kxww2rdkiGbForYAHo+q5WpU8B6YatA8XgIAk154J1Wlqx5WNtCn8 iH6GTknbtoC7Katgh2MIqSt3xnO8L8d8lgemm+j7NZKYA5jh8ERMxazfKgfSedZ8Kbh2 5Zhzb/lvNJbZ0DaOv4tQ42jF2tvgozHHGWm5vJ9XBf76ugRW6pcMohSr6UwA9DnXoonx 24Yw==
X-Gm-Message-State: AOAM533x0vuugoZqETtcQfXp08ksSvZswtEfk+FQr3CLlO9XuRkZJv5u OSqqQTWhtV4NUjRbkSakyki+itwqvP0=
X-Google-Smtp-Source: ABdhPJyS/DdqZclRWMN6Z9VYhOUJ+5eDZfj/k2kgHC8P8GrvHG2Uhv2TXfL/jizmekwuUbWdQI5+HQ==
X-Received: by 2002:aa7:de05:: with SMTP id h5mr74898568edv.275.1594380834129;  Fri, 10 Jul 2020 04:33:54 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id p9sm3513975ejd.50.2020.07.10.04.33.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Jul 2020 04:33:53 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <E3AA4708-C8AC-4A22-8B7A-0CD6CD1945DE@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_6AF6465B-7A6F-45BF-9FBD-EF780D9E29DB"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Fri, 10 Jul 2020 13:33:52 +0200
In-Reply-To: <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, 1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com> <202007061506485460169@zte.com.cn> <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com> <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/Zrda2mLVTqm56cfctGHUK0-4ayo>
Subject: [Rift] RIFT YANG model review, iteration rift-yang-tree200706
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jul 2020 11:33:59 -0000

--Apple-Mail=_6AF6465B-7A6F-45BF-9FBD-EF780D9E29DB
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Sandy,

Here is the next review iteration (for rift-yang-tree200706).

Once again, there is more reviewing to be done, but I am talking it step =
by step in bite-sized chunks.

=E2=80=94 Bruno

module: ietf-rift
  augment =
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
    +--rw rift!
       +--rw node
          +--rw name?                        string

Node needs to be a list (indexed by name); in the case of multi-instance =
RIFT there can be more than one RIFT node per RIFT engine. That also =
implies that name is the key and hence mandatory. This brings us to:

+--rw node* [name]
   +--rw name   string


          +--ro level?                       level
          +--rw system-id                    system-id
          +--rw pod?                         uint32
          +--rw configured-level?            level
          +--rw overload?                    boolean
          +--ro protocol-minor-version       uint16
          +--ro hierarchy-indications?       enumeration
          +--rw flood-reduction?             boolean
          +--rw nonce-increasing-interval?   uint16
          +--rw maximum-nonce-delta?         uint8 {nonce-delta-adjust}?
          +--rw rx-lie-multicast-address
          |  +--rw ipv4?   inet:ipv4-address
          |  +--rw ipv6?   inet:ipv6-address
          +--rw tx-lie-multicast-address
          |  +--rw ipv4?   inet:ipv4-address
          |  +--rw ipv6?   inet:ipv6-address
          +--rw lie-tx-port?                 inet:port-number
          +--rw global-link-capabilities
          |  +--rw bfd?                     boolean
          |  +--rw v4-forwarding-capable?   boolean
          +--rw rx-flood-port?               inet:port-number
          +--rw holdtime?                    =
rt-types:timer-value-seconds16
          +--rw tide-generation-interval?    =
rt-types:timer-value-seconds16
          +--rw tie-security-key-id?         uint32
          +--rw interface* [name]
          |  +--ro local-link-id?                  linkid-type

We should be consistent. Whenever an attribute foo is both advertised to =
a neighbor vs receive from a neighbor, either do (a) or (b) or (c) or =
(d) below. The current YANG model does a mixture of all of these:
(a) Call it foo under interface and also foo (same name) under neighbor =
(e.g. interface cost vs neighbor cost). The context (interface vs =
neighbor) determines whether it is local/sent/advertised vs =
remote/received.
(b) Call it advertised-foo under interface and received-foo under =
neighbor (e.g. advertised-lie-tie-addresses vs =
received-lie-tie-addresses)
(c) Call it local-foo under interface and remote-foo under neighbor =
(e.g. local-link-id vs remote-link-id).
(d) Nest foo in advertised-in-lies for the interface, and nest foo in =
received-in-lies for the neighbor (e.g. interface advertised-in-lies =
you-are-flood-repeater vs neighbor received-in-lies =
you-are-flood-repeater)

I prefer (a) but I could live with (b) or (c) or (d) as well, as long as =
we are consistent. For example, if we pick (a) you would remove local- =
from local-link-id.

          |  +--rw name                            if:interface-ref
          |  +--rw metric?                         uint32

Rename metric to cost, as discussed in separate e-mail.

          |  +--rw advertised-lie-tie-addresses
          |  |  +--ro rx-lie-source-address
          |  |  |  +--ro ipv4?   inet:ipv4-address
          |  |  |  +--ro ipv6?   inet:ipv6-address
          |  |  +--ro flooding-source-address
          |  |     +--ro ipv4?   inet:ipv4-address
          |  |     +--ro ipv6?   inet:ipv6-address
          |  +--ro direction-type?                 enumeration
          |  +--ro was-the-last-lie-accepted?      boolean

I suggest adding an optional last-lie-reject-reason (string) that =
explains why the LIE was rejected if was-the-last-lie-accepted is false.

          |  +--rw advertised-in-lies

YANG question: does it make sense to have a read-write container with =
only read-only attributes?

          |  |  +--ro you-are-flood-repeater?        boolean
          |  |  +--ro not-a-ztp-offer?               boolean
          |  |  +--ro you-are-sending-too-quickly?   boolean
          |  +--rw link-capabilities
          |  |  +--rw bfd?                     boolean
          |  |  +--rw v4-forwarding-capable?   boolean
          |  +--rw state?                          enumeration

State should be read-only and mandatory. The adjacency (and hence the =
interface) always has an operational (not a configured) state: one-way, =
two-way, three-way, or multiple-neighbors.

          |  +--ro neighbor

Neighbor should be optional. In state ONE_WAY there is no neighbor.

          |     +--ro name?                         string
          |     +--ro level?                        level
          |     +--ro system-id                     system-id
          |     +--ro pod?                          uint32
          |     +--ro protocol-version?             uint16
          |     +--ro address-families
          |     |  +--ro address-family* [address-family]
          |     |     +--ro address-family    =
iana-rt-types:address-family
          |     +--ro received-lie-tie-addresses
          |     |  +--ro rx-lie-source-address
          |     |  |  +--ro ipv4?   inet:ipv4-address
          |     |  |  +--ro ipv6?   inet:ipv6-address
          |     |  +--ro flooding-source-address
          |     |     +--ro ipv4?   inet:ipv4-address
          |     |     +--ro ipv6?   inet:ipv6-address
          |     +--ro remote-id?                    uint32
          |     +--ro cost?                         uint32
          |     +--ro metric?                       uint32
          |     +--ro bandwidth?                    uint32
          |     +--ro flood-reduction?              boolean
          |     +--ro received-link-capabilities
          |     |  +--ro bfd?                     boolean
          |     |  +--ro v4-forwarding-capable?   boolean
          |     +--ro received-from-lies

If we end up picking (d) in the comment near the top, rename =
received-from-lies =3D> received-in-lies

          |     |  +--ro you-are-flood-repeater?        boolean
          |     |  +--ro not-a-ztp-offer?               boolean
          |     |  +--ro you-are-sending-too-quickly?   boolean
          |     +--ro tx-flood-port?                inet:port-number
          |     +--ro bfd-up?                       boolean
          |     +--ro outer-security-key-id?        uint8
          +--ro miscabled-links*             linkid-type
          +--rw (algorithm-type)?
          |  +--:(spf)
          |  +--:(all-path)

I don't know this :(foo) syntax. What does it mean?

          +--ro hal?                         level
          +--ro vol-list
          |  +--ro vol* [system-id]
          |     +--ro offered-level?   level
          |     +--ro name?            string
          |     +--ro level?           level
          |     +--ro system-id        system-id
          |     +--ro pod?             uint32


There is one sent offer per neighbor, and one received offer per =
neighbor (see example output of RIFT-Python "show node" below)

At this point in the YANG model we are already in the neighbor =
container. This implies that=20
(a) We only need to keep track of one single sent offer and one received =
offer (not a list of offers indexed by system-id).
(b) We already know the system-id of the neighbor (it is an attribute of =
the neighbor container)
(c) For both sent and received offers, we need to keep track of the =
level and not-a-ztp-offer
(d) FOr the received offer, we additionally need to keep track of =
whether it is the best offer (in the Python implementation I keep track =
of some additional information for easier debugging, e.g. whether or not =
it was removed from consideration and if so why, once again see output =
below).

All of this leads to the following possible YANG model:

          +--rw interface* [name]
          |  +--ro local-link-id?                    linkid-type
          |  +--rw name                              if:interface-ref
          |  +--ro neighbor
          |     +--ro name?                           string
          |     +--ro sent-offer
          |     |  +--ro level                        level
          |     |  +--ro not-a-ztp-offer              boolean
          |     +--ro received-offer
          |     |  +--ro level                        level
          |     |  +--ro not-a-ztp-offer              boolean
          |     |  +--ro best                         boolean
          |     |  +--ro removed-from-consideration   boolean
          |     |  +--ro removal-reason?              string


agg_101> show node
Node:
+---------------------------------------+------------------+
| Name                                  | agg_101          |
[...]
+---------------------------------------+------------------+

Received Offers:
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+
| Interface   | System ID | Level | Not A ZTP Offer | State     | Best  =
| Best 3-Way | Removed | Removed Reason |
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+
| if_101_1    | 1         | 24    | False           | THREE_WAY | True  =
| True       | False   |                |
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+
| if_101_1001 | 1001      | 0     | False           | THREE_WAY | False =
| False      | True    | Level is leaf  |
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+
| if_101_1002 | 1002      | 0     | False           | THREE_WAY | False =
| False      | True    | Level is leaf  |
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+
| if_101_2    | 2         | 24    | False           | THREE_WAY | False =
| False      | False   |                |
=
+-------------+-----------+-------+-----------------+-----------+-------+-=
-----------+---------+----------------+

Sent Offers:
+-------------+-----------+-------+-----------------+-----------+
| Interface   | System ID | Level | Not A ZTP Offer | State     |
+-------------+-----------+-------+-----------------+-----------+
| if_101_1    | 101       | 23    | True            | THREE_WAY |
+-------------+-----------+-------+-----------------+-----------+
| if_101_1001 | 101       | 23    | False           | THREE_WAY |
+-------------+-----------+-------+-----------------+-----------+
| if_101_1002 | 101       | 23    | False           | THREE_WAY |
+-------------+-----------+-------+-----------------+-----------+
| if_101_2    | 101       | 23    | True            | THREE_WAY |
+-------------+-----------+-------+-----------------+-----------+

(Reviewed until here in this review iteration).

          +--rw instance-label?              uint32
          +--ro database
          |  +--ro ties* [direction-type originator tie-type tie-number]
          |     +--ro direction-type          enumeration
          |     +--ro originator              system-id
          |     +--ro tie-type                enumeration
          |     +--ro tie-number              uint32
          |     +--ro seq?                    uint64
          |     +--ro origination-time?       uint32
          |     +--ro origination-lifetime?   uint32
          |     +--ro node
          |     |  +--ro name?              string
          |     |  +--ro level?             level
          |     |  +--ro system-id          system-id
          |     |  +--ro pod?               uint32
          |     |  +--ro flood-reduction?   boolean
          |     |  +--ro overload?          boolean
          |     |  +--ro startup-time?      uint64
          |     |  +--ro neighbors* [system-id]
          |     |  |  +--ro name?                         string
          |     |  |  +--ro level?                        level
          |     |  |  +--ro system-id                     system-id
          |     |  |  +--ro pod?                          uint32
          |     |  |  +--ro address-families
          |     |  |  |  +--ro address-family* [address-family]
          |     |  |  |     +--ro address-family    =
iana-rt-types:address-family
          |     |  |  +--ro received-lie-tie-addresses
          |     |  |  |  +--ro rx-lie-source-address
          |     |  |  |  |  +--ro ipv4?   inet:ipv4-address
          |     |  |  |  |  +--ro ipv6?   inet:ipv6-address
          |     |  |  |  +--ro flooding-source-address
          |     |  |  |     +--ro ipv4?   inet:ipv4-address
          |     |  |  |     +--ro ipv6?   inet:ipv6-address
          |     |  |  +--ro remote-id?                    uint32
          |     |  |  +--ro cost?                         uint32
          |     |  |  +--ro metric?                       uint32
          |     |  |  +--ro bandwidth?                    uint32
          |     |  |  +--ro flood-reduction?              boolean
          |     |  |  +--ro received-link-capabilities
          |     |  |  |  +--ro bfd?                     boolean
          |     |  |  |  +--ro v4-forwarding-capable?   boolean
          |     |  |  +--ro received-from-lies
          |     |  |  |  +--ro you-are-flood-repeater?        boolean
          |     |  |  |  +--ro not-a-ztp-offer?               boolean
          |     |  |  |  +--ro you-are-sending-too-quickly?   boolean
          |     |  |  +--ro tx-flood-port?                =
inet:port-number
          |     |  |  +--ro bfd-up?                       boolean
          |     |  |  +--ro outer-security-key-id?        uint8
          |     |  +--ro miscabled-links*   linkid-type
          |     +--ro prefix
          |        +--ro prefix?              inet:ip-prefix
          |        +--ro (type)?
          |        |  +--:(prefix)
          |        |  +--:(positive-disaggregation)
          |        |  +--:(negative-disaggregation)
          |        |  +--:(external)
          |        |  +--:(positive-external-disaggregation)
          |        |  +--:(pgp)
          |        +--ro metric?              uint32
          |        +--ro tags*                uint64
          |        +--ro monotonic-clock
          |        |  +--ro prefix-sequence-type
          |        |     +--ro timestamp         =
ieee802-1as-timestamp-type
          |        |     +--ro transaction-id?   uint8
          |        +--ro loopback?            boolean
          |        +--ro directly-attached?   boolean
          |        +--ro from-link?           linkid-type
          +--ro kv-store
             +--ro kvs* [kvs-index]
                +--ro kvs-index    uint32
                +--ro kvs-tie
                   +--ro direction-type?         enumeration
                   +--ro originator?             system-id
                   +--ro tie-type?               enumeration
                   +--ro tie-number?             uint32
                   +--ro seq?                    uint64
                   +--ro origination-time?       uint32
                   +--ro origination-lifetime?   uint32
                   +--ro key-value
                      +--ro key?     uint16
                      +--ro value?   uint32

  notifications:
    +---n error-set
       +--ro tie-level-error
       |  +--ro direction-type?         enumeration
       |  +--ro originator?             system-id
       |  +--ro tie-type?               enumeration
       |  +--ro tie-number?             uint32
       |  +--ro seq?                    uint64
       |  +--ro origination-time?       uint32
       |  +--ro origination-lifetime?   uint32
       +--ro neighbor-error
          +--ro neighbor* [system-id]
             +--ro name?                         string
             +--ro level?                        level
             +--ro system-id                     system-id
             +--ro pod?                          uint32
             +--ro protocol-version?             uint16
             +--ro address-families
             |  +--ro address-family* [address-family]
             |     +--ro address-family    iana-rt-types:address-family
             +--ro received-lie-tie-addresses
             |  +--ro rx-lie-source-address
             |  |  +--ro ipv4?   inet:ipv4-address
             |  |  +--ro ipv6?   inet:ipv6-address
             |  +--ro flooding-source-address
             |     +--ro ipv4?   inet:ipv4-address
             |     +--ro ipv6?   inet:ipv6-address
             +--ro remote-id?                    uint32
             +--ro cost?                         uint32
             +--ro metric?                       uint32
             +--ro bandwidth?                    uint32
             +--ro flood-reduction?              boolean
             +--ro received-link-capabilities
             |  +--ro bfd?                     boolean
             |  +--ro v4-forwarding-capable?   boolean
             +--ro received-from-lies
             |  +--ro you-are-flood-repeater?        boolean
             |  +--ro not-a-ztp-offer?               boolean
             |  +--ro you-are-sending-too-quickly?   boolean
             +--ro tx-flood-port?                inet:port-number
             +--ro bfd-up?                       boolean
             +--ro outer-security-key-id?        uint8



--Apple-Mail=_6AF6465B-7A6F-45BF-9FBD-EF780D9E29DB
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">Hi Sandy,</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Here is the next review iteration =
(for&nbsp;</font><font face=3D"Avenir-Book" class=3D""><span =
style=3D"font-size: 14px;" =
class=3D"">rift-yang-tree200706).</span></font></div><div class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Once again, there is more =
reviewing to be done, but I am talking it step by step in bite-sized =
chunks.</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" class=3D""><span style=3D"font-size:=
 14px;" class=3D"">=E2=80=94 Bruno</span></font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">module: ietf-rift</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; augment =
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:</font></=
div><div class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; =
+--rw rift!</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--rw node</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Node needs to be a list (indexed =
by name); in the case of multi-instance RIFT there can be more than one =
RIFT node per RIFT engine. That also implies that name is the key and =
hence mandatory. This brings us to:</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">+--rw node* =
[name]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp;+--rw name &nbsp; string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; level</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw system-id =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw pod? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw configured-level? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw overload? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
protocol-minor-version &nbsp; &nbsp; &nbsp; uint16</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--ro hierarchy-indications? &nbsp; &nbsp; &nbsp; =
enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw flood-reduction? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw nonce-increasing-interval? &nbsp; =
uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw maximum-nonce-delta? =
&nbsp; &nbsp; &nbsp; &nbsp; uint8 {nonce-delta-adjust}?</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw rx-lie-multicast-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--rw ipv4? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
tx-lie-multicast-address</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw ipv4? =
&nbsp; inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw ipv6? =
&nbsp; inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw lie-tx-port? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
inet:port-number</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
global-link-capabilities</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw bfd? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw =
v4-forwarding-capable? &nbsp; boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
rx-flood-port? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
inet:port-number</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw holdtime? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;rt-types:timer-value-seconds16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
tide-generation-interval? &nbsp; =
&nbsp;rt-types:timer-value-seconds16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
tie-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw interface* [name]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--ro local-link-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;linkid-type</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">We should be consistent. Whenever an attribute foo is both =
advertised to a neighbor vs receive from a neighbor, either do (a) or =
(b) or (c) or (d) below. The current YANG model does a mixture of all of =
these:</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">(a) Call it foo under interface =
and also foo (same name) under neighbor (e.g. interface cost vs neighbor =
cost). The context (interface vs neighbor) determines whether it is =
local/sent/advertised vs remote/received.</font></div><div =
class=3D""><span style=3D"font-size: 14px; font-family: Avenir-Book;" =
class=3D"">(b) Call it advertised-foo under interface and received-foo =
under neighbor (e.g. advertised-lie-tie-addresses vs =
received-lie-tie-addresses)</span></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">(c) Call it =
local-foo under interface and remote-foo under neighbor (e.g. =
local-link-id vs remote-link-id).</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">(d) Nest foo =
in advertised-in-lies for the interface, and nest foo in =
received-in-lies for the neighbor (e.g. interface advertised-in-lies =
you-are-flood-repeater vs neighbor received-in-lies =
you-are-flood-repeater)</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">I prefer (a) but I could live with =
(b) or (c) or (d) as well, as long as we are consistent. For example, if =
we pick (a) you would remove local- from local-link-id.</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw name &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;if:interface-ref</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--rw metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">Rename metric to cost, as =
discussed in separate e-mail.</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--rw =
advertised-lie-tie-addresses</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;| &nbsp;+--ro rx-lie-source-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro ipv4? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;| =
&nbsp;+--ro ipv6? &nbsp; inet:ipv6-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
flooding-source-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp; =
&nbsp; +--ro ipv4? &nbsp; inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp; &nbsp; +--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
direction-type? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
was-the-last-lie-accepted? &nbsp; &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">I suggest adding an optional =
last-lie-reject-reason (string) that explains why the LIE was rejected =
if was-the-last-lie-accepted is false.</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--rw advertised-in-lies</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">YANG question: does it make sense =
to have a read-write container with only read-only =
attributes?</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;| &nbsp;+--ro you-are-flood-repeater? &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
not-a-ztp-offer? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
you-are-sending-too-quickly? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--rw link-capabilities</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--rw bfd? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--rw v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw state? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">State should be read-only and mandatory. The adjacency (and =
hence the interface) always has an operational (not a configured) state: =
one-way, two-way, three-way, or multiple-neighbors.</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
neighbor</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">Neighbor =
should be optional. In state ONE_WAY there is no =
neighbor.</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro level? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
system-id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro pod? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro protocol-version? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
address-families</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro address-family* [address-family]</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp; &nbsp; +--ro address-family =
&nbsp; &nbsp;iana-rt-types:address-family</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
received-lie-tie-addresses</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro rx-lie-source-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro ipv4? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro ipv6? &nbsp; inet:ipv6-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro =
flooding-source-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro ipv4? &nbsp; inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp; &nbsp; +--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
remote-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
cost? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro bandwidth? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro flood-reduction? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
received-link-capabilities</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro v4-forwarding-capable? =
&nbsp; boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
received-from-lies</font></div><div class=3D""><font face=3D"Courier =
New" class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">If we end up =
picking (d) in the comment near the top, rename received-from-lies =3D&gt;=
 received-in-lies</font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro you-are-flood-repeater? &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro not-a-ztp-offer? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro you-are-sending-too-quickly? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro tx-flood-port? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inet:port-number</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro bfd-up? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
outer-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp;uint8</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--ro miscabled-links* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; linkid-type</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw =
(algorithm-type)?</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--:(spf)</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--:(all-path)</font></div><div class=3D""><font face=3D"Courier =
New" class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">I don't know =
this :(foo) syntax. What does it mean?</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--ro hal? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--ro vol-list</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp;+--ro vol* [system-id]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro offered-level? &nbsp; level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro name? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;string</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; level</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro system-id &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro pod? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">There is one =
sent offer per neighbor, and one received offer per neighbor (see =
example output of RIFT-Python "show node" below)</font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">At this point =
in the YANG model we are already in the neighbor container. This implies =
that&nbsp;</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">(a) We only need to keep track of =
one single sent offer and one received offer (not a list of offers =
indexed by system-id).</font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">(b) We =
already know the system-id of the neighbor (it is an attribute of the =
neighbor container)</font></div><div class=3D""><font face=3D"Avenir-Book"=
 style=3D"font-size: 14px;" class=3D"">(c) For both sent and received =
offers, we need to keep track of the level and =
not-a-ztp-offer</font></div><div class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">(d) FOr the received offer, we =
additionally need to keep track of whether it is the best offer (in the =
Python implementation I keep track of some additional information for =
easier debugging, e.g. whether or not it was removed from consideration =
and if so why, once again see output below).</font></div><div =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">All of this =
leads to the following possible YANG model:</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--rw interface* =
[name]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro =
local-link-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;linkid-type</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--rw name =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if:interface-ref</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp;+--ro neighbor</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; +--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro sent-offer</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro level &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro not-a-ztp-offer &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
received-offer</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro level &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro not-a-ztp-offer &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro best &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro removed-from-consideration &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro removal-reason? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D""><br class=3D""></font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">agg_101&gt; show node</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">Node:</font></div><div =
class=3D""><font face=3D"Courier New" =
class=3D"">+---------------------------------------+------------------+</f=
ont></div><div class=3D""><font face=3D"Courier New" class=3D"">| Name =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| agg_101 &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;|</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">[...]</font></div><div class=3D""><font face=3D"Courier =
New" =
class=3D"">+---------------------------------------+------------------+</f=
ont></div><div class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">Received Offers:</font></div><div class=3D""><font =
face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">| Interface &nbsp; | =
System ID | Level | Not A ZTP Offer | State &nbsp; &nbsp; | Best &nbsp;| =
Best 3-Way | Removed | Removed Reason |</font></div><div class=3D""><font =
face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">| if_101_1 &nbsp; =
&nbsp;| 1 &nbsp; &nbsp; &nbsp; &nbsp; | 24 &nbsp; &nbsp;| False &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | THREE_WAY | True &nbsp;| True &nbsp; =
&nbsp; &nbsp; | False &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;|</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">| if_101_1001 | 1001 =
&nbsp; &nbsp; &nbsp;| 0 &nbsp; &nbsp; | False &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | THREE_WAY | False | False &nbsp; &nbsp; &nbsp;| True =
&nbsp; &nbsp;| Level is leaf &nbsp;|</font></div><div class=3D""><font =
face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">| if_101_1002 | 1002 =
&nbsp; &nbsp; &nbsp;| 0 &nbsp; &nbsp; | False &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | THREE_WAY | False | False &nbsp; &nbsp; &nbsp;| True =
&nbsp; &nbsp;| Level is leaf &nbsp;|</font></div><div class=3D""><font =
face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">| if_101_2 &nbsp; =
&nbsp;| 2 &nbsp; &nbsp; &nbsp; &nbsp; | 24 &nbsp; &nbsp;| False &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | THREE_WAY | False | False &nbsp; &nbsp; =
&nbsp;| False &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;|</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+-------+------------+---------+----------------+</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">Sent Offers:</font></div><div class=3D""><font face=3D"Courier =
New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><font face=3D"Courier New" class=3D"">| =
Interface &nbsp; | System ID | Level | Not A ZTP Offer | State &nbsp; =
&nbsp; |</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><font face=3D"Courier New" class=3D"">| =
if_101_1 &nbsp; &nbsp;| 101 &nbsp; &nbsp; &nbsp; | 23 &nbsp; &nbsp;| =
True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| THREE_WAY =
|</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><font face=3D"Courier New" class=3D"">| =
if_101_1001 | 101 &nbsp; &nbsp; &nbsp; | 23 &nbsp; &nbsp;| False &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | THREE_WAY |</font></div><div =
class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><font face=3D"Courier New" class=3D"">| =
if_101_1002 | 101 &nbsp; &nbsp; &nbsp; | 23 &nbsp; &nbsp;| False &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | THREE_WAY |</font></div><div =
class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><font face=3D"Courier New" class=3D"">| =
if_101_2 &nbsp; &nbsp;| 101 &nbsp; &nbsp; &nbsp; | 23 &nbsp; &nbsp;| =
True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| THREE_WAY =
|</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">+-------------+-----------+-------+-----------------+----------=
-+</font></div><div class=3D""><br class=3D""></div><div class=3D""><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">(Reviewed =
until here in this review iteration).</font></div><div class=3D""><font =
face=3D"Courier New" class=3D""><br class=3D""></font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; +--rw instance-label? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
database</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;+--ro ties* =
[direction-type originator tie-type tie-number]</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro direction-type &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;enumeration</font></div><div class=3D""><font face=3D"Courier=
 New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
+--ro originator &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
tie-type &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;enumeration</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
tie-number &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro seq? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
origination-time? &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; +--ro origination-lifetime? &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
node</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro name? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;string</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
level</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro flood-reduction? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro overload? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;+--ro startup-time? &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;+--ro neighbors* [system-id]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro name? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
string</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font=
 face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro address-families</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro =
address-family* [address-family]</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp; &nbsp; +--ro address-family =
&nbsp; &nbsp;iana-rt-types:address-family</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
received-lie-tie-addresses</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro =
rx-lie-source-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;| &nbsp;| &nbsp;| &nbsp;+--ro ipv4? &nbsp; =
inet:ipv4-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;| &nbsp;| &nbsp;+--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;| &nbsp;+--ro flooding-source-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp; &nbsp; +--ro =
ipv4? &nbsp; inet:ipv4-address</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp; &nbsp; +--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro remote-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro cost? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;+--ro bandwidth? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro flood-reduction? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
received-link-capabilities</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;| &nbsp;+--ro v4-forwarding-capable? &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| =
&nbsp;+--ro received-from-lies</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro you-are-flood-repeater? =
&nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro not-a-ztp-offer? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;| &nbsp;+--ro =
you-are-sending-too-quickly? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro tx-flood-port? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;inet:port-number</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; | =
&nbsp;| &nbsp;+--ro bfd-up? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;| &nbsp;+--ro =
outer-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp;uint8</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; | &nbsp;+--ro miscabled-links* &nbsp; =
linkid-type</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; +--ro =
prefix</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro prefix? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;inet:ip-prefix</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro (type)?</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--:(prefix)</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(positive-disaggregation)</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(negative-disaggregation)</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--:(external)</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(positive-external-disaggregation)</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;+--:(pgp)</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro tags* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro monotonic-clock</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
prefix-sequence-type</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp; &nbsp; +--ro timestamp &nbsp; &nbsp; &nbsp; &nbsp; =
ieee802-1as-timestamp-type</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; +--ro transaction-id? &nbsp; =
uint8</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro loopback? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;+--ro directly-attached? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;+--ro from-link? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; linkid-type</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
kv-store</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro kvs* =
[kvs-index]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro =
kvs-index &nbsp; &nbsp;uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; +--ro kvs-tie</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro direction-type? &nbsp; &nbsp; =
&nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro originator? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro tie-type? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro tie-number? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro seq? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint64</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro origination-time? =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro origination-lifetime? &nbsp; =
uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro key-value</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro key? &nbsp; &nbsp; =
uint16</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; +--ro value? &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; notifications:</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; +---n =
error-set</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
tie-level-error</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro direction-type? =
&nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
originator? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
system-id</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro tie-type? &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enumeration</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp;| &nbsp;+--ro tie-number? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; uint32</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro seq? &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;uint64</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro origination-time? =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
origination-lifetime? &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp;+--ro =
neighbor-error</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +--ro neighbor* =
[system-id]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro name? =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; string</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
level? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;level</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro system-id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; system-id</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro pod? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro protocol-version? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint16</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro address-families</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro address-family* =
[address-family]</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; =
&nbsp; +--ro address-family &nbsp; =
&nbsp;iana-rt-types:address-family</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro received-lie-tie-addresses</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
rx-lie-source-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| =
&nbsp;| &nbsp;+--ro ipv4? &nbsp; inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;| &nbsp;+--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
flooding-source-address</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; =
&nbsp; +--ro ipv4? &nbsp; inet:ipv4-address</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; +--ro ipv6? &nbsp; =
inet:ipv6-address</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
remote-id? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;uint32</font></div><div class=3D""><font face=3D"Courier =
New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
cost? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; uint32</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro metric? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro bandwidth? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro flood-reduction? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro received-link-capabilities</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro bfd? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
v4-forwarding-capable? &nbsp; boolean</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;+--ro received-from-lies</font></div><div class=3D""><font =
face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| &nbsp;+--ro you-are-flood-repeater? &nbsp; &nbsp; &nbsp; =
&nbsp;boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
not-a-ztp-offer? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;+--ro =
you-are-sending-too-quickly? &nbsp; boolean</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro tx-flood-port? &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inet:port-number</font></div><div =
class=3D""><font face=3D"Courier New" class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;+--ro bfd-up? &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
boolean</font></div><div class=3D""><font face=3D"Courier New" =
class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--ro =
outer-security-key-id? &nbsp; &nbsp; &nbsp; &nbsp;uint8</font></div><div =
class=3D""><font face=3D"Courier New" class=3D""><br =
class=3D""></font></div><div><br class=3D""></div></body></html>=

--Apple-Mail=_6AF6465B-7A6F-45BF-9FBD-EF780D9E29DB--


From nobody Mon Jul 13 02:10:13 2020
Return-Path: <internet-drafts@ietf.org>
X-Original-To: rift@ietf.org
Delivered-To: rift@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id C977A3A0C77; Mon, 13 Jul 2020 02:10:08 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: <i-d-announce@ietf.org>
Cc: rift@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 7.8.0
Auto-Submitted: auto-generated
Precedence: bulk
Reply-To: rift@ietf.org
Message-ID: <159463140878.14096.10831908267802887971@ietfa.amsl.com>
Date: Mon, 13 Jul 2020 02:10:08 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/kTbODqLM1XDs_2vu9-O1D0TUX7E>
Subject: [Rift] I-D Action: draft-ietf-rift-yang-01.txt
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Jul 2020 09:10:09 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Routing In Fat Trees WG of the IETF.

        Title           : A YANG Data Model for Routing in Fat Trees (RIFT)
        Authors         : Zheng Zhang
                          Yuehua Wei
                          Shaowen Ma
                          Xufeng Liu
	Filename        : draft-ietf-rift-yang-01.txt
	Pages           : 34
	Date            : 2020-07-13

Abstract:
   This document defines a YANG data model for the configuration and
   management of Routing in Fat Trees (RIFT) Protocol.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-rift-yang/

There are also htmlized versions available at:
https://tools.ietf.org/html/draft-ietf-rift-yang-01
https://datatracker.ietf.org/doc/html/draft-ietf-rift-yang-01

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-rift-yang-01


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/



From nobody Thu Jul 16 05:34:41 2020
Return-Path: <zzhang@juniper.net>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A6A373A0A51; Thu, 16 Jul 2020 05:34:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level: 
X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=eHJmbAlF; dkim=pass (1024-bit key) header.d=juniper.net header.b=gUjAzXET
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bASulmqqyBzY; Thu, 16 Jul 2020 05:34:38 -0700 (PDT)
Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0FAA23A09EC; Thu, 16 Jul 2020 05:34:37 -0700 (PDT)
Received: from pps.filterd (m0108161.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 06GCR7xY004648; Thu, 16 Jul 2020 05:34:36 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=PPS1017; bh=m6KbRXLKnF+cjmfDIVXSbCX9SFSbRYSWszq1VBX7NPY=; b=eHJmbAlFjtO0Nkzz4wpyRSkffFeM9XEPjZHl3eyQwO/ZPi5YTU+TOEUbAWRwEk0ouAjX gdeZB5yppYX5sGN/JpXDFOeFbyDqXI884hqrZJmRnj+7pUuRLeot5r63g4BquUuV/Alu cl7MM/NajegxU2C8hkYGZsE7bhvrAa+ccKh8xubgXZ7b1BWkuTeiKBxDYRbFj1B4mEHv ZXLMdOpE94VolglY+4YXaXHuu/4pj8R0jDzAxHTnUgU43Q6xixEdl4MxjTBCoQZph27o 3w8jeapLlBU0zDCNl+LLeAGVfRLO6cNIW+jGGLO3FCnq1dnuTR3ZUGn6+pgxES70tVVI 7Q== 
Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2103.outbound.protection.outlook.com [104.47.70.103]) by mx0b-00273201.pphosted.com with ESMTP id 328kfapg36-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 16 Jul 2020 05:34:36 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kzhSFDT3Nhvjavgq/mAxMQroyXKAPbnnHfZEHzoSir5OnCamwQFhSw4CGIX6W/UKxOIjir8RNR9JWw40feF8zXWiinw0RmfEEhcsot4aP2HWEsK8Wq5m9z7EWU02xjCNeADZRnTyqrWWAphN1MYPLnOuVmRkbjJjaBz2RP8zKUy95PIJkmCFxou2a+mALDisjDpmeflLAZnajXkkgFwt63QaVetnVOG8MzvxL2A8lTo+hVLb2iavvuQRpX48TrP0xGJdshysXbV0t6qvckX2ll6FU6Kw4NR6bv66Wul5PbV8YzvFVWe2Jqgh8eruFDjFKPTZ0UgL6xv5HPx8UgLd/Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;  s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m6KbRXLKnF+cjmfDIVXSbCX9SFSbRYSWszq1VBX7NPY=; b=cflmM83O9ZwPdbHhtwDRwn3DksClPBZst5wIBlt7vsei5J7yLNm24+YgQ4rG+NQZAV//uFQHYKitM0R0toAAAKArgy9B6KJ6MPWT26Icyko9ZbwRk2EbIUn70XBe2QwA+lNDK/8QIsCo70CoOSmqfwe3d+7HFFDuD/fdcEPCjZ2zLErASY5zMPl0YILE+ljjVfR6QqSl5BmfCE37/Lmkp4YCkjq+no8GE+aH09fhg5g1jGNC8Ek00kM2bvVT2KG+BY2s+Y8UuPiBqOOuliezClvtYZXTmIZUsbsjL9c8jPRXw9AZIdiSTur0pX0byZzAwmq9RPDya9oJOrINyU/H2g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m6KbRXLKnF+cjmfDIVXSbCX9SFSbRYSWszq1VBX7NPY=; b=gUjAzXET3o1oyEcMeIPk23Tqzdqz4n5tc7SnyvZXIDcsek5cv+8A9cTxAxkhZlknS+LOzZfFsruaVH0mlSE+2eCTvOj8GdtTpERUPYbddD0/VtfbMfj7UQzLTu87QA7eGWJ91vMJmDn98za0SSh+xmdU99Wcj0gDUIZUpCgtcE0=
Received: from MN2PR05MB5981.namprd05.prod.outlook.com (2603:10b6:208:c3::15) by MN2PR05MB6590.namprd05.prod.outlook.com (2603:10b6:208:e0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.9; Thu, 16 Jul 2020 12:34:33 +0000
Received: from MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191]) by MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191%5]) with mapi id 15.20.3195.017; Thu, 16 Jul 2020 12:34:33 +0000
From: "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>
To: "rift-chairs@ietf.org" <rift-chairs@ietf.org>, "jefftant.ietf@gmail.com" <jefftant.ietf@gmail.com>, "rift@ietf.org" <rift@ietf.org>
Thread-Topic: Agenda call for RIFT@IETF108
Thread-Index: AdZbbVA1LaTFnWm/SlmkPVs9CkKrzw==
Date: Thu, 16 Jul 2020 12:34:33 +0000
Message-ID: <MN2PR05MB5981C364F4AFA06BB1C81E4DD47F0@MN2PR05MB5981.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2020-07-16T12:34:31Z;  MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=0633b888-ae0d-4341-a75f-06e04137d755; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=910a9dd1-1a9d-4ba2-b83b-104790804856; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=2
dlp-product: dlpe-windows
dlp-version: 11.3.2.8
dlp-reaction: no-action
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=juniper.net;
x-originating-ip: [71.248.165.31]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: 7c87bc3f-3e81-4d20-cc4d-08d829849810
x-ms-traffictypediagnostic: MN2PR05MB6590:
x-microsoft-antispam-prvs: <MN2PR05MB6590806A63F0AB372B52BE69D47F0@MN2PR05MB6590.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:185;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: Xl60k03MMlpyWnCI1UVR289pHu3CFNUx+yjpDqfVmCFXUYoes+sy/lsiXTaAaJbL9wId69KtOMsCG7lrceVb+FX0k4mhHRskM2tmd1+z3eJAQUgPSKgZqm9mipfK6pXoyrd1B+tVWF62K+jOg51kbOsHbb2kz6iAWzizRwvNF6GZDrTRUzNb1pWyAIVCqJcsJ7leeAz1/hi2gALhfEHFHLklr1G9hk7RG0em7xyQDX/LRvNN7IdDA+l6j1hvSphnwa4G+QJLbSMSasLer16YKe/O0+SgkRtSBnHAjfEjl0sytXokH7F/m9/eMHdx7bPotFstxnkLjku6e9sJdPYNzFK230maeoT1+605tyiUTszkqpAqgMFQwH7MwZPwBQMV8HzB5LfIUwiLCvTPmFXkSQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;  IPV:NLI; SFV:NSPM; H:MN2PR05MB5981.namprd05.prod.outlook.com; PTR:; CAT:NONE;  SFTY:; SFS:(4636009)(39860400002)(136003)(346002)(376002)(396003)(366004)(8676002)(26005)(64756008)(66476007)(66446008)(966005)(76116006)(83380400001)(86362001)(110136005)(5660300002)(7696005)(33656002)(71200400001)(186003)(316002)(66946007)(478600001)(66556008)(8936002)(55016002)(6506007)(52536014)(53546011)(2906002)(9686003); DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: I6QunOqds++iJ4eYCkcPAls1xM8r1vNvefOtrF7P/KDbrBTn3vMzFaWVnT4SX/x0rdjaBc2J+IgEEr2XqAs6gcTQSrD6WkMeuBu2U0NkooXrlL4XjwE+qqsvAlx8INhgdLzuk7k2S4AJPZQMjiNaoLOU+oygDyxcYekgaSFUm6v9XC0/mENABQ/ITxGy/s3wCcW0QDwhShzCF8eX2nVTuse8quzBoQnkscP6sqlNADnuiRQk/8uhAL3lhpQj6ScTrS7gjTuMr210S6fLqHBVsJ1TR3hzB4ZGY6p6LjC4ZuLigqtm0btX2tS+bqFRjcnT5rGNzCk8bIsb9Ldzwax7N/bgTKADOLqq+BxIJ/yV5xdI+t3RUp0tUGDO7v1ttADeMo6pgx6Koo8BYlAl5yydHnwXncUGPUcp85n1O/LL75BSJt8fK3U6uf9HAlgO4VRm9YDtiR5ubcOWBCQ6QkQGe5biTaWV3RW/St/Eyn2zmXc=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN2PR05MB5981.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7c87bc3f-3e81-4d20-cc4d-08d829849810
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jul 2020 12:34:33.5585 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: p4tG8o6Si1cup7eZLXxt1FxYdjypjbfia6tfyTDTsGQGvq44uwPFml7kjLpWyRvdjfBcJUKq14n1uSn8+Q2PUA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR05MB6590
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-16_05:2020-07-16, 2020-07-16 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 mlxscore=0 malwarescore=0 phishscore=0 adultscore=0 mlxlogscore=999 impostorscore=0 priorityscore=1501 spamscore=0 clxscore=1011 bulkscore=0 suspectscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2007160099
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/8KIiSLbG2lZjKEUOC0eJp0Z3Ugc>
Subject: [Rift] Agenda call for RIFT@IETF108
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Jul 2020 12:34:40 -0000

SGksDQoNClBsZWFzZSBzZWUgdGhlIHNjaGVkdWxlZCBSSUZUIHNlc3Npb24gYmVsb3csIGFuZCBw
bGVhc2UgbGV0IHRoZSBjaGFpcnMga25vdyBpZiB5b3UgaGF2ZSBhbnkgdG9waWNzIHRvIHByZXNl
bnQvZGlzY3Vzcy4NCg0KVGhhbmtzLg0KSmVmZiAmIEplZmZyZXkNCg0KDQpKdW5pcGVyIEJ1c2lu
ZXNzIFVzZSBPbmx5DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiAiSUVURiBT
ZWNyZXRhcmlhdCIgPGFnZW5kYUBpZXRmLm9yZz4gDQpTZW50OiBUaHVyc2RheSwgSnVseSAyLCAy
MDIwIDg6MjEgUE0NClRvOiByaWZ0LWNoYWlyc0BpZXRmLm9yZzsgamVmZnRhbnQuaWV0ZkBnbWFp
bC5jb20NCkNjOiBhcmV0YW5hLmlldGZAZ21haWwuY29tOyByaWZ0QGlldGYub3JnDQpTdWJqZWN0
OiByaWZ0IC0gUmVxdWVzdGVkIHNlc3Npb24gaGFzIGJlZW4gc2NoZWR1bGVkIGZvciBJRVRGIDEw
OA0KDQpbRXh0ZXJuYWwgRW1haWwuIEJlIGNhdXRpb3VzIG9mIGNvbnRlbnRdDQoNCg0KRGVhciBK
ZWZmIFRhbnRzdXJhLA0KDQpUaGUgc2Vzc2lvbihzKSB0aGF0IHlvdSBoYXZlIHJlcXVlc3RlZCBo
YXZlIGJlZW4gc2NoZWR1bGVkLg0KQmVsb3cgaXMgdGhlIHNjaGVkdWxlZCBzZXNzaW9uIGluZm9y
bWF0aW9uIGZvbGxvd2VkIGJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0Lg0KDQoNCiAgICByaWZ0IFNl
c3Npb24gMSAoMDo1MCByZXF1ZXN0ZWQpDQogICAgV2VkbmVzZGF5LCAyOSBKdWx5IDIwMjAsIFNl
c3Npb24gSUkgMTMwMC0xMzUwDQogICAgUm9vbSBOYW1lOiBSb29tIDQgc2l6ZTogNA0KICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmlDYWxlbmRh
cjogaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5v
cmcvbWVldGluZy8xMDgvc2Vzc2lvbnMvcmlmdC5pY3NfXzshIU5FdDZ5TWFPLWdrIVJoTmtVR3Za
c3BCcHEyY1Z6OWRHUDhqdV9TelFlWldneEh2cGt0dXZTRmpydnZUQkJsRTNuaWdobHFqMENwcVgk
DQoNClJlcXVlc3QgSW5mb3JtYXRpb246DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXb3JraW5nIEdyb3VwIE5hbWU6IFJvdXRp
bmcgSW4gRmF0IFRyZWVzIEFyZWEgTmFtZTogUm91dGluZyBBcmVhIFNlc3Npb24gUmVxdWVzdGVy
OiBKZWZmIFRhbnRzdXJhDQoNCg0KTnVtYmVyIG9mIFNlc3Npb25zOiAxDQpMZW5ndGggb2YgU2Vz
c2lvbihzKTogIDUwIE1pbnV0ZXMNCk51bWJlciBvZiBBdHRlbmRlZXM6IE5vbmUNCkNvbmZsaWN0
cyB0byBBdm9pZDoNCiBDaGFpciBDb25mbGljdDogaWRyIGJpZXIgYmVzcyBsc3IgbHN2ciBtYm9u
ZWQgcGltIHJ0Z2FyZWEgcnRnd2cgc3ByaW5nIHRlYXMgbm1yZw0KDQoNCg0KDQoNCg0KDQpQZW9w
bGUgd2hvIG11c3QgYmUgcHJlc2VudDoNCiAgQWx2YXJvIFJldGFuYQ0KICBaaGFvaHVpIChKZWZm
cmV5KSBaaGFuZw0KICBKZWZmIFRhbnRzdXJhDQoNClJlc291cmNlcyBSZXF1ZXN0ZWQ6DQoNClNw
ZWNpYWwgUmVxdWVzdHM6DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQo=


From nobody Thu Jul 16 05:48:00 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B8DDF3A08F4; Thu, 16 Jul 2020 05:47:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nypCUuHaaWix; Thu, 16 Jul 2020 05:47:58 -0700 (PDT)
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EF0AA3A08FA; Thu, 16 Jul 2020 05:47:57 -0700 (PDT)
Received: by mail-ed1-x52d.google.com with SMTP id g20so4665686edm.4; Thu, 16 Jul 2020 05:47:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=mJlR+FGQWa63ZY8sCugqc/KDfJiGJu6ofW8WrcWWgCM=; b=UU34mu7oO6yozioWYKbICBD00b8EamytACGxAK+ushw7+YdzSFRkH0DcMlHyScRaXw rukg17aCKdP/36qn+7SG6Cpoh1+W64UACt6P8jbbysh3A3QKIMiFVCv8xuo6U4ocxCkF MEwbdQYzU2fPkpAqdDegcZAkFDAh98PgK5soq0HsHDtya+jv2qYOeMM03P3yQGzBCbh2 SJxm5LMtZKQVaD3zYCyfBcMhxp7N70VR2FVcRfJZTfAV6K17U425+kZcZ0cv6oJbDUwr iPj2MeC9b/Xb1q2Mfvld2iXfZx7vtOtXhLsPoMnmaOBgAtvlh6vmD+hVhGQGnOqaCFct HzpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=mJlR+FGQWa63ZY8sCugqc/KDfJiGJu6ofW8WrcWWgCM=; b=ixkQ2P1PskP9yTMZ6k6Pn4dqIIQvNa8MZNL6qrFNWB1aX8uGFpqiw8v1myYHFQfJLw 0J1h8PAeO7P5oH+2eH7VBIbTeASmUJ2gWU69Bi0EUuCN0x9QAlMBGaUS5/PSLkFvF2vj EPnU/BxOBk7lhWWFP6qF1p+jDEVU3ljE/sJu/7xvW+Y3Y46px9j2tUUibgJ1Gdo4eKDO VdL06qVHjGAqS3plvlyRRwfEsXKh/sYblT8BFHOcxTFbA5+XJIie00mpsd9hu5Mg0/Yk f4HdlsulDEBoV2D9Se2M9q1+jgQqkWpCH+S7AkapY4hKAiKSSETCgCjtgkuDm4C7qjGC JaIQ==
X-Gm-Message-State: AOAM533LWGwoYvQ9NeCXy10gNMReh1q2bE+HNUt9tH0RUg6zpMa0Xbnk 1KgBFnGHoiiiOTnZaP8rC3S4y98oh5eOeQ==
X-Google-Smtp-Source: ABdhPJw/whaslS6Gmm/2uv8+ekY3YO65DJsRUkMYVuA5KYTiGa7oT+cr5YZWvXyUE+6EcEg+Ni9iTQ==
X-Received: by 2002:a50:fc97:: with SMTP id f23mr4178091edq.255.1594903676423;  Thu, 16 Jul 2020 05:47:56 -0700 (PDT)
Received: from brunos-macbook.home (80-61-176-112.fixed.kpn.net. [80.61.176.112]) by smtp.gmail.com with ESMTPSA id o14sm4942486eja.121.2020.07.16.05.47.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 Jul 2020 05:47:55 -0700 (PDT)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
From: Bruno Rijsman <brunorijsman@gmail.com>
In-Reply-To: <MN2PR05MB5981C364F4AFA06BB1C81E4DD47F0@MN2PR05MB5981.namprd05.prod.outlook.com>
Date: Thu, 16 Jul 2020 14:47:54 +0200
Cc: "rift-chairs@ietf.org" <rift-chairs@ietf.org>, "jefftant.ietf@gmail.com" <jefftant.ietf@gmail.com>, "rift@ietf.org" <rift@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <D972774E-0916-4334-97AA-4A8A25849934@gmail.com>
References: <MN2PR05MB5981C364F4AFA06BB1C81E4DD47F0@MN2PR05MB5981.namprd05.prod.outlook.com>
To: "Jeffrey (Zhaohui) Zhang" <zzhang=40juniper.net@dmarc.ietf.org>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/QIQcRid3hPn4nEtkXN7M16QZv2U>
Subject: Re: [Rift] Agenda call for RIFT@IETF108
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Jul 2020 12:48:00 -0000

RIFT open source: negative disaggregation implementation report and =
other updates (10 minutes)

> On Jul 16, 2020, at 2:34 PM, Jeffrey (Zhaohui) Zhang =
<zzhang=3D40juniper.net@dmarc.ietf.org> wrote:
>=20
> Hi,
>=20
> Please see the scheduled RIFT session below, and please let the chairs =
know if you have any topics to present/discuss.
>=20
> Thanks.
> Jeff & Jeffrey
>=20
>=20
> Juniper Business Use Only
>=20
> -----Original Message-----
> From: "IETF Secretariat" <agenda@ietf.org>=20
> Sent: Thursday, July 2, 2020 8:21 PM
> To: rift-chairs@ietf.org; jefftant.ietf@gmail.com
> Cc: aretana.ietf@gmail.com; rift@ietf.org
> Subject: rift - Requested session has been scheduled for IETF 108
>=20
> [External Email. Be cautious of content]
>=20
>=20
> Dear Jeff Tantsura,
>=20
> The session(s) that you have requested have been scheduled.
> Below is the scheduled session information followed by the original =
request.
>=20
>=20
>    rift Session 1 (0:50 requested)
>    Wednesday, 29 July 2020, Session II 1300-1350
>    Room Name: Room 4 size: 4
>    ---------------------------------------------
>=20
>=20
> iCalendar: =
https://urldefense.com/v3/__https://datatracker.ietf.org/meeting/108/sessi=
ons/rift.ics__;!!NEt6yMaO-gk!RhNkUGvZspBpq2cVz9dGP8ju_SzQeZWgxHvpktuvSFjrv=
vTBBlE3nighlqj0CpqX$
>=20
> Request Information:
>=20
>=20
> ---------------------------------------------------------
> Working Group Name: Routing In Fat Trees Area Name: Routing Area =
Session Requester: Jeff Tantsura
>=20
>=20
> Number of Sessions: 1
> Length of Session(s):  50 Minutes
> Number of Attendees: None
> Conflicts to Avoid:
> Chair Conflict: idr bier bess lsr lsvr mboned pim rtgarea rtgwg spring =
teas nmrg
>=20
>=20
>=20
>=20
>=20
>=20
>=20
> People who must be present:
>  Alvaro Retana
>  Zhaohui (Jeffrey) Zhang
>  Jeff Tantsura
>=20
> Resources Requested:
>=20
> Special Requests:
>=20
> ---------------------------------------------------------
>=20
> _______________________________________________
> RIFT mailing list
> RIFT@ietf.org
> https://www.ietf.org/mailman/listinfo/rift


From nobody Thu Jul 16 05:52:37 2020
Return-Path: <tonysietf@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3C3F33A0407; Thu, 16 Jul 2020 05:52:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CrOX_hGUvOBB; Thu, 16 Jul 2020 05:52:33 -0700 (PDT)
Received: from mail-il1-x12c.google.com (mail-il1-x12c.google.com [IPv6:2607:f8b0:4864:20::12c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B59583A0B01; Thu, 16 Jul 2020 05:52:25 -0700 (PDT)
Received: by mail-il1-x12c.google.com with SMTP id r12so4929371ilh.4; Thu, 16 Jul 2020 05:52:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=bp5yvrQj/Sll7FafMbQnp5uT0ifOp1j4bdb92EMRn8A=; b=jC4UHZ0txgbA/9qPuA+BDPQEh5tdbGbs4rnq46m7BXev9JIRntu27MOq2BUQOn+sq5 O07Syc1zbChi7tK+3EI50vFZW2ycJZLtaLPM2KagCNQDQnlqSu8794fXeFAv7BWxjMJa QT39LwTrDvsxtbzsftylmrOQDjDa5Bf/lMbwF92vEpQuApEFptscPDU5NxCt5tSmSIT3 GORAm8pe4/c50Xhg+O4QiDEXT2CzdX9OYQHCfxCEmllgrzfienqrw9GN7zwCpaootwgb IzEq36h9haMReJVcgF7bJDODPT4G5KcQYeJXs205e21gWH4aNuKWHnkaYC0bmj8iyLkY pMSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bp5yvrQj/Sll7FafMbQnp5uT0ifOp1j4bdb92EMRn8A=; b=F/p7W4wrRxHFvrmEVZXfvLAa7yIqPw8F3uWPQYC3xDUjKT0DnlZpHkB8/9Y4+JBN5j XUy0HunteIO27v2QQHar5EMw8dJBS6UnoRWlAoOZSNTlYD23Lryr2jldHJqvABgtPhua MQZ2iH2tN58XVVSi9UI4pJVldT/8ZLwZA3FzvrDCo+MwzKNYH9oMZGEWtUAi7pY7xD+E 8jTygylhUETpiPjybU6c8G4RlaOKe5Owmp7BaRFiMula/0i7IzRXZEzykqBcaEnsKCNy ZZDJX/Y+6DOgJgJZyaclKT6FVKJ8ofrXfbmFi4jim93fPNirbSNN88oKXwi93FV+Yg6+ Gu7Q==
X-Gm-Message-State: AOAM533mcIVX3TF5iw/ds5yP8I9A9cnecF/wz0phcz+FkN1FNTQlp2pn DuApJupinuoRMQkPD9kyDTIW0EBB/6Vhw7uUKoE=
X-Google-Smtp-Source: ABdhPJybawfEvpWUEy7iN4Dw4dh06kxKI4Ggozz5dz+mBLWPBvOxSmS1LbECImo4f7PkNcgjNgPuKPFYvxfua2Vy/CY=
X-Received: by 2002:a92:dd81:: with SMTP id g1mr4124848iln.156.1594903944923;  Thu, 16 Jul 2020 05:52:24 -0700 (PDT)
MIME-Version: 1.0
References: <MN2PR05MB5981C364F4AFA06BB1C81E4DD47F0@MN2PR05MB5981.namprd05.prod.outlook.com> <D972774E-0916-4334-97AA-4A8A25849934@gmail.com>
In-Reply-To: <D972774E-0916-4334-97AA-4A8A25849934@gmail.com>
From: Tony Przygienda <tonysietf@gmail.com>
Date: Thu, 16 Jul 2020 14:50:41 +0200
Message-ID: <CA+wi2hM_1_F=-q3G-V7ubwnk+1G+rxR6qr2q1kG9QX6e_fu69w@mail.gmail.com>
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: "Jeffrey (Zhaohui) Zhang" <zzhang=40juniper.net@dmarc.ietf.org>,  "jefftant.ietf@gmail.com" <jefftant.ietf@gmail.com>, "rift-chairs@ietf.org" <rift-chairs@ietf.org>,  "rift@ietf.org" <rift@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000016904905aa8e83c9"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/rpxgSpeOlwfa5F0pBDOEwJIgMVA>
Subject: Re: [Rift] Agenda call for RIFT@IETF108
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Jul 2020 12:52:35 -0000

--00000000000016904905aa8e83c9
Content-Type: text/plain; charset="UTF-8"

minor stuff on spec, review rounds. probably 15 mins

On Thu, Jul 16, 2020 at 2:48 PM Bruno Rijsman <brunorijsman@gmail.com>
wrote:

> RIFT open source: negative disaggregation implementation report and other
> updates (10 minutes)
>
> > On Jul 16, 2020, at 2:34 PM, Jeffrey (Zhaohui) Zhang <zzhang=
> 40juniper.net@dmarc.ietf.org> wrote:
> >
> > Hi,
> >
> > Please see the scheduled RIFT session below, and please let the chairs
> know if you have any topics to present/discuss.
> >
> > Thanks.
> > Jeff & Jeffrey
> >
> >
> > Juniper Business Use Only
> >
> > -----Original Message-----
> > From: "IETF Secretariat" <agenda@ietf.org>
> > Sent: Thursday, July 2, 2020 8:21 PM
> > To: rift-chairs@ietf.org; jefftant.ietf@gmail.com
> > Cc: aretana.ietf@gmail.com; rift@ietf.org
> > Subject: rift - Requested session has been scheduled for IETF 108
> >
> > [External Email. Be cautious of content]
> >
> >
> > Dear Jeff Tantsura,
> >
> > The session(s) that you have requested have been scheduled.
> > Below is the scheduled session information followed by the original
> request.
> >
> >
> >    rift Session 1 (0:50 requested)
> >    Wednesday, 29 July 2020, Session II 1300-1350
> >    Room Name: Room 4 size: 4
> >    ---------------------------------------------
> >
> >
> > iCalendar:
> https://urldefense.com/v3/__https://datatracker.ietf.org/meeting/108/sessions/rift.ics__;!!NEt6yMaO-gk!RhNkUGvZspBpq2cVz9dGP8ju_SzQeZWgxHvpktuvSFjrvvTBBlE3nighlqj0CpqX$
> >
> > Request Information:
> >
> >
> > ---------------------------------------------------------
> > Working Group Name: Routing In Fat Trees Area Name: Routing Area Session
> Requester: Jeff Tantsura
> >
> >
> > Number of Sessions: 1
> > Length of Session(s):  50 Minutes
> > Number of Attendees: None
> > Conflicts to Avoid:
> > Chair Conflict: idr bier bess lsr lsvr mboned pim rtgarea rtgwg spring
> teas nmrg
> >
> >
> >
> >
> >
> >
> >
> > People who must be present:
> >  Alvaro Retana
> >  Zhaohui (Jeffrey) Zhang
> >  Jeff Tantsura
> >
> > Resources Requested:
> >
> > Special Requests:
> >
> > ---------------------------------------------------------
> >
> > _______________________________________________
> > RIFT mailing list
> > RIFT@ietf.org
> > https://www.ietf.org/mailman/listinfo/rift
>
> _______________________________________________
> RIFT mailing list
> RIFT@ietf.org
> https://www.ietf.org/mailman/listinfo/rift
>

--00000000000016904905aa8e83c9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">minor stuff on spec, review rounds. probably 15 mins<br></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Thu, Jul 16, 2020 at 2:48 PM Bruno Rijsman &lt;<a href=3D"mailto:brunorijs=
man@gmail.com">brunorijsman@gmail.com</a>&gt; wrote:<br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex">RIFT open source: negative disaggregat=
ion implementation report and other updates (10 minutes)<br>
<br>
&gt; On Jul 16, 2020, at 2:34 PM, Jeffrey (Zhaohui) Zhang &lt;zzhang=3D<a h=
ref=3D"mailto:40juniper.net@dmarc.ietf.org" target=3D"_blank">40juniper.net=
@dmarc.ietf.org</a>&gt; wrote:<br>
&gt; <br>
&gt; Hi,<br>
&gt; <br>
&gt; Please see the scheduled RIFT session below, and please let the chairs=
 know if you have any topics to present/discuss.<br>
&gt; <br>
&gt; Thanks.<br>
&gt; Jeff &amp; Jeffrey<br>
&gt; <br>
&gt; <br>
&gt; Juniper Business Use Only<br>
&gt; <br>
&gt; -----Original Message-----<br>
&gt; From: &quot;IETF Secretariat&quot; &lt;<a href=3D"mailto:agenda@ietf.o=
rg" target=3D"_blank">agenda@ietf.org</a>&gt; <br>
&gt; Sent: Thursday, July 2, 2020 8:21 PM<br>
&gt; To: <a href=3D"mailto:rift-chairs@ietf.org" target=3D"_blank">rift-cha=
irs@ietf.org</a>; <a href=3D"mailto:jefftant.ietf@gmail.com" target=3D"_bla=
nk">jefftant.ietf@gmail.com</a><br>
&gt; Cc: <a href=3D"mailto:aretana.ietf@gmail.com" target=3D"_blank">aretan=
a.ietf@gmail.com</a>; <a href=3D"mailto:rift@ietf.org" target=3D"_blank">ri=
ft@ietf.org</a><br>
&gt; Subject: rift - Requested session has been scheduled for IETF 108<br>
&gt; <br>
&gt; [External Email. Be cautious of content]<br>
&gt; <br>
&gt; <br>
&gt; Dear Jeff Tantsura,<br>
&gt; <br>
&gt; The session(s) that you have requested have been scheduled.<br>
&gt; Below is the scheduled session information followed by the original re=
quest.<br>
&gt; <br>
&gt; <br>
&gt;=C2=A0 =C2=A0 rift Session 1 (0:50 requested)<br>
&gt;=C2=A0 =C2=A0 Wednesday, 29 July 2020, Session II 1300-1350<br>
&gt;=C2=A0 =C2=A0 Room Name: Room 4 size: 4<br>
&gt;=C2=A0 =C2=A0 ---------------------------------------------<br>
&gt; <br>
&gt; <br>
&gt; iCalendar: <a href=3D"https://urldefense.com/v3/__https://datatracker.=
ietf.org/meeting/108/sessions/rift.ics__;!!NEt6yMaO-gk!RhNkUGvZspBpq2cVz9dG=
P8ju_SzQeZWgxHvpktuvSFjrvvTBBlE3nighlqj0CpqX$" rel=3D"noreferrer" target=3D=
"_blank">https://urldefense.com/v3/__https://datatracker.ietf.org/meeting/1=
08/sessions/rift.ics__;!!NEt6yMaO-gk!RhNkUGvZspBpq2cVz9dGP8ju_SzQeZWgxHvpkt=
uvSFjrvvTBBlE3nighlqj0CpqX$</a><br>
&gt; <br>
&gt; Request Information:<br>
&gt; <br>
&gt; <br>
&gt; ---------------------------------------------------------<br>
&gt; Working Group Name: Routing In Fat Trees Area Name: Routing Area Sessi=
on Requester: Jeff Tantsura<br>
&gt; <br>
&gt; <br>
&gt; Number of Sessions: 1<br>
&gt; Length of Session(s):=C2=A0 50 Minutes<br>
&gt; Number of Attendees: None<br>
&gt; Conflicts to Avoid:<br>
&gt; Chair Conflict: idr bier bess lsr lsvr mboned pim rtgarea rtgwg spring=
 teas nmrg<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; People who must be present:<br>
&gt;=C2=A0 Alvaro Retana<br>
&gt;=C2=A0 Zhaohui (Jeffrey) Zhang<br>
&gt;=C2=A0 Jeff Tantsura<br>
&gt; <br>
&gt; Resources Requested:<br>
&gt; <br>
&gt; Special Requests:<br>
&gt; <br>
&gt; ---------------------------------------------------------<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; RIFT mailing list<br>
&gt; <a href=3D"mailto:RIFT@ietf.org" target=3D"_blank">RIFT@ietf.org</a><b=
r>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/rift" rel=3D"noreferr=
er" target=3D"_blank">https://www.ietf.org/mailman/listinfo/rift</a><br>
<br>
_______________________________________________<br>
RIFT mailing list<br>
<a href=3D"mailto:RIFT@ietf.org" target=3D"_blank">RIFT@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/rift" rel=3D"noreferrer" t=
arget=3D"_blank">https://www.ietf.org/mailman/listinfo/rift</a><br>
</blockquote></div>

--00000000000016904905aa8e83c9--


From nobody Thu Jul 16 23:51:15 2020
Return-Path: <zhang.zheng@zte.com.cn>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F2CE63A12EF; Thu, 16 Jul 2020 23:51:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.917
X-Spam-Level: 
X-Spam-Status: No, score=-1.917 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E8vamI4dM2HZ; Thu, 16 Jul 2020 23:51:11 -0700 (PDT)
Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.217.80.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C0A343A12F0; Thu, 16 Jul 2020 23:51:10 -0700 (PDT)
Received: from mse-fl1.zte.com.cn (unknown [10.30.14.238]) by Forcepoint Email with ESMTPS id DC17B4AC0293F0C7D987; Fri, 17 Jul 2020 14:51:08 +0800 (CST)
Received: from njxapp04.zte.com.cn ([10.41.132.203]) by mse-fl1.zte.com.cn with SMTP id 06H6p2El069233; Fri, 17 Jul 2020 14:51:02 +0800 (GMT-8) (envelope-from zhang.zheng@zte.com.cn)
Received: from mapi (njxapp01[null]) by mapi (Zmail) with MAPI id mid203; Fri, 17 Jul 2020 14:51:02 +0800 (CST)
Date: Fri, 17 Jul 2020 14:51:02 +0800 (CST)
X-Zmail-TransId: 2af95f114a568c4adbf5
X-Mailer: Zmail v1.0
Message-ID: <202007171451021754633@zte.com.cn>
In-Reply-To: <CA+wi2hM_1_F=-q3G-V7ubwnk+1G+rxR6qr2q1kG9QX6e_fu69w@mail.gmail.com>
References: MN2PR05MB5981C364F4AFA06BB1C81E4DD47F0@MN2PR05MB5981.namprd05.prod.outlook.com, CA+wi2hM_1_F=-q3G-V7ubwnk+1G+rxR6qr2q1kG9QX6e_fu69w@mail.gmail.com
Mime-Version: 1.0
From: <zhang.zheng@zte.com.cn>
To: <zzhang=40juniper.net@dmarc.ietf.org>, <jefftant.ietf@gmail.com>
Cc: <brunorijsman@gmail.com>, <rift-chairs@ietf.org>, <rift@ietf.org>, <tonysietf@gmail.com>
Content-Type: multipart/mixed; boundary="=====_001_next====="
X-MAIL: mse-fl1.zte.com.cn 06H6p2El069233
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/Z1UbwB_AXq_y0d5sET06DDlVfTY>
Subject: Re: [Rift] =?utf-8?q?Agenda_call_for_RIFT=40IETF108?=
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Jul 2020 06:51:14 -0000

--=====_001_next=====
Content-Type: multipart/related;
	boundary="=====_002_next====="


--=====_002_next=====
Content-Type: multipart/alternative;
	boundary="=====_003_next====="


--=====_003_next=====
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: base64

SGkgY2hhaXJzLA0KDQoNCkknZCBsaWtlIHRvIHByZXNlbnQgdGhlIHVwZGF0ZSBvZiBSSUZUIHlh
bmcuIDVtaW5zLg0KDQoNCg0KVGhhbmtzLA0KDQoNCg0KDQpTYW5keQ0KDQoNCg0KDQoNCg0KDQrl
jp/lp4vpgq7ku7YNCg0KDQoNCuWPkeS7tuS6uu+8mlRvbnlQcnp5Z2llbmRhIDx0b255c2lldGZA
Z21haWwuY29tPg0K5pS25Lu25Lq677yaQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGdtYWls
LmNvbT47DQrmioTpgIHkurrvvJpqZWZmdGFudC5pZXRmQGdtYWlsLmNvbSA8amVmZnRhbnQuaWV0
ZkBnbWFpbC5jb20+O3JpZnQtY2hhaXJzQGlldGYub3JnIDxyaWZ0LWNoYWlyc0BpZXRmLm9yZz47
cmlmdEBpZXRmLm9yZyA8cmlmdEBpZXRmLm9yZz47SmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgPHp6
aGFuZz00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPjsNCuaXpSDmnJ8g77yaMjAyMOW5tDA3
5pyIMTbml6UgMjA6NTINCuS4uyDpopgg77yaUmU6IFtSaWZ0XSBBZ2VuZGEgY2FsbCBmb3IgUklG
VEBJRVRGMTA4DQoNCg0KDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQpSSUZUIG1haWxpbmcgbGlzdA0KUklGVEBpZXRmLm9yZw0KaHR0cHM6Ly93d3cu
aWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0DQoNCg0KbWlub3Igc3R1ZmYgb24gc3BlYywg
cmV2aWV3IHJvdW5kcy4gcHJvYmFibHkgMTUgbWlucw0KDQoNCg0KDQpPbiBUaHUsIEp1bCAxNiwg
MjAyMCBhdCAyOjQ4IFBNIEJydW5vIFJpanNtYW4gPGJydW5vcmlqc21hbkBnbWFpbC5jb20+IHdy
b3RlOg0KDQpSSUZUIG9wZW4gc291cmNlOiBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbXBsZW1l
bnRhdGlvbiByZXBvcnQgYW5kIG90aGVyIHVwZGF0ZXMgKDEwIG1pbnV0ZXMpDQoNCj4gT24gSnVs
IDE2LCAyMDIwLCBhdCAyOjM0IFBNLCBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyA8enpoYW5nPTQw
anVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc+IHdyb3RlOg0KPiANCj4gSGksDQo+IA0KPiBQbGVh
c2Ugc2VlIHRoZSBzY2hlZHVsZWQgUklGVCBzZXNzaW9uIGJlbG93LCBhbmQgcGxlYXNlIGxldCB0
aGUgY2hhaXJzIGtub3cgaWYgeW91IGhhdmUgYW55IHRvcGljcyB0byBwcmVzZW50L2Rpc2N1c3Mu
DQo+IA0KPiBUaGFua3MuDQo+IEplZmYgJiBKZWZmcmV5DQo+IA0KPiANCj4gSnVuaXBlciBCdXNp
bmVzcyBVc2UgT25seQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog
IklFVEYgU2VjcmV0YXJpYXQiIDxhZ2VuZGFAaWV0Zi5vcmc+IA0KPiBTZW50OiBUaHVyc2RheSwg
SnVseSAyLCAyMDIwIDg6MjEgUE0NCj4gVG86IHJpZnQtY2hhaXJzQGlldGYub3JnOyBqZWZmdGFu
dC5pZXRmQGdtYWlsLmNvbQ0KPiBDYzogYXJldGFuYS5pZXRmQGdtYWlsLmNvbTsgcmlmdEBpZXRm
Lm9yZw0KPiBTdWJqZWN0OiByaWZ0IC0gUmVxdWVzdGVkIHNlc3Npb24gaGFzIGJlZW4gc2NoZWR1
bGVkIGZvciBJRVRGIDEwOA0KPiANCj4gW0V4dGVybmFsIEVtYWlsLiBCZSBjYXV0aW91cyBvZiBj
b250ZW50XQ0KPiANCj4gDQo+IERlYXIgSmVmZiBUYW50c3VyYSwNCj4gDQo+IFRoZSBzZXNzaW9u
KHMpIHRoYXQgeW91IGhhdmUgcmVxdWVzdGVkIGhhdmUgYmVlbiBzY2hlZHVsZWQuDQo+IEJlbG93
IGlzIHRoZSBzY2hlZHVsZWQgc2Vzc2lvbiBpbmZvcm1hdGlvbiBmb2xsb3dlZCBieSB0aGUgb3Jp
Z2luYWwgcmVxdWVzdC4NCj4gDQo+IA0KPiAgICByaWZ0IFNlc3Npb24gMSAoMDo1MCByZXF1ZXN0
ZWQpDQo+ICAgIFdlZG5lc2RheSwgMjkgSnVseSAyMDIwLCBTZXNzaW9uIElJIDEzMDAtMTM1MA0K
PiAgICBSb29tIE5hbWU6IFJvb20gNCBzaXplOiA0DQo+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gDQo+IGlDYWxlbmRhcjogaHR0cHM6Ly91
cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvbWVldGluZy8x
MDgvc2Vzc2lvbnMvcmlmdC5pY3NfXzshIU5FdDZ5TWFPLWdrIVJoTmtVR3Zac3BCcHEyY1Z6OWRH
UDhqdV9TelFlWldneEh2cGt0dXZTRmpydnZUQkJsRTNuaWdobHFqMENwcVgkDQo+IA0KPiBSZXF1
ZXN0IEluZm9ybWF0aW9uOg0KPiANCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBXb3JraW5nIEdyb3VwIE5hbWU6IFJvdXRp
bmcgSW4gRmF0IFRyZWVzIEFyZWEgTmFtZTogUm91dGluZyBBcmVhIFNlc3Npb24gUmVxdWVzdGVy
OiBKZWZmIFRhbnRzdXJhDQo+IA0KPiANCj4gTnVtYmVyIG9mIFNlc3Npb25zOiAxDQo+IExlbmd0
aCBvZiBTZXNzaW9uKHMpOiAgNTAgTWludXRlcw0KPiBOdW1iZXIgb2YgQXR0ZW5kZWVzOiBOb25l
DQo+IENvbmZsaWN0cyB0byBBdm9pZDoNCj4gQ2hhaXIgQ29uZmxpY3Q6IGlkciBiaWVyIGJlc3Mg
bHNyIGxzdnIgbWJvbmVkIHBpbSBydGdhcmVhIHJ0Z3dnIHNwcmluZyB0ZWFzIG5tcmcNCj4gDQo+
IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IFBlb3BsZSB3aG8gbXVzdCBiZSBwcmVzZW50Og0KPiAg
QWx2YXJvIFJldGFuYQ0KPiAgWmhhb2h1aSAoSmVmZnJleSkgWmhhbmcNCj4gIEplZmYgVGFudHN1
cmENCj4gDQo+IFJlc291cmNlcyBSZXF1ZXN0ZWQ6DQo+IA0KPiBTcGVjaWFsIFJlcXVlc3RzOg0K
PiANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KPiBSSUZUIG1haWxpbmcgbGlzdA0KPiBSSUZUQGlldGYub3JnDQo+IGh0dHBzOi8vd3d3
LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vcmlmdA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXw0KUklGVCBtYWlsaW5nIGxpc3QNClJJRlRAaWV0Zi5v
cmcNCmh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vcmlmdA==


--=====_003_next=====
Content-Type: text/html ;
	charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBjbGFzcz0iemNvbnRlbnRSb3ciPjxwIHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LWZh
bWlseTphcmlhbDsiPkhpIGNoYWlycyw8L3A+PHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2ZvbnQt
ZmFtaWx5OmFyaWFsOyI+SSdkIGxpa2UgdG8gcHJlc2VudCB0aGUgdXBkYXRlIG9mIFJJRlQgeWFu
Zy4gNW1pbnMuPGJyPjwvcD48cCBzdHlsZT0iZm9udC1zaXplOjE0cHg7Zm9udC1mYW1pbHk6YXJp
YWw7Ij5UaGFua3MsPC9wPjxkaXYgY2xhc3M9InpNYWlsU2lnbiIgdW5vbmFtZWNoPSLlvKDlvoEw
MDAwNzk0MCIgdW5vbmFtZWVuPSJ6aGFuZyB6aGVuZzAwMDA3OTQwIj48ZGl2IGNsYXNzPSJ6TWFp
bFNpZ25Db250ZW50Ij48cCBzdHlsZT0ibWFyZ2luOjA7bGluZS1oZWlnaHQ6MjBweDsiPlNhbmR5
PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InpNYWlsRnJvbSI+PC9kaXY+PGRpdj48ZGl2IGNs
YXNzPSJ6aGlzdG9yeVJvdyIgc3R5bGU9ImRpc3BsYXk6YmxvY2siPjxkaXYgY2xhc3M9InpoaXN0
b3J5RGVzIiBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMjhweDsgbGluZS1oZWlnaHQ6IDI4
cHg7IGJhY2tncm91bmQtY29sb3I6ICNFMEU1RTk7IGNvbG9yOiAjMTM4OEZGOyB0ZXh0LWFsaWdu
OiBjZW50ZXI7IiBsYW5ndWFnZS1kYXRhPSJIaXN0b3J5T3JnVHh0Ij7ljp/lp4vpgq7ku7Y8L2Rp
dj48ZGl2IGlkPSJ6d3JpdGVIaXN0b3J5Q29udGFpbmVyIj48ZGl2IGNsYXNzPSJjb250cm9sLWdy
b3VwIHpoaXN0b3J5UGFuZWwiPjxkaXYgY2xhc3M9InpoaXN0b3J5SGVhZGVyIiBzdHlsZT0icGFk
ZGluZzogOHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNkY4OyI+PGRpdj48c3Ryb25nIGxhbmd1
YWdlLWRhdGE9Ikhpc3RvcnlTZW5kZXJUeHQiPuWPkeS7tuS6uu+8mjwvc3Ryb25nPjxzcGFuIGNs
YXNzPSJ6cmVhZFVzZXJOYW1lIj5Ub255UHJ6eWdpZW5kYSAmbHQ7dG9ueXNpZXRmQGdtYWlsLmNv
bSZndDs8L3NwYW4+PC9kaXY+PGRpdj48c3Ryb25nIGxhbmd1YWdlLWRhdGE9Ikhpc3RvcnlUT1R4
dCI+5pS25Lu25Lq677yaPC9zdHJvbmc+PHNwYW4gY2xhc3M9InpyZWFkVXNlck5hbWUiIHN0eWxl
PSJkaXNwbGF5OiBpbmxpbmU7Ij5CcnVubyBSaWpzbWFuICZsdDticnVub3JpanNtYW5AZ21haWwu
Y29tJmd0Ozs8L3NwYW4+PC9kaXY+PGRpdj48c3Ryb25nIGxhbmd1YWdlLWRhdGE9Ikhpc3RvcnlD
Q1R4dCI+5oqE6YCB5Lq677yaPC9zdHJvbmc+PHNwYW4gY2xhc3M9InpyZWFkVXNlck5hbWUiIHN0
eWxlPSJkaXNwbGF5OiBpbmxpbmU7Ij5qZWZmdGFudC5pZXRmQGdtYWlsLmNvbSAmbHQ7amVmZnRh
bnQuaWV0ZkBnbWFpbC5jb20mZ3Q7Ozwvc3Bhbj48c3BhbiBjbGFzcz0ienJlYWRVc2VyTmFtZSIg
c3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPnJpZnQtY2hhaXJzQGlldGYub3JnICZsdDtyaWZ0LWNo
YWlyc0BpZXRmLm9yZyZndDs7PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHls
ZT0iZGlzcGxheTogaW5saW5lOyI+cmlmdEBpZXRmLm9yZyAmbHQ7cmlmdEBpZXRmLm9yZyZndDs7
PC9zcGFuPjxzcGFuIGNsYXNzPSJ6cmVhZFVzZXJOYW1lIiBzdHlsZT0iZGlzcGxheTogaW5saW5l
OyI+SmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgJmx0O3p6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJj
LmlldGYub3JnJmd0Ozs8L3NwYW4+PC9kaXY+PGRpdj48c3Ryb25nIGxhbmd1YWdlLWRhdGE9Ikhp
c3RvcnlEYXRlVHh0Ij7ml6Ug5pyfIO+8mjwvc3Ryb25nPjxzcGFuIGNsYXNzPSIiPjIwMjDlubQw
N+aciDE25pelIDIwOjUyPC9zcGFuPjwvZGl2PjxkaXY+PHN0cm9uZyBsYW5ndWFnZS1kYXRhPSJI
aXN0b3J5U3ViamVjdFR4dCI+5Li7IOmimCDvvJo8L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWRU
aXRsZSI+PHN0cm9uZz5SZTogW1JpZnRdIEFnZW5kYSBjYWxsIGZvciBSSUZUQElFVEYxMDg8L3N0
cm9uZz48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiB6bWFpbGJ1c2luZXNzPSJidXNpbmVzc0V4dGVy
bmFsIj48L2Rpdj48ZGl2IGNsYXNzPSJ6aGlzdG9yeUNvbnRlbnQiPjxkaXY+X19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+UklGVCZuYnNwO21haWxpbmcm
bmJzcDtsaXN0PGJyPlJJRlRAaWV0Zi5vcmc8YnI+aHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1h
bi9saXN0aW5mby9yaWZ0PGJyPjxicj48ZGl2IGRpcj0ibHRyIj5taW5vciBzdHVmZiBvbiBzcGVj
LCByZXZpZXcgcm91bmRzLiBwcm9iYWJseSAxNSBtaW5zPGJyPjwvZGl2Pjxicj48ZGl2IGNsYXNz
PSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIFRodSwg
SnVsIDE2LCAyMDIwIGF0IDI6NDggUE0gQnJ1bm8gUmlqc21hbiAmbHQ7PGEgaHJlZj0ibWFpbHRv
OmJydW5vcmlqc21hbkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5icnVub3JpanNtYW5AZ21h
aWwuY29tPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9x
dW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29s
aWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij5SSUZUIG9wZW4gc291cmNlOiBu
ZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbXBsZW1lbnRhdGlvbiByZXBvcnQgYW5kIG90aGVyIHVw
ZGF0ZXMgKDEwIG1pbnV0ZXMpPGJyPjxicj4mZ3Q7IE9uIEp1bCAxNiwgMjAyMCwgYXQgMjozNCBQ
TSwgSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgJmx0O3p6aGFuZz08YSBocmVmPSJtYWlsdG86NDBq
dW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPjQwanVuaXBlci5uZXRA
ZG1hcmMuaWV0Zi5vcmc8L2E+Jmd0OyB3cm90ZTo8YnI+Jmd0OyA8YnI+Jmd0OyBIaSw8YnI+Jmd0
OyA8YnI+Jmd0OyBQbGVhc2Ugc2VlIHRoZSBzY2hlZHVsZWQgUklGVCBzZXNzaW9uIGJlbG93LCBh
bmQgcGxlYXNlIGxldCB0aGUgY2hhaXJzIGtub3cgaWYgeW91IGhhdmUgYW55IHRvcGljcyB0byBw
cmVzZW50L2Rpc2N1c3MuPGJyPiZndDsgPGJyPiZndDsgVGhhbmtzLjxicj4mZ3Q7IEplZmYgJmFt
cDsgSmVmZnJleTxicj4mZ3Q7IDxicj4mZ3Q7IDxicj4mZ3Q7IEp1bmlwZXIgQnVzaW5lc3MgVXNl
IE9ubHk8YnI+Jmd0OyA8YnI+Jmd0OyAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLTxicj4mZ3Q7
IEZyb206ICJJRVRGIFNlY3JldGFyaWF0IiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFnZW5kYUBpZXRm
Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmFnZW5kYUBpZXRmLm9yZzwvYT4mZ3Q7IDxicj4mZ3Q7IFNl
bnQ6IFRodXJzZGF5LCBKdWx5IDIsIDIwMjAgODoyMSBQTTxicj4mZ3Q7IFRvOiA8YSBocmVmPSJt
YWlsdG86cmlmdC1jaGFpcnNAaWV0Zi5vcmciIHRhcmdldD0iX2JsYW5rIj5yaWZ0LWNoYWlyc0Bp
ZXRmLm9yZzwvYT47IDxhIGhyZWY9Im1haWx0bzpqZWZmdGFudC5pZXRmQGdtYWlsLmNvbSIgdGFy
Z2V0PSJfYmxhbmsiPmplZmZ0YW50LmlldGZAZ21haWwuY29tPC9hPjxicj4mZ3Q7IENjOiA8YSBo
cmVmPSJtYWlsdG86YXJldGFuYS5pZXRmQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmFyZXRh
bmEuaWV0ZkBnbWFpbC5jb208L2E+OyA8YSBocmVmPSJtYWlsdG86cmlmdEBpZXRmLm9yZyIgdGFy
Z2V0PSJfYmxhbmsiPnJpZnRAaWV0Zi5vcmc8L2E+PGJyPiZndDsgU3ViamVjdDogcmlmdCAtIFJl
cXVlc3RlZCBzZXNzaW9uIGhhcyBiZWVuIHNjaGVkdWxlZCBmb3IgSUVURiAxMDg8YnI+Jmd0OyA8
YnI+Jmd0OyBbRXh0ZXJuYWwgRW1haWwuIEJlIGNhdXRpb3VzIG9mIGNvbnRlbnRdPGJyPiZndDsg
PGJyPiZndDsgPGJyPiZndDsgRGVhciBKZWZmIFRhbnRzdXJhLDxicj4mZ3Q7IDxicj4mZ3Q7IFRo
ZSBzZXNzaW9uKHMpIHRoYXQgeW91IGhhdmUgcmVxdWVzdGVkIGhhdmUgYmVlbiBzY2hlZHVsZWQu
PGJyPiZndDsgQmVsb3cgaXMgdGhlIHNjaGVkdWxlZCBzZXNzaW9uIGluZm9ybWF0aW9uIGZvbGxv
d2VkIGJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0Ljxicj4mZ3Q7IDxicj4mZ3Q7IDxicj4mZ3Q7Jm5i
c3A7ICZuYnNwOyByaWZ0IFNlc3Npb24gMSAoMDo1MCByZXF1ZXN0ZWQpPGJyPiZndDsmbmJzcDsg
Jm5ic3A7IFdlZG5lc2RheSwgMjkgSnVseSAyMDIwLCBTZXNzaW9uIElJIDEzMDAtMTM1MDxicj4m
Z3Q7Jm5ic3A7ICZuYnNwOyBSb29tIE5hbWU6IFJvb20gNCBzaXplOiA0PGJyPiZndDsmbmJzcDsg
Jm5ic3A7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4m
Z3Q7IDxicj4mZ3Q7IDxicj4mZ3Q7IGlDYWxlbmRhcjogPGEgaHJlZj0iaHR0cHM6Ly91cmxkZWZl
bnNlLmNvbS92My9fX2h0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvbWVldGluZy8xMDgvc2Vz
c2lvbnMvcmlmdC5pY3NfXzshIU5FdDZ5TWFPLWdrIVJoTmtVR3Zac3BCcHEyY1Z6OWRHUDhqdV9T
elFlWldneEh2cGt0dXZTRmpydnZUQkJsRTNuaWdobHFqMENwcVgkIiByZWw9Im5vcmVmZXJyZXIi
IHRhcmdldD0iX2JsYW5rIj5odHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9kYXRh
dHJhY2tlci5pZXRmLm9yZy9tZWV0aW5nLzEwOC9zZXNzaW9ucy9yaWZ0Lmljc19fOyEhTkV0NnlN
YU8tZ2shUmhOa1VHdlpzcEJwcTJjVno5ZEdQOGp1X1N6UWVaV2d4SHZwa3R1dlNGanJ2dlRCQmxF
M25pZ2hscWowQ3BxWCQ8L2E+PGJyPiZndDsgPGJyPiZndDsgUmVxdWVzdCBJbmZvcm1hdGlvbjo8
YnI+Jmd0OyA8YnI+Jmd0OyA8YnI+Jmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Jmd0OyBXb3JraW5nIEdyb3VwIE5hbWU6IFJv
dXRpbmcgSW4gRmF0IFRyZWVzIEFyZWEgTmFtZTogUm91dGluZyBBcmVhIFNlc3Npb24gUmVxdWVz
dGVyOiBKZWZmIFRhbnRzdXJhPGJyPiZndDsgPGJyPiZndDsgPGJyPiZndDsgTnVtYmVyIG9mIFNl
c3Npb25zOiAxPGJyPiZndDsgTGVuZ3RoIG9mIFNlc3Npb24ocyk6Jm5ic3A7IDUwIE1pbnV0ZXM8
YnI+Jmd0OyBOdW1iZXIgb2YgQXR0ZW5kZWVzOiBOb25lPGJyPiZndDsgQ29uZmxpY3RzIHRvIEF2
b2lkOjxicj4mZ3Q7IENoYWlyIENvbmZsaWN0OiBpZHIgYmllciBiZXNzIGxzciBsc3ZyIG1ib25l
ZCBwaW0gcnRnYXJlYSBydGd3ZyBzcHJpbmcgdGVhcyBubXJnPGJyPiZndDsgPGJyPiZndDsgPGJy
PiZndDsgPGJyPiZndDsgPGJyPiZndDsgPGJyPiZndDsgPGJyPiZndDsgPGJyPiZndDsgUGVvcGxl
IHdobyBtdXN0IGJlIHByZXNlbnQ6PGJyPiZndDsmbmJzcDsgQWx2YXJvIFJldGFuYTxicj4mZ3Q7
Jm5ic3A7IFpoYW9odWkgKEplZmZyZXkpIFpoYW5nPGJyPiZndDsmbmJzcDsgSmVmZiBUYW50c3Vy
YTxicj4mZ3Q7IDxicj4mZ3Q7IFJlc291cmNlcyBSZXF1ZXN0ZWQ6PGJyPiZndDsgPGJyPiZndDsg
U3BlY2lhbCBSZXF1ZXN0czo8YnI+Jmd0OyA8YnI+Jmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Jmd0OyA8YnI+Jmd0OyBfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4mZ3Q7IFJJRlQg
bWFpbGluZyBsaXN0PGJyPiZndDsgPGEgaHJlZj0ibWFpbHRvOlJJRlRAaWV0Zi5vcmciIHRhcmdl
dD0iX2JsYW5rIj5SSUZUQGlldGYub3JnPC9hPjxicj4mZ3Q7IDxhIGhyZWY9Imh0dHBzOi8vd3d3
LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vcmlmdCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9
Il9ibGFuayI+aHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0PC9hPjxi
cj48YnI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+
UklGVCBtYWlsaW5nIGxpc3Q8YnI+PGEgaHJlZj0ibWFpbHRvOlJJRlRAaWV0Zi5vcmciIHRhcmdl
dD0iX2JsYW5rIj5SSUZUQGlldGYub3JnPC9hPjxicj48YSBocmVmPSJodHRwczovL3d3dy5pZXRm
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3JpZnQiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxh
bmsiPmh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vcmlmdDwvYT48YnI+PC9i
bG9ja3F1b3RlPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxwPjxi
cj48L3A+PC9kaXY+


--=====_003_next=====--

--=====_002_next=====--

--=====_001_next=====--


From nobody Mon Jul 20 05:25:44 2020
Return-Path: <zzhang@juniper.net>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5E9693A0870 for <rift@ietfa.amsl.com>; Mon, 20 Jul 2020 05:25:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=y9H4ninJ; dkim=pass (1024-bit key) header.d=juniper.net header.b=JQaSbxG7
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kAWbrFWGpLIE for <rift@ietfa.amsl.com>; Mon, 20 Jul 2020 05:25:41 -0700 (PDT)
Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 57C733A086F for <rift@ietf.org>; Mon, 20 Jul 2020 05:25:41 -0700 (PDT)
Received: from pps.filterd (m0108162.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 06KCHXYN013963 for <rift@ietf.org>; Mon, 20 Jul 2020 05:25:39 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : subject : date : message-id : content-type : mime-version; s=PPS1017; bh=IiICUPR/8PZjRxqHvVJeAetl8w0N7Ht47YMdv9MTNPM=; b=y9H4ninJWnROHVefXIu64/fLeyD/Ps8iLBuiuYHKSVmjgQ4UNDFnAN8OUIQ5lkM1M7mX RMGdTEfiSt4LgkY3WD2OGcaRAWYzSwnaZTn77b9fjyR/knsCMQCgHuEsJ+A3M47DT3++ geGiuUFL/gaVSrAKJMxA8YIvReBGMXexRsEqqi8GY9+msBFo32jWaC2ANaJkiWPMXf++ IW3chB2hqkdXIacu0CrqAP2bX1QZhUYB5FwD+fvcfj5vtXGd76t+eSR/fP3y1rhSoVCy +X1SN1E/f1T5bd5KNmShDvcU/+Gqnb8I4C/JPBgZb16DR82mNTj6wJPyi+U2wx8W4fuu RQ== 
Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2172.outbound.protection.outlook.com [104.47.56.172]) by mx0b-00273201.pphosted.com with ESMTP id 32byb8tc3h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <rift@ietf.org>; Mon, 20 Jul 2020 05:25:39 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OFCrD4dFZuTDGvs5yBuo2p6csFR2XUDFZO1Bt8MwXKa7ihWWMWSoPFfB+cRfeiMR3aGKztNfilaNQ1Mj6D0DLcQtGvccBQkWN3kzcT6yZngpmi9NjtQF0+St5RGYlSK4+g7K/UeEoHS9+tbDEfWEsCCw2OO/llicoagFAwLXfjtd8vFQZPQXpblxs+tBm6OtpY3tiNs6If/dcIu2Nbvu2M+G1ytCO9a6dXCy7NXXh37+ThkSzATZJUqpLCZV5mUVYNhUzBz/USy8tb04bkyZjYhApIzET/2a0k1Z/8PfA5EKoKPmC8QdUa+hsngJJ62jijRUFP7bseumybc3k90pZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;  s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IiICUPR/8PZjRxqHvVJeAetl8w0N7Ht47YMdv9MTNPM=; b=m00D4z+RGSYMSFuSbLUp6r6xuEUlnUhPvmDcJhqDOH6ZjQ9tWzbsvzJonRzUfIp8F8sr9cWvv9HkP1lu4Jzderiguser49MbvW+fVlB0JZz5W+emdh4kgtw83IE8Q1Oy2WdYUNWVZN1qZyUN2/oWcyu2056HBHsY4sRPu1CKJOrL7iPL26H112JVikHhRm8uy2HBiG4uYZCAH+x/u53P1aD86P2u5pJz4INfpMcwlezHdkbr61H3n5ZOG91QPHTPYuNdpyzORgqjNhtDPJ2evZgZ2sRz0MH2aK930ZUj7DRXyiLI3jJ8ypGG2oqDBOLrTix2/e4Np5FzDBod2A+xZA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IiICUPR/8PZjRxqHvVJeAetl8w0N7Ht47YMdv9MTNPM=; b=JQaSbxG7vDWhcHv5iJ5i6vbFNXbkjzbPbTZ0KJL0rmo45hDFPx+gzKTyiv+R7aeOH0u6k5ybN2XRROV1vc7lKCzmpgmTQWFsB8MwdtEz9ampOapb5MX7KINpgCfxeloyCuVaa/DMVx5okiXEAjKWrXDxivq849ch+KLu2RBqLa0=
Received: from MN2PR05MB5981.namprd05.prod.outlook.com (2603:10b6:208:c3::15) by MN2PR05MB6463.namprd05.prod.outlook.com (2603:10b6:208:d5::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.17; Mon, 20 Jul 2020 12:25:37 +0000
Received: from MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191]) by MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191%5]) with mapi id 15.20.3216.017; Mon, 20 Jul 2020 12:25:36 +0000
From: "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>
To: "rift@ietf.org" <rift@ietf.org>
Thread-Topic: Preliminary Agenda Posted
Thread-Index: AdZekMGwtc1IrUw5QiemKkKkKhUl2Q==
Date: Mon, 20 Jul 2020 12:25:36 +0000
Message-ID: <MN2PR05MB5981C05D060760A25FC8D026D47B0@MN2PR05MB5981.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2020-07-20T12:25:34Z;  MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=0633b888-ae0d-4341-a75f-06e04137d755; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=5d68cf7c-deab-44aa-8ab7-3e08882809fb; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=2
dlp-product: dlpe-windows
dlp-version: 11.3.2.8
dlp-reaction: no-action
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=juniper.net;
x-originating-ip: [71.248.165.31]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: dd41d37b-e098-43c1-017c-08d82ca801d8
x-ms-traffictypediagnostic: MN2PR05MB6463:
x-microsoft-antispam-prvs: <MN2PR05MB6463F628640B668136BA8302D47B0@MN2PR05MB6463.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:93;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: YC+RoFqudev+w3MAJuk62NXdnKq8S0m7AACIUGFVlsjYb+PgSRJW0B5q0O1X4651hgBDDkqLxC910hq0AbO4022ARRR51aeG0c8+dOD114B8Q8t1MYsU2L04xN5ACvcKoteckewtkjiAfrXKDhydTaE3L4BdScbqyH3lZflYUV9VLRhEdUew1goyjS1xIoYeMfMSRQRku8ednGyR/qd3YoHk7L+3cAKVssVIPgXmghhW4hcHDFBlzy+Yx4IFXGfA/V1sP9ZerQLUi3KUdDaQTRHiML27AHIWJQnesOSqER59G7ABaVz+OBoP3X4NF+3ZJcOCeRczjH0UPGtmEkbN7x81SfYOzz8HPlP75Fa3pmISKwL1MUzXfjYFORtKrnD5xRaKWzUNb1yV25NYg9mAXA==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;  IPV:NLI; SFV:NSPM; H:MN2PR05MB5981.namprd05.prod.outlook.com; PTR:; CAT:NONE;  SFTY:; SFS:(4636009)(39860400002)(376002)(136003)(346002)(366004)(396003)(3480700007)(5660300002)(6916009)(55016002)(52536014)(7116003)(86362001)(83380400001)(316002)(478600001)(966005)(76116006)(9686003)(66476007)(6506007)(66556008)(8676002)(66446008)(33656002)(64756008)(166002)(71200400001)(53546011)(26005)(7696005)(9326002)(8936002)(186003)(66946007)(2906002); DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: 9GTTYezzqde1QDVFHKJltu4fve792l+YUWguEIWJvRONRl4hjq4lxtzOXlN+LvbhOjcg9DL3Wf0yNtuawpdYM0liqWhxjG/mXBn55u8fLlC9SOD3Zx1zdsHYDi6WFgh7oA21Xtoe6R/3mfQB11hEgB8+0BVM/L6P9HQ2IgNZPhC4ImBFUpiwYI6n1G7e4g505jci0qErEQq3ifraLiQmOV3ca80y5y2Y73cTWlxSvdnfFPcCjHvrf1i7sT120yxxuxDDhxFYV2GOmRrOLRlCJmRQuwynnuDNI9aVKTnSj2gceYyDUD9LAqKWNzapc7mgfCin/ttuDHXa/3r9SGEMziHniYXQb3/eoDySaQOBK78ykGbWVdEOeqXwXUj53wxoEk1HQJD9vs2QOqJfmY4BvfRzQoB8Pu6eCmd8BYic7KAvAI7BQcn02oaEwheEs0gQURdWU7n4q5+9X+iSifr8sr5jSrer4/ac+luBcvvNqiPyrOLB5m4LQC+UzJIQCfOj
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_MN2PR05MB5981C05D060760A25FC8D026D47B0MN2PR05MB5981namp_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN2PR05MB5981.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dd41d37b-e098-43c1-017c-08d82ca801d8
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2020 12:25:36.9106 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jCJkpxubp/gPOGwiFhiqgfsMguZDlreGxAcuEiZXRXCGTOMQ2Dh3khT/laH9KA909KyPGVemyF6Lm7nFCUUXyg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR05MB6463
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-20_07:2020-07-20, 2020-07-20 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 suspectscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 impostorscore=0 malwarescore=0 clxscore=1015 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2007200085
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/bM9x1xUFpr6ArG78YPXG_MERNyI>
Subject: [Rift] Preliminary Agenda Posted
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Jul 2020 12:25:43 -0000

--_000_MN2PR05MB5981C05D060760A25FC8D026D47B0MN2PR05MB5981namp_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGksDQoNCknigJl2ZSBwb3N0ZWQgdGhlIHByZWxpbWluYXJ5IGFnZW5kYTogaHR0cHM6Ly93d3cu
aWV0Zi5vcmcvcHJvY2VlZGluZ3MvMTA4L2FnZW5kYS9hZ2VuZGEtMTA4LXJpZnQtMDANCg0KLSBC
YXNlIHNwZWMgdXBkYXRlLCBUb255LCAxNSBtaW51dGVzDQotIE9wZW4gc291cmNlIHVwZGF0ZSwg
QnJ1bm8sIDE1IG1pbnV0ZXMNCi0gTXVsdGljYXN0IHVwZGF0ZSwgSmVmZnJleSAmIFBhc2NhbCwg
MTUgbWludXRlcw0KLSBZQU5HIHVwZGF0ZSwgU2FuZHksIDUgbWludXRlcw0KDQpUaGFua3MhDQpK
ZWZmcmV5DQoNCg0KDQpKdW5pcGVyIEJ1c2luZXNzIFVzZSBPbmx5DQpGcm9tOiB6aGFuZy56aGVu
Z0B6dGUuY29tLmNuIDx6aGFuZy56aGVuZ0B6dGUuY29tLmNuPg0KU2VudDogRnJpZGF5LCBKdWx5
IDE3LCAyMDIwIDI6NTEgQU0NClRvOiBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyA8enpoYW5nQGp1
bmlwZXIubmV0PjsgamVmZnRhbnQuaWV0ZkBnbWFpbC5jb20NCkNjOiBicnVub3JpanNtYW5AZ21h
aWwuY29tOyByaWZ0LWNoYWlyc0BpZXRmLm9yZzsgcmlmdEBpZXRmLm9yZzsgdG9ueXNpZXRmQGdt
YWlsLmNvbQ0KU3ViamVjdDogUmU6W1JpZnRdIEFnZW5kYSBjYWxsIGZvciBSSUZUQElFVEYxMDgN
Cg0KW0V4dGVybmFsIEVtYWlsLiBCZSBjYXV0aW91cyBvZiBjb250ZW50XQ0KDQoNCkhpIGNoYWly
cywNCg0KSSdkIGxpa2UgdG8gcHJlc2VudCB0aGUgdXBkYXRlIG9mIFJJRlQgeWFuZy4gNW1pbnMu
DQoNClRoYW5rcywNCg0KU2FuZHkNCuWOn+Wni+mCruS7tg0K5Y+R5Lu25Lq677yaVG9ueVByenln
aWVuZGEgPHRvbnlzaWV0ZkBnbWFpbC5jb208bWFpbHRvOnRvbnlzaWV0ZkBnbWFpbC5jb20+Pg0K
5pS25Lu25Lq677yaQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGdtYWlsLmNvbTxtYWlsdG86
YnJ1bm9yaWpzbWFuQGdtYWlsLmNvbT4+Ow0K5oqE6YCB5Lq677yaamVmZnRhbnQuaWV0ZkBnbWFp
bC5jb208bWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tPiA8amVmZnRhbnQuaWV0ZkBnbWFp
bC5jb208bWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tPj47cmlmdC1jaGFpcnNAaWV0Zi5v
cmcgPHJpZnQtY2hhaXJzQGlldGYub3JnPG1haWx0bzpyaWZ0LWNoYWlyc0BpZXRmLm9yZz4+O3Jp
ZnRAaWV0Zi5vcmcgPHJpZnRAaWV0Zi5vcmc8bWFpbHRvOnJpZnRAaWV0Zi5vcmc+PjtKZWZmcmV5
IChaaGFvaHVpKSBaaGFuZyA8enpoYW5nPTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8bWFp
bHRvOnp6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj47DQrml6Ug5pyfIO+8mjIw
MjDlubQwN+aciDE25pelIDIwOjUyDQrkuLsg6aKYIO+8mlJlOiBbUmlmdF0gQWdlbmRhIGNhbGwg
Zm9yIFJJRlRASUVURjEwOA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18NClJJRlQgbWFpbGluZyBsaXN0DQpSSUZUQGlldGYub3JnPG1haWx0bzpSSUZUQGll
dGYub3JnPg0KaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0DQptaW5v
ciBzdHVmZiBvbiBzcGVjLCByZXZpZXcgcm91bmRzLiBwcm9iYWJseSAxNSBtaW5zDQoNCk9uIFRo
dSwgSnVsIDE2LCAyMDIwIGF0IDI6NDggUE0gQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGdt
YWlsLmNvbTxtYWlsdG86YnJ1bm9yaWpzbWFuQGdtYWlsLmNvbT4+IHdyb3RlOg0KUklGVCBvcGVu
IHNvdXJjZTogbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW1wbGVtZW50YXRpb24gcmVwb3J0IGFu
ZCBvdGhlciB1cGRhdGVzICgxMCBtaW51dGVzKQ0KDQo+IE9uIEp1bCAxNiwgMjAyMCwgYXQgMjoz
NCBQTSwgSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgPHp6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJj
LmlldGYub3JnPG1haWx0bzo0MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj4gd3JvdGU6DQo+
DQo+IEhpLA0KPg0KPiBQbGVhc2Ugc2VlIHRoZSBzY2hlZHVsZWQgUklGVCBzZXNzaW9uIGJlbG93
LCBhbmQgcGxlYXNlIGxldCB0aGUgY2hhaXJzIGtub3cgaWYgeW91IGhhdmUgYW55IHRvcGljcyB0
byBwcmVzZW50L2Rpc2N1c3MuDQo+DQo+IFRoYW5rcy4NCj4gSmVmZiAmIEplZmZyZXkNCj4NCj4N
Cj4gSnVuaXBlciBCdXNpbmVzcyBVc2UgT25seQ0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut
LS0tLQ0KPiBGcm9tOiAiSUVURiBTZWNyZXRhcmlhdCIgPGFnZW5kYUBpZXRmLm9yZzxtYWlsdG86
YWdlbmRhQGlldGYub3JnPj4NCj4gU2VudDogVGh1cnNkYXksIEp1bHkgMiwgMjAyMCA4OjIxIFBN
DQo+IFRvOiByaWZ0LWNoYWlyc0BpZXRmLm9yZzxtYWlsdG86cmlmdC1jaGFpcnNAaWV0Zi5vcmc+
OyBqZWZmdGFudC5pZXRmQGdtYWlsLmNvbTxtYWlsdG86amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20+
DQo+IENjOiBhcmV0YW5hLmlldGZAZ21haWwuY29tPG1haWx0bzphcmV0YW5hLmlldGZAZ21haWwu
Y29tPjsgcmlmdEBpZXRmLm9yZzxtYWlsdG86cmlmdEBpZXRmLm9yZz4NCj4gU3ViamVjdDogcmlm
dCAtIFJlcXVlc3RlZCBzZXNzaW9uIGhhcyBiZWVuIHNjaGVkdWxlZCBmb3IgSUVURiAxMDgNCj4N
Cj4gW0V4dGVybmFsIEVtYWlsLiBCZSBjYXV0aW91cyBvZiBjb250ZW50XQ0KPg0KPg0KPiBEZWFy
IEplZmYgVGFudHN1cmEsDQo+DQo+IFRoZSBzZXNzaW9uKHMpIHRoYXQgeW91IGhhdmUgcmVxdWVz
dGVkIGhhdmUgYmVlbiBzY2hlZHVsZWQuDQo+IEJlbG93IGlzIHRoZSBzY2hlZHVsZWQgc2Vzc2lv
biBpbmZvcm1hdGlvbiBmb2xsb3dlZCBieSB0aGUgb3JpZ2luYWwgcmVxdWVzdC4NCj4NCj4NCj4g
ICAgcmlmdCBTZXNzaW9uIDEgKDA6NTAgcmVxdWVzdGVkKQ0KPiAgICBXZWRuZXNkYXksIDI5IEp1
bHkgMjAyMCwgU2Vzc2lvbiBJSSAxMzAwLTEzNTANCj4gICAgUm9vbSBOYW1lOiBSb29tIDQgc2l6
ZTogNA0KPiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
Cj4NCj4NCj4gaUNhbGVuZGFyOiBodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9k
YXRhdHJhY2tlci5pZXRmLm9yZy9tZWV0aW5nLzEwOC9zZXNzaW9ucy9yaWZ0Lmljc19fOyEhTkV0
NnlNYU8tZ2shUmhOa1VHdlpzcEJwcTJjVno5ZEdQOGp1X1N6UWVaV2d4SHZwa3R1dlNGanJ2dlRC
QmxFM25pZ2hscWowQ3BxWCQ8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi9kYXRh
dHJhY2tlci5pZXRmLm9yZy9tZWV0aW5nLzEwOC9zZXNzaW9ucy9yaWZ0Lmljc19fOyEhTkV0NnlN
YU8tZ2shUmhOa1VHdlpzcEJwcTJjVno5ZEdQOGp1X1N6UWVaV2d4SHZwa3R1dlNGanJ2dlRCQmxF
M25pZ2hscWowQ3BxWCQ+DQo+DQo+IFJlcXVlc3QgSW5mb3JtYXRpb246DQo+DQo+DQo+IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBX
b3JraW5nIEdyb3VwIE5hbWU6IFJvdXRpbmcgSW4gRmF0IFRyZWVzIEFyZWEgTmFtZTogUm91dGlu
ZyBBcmVhIFNlc3Npb24gUmVxdWVzdGVyOiBKZWZmIFRhbnRzdXJhDQo+DQo+DQo+IE51bWJlciBv
ZiBTZXNzaW9uczogMQ0KPiBMZW5ndGggb2YgU2Vzc2lvbihzKTogIDUwIE1pbnV0ZXMNCj4gTnVt
YmVyIG9mIEF0dGVuZGVlczogTm9uZQ0KPiBDb25mbGljdHMgdG8gQXZvaWQ6DQo+IENoYWlyIENv
bmZsaWN0OiBpZHIgYmllciBiZXNzIGxzciBsc3ZyIG1ib25lZCBwaW0gcnRnYXJlYSBydGd3ZyBz
cHJpbmcgdGVhcyBubXJnDQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+IFBlb3BsZSB3aG8gbXVzdCBi
ZSBwcmVzZW50Og0KPiAgQWx2YXJvIFJldGFuYQ0KPiAgWmhhb2h1aSAoSmVmZnJleSkgWmhhbmcN
Cj4gIEplZmYgVGFudHN1cmENCj4NCj4gUmVzb3VyY2VzIFJlcXVlc3RlZDoNCj4NCj4gU3BlY2lh
bCBSZXF1ZXN0czoNCj4NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQo+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fDQo+IFJJRlQgbWFpbGluZyBsaXN0DQo+IFJJRlRAaWV0Zi5vcmc8bWFp
bHRvOlJJRlRAaWV0Zi5vcmc+DQo+IGh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGlu
Zm8vcmlmdDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6L3d3dy5pZXRmLm9yZy9t
YWlsbWFuL2xpc3RpbmZvL3JpZnRfXzshIU5FdDZ5TWFPLWdrIVNRSDNVRGFlX2VxRGR5RDhGdW52
Ny11Z3djNGk1M0d4ekRsb2JNaVVKaTJ5Q3ptM3AyRkVuMHFLTTRtM3lHN2QkPg0KDQpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KUklGVCBtYWlsaW5nIGxp
c3QNClJJRlRAaWV0Zi5vcmc8bWFpbHRvOlJJRlRAaWV0Zi5vcmc+DQpodHRwczovL3d3dy5pZXRm
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3JpZnQ8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0
dHBzOi93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0X187ISFORXQ2eU1hTy1nayFT
UUgzVURhZV9lcURkeUQ4RnVudjctdWd3YzRpNTNHeHpEbG9iTWlVSmkyeUN6bTNwMkZFbjBxS000
bTN5RzdkJD4NCg0KDQo=

--_000_MN2PR05MB5981C05D060760A25FC8D026D47B0MN2PR05MB5981namp_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv
ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl
PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6
IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m
YWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAx
IDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUg
NSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxARGVuZ1hpYW4i
Ow0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZh
bWlseTpMYXRvOw0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiAzO30NCkBmb250LWZhY2UN
Cgl7Zm9udC1mYW1pbHk6Ik1pY3Jvc29mdCBZYUhlaSI7DQoJcGFub3NlLTE6MiAxMSA1IDMgMiAy
IDQgMiAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiXEBNaWNyb3NvZnQgWWFIZWki
O30NCi8qIFN0eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBk
aXYuTXNvTm9ybWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZv
bnQtc2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KYTps
aW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6
Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29I
eXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6cHVycGxl
Ow0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KcHJlDQoJe21zby1zdHlsZS1wcmlvcml0
eTo5OTsNCgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVmb3JtYXR0ZWQgQ2hhciI7DQoJbWFyZ2lu
OjBpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXplOjEwLjBwdDsNCglmb250
LWZhbWlseToiQ291cmllciBOZXciO30NCnNwYW4uSFRNTFByZWZvcm1hdHRlZENoYXINCgl7bXNv
LXN0eWxlLW5hbWU6IkhUTUwgUHJlZm9ybWF0dGVkIENoYXIiOw0KCW1zby1zdHlsZS1wcmlvcml0
eTo5OTsNCgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVmb3JtYXR0ZWQiOw0KCWZvbnQtZmFtaWx5
OiJDb3VyaWVyIE5ldyI7fQ0KcC5tc29ub3JtYWwwLCBsaS5tc29ub3JtYWwwLCBkaXYubXNvbm9y
bWFsMA0KCXttc28tc3R5bGUtbmFtZTptc29ub3JtYWw7DQoJbXNvLW1hcmdpbi10b3AtYWx0OmF1
dG87DQoJbWFyZ2luLXJpZ2h0OjBpbjsNCgltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsNCglt
YXJnaW4tbGVmdDowaW47DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJy
aSIsc2Fucy1zZXJpZjt9DQpzcGFuLnpyZWFkdXNlcm5hbWUNCgl7bXNvLXN0eWxlLW5hbWU6enJl
YWR1c2VybmFtZTt9DQpzcGFuLnpyZWFkdGl0bGUNCgl7bXNvLXN0eWxlLW5hbWU6enJlYWR0aXRs
ZTt9DQpzcGFuLkVtYWlsU3R5bGUyMg0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsN
Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgljb2xvcjp3aW5kb3d0ZXh0O30N
CnAubXNpcGZvb3RlcjMwYjNkNTM4LCBsaS5tc2lwZm9vdGVyMzBiM2Q1MzgsIGRpdi5tc2lwZm9v
dGVyMzBiM2Q1MzgNCgl7bXNvLXN0eWxlLW5hbWU6bXNpcGZvb3RlcjMwYjNkNTM4Ow0KCW1zby1t
YXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDowaW47DQoJbXNvLW1hcmdpbi1ib3R0
b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGluOw0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9u
dC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0
eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1zaXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2Vj
dGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJbWFyZ2luOjEuMGluIDEuMGluIDEuMGluIDEu
MGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpXb3JkU2VjdGlvbjE7fQ0KLS0+PC9zdHls
ZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQi
IHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+
PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0
IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFk
Pg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBj
bGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7O2NvbG9y
OmJsYWNrIj5IaSw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l
dyZxdW90Oztjb2xvcjpibGFjayI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q291cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2siPknigJl2ZSBwb3N0ZWQgdGhlIHBy
ZWxpbWluYXJ5IGFnZW5kYToNCjwvc3Bhbj48YSBocmVmPSJodHRwczovL3d3dy5pZXRmLm9yZy9w
cm9jZWVkaW5ncy8xMDgvYWdlbmRhL2FnZW5kYS0xMDgtcmlmdC0wMCI+aHR0cHM6Ly93d3cuaWV0
Zi5vcmcvcHJvY2VlZGluZ3MvMTA4L2FnZW5kYS9hZ2VuZGEtMTA4LXJpZnQtMDA8L2E+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv
dDs7Y29sb3I6YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJp
ZXIgTmV3JnF1b3Q7O2NvbG9yOmJsYWNrIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZh
bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90Oztjb2xvcjpibGFjayI+LSBCYXNlIHNwZWMgdXBk
YXRlLCBUb255LCAxNSBtaW51dGVzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2siPi0gT3BlbiBzb3VyY2UgdXBkYXRlLCBCcnVu
bywgMTUgbWludXRlczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg
TmV3JnF1b3Q7O2NvbG9yOmJsYWNrIj4tIE11bHRpY2FzdCB1cGRhdGUsIEplZmZyZXkgJmFtcDsg
UGFzY2FsLCAxNSBtaW51dGVzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291
cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2siPi0gWUFORyB1cGRhdGUsIFNhbmR5LCA1IG1pbnV0
ZXM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90Oztj
b2xvcjpibGFjayI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291
cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2siPlRoYW5rcyE8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250
LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90Oztjb2xvcjpibGFjayI+SmVmZnJleTxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFz
cz0ibXNpcGZvb3RlcjMwYjNkNTM4IiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luOjBpbjtt
YXJnaW4tYm90dG9tOi4wMDAxcHQ7dGV4dC1hbGlnbjpjZW50ZXIiPg0KPHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZTo3LjBwdDtjb2xvcjpibGFjayI+SnVuaXBlciBCdXNpbmVzcyBVc2UgT25seTwvc3Bh
bj48bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXIt
dG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48Yj5Gcm9tOjwvYj4gemhhbmcuemhlbmdAenRlLmNvbS5jbiAmbHQ7
emhhbmcuemhlbmdAenRlLmNvbS5jbiZndDsNCjxicj4NCjxiPlNlbnQ6PC9iPiBGcmlkYXksIEp1
bHkgMTcsIDIwMjAgMjo1MSBBTTxicj4NCjxiPlRvOjwvYj4gSmVmZnJleSAoWmhhb2h1aSkgWmhh
bmcgJmx0O3p6aGFuZ0BqdW5pcGVyLm5ldCZndDs7IGplZmZ0YW50LmlldGZAZ21haWwuY29tPGJy
Pg0KPGI+Q2M6PC9iPiBicnVub3JpanNtYW5AZ21haWwuY29tOyByaWZ0LWNoYWlyc0BpZXRmLm9y
ZzsgcmlmdEBpZXRmLm9yZzsgdG9ueXNpZXRmQGdtYWlsLmNvbTxicj4NCjxiPlN1YmplY3Q6PC9i
PiBSZTpbUmlmdF0gQWdlbmRhIGNhbGwgZm9yIFJJRlRASUVURjEwODxvOnA+PC9vOnA+PC9wPg0K
PC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEyLjBwdDtiYWNrZ3Jv
dW5kOiNGRkVCOUMiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5
OiZxdW90O0xhdG8mcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+W0V4dGVybmFsIEVtYWls
LiBCZSBjYXV0aW91cyBvZiBjb250ZW50XTxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L3A+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHA+
PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVv
dDssc2Fucy1zZXJpZiI+SGkgY2hhaXJzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNh
bnMtc2VyaWYiPkknZCBsaWtlIHRvIHByZXNlbnQgdGhlIHVwZGF0ZSBvZiBSSUZUIHlhbmcuIDVt
aW5zLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAu
NXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPlRoYW5rcyw8bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPGRpdj4NCjxwIHN0eWxlPSJtYXJnaW46MGluO21h
cmdpbi1ib3R0b206LjAwMDFwdDtsaW5lLWhlaWdodDoxNS4wcHQiPlNhbmR5PG86cD48L286cD48
L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBh
bGlnbj0iY2VudGVyIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MjEuMHB0
O2JhY2tncm91bmQ6I0UwRTVFOSI+DQo8c3BhbiBsYW5nPSJaSC1DTiIgc3R5bGU9ImZvbnQtZmFt
aWx5OiZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxMzg4RkYi
PuWOn+Wni+mCruS7tjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzEzODhGRiI+PG86cD48L286
cD48L3NwYW4+PC9wPg0KPGRpdiBpZD0iendyaXRlSGlzdG9yeUNvbnRhaW5lciI+DQo8ZGl2Pg0K
PGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iYmFja2dyb3VuZDojRjVG
NkY4Ij48c3Ryb25nPjxzcGFuIGxhbmc9IlpILUNOIiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7
TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LHNhbnMtc2VyaWYiPuWPkeS7tuS6uu+8mjwvc3Bhbj48L3N0
cm9uZz48c3BhbiBjbGFzcz0ienJlYWR1c2VybmFtZSI+VG9ueVByenlnaWVuZGEgJmx0OzxhIGhy
ZWY9Im1haWx0bzp0b255c2lldGZAZ21haWwuY29tIj50b255c2lldGZAZ21haWwuY29tPC9hPiZn
dDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIiBzdHlsZT0iYmFja2dyb3VuZDojRjVGNkY4Ij48c3Ryb25nPjxzcGFuIGxhbmc9IlpILUNO
IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LHNhbnMtc2Vy
aWYiPuaUtuS7tuS6uu+8mjwvc3Bhbj48L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWR1c2VybmFt
ZSI+QnJ1bm8gUmlqc21hbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJydW5vcmlqc21hbkBnbWFpbC5j
b20iPmJydW5vcmlqc21hbkBnbWFpbC5jb208L2E+Jmd0Ozs8L3NwYW4+PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iYmFja2dyb3VuZDoj
RjVGNkY4Ij48c3Ryb25nPjxzcGFuIGxhbmc9IlpILUNOIiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
b3Q7TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LHNhbnMtc2VyaWYiPuaKhOmAgeS6uu+8mjwvc3Bhbj48
L3N0cm9uZz48c3BhbiBjbGFzcz0ienJlYWR1c2VybmFtZSI+PGEgaHJlZj0ibWFpbHRvOmplZmZ0
YW50LmlldGZAZ21haWwuY29tIj5qZWZmdGFudC5pZXRmQGdtYWlsLmNvbTwvYT4gJmx0OzxhIGhy
ZWY9Im1haWx0bzpqZWZmdGFudC5pZXRmQGdtYWlsLmNvbSI+amVmZnRhbnQuaWV0ZkBnbWFpbC5j
b208L2E+Jmd0OztyaWZ0LWNoYWlyc0BpZXRmLm9yZw0KICZsdDs8YSBocmVmPSJtYWlsdG86cmlm
dC1jaGFpcnNAaWV0Zi5vcmciPnJpZnQtY2hhaXJzQGlldGYub3JnPC9hPiZndDs7cmlmdEBpZXRm
Lm9yZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnJpZnRAaWV0Zi5vcmciPnJpZnRAaWV0Zi5vcmc8L2E+
Jmd0OztKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnp6aGFuZz00
MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnIj56emhhbmc9NDBqdW5pcGVyLm5ldEBkbWFyYy5p
ZXRmLm9yZzwvYT4mZ3Q7Ozwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJiYWNrZ3JvdW5kOiNGNUY2RjgiPjxzdHJvbmc+PHNw
YW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNaWNyb3NvZnQgWWFIZWkm
cXVvdDssc2Fucy1zZXJpZiI+5pelPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFuZz0i
WkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYi
Pg0KPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250
LWZhbWlseTomcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssc2Fucy1zZXJpZiI+5pyfPC9zcGFu
Pjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTom
cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPg0KPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+
PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNaWNyb3NvZnQgWWFI
ZWkmcXVvdDssc2Fucy1zZXJpZiI+77yaPC9zcGFuPjwvc3Ryb25nPjIwMjA8c3BhbiBsYW5nPSJa
SC1DTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90OyxzYW5z
LXNlcmlmIj7lubQ8L3NwYW4+MDc8c3BhbiBsYW5nPSJaSC1DTiIgc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90OyxzYW5zLXNlcmlmIj7mnIg8L3NwYW4+MTY8c3Bh
biBsYW5nPSJaSC1DTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O01pY3Jvc29mdCBZYUhlaSZx
dW90OyxzYW5zLXNlcmlmIj7ml6U8L3NwYW4+DQogMjA6NTI8bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJiYWNrZ3JvdW5kOiNGNUY2Rjgi
PjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNaWNy
b3NvZnQgWWFIZWkmcXVvdDssc2Fucy1zZXJpZiI+5Li7PC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+
PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7
LHNhbnMtc2VyaWYiPg0KPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04i
IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssc2Fucy1zZXJp
ZiI+6aKYPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJm
b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPg0KPC9zcGFuPjwvc3Ry
b25nPjxzdHJvbmc+PHNwYW4gbGFuZz0iWkgtQ04iIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtN
aWNyb3NvZnQgWWFIZWkmcXVvdDssc2Fucy1zZXJpZiI+77yaPC9zcGFuPjwvc3Ryb25nPjxzdHJv
bmc+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp
ZiI+UmU6IFtSaWZ0XSBBZ2VuZGEgY2FsbCBmb3IgUklGVEBJRVRGMTA4PC9zcGFuPjwvc3Ryb25n
PjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTIuMHB0Ij5fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NClJJRlQmbmJzcDttYWlsaW5nJm5i
c3A7bGlzdDxicj4NCjxhIGhyZWY9Im1haWx0bzpSSUZUQGlldGYub3JnIj5SSUZUQGlldGYub3Jn
PC9hPjxicj4NCjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8v
cmlmdCI+aHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0PC9hPjxvOnA+
PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPm1pbm9yIHN0dWZmIG9uIHNw
ZWMsIHJldmlldyByb3VuZHMuIHByb2JhYmx5IDE1IG1pbnM8bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPk9uIFRodSwgSnVsIDE2LCAyMDIwIGF0IDI6NDggUE0g
QnJ1bm8gUmlqc21hbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJydW5vcmlqc21hbkBnbWFpbC5jb20i
IHRhcmdldD0iX2JsYW5rIj5icnVub3JpanNtYW5AZ21haWwuY29tPC9hPiZndDsgd3JvdGU6PG86
cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3Jk
ZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFy
Z2luLWxlZnQ6NC44cHQ7bWFyZ2luLXRvcDo1LjBwdDttYXJnaW4tcmlnaHQ6MGluO21hcmdpbi1i
b3R0b206NS4wcHQiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+UklGVCBvcGVuIHNvdXJjZTogbmVn
YXRpdmUgZGlzYWdncmVnYXRpb24gaW1wbGVtZW50YXRpb24gcmVwb3J0IGFuZCBvdGhlciB1cGRh
dGVzICgxMCBtaW51dGVzKTxicj4NCjxicj4NCiZndDsgT24gSnVsIDE2LCAyMDIwLCBhdCAyOjM0
IFBNLCBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyAmbHQ7enpoYW5nPTxhIGhyZWY9Im1haWx0bzo0
MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnIiB0YXJnZXQ9Il9ibGFuayI+NDBqdW5pcGVyLm5l
dEBkbWFyYy5pZXRmLm9yZzwvYT4mZ3Q7IHdyb3RlOjxicj4NCiZndDsgPGJyPg0KJmd0OyBIaSw8
YnI+DQomZ3Q7IDxicj4NCiZndDsgUGxlYXNlIHNlZSB0aGUgc2NoZWR1bGVkIFJJRlQgc2Vzc2lv
biBiZWxvdywgYW5kIHBsZWFzZSBsZXQgdGhlIGNoYWlycyBrbm93IGlmIHlvdSBoYXZlIGFueSB0
b3BpY3MgdG8gcHJlc2VudC9kaXNjdXNzLjxicj4NCiZndDsgPGJyPg0KJmd0OyBUaGFua3MuPGJy
Pg0KJmd0OyBKZWZmICZhbXA7IEplZmZyZXk8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJyPg0KJmd0
OyBKdW5pcGVyIEJ1c2luZXNzIFVzZSBPbmx5PGJyPg0KJmd0OyA8YnI+DQomZ3Q7IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tPGJyPg0KJmd0OyBGcm9tOiAmcXVvdDtJRVRGIFNlY3JldGFyaWF0
JnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86YWdlbmRhQGlldGYub3JnIiB0YXJnZXQ9Il9ibGFu
ayI+YWdlbmRhQGlldGYub3JnPC9hPiZndDsNCjxicj4NCiZndDsgU2VudDogVGh1cnNkYXksIEp1
bHkgMiwgMjAyMCA4OjIxIFBNPGJyPg0KJmd0OyBUbzogPGEgaHJlZj0ibWFpbHRvOnJpZnQtY2hh
aXJzQGlldGYub3JnIiB0YXJnZXQ9Il9ibGFuayI+cmlmdC1jaGFpcnNAaWV0Zi5vcmc8L2E+Ow0K
PGEgaHJlZj0ibWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+
amVmZnRhbnQuaWV0ZkBnbWFpbC5jb208L2E+PGJyPg0KJmd0OyBDYzogPGEgaHJlZj0ibWFpbHRv
OmFyZXRhbmEuaWV0ZkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5hcmV0YW5hLmlldGZAZ21h
aWwuY29tPC9hPjsNCjxhIGhyZWY9Im1haWx0bzpyaWZ0QGlldGYub3JnIiB0YXJnZXQ9Il9ibGFu
ayI+cmlmdEBpZXRmLm9yZzwvYT48YnI+DQomZ3Q7IFN1YmplY3Q6IHJpZnQgLSBSZXF1ZXN0ZWQg
c2Vzc2lvbiBoYXMgYmVlbiBzY2hlZHVsZWQgZm9yIElFVEYgMTA4PGJyPg0KJmd0OyA8YnI+DQom
Z3Q7IFtFeHRlcm5hbCBFbWFpbC4gQmUgY2F1dGlvdXMgb2YgY29udGVudF08YnI+DQomZ3Q7IDxi
cj4NCiZndDsgPGJyPg0KJmd0OyBEZWFyIEplZmYgVGFudHN1cmEsPGJyPg0KJmd0OyA8YnI+DQom
Z3Q7IFRoZSBzZXNzaW9uKHMpIHRoYXQgeW91IGhhdmUgcmVxdWVzdGVkIGhhdmUgYmVlbiBzY2hl
ZHVsZWQuPGJyPg0KJmd0OyBCZWxvdyBpcyB0aGUgc2NoZWR1bGVkIHNlc3Npb24gaW5mb3JtYXRp
b24gZm9sbG93ZWQgYnkgdGhlIG9yaWdpbmFsIHJlcXVlc3QuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7
IDxicj4NCiZndDsmbmJzcDsgJm5ic3A7IHJpZnQgU2Vzc2lvbiAxICgwOjUwIHJlcXVlc3RlZCk8
YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyBXZWRuZXNkYXksIDI5IEp1bHkgMjAyMCwgU2Vzc2lvbiBJ
SSAxMzAwLTEzNTA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyBSb29tIE5hbWU6IFJvb20gNCBzaXpl
OiA0PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgaUNhbGVuZGFy
OiA8YSBocmVmPSJodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6L2RhdGF0cmFja2Vy
LmlldGYub3JnL21lZXRpbmcvMTA4L3Nlc3Npb25zL3JpZnQuaWNzX187ISFORXQ2eU1hTy1nayFS
aE5rVUd2WnNwQnBxMmNWejlkR1A4anVfU3pRZVpXZ3hIdnBrdHV2U0ZqcnZ2VEJCbEUzbmlnaGxx
ajBDcHFYJCIgdGFyZ2V0PSJfYmxhbmsiPg0KaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0
dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvbWVldGluZy8xMDgvc2Vzc2lvbnMvcmlmdC5pY3Nf
XzshIU5FdDZ5TWFPLWdrIVJoTmtVR3Zac3BCcHEyY1Z6OWRHUDhqdV9TelFlWldneEh2cGt0dXZT
RmpydnZUQkJsRTNuaWdobHFqMENwcVgkPC9hPjxicj4NCiZndDsgPGJyPg0KJmd0OyBSZXF1ZXN0
IEluZm9ybWF0aW9uOjxicj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCiZndDsg
V29ya2luZyBHcm91cCBOYW1lOiBSb3V0aW5nIEluIEZhdCBUcmVlcyBBcmVhIE5hbWU6IFJvdXRp
bmcgQXJlYSBTZXNzaW9uIFJlcXVlc3RlcjogSmVmZiBUYW50c3VyYTxicj4NCiZndDsgPGJyPg0K
Jmd0OyA8YnI+DQomZ3Q7IE51bWJlciBvZiBTZXNzaW9uczogMTxicj4NCiZndDsgTGVuZ3RoIG9m
IFNlc3Npb24ocyk6Jm5ic3A7IDUwIE1pbnV0ZXM8YnI+DQomZ3Q7IE51bWJlciBvZiBBdHRlbmRl
ZXM6IE5vbmU8YnI+DQomZ3Q7IENvbmZsaWN0cyB0byBBdm9pZDo8YnI+DQomZ3Q7IENoYWlyIENv
bmZsaWN0OiBpZHIgYmllciBiZXNzIGxzciBsc3ZyIG1ib25lZCBwaW0gcnRnYXJlYSBydGd3ZyBz
cHJpbmcgdGVhcyBubXJnPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJyPg0KJmd0
OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IFBlb3BsZSB3aG8g
bXVzdCBiZSBwcmVzZW50Ojxicj4NCiZndDsmbmJzcDsgQWx2YXJvIFJldGFuYTxicj4NCiZndDsm
bmJzcDsgWmhhb2h1aSAoSmVmZnJleSkgWmhhbmc8YnI+DQomZ3Q7Jm5ic3A7IEplZmYgVGFudHN1
cmE8YnI+DQomZ3Q7IDxicj4NCiZndDsgUmVzb3VyY2VzIFJlcXVlc3RlZDo8YnI+DQomZ3Q7IDxi
cj4NCiZndDsgU3BlY2lhbCBSZXF1ZXN0czo8YnI+DQomZ3Q7IDxicj4NCiZndDsgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KJmd0
OyA8YnI+DQomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fPGJyPg0KJmd0OyBSSUZUIG1haWxpbmcgbGlzdDxicj4NCiZndDsgPGEgaHJlZj0ibWFpbHRv
OlJJRlRAaWV0Zi5vcmciIHRhcmdldD0iX2JsYW5rIj5SSUZUQGlldGYub3JnPC9hPjxicj4NCiZn
dDsgPGEgaHJlZj0iaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi93d3cuaWV0Zi5v
cmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0X187ISFORXQ2eU1hTy1nayFTUUgzVURhZV9lcURkeUQ4
RnVudjctdWd3YzRpNTNHeHpEbG9iTWlVSmkyeUN6bTNwMkZFbjBxS000bTN5RzdkJCIgdGFyZ2V0
PSJfYmxhbmsiPg0KaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0PC9h
Pjxicj4NCjxicj4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fPGJyPg0KUklGVCBtYWlsaW5nIGxpc3Q8YnI+DQo8YSBocmVmPSJtYWlsdG86UklGVEBpZXRm
Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPlJJRlRAaWV0Zi5vcmc8L2E+PGJyPg0KPGEgaHJlZj0iaHR0
cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0
aW5mby9yaWZ0X187ISFORXQ2eU1hTy1nayFTUUgzVURhZV9lcURkeUQ4RnVudjctdWd3YzRpNTNH
eHpEbG9iTWlVSmkyeUN6bTNwMkZFbjBxS000bTN5RzdkJCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBz
Oi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vcmlmdDwvYT48bzpwPjwvbzpwPjwvcD4N
CjwvYmxvY2txdW90ZT4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8
L2Rpdj4NCjwvZGl2Pg0KPHA+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0K
PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo=

--_000_MN2PR05MB5981C05D060760A25FC8D026D47B0MN2PR05MB5981namp_--


From nobody Sat Jul 25 09:44:18 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 927143A0AE1 for <rift@ietfa.amsl.com>; Sat, 25 Jul 2020 09:44:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ze1gQ19K08zX for <rift@ietfa.amsl.com>; Sat, 25 Jul 2020 09:44:15 -0700 (PDT)
Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 18CAF3A0C32 for <rift@ietf.org>; Sat, 25 Jul 2020 09:44:15 -0700 (PDT)
Received: by mail-ej1-x644.google.com with SMTP id c10so4824855ejs.5 for <rift@ietf.org>; Sat, 25 Jul 2020 09:44:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:mime-version:subject:message-id:date:to; bh=rIiq0wniQY91UM2D78es4s68SlWnu2vyPIrlYHJ8GLk=; b=OoWytqZM0fGX1wouSIeWErzaVDr7p1DrQQoqR8pYAb5g21IDsNBhjZvArPCcOzY2gB RTy7kXcMSp6Vl2WNnYVQtUNRtgtmHNi2UyWhcD7AyrchExeHw59ixcRSQw6FVgximGc2 H+DhV7LAGoCLdkJZZQW5IhgVIyOjUkTOTZbKIK/CYG7FI0MzQ9vqayk/QrPeVywzs+bT FjCgJDDDfLPrubZ7KBJpnMnzbfN4D1Uqwx5NFVnhPSnuYa6R/GCXka49PXP2xa/vMgQq nhpYRrESeegBwzSOOaRz0JEqh1E62owUh1ew/JY+6BfLBEnuHkCYtQPXtAJery+M7NEW 8CMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=rIiq0wniQY91UM2D78es4s68SlWnu2vyPIrlYHJ8GLk=; b=Twqayp16QI1LKZYl1QSAPimSDYdDT0gPcnlQzC2uUXTE7XwH6QpMLRd7mSfnAcYLVP XCgs9pYg9StutUFiIxC6yKHY4rHWSc8PYpM8ILuLqYoGaCaZaFL80eY3GQF/x9ZG3KCk FkXzP+c3Jn9QBT/wwXp/Mt1XJbPJWhGMDIh46eb8ri62994AlT/mAKuoADai9Y7+fAa7 JftWzXB7J5AtnYFmzz21Fgi8mdHv4WbmJ4aQNL/8lXDu+zghDbdRzqY0zVT7pH+PrIJx WpVkk+pz4d77r3WaqIr5fsN0/I07pr+KgWivbQ3PgcAJ7025f90wxr0NPSKV8zhxjqHq yahA==
X-Gm-Message-State: AOAM5333ypa6KGOzV5rllEOemv3IUl2C7qwEa/eOnXzqPcikLqUThwNw A+7KN2Rr443iSQyiB2vzU0cshMl4JnU=
X-Google-Smtp-Source: ABdhPJymlQs/qnSvexIxlKwyXBQsygiN6KTevg2u5RQPJ7eL6banwKS0MpUKeQQI/04y64/vr16ycA==
X-Received: by 2002:a17:906:edbb:: with SMTP id sa27mr14881516ejb.438.1595695452890;  Sat, 25 Jul 2020 09:44:12 -0700 (PDT)
Received: from [192.168.1.100] (84-31-170-55.cable.dynamic.v4.ziggo.nl. [84.31.170.55]) by smtp.gmail.com with ESMTPSA id sd15sm3107264ejb.66.2020.07.25.09.44.12 for <rift@ietf.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jul 2020 09:44:12 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_3DC82DAF-4277-4231-941D-022E842C3BEC"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Message-Id: <A5DE1D42-F878-461A-A64F-84DB8678A46F@gmail.com>
Date: Sat, 25 Jul 2020 18:44:11 +0200
To: rift@ietf.org
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/TSlvvkFBWu4yi9QVmvm7Km3mnv4>
Subject: [Rift] RIFT Open Source Update Presentation (RIFT WG meeting IETF-108)
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 25 Jul 2020 16:44:17 -0000

--Apple-Mail=_3DC82DAF-4277-4231-941D-022E842C3BEC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Because IETF-108 is a pure virtual meeting, I went through the trouble =
of pre-recording my "RIFT Open Source Update" presentation scheduled for =
the RIFT working group meeting on  Wednesday.

Enjoy the "Sneak preview" ;-)

Video: https://www.youtube.com/watch?v=3DqhiiTDPuku0 =
<https://www.youtube.com/watch?v=3DqhiiTDPuku0>

Slides: https://bit.ly/rift-open-source-update-ietf-108 =
<https://bit.ly/rift-open-source-update-ietf-108>

=E2=80=94 Bruno Rijsman=

--Apple-Mail=_3DC82DAF-4277-4231-941D-022E842C3BEC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><div =
class=3D"">Because IETF-108 is a pure virtual meeting, I went through =
the trouble of pre-recording my "RIFT Open Source Update" presentation =
scheduled for the RIFT working group meeting on =
&nbsp;Wednesday.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Enjoy the "Sneak preview" ;-)</div><div class=3D""><br =
class=3D""></div><div class=3D"">Video:&nbsp;<a =
href=3D"https://www.youtube.com/watch?v=3DqhiiTDPuku0" =
class=3D"">https://www.youtube.com/watch?v=3DqhiiTDPuku0</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">Slides:&nbsp;<a =
href=3D"https://bit.ly/rift-open-source-update-ietf-108" =
class=3D"">https://bit.ly/rift-open-source-update-ietf-108</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">=E2=80=94 Bruno =
Rijsman</div></body></html>=

--Apple-Mail=_3DC82DAF-4277-4231-941D-022E842C3BEC--


From nobody Sat Jul 25 11:56:39 2020
Return-Path: <rraszuk@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B7FA13A092D for <rift@ietfa.amsl.com>; Sat, 25 Jul 2020 11:56:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5PjhCPKepHkT for <rift@ietfa.amsl.com>; Sat, 25 Jul 2020 11:56:36 -0700 (PDT)
Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com [IPv6:2607:f8b0:4864:20::72c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E5E3E3A0928 for <rift@ietf.org>; Sat, 25 Jul 2020 11:56:35 -0700 (PDT)
Received: by mail-qk1-x72c.google.com with SMTP id b79so11799661qkg.9 for <rift@ietf.org>; Sat, 25 Jul 2020 11:56:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IU/Gh+19mSBYanJ26yJXYlAtc0dDAbB8OiTB/RLFHro=; b=tI5HiTO9PmkPleDmnTrbD4YQTGYRFuKSCGpcJ6s6JhB2/sKhRVaVNhDzjshdELp7ia z/I5mhryPO1fJMv0O2PMIugvvEVs7RsG8IB04c2ETX+i/hWHixNLvCW+HOscmSug4IYu pJBAvfTbJjk+J7lBR7xzOXQsRNuKqTSi+Mk0HD3A5a6GU84KDlcL4drHVikGk7fkau9A BX65PhYfuzhQY4i/JBnVVL7JQLnqnC7vkbdoxWgDvHXfoF/KXfZkCAfvs762y7vOUEPQ mtQjF/XHCNS7u/pMbflEFHNfMGYPdXLrhfxVyLaT5W+491Q50c/+RudoYvxnuGLxvnc9 PKZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IU/Gh+19mSBYanJ26yJXYlAtc0dDAbB8OiTB/RLFHro=; b=FxKsDKb51HON3NNhHMWoMxKcPk5bf5d3UKM+zl/K6PqdKFoXBnQm/bKXLLNLfeCRfG r3UztbD3pyPv1jMb0sfqDiPwzJjmetZxYdws62RCIaB/97nc9/cHeOyFXVy+q81fehOW 269hNmmHBGHucchpM+lOUjUgZtwkEc58MzsImf621MXeTkqyITjbdb3OAkR5k4a6akn9 T5eN1LyZAtKqTrMVGc3/gqAP9shmVqW2xhKJnQ5yvY8gaVeKaFNEj99or4hapjPNCYS7 38g3ERc5MqIKNLw42VfU6shbda2x3imbG8hs6yOwmnyNEtzC7pZgVjIT0EBkbQEbgRll ZNGQ==
X-Gm-Message-State: AOAM530UHRx1Wp1odpuxIVZQIHIxyjds0ch6p8moCzl0/wpEw8qVaTUD gMN9J0ypUpNOflQ02sjQdnVmC9UgR/KDz9VEek32YNk+
X-Google-Smtp-Source: ABdhPJwcb5YgoODDGnNSnZAXOAAau+YMD7sJ7L+RCBA1WADKaKboBfOQV8zZA0BaMzRwhpE2TZdyefnaWKrc7fXZ/Pc=
X-Received: by 2002:a37:4048:: with SMTP id n69mr15491230qka.421.1595703394733;  Sat, 25 Jul 2020 11:56:34 -0700 (PDT)
MIME-Version: 1.0
References: <A5DE1D42-F878-461A-A64F-84DB8678A46F@gmail.com>
In-Reply-To: <A5DE1D42-F878-461A-A64F-84DB8678A46F@gmail.com>
From: Robert Raszuk <rraszuk@gmail.com>
Date: Sat, 25 Jul 2020 20:56:24 +0200
Message-ID: <CA+b+ERnUxtKvcDVP2KxLiSk3wHR_+1V75oDu=5bpSs2vDpw0dQ@mail.gmail.com>
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: rift@ietf.org
Content-Type: multipart/alternative; boundary="0000000000000292c605ab48a696"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/mvQE09K2H8iY9Ir-ZhnM2V3CwYw>
Subject: Re: [Rift] RIFT Open Source Update Presentation (RIFT WG meeting IETF-108)
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 25 Jul 2020 18:56:38 -0000

--0000000000000292c605ab48a696
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bruno,

This is excellent ! I wish everyone would prepare such video ahead of time
like you did.

One observation and few questions ...

* First let me observe that concept of negative routing in the control
plane is not new. As example - the proposals on that have been written many
years ago for BGP. Perhaps it is unfortunate that vendor did not choose to
pursue it in public at that time :) But it did pursue patents and
implementation for negative routing over low power and lossy networks.

* In your talk you describe the behaviour in rest of the network in regards
to negative routing. But how will leaf-1 in pod-1 receive negative routes
if the real trigger for them is based on control plane messages traveling
over horizontal links between super spines ?

* How do you stabilize/control control plane and data plane churn during
negative routing being triggered by link flapping (say one down and one
flapping in your example between pod 1 and plane 1) and no native link
dampening in place ?

* Is the load balancing spread based on the configured link bandwidth for
the interfaces ? If so it does not account for brownouts where fabric in
any network element itself or linecard partially fails and while say BFD or
RIFT still goes through the actual bandwidth for the data plane is severely
reduced. Any plans for this little enhancement ? :)

Thank you,
R.

PS. The FSM performance is a fantastic addition. I wish all code would have
such CLI :) But while we are at this is there some analysis how would
python-rift performance compare with say c-rift when dealing with say 1M to
10M routes fabric ? Case of no overlay and flat routing of /32s and /128s
all over the cluster.


On Sat, 25 Jul 2020 at 18:44, Bruno Rijsman <brunorijsman@gmail.com> wrote:

> Because IETF-108 is a pure virtual meeting, I went through the trouble of
> pre-recording my "RIFT Open Source Update" presentation scheduled for the
> RIFT working group meeting on  Wednesday.
>
> Enjoy the "Sneak preview" ;-)
>
> Video: https://www.youtube.com/watch?v=3DqhiiTDPuku0
>
> Slides: https://bit.ly/rift-open-source-update-ietf-108
>
> =E2=80=94 Bruno Rijsman
> _______________________________________________
> RIFT mailing list
> RIFT@ietf.org
> https://www.ietf.org/mailman/listinfo/rift
>

--0000000000000292c605ab48a696
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:arial,he=
lvetica,sans-serif;font-size:small">Hi Bruno,</div><div class=3D"gmail_defa=
ult" style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br><=
/div><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans=
-serif;font-size:small">This is excellent ! I wish everyone would prepare s=
uch video ahead of time like you did.=C2=A0</div><div class=3D"gmail_defaul=
t" style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br></d=
iv><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-s=
erif;font-size:small">One observation and few questions ...=C2=A0</div><div=
 class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif;fo=
nt-size:small"><br></div><div class=3D"gmail_default" style=3D"font-family:=
arial,helvetica,sans-serif;font-size:small">* First let me observe that con=
cept of negative routing in the control plane is not new. As example - the =
proposals on that have been written many years ago for BGP. Perhaps it is u=
nfortunate that vendor did not choose to pursue=C2=A0it in public at that t=
ime :) But it did pursue patents and implementation for negative routing ov=
er low power and lossy networks.</div><div class=3D"gmail_default" style=3D=
"font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div cla=
ss=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif;font-s=
ize:small">* In your talk you describe the behaviour in rest of the network=
 in regards to negative routing. But how=C2=A0will leaf-1 in pod-1 receive =
negative routes if the real trigger for them is based on control=C2=A0plane=
 messages traveling over horizontal links between super spines ?=C2=A0</div=
><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-ser=
if;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-fa=
mily:arial,helvetica,sans-serif;font-size:small">* How do you stabilize/con=
trol control plane and data plane churn during negative routing being trigg=
ered by link flapping (say one down and one flapping in your example betwee=
n pod 1 and plane 1) and no native link dampening in place ?=C2=A0</div><di=
v class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif;f=
ont-size:small"><br></div><div class=3D"gmail_default" style=3D"font-family=
:arial,helvetica,sans-serif;font-size:small">* Is the load balancing spread=
 based on the configured link bandwidth=C2=A0for the interfaces ? If so it =
does not account=C2=A0for brownouts where fabric in any network element its=
elf or linecard partially fails and while say BFD or RIFT still goes throug=
h the actual bandwidth=C2=A0for the data plane is severely reduced. Any pla=
ns for this little enhancement ? :)=C2=A0</div><div class=3D"gmail_default"=
 style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br></div=
><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-ser=
if;font-size:small">Thank you,<br>R.</div><div class=3D"gmail_default" styl=
e=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div=
 class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif;fo=
nt-size:small">PS. The FSM performance is a fantastic addition. I wish all =
code would have such CLI :) But while we are at this is there some analysis=
 how would python-rift performance compare with say c-rift when dealing wit=
h say 1M to 10M routes fabric ? Case of no overlay and flat routing of /32s=
 and /128s all over the cluster.=C2=A0</div><div class=3D"gmail_default" st=
yle=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br></div></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Sat, 25 Jul 2020 at 18:44, Bruno Rijsman &lt;<a href=3D"mailto:brunorijsma=
n@gmail.com">brunorijsman@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div style=3D"overflow-wrap: break-word;=
"><div>Because IETF-108 is a pure virtual meeting, I went through the troub=
le of pre-recording my &quot;RIFT Open Source Update&quot; presentation sch=
eduled for the RIFT working group meeting on =C2=A0Wednesday.</div><div><br=
></div><div>Enjoy the &quot;Sneak preview&quot; ;-)</div><div><br></div><di=
v>Video:=C2=A0<a href=3D"https://www.youtube.com/watch?v=3DqhiiTDPuku0" tar=
get=3D"_blank">https://www.youtube.com/watch?v=3DqhiiTDPuku0</a></div><div>=
<br></div><div>Slides:=C2=A0<a href=3D"https://bit.ly/rift-open-source-upda=
te-ietf-108" target=3D"_blank">https://bit.ly/rift-open-source-update-ietf-=
108</a></div><div><br></div><div>=E2=80=94 Bruno Rijsman</div></div>_______=
________________________________________<br>
RIFT mailing list<br>
<a href=3D"mailto:RIFT@ietf.org" target=3D"_blank">RIFT@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/rift" rel=3D"noreferrer" t=
arget=3D"_blank">https://www.ietf.org/mailman/listinfo/rift</a><br>
</blockquote></div>

--0000000000000292c605ab48a696--


From nobody Mon Jul 27 05:06:56 2020
Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F0C803A190D for <rift@ietfa.amsl.com>; Mon, 27 Jul 2020 05:06:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eq2Q-c53RfHN for <rift@ietfa.amsl.com>; Mon, 27 Jul 2020 05:06:47 -0700 (PDT)
Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9B5BE3A190C for <rift@ietf.org>; Mon, 27 Jul 2020 05:06:46 -0700 (PDT)
Received: by mail-ej1-x643.google.com with SMTP id f14so946778ejb.2 for <rift@ietf.org>; Mon, 27 Jul 2020 05:06:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=uUwsXu4jA93DhoKKqgv4AiDZfyP2KjJclC26AHro7FM=; b=S1EJ0+N4A9VxL0wTyyxADlUygrH427Oeh4cPva0nKFO3Q2aimVTWBZmLkEF0oXriv1 hatEq6BgeGME/lKf5iEZGYNY2I4RHTge3NF33rtB7KsB2ArvpTTw6h/tej5zhnfDg50v xzoq+eaxdkwGDpgs7FdQJNpI8nS4f84F1hxPSsWktmjIhPMBHnbvY21mgR68kzjVT9EU X1gHP35hND7VL6ZoLN9wYM6J2/ZcmhOT4/p0aFisSRG73X9mkEMJkNMcHXIeq7/FttD7 oo5kwZBF2FdOUUQ/0NVsmSXb/EXkP4eijfxqPdCyERRkDuLoW0yJFVtFUnYHR5MQTGBl 9rNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=uUwsXu4jA93DhoKKqgv4AiDZfyP2KjJclC26AHro7FM=; b=YkWz7Lwr2ai/8+YiArWx/+hMNUdJ1+ZywSXCQTegFv9bCybQ3pivUyIOTOeRPu1Mgx 9TnfYfXXS50kJqDZZIGyoeCcBi1gy+51TmXLxFiYhxpnfli6swscuWB81Qezs8/anPwg HLnTt+FfsMq79fUcgD891zuFpjJma/FAmra3Ou3C1NaOr8ZYzhAqHIexNwxyVtlVOAMq xgd3sehf0t2haL7+QnEQlwGdaxuM9XdoXA9pnDeikU2tOQaP42utlL4gEf1HwfO2Z6ou 6+pLBCzIcx19y6OU5f9DxdVBVrYQoke8cDHGNmwsoZ2GuxRU+wngKp0aMfmHjxJj5+Nu s5gg==
X-Gm-Message-State: AOAM533fvtgYRer6BN0kGsU8cJhjI9hb8dMUjP1Cl+3C2flNemfcxWuz Xcaz9hZyBoFitnfRL66SBxQ=
X-Google-Smtp-Source: ABdhPJydiJD7Ycjb3vgJB7w96+K1RnSRPQvNqTN1a7V9lFoKBIpLUDs26rj0k7kgV3YPWxaON1Fw8A==
X-Received: by 2002:a17:907:212b:: with SMTP id qo11mr20477373ejb.452.1595851604902;  Mon, 27 Jul 2020 05:06:44 -0700 (PDT)
Received: from [192.168.1.100] (84-31-170-55.cable.dynamic.v4.ziggo.nl. [84.31.170.55]) by smtp.gmail.com with ESMTPSA id v24sm7216354eds.71.2020.07.27.05.06.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Jul 2020 05:06:44 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <3FD14A34-5927-490E-A586-C47FA2AD9909@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_CDED6E56-7E85-4C3B-B64C-D161152EB294"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Mon, 27 Jul 2020 14:06:43 +0200
In-Reply-To: <CA+b+ERnUxtKvcDVP2KxLiSk3wHR_+1V75oDu=5bpSs2vDpw0dQ@mail.gmail.com>
Cc: rift@ietf.org
To: Robert Raszuk <rraszuk@gmail.com>
References: <A5DE1D42-F878-461A-A64F-84DB8678A46F@gmail.com> <CA+b+ERnUxtKvcDVP2KxLiSk3wHR_+1V75oDu=5bpSs2vDpw0dQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/hsfvfqwdxPIJ__d5ZxKeI2gKes0>
Subject: Re: [Rift] RIFT Open Source Update Presentation (RIFT WG meeting IETF-108)
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 27 Jul 2020 12:06:53 -0000

--Apple-Mail=_CDED6E56-7E85-4C3B-B64C-D161152EB294
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Robert,

Thanks for the observations and questions!

See answers below.

=E2=80=94 Bruno

> On Jul 25, 2020, at 8:56 PM, Robert Raszuk <rraszuk@gmail.com> wrote:
>=20
> Hi Bruno,
>=20
> This is excellent ! I wish everyone would prepare such video ahead of =
time like you did.=20
>=20
> One observation and few questions ...=20
>=20
> * First let me observe that concept of negative routing in the control =
plane is not new. As example - the proposals on that have been written =
many years ago for BGP. Perhaps it is unfortunate that vendor did not =
choose to pursue it in public at that time :) But it did pursue patents =
and implementation for negative routing over low power and lossy =
networks.
>=20

I would be very interested in the negative routing proposal that was =
written for BGP (or for any other protocol). Do you have any public =
references? Did it also include an automatic mechanism for triggering =
negative disaggregation, or did it require manual configuration of the =
negative routes to be advertised? (Since you mention the vendor did not =
pursue this in public, I would understand if you don't have a =
reference.)

Either way, I certainly did not intend to imply that negative =
disaggregation has never been done before. In technology, as in art, =
almost everything has been done before. It's just that the publicly =
available implementations of BGP, ISIS, OSPF, etc. currently don't =
include the concept of negative disaggregation, or at least not as far =
as I know.

Even within the narrow scope of RIFT, I don't claim to have contributed =
any original thoughts on the topic of negative disaggregation -- the =
vast majority of the credit for that goes to Pascal Thubert (it is =
perhaps no coincidence that he works on low power and lossy networks for =
a major network equipment vendor, perhaps the same one that you allude =
to).

> * In your talk you describe the behaviour in rest of the network in =
regards to negative routing. But how will leaf-1 in pod-1 receive =
negative routes if the real trigger for them is based on control plane =
messages traveling over horizontal links between super spines ?=20


Leaf-1-1 in pod-1 does not rely on negative disaggregation to avoid =
plane-1.

Instead it relies on the fact that RIFT originates a south-bound default =
route at the top-of-fabric nodes, and then lower nodes in the hierarchy =
only propagate the south-bound default route if they have received a =
default route advertisement from at least one parent.

This is a little bit of a simplification, see section 4.2.3.8in version =
12 of the RIFT draft for details, and there is also an interesting =
interaction with ZTP.

See APPENDIX below for details.


>=20
> * How do you stabilize/control control plane and data plane churn =
during negative routing being triggered by link flapping (say one down =
and one flapping in your example between pod 1 and plane 1) and no =
native link dampening in place ?=20
>=20

TIEs (=3D RIFT Link State Packets) for negative disaggregate prefixes =
are subject to the same link-flap considerations that apply to normal =
node TIEs or normal positive prefix TIE.

Hence, all the usual mechanisms that protect link-state protocols from =
excessive link flapping apply, including but not limited to:

* Limiting the rate at which TIEs are flooded over adjacencies. In RIFT =
there are transmit queues for TIEs, and a distinction is made between =
fast transmits (for the initial transmission) and slow re-transmits (for =
retransmits).

* Limiting the rate at which SPF runs are conducted.

* Various flow-control mechanisms (including sequence numbers and the =
`you_are_sending_too_quickly` field in LIEs) to detect that RIFT packets =
are being dropped and adjusting the flooding rates accordingly. (I have =
not yet implemented this in my code -- see also PS below).

> * Is the load balancing spread based on the configured link bandwidth =
for the interfaces ? If so it does not account for brownouts where =
fabric in any network element itself or linecard partially fails and =
while say BFD or RIFT still goes through the actual bandwidth for the =
data plane is severely reduced. Any plans for this little enhancement ? =
:)=20
>=20

In my code, the load balancing is indeed based on the configured =
interface speed.

That said, it is an implementation choice, and there is nothing in the =
RIFT draft that prevents an implementation from doing something more =
sophisticated, for example using bandwidth based on actual telemetry =
measurements. I currently have no plans to do that -- see also PS below.

> Thank you,
> R.
>=20
> PS. The FSM performance is a fantastic addition. I wish all code would =
have such CLI :) But while we are at this is there some analysis how =
would python-rift performance compare with say c-rift when dealing with =
say 1M to 10M routes fabric ? Case of no overlay and flat routing of =
/32s and /128s all over the cluster.=20
>=20

The RIFT-Python code was originally started with the following goals in =
mind:

* Check whether it was possible to create an interoperability =
implementation of RIFT based purely on the text in the RIFT =
specification, and where necessary, improve the quality of the RIFT =
specification.

* Be a reference implementation of RIFT.

It was never a goal of the RIFT-Python project to support 1000s of =
routes or millions of routes. The code is optimized for clarity and =
readability. It is not optimized for performance: it is not =
multi-threaded and Python is not a logical choice for performance.

That said, I expect that RIFT-Python would make a fine host-based RIFT =
router since the RIFT performance demand on leaf routers is very modest, =
even in very large topologies.



APPENDIX

Let's go through the concrete example shown on slide 12 in the =
presentation deck.

Before the links are broken, the sitation is as follows:


Node super-1-1 originates a south-bound default route because it is =
top-of-fabric:

super-1-1> show node
Node:
=
+-------------------------------------------+-----------------------------=
--------------------------------+
| Name                                      | super-1-1                  =
                                 |
=
+-------------------------------------------+-----------------------------=
--------------------------------+
| Originate IPv4 Default Route              | True                       =
                                 |
| Reason for Originating IPv4 Default Route | All other nodes at my =
level have no north-bound adjacencies |
| Originate IPv6 Default Route              | True                       =
                                 |
| Reason for Originating IPv6 Default Route | All other nodes at my =
level have no north-bound adjacencies |
=
+-------------------------------------------+-----------------------------=
--------------------------------+

Node spine-1-1 originates a south-bound default route (as do spine-1-2 =
and spine-1-3) because it received a default advertisement from the =
superspine and computed a default route to install in its RIB:

spine-1-1> show node
Node:
=
+-------------------------------------------+-----------------------------=
-----------------+
| Name                                      | spine-1-1                  =
                  |
=
+-------------------------------------------+-----------------------------=
-----------------+
| Originate IPv4 Default Route              | True                       =
                  |
| Reason for Originating IPv4 Default Route | This node has north-bound =
IPv4 default route |
| Originate IPv6 Default Route              | True                       =
                  |
| Reason for Originating IPv6 Default Route | This node has north-bound =
IPv6 default route |
=
+-------------------------------------------+-----------------------------=
-----------------+

Hence, leaf-1-1 has north-bound default routes that ECMP the traffic =
over all three planes (for the sake of space I only show IPv4 routes):

leaf-1-1> show route
IPv4 Routes:
=
+-----------+-----------+----------+-----------------+----------+---------=
-+
| Prefix    | Owner     | Next-hop | Next-hop        | Next-hop | =
Next-hop |
|           |           | Type     | Interface       | Address  | Weight =
  |
=
+-----------+-----------+----------+-----------------+----------+---------=
-+
| 0.0.0.0/0 | North SPF | Positive | veth-1001a-101a | 99.0.2.2 | 33     =
  |
|           |           | Positive | veth-1001b-102a | 99.0.4.2 | 33     =
  |
|           |           | Positive | veth-1001c-103a | 99.0.6.2 | 33     =
  |
=
+-----------+-----------+----------+-----------------+----------+---------=
-+

After we break links spine-1-1 <-> super-1-1 and spine-1-1 <-> =
super-1-2, we would expect the following to happen:

1. Super-1-1 still advertises a south-bound default route.
2. But spine-1-1 doesn't receives the default advertisement from any =
superspine (since all links are broken) and hence does not propage the =
default advertisement:
3. Hence, leaf-1-1 now has a north-bound default route that only ECMPs =
over plane-2 and plane-3, but avoids plane-1:

leaf-1-1> show route
IPv4 Routes:
=
+-----------+-----------+----------+-----------------+----------+---------=
-+
| Prefix    | Owner     | Next-hop | Next-hop        | Next-hop | =
Next-hop |
|           |           | Type     | Interface       | Address  | Weight =
  |
=
+-----------+-----------+----------+-----------------+----------+---------=
-+
| 0.0.0.0/0 | North SPF | Positive | veth-1001b-102a | 99.0.4.2 | 50     =
  |
|           |           | Positive | veth-1001c-103a | 99.0.6.2 | 50     =
  |
=
+-----------+-----------+----------+-----------------+----------+---------=
-+

However, before we even get there something else quite surprising =
happens:

1. When spine-1-1 loses both north-bound adjacencies, it is no longer =
able to auto-derive it's level using ZTP.
2. This causes spine-1-1 to shut down all of its adjacencies including =
the south-bound ones to the leaves.
3. This has the same (good) result: leaf-1-1 now has a north-bound =
default route that only ECMPs over plane-2 and plane-3, but avoids =
plane-1.

This was discussed on the RIFT mailing list on 23-April-2020 (see =
https://mailarchive.ietf.org/arch/msg/rift/zGLnispMv630LWq0ALRgGs7dLJI/)


>=20
> On Sat, 25 Jul 2020 at 18:44, Bruno Rijsman <brunorijsman@gmail.com =
<mailto:brunorijsman@gmail.com>> wrote:
> Because IETF-108 is a pure virtual meeting, I went through the trouble =
of pre-recording my "RIFT Open Source Update" presentation scheduled for =
the RIFT working group meeting on  Wednesday.
>=20
> Enjoy the "Sneak preview" ;-)
>=20
> Video: https://www.youtube.com/watch?v=3DqhiiTDPuku0 =
<https://www.youtube.com/watch?v=3DqhiiTDPuku0>
>=20
> Slides: https://bit.ly/rift-open-source-update-ietf-108 =
<https://bit.ly/rift-open-source-update-ietf-108>
>=20
> =E2=80=94 Bruno Rijsman
> _______________________________________________
> RIFT mailing list
> RIFT@ietf.org <mailto:RIFT@ietf.org>
> https://www.ietf.org/mailman/listinfo/rift =
<https://www.ietf.org/mailman/listinfo/rift>


--Apple-Mail=_CDED6E56-7E85-4C3B-B64C-D161152EB294
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><div =
dir=3D"auto" style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;" class=3D""><div dir=3D"auto" =
style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; line-break: =
after-white-space;" class=3D""><div dir=3D"auto" style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D""><div dir=3D"auto" style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D"">Hi =
Robert,</font></div><div dir=3D"auto" style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div dir=3D"auto" style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D""><font face=3D"Avenir-Book" style=3D"font-size: 14px;" =
class=3D"">Thanks for the observations and questions!</font></div><div =
dir=3D"auto" style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;" class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
dir=3D"auto" style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;" class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">See <font color=3D"#ff2600" =
class=3D"">answers</font>&nbsp;below.</font></div><div dir=3D"auto" =
style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; line-break: =
after-white-space;" class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D""><br class=3D""></font></div><div =
dir=3D"auto" style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;" class=3D""><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" class=3D"">=E2=80=94 Bruno</font><br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Jul 25, 2020, at 8:56 PM, Robert Raszuk &lt;<a =
href=3D"mailto:rraszuk@gmail.com" class=3D"">rraszuk@gmail.com</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
dir=3D"ltr" class=3D""><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">Hi =
Bruno,</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">This is =
excellent ! I wish everyone would prepare such video ahead of time like =
you did.&nbsp;</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">One =
observation and few questions ...&nbsp;</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">* First =
let me observe that concept of negative routing in the control plane is =
not new. As example - the proposals on that have been written many years =
ago for BGP. Perhaps it is unfortunate that vendor did not choose to =
pursue&nbsp;it in public at that time :) But it did pursue patents and =
implementation for negative routing over low power and lossy =
networks.</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div></div></div></blockquote><div><span style=3D"font-size: =
14px; font-family: Avenir-Book;" class=3D""><br =
class=3D""></span></div><div><span style=3D"font-size: 14px; =
font-family: Avenir-Book;" class=3D""><font color=3D"#ff2600" class=3D"">I=
 would be very interested in the negative routing proposal that was =
written for BGP (or for any other protocol). Do you have any public =
references? Did it also include an automatic mechanism for triggering =
negative disaggregation, or did it require manual configuration of the =
negative routes to be advertised? (Since you mention the vendor did not =
pursue this in public, I would understand if you don't have a =
reference.)</font></span></div><div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Either way, I =
certainly did not intend to imply that negative disaggregation has never =
been done before. In technology, as in art, almost everything has been =
done before. It's just that the publicly available implementations of =
BGP, ISIS, OSPF, etc. currently don't include the concept of negative =
disaggregation, or at least not as far as I know.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Even within the =
narrow scope of RIFT, I don't claim to have contributed any original =
thoughts on the topic of negative disaggregation -- the vast majority of =
the credit for that goes to Pascal Thubert (it is perhaps no coincidence =
that he works on low power and lossy networks for a major network =
equipment vendor, perhaps the same one that you allude =
to).</font></div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">* In =
your talk you describe the behaviour in rest of the network in regards =
to negative routing. But how&nbsp;will leaf-1 in pod-1 receive negative =
routes if the real trigger for them is based on control&nbsp;plane =
messages traveling over horizontal links between super spines =
?&nbsp;</div></div></div></blockquote><div><br class=3D""></div><div><br =
class=3D""></div><div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D"">Leaf-1-1 in pod-1 does not rely on =
negative disaggregation to avoid plane-1.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Instead it =
relies on the fact that RIFT originates a south-bound default route at =
the top-of-fabric nodes, and then lower nodes in the hierarchy only =
propagate the south-bound default route if they have received a default =
route advertisement from at least one parent.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">This is a little =
bit of a simplification, see section 4.2.3.8in version 12 of the RIFT =
draft for details, and there is also an interesting interaction with =
ZTP.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">See APPENDIX below for details.</font></div><div class=3D""><br=
 class=3D""></div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">* How =
do you stabilize/control control plane and data plane churn during =
negative routing being triggered by link flapping (say one down and one =
flapping in your example between pod 1 and plane 1) and no native link =
dampening in place ?&nbsp;</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div></div></div></blockquote><div><br =
class=3D""></div><div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D"">TIEs (=3D RIFT Link State Packets) =
for negative disaggregate prefixes are subject to the same link-flap =
considerations that apply to normal node TIEs or normal positive prefix =
TIE.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">Hence, all the usual mechanisms that protect link-state =
protocols from excessive link flapping apply, including but not limited =
to:</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">* Limiting the rate at which TIEs are flooded over =
adjacencies. In RIFT there are transmit queues for TIEs, and a =
distinction is made between fast transmits (for the initial =
transmission) and slow re-transmits (for =
retransmits).</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">* Limiting the =
rate at which SPF runs are conducted.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">* Various =
flow-control mechanisms (including sequence numbers and the =
`you_are_sending_too_quickly` field in LIEs) to detect that RIFT packets =
are being dropped and adjusting the flooding rates accordingly. (I have =
not yet implemented this in my code -- see also PS =
below).</font></div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">* Is =
the load balancing spread based on the configured link =
bandwidth&nbsp;for the interfaces ? If so it does not account&nbsp;for =
brownouts where fabric in any network element itself or linecard =
partially fails and while say BFD or RIFT still goes through the actual =
bandwidth&nbsp;for the data plane is severely reduced. Any plans for =
this little enhancement ? :)&nbsp;</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div></div></div></blockquote><div><br =
class=3D""></div><div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" color=3D"#ff2600" class=3D"">In my =
code, the load balancing is indeed based on the configured interface =
speed.</font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" color=3D"#ff2600" class=3D""><br =
class=3D""></font></span></div><div><span style=3D"font-size: 14px;" =
class=3D""><font face=3D"Avenir-Book" color=3D"#ff2600" class=3D"">That =
said, it is an implementation choice, and there is nothing in the RIFT =
draft that prevents an implementation from doing something more =
sophisticated, for example using bandwidth based on actual telemetry =
measurements. I currently have no plans to do that -- see also PS =
below.</font></span></div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">Thank =
you,<br class=3D"">R.</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small">PS. The =
FSM performance is a fantastic addition. I wish all code would have such =
CLI :) But while we are at this is there some analysis how would =
python-rift performance compare with say c-rift when dealing with say 1M =
to 10M routes fabric ? Case of no overlay and flat routing of /32s and =
/128s all over the cluster.&nbsp;</div><div class=3D"gmail_default" =
style=3D"font-family:arial,helvetica,sans-serif;font-size:small"><br =
class=3D""></div></div></div></blockquote><div><br =
class=3D""></div><div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D"">The RIFT-Python code was =
originally started with the following goals in =
mind:</font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D"">* Check whether it was possible to =
create an interoperability implementation of RIFT based purely on the =
text in the RIFT specification, and where necessary, improve the quality =
of the RIFT specification.</font></div><div><font face=3D"Avenir-Book" =
color=3D"#ff2600" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D"">* Be a reference implementation of =
RIFT.</font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D"">It was never a goal of the =
RIFT-Python project to support 1000s of routes or millions of routes. =
The code is optimized for clarity and readability. It is not optimized =
for performance: it is not multi-threaded and Python is not a logical =
choice for performance.</font></div><div><font face=3D"Avenir-Book" =
color=3D"#ff2600" style=3D"font-size: 14px;" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" color=3D"#ff2600" =
style=3D"font-size: 14px;" class=3D"">That said, I expect that =
RIFT-Python would make a fine host-based RIFT router since the RIFT =
performance demand on leaf routers is very modest, even in very large =
topologies.</font></div></div><div><br class=3D""></div><div><br =
class=3D""></div><div><br class=3D""></div><div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">APPENDIX</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Let's go through =
the concrete example shown on slide 12 in the presentation =
deck.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">Before the links are broken, the sitation is as =
follows:</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Node super-1-1 =
originates a south-bound default route because it is =
top-of-fabric:</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">super-1-1&gt; show =
node</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" class=3D"">Node:</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
-------------------------------------------+</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">| Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;| super-1-1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
-------------------------------------------+</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">| Originate IPv4 Default Route &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;| True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;|</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Reason for =
Originating IPv4 Default Route | All other nodes at my level have no =
north-bound adjacencies |</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">| Originate =
IPv6 Default Route &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| =
True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;|</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Reason for =
Originating IPv6 Default Route | All other nodes at my level have no =
north-bound adjacencies |</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
-------------------------------------------+</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Node spine-1-1 =
originates a south-bound default route (as do spine-1-2 and spine-1-3) =
because it received a default advertisement from the superspine and =
computed a default route to install in its RIB:</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">spine-1-1&gt; =
show node</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" =
class=3D"">Node:</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
----------------------------+</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">| Name &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| spine-1-1 =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;|</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
----------------------------+</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">| Originate =
IPv4 Default Route &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| =
True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; |</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Reason for =
Originating IPv4 Default Route | This node has north-bound IPv4 default =
route |</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Originate IPv6 =
Default Route &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| True =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" class=3D"">| Reason for Originating IPv6 Default =
Route | This node has north-bound IPv6 default route =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" =
class=3D"">+-------------------------------------------+------------------=
----------------------------+</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">Hence, leaf-1-1 =
has north-bound default routes that ECMP the traffic over all three =
planes (for the sake of space I only show IPv4 =
routes):</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">leaf-1-1&gt; show route</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">IPv4 Routes:</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Prefix &nbsp; =
&nbsp;| Owner &nbsp; &nbsp; | Next-hop | Next-hop &nbsp; &nbsp; &nbsp; =
&nbsp;| Next-hop | Next-hop |</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">| &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Type &nbsp; =
&nbsp; | Interface &nbsp; &nbsp; &nbsp; | Address &nbsp;| Weight &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| 0.0.0.0/0 | North =
SPF | Positive | veth-1001a-101a | 99.0.2.2 | 33 &nbsp; &nbsp; &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" class=3D"">| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Positive | veth-1001b-102a | =
99.0.4.2 | 33 &nbsp; &nbsp; &nbsp; |</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | Positive | veth-1001c-103a | 99.0.6.2 | 33 &nbsp; &nbsp; =
&nbsp; |</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">After we break =
links spine-1-1 &lt;-&gt; super-1-1 and spine-1-1 &lt;-&gt; super-1-2, =
we would expect the following to happen:</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">1. Super-1-1 =
still advertises a south-bound default route.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">2. But spine-1-1 doesn't receives the default advertisement =
from any superspine (since all links are broken) and hence does not =
propage the default advertisement:</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">3. Hence, leaf-1-1 now has a north-bound default route that =
only ECMPs over plane-2 and plane-3, but avoids =
plane-1:</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">leaf-1-1&gt; show route</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">IPv4 Routes:</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| Prefix &nbsp; =
&nbsp;| Owner &nbsp; &nbsp; | Next-hop | Next-hop &nbsp; &nbsp; &nbsp; =
&nbsp;| Next-hop | Next-hop |</font></div><div><font style=3D"font-size: =
14px;" color=3D"#ff2600" face=3D"Courier New" class=3D"">| &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Type &nbsp; =
&nbsp; | Interface &nbsp; &nbsp; &nbsp; | Address &nbsp;| Weight &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font style=3D"font-size: 14px;" =
color=3D"#ff2600" face=3D"Courier New" class=3D"">| 0.0.0.0/0 | North =
SPF | Positive | veth-1001b-102a | 99.0.4.2 | 50 &nbsp; &nbsp; &nbsp; =
|</font></div><div><font style=3D"font-size: 14px;" color=3D"#ff2600" =
face=3D"Courier New" class=3D"">| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Positive | veth-1001c-103a | =
99.0.6.2 | 50 &nbsp; &nbsp; &nbsp; |</font></div><div><font =
style=3D"font-size: 14px;" color=3D"#ff2600" face=3D"Courier New" =
class=3D"">+-----------+-----------+----------+-----------------+---------=
-+----------+</font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D""><br =
class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">However, before =
we even get there something else quite surprising =
happens:</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D""><br class=3D""></font></div><div><font=
 face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D"">1. When spine-1-1 loses both north-bound adjacencies, it is =
no longer able to auto-derive it's level using =
ZTP.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D"">2. This causes spine-1-1 to shut =
down all of its adjacencies including the south-bound ones to the =
leaves.</font></div><div><font face=3D"Avenir-Book" style=3D"font-size: =
14px;" color=3D"#ff2600" class=3D"">3. This has the same (good) result: =
leaf-1-1 now has a north-bound default route that only ECMPs over =
plane-2 and plane-3, but avoids plane-1.</font></div><div><font =
face=3D"Avenir-Book" style=3D"font-size: 14px;" color=3D"#ff2600" =
class=3D""><br class=3D""></font></div><div><font face=3D"Avenir-Book" =
style=3D"font-size: 14px;" color=3D"#ff2600" class=3D"">This was =
discussed on the RIFT mailing list on 23-April-2020 (see <a =
href=3D"https://mailarchive.ietf.org/arch/msg/rift/zGLnispMv630LWq0ALRgGs7=
dLJI/" =
class=3D"">https://mailarchive.ietf.org/arch/msg/rift/zGLnispMv630LWq0ALRg=
Gs7dLJI/</a>)</font></div></div><br class=3D""><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D""><br class=3D""><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 25 =
Jul 2020 at 18:44, Bruno Rijsman &lt;<a =
href=3D"mailto:brunorijsman@gmail.com" =
class=3D"">brunorijsman@gmail.com</a>&gt; wrote:<br =
class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div style=3D"overflow-wrap: =
break-word;" class=3D""><div class=3D"">Because IETF-108 is a pure =
virtual meeting, I went through the trouble of pre-recording my "RIFT =
Open Source Update" presentation scheduled for the RIFT working group =
meeting on &nbsp;Wednesday.</div><div class=3D""><br class=3D""></div><div=
 class=3D"">Enjoy the "Sneak preview" ;-)</div><div class=3D""><br =
class=3D""></div><div class=3D"">Video:&nbsp;<a =
href=3D"https://www.youtube.com/watch?v=3DqhiiTDPuku0" target=3D"_blank" =
class=3D"">https://www.youtube.com/watch?v=3DqhiiTDPuku0</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">Slides:&nbsp;<a =
href=3D"https://bit.ly/rift-open-source-update-ietf-108" target=3D"_blank"=
 class=3D"">https://bit.ly/rift-open-source-update-ietf-108</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">=E2=80=94 Bruno =
Rijsman</div></div>_______________________________________________<br =
class=3D"">
RIFT mailing list<br class=3D"">
<a href=3D"mailto:RIFT@ietf.org" target=3D"_blank" =
class=3D"">RIFT@ietf.org</a><br class=3D"">
<a href=3D"https://www.ietf.org/mailman/listinfo/rift" rel=3D"noreferrer" =
target=3D"_blank" =
class=3D"">https://www.ietf.org/mailman/listinfo/rift</a><br class=3D"">
</blockquote></div>
</div></blockquote></div><br =
class=3D""></div></div></div></div></body></html>=

--Apple-Mail=_CDED6E56-7E85-4C3B-B64C-D161152EB294--


From nobody Thu Jul 30 08:40:16 2020
Return-Path: <pthubert@cisco.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8F7383A09D5 for <rift@ietfa.amsl.com>; Thu, 30 Jul 2020 08:40:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.62
X-Spam-Level: 
X-Spam-Status: No, score=-9.62 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=WYuG5o/V; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=GsF4d//h
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MnLLuDvQtMBR for <rift@ietfa.amsl.com>; Thu, 30 Jul 2020 08:40:12 -0700 (PDT)
Received: from rcdn-iport-7.cisco.com (rcdn-iport-7.cisco.com [173.37.86.78]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 571103A0958 for <rift@ietf.org>; Thu, 30 Jul 2020 08:40:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1598; q=dns/txt; s=iport; t=1596123612; x=1597333212; h=from:to:subject:date:message-id: content-transfer-encoding:mime-version; bh=ghRR7WUY89VayZ2XT6a2fIzAhpSOjy3GCEWGIeAYc8I=; b=WYuG5o/V9QriVrLWHQaIUeLqmA31fpOA4jlIxeS76e0qohWrnBwPQAXz /B9QlpWnqU5AFOHO0aJzcC0RweVkcFmi37Q/RZJ1kQi55hJN5r45NZc4Z X2LEq/tCPBA1Abmzu/uMfp05SxB7yNiL/5p26M5F5cTu4eYTlIarwBkOG U=;
IronPort-PHdr: =?us-ascii?q?9a23=3AvQPm6hT+K2C8EKdg641s3AnxGtpsv++ubAcI9p?= =?us-ascii?q?oqja5Pea2//pPkeVbS/uhpkESQBN+J6v9YhazRqa+zEWAD4JPUtncEfdQMUh?= =?us-ascii?q?IekswZkkQmB9LNEkz0KvPmLklYVMRPXVNo5Te3ZE5SHsutZlDOrDu19zFBUh?= =?us-ascii?q?n6PBB+c+LyHIOahs+r1ue0rpvUZQgAhDe0bb5oahusqgCEvcgNiowkIaE0mR?= =?us-ascii?q?Y=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DYCAAr6SJf/4sNJK1aBh4BAQsSDEC?= =?us-ascii?q?BPwuBUlEHgUcvLId7A54wiACBQoERA1ULAQEBDAEBLQIEAQGETAKCLgIkNwY?= =?us-ascii?q?OAgMBAQsBAQUBAQECAQYEbYVcAQuGCigGAQE4EQE+QiYBBBsahVADLgGlQQK?= =?us-ascii?q?BOYhhdIE0gwEBAQWFGhiCDgmBOIJvih4agUE/gRFDgiABhG0qEoNHgi22Cwq?= =?us-ascii?q?CXwSRdogmn3SFY4w8nx8CBAIEBQIOAQEFgWkkgVdwFYMkUBcCDY4fg3GKVnQ?= =?us-ascii?q?3AgYIAQEDCXyPXAEB?=
X-IronPort-AV: E=Sophos;i="5.75,414,1589241600"; d="scan'208";a="795716424"
Received: from alln-core-6.cisco.com ([173.36.13.139]) by rcdn-iport-7.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 30 Jul 2020 15:40:11 +0000
Received: from XCH-ALN-005.cisco.com (xch-aln-005.cisco.com [173.36.7.15]) by alln-core-6.cisco.com (8.15.2/8.15.2) with ESMTPS id 06UFeBw4001682 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL) for <rift@ietf.org>; Thu, 30 Jul 2020 15:40:11 GMT
Received: from xhs-aln-002.cisco.com (173.37.135.119) by XCH-ALN-005.cisco.com (173.36.7.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 30 Jul 2020 10:40:10 -0500
Received: from xhs-aln-002.cisco.com (173.37.135.119) by xhs-aln-002.cisco.com (173.37.135.119) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 30 Jul 2020 10:40:10 -0500
Received: from NAM12-MW2-obe.outbound.protection.outlook.com (173.37.151.57) by xhs-aln-002.cisco.com (173.37.135.119) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Thu, 30 Jul 2020 10:40:10 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jEWglp15uG6xuILeMxrHYPW38h36TNGBeUlajSncpvJMtIsELiGU1cjkl7Ihh8ROPQbxW5qo3mjtiFdTzCHeitwt3kVbhWql820JZ+OOIIsacbq+BYFy1+XKKM93RWVlcpFD4IW4lJ/kN4fglIHrMKeGmVrBVGLhbAEP/XsUXJ9qBgOGH0IZ0tbr3EnKFXkythbcnJesl0v0YwHXNibwPpYRaO0o5+49Ib4O1MGQATWfojrVwX3Qttg81wVEBPLUmyRZgaO8bk30xK6q5tWJZMV/b6bj5QXATJ7alqswHUfYcLOPmLmybcV2iWBc2UZJRld7bYLjq023OkAWlqeKZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;  s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ghRR7WUY89VayZ2XT6a2fIzAhpSOjy3GCEWGIeAYc8I=; b=V4Lmws0jHrMdqV7+/+/EnrjgqLWvPdJr/ZTBGQkqe77mxvfE7s1b26SPOojBG9vg/fBFgwSdqeYosSlbP8D/auydu9JIx2+xDrhmBIaazOKt4NKaJawknyzEA6rZikUx+fuR7UImX4CQ8lsDv7Kkoi6XtXeDu7dznxBz8EcH/GyBC3YY+Dvub9b3JQdguqJQNteLagmZkLiyLYwfUUDE0tDJ90yRUhRNUSCMJWflWtAH4Df0bSzSbVWNxaRvq4+2nv5TdJzMRagaZngPaB2p5yo3DZVXnW82lspSFht+jWTAOF1uQEWLTHvxr8FMHudUrHQpIsfCPUm0AE6Wo6pKnw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com;  s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ghRR7WUY89VayZ2XT6a2fIzAhpSOjy3GCEWGIeAYc8I=; b=GsF4d//h6cKpW2nK0zNZCeARI6mfNk+5aIZRQZeBazVHpQoTSHXkN6qJyj0S4UsHPMWqmFyFE+cQ64Rco37cYfAgCmLtFBtFlRl1SXBGCcJVj6YayUpHXLv1NKdMiqPy/Vl/FwRigF5YnZroYwD0vMPJjgJ8EWHn1xiz7U2NAhs=
Received: from BYAPR11MB3558.namprd11.prod.outlook.com (2603:10b6:a03:b3::11) by BYAPR11MB3032.namprd11.prod.outlook.com (2603:10b6:a03:8f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.25; Thu, 30 Jul 2020 15:40:09 +0000
Received: from BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::e8eb:b823:20a3:94ac]) by BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::e8eb:b823:20a3:94ac%7]) with mapi id 15.20.3239.019; Thu, 30 Jul 2020 15:40:09 +0000
From: "Pascal Thubert (pthubert)" <pthubert@cisco.com>
To: "rift@ietf.org" <rift@ietf.org>
Thread-Topic: Negative disagg question
Thread-Index: AdZmhNlQL+9umvWESKecPXlVP1aKDA==
Date: Thu, 30 Jul 2020 15:39:57 +0000
Deferred-Delivery: Thu, 30 Jul 2020 15:39:37 +0000
Message-ID: <BYAPR11MB3558ACFFED291027A142EBF4D8710@BYAPR11MB3558.namprd11.prod.outlook.com>
Accept-Language: fr-FR, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=cisco.com;
x-originating-ip: [2a01:cb1d:4ec:2200:1cbe:7875:4908:4381]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3c580f38-e225-409a-72cf-08d8349ed75c
x-ms-traffictypediagnostic: BYAPR11MB3032:
x-microsoft-antispam-prvs: <BYAPR11MB30326053970348631AFA6849D8710@BYAPR11MB3032.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: mqKYLMXWQUU5azqF6Q8Rs9qu58xedhuU7dGlU0ODJWr1h2oUXl+xhAw4l9o87O/XSNkWMCNNFCgzqN8asrvngW8jZylADKji8MTquO/eYwhwZc+HF5t6AnaIqwpvSO12i8ktfkd+yTD5pcCGsvUXgzyaQjmYA0HeOroMrFPK4irlNmu3xEieLGYvsEU2UV6YvDmZj/F0lt3Uc0fyqeLtoIxVS7U5NWIq4fS65WqaHAE3/OJX5kDN+sVI+rd60n5wzgm8ILxerSGlCUg7ocyvSifFyO+dxdiOpW4esuuJejC7yts1njTb/ipeYiKKRxN9
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;  IPV:NLI; SFV:NSPM; H:BYAPR11MB3558.namprd11.prod.outlook.com; PTR:; CAT:NONE;  SFTY:; SFS:(4636009)(346002)(396003)(136003)(366004)(376002)(39860400002)(66556008)(5660300002)(55016002)(8676002)(66476007)(52536014)(64756008)(66446008)(7116003)(3480700007)(186003)(83380400001)(66946007)(478600001)(76116006)(9686003)(33656002)(6666004)(6506007)(86362001)(8936002)(66574015)(71200400001)(7696005)(2906002)(6916009)(316002); DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata: 8wPqZAPJ3vgt7pso854w5imZBQTqma3+vLbuB9A5MKcfuHXm5+iSOaisgQTKcZTG30tw5ErSTvbwJvSx0i1OsUyBHC/FweZkAv0VN9837EqfbveFoqMBQEvDSHpPBNemv32ZRt0WgRoG2v1tKwLvCKPFs4yapeTKnIs/7Idt+vf9nZlm9LkuKrb4IHVsF+m+DchXa1gzp2RztwioNFY/sQVgkmXQEJdWX2liOdCKn2RhiPZU2JY7eYCvBQ0vaNuLL6G33p1+CRf/uCASonEyhWKKNvi2Bm62s6rXD6LB7UWbt6IzZrC7xYdEGjk2tpq1LTJ7RFfwr3zlx/hv+OOxHUu6sWQ5vy+czdGPqrMjM2ArZE/ntnEbMCnnnu7DJZlKaAJqNFx3NARM3bI8SMCYakkdyHRQ6kwKe44k+qCMdc3FKo8Gvl5f2ea/GdHAFnxc+L04n+psJYX6X2C3W/t+Nr2TUdOgF4Hqph13qcar0KdCpopMuM58C0igMdUWDIqOukQTOxvHAd3Y9ouw638mWmue++61S7r1w7J7VL4ikV17sadIVIFuyYd4qIxBdiPl
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3558.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3c580f38-e225-409a-72cf-08d8349ed75c
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jul 2020 15:40:09.4463 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: i8PdtYvMIJqhTLjctuKpQsV+xZjZox0S9rydxYMOy9j+S0QLghs8YkEJAghQzYkuHwRzruFGnc+VJ/jOQSaksQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3032
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.36.7.15, xch-aln-005.cisco.com
X-Outbound-Node: alln-core-6.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/ArCeNxK-cTGO44xik_3mLJ9l8Jw>
Subject: [Rift] Negative disagg question
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 Jul 2020 15:40:15 -0000

Dear all:

Yesterday at RIFT there were 2 very good questions asked upon the great pre=
sentation by Bruno:

1) difference before withdrawing prefix P and advertising it in a negative =
way

Withdrawing P removes it from RIB on the receiving router R (if it's there,=
 else nothing to do) and then forget.

Advertising P as negative installs a negative route in the RIB in R. This n=
egative route carves a logical hole in the aggregation above.=20
If there is no aggregation above in R, R needs to take no action apart from=
 installing the negative route in RIB.=20
If the aggregation comes later, the FIB will be installed with the hole car=
ved in it at that time.=20

2) if the parent aggregation goes away, is the hole carved of the upper lev=
el of aggregation?

Short: Yes.=20
Long: the carving is done by adding the route to P in FIB via the other nod=
es that advertise the encompassing aggregation (competing for the same long=
est match).=20
So if the longest aggregation changes to a shorter one, the set of successo=
rs has to be recalculated.=20
This is an unusual situation in RIFT if all leaves are similar since in tha=
t case we do not find nested aggregations, but say you do.
You could find the sitiuation e.g., if the parent aggregation is the positi=
ve disaggregation of a larger prefix. When the problem that causes the posi=
tive disaggregation goes away, meaning that a parent could not reach that a=
ggregation and now it can, the result is that this parent is added to the F=
IB for the negative prefix.

I hope this helps

Pascal


From nobody Fri Jul 31 14:24:11 2020
Return-Path: <zzhang@juniper.net>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A53083A0C17 for <rift@ietfa.amsl.com>; Fri, 31 Jul 2020 14:24:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.12
X-Spam-Level: 
X-Spam-Status: No, score=-2.12 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=JZNT22jG; dkim=pass (1024-bit key) header.d=juniper.net header.b=BHfPYs0+
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u66dKyAAnO2y for <rift@ietfa.amsl.com>; Fri, 31 Jul 2020 14:24:08 -0700 (PDT)
Received: from mx0a-00273201.pphosted.com (mx0a-00273201.pphosted.com [208.84.65.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 640E33A0C10 for <rift@ietf.org>; Fri, 31 Jul 2020 14:24:08 -0700 (PDT)
Received: from pps.filterd (m0108156.ppops.net [127.0.0.1]) by mx0a-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 06VLMqbU020872 for <rift@ietf.org>; Fri, 31 Jul 2020 14:24:08 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=PPS1017; bh=AwWciJpzmj7l48D8c/KiXkkjApdiTiSVXiIppVdZjIA=; b=JZNT22jGr8xHvQRuNgpqL9n7tqSK79F/QEz4pEIweoVNjOuN/OnEeXkpYj8QuyNzPrr1 eSgWYmcdXtSOghfxiBjDt9ffjBQRxNR5SGgtrNGa2eAH/+30LDDCNL+NvfTz344lpV8R KeR5/UlkbhPmiIY8UVlFhvzepjO2RAz7wMArcA2af9lkUbg/MOz/dGfkZXemtFL7GJ7v pcJzUciF+w+3GgV4r3XjTLuJMUrZw5y0yUWM+LQ2wjdmxo2QRJpwHBmc01rIDHKiCsDu rx/EFt2j0VItGufDjj6k3A8J9mFAad1fw89WcmSCSojSc+nYkedIud/WBS0Sx56Dp5ds DQ== 
Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2101.outbound.protection.outlook.com [104.47.55.101]) by mx0a-00273201.pphosted.com with ESMTP id 32m8q3sp25-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <rift@ietf.org>; Fri, 31 Jul 2020 14:24:07 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aMXWwcJ7iKWosZYYdOnLf+l3HtLEmibdI/r8w5GUrKrHAy5KV/5LQ+nxPqt/L/hY1zJp7MkOi3bFM5mGe/Obm+I2ncQgeueN2W7M2v4wlYZYOSSwj/r4lvKXogiIMX5cLo7xDjv8fcostvhIjgkxM7ZkFK/dZ8LcBFWphOI1J/PJYdZ5K4YGNZs2NNpeY4Gg/OP9VoYCnGuHbda+kEVB0xebCt7HlBiBS5jTIqJrOnaIvJXUSMnDeplxMd+kMBUKKRH+RIf0pIf1n6WQOmGP1J1PlALG6foFp3ARg6FZEMivGXu18v95A1X94AILdsyI4E5bY+gJdkC5SoQMhjUmrw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;  s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AwWciJpzmj7l48D8c/KiXkkjApdiTiSVXiIppVdZjIA=; b=g2ZrZo2EQKfNKc+Q4yjhXccVwutylYJDsT44KAI0jh6UeCKrSza5jtdd11AGLROxFVyWNFlHyP3ojioIV86PQA1ZZp1ZY/dSdL7TBjCDd2i9KHcIWDglAnEpab855vJ9V0Iw0qDK+MD4rWiq+Zod1XVhMkRSXC9TjV6NTyqHpGeDoBv9u9IG4l52kigVJ8+alqh7pGCf1WxNCy61soqhtdVf1uXX25zaYE8kiEXOqpN0tefxd/mKJNqO1UtYVjb/I+zHAC43yGbPvstRgMHdqyzTMDXGeV3+qthj7IxQFao4JFhMWJLK1bYtQGjrv1wXehbPIEnK2ZS7mHjiiQA3ZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AwWciJpzmj7l48D8c/KiXkkjApdiTiSVXiIppVdZjIA=; b=BHfPYs0+ZnP1E13d6ZDJ1MhDNKlJ+N1qPoHKPkUYdo51lDv9978/RfWul4iy+ATHJtvxEYKmnoAH+taYNbF+f1sT3fNdQCIYvxPiawt/LfY4ymdMKvFrRv3JbN5nKCXG35LUljWqGttwGYyCLx3inLbKaO0jUZ17nuJzsDZjtEM=
Received: from MN2PR05MB5981.namprd05.prod.outlook.com (2603:10b6:208:c3::15) by BL0PR05MB7186.namprd05.prod.outlook.com (2603:10b6:208:1ca::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.9; Fri, 31 Jul 2020 21:24:04 +0000
Received: from MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191]) by MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::3988:326f:3c17:8191%5]) with mapi id 15.20.3239.017; Fri, 31 Jul 2020 21:24:04 +0000
From: "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>
To: "rift@ietf.org" <rift@ietf.org>
Thread-Topic: Meeting minutes uploaded. Thanks Pascal for taking minutes!
Thread-Index: AdZngOXHhRj9Vt7GQL6QUx6lFFxw7w==
Date: Fri, 31 Jul 2020 21:24:04 +0000
Message-ID: <MN2PR05MB59819E83C619121A7417BB24D44E0@MN2PR05MB5981.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2020-07-31T21:24:03Z;  MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=0633b888-ae0d-4341-a75f-06e04137d755; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=dc9d0d58-25e3-430e-9af1-dd4edbd227ff; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=2
dlp-product: dlpe-windows
dlp-version: 11.3.2.8
dlp-reaction: no-action
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=juniper.net;
x-originating-ip: [71.248.165.31]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: eabaf22e-db23-46a2-dee7-08d835980d61
x-ms-traffictypediagnostic: BL0PR05MB7186:
x-microsoft-antispam-prvs: <BL0PR05MB71867A9D866EC9D44D585FA4D44E0@BL0PR05MB7186.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:1728;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 3hNBtFQLzpNojZzLZJdXsMFzGryKeHFk2EX4N/VE2J3l0L3ZKj4/y2dP1D7HRkEjJUKvkpFWe4SITx5JjLEILCnpva8SiiiQUXVv8mGHNVmpSkCnHO/EWFrKDbreuqV2nzvP1T3CN+o90eZhm4Ldp0osu3A/cJhnIMVKlm2jEMu5VJTCIel+s+E4Hl8ZwjmfvDPg+hWPziUik1NMCD5f0QDnmzks/4ClekVAzPS2T0yijIaegOJAdIesXB+Ec2h+NNZr2Fn/6Hig0WzVyagVSU2vl/rM0Y+5EtVr58P2POssKCE2kC5bEkj4co8n358Pqf/EEgYyRzwgji81pFYHfIrDYzQCeC+akoGcszVTtobtJcxmR64zTlaRf+mLSRGZm49aMq+oDE6ylH8XLhFNuw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;  IPV:NLI; SFV:NSPM; H:MN2PR05MB5981.namprd05.prod.outlook.com; PTR:; CAT:NONE;  SFTY:; SFS:(4636009)(376002)(136003)(366004)(346002)(39860400002)(396003)(33656002)(7696005)(66946007)(64756008)(6916009)(26005)(9686003)(478600001)(66476007)(66556008)(76116006)(186003)(55016002)(6506007)(52536014)(66446008)(316002)(558084003)(2906002)(5660300002)(966005)(71200400001)(8676002)(8936002)(86362001); DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: AwS3RuCguGdKmObd9Ptx0zSMIf09K3XEM7bphCXBZBKZuj2owLlXvg0jGnBGO0Uqk4El4N8lGhG/SXyd34RojmDBet5paDlkMurVcY2onnwvdJiycl715+hatFtTFwvSwhDRNVf5FI1t+pLC61hylTbxCNjPMJdnDDuKeR51fQKHNmmnufZ1W/W1TNJl0GxXriCVsX8k/e0msKwxRMMqZXc7VCJQl0DomH1sWZEWo0v9cD9r3/NpZZZNGa+HkIHdpSWx1lNqG/21+z5465CJg1kAJt+dN7K4JzkEQzEyyQPYTUj87jDTPlwXDi6fbtgxLLLQwKXk810dc7VWU0KopxABz/EdskTy8a7ZML+GeexCcupAoCiEbd9yK1+FcKldIGUBcZetbA4EdMyFa3iAJVj5hEv4aKSp8709zbHEvgAopjyyFvTwWiZtMvJO4eRmDKCb9BI6GRP6DsaUzvw2c1bseZLYfrEhHMFpvRbb2mvvAiiFGukWMExXhD5xSfg2xfkHzaCQmK0QQUfGyXtxzPMgmxDG5EVmnGaMW2W+gcKW33ZyO2JxJtWc57JHQNYWAXs//M4sY5k1b+PY85rSavZbW/c9kripN911IlGIXCsqdb3zZahCM25KcaKVrDQgTvcSjjttomVH3SKOOsPnyg==
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN2PR05MB5981.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: eabaf22e-db23-46a2-dee7-08d835980d61
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jul 2020 21:24:04.7295 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: tyLP6mn1wa7jXSG4nGH5eVRFWNXFtAdCIWSKbLQ7COcDnkKXE5PerQ0IWIyVGBjF7GzJ/nwen122XB3Oq54+zQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR05MB7186
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-31_09:2020-07-31, 2020-07-31 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 bulkscore=0 priorityscore=1501 phishscore=0 impostorscore=0 adultscore=0 malwarescore=0 mlxlogscore=550 lowpriorityscore=0 suspectscore=0 mlxscore=0 clxscore=1015 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2007310151
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/kFvnR6QOdELShWYI0IUYlLWiBy8>
Subject: [Rift] Meeting minutes uploaded. Thanks Pascal for taking minutes!
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 31 Jul 2020 21:24:10 -0000

https://www.ietf.org/proceedings/108/minutes/minutes-108-rift-00

Juniper Business Use Only

