From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 811E06AFD0 for ; Thu, 10 Dec 2020 12:43:06 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6D5BC1A4ED for ; Thu, 10 Dec 2020 12:42:36 +0100 (CET) Received: from mail.directique.com (mail.directique.com [176.31.91.54]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 07C2B1A4E2 for ; Thu, 10 Dec 2020 12:42:34 +0100 (CET) Received: from SCOM4.directique.net ([::1]) by SCOM4.directique.net ([::1]) with mapi id 14.03.0487.000; Thu, 10 Dec 2020 12:42:33 +0100 From: Lubomir Apostolov To: Dominik Csapak , "Proxmox Backup Server development discussion" Thread-Topic: [pbs-devel] [PATCH proxmox-backup] docs: explain some technical details about datastores/chunks Thread-Index: AQHWzsdebbgIFc41P020F/pOBES/hqnwLDXg Date: Thu, 10 Dec 2020 11:42:32 +0000 Message-ID: <718D0AF11703FA4C85B0535448A05610038195BD47@SCOM4.directique.net> References: <20201209152553.8752-1-d.csapak@proxmox.com> <718D0AF11703FA4C85B0535448A05610038195BAB5@SCOM4.directique.net> <8a9b4fcc-cbaf-02ec-d0fa-e9ea396a3463@proxmox.com> In-Reply-To: <8a9b4fcc-cbaf-02ec-d0fa-e9ea396a3463@proxmox.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [90.46.0.213] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup] docs: explain some technical details about datastores/chunks X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2020 11:43:06 -0000 SGksDQoNClRoYW5rIHlvdSBmb3IgdGhlIHJlcGx5Lg0KDQo+IHRoYW5rcyBmb3IgeW91ciBtZXNz YWdlLCB5b3VyIHF1ZXN0aW9ucyBtZWFuIGkgZGlkIG5vdA0KPiB3cml0ZSB0aGUgZG9jdW1lbnRh dGlvbiBjbGVhciBlbm91Z2gsIGkgdHJ5IHRvIGFuc3dlciBoZXJlLA0KPiBidXQgaSdsbCBhbHNv IGluY29ycG9yYXRlIHRoYXQgaW5mbyBpbiBhIHYyDQoNCk15IHF1ZXN0aW9ucyBhcmUgbW9yZSBh Ym91dCBmbGF3cyBpbiBkZXNpZ24gdGhhbiBkb2N1bWVudGF0aW9uLg0KDQpJIHNob3VsZCBhbHNv IHN0YXRlIHRoYXQgY3VycmVudGx5IFBCUyBpcyBzbyBoaWdobHkgaW5lZmZpY2llbnQgdGhhdCBm cm9tDQpvdXIgcG9pbnQgb2YgdmlldyAoYnV0IHdlJ3JlIG5vdCBhbG9uZSBhcyB5b3UgY2FuIHNl ZSBpdCBpbiB0aGUgZm9ydW0pIA0KaXQncyB1bnN1aXRhYmxlIGluIHByb2R1Y3Rpb24gOg0KKiBS ZWFkaW5nIHRoZSBhbGwgZGF0YSBldmVyeSBkYXkgZm9yIGEgYmFja3VwIGlzIGFuIG92ZXJraWxs LCB3aGljaCANCiAgbGVhZHMgdG8gd2FzdGVkIGVuZXJneSBhbmQgcHJlbWF0dXJlIGhhcmR3YXJl IGZhaWx1cmVzLg0KKiBXaXRoIGJpZyBjbHVzdGVycyBvZiBkYXRhLCBpdCBjYW4ndCBiZSBkb25l IG9uIGEgZGFpbHkgYmFzaXMsIA0KICBzbyByaXNrIG9mIGxvb3NpbmcgZGF0YSBpcyBoaWdoZXIN Cg0KPiBqdXN0IHRvIGNsYXJpZnksIHRoYXQgc2VudGVuY2Ugb25seSByZWxhdGVzIHRvICdmaWxl LWJhc2VkIGJhY2t1cHMnLCANCj4gc2luY2UgZm9yIGJsb2NrIGJhc2VkIGJhY2t1cHMsIHdlIGRv IG5vdCBjYXJlIGFib3V0IGZpbGVzIGF0IGFsbCwNCj4ganVzdCBhYm91dCB0aGUgJ2Jsb2NrIGlt YWdlJyB3ZSB0cnkgYmFjayB1cC4NCg0KQWdyZWVkLg0KDQo+IHdoaWxlIHNvbWV0aGluZyBsaWtl IHRoYXQgKmNvdWxkKiB3b3JrLCBpdCBpcyBub3QgaG93IHdlIGRvIGl0Lg0KDQpTbyB0aGVyZSdz IG5vIGNhdGNoLCBQQlMgb25seSB0b29rIHRoZSBzaW1wbGVzdCBwYXRoID8NCg0KPiBpbnN0ZWFk IG9mIHJlbHlpbmcgb24gc3RvcmFnZSBzbmFwc2hvdHMgKHdoaWNoIG1heQ0KPiBub3QgYmUgYXZh aWxhYmxlLCBlLmcuIGZvciAnLnJhdycgZmlsZXMpDQo+IHdlIHNpbXBseSBpdGVyYXRlIG92ZXIg dGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrIGxldmVsIGltYWdlLA0KPiBhbmQgY3JlYXRlIHRoZSBj aHVua3MgaGFzaGVzLiB0aGlzIG5vcm1hbGx5IG1lYW5zIHRoYXQgd2UgaGF2ZQ0KPiB0byByZWFk IHRoZSB3aG9sZSBpbWFnZSwgYnV0IGluIGNhc2Ugb2YgcHZlIHFlbXUgdm1zLA0KPiB3ZSB1c2Ug KGFzIHdyaXR0ZW4gaW4gbXkgcGF0Y2gpIGRpcnR5LWJpdG1hcHMNCj4gd2hpY2gga2VlcHMgdHJh Y2sgb2YgdGhlIGNoYW5nZWQgYmxvY2tzDQo+IChvbmx5IHRob3NlIGhhdmUgdG8gYmUgaGFzaGVk IGFuZCBiYWNrZWQgdXApDQoNCklmIHNuYXBzaG90cyBhcmVuJ3QgYXZhaWxhYmxlLCB0aGVuIHlv dSBoYXZlIHRvIHJlYWQgYWxsIHRoZSBkYXRhLCBhZ3JlZWQuDQpCdXQgd2hlbiBzbmFwc2hvdHMg YXJlIGF2YWlsYWJsZSwgbm90IHVzaW5nIHRoZW0gaXMgcHJvYmxlbWF0aWMgYXMgDQpwcmV2aW91 c2x5IHN0YXRlZC4gVXNpbmcgZGlydHktYml0bWFwcyBtZWFucyB5b3UgYWxyZWFkeSBpbXBsZW1l bnRlZCANCnBhcnQgb2YgdGhlIGNoYW5nZWQgYmxvY2tzIGFsZ29yaXRobS4NCg0KPiBhZ2Fpbiwg d2UgZG8gbm90IHJlbHkgb24gc3RvcmFnZSBzbmFwc2hvdHMsIHNpbmNlIHRob3NlIG1heQ0KPiBu b3QgYmUgYXZhaWxhYmxlIChlLmcuIGV4dDQpDQoNClNhbWUgY29tbWVudHMgYXMgYWJvdmUuDQoN Cj4gc28sIGZpcnN0IHdlIGl0ZXJhdGUgb3ZlciB0aGUgZmlsZXN5c3RlbS9kaXJlY3RvcnksIGZy b20gdGhlcmUsDQo+IHdlIGNyZWF0ZSBhIGNvbnNpc3RlbnQgYXJjaGl2ZSBmb3JtYXQgKHB4YXIp LiB0aGlzIGlzIHNvbWV0aGluZw0KPiBsaWtlICd0YXInIGJ1dCBjYW4gYmUgY3JlYXRlZCBpbiBh IHN0cmVhbWluZyBmYXNoaW9uICh3aGljaCB3ZQ0KPiBuZWVkKS4NCj4gb25seSBvdmVyIHRoYXQg YXJjaGl2ZSwgd2UgY3JlYXRlIHRoZSBjaHVua3MuIHNvIHRoZSBkYXRhIHRoYXQNCj4gdGhlIGNo dW5rZXIgZ2V0cywgaGFzIG5vIGRpcmVjdCByZWxhdGlvbiB0byBhbnkgZmlsZXMNCg0KV2hlbiBp dGVyYXRpbmcgdGhyb3VnaCBmaWxlc3lzdGVtIGluIGEgdGFyIGZhc2hpb24sIHlvdSBoYXZlIGFs bCB0aGUgDQpmaWxlbmFtZXMgeW91IHJlYWQgc28gZmFyLiANCllvdSBjYW4gbWFwIGRhdGEgZXh0 ZW50cyB0byBmaWxlcyBwcmVjaXNlbHkuDQpBbHNvIEkgc2F3IHRoYXQgeW91IGNhbiBtb3VudCBw eGFyIGFyY2hpdmVzLCB3aGljaCBtZWFucyB5b3UgDQphbHJlYWQgc2F2ZSB0aGUgbWFwcGluZyBp bnNpZGUuDQoNCkkgaG9wZSBteSBwb2ludCBvZiB2aWV3IGlzIGNsZWFyZXIgbm93Lg0KDQpCZXN0 IHJlZ2FyZHMsDQpMdWJvbWlyIEFwb3N0b2xvdg0KDQotLS0tLU1lc3NhZ2UgZCdvcmlnaW5lLS0t LS0NCkRlwqA6IERvbWluaWsgQ3NhcGFrIFttYWlsdG86ZC5jc2FwYWtAcHJveG1veC5jb21dIA0K RW52b3nDqcKgOiBqZXVkaSAxMCBkw6ljZW1icmUgMjAyMCAwODozOA0Kw4DCoDogUHJveG1veCBC YWNrdXAgU2VydmVyIGRldmVsb3BtZW50IGRpc2N1c3Npb247IEx1Ym9taXIgQXBvc3RvbG92DQpP YmpldMKgOiBSZTogW3Bicy1kZXZlbF0gW1BBVENIIHByb3htb3gtYmFja3VwXSBkb2NzOiBleHBs YWluIHNvbWUgdGVjaG5pY2FsIGRldGFpbHMgYWJvdXQgZGF0YXN0b3Jlcy9jaHVua3MNCg0KT24g MTIvOS8yMCA1OjIzIFBNLCBMdWJvbWlyIEFwb3N0b2xvdiB3cm90ZToNCj4gSGksDQoNCkhpLA0K DQp0aGFua3MgZm9yIHlvdXIgbWVzc2FnZSwgeW91ciBxdWVzdGlvbnMgbWVhbiBpIGRpZCBub3QN CndyaXRlIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFyIGVub3VnaCwgaSB0cnkgdG8gYW5zd2VyIGhl cmUsDQpidXQgaSdsbCBhbHNvIGluY29ycG9yYXRlIHRoYXQgaW5mbyBpbiBhIHYyDQoNCj4gDQo+ IEFmdGVyIHJlYWRpbmcgaHR0cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9MzEzOCBhbmQgeW91ciBtYWlsLCBJJ2QgbGlrZSB0byBkaXNjdXNzIHRoZSBmb2xsb3dpbmcg c3RhdGVtZW50IDoNCj4gIndlIGhhdmUgdG8gcmVhZCBhbGwgZmlsZXMgYWdhaW4gaW4gZXZlcnkg YmFja3VwIiBmb3IgYm90aCBjYXNlcyAtIGZpbGUgYW5kIGltYWdlIGJhc2VkIGJhY2t1cC4NCg0K anVzdCB0byBjbGFyaWZ5LCB0aGF0IHNlbnRlbmNlIG9ubHkgcmVsYXRlcyB0byAnZmlsZS1iYXNl ZCBiYWNrdXBzJywgDQpzaW5jZSBmb3IgYmxvY2sgYmFzZWQgYmFja3Vwcywgd2UgZG8gbm90IGNh cmUgYWJvdXQgZmlsZXMgYXQgYWxsLA0KanVzdCBhYm91dCB0aGUgJ2Jsb2NrIGltYWdlJyB3ZSB0 cnkgYmFjayB1cC4NCg0KDQo+IA0KPiBUaGUgaW1hZ2UtYmFja3VwIHNlZW1zIHNpbXBsZXIgLSBm aXhlZC1zaXplIGNodW5rcy4NCj4gUEJTIHNob3VsZCBiZSBhYmxlIHRvIGxpbmsgYSBzbmFwc2hv dCB3aXRoIGl0J3MgYmFja3VwLCBhbmQgYmFja3VwIG9ubHkgZGlmZmVyZW5jaWVzIHdpdGggcGFy ZW50IHNuYXBzaG90IGFzIGZvciBleGFtcGxlIHpmcyBzZW5kL3JlY3Ygd29ya3MuDQo+IEV2ZXJ5 IGJhY2t1cCBrbm93cyB0aGUgY2h1bmsgb3JkZXIgYW5kIGNodW5rIHNpemUsIHNvIGl0IGNhbiBt YXAgZXZlcnkgY2h1bmsgdG8gdGhlIG9yaWdpbmFsIGltYWdlIGV4dGVudHMuDQo+IFRoZSBzbmFw c2hvdCBkaWZmZXJlbmNlcyBnaXZlcyBleHRlbnRzLCB3aGljaCBQQlMgY2FuIG1hcCB0byBvdmVy bGFwcGVkIGNodW5rcywgYW5kIHNlbmQgb25seSB0aG9zZSBjaHVua3MsIHdoaWxlIHJlZmVyZW5j aW5nIHVuY2hhbmdlZCBjaHVua3MgZnJvbSBwcmV2aW91cyBiYWNrdXAgY2h1bmtzIGxpc3QuDQoN CndoaWxlIHNvbWV0aGluZyBsaWtlIHRoYXQgKmNvdWxkKiB3b3JrLCBpdCBpcyBub3QgaG93IHdl IGRvIGl0Lg0KaW5zdGVhZCBvZiByZWx5aW5nIG9uIHN0b3JhZ2Ugc25hcHNob3RzICh3aGljaCBt YXkNCm5vdCBiZSBhdmFpbGFibGUsIGUuZy4gZm9yICcucmF3JyBmaWxlcykNCndlIHNpbXBseSBp dGVyYXRlIG92ZXIgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrIGxldmVsIGltYWdlLA0KYW5kIGNy ZWF0ZSB0aGUgY2h1bmtzIGhhc2hlcy4gdGhpcyBub3JtYWxseSBtZWFucyB0aGF0IHdlIGhhdmUN CnRvIHJlYWQgdGhlIHdob2xlIGltYWdlLCBidXQgaW4gY2FzZSBvZiBwdmUgcWVtdSB2bXMsDQp3 ZSB1c2UgKGFzIHdyaXR0ZW4gaW4gbXkgcGF0Y2gpIGRpcnR5LWJpdG1hcHMNCndoaWNoIGtlZXBz IHRyYWNrIG9mIHRoZSBjaGFuZ2VkIGJsb2Nrcw0KKG9ubHkgdGhvc2UgaGF2ZSB0byBiZSBoYXNo ZWQgYW5kIGJhY2tlZCB1cCkNCg0KPiANCj4gVGhlIHZhcmlhYmxlLXNpemUgY2h1bmtzIGJhc2Vk IG9uIGZpbGVzIG5lZWRzIGFub3RoZXIgbWFwcGluZyBiZXR3ZWVuIGNodW5rcyBhbmQgZmlsZW5h bWVzLg0KPiBUaGUgcm9sbGluZyBoYXNoIG92ZXIgdGhlIGRhdGEgbWF5IGJlIGxpbmtlZCBhIGxp c3QgY29udGFpbmluZyB0aGUgZmlsZW5hbWVzIGluc2lkZSwgYW5kIHRoZW4gdGhlIHNuYXBzaG90 IGRpZmYgY29udGFpbmluZyBmaWxlcyBjYW4gZmxhZyB0aGUgY2h1bmtzIHRvIGJlIHNhdmVkLg0K PiANCj4gU28gd2hlcmUncyB0aGUgY2F0Y2ggPw0KDQphZ2Fpbiwgd2UgZG8gbm90IHJlbHkgb24g c3RvcmFnZSBzbmFwc2hvdHMsIHNpbmNlIHRob3NlIG1heQ0Kbm90IGJlIGF2YWlsYWJsZSAoZS5n LiBleHQ0KQ0KDQpzbywgZmlyc3Qgd2UgaXRlcmF0ZSBvdmVyIHRoZSBmaWxlc3lzdGVtL2RpcmVj dG9yeSwgZnJvbSB0aGVyZSwNCndlIGNyZWF0ZSBhIGNvbnNpc3RlbnQgYXJjaGl2ZSBmb3JtYXQg KHB4YXIpLiB0aGlzIGlzIHNvbWV0aGluZw0KbGlrZSAndGFyJyBidXQgY2FuIGJlIGNyZWF0ZWQg aW4gYSBzdHJlYW1pbmcgZmFzaGlvbiAod2hpY2ggd2UNCm5lZWQpLg0KDQpvbmx5IG92ZXIgdGhh dCBhcmNoaXZlLCB3ZSBjcmVhdGUgdGhlIGNodW5rcy4gc28gdGhlIGRhdGEgdGhhdA0KdGhlIGNo dW5rZXIgZ2V0cywgaGFzIG5vIGRpcmVjdCByZWxhdGlvbiB0byBhbnkgZmlsZXMNCg0KaG9wZSB0 aGF0IGV4cGxhaW5zIGl0IGJldHRlcg0KDQo+IA0KPiBCZXN0IHJlZ2FyZHMsDQo+IEx1Ym9taXIg QXBvc3RvbG92DQo+IA0KPiAtLS0tLU1lc3NhZ2UgZCdvcmlnaW5lLS0tLS0NCj4gRGXCoDogcGJz LWRldmVsIFttYWlsdG86cGJzLWRldmVsLWJvdW5jZXNAbGlzdHMucHJveG1veC5jb21dIERlIGxh IHBhcnQgZGUgRG9taW5payBDc2FwYWsNCj4gRW52b3nDqcKgOiBtZXJjcmVkaSA5IGTDqWNlbWJy ZSAyMDIwIDE2OjI2DQo+IMOAwqA6IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQ0KPiBPYmpl dMKgOiBbcGJzLWRldmVsXSBbUEFUQ0ggcHJveG1veC1iYWNrdXBdIGRvY3M6IGV4cGxhaW4gc29t ZSB0ZWNobmljYWwgZGV0YWlscyBhYm91dCBkYXRhc3RvcmVzL2NodW5rcw0KPiANCj4gYWRkcyBl eHBsYW5hdGlvbnMgZm9yOg0KPiAqIHdoYXQgZGF0YXN0b3JlcyBhcmUNCj4gKiB0aGVpciByZWxh dGlvbiB3aXRoIHNuYXBzaG90cy9jaHVua3MNCj4gKiBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBj aHVuayBkaXJlY3Rvcnkgc3RydWN0dXJlcw0KPiAqIGZpeGVkLS9keW5hbWljYWxseS1zaXplZCBj aHVua3MNCj4gKiBzcGVjaWFsIGhhbmRsaW5nIG9mIGVuY3J5cHRlZCBjaHVua3MNCj4gKiBoYXNo IGNvbGxpc2lvbiBwcm9iYWJpbGl0eQ0KPiAqIGxpbWl0YXRpb24gb2YgZmlsZS1iYXNlZCBiYWNr dXBzDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBEb21pbmlrIENzYXBhayA8ZC5jc2FwYWtAcHJveG1v eC5jb20+DQo+IC0tLQ0KPiAgIGRvY3MvaW5kZXgucnN0ICAgICAgICAgICAgICB8ICAgMSArDQo+ ICAgZG9jcy90ZWNobmljYWwtb3ZlcnZpZXcucnN0IHwgMTUyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiAgIGRvY3MvdGVybWlub2xvZ3kucnN0ICAgICAgICB8ICAgMyAr DQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKQ0KPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkb2NzL3RlY2huaWNhbC1vdmVydmlldy5yc3QNCj4gDQo+IGRpZmYgLS1naXQgYS9k b2NzL2luZGV4LnJzdCBiL2RvY3MvaW5kZXgucnN0DQo+IGluZGV4IGZmZmNiNGZkLi5mM2U2YmYw YyAxMDA2NDQNCj4gLS0tIGEvZG9jcy9pbmRleC5yc3QNCj4gKysrIGIvZG9jcy9pbmRleC5yc3QN Cj4gQEAgLTMzLDYgKzMzLDcgQEAgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgIkdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZSIuDQo+ICAgICAgcHZlLWludGVncmF0aW9uLnJzdA0KPiAgICAg IHB4YXItdG9vbC5yc3QNCj4gICAgICBzeXNhZG1pbi5yc3QNCj4gKyAgIHRlY2huaWNhbC1vdmVy dmlldy5yc3QNCj4gICAgICBmYXEucnN0DQo+ICAgDQo+ICAgLi4gcmF3OjogbGF0ZXgNCj4gZGlm ZiAtLWdpdCBhL2RvY3MvdGVjaG5pY2FsLW92ZXJ2aWV3LnJzdCBiL2RvY3MvdGVjaG5pY2FsLW92 ZXJ2aWV3LnJzdA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMC4uMjBm OTM3YmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kb2NzL3RlY2huaWNhbC1vdmVydmlldy5y c3QNCj4gQEAgLTAsMCArMSwxNTIgQEANCj4gK1RlY2huaWNhbCBPdmVydmlldw0KPiArPT09PT09 PT09PT09PT09PT09DQo+ICsNCj4gKy4uIF90ZWNobmljYWxfb3ZlcnZpZXc6DQo+ICsNCj4gK0Rh dGFzdG9yZXMNCj4gKy0tLS0tLS0tLS0NCj4gKw0KPiArQSBEYXRhc3RvcmUgaXMgdGhlIGxvZ2lj YWwgcGxhY2Ugd2hlcmUgOnJlZjpgQmFja3VwIFNuYXBzaG90cyA8YmFja3VwX3NuYXBzaG90PmAN Cj4gK2FuZCB0aGVpciBjaHVua3MgYXJlIHN0b3JlZC4gU25hcHNob3RzIGNvbnNpc3Qgb2YgYSBt YW5pZmVzdCwgYmxvYnMsDQo+ICtkeW5hbWljLSBhbmQgZml4ZWQtaW5kZXhlcyAoc2VlIDpyZWY6 YHRlcm1pbm9sb2d5YCksIGFuZCBhcmUgc3RvcmVkIGluIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5 IHN0cnVjdHVyZToNCj4gKw0KPiArIDxkYXRhc3RvcmUtcm9vdD4vPHR5cGU+LzxpZD4vPHRpbWU+ Lw0KPiArDQo+ICtUaGUgaW5kZXhlcyBjb250YWluZWQgaW4gYSBzbmFwc2hvdCByZWZlcmVuY2Ug Y2h1bmtzIG9uIHdoaWNoIHRoZSBkZWR1cGxpY2F0aW9uDQo+ICtvZiBkYXRhc3RvcmVzIGlzIGJh c2VkLg0KPiArDQo+ICtDaHVua3MNCj4gKy0tLS0tLQ0KPiArDQo+ICtBIGNodW5rIGlzIHNvbWUg KHNvbWV0aW1lcyBlbmNyeXB0ZWQpIGRhdGEgd2l0aCBhIENSQy0zMiBjaGVja3N1bSBhdA0KPiAr dGhlIGVuZCBhbmQgYSB0eXBlIG1hcmtlciBhdCB0aGUgYmVnaW5uaW5nLiBJdCBpcyBpZGVudGlm aWVkIGJ5IGENCj4gK1NIQS0yNTYgY2hlY2tzdW0gb2YgaXRzIGNvbnRlbnQuDQo+ICsNCj4gK1Rv IGdlbmVyYXRlIHN1Y2ggY2h1bmtzLCBiYWNrdXAgZGF0YSBpcyBzcGxpdCBlaXRoZXIgaW50byBm aXhlZC1zaXplIG9yDQo+ICtkeW5hbWljYWxseS1zaXplZCBjaHVua3MuIFRoZSBzYW1lIGNvbnRl bnQgd2lsbCBiZSBoYXNoZWQgdG8gdGhlIHNhbWUNCj4gK2NoZWNrc3VtLg0KPiArDQo+ICtUaGUg Y2h1bmtzIG9mIGEgZGF0YXN0b3JlIGFyZSBmb3VuZCBpbg0KPiArDQo+ICsgPGRhdGFzdG9yZS1y b290Pi8uY2h1bmtzLw0KPiArDQo+ICtUaGlzIGNodW5rIGRpcmVjdG9yeSBpcyBmdXJ0aGVyIHN1 YmRpdmlkZWQgYnkgdGhlIGZpcnN0IGZvdXIgYnl0ZSBvZiB0aGUNCj4gK2NodW5rcyBjaGVja3N1 bSwgc28gdGhlIGNodW5rIHdpdGggdGhlIGNoZWNrc3VtDQo+ICsNCj4gKyBhMzQyZTgxNTFjYmY0 MzljZTY1ZjNkZjY5NmI1NGM2N2ExMTQ5ODJjYzBhYTc1MWYyODUyYzJmN2FjYzE5YThiDQo+ICsN Cj4gK2xpdmVzIGluDQo+ICsNCj4gKyA8ZGF0YXN0b3JlLXJvb3Q+Ly5jaHVua3MvYTM0Mi8NCj4g Kw0KPiArVGhpcyBpcyBkb25lIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHBlciBkaXJl Y3RvcnksIGFzIGhhdmluZw0KPiArbWFueSBmaWxlcyBwZXIgZGlyZWN0b3J5IGNhbiBiZSBiYWQg Zm9yIGZpbGUgc3lzdGVtIHBlcmZvcm1hbmNlLg0KPiArDQo+ICtUaGVzZSBjaHVuayBkaXJlY3Rv cmllcygnMDAwMCctJ2ZmZmYnKSB3aWxsIGJlIHByZWFsbG9jYXRlZCB3aGVuIHRoZSBkYXRhc3Rv cmUgaXMNCj4gK2NyZWF0ZWQuDQo+ICsNCj4gK0ZpeGVkLXNpemVkIENodW5rcw0KPiArXl5eXl5e Xl5eXl5eXl5eXl5eDQo+ICsNCj4gK0ZvciBibG9jayBiYXNlZCBiYWNrdXBzIChsaWtlIFZNcyks IGZpeGVkLXNpemVkIGNodW5rcyBhcmUgdXNlZC4gVGhlIGNvbnRlbnQNCj4gKyhkaXNrIGltYWdl KSwgaXMgc3BsaXQgaW50byBjaHVua3Mgb2YgdGhlIHNhbWUgbGVuZ3RoICh0eXBpY2FsbHkgNCBN aUIpLg0KPiArDQo+ICtUaGlzIHdvcmtzIHZlcnkgd2VsbCBmb3IgVk0gaW1hZ2VzLCBzaW5jZSB0 aGUgZmlsZSBzeXN0ZW0gb24gdGhlIGd1ZXN0LA0KPiArbW9zdCBvZnRlbiB0cmllcyB0byBhbGxv Y2F0ZSBmaWxlcyBpbiBjb250aWd1b3VzIHBpZWNlcywgc28gbmV3IGZpbGVzIGdldA0KPiArbmV3 IGJsb2NrcywgYW5kIGNoYW5naW5nIGV4aXN0aW5nIGZpbGVzIGNoYW5nZXMgb25seSB0aGVpciBv d24gYmxvY2tzLg0KPiArDQo+ICtBcyBhbiBvcHRpbWl6YXRpb24sIFZNcyBpbiBgUHJveG1veCBW RWBfIGNhbiBtYWtlIHVzZSBvZiAnZGlydHkgYml0bWFwcycsDQo+ICt3aGljaCBjYW4gdHJhY2sg dGhlIGNoYW5nZWQgYmxvY2tzIG9mIGFuIGltYWdlLiBTaW5jZSB0aGVzZSBiaXRtYXANCj4gK2Fy ZSBhbHNvIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGltYWdlIHNwbGl0IGludG8gY2h1bmtzLCB3 ZSBoYXZlDQo+ICthIGRpcmVjdCByZWxhdGlvbiBiZXR3ZWVuIGRpcnR5IGJsb2NrcyBvZiB0aGUg aW1hZ2UgYW5kIGNodW5rcyB3ZSBoYXZlDQo+ICt0byB1cGxvYWQsIHNvIG9ubHkgdG91Y2hlZCBj aHVua3Mgb2YgdGhlIGRpc2sgaGF2ZSB0byBiZSB1cGxvYWRlZCBmb3IgYSBiYWNrdXAuDQo+ICsN Cj4gK0R5bmFtaWNhbGx5LXNpemVkIENodW5rcw0KPiArXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e DQo+ICsNCj4gK0lmIGRvZXMgbm90IHdhbnQgdG8gYmFja3VwIGJsb2NrLWJhc2VkIHN5c3RlbXMg YnV0IGZpbGUtYmFzZWQgc3lzdGVtcywNCj4gK3VzaW5nIGZpeGVkLXNpemVkIGNodW5rcyBpcyBu b3QgYSBnb29kIGlkZWEsIHNpbmNlIGV2ZXJ5IHRpbWUgYSBmaWxlDQo+ICt3b3VsZCBjaGFuZ2Ug aW4gc2l6ZSwgdGhlIHJlbWFpbmluZyBkYXRhIGdldHMgc2hpZnRlZCBhcm91bmQgYW5kIHRoaXMN Cj4gK3dvdWxkIHJlc3VsdCBpbiBtYW55IGNodW5rcyBjaGFuZ2luZywgcmVkdWNpbmcgdGhlIGVm ZmVjdCBvZiBkZWR1cGxpY2F0aW9uLg0KPiArDQo+ICtUbyBpbXByb3ZlIHRoaXMsIGBQcm94bW94 IEJhY2t1cGBfIFNlcnZlciB1c2VzIGR5bmFtaWNhbGx5LXNpemVkIGNodW5rcw0KPiAraW5zdGVh ZC4gSW5zdGVhZCBvZiBzcGxpdHRpbmcgYW4gaW1hZ2UgaW50byBmaXhlZCBzaXplcywgaXQgZ2Vu ZXJhdGVzDQo+ICthIGNvbnNpc3RlbnQgZmlsZSBhcmNoaXZlIGFuZCB1c2VzIGEgcm9sbGluZyBo YXNoIG92ZXIgdGhlIGRhdGENCj4gK3RvIGNhbGN1bGF0ZSBjaHVuayBib3VuZGFyaWVzLiBXZSB1 c2UgYSB2YXJpYW50IG9mIEJ1emhhc2ggd2hpY2gNCj4gK2lzIGEgY3ljbGljIHBvbHlub21pYWwg YWxnb3JpdGhtLg0KPiArDQo+ICtJdCB3b3JrcyBieSBjb250aW51b3VzbHkgY2FsY3VsYXRpbmcg YSBoYXNoc3VtIHdoaWxlIGl0ZXJhdGluZyBvdmVyIHRoZQ0KPiArZGF0YSwgYW5kIG9uIGNlcnRh aW4gY29uZGl0aW9ucyBpdCB0cmlnZ2VycyBhIGhhc2ggYm91bmRhcnkuDQo+ICsNCj4gK0Fzc3Vt aW5nIHRoYXQgdGhlcmUgaXMgbm90IGEgY2hhbmdlIGluIGV2ZXJ5IGZpbGUgb2YgdGhlIHRvIHN5 c3RlbSB0bw0KPiArYmUgYmFja2VkIHVwLCBldmVudHVhbGx5IHRoZSBhbGdvcml0aG0gdHJpZ2dl cnMgdGhlIGJvdW5kYXJ5IG9uIHRoZQ0KPiArc2FtZSBkYXRhIGFzIGEgcHJldmlvdXMgYmFja3Vw LCByZXN1bHRpbmcgaW4gYSBjaHVuayB0aGF0IGNhbiBiZSByZXVzZWQuDQo+ICsNCj4gK0VuY3J5 cHRlZCBDaHVua3MNCj4gK15eXl5eXl5eXl5eXl5eXl4NCj4gKw0KPiArQSBzcGVjaWFsIGNhc2Ug YXJlIGVuY3J5cHRlZCBjaHVua3MuIEJvdGggZml4ZWQtIGFuZCBkeW5hbWljYWxseS1zaXplZA0K PiArY2h1bmtzIGNhbiBiZSBlbmNyeXB0ZWQsIGFuZCB0aGVpciBoYW5kbGluZyBpcyBzbGlnaHRs eSBkaWZmZXJlbnQNCj4gK2Zyb20gbm9ybWFsIGNodW5rcy4NCj4gKw0KPiArVGhlIGhhc2ggb2Yg ZW5jcnlwdGVkIGNodW5rcyBhcmUgY2FsY3VsYXRlZCBub3Qgd2l0aCB0aGUgYWN0dWFsIChlbmNy eXB0ZWQpDQo+ICtjaHVuayBjb250ZW50LCBidXQgd2l0aCB0aGUgcGxhaW50ZXh0IGNvbnRlbnQg Y29uY2F0ZW5hdGVkIHdpdGgNCj4gK3RoZSBlbmNyeXB0aW9uIGtleS4gVGhpcyB3YXksIHR3byBj aHVua3Mgb2YgdGhlIHNhbWUgZGF0YSBlbmNyeXB0ZWQgd2l0aA0KPiArZGlmZmVyZW50IGtleXMg Z2VuZXJhdGUgdHdvIGRpZmZlcmVudCBjaGVja3N1bXMgYW5kIG5vIGNvbGxpc2lvbnMgb2NjdXIg Zm9yDQo+ICttdWx0aXBsZSBlbmNyeXB0aW9uIGtleXMuDQo+ICsNCj4gK1RoaXMgaXMgZG9uZSB0 byBzcGVlZCB1cCB0aGUgY2xpZW50IHBhcnQgb2YgdGhlIGJhY2t1cCwgc2luY2UgaXQgb25seSBu ZWVkcw0KPiArdG8gZW5jcnlwdCBjaHVua3MgdGhhdCBhcmUgYWN0dWFsbHkgZ2V0dGluZyB1cGxv YWRlZCBhbmQgY2h1bmtzIHRoYXQgZXhpc3QNCj4gK2FscmVhZHkgaW4gdGhlIHByZXZpb3VzIGJh Y2t1cCwgZG8gbm90IG5lZWQgdG8gYmUgZW5jcnlwdGVkIGFuZCB1cGxvYWRlZC4NCj4gKw0KPiAr Q2F2ZWF0cyBhbmQgTGltaXRhdGlvbnMNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsN Cj4gK05vdGVzIG9uIGhhc2ggY29sbGlzaW9ucw0KPiArXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e DQo+ICtFdmVyeSBoYXNoIGhhcyBhIGNoYW5jZSB0byBwcm9kdWNlIGNvbGxpc2lvbnMsIG1lYW5p bmcgdHdvIChvciBtb3JlKSBpbnB1dHMNCj4gK2dlbmVyYXRpbmcgdGhlIHNhbWUgaGFzaHN1bS4g Rm9yIFNIQS0yNTYsIHRoaXMgY2hhbmNlIGlzIG5lZ2xpZ2libGUuDQo+ICtUbyBjYWxjdWxhdGUg c3VjaCBhIGNvbGxpc2lvbiwgb25lIGNhbiB1c2UgdGhlIGlkZWFzIG9mIHRoZSAnYmlydGhkYXkg cHJvYmxlbScNCj4gK2Zyb20gcHJvYmFiaWxpdHkgdGhlb3J5LiBGb3IgYmlnIG51bWJlcnMsIHRo aXMgaXMgYWN0dWFsbHkgbm90IGZlYXNpYmxlIHRvDQo+ICtjYWxjdWxhdGUgd2l0aCBub3JtYWwg Y29tcHV0ZXJzLCBidXQgdGhlcmUgaXMgYSBnb29kIGFwcHJveGltYXRpb246DQo+ICsNCj4gKy4u IG1hdGg6Og0KPiArDQo+ICsgcChuLCBkKSA9IDEgLSBlXnstbl4yLygyZCl9DQo+ICsNCj4gK1do ZXJlIGBuYCBpcyB0aGUgbnVtYmVyIG9mIHRyaWVzLCBhbmQgYGRgIGlzIHRoZSBudW1iZXIgb2Yg cG9zc2liaWxpdGllcy4NCj4gK1NvIGZvciBleGFtcGxlLCBpZiB3ZSBhc3N1bWUgYSBsYXJnZSBk YXRhc3RvcmUgb2YgMSBQaUIsIGFuZCBhbiBhdmVyYWdlIGNodW5rDQo+ICtzaXplIG9mIDQgTWlC LCB3ZSBoYXZlIDptYXRoOmBuID0gMjY4NDM1NDU2YCB0cmllcywgYW5kIDptYXRoOmBkID0gMl57 MjU2fWANCj4gK3Bvc3NpYmlsaXRpZXMuICBVc2luZyB0aGUgYWJvdmUgZm9ybXVsYSB3ZSBnZXQg dGhhdCB0aGUgcHJvYmFiaWxpdHkgb2YgYQ0KPiArY29sbGlzaW9uIGluIHRoYXQgc2NlbmFyaW8g aXM6DQo+ICsNCj4gKy4uIG1hdGg6Og0KPiArDQo+ICsgMy4xMTE1ICogMTBeey02MX0NCj4gKw0K PiArRm9yIGNvbnRleHQsIGluIGEgbG90dGVyeSBnYW1lIG9mIDYgb2YgNDUsIHRoZSBjaGFuY2Ug dG8gY29ycmVjdGx5IGd1ZXNzIGFsbA0KPiArNiBudW1iZXJzIGlzIG9ubHkgOm1hdGg6YDEuMjI3 NyAqIDEwXnstN31gLg0KPiArDQo+ICtTbyBpdCBpcyBleHRyZW1lbHkgdW5saWtlbHkgdGhhdCBz dWNoIGEgY29sbGlzaW9uIHdvdWxkIG9jY3VyIGJ5IGFjY2lkZW50DQo+ICtpbiBhIG5vcm1hbCBk YXRhc3RvcmUuDQo+ICsNCj4gK0FkZGl0aW9uYWxseSwgU0hBLTI1NiBpcyBwcm9uZSB0byBsZW5n dGggZXh0ZW5zaW9uIGF0dGFja3MsIGJ1dCBzaW5jZQ0KPiArdGhlcmUgaXMgYW4gdXBwZXIgbGlt aXQgZm9yIGhvdyBiaWcgdGhlIGNodW5rIHNpemVzIGFyZSwgdGhpcyBpcyBub3QNCj4gK3Byb2Js ZW0sIHNpbmNlIGEgcG90ZW50aWFsIGF0dGFja2VyIGNhbm5vdCBhcmJpdHJhcmlseSBhZGQgdGhl IGNvbnRlbnQuDQo+ICsNCj4gKw0KPiArRmlsZS1iYXNlZCBCYWNrdXANCj4gK15eXl5eXl5eXl5e Xl5eXl5eDQo+ICsNCj4gK1NpbmNlIHRoZXJlIGlzIG5vIHJlbGF0aW9uIGJldHdlZW4gZmlsZXMg YW5kIGR5bmFtaWNhbGx5LXNpemVkIGNodW5rcywNCj4gK3dlIGhhdmUgdG8gcmVhZCBhbGwgZmls ZXMgYWdhaW4gaW4gZXZlcnkgYmFja3VwLiBPdGhlcndpc2UgaXQgd291bGQgbm90IGJlDQo+ICtw b3NzaWJsZSB0byBnZW5lcmF0ZSBhIGZvcm1hdCB3aGVyZSB0aGUgb3JpZ2luYWwgY2h1bmtzIGNh biBiZSByZXVzZWQuDQo+ICsNCj4gK1ZlcmlmaWNhdGlvbiBvZiBlbmNyeXB0ZWQgY2h1bmtzDQo+ ICteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXg0KPiArDQo+ICtGb3IgZW5jcnlwdGVk IGNodW5rcywgb25seSB0aGUgY2hlY2tzdW0gb2YgdGhlIG9yaWdpbmFsIChwbGFpbnRleHQpIGRh dGENCj4gK2lzIGF2YWlsYWJsZSwgbWFraW5nIGl0IGltcG9zc2libGUgZm9yIHRoZSBzZXJ2ZXIg KHdpdGhvdXQgdGhlIGVuY3J5cHRpb24ga2V5KSwNCj4gK3RvIHZlcmlmeSBpdHMgY29udGVudCBh Z2FpbnN0IGl0LiBJbnN0ZWFkIG9ubHkgdGhlIENSQy0zMiBjaGVja3N1bSBnZXRzIGNoZWNrZWQu DQo+ICsNCj4gKw0KPiBkaWZmIC0tZ2l0IGEvZG9jcy90ZXJtaW5vbG9neS5yc3QgYi9kb2NzL3Rl cm1pbm9sb2d5LnJzdA0KPiBpbmRleCA4OWVjNzY0Ni4uM2VmZjk3ODAgMTAwNjQ0DQo+IC0tLSBh L2RvY3MvdGVybWlub2xvZ3kucnN0DQo+ICsrKyBiL2RvY3MvdGVybWlub2xvZ3kucnN0DQo+IEBA IC0xLDMgKzEsNSBAQA0KPiArLi4gX3Rlcm1pbm9sb2d5Og0KPiArDQo+ICAgVGVybWlub2xvZ3kN Cj4gICA9PT09PT09PT09PQ0KPiAgIA0KPiBAQCAtOTksNiArMTAxLDcgQEAgQmFja3VwIEdyb3Vw DQo+ICAgVGhlIHR1cGxlIGBgPHR5cGU+LzxJRD5gYCBpcyBjYWxsZWQgYSBiYWNrdXAgZ3JvdXAu IFN1Y2ggYSBncm91cA0KPiAgIG1heSBjb250YWluIG9uZSBvciBtb3JlIGJhY2t1cCBzbmFwc2hv dHMuDQo+ICAgDQo+ICsuLiBfYmFja3VwX3NuYXBzaG90Og0KPiAgIA0KPiAgIEJhY2t1cCBTbmFw c2hvdA0KPiAgIC0tLS0tLS0tLS0tLS0tLQ0KPiANCg0KDQo=