From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id E5ECBCFD for ; Mon, 1 Jan 2018 11:05:02 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-oln040092253070.outbound.protection.outlook.com [40.92.253.70]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 1D5824CF for ; Mon, 1 Jan 2018 11:04:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pskC+LIWCNNlxHZfYAjR3wFuaUb35FHw1NbpJhozBgE=; b=ezs1remOPd9HnM3zYCRdo2tm98BM0yi3eVYXv9/PDBpYboov44SCrgXftlGtZVIiw3nd8idP6QqDvK4sVtk7FC0Kjus9jBFmSz6W3/iANj+bjM6Kd+eKA5dkmWU2p4ObXz0QnrgggQnP+p9cnxM/+jjj9ESW95B3iHCGhl06CDcVP5upjiML9Zeos4KT5qGJuW9qCsdTamNUghWGGcQo+AFLSK30CdhWkMvcJRC/mTgsuK6Uj8K3oGIJ3cJhur7XceZ8nQcP3FV2S605IECAS+nPxK4J6uzIP4c8YYctX+h2VvfFnwpVdY9psMlY7bsgr4tqlHOn4EfP84c3eoqBZQ== Received: from SG2APC01FT042.eop-APC01.prod.protection.outlook.com (10.152.250.51) by SG2APC01HT116.eop-APC01.prod.protection.outlook.com (10.152.250.255) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.302.6; Mon, 1 Jan 2018 11:04:57 +0000 Received: from PS2P216MB0179.KORP216.PROD.OUTLOOK.COM (10.152.250.58) by SG2APC01FT042.mail.protection.outlook.com (10.152.251.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.345.12 via Frontend Transport; Mon, 1 Jan 2018 11:04:57 +0000 Received: from PS2P216MB0179.KORP216.PROD.OUTLOOK.COM ([10.171.225.19]) by PS2P216MB0179.KORP216.PROD.OUTLOOK.COM ([10.171.225.19]) with mapi id 15.20.0366.007; Mon, 1 Jan 2018 11:04:57 +0000 From: Damian Williamson To: "bitcoin-dev@lists.linuxfoundation.org" Thread-Topic: [bitcoin-dev] BIP Proposal: Revised: UTPFOTIB - Use Transaction Priority For Ordering Transactions In Blocks Thread-Index: AQHTgvBb8N0JH3cL9Uqi71Bvfy6OVg== Date: Mon, 1 Jan 2018 11:04:57 +0000 Message-ID: Accept-Language: en-AU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:541736824255771AF079930EB2B243CC22CE7BBF666F70BF6AA6D4381CC6869D; UpperCasedChecksum:D00C538E424F2F6B221918CF6ADC383C0427CF9318546B8C11C5466246D46685; SizeAsReceived:7008; Count:44 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [i2hQiQ+EV5msbNJOnTZpQl/p7E1vO9Lp] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; SG2APC01HT116; 6:gRVoPsS4+Djck9R92Glpt2miNKMQ5txkeLyE+lsQMtR/a4gTe3xVNFuPwaHRaw4RGoilfHDwtG1xAG3AWg1TqWvDyrRKd9ssb3otvYbY+crX43sPbSS22C8342a6vIxqjALFrQPesRIVj3SMFDPVwhCLm+m2lZ1NyIsLa1Djtfv+5bm9Vs10oNCDVde2+cNL7uVRmhi0dAi0tHH7+qz0xbdT/6DbrTDDxL6tPjEX+5R1cWiLM0JYJ2m12w4Af5igatOP+s2qIrl99YykGTCt5tXSXT/xu4fUaExXa9OAGbU/Ruv2NritJB6ikF+XhfiUggYFkWqdQD2gfO6dsTzqMOQDfbXdEfmMh59HaRKbPJA=; 5:/ImnVmmkxzQuaqZVra+uDZWov06GK61vahR8kIBd6Qh0uzd4LjIN2tQz3ac9A7E5xZCkJ0M/DifNq463YUtXrgP8X2TRzHO0iIHbXweYcR6WloD+LtPlvyQwNQcngxWyCF9vwZbEY7SXVaHubcwFbMZImmFU53KA+J7fZZAtgz4=; 24:K203UEcVuDBZbZGNNB/zWarkZuYp+l0clFLUkCyCJcKFFjBcaJ4a6CKU8SZQ3tTag67yA2fia7HiSC8qpGLT0D4wtA1qmrVI3U3rXWM092Q=; 7:A0SXuJGFlcA5OCPAlwNXIwIGRKIw9PT1SI8/qiyDG3T9rDa7PoaZlOCQCwhg+825mpf47VwN5zkOMxit6KJdXWsaSwxbvH5hHfON6YMZzSd31ZzjX0Bfi/phU725W0+1o7zXHQ25yCf5wN0rKEwvlkap++UguibnOjCA7FXxkrfxLVUmWZaHWVrZE/Y6x2DIj+3c4QYnNL4XETTSRPSu1KB/GSJ3mWNHMjwYzWIIbh6Ko/hoz+DLxCWWekJJf7ph x-incomingheadercount: 44 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125374)(1701031045); SRVR:SG2APC01HT116; x-ms-traffictypediagnostic: SG2APC01HT116: x-ms-office365-filtering-correlation-id: c79e204c-743f-4692-250b-08d551077a76 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:SG2APC01HT116; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SG2APC01HT116; x-forefront-prvs: 0539EEBD11 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:SG2APC01HT116; H:PS2P216MB0179.KORP216.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <2F5E9CF340E15D48A94C298DD74A0AFC@KORP216.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c79e204c-743f-4692-250b-08d551077a76 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jan 2018 11:04:57.3509 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2APC01HT116 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org X-Mailman-Approved-At: Mon, 01 Jan 2018 13:40:13 +0000 Subject: [bitcoin-dev] BIP Proposal: Revised: UTPFOTIB - Use Transaction Priority For Ordering Transactions In Blocks X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jan 2018 11:05:03 -0000 SGFwcHkgTmV3IFllYXIgYWxsLg0KDQpUaGlzIHByb3Bvc2FsIGhhcyBiZWVuIGZ1cnRoZXIgYW1l bmRlZCB3aXRoIHNldmVyYWwgbWlub3IgY2hhbmdlcyBhbmQgYQ0KZmV3IGFkZGl0aW9ucy4NCg0K SSBiZWxpZXZlIHRoYXQgYWxsIGtub3duIGlzc3VlcyByYWlzZWQgc28gZmFyIGhhdmUgYmVlbiBz dWZmaWNpZW50bHkNCmFkZHJlc3NlZC4gRWl0aGVyIHRoYXQgb3IsIEkgc3RpbGwgaGF2ZSBtb3Jl IHdvcmsgdG8gZG8uDQoNCiMjIEJJUCBQcm9wb3NhbDogUmV2aXNlZDogVVRQRk9USUIgLSBVc2Ug VHJhbnNhY3Rpb24gUHJpb3JpdHkgRm9yDQpPcmRlcmluZyBUcmFuc2FjdGlvbnMgSW4gQmxvY2tz DQoNClNjaGVtYTogwqANCiMjIyMjIyMjIyMgwqANCkRvY3VtZW50OiBCSVAgUHJvcG9zYWwgwqAN ClRpdGxlOiBVVFBGT1RJQiAtIFVzZSBUcmFuc2FjdGlvbiBQcmlvcml0eSBGb3IgT3JkZXJpbmcg VHJhbnNhY3Rpb25zIEluDQpCbG9ja3MgwqANClB1Ymxpc2hlZDogMjYtMTItMjAxNyDCoA0KUmV2 aXNlZDogMDEtMDEtMjAxOCDCoA0KQXV0aG9yOiBEYW1pYW4gV2lsbGlhbXNvbiA8d2lsbHRlY2hA bGl2ZS5jb20uYXU+wqDCoA0KTGljZW5jZTogQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1T aGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsDQpMaWNlbnNlLiDCoA0KVVJMOiBodHRwOi8vdGhl a2luZ2phbWVzaHJtaC50dW1ibHIuY29tL3Bvc3QvMTY4OTQ4NTMwOTUwL2JpcC1wcm9wb3NhbC0N CnV0cGZvdGliLXVzZS10cmFuc2FjdGlvbi1wcmlvcml0eS1mb3Itb3JkZXLCoMKgDQojIyMjIyMj IyMjDQoNCiMjIyAxLiBBYnN0cmFjdA0KDQpUaGlzIGRvY3VtZW50IHByb3Bvc2VzIHRvIGFkZHJl c3MgdGhlIGlzc3VlIG9mIHRyYW5zYWN0aW9uYWwNCnJlbGlhYmlsaXR5IGluIEJpdGNvaW4sIHdo ZXJlIHZhbGlkIHRyYW5zYWN0aW9ucyBtYXkgYmUgc3R1Y2sgaW4gdGhlDQp0cmFuc2FjdGlvbiBw b29sIGZvciBleHRlbmRlZCBwZXJpb2RzIG9yIG5ldmVyIGNvbmZpcm0uDQoNClRoZXJlIGFyZSB0 d28ga2V5IGlzc3VlcyB0byBiZSByZXNvbHZlZCB0byBhY2hpZXZlIHRoaXM6DQoNCjEuwqDCoFRo ZSBjdXJyZW50IHRyYW5zYWN0aW9uIGJhbmR3aWR0aCBsaW1pdC4NCjIuwqDCoFRoZSBjdXJyZW50 IGFkLWhvYyBtZXRob2RzIG9mIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgaW4gYmxvY2tzDQpyZXN1 bHRpbmcgaW4gdmFyaWFibGUgYW5kIGNvbmZ1c2luZyBjb25maXJtYXRpb24gdGltZXMgZm9yIHZh bGlkDQp0cmFuc2FjdGlvbnMsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgd2l0aCBhIHZhbGlkIGZl ZSB0aGF0IG1heSBuZXZlcg0KY29uZmlybS4NCg0KSXQgaXMgaW1wb3J0YW50IHdpdGggYW55IGNo YW5nZSB0byBwcm90ZWN0IHRoZSB2YWx1ZSBvZiBmZWVzIGFzIHRoZXNlDQp3aWxsIGV2ZW50dWFs bHkgYmUgdGhlIG9ubHkgcGF5bWVudCB0aGF0IG1pbmVycyByZWNlaXZlLiBSYXRoZXIgdGhhbiBh bg0KYXVjdGlvbiBtb2RlbCBmb3IgbGltaXRlZCBiYW5kd2lkdGgsIHRoZSBwcm9wb3NhbCByZXN1 bHRzIGluIGEgZmVlIGZvcg0KcHJpb3JpdHkgc2VydmljZSBhdWN0aW9uIG1vZGVsLg0KDQpJdCB3 b3VsZCBub3QgYmUgdHJ1ZSB0byBzdWdnZXN0IHRoYXQgYWxsIGZlZWRiYWNrIHJlY2VpdmVkIHNv IGZhciBoYXMNCmJlZW4gZW50aXJlbHkgcG9zaXRpdmUgYWx0aG91Z2gsIG1vc3Qgb2YgaXQgaGFz IGJlZW4gY29uc3RydWN0aXZlLg0KDQpUaGUgcHJldmlvdXMgdGhyZWFkcyBmb3IgdGhpcyBwcm9w b3NhbCBhcmUgYXZhaWxhYmxlIGhlcmU6IMKgDQpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlv bi5vcmcvcGlwZXJtYWlsL2JpdGNvaW4tZGV2LzIwMTctRGVjZW1iZXIvcw0KdWJqZWN0Lmh0bWwN Cg0KSW4gYWxsIHBhcnRzIG9mIHRoaXMgcHJvcG9zYWwsIHJlZmVyZW5jZXMgdG8gYSB0cmFuc2Fj dGlvbiwgYSB2YWxpZA0KdHJhbnNhY3Rpb24sIGEgdHJhbnNhY3Rpb24gd2l0aCBhIHZhbGlkIGZl ZSwgYSB2YWxpZCBmZWUsIGV0Yy4gaXMNCmRlZmluZWQgYXMgYW55IHRyYW5zYWN0aW9uIHRoYXQg aXMgb3RoZXJ3aXNlIHZhbGlkIHdpdGggYSBmZWUgb2YgYXQNCmxlYXN0IDAuMDAwMDEwMDAgQlRD L0tCIGFzIGRlZmluZWQgYXMgdGhlIGR1c3QgbGV2ZWwsIGludGVycHJldGluZyBmcm9tDQpCaXRj b2luIENvcmUgR1VJLiBUcmFuc2FjdGlvbnMgd2l0aCBhIGZlZSBsb3dlciB0aGFuIHRoaXMgcmF0 ZSBhcmUNCmNvbnNpZGVyZWQgZHVzdC4NCg0KSW4gYWxsIHBhcnRzIG9mIHRoaXMgcHJvcG9zYWws IGR1c3QgYW5kIHplcm8tZmVlIHRyYW5zYWN0aW9ucyBhcmUNCmFsd2F5cyBpZ25vcmVkIGFuZC9v ciBleGNsdWRlZCB1bmxlc3Mgc3BlY2lmaWNhbGx5IG1lbnRpb25lZC4NCg0KSXQgaXMgZ2VuZXJh bGx5IGFzc3VtZWQgdGhhdCBtaW5lcnMgY3VycmVudGx5IHByZWZlciB0byBpbmNsdWRlDQp0cmFu c2FjdGlvbnMgd2l0aCBoaWdoZXIgZmVlcy4NCg0KIyMjIDIuIFRoZSBuZWVkIGZvciB0aGlzIHBy b3Bvc2FsDQoNCldlIGFsbCBtdXN0IGxlYXJuIHRvIGFkbWl0IHRoYXQgdHJhbnNhY3Rpb24gYmFu ZHdpZHRoIGlzIHN0aWxsIGx1cmtpbmcNCmFzIGEgc2VyaW91cyBpc3N1ZSBmb3IgdGhlIG9wZXJh dGlvbiwgcmVsaWFiaWxpdHksIHNhZmV0eSwgY29uc3VtZXINCmFjY2VwdGFuY2UsIHVwdGFrZSBh bmQsIGZvciB0aGUgdmFsdWUgb2YgQml0Y29pbi4NCg0KSSByZWNlbnRseSBzZW50IGEgcGF5bWVu dCB3aGljaCB3YXMgbm90IHVyZ2VudCBzbzsgSSBjaG9zZSB0aHJlZS1kYXkNCnRhcmdldCBjb25m aXJtYXRpb24gZnJvbSB0aGUgZmVlIHJlY29tbWVuZGF0aW9uLiBUaGF0IHRyYW5zYWN0aW9uIGhh cw0Kc3RpbGwgbm90IGNvbmZpcm1lZCBhZnRlciBub3cgbW9yZSB0aGFuIHNpeCBkYXlzIC0gZXZl biB3YWl0aW5nIHR3aWNlDQphcyBsb25nIHNlZW1zIHF1aXRlIHJlYXNvbmFibGUgdG8gbWUgKG5v dGUgZm9yIGFjY3VyYWN5OiBpdCBkaWQNCmV2ZW50dWFsbHkgY29uZmlybSkuIFRoYXQgdHJhbnNh Y3Rpb24gaXMgYSB2YWxpZCB0cmFuc2FjdGlvbjsgaXQgaXMgbm90DQpydWJiaXNoLCBqdW5rIG9y LCBzcGFtLiBVbmRlciB0aGUgY3VycmVudCBtb2RlbCB3aXRoIHRyYW5zYWN0aW9uDQpiYW5kd2lk dGggbGltaXRhdGlvbiwgdGhlIGxvbmdlciBhIHRyYW5zYWN0aW9uIHdhaXRzLCB0aGUgbGVzcyBs aWtlbHkNCml0IGlzIGV2ZXIgdG8gY29uZmlybSBkdWUgdG8gcmlzaW5nIHRyYW5zYWN0aW9uIG51 bWJlcnMgYW5kIGJlaW5nDQpwdXNoZWQgYmFjayBieSB0cmFuc2FjdGlvbnMgd2l0aCByaXNpbmcg ZmVlcy4NCg0KSSBhcmd1ZSB0aGF0IG5vIHRyYW5zYWN0aW9ucyB3aXRoIGZlZXMgYWJvdmUgdGhl IGR1c3QgbGV2ZWwgYXJlIHJ1YmJpc2gNCm9yIGp1bmssIG9ubHkgc29tZSB6ZXJvIGZlZSB0cmFu c2FjdGlvbnMgbWlnaHQgYmUgc3BhbS4gSGF2aW5nIGFuIGV2ZXItDQppbmNyZWFzaW5nIG51bWJl ciBvZiB2YWxpZCB0cmFuc2FjdGlvbnMgdGhhdCBkbyBub3QgY29uZmlybSBhcyBtb3JlIG5ldw0K dHJhbnNhY3Rpb25zIHdpdGggaGlnaGVyIGZlZXMgYXJlIGNyZWF0ZWQgaXMgdGhlIG9wcG9zaXRl IG9mIG9wZXJhdGluZw0KYSByb2J1c3QsIHJlbGlhYmxlIHRyYW5zYWN0aW9uIHN5c3RlbS4NCg0K V2hpbGUgdGhlIG1pbmVycyBoYXZlIGRpc2NvdmVyZWQgYSBnb2xkIG1pbmUsIGl0IGlzIHRoZSBz ZXJ2aWNlIHRoZXkNCnByb3ZpZGUgdGhhdCBpcyB2YWx1YWJsZS4gSWYgdGhlIHNlcnZpY2UgaXMg dW5yZWxpYWJsZSB0aGV5IGFyZSBub3QNCndvcnRoIHRoZSBnb2xkIHRoYXQgdGhleSBtaW5lLiBU aGlzIGlzIHJlZmxlY3RlZCBpbiB0aGUgdmFsdWUgb2YNCkJpdGNvaW4uDQoNCkJ1c2luZXNzIGNh bm5vdCBvcGVyYXRlIHdpdGggYSBtb2RlbCB3aGVyZSB0cmFuc2FjdGlvbnMgbWF5IG9yIG1heSBu b3QNCmNvbmZpcm0uIEV2ZW4gYSBidXNpbmVzcyBjaG9vc2luZyBhIG1vZGVzdCBmZWUgaGFzIG5v IGd1YXJhbnRlZSB0aGF0DQp0aGVpciB2YWxpZCB0cmFuc2FjdGlvbiB3aWxsIG5vdCBiZSBzaHVm ZmxlZCBkb3duIGJ5IG5ldyB0cmFuc2FjdGlvbnMNCnRvIHRoZSByZWFsbSBvZiBuZXZlciBjb25m aXJtaW5nIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIENvbnN1bWVycyBhbHNvDQp3aWxsIG5vdCBhY2Nl cHQgdGhpcyBtb2RlbCBhcyBCaXRjb2luIGV4cGFuZHMuIElmIEJpdGNvaW4gY2Fubm90IGJlIGEN CnJlbGlhYmxlIHBheW1lbnQgc3lzdGVtIGZvciBjb25maXJtZWQgdHJhbnNhY3Rpb25zIHRoZW4g Y29uc3VtZXJzLCBieQ0KYW5kIGxhcmdlLCB3aWxsIHNpbXBseSBub3QgYWNjZXB0IHRoZSBtb2Rl bCBvbmNlIHRoZXkgdW5kZXJzdGFuZC4NCkJpdGNvaW4gd2lsbCBiZSBhIGRpcnR5IHBheW1lbnQg c3lzdGVtLCBhbmQgdGhpcyB3aWxsIGtpbGwgdGhlIHZhbHVlIG9mDQpCaXRjb2luLg0KDQpVbmRl ciB0aGUgY3VycmVudCBzeXN0ZW0sIGEgbWlub3JpdHkgb2YgdHJhbnNhY3Rpb25zIHdpbGwgZXZl bnR1YWxseSBiZQ0KdGhlIGx1Y2t5IGZldyB3aG8gaGF2ZSBmZWVzIGhpZ2ggZW5vdWdoIHRvIGVz Y2FwZSBiZWluZyBwdXNoZWQgZG93biB0aGUNCmxpc3QuDQoNCk9uY2UgdGhlcmUgYXJlIG1vcmUg dGhhbiB4IHRyYW5zYWN0aW9ucyAodHJhbnNhY3Rpb24gYmFuZHdpZHRoIGxpbWl0KQ0KZXZlcnkg dGVuIG1pbnV0ZXMsIG9ubHkgdGhvc2UgY2hvb3NpbmcgdHdlbnR5LW1pbnV0ZSBjb25maXJtYXRp b24gKDINCmJsb2NrcykgZnJvbSB0aGUgZmVlIHJlY29tbWVuZGF0aW9ucyB3aWxsIGhhdmUgaW5p dGlhbGx5IGF0IG1vc3QgYQ0KZmlmdHkgcGVyY2VudCBjaGFuY2Ugb2YgZXZlciBoYXZpbmcgdGhl aXIgcGF5bWVudCBjb25maXJtIGJ5IHRoZSB0aW1lDQoyeCB0cmFuc2FjdGlvbnMgaXMgcmVhY2hl ZC4gUHJlc2VudGx5LCBub3QgZXZlbiB1c2luZyBmZWUNCnJlY29tbWVuZGF0aW9ucyBjYW4gZW5z dXJlIGEgc3VmZmljaWVudGx5IGhpZ2ggZmVlIGlzIHBhaWQgdG8gZW5zdXJlDQp0cmFuc2FjdGlv biBjb25maXJtYXRpb24uDQoNCkkgYWxzbyBhcmd1ZSB0aGF0IHRoZSBjdXJyZW50IGF1Y3Rpb24g bW9kZWwgZm9yIGxpbWl0ZWQgdHJhbnNhY3Rpb24NCmJhbmR3aWR0aCBpcyB3cm9uZywgaXMgbm90 IHN1aXRhYmxlIGZvciBhIHJlbGlhYmxlIHRyYW5zYWN0aW9uIHN5c3RlbQ0KYW5kLCBpcyB3cm9u ZyBmb3IgQml0Y29pbi4gQWxsIHRyYW5zYWN0aW9ucyB3aXRoIHZhbGlkIGZlZXMgbXVzdA0KY29u ZmlybSBpbiBkdWUgdGltZS4gQ3VycmVudGx5LCBCaXRjb2luIGlzIG5vdCBhIHNhZmUgd2F5IHRv IHNlbmQNCnBheW1lbnRzLg0KDQpJIGRvIG5vdCBiZWxpZXZlIHRoYXQgY29uc3VtZXJzIGFuZCBi dXNpbmVzcyBhcmUgYWdhaW5zdCBwYXlpbmcgZmVlcywNCmV2ZW4gaGlnaCBmZWVzLiBXaGF0IGlz IHJlcXVpcmVkIGlzIG9wZXJhdGlvbmFsIHJlbGlhYmlsaXR5Lg0KDQpUaGlzIGdyZWF0IGlzc3Vl IG5lZWRzIHRvIGJlIHJlc29sdmVkIGZvciB0aGUgc2FmZXR5IGFuZCByZWxpYWJpbGl0eSBvZg0K Qml0Y29pbi4gVGhlIHRpbWUgdG8gcmVzb2x2ZSBpc3N1ZXMgaW4gY29tbWVyY2UgaXMgYmVmb3Jl IHRoZXkgYmVjb21lDQpncmVhdCBiaWcgaXNzdWVzLiBUaGUgdGltZSB0byByZXNvbHZlIHRoaXMg aXNzdWUgaXMgbm93LiBXZSBtdXN0IGhhdmUNCnRoZSBmb3Jlc2lnaHQgdG8gaWRlbnRpZnkgYW5k IHJlc29sdmUgcHJvYmxlbXMgYmVmb3JlIHRoZXkgdHJpcCB1cw0Kb3Zlci7CoMKgU2ltcGx5IGRv dWJsaW5nIGJsb2NrIHNpemVzIGV2ZXJ5IHNvIG9mdGVuIGlzIHJlYWN0aW9uYXJ5IGFuZCBpcw0K bm90IGEgcmVsaWFibGUgcGVybWFuZW50IHNvbHV0aW9uLg0KDQpJIGhhdmUgd3JpdHRlbiB0aGlz IHByb3Bvc2FsIGZvciBhIHRlY2huaWNhbCBzb2x1dGlvbiBidXQsIG5lZWQgeW91cg0KaGVscCB0 byB3cml0ZSBpdCB1cCB0byBhbiBhY2NlcHRhYmxlIHN0YW5kYXJkIHRvIGJlIGEgZnVsbCBCSVAu DQoNCiMjIyAzLiBUaGUgcHJvYmxlbQ0KDQpFdmVyeWJvZHkgd2FudHMgdmFsdWUuIE1pbmVycyB3 YW50IHRvIG1heGltaXNlIHJldmVudWUgZnJvbSBmZWVzIChhbmQNCndlIHByZXN1bWUsIHRvIG1p bmltaXNlIGJsb2NrIHNpemUpLiBDb25zdW1lcnMgbmVlZCB0cmFuc2FjdGlvbg0KcmVsaWFiaWxp dHkgYW5kLCAod2UgcHJlc3VtZSkgd2FudCBsb3cgZmVlcy4NCg0KVGhlIGN1cnJlbnQgdHJhbnNh Y3Rpb24gYmFuZHdpZHRoIGxpbWl0IGlzIGEgbGltaXRpbmcgZmFjdG9yIGZvciBib3RoLg0KQXMg dGhlIG9wZXJhdGlvbmFsIHNhZmV0eSBvZiB0cmFuc2FjdGlvbnMgaXMgbGltaXRlZCwgc28gaXMg Y29uc3VtZXINCmNvbmZpZGVuY2UgYXMgdGhleSByZWFsaXNlIHRoZSBpc3N1ZSBhbmQsIGFjY29y ZGluZ2x5LCB1cHRha2UgaXMNCmxpbWl0ZWQuIEZlZXMgYXJlIGFydGlmaWNpYWxseSBpbmZsYXRl ZCBkdWUgdG8gYmFuZHdpZHRoIGxpbWl0YXRpb25zDQp3aGlsZSBmYWlsaW5nIHRvIHByb3ZpZGUg YSBmdWxsIGNvbmZpcm1hdGlvbiBzZXJ2aWNlIGZvciBhbGwgdmFsaWQNCnRyYW5zYWN0aW9ucy4N Cg0KQ3VycmVudCBmZWUgcmVjb21tZW5kYXRpb25zIHByb3ZpZGUgbm8gc2F0aXNmYWN0aW9uIGZv ciB0cmFuc2FjdGlvbg0KcmVsaWFiaWxpdHkgYW5kLCBhcyBCaXRjb2luIHNjYWxlcywgdGhpcyB3 aWxsIHdvcnNlbi4NCg0KVHJhbnNhY3Rpb25zIGFyZSBpbmNsdWRlZCBpbiBibG9ja3MgYnkgbWlu ZXJzIHVzaW5nIHdoYXRldmVyIGJhc2lzIHRoZXkNCnByZWZlci4gV2UgZXhwZWN0IHRoYXQgdGhp cyBpcyB1c3VhbGx5IGEgZmVlLWJhc2VkIHByaW9yaXR5LiBIb3dldmVyLA0KZXZlbiB0cmFuc2Fj dGlvbnMgd2l0aCBhIHZhbGlkIGZlZSBtYXkgYmUgbGVmdCBpbiB0aGUgdHJhbnNhY3Rpb24gcG9v bA0KZm9yIHNvbWUgdGltZS4gQXMgdHJhbnNhY3Rpb24gYmFuZHdpZHRoIGJlY29tZXMgYW4gaXNz dWUsIG5vdCBldmVuDQpleHRyZW1lIGZlZXMgY2FuIGVuc3VyZSBhIHRyYW5zYWN0aW9uIGlzIHBy b2Nlc3NlZCBpbiBhIHRpbWVseSBtYW5uZXINCm9yIGF0IGFsbC4NCg0KQml0Y29pbiBtdXN0IGJl IGEgZnVsbHkgc2NhbGFibGUgYW5kIHJlbGlhYmxlIHNlcnZpY2UsIHByb3ZpZGluZyBmdWxsDQp0 cmFuc2FjdGlvbiBjb25maXJtYXRpb24gZm9yIGV2ZXJ5IHZhbGlkIHRyYW5zYWN0aW9uLg0KDQpU aGUgcG9zc2liaWxpdHkgdG8gc2VuZCBhIHRyYW5zYWN0aW9uIHdpdGggYSBmZWUgbG93ZXIgdGhh biBvbmUgdGhhdCBpcw0KYWNjZXB0YWJsZSB0byBhbGxvdyBldmVudHVhbCB0cmFuc2FjdGlvbiBj b25maXJtYXRpb24gc2hvdWxkIGJlIHJlbW92ZWQNCmZyb20gdGhlIHByb3RvY29sIGFuZCBhbHNv IGZyb20gdGhlIHVzZXIgaW50ZXJmYWNlLg0KDQpCaXRjb2luIHNob3VsZCBiZSBjYXBhYmxlIG9m IHJlbGlhYmx5IGFuZCBpbmV4cGVuc2l2ZWx5IHByb2Nlc3NpbmcNCmNhc3VhbCB0cmFuc2FjdGlv bnMsIGFuZCBhbHNvIHByaW9yaXR5IHByb2Nlc3Npbmcgb2YgZmVlIHBheWluZyBhdA0KYXVjdGlv biBmb3IgcHJpb3JpdHkgdHJhbnNhY3Rpb25zIGluIHRoZSBzaG9ydGVzdCBwb3NzaWJsZSB0aW1l ZnJhbWUuDQoNCiMjIyA0LiBTb2x1dGlvbiBzdW1tYXJ5DQoNCiMjIyMgTWFpbiBzb2x1dGlvbg0K DQpQcm92aWRlIGVhY2ggdmFsaWQgdHJhbnNhY3Rpb24gaW4gdGhlIG1lbXBvb2wgd2l0aCBhbiBp bmRpdmlkdWFsDQp0cmFuc2FjdGlvbiBwcmlvcml0eSBlYWNoIHRpbWUgYmVmb3JlIGNob29zaW5n IHRyYW5zYWN0aW9ucyB0byBpbmNsdWRlDQppbiB0aGUgY3VycmVudCBibG9jay4gVGhlIHByaW9y aXR5IGJlaW5nIGEgZnVuY3Rpb24gb2YgdGhlIGZlZSAob24gYQ0KY3VydmUpLCBhbmQgdGhlIHRp bWUgd2FpdGluZyBpbiB0aGUgdHJhbnNhY3Rpb24gcG9vbCAoYWxzbyBvbiBhIGN1cnZlKQ0Kb3V0 IHRvIG4gZGF5cyAobiA9IDYwIGRheXMgPyksIGFuZCBleHRlbmRpbmcgcGFzdCBuIGRheXMuIFRo ZSB2YWx1ZSBmb3INCmZlZSBvbiBhIGN1cnZlIG1heSBuZWVkIGFuIHVwcGVyIGxpbWl0LiBUaGUg dHJhbnNhY3Rpb24gcHJpb3JpdHkgdG8NCnNlcnZlIGFzIHRoZSBsaWtlbGlob29kIG9mIGEgdHJh bnNhY3Rpb24gYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGN1cnJlbnQNCmJsb2NrLCBhbmQgZm9yIGRl dGVybWluaW5nIHRoZSBvcmRlciBpbiB3aGljaCB0cmFuc2FjdGlvbnMgYXJlIHRyaWVkIHRvDQpz ZWUgaWYgdGhleSB3aWxsIGJlIGluY2x1ZGVkLg0KDQpOb2RlcyB3aWxsIG5lZWQgdG8ga2VlcCB0 cmFjayBvZiB3aGVuIGEgdHJhbnNhY3Rpb24gaXMgZmlyc3Qgc2Vlbi4gSXQNCmlzIHNhdGlzZmFj dG9yeSBmb3IgZWFjaCBub2RlIHRvIGRvIHRoaXMgaW5kZXBlbmRlbnRseSBwcm92aWRlZCB0aGUN CmZ1bGwgbWVtcG9vbCBhbmQgaW5mb3JtYXRpb24gc3Vydml2ZXMgbm9kZSByZXN0YXJ0LiBJZiB0 aGVyZSBpcyBhIG1vcmUNCnJlbGlhYmxlIHdheSB0byBkZXRlcm1pbmUgd2hlbiBhIHRyYW5zYWN0 aW9uIHdhcyBmaXJzdCBzZWVuIG9uIHRoZQ0KbmV0d29yayB0aGVuIGl0IHNob3VsZCBiZSB1dGls aXNlZC4NCg0KPiBNeSBjdXJyZW50IGRlZmF1bHQgaW5zdGFsbGF0aW9uIG9mIEJpdGNvaW4gQ29y ZSB2MC4xNS4xIGRvZXMgbm90DQpjdXJyZW50bHkgc2VlbSB0byBzYXZlIGFuZCBsb2FkIHRoZSBt ZW1wb29sIG9uIHJlc3RhcnQsIGRlc3BpdGUgdGhlDQpub3RlcyBpbiB0aGUgY29tbWFuZCBsaW5l IG9wdGlvbnMgcGFuZWwgdGhhdCB0aGUgZGVmYXVsdCBmb3INCnBlcnNpc3RtZW1wb29sIGlzIDEu IEluIHRoZSBkZWJ1ZyBwYW5lbCwgc29tZSA5MCwwMDAgdHJhbnNhY3Rpb25zDQpiZWZvcmUgcmVz dGFydCwgc29tZSAyMDAgb2RkIHNob3J0bHkgYWZ0ZXIuIE1hbnVhbGx5IHNldHRpbmcNCnBlcnNp c3RtZW1wb29sPTEgaW4gdGhlIGNvbmYgZmlsZSBkb2VzIG5vdCBzZWVtIHRvIG1ha2UgYW55IGRp ZmZlcmVuY2UuDQpQZXJoYXBzIGl0IGlzIG9wZXJhdGluZyBhcyBleHBlY3RlZCBhbmQgSSBhbSBu b3Qgc3VyZSB3aGF0IHRvIG9ic2VydmUsDQpidXQgZG9lcyBub3Qgc2VlbSB0byBiZSBvYnNlcnZh Ymx5IHNhdmluZyBhbmQgbG9hZGluZyB0aGUgbWVtcG9vbCBvbg0KcmVzdGFydC4gVGhpcyB3aWxs IG5lZWQgdG8gYmUgcmVzb2x2ZWQuDQoNClVzZSBhIGR5bmFtaWMgdGFyZ2V0IGJsb2NrIHNpemUg dG8gbWFrZSB0aGUgY3VycmVudCBibG9jay4gVGhpcyBtYXJrcyBhDQpzaGlmdCBmcm9tIHVzaW5n IGJsb2NrIHNpemUgb3Igd2VpZ2h0IHRvIGEgY291bnQgb2YgdHJhbnNhY3Rpb25zLg0KRGV0ZXJt aW5lIHRoZSB0YXJnZXQgYmxvY2sgc2l6ZSB1c2luZzsgcHJlLXJvbGxvdXQoY3VycmVudCBhdmVy YWdlDQp2YWxpZCB0cmFuc2FjdGlvbiBwb29sIHNpemUpIHggKCAxIC8gKDE0NCB4IG4gZGF5cyAp ICkgPSBudW1iZXIgb2YNCnRyYW5zYWN0aW9ucyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgY3VycmVu dCBibG9jay4gVGhlIGJsb2NrIGNyZWF0ZWQNCnNob3VsZCBiZSBhIG1pbmltdW0gMU1CIGluIHNp emUgcmVnYXJkbGVzcyBpZiB0aGUgdGFyZ2V0IGJsb2NrIHNpemUgaXMNCmxvd2VyLg0KDQpJZiB0 aGUgY3JlYXRlZCBibG9jayBzaXplIGNvbnNpc3RlbnRseSBjb250YWlucyB0b28gZmV3IHRyYW5z YWN0aW9ucw0KYW5kIHRoZSBudW1iZXIgb2YgbmV3IHRyYW5zYWN0aW9ucyBjcmVhdGVkIGlzIGNv bnRpbnVvdXNseSBncmVhdGVyIHRoYW4NCnRoZSBibG9jayBzaXplIHdpbGwgYWNjb21tb2RhdGUg dGhlbiBJIGV4cGVjdCBldmVudHVhbGx5IGFnZWluZw0KdHJhbnNhY3Rpb25zIHdpbGwgYmUgb3Zl ci1yZXByZXNlbnRlZCBhcyBhIHBvcnRpb24gb2YgdGhlIGJsb2NrDQpjb250ZW50cy4gT25jZSBh bm90aGVyIG5ldyBub2RlIGNvbmZvcm1pbmcgdG8gdGhlIHByb3Bvc2FsIG1ha2VzIGENCmJsb2Nr LCB0aGUgYmxvY2sgc2l6ZSB3aWxsIGJlIHByb3BvcnRpb25hdGVseSBsYXJnZXIgYXMgdGhlIHRy YW5zYWN0aW9uDQpwb29sIGhhcyBncm93bi7CoMKgSWYgYmxvY2sgc2l6ZSBpcyB0b28gbGFyZ2Ug b24gYXZlcmFnZSB0aGVuIHRoaXMgd2lsbA0Kc2hyaW5rIHRoZSB0cmFuc2FjdGlvbiBwb29sLg0K DQpNaW5lcnMgd2lsbCBsaWtlbHkgd2FudCB0byBjb25mb3JtIHRvIHRoZSBwcm9wb3NhbCwgc2lu Y2UgbWFraW5nIGJsb2Nrcw0KbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5IG1ha2VzIG1vcmUgcm9vbSBp biBlYWNoIGJsb2NrIHBvdGVudGlhbGx5DQpsb3dlcmluZyB0aGUgaGlnaGVzdCBmZWVzIHBhaWQg Zm9yIHByaW9yaXR5IHNlcnZpY2UuIEFsd2F5cyBtYWtpbmcNCmJsb2NrcyBzbWFsbGVyIHRoYW4g dGhlIHByb3Bvc2FsIHJlcXVpcmVzIHdpbGwgaW4gdGltZSBsb3dlciB0aGUNCnV0aWxpdHkgdmFs dWUgb2YgQml0Y29pbiwgYSBkaWZmZXJlbnQgc2l0dWF0aW9uIGJ1dCBha2luIHRvIHRoZQ0KY3Vy cmVudC4gVHJhbnNhY3Rpb25zIHdpbGwgc3RpbGwgYWx3YXlzIGNvbmZpcm0gYnV0IHdpdGggbG9u Z2VyIGFuZA0KbG9uZ2VyIHdhaXQgcGVyaW9kcy4gVGhlIGF1Y3Rpb24gYXQgdGhlIGZyb250IG9m IHRoZSBxdWV1ZSBmb3IgcHJpb3JpdHkNCndpbGwgYmUgZGVzdHJveWVkIGFzIHRoZXJlIHdpbGwg YmUgZXZlbnR1YWxseSBubyByb29tIGluIGJsb2NrcyBiZXNpZGVzDQphZ2VpbmcgdHJhbnNhdGlv bnMgYW5kLCB0aGVyZSB3aWxsIGJlIGxpdHRsZSB2YWx1ZSBwYXlpbmcgaGlnaGVyIHRoYW4NCnRo ZSBtaW5pbXVtIGZlZS4gT2J2aW91c2x5LCBuZWl0aGVyIG9mIHRoZXNlIHNjZW5hcmlvcyBhcmUg aW4gYSBtaW5lcidzDQppbnRlcmVzdHMuDQoNCldpdGhvdXQgYSBjb25zZW5zdXMgYXMgdG8gd2hh dCBzaXplIGR5bmFtaWMgYmxvY2sgdG8gY3JlYXRlLA0KZW5mb3JjZW1lbnQgb2YgZHluYW1pYyBi bG9jayBzaXplIGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUuIEl0IG1heSBiZQ0KcG9zc2libGUg Zm9yIGEgY29uc2Vuc3VzIHRvIGJlIGZvcm1lZCBpbiB0aGUgZnV0dXJlIGJ1dCBoZXJlIEkgY2Fu bm90DQpzcGVjdWxhdGUuIEkgY2FuIG9ubHkgc3VnZ2VzdCB0aGF0IGl0IGlzIGluIHRoZSBpbnRl cmVzdCBvZiBCaXRjb2luIGFzDQphIHdob2xlIGFuZCwgaW4gdGhlIGludGVyZXN0IG9mIGVhY2gg bm9kZSB0byBjb25mb3JtIHRvIHRoZSBwcm9wb3NhbC4NClNvbWUgbm9kZXMgZmFpbGluZyB0byBj b25mb3JtIHRvIHRoZSBwcm9wb3NlZCByZXF1aXJlbWVudHMgb2YgZHluYW1pYw0Kc2l6ZSBvciB0 cmFuc2FjdGlvbiBwcmlvcml0eSBpbiB0aGlzIHByb3Bvc2FsIHdpbGwgbm90IGJlIGRlc3RydWN0 aXZlDQp0byB0aGUgb3BlcmF0aW9uIG9mIHRoZSBwcm9wb3NhbC4NCg0KSWYgbmVjZXNzYXJ5LCBu b2RlcyB0aGF0IGhhdmUgbm90IHlldCBhZG9wdGVkIHRoZSBwcm9wb3NhbCB3aWxsIGp1c3QNCmNv bnRpbnVlIHRvIGNyZWF0ZSBzdGFuZGFyZCBmaXhlZCBzaXplIHVub3JkZXJlZCBibG9ja3MsIGFs dGhvdWdoLCBpZg0KdGhlIGN1cnJlbnQgbWVjaGFuaXNtcyBvZiBibG9jayB2YWxpZGF0aW9uIGlu Y2x1ZGUgdGhlIGZpeGVkIGJsb2NrIHNpemUNCnRoZW4gaXQgaXMgdW5saWtlbHkgdGhhdCB0aGVz ZSBub2RlcyB3aWxsIGJlIGFibGUgdG8gdmFsaWRhdGUgdGhlDQpibG9ja2NoYWluIGdvaW5nIGZv cndhcmQuIEluIHRoaXMgY2FzZSBhIGhhcmQgZm9yayBhbmQgYSBmdWxsIHRyYW5zZmVyDQp0byB0 aGUgbmV3IG1ldGhvZCBzaG91bGQgYmUgcmVxdWlyZWQuIElmIGR5bmFtaWMgYmxvY2tzIHdpdGgg b3JkZXJlZA0KdHJhbnNhY3Rpb25zIHdpbGwgYmUgdmFsaWQgdG8gZXhpc3Rpbmcgbm9kZXMgdGhl biBvbmx5IGEgc29mdCBmb3JrIGlzDQpyZXF1aXJlZC4gVGhlcmUgaXMgbm8gcHJvcG9zZWQgY2hh bmdlIHRvIHRoZSBpbnRlcm5hbCBjb25zdHJ1Y3Rpb24gb2YNCmJsb2Nrcywgb25seSB0byB0aGUg YmxvY2sgc2l6ZSBhbmQgdXNpbmcgYW4gb3JkZXJlZCBtZXRob2Qgb2YNCnRyYW5zYWN0aW9uIHNl bGVjdGlvbi4NCg0KPiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgbWVtcG9vbGV4cGlyeSBpbiBCaXRj b2luIENvcmUgbWF5IGluIGZ1dHVyZQ0KbmVlZCB0byBiZSBhZGp1c3RlZCB0byBtYXRjaCBzb21l dGhpbmcgbW9yZSB0aGFuIG4gZGF5cyBvciwgcGVyaGFwcw0KdXNpbmcgbGVzcyB0aGFuIG4gPSAx NCBkYXlzIG1heSBiZSBhIG1vcmUgc2Vuc2libGUgYXBwcm9hY2g/DQoNCkFsbCBibG9jayBjcmVh dGVkIHdpdGggZHluYW1pYyBzaXplIHNob3VsZCBiZSB2ZXJpZmllZCB0byBlbnN1cmUNCmNvbmZv cm1pdHkgdG8gYSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gY3VydmUgcmVzdWx0aW5nIGZyb20g dGhlDQpwcmlvcml0eSBtZXRob2QuIFNpbmNlIHRoZSBpbnB1dCBpcyBhIHByb2JhYmlsaXR5LCB0 aGUgb3V0cHV0IHNob3VsZA0KY29uZm9ybSB0byBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbi4N Cg0KVGhlIGN1cnZlcyB1c2VkIGZvciB0aGUgcHJpb3JpdHkgb2YgdHJhbnNhY3Rpb25zIHdvdWxk IGhhdmUgdG8gYmUNCmFwcHJvcHJpYXRlLiBQZXJoYXBzIGEgbWF0aGVtYXRpY2lhbiB3aXRoIGV4 cGVyaWVuY2UgaW4gcHJvYmFiaWxpdHkgY2FuDQpkZXZlbG9wIHRoZSByaWdodCBmb3JtdWxhZS4g TXkgdGhpbmtpbmcgaXMgYSBzdGVlcCBjdXJ2ZS4gSSBzdXBwb3NlDQp0aGF0IHRoZSBwcm9iYWJp bGl0eSBvZiBhbGwgdHJhbnNhY3Rpb25zIHNob3VsZCBwcm9iYWJseSBhY2NvdW50IGZvciBhDQpz dWZmaWNpZW50IG51bWJlciBvZiBpbmNsdXNpb25zIHRoYXQgdGhlIHRhcmdldCBibG9jayBzaXpl IGlzIG1ldCBvbg0KYXZlcmFnZSBhbHRob3VnaCwgaXQgbWF5IG5vdCBhbHdheXMgYmUuIEFzIGEg c3VnZ2VzdGlvbiwgY29uc2lkZXINCmluY2x1ZGluZyBzb21lIGR1c3Qgb3IgemVyby1mZWUgdHJh bnNhY3Rpb25zIHRvIHBhZCBpZiBlYWNoIHZhbGlkDQp0cmFuc2FjdGlvbiBpcyB0cmllZCBhbmQg dGhlIHRhcmdldCBibG9jayBzaXplIGlzIG5vdCB5ZXQgbWV0LCBoaWdoZXN0DQpCVEMgdHJhbnNh Y3Rpb24gdmFsdWUgZmlyc3Q/DQoNCioqRXhwbGFuYXRpb24gb2YgdGhlIG9wZXJhdGlvbiBvZiBw cmlvcml0eToqKg0KDQo+IElmIHRyYW5zYWN0aW9uIHByaW9yaXR5IGlzLCBmb3IgZXhhbXBsZSwg YSBudW1iZXIgYmV0d2VlbiBvbmUgKGxvdykNCmFuZCBvbmUtaHVuZHJlZCAoaGlnaCkgaXQgY2Fu IGJlIGRpcmVjdGx5IHVuZGVyc3Rvb2QgYXMgdGhlIHBlcmNlbnRhZ2UNCmNoYW5jZSBpbiBvbmUt aHVuZHJlZCBvZiBhIHRyYW5zYWN0aW9uIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBibG9jay4NClVz aW5nIHByb2JhYmlsaXR5IG9yIGxpa2VsaWhvb2QgaW5mZXJzIHRoYXQgdGhlcmUgaXMgc29tZSBm dW5jdGlvbiBvZg0KcmFuZG9tLiBUcnkgdGhlIHRyYW5zYWN0aW9ucyBpbiBwcmlvcml0eSBvcmRl ciBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0LA0KaWYgcmFuZG9tICgxMDApIDwgdHJhbnNhY3Rpb24g cHJpb3JpdHkgdGhlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW5jbHVkZWQNCnVudGlsIHRoZSB0YXJn ZXQgYmxvY2sgc2l6ZSBpcyBtZXQuwqANCg0KPiBUbyBicmVhayBpdCBkb3duIGZ1cnRoZXIsIGlm IGJvdGggdGhlIGZlZSBvbiBhIGN1cnZlIHZhbHVlIGFuZCB0aGUNCnRpbWUgd2FpdGluZyBvbiBh IGN1cnZlIHZhbHVlIGFyZSBlYWNoIGEgbnVtYmVyIGJldHdlZW4gb25lIGFuZCBvbmUtDQpodW5k cmVkLCBhIHJ1ZGltZW50YXJ5IG1ldGhvZCBtYXkgYmUgdG8gc2ltcGx5IG11bHRpcGx5IHRob3Nl IHR3bw0KbnVtYmVycywgdG8gZmluZCB0aGUgcHJpb3JpdHkgbnVtYmVyLiBGb3IgZXhhbXBsZSwg YSBtaWRkbGUgZmVlDQp0cmFuc2FjdGlvbiB3YWl0aW5nIHRoaXJ0eSBkYXlzIChpZiBuID0gNjAg ZGF5cykgbWF5IGhhdmUgYSB2YWx1ZSBvZg0KZml2ZSBmb3IgZWFjaCBwYXJ0wqDCoCh5ZXMsIGp1 c3QgZml2ZSwgdGhlIHZhbHVlcyBhcmUgb24gYSBjdXJ2ZSkuIFdoZW4NCm11bHRpcGxpZWQgdGhh dCB3aWxsIGdpdmUgYSBwcmlvcml0eSB2YWx1ZSBvZiB0d2VudHktZml2ZSwgb3IsIGENCnR3ZW50 eS1maXZlIHBlcmNlbnQgY2hhbmNlIGF0IHRoYXQgbW9tZW50IG9mIGJlaW5nIGluY2x1ZGVkIGlu IHRoZQ0KYmxvY2s7IGl0IHdpbGwgbGlrZWx5IGJlIGluY2x1ZGVkIGluIG9uZSBvZiB0aGUgbmV4 dCBmb3VyIGJsb2NrcywNCmdldHRpbmcgbW9yZSBsaWtlbHkgZWFjaCBjaGFuY2UuIElmIGl0IGlz IHN0aWxsIG5vdCBpbmNsdWRlZCB0aGVuIHRoZQ0KdmFsdWUgb2YgdGltZSB3YWl0aW5nIHdpbGwg YmUgaGlnaGVyLCBtYWtpbmcgZm9yIG1vcmUgcHJvYmFiaWxpdHkuIEENCnZlcnkgbG93IGZlZSB0 cmFuc2FjdGlvbiB3b3VsZCBoYXZlIGEgdmFsdWUgZm9yIHRoZSBmZWUgb2Ygb25lLiBJdA0Kd291 bGQgbm90IGJlIHVudGlsIG5lYXIgc2l4dHktZGF5cyB0aGF0IHRoZSBwYXJ0aWN1bGFyIGxvdyBm ZWUNCnRyYW5zYWN0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZiBiZWluZyBpbmNsdWRlZCBp biB0aGUgYmxvY2suDQoNCkluIHByYWN0aWNlIGl0IG1heSBiZSBtb3JlIHVzZWZ1bCB0byB1c2Ug bnVtYmVycyByZXByZXNlbnRhdGl2ZSBvZiBvbmUtDQpodW5kcmVkIGZvciB0aGUgaGlnaGVzdCBm ZWUgcHJpb3JpdHkgY3VydmUgZG93biB0byBhIHNtYWxsIGZyYWN0aW9uIG9mDQpvbmUgZm9yIHRo ZSBsb3dlc3QgZmVlIGFuZCwgZnJvbSBvbmUgZm9yIGEgbmV3bHkgc2VlbiB0cmFuc2FjdGlvbiB1 cCB0bw0KYSBwcm9wb3J0aW9uYXRlbHkgaGlnaCBudW1iZXIgYWJvdmUgb25lLWh1bmRyZWQgZm9y IHRoZSB0aW1lIHdhaXRpbmcNCmN1cnZlLiBJdCBpcyB0cnVlbHkgYmV5b25kIG15IGxldmVsIG9m IG1hdGggdG8gcmVzb2x2ZSBwcm9iYWJpbGl0eQ0KY3VydmVzIGFjY3VyYXRlbHkgd2l0aG91dCBt dWNoIHRyaWFsIGFuZCBlcnJvci4NCg0KVGhlIHByaW1hcnkgcmVhc29uIGZvciBhZGRyZXNzaW5n IHRoZSBpc3N1ZSBpcyB0byBlbnN1cmUgdHJhbnNhY3Rpb25hbA0KcmVsaWFiaWxpdHkgYW5kIHNj YWxhYmlsaXR5IHdoaWxlIGhhdmluZyBlYWNoIHZhbGlkIHRyYW5zYWN0aW9uIGNvbmZpcm0NCmlu IGR1ZSB0aW1lLg0KDQojIyMjIFByb3MNCg0KKsKgwqDCoE1heGltaXplcyB0cmFuc2FjdGlvbiBy ZWxpYWJpbGl0eS4NCirCoMKgwqBPdmVyY29tZXMgdHJhbnNhY3Rpb24gYmFuZHdpZHRoIGxpbWl0 Lg0KKsKgwqDCoEZ1bGx5IHNjYWxhYmxlLg0KKsKgwqDCoE1heGltaXplcyBwb3NzaWJpbGl0eSBm b3IgY29uc3VtZXIgYW5kIGJ1c2luZXNzIHVwdGFrZS4NCirCoMKgwqBNYXhpbWl6ZXMgdG90YWwg ZmVlcyBwYWlkIHBlciBibG9jayB3aXRob3V0IHJlZHVjaW5nIHJlbGlhYmlsaXR5Ow0KYmVjYXVz ZSBvZiByZWxpYWJpbGl0eSwgaW4gdGltZSBjb25maWRlbmNlIGFuZCBvdmVyYWxsIHVwdGFrZSBh cmUNCmdyZWF0ZXI7IHRoZXJlZm9yZSwgbW9yZSB0cmFuc2FjdGlvbnMuDQoqwqDCoMKgTWFya2V0 IGRldGVybWluZXMgZmVlIHBhaWQgZm9yIHRyYW5zYWN0aW9uIHByaW9yaXR5Lg0KKsKgwqDCoEZl ZSByZWNvbW1lbmRhdGlvbnMgd29yayBhbGwgdGhlIHdheSBvdXQgdG8gMzAgZGF5cyBvciBncmVh dGVyLg0KKsKgwqDCoFByb3ZpZGVzIGFkZGl0aW9uYWwgYmxvY2sgZW50cm9weTsgZ3JlYXRlciBz ZWN1cml0eSBzaW5jZSB0aGVyZSBpcw0KbGVzcyBwcm9iYWJpbGl0eSBvZiBwcmVkaWN0aW5nIHRo ZSBuZXh0IGJsb2NrLiBfQWx0aG91Z2ggdGhpcyBpcyBub3QNCm5lY2Vzc2FyeSBpdCBpcyBhIHBy b2R1Y3Qgb2YgdGhlIG9wZXJhdGlvbiBvZiB0aGlzIHByb3Bvc2FsLl8NCg0KIyMjIyBDb25zDQoN CirCoMKgwqBDb3VsZCBpbml0aWFsbHkgbG93ZXIgdG90YWwgdHJhbnNhY3Rpb24gZmVlcyBwZXIg YmxvY2suDQoqwqDCoMKgTXVzdCBiZSBmaXJzdCBiZSBwcm9ncmFtbWVkLg0KDQojIyMjIFByZS1y b2xsb3V0DQoNCk5vZGVzIG5lZWQgdG8gaGF2ZSBhdCBhIG1pbmltdW0gYSBsb29zZSB1bmRlcnN0 YW5kaW5nIG9mIHRoZSBhdmVyYWdlDQooc2luY2UgdGhlcmUgaXMgbm8gY29uc2Vuc3VzKSBzaXpl IG9mIHRoZSB0cmFuc2FjdGlvbiBwb29sIGFzIGENCnJlcXVpcmVtZW50IHRvIGVuYWJsZSBmdXR1 cmUgY2hhbmdlcyB0byB0aGUgd2F5IGJsb2NrcyBhcmUgY29uc3RydWN0ZWQuDQoNCkEgbmV3IG5l dHdvcmsgc2VydmljZSBzaG91bGQgYmUgY29uc3RydWN0ZWQgdG8gbWVldCB0aGlzIG5lZWQuIFRo aXMNCnNlcnZpY2UgbWFrZXMgbm8gY2hhbmdlcyB0byBhbnkgZXhpc3Rpbmcgb3BlcmF0aW9uIG9y IGZ1bmN0aW9uIG9mIHRoZQ0Kbm9kZS4gSW5pdGlhbGx5LCBCaXRjb2luIENvcmUgaXMgYSBzdWl0 YWJsZSBjYW5kaWRhdGUuDQoNCkZvciBhbGwgb3BlcmF0aW9ucyB3ZSBjb3VudCBvbmx5IHZhbGlk IHRyYW5zYWN0aW9ucy4NCg0KKipUaGUgc2VydmljZSBtdXN0OioqDQoNCirCoMKgwqBIYXZlIGFu IGluZGl2aWR1YWwgdGVtcG9yYXJ5IChydW50aW1lIHBlcm1hbmVudCBvbmx5KSBTZXJpYWwgTm9k ZQ0KSUQuDQoqwqDCoMKgQWNjZXB0IGNvbW11bmljYXRpb24gb2YgdGhlIG51bWJlciBvZiB2YWxp ZCB0cmFuc2FjdGlvbnMgaW4gdGhlDQptZW1wb29sIG9mIGFub3RoZXIgdmFsaWQgQml0Y29pbiBu b2RlIGFsb25nIHdpdGggdGhlIFNlcmlhbCBOb2RlIElEIG9mDQp0aGUgbm9kZSB3aG9zZSB2YWx1 ZSBpcyBwcm92aWRlZC4NCirCoMKgwqBEaXNjb25uZWN0IHRoZSBzZXJ2aWNlIGZyb20gYW55IG5v bi1CaXRjb2luIG5vZGUuIEJpdGNvaW4gQ29yZSBtYXkNCmhhbmRsZSB0aGlzIGFscmVhZHk/DQoq wqDCoMKgRXhwaXJlIGFueSB2YWx1ZSBub3QgdXBkYXRlZCBmb3IgayBtaW51dGVzIChrID0gMzAg bWludXRlcz8pLg0KKsKgwqDCoEJyb2FkY2FzdCBhbGwgbWVtcG9vbCBpbmZvcm1hdGlvbiB0aGUg bm9kZSBoYXMgZXZlcnkgbSBtaW51dGVzIChtID0NCjEwIG1pbnV0ZXM/KSwgaW5jbHVkaW5nIGl0 cyBvd24uDQoqwqDCoMKgTm9kZXMgb3duIG1lbXBvb2wgaW5mb3JtYXRpb24gc2hvdWxkIG5vdCBi ZSBicm9hZGNhc3Qgb3IgdXNlZCBpbg0KY2FsY3VsYXRpb24gdW50aWwgdGhlIG5vZGUgaGFzIGJl ZW4gdXAgbG9uZyBlbm91Z2ggZm9yIHRoZSBtZW1wb29sIHRvDQpub3JtYWxpc2UgZm9yIGF0IGxl YXN0IG8gbWludXRlcyAobyA9IDMwMCBtaW51dGVzID8pDQoqwqDCoMKgQWx0ZXJuYXRpdmVseSwg aWYgbG9hZGluZyBub2RlcyBvd24gZnVsbCBtZW1wb29sIGZyb20gZGlzayBvbiBub2RlDQpyZXN0 YXJ0IChvID0gMzAgbWludXRlcyA/KQ0KKsKgwqDCoE9ubHkgbmV3IG9yIHVwZGF0ZWQgbWVtcG9v bCB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIHRvIHRoZQ0Kc2FtZSBub2RlLiBVcGRhdGVk IGluY2x1ZGVzIHVwZGF0ZWQgd2l0aCBubyBjaGFuZ2UuDQoqwqDCoMKgQWxsIGtub3duIG1lbXBv b2wgaW5mb3JtYXRpb24gbXVzdCBzdXJ2aXZlIG5vZGUgcmVzdGFydC4NCirCoMKgwqBJZiB0aGUg bm9kZXMgb3duIG1lbXBvb2wgaXMgbm90IG5vcm1hbGlzZWQgYW5kIG5ldHdvcmsgaW5mb3JtYXRp b24NCmlzIG5vdCBhdmFpbGFibGUgdG8gY2FsY3VsYXRlIGFuIGF2ZXJhZ2UganVzdCBkaXNwbGF5 IHplcm8uDQoqwqDCoMKgSW50ZXJuYWxseSwgdGhlIGF2ZXJhZ2UgdHJhbnNhY3Rpb24gcG9vbCBz aXplIG11c3QgcmV0dXJuIHRoZQ0KY2FsY3VsYXRlZCBhdmVyYWdlIGlmIGFuIGF2ZXJhZ2UgaXMg YXZhaWxhYmxlIG9yLCBpZiBub25lIGlzIGF2YWlsYWJsZQ0KanVzdCB0aGUgbnVtYmVyIG9mIHZh bGlkIHRyYW5zYWN0aW9ucyBpbiB0aGUgbm9kZSdzIG93biBtZW1wb29sDQpyZWdhcmRsZXNzIGlm IGl0IGlzIG5vcm1hbGlzZWQuDQoNCkJpdGNvaW4gQ29yZSBtdXN0IHVzZSBhbGwgY29sbGF0ZWQg aW5mb3JtYXRpb24gb24gbWVtcG9vbCBzaXplIHRvDQpjYWxjdWxhdGUgYSBmaWd1cmUgZm9yIHRo ZSBhdmVyYWdlIG1lbXBvb2wgc2l6ZS4NCg0KVGhlIGNhbGN1bGF0ZWQgZmlndXJlIHNob3VsZCBi ZSBkaXNwbGF5ZWQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluDQp0aGUgRGVidWcgd2luZG93 IGFsb25nc2lkZSB0aGUgdGV4dCBOZXR3b3JrIGF2ZXJhZ2UgdHJhbnNhY3Rpb25zLg0KDQpDb25z aWRlcmF0aW9uIG11c3QgYmUgZ2l2ZW4gYmVmb3JlIGRldmVsb3BtZW50IG9mIHRoZSBuZXR3b3Jr IGJhbmR3aWR0aA0KdGhpcyB3b3VsZCByZXF1aXJlLiBBbGwgcHJvZ3JhbW1pbmcgbXVzdCBiZSBj b25zaXN0ZW50IHdpdGggdGhlIGN1cnJlbnQNCm9wZXJhdGlvbiBhbmQgY29udmVudGlvbnMgb2Yg Qml0Y29pbiBDb3JlLiBNZXRob2RzIG11c3Qgd29yayBvbiBhbGwNCnBsYXRmb3Jtcy4NCg0KQXMg dGhpcyBuZXcgc2VydmljZSBkb2VzIG5vdCBhZmZlY3QgYW55IGV4aXN0aW5nIHNlcnZpY2Ugb3Ig ZmVhdHVyZSBvZg0KQml0Y29pbiBvciBCaXRjb2luIENvcmUsIHRoaXMgY2FuIHRlY2huaWNhbGx5 IGJlIHByb2dyYW1tZWQgbm93IGFuZA0KaW5jbHVkZWQgaW4gQml0Y29pbiBDb3JlIGF0IGFueSB0 aW1lLg0KDQojIyMgNS4gU29sdXRpb24gb3BlcmF0aW9uDQoNClRoaXMgaXMgYSBzaW1wbGlzdGlj IHZpZXcgb2YgdGhlIG9wZXJhdGlvbi4gVGhlIGFjdHVhbCBvcGVyYXRpb24gd2lsbA0KbmVlZCB0 byBiZSBkZXRlcm1pbmVkIGFjY3VyYXRlbHkgaW4gYSBzcGVjIGZvciB0aGUgcHJvZ3JhbW1lci4N Cg0KMS7CoMKgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgYmxvY2sgc2l6ZSBmb3IgdGhlIGN1cnJlbnQg YmxvY2suDQoyLsKgwqBBc3NpZ24gYSB0cmFuc2FjdGlvbiBwcmlvcml0eSB0byBlYWNoIHZhbGlk IHRyYW5zYWN0aW9uIGluIHRoZQ0KbWVtcG9vbC4NCjMuwqDCoFNlbGVjdCB0cmFuc2FjdGlvbnMg dG8gaW5jbHVkZSBpbiB0aGUgY3VycmVudCBibG9jayB1c2luZw0KcHJvYmFiaWxpdHkgaW4gdHJh bnNhY3Rpb24gcHJpb3JpdHkgb3JkZXIgdW50aWwgdGhlIHRhcmdldCBibG9jayBzaXplDQppcyBt ZXQuIElmIHRhcmdldCBibG9jayBzaXplIGlzIG5vdCBtZXQsIGluY2x1ZGUgZHVzdCBhbmQgemVy by1mZWUNCnRyYW5zYWN0aW9ucyB0byBwYWQuDQo0LsKgwqBTb2x2ZSBibG9jay4NCjUuwqDCoEJy b2FkY2FzdCB0aGUgY3VycmVudCBibG9jayB3aGVuIGl0IGlzIHNvbHZlZC4NCjYuwqDCoEJsb2Nr IGlzIHJlY2VpdmVkLg0KNy7CoMKgQmxvY2sgdmVyaWZpY2F0aW9uIHByb2Nlc3MuDQo4LsKgwqBB Y2NlcHQvcmVqZWN0IGJsb2NrIGJhc2VkIG9uIHZlcmlmaWNhdGlvbiByZXN1bHQuDQo5LsKgwqBS ZXBlYXQuDQoNCiMjIyA2LiBDbG9zaW5nIGNvbW1lbnRzDQoNCkl0IG1heSBiZSBwb3NzaWJsZSB0 byB2ZXJpZnkgYmxvY2tzIGNvbmZvcm0gdG8gdGhlIHByb3Bvc2FsIGJ5IHNob3dpbmcNCnRoYXQg dGhlIHByb2JhYmlsaXR5IGZvciBhbGwgdHJhbnNhY3Rpb25zIGluY2x1ZGVkIGluIHRoZSBibG9j aw0Kc3RhdGlzdGljYWxseSBjb25mb3JtcyB0byBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBj dXJ2ZSwgKmlmKiB0aGUNCmluZGl2aWR1YWwgdHJhbnNhY3Rpb24gcHJpb3JpdHkgY2FuIGJlIHJl Y3JlYXRlZC4gSSBhbSBub3QgdGhhdCBkZWVwDQppbnRvIHRoZSBtYXRoZW1hdGljczsgaG93ZXZl ciwgaXQgbWF5IGFsc28gYmUgcG9zc2libGUgdG8gdXNlIGEgc2ltaWxhcg0KbWV0aG9kIHRvIGRv IHRoaXMganVzdCBiYXNlZCBvbiB0aGUgZmVlLCB0aGF0IHN0YXRpc3RpY2FsbHksIHRoZSBibG9j aw0KY29uZm9ybXMgdG8gYSBmZWUgZGlzdHJpYnV0aW9uLiBBbnkgZHVzdCBhbmQgemVyby1mZWUg dHJhbnNhY3Rpb25zDQp3b3VsZCBoYXZlIHRvIGJlIGlnbm9yZWQuIFRoaXMgc29sdXRpb24gbmVl ZHMgYSBjb21wZXRlbnQgbWF0aGVtYXRpY2lhbg0Kd2l0aCBleHBlcmllbmNlIGluIHByb2JhYmls aXR5IGFuZCBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24uDQoNCkl0IGlzIHRyaXZpYWwgdG8gdGhp cyBwcm9wb3NhbCB0byBvZmZlciB0aGF0IGEgbm9kZSBwcm92aWRlcyB0aGUgbmV4dA0KYmxvY2sg c2l6ZSB3aXRoIGEgYmxvY2sgd2hlbiBpdCBpcyBzb2x2ZWQuIEkgYW0gbm90IHN1cmUgdGhhdCB0 aGlzDQpjcmVhdGVzIGFueSBhY3R1YWwgYmVuZWZpdCBzaW5jZSB0aGUgcHJvdmlkZWQgbmV4dCBi bG9jayBzaXplIGlzIG9ubHkNCm9uZSBub2RlJ3MgdmlldywgYXMgaXQgaXMgdGhlIG5vZGUgbWF5 IHNlZW1pbmdseSBqdXN0IGFzIHdlbGwgdXNlIGl0cw0Kb3duIHZpZXcgYW5kIGNyZWF0ZSB0aGUg YmxvY2suIFByb3ZpZGluZyBhIG5leHQgYmxvY2sgc2l6ZSBvbmx5IGFkZHMNCmFkZGl0aW9uYWwg Y29tcGxleGl0eSB0byB0aGUgcmVxdWlyZWQgb3BlcmF0aW9uLCBob3dldmVyLCBwZXJoYXBzDQpw cm92aWRpbmcgdGhlIG5leHQgYmxvY2sgc2l6ZSBpcyBub3QgdHJpdmlhbCBpbiB3aGF0IGlzIGFj Y29tcGxpc2hlZA0KYW5kIHRoZSBmZWF0dXJlIGNhbiBiZSBpbmNsdWRlZCBpbiB0aGUgb3BlcmF0 aW9uLg0KDQpJbnN0ZWFkIG9mIHRoZSBwcmUtcm9sbG91dCBuZXR3b3JrIHNlcnZpY2UgcHJvdmlk aW5nIGRhdGEgYXMgdG8gdmFsaWQNCnRyYW5zYWN0aW9ucyBpbiBtZW1wb29sLCBpdCBjb3VsZCBk aXJlY3RseSBwcm92aWRlIGRhdGEgYXMgdG8gdGhlDQpzdWdnZXN0ZWQgbmV4dCBibG9jayBzaXpl IGlmIHRoYXQgaXMgcHJlZmVycmVkLCB1c2luZyBhIHNpbWlsYXINCm9wZXJhdGlvbiBhcyBpcyBz dWdnZXN0ZWQgbm93IGFuZCBhdmVyYWdpbmcgYWxsIHJlY2VpdmVkIHN1Z2dlc3RlZCBuZXh0DQpi bG9jayBzaXplcy4NCg0KSXQgbWF5IGJlIGZvcmVzZWVhYmxlIGluIHRoZSBmdXR1cmUgZm9yIEJp dGNvaW4gdG8gb3BlcmF0ZSB3aXRoIGENCm5ldHdvcmsgb2YgZGVkaWNhdGVkIGZ1bGwgYmxvY2tj aGFpbiAmIG1lbXBvb2wgc2VydmVycy4gVGhpcyB3b3VsZCBub3QNCmJlIHdpdGhvdXQgY2hhbGxl bmdlcyB0byBvdmVyY29tZSBidXQgd291bGQgb2ZmZXIgc2V2ZXJhbCBiZW5lZml0cywNCmluY2x1 ZGluZyB0byB0aGUgb3BlcmF0aW9uIG9mIHRoaXMgcHJvcG9zYWwsIGFuZCBlc3BlY2lhbGx5IGFz IHRoZSBSQU0NCmFuZCBzdG9yYWdlIHJlcXVpcmVtZW50cyBvZiBhIGZ1bGwgbm9kZSBncm93cy4g SXQgaXMgZWFzeSB0byBmb3Jlc2VlDQp0aGF0IGluIGp1c3QgYW5vdGhlciBzZXZlbiB5ZWFycyBv ZiBvcGVyYXRpb24gYSBCaXRjb2luIEZ1bGwgTm9kZSB3aWxsDQpyZXF1aXJlIGF0IGxlYXN0IDMw MEdCIG9mIHN0b3JhZ2UgYW5kLCBpZiB0aGUgbWVtcG9vbCBvbmx5IGRvdWJsZXMgaW4NCnNpemUs IG92ZXIgMUdCIG9mIFJBTS4NCg0KVGhlcmUgaGFzIGJlZW4gc29tZSBjb25jZXJuIGV4cHJlc3Nl ZCBvdmVyIHNwYW0gYW5kIHZlcnkgbG93IGZlZQ0KdHJhbnNhY3Rpb25zLCBhbmQgYW4gaW5maW5p dGUgYmxvY2sgc2l6ZSByZXN1bHRpbmcuIEkgaG9wZSB0aGF0IGZvcg0KdGhvc2UgY29uY2VybmVk IHVzaW5nIHRoZSBkdXN0IGxldmVsIGFkZHJlc3NlcyB0aGUgaXNzdWUsIGVzcGVjaWFsbHkgYXMN CnRoZSB2YWx1ZSBvZiBCaXRjb2luIGdyb3dzLg0KDQpOb3R3aXRoc3RhbmRpbmcgdGhpcyBwcm9w b3NhbCwgYWxsIGJsb2NrcyBpbmNsdWRpbmcgdGhvc2Ugd2l0aCBkeW5hbWljDQpzaXplIGVhY2gg aGF2ZSBsaW1pdGVkIHRyYW5zYWN0aW9uIHNwYWNlIHBlciBibG9jay4gVGhpcyBwcm9wb3NhbA0K cmVzdWx0cyBpbiBhIGZlZSBmb3IgcHJpb3JpdHkgc2VydmljZSBhdWN0aW9uLCB3aGVyZSB0aGUg cHJvYmFiaWxpdHkgb2YNCmEgdHJhbnNhY3Rpb24gdG8gYmUgaW5jbHVkZWQgaW4gbGltaXRlZCBz cGFjZSBpbiB0aGUgbmV4dCBhdmFpbGFibGUNCmJsb2NrIGlzIGF1Y3Rpb25lZCB0byB0aGUgaGln aGVzdCBiaWRkZXJzIGFuZCBhbGwgb3RoZXIgdHJhbnNhY3Rpb25zDQptdXN0IHdhaXQgdW50aWwg dGhleSByZWFjaCBwcmlvcml0eSBieSBhZ2VpbmcgdG8gZ2FpbiBzaWduaWZpY2FudA0KcHJvYmFi aWxpdHkuIFVuZGVyIHRoaXMgcHJvcG9zYWwgdGhlIG1lbXBvb2wgY2FuIGdyb3cgcXVpdGUgbGFy Z2Ugd2hpbGUNCnRoZSBjb25maXJtYXRpb24gc2VydmljZSBjb250aW51ZXMgaW4gYSBzdGFibGUg YW5kIHJlbGlhYmxlIG1hbm5lci4NClNldmVyYWwgaW5jZW50aXZlcyBmb3IgYXR0YWNrZXJzIGFy ZSByZW1vdmVkLCB3aGVyZSB0aGVyZSBpcyBubyBsb25nZXINCm11bHRpcGxlIHBvdGVudGlhbCBp bmNlbnRpdmVzIGZvciB1bm5lY2Vzc2FyaWx5IGZpbGxpbmcgYmxvY2tzIG9yDQpmbG9vZGluZyB0 aGUgbWVtcG9vbCB3aXRoIHRyYW5zYWN0aW9ucywgd2hldGhlciBzdWNoIHRyYW5zYWN0aW9ucyBh cmUNCmZyYXVkdWxlbnQsIHZhbGlkIG9yLCBvdGhlcndpc2UuIEFkb3B0aW9uIG9mIHRoaXMgcHJv cG9zYWwgYW5kDQphZGhlcmVuY2UgcmVzdWx0cyBpbiBhIHJlbGlhYmxlLCBzdGFibGUgZmVlIHBh eWluZyB0cmFuc2FjdGlvbg0KY29uZmlybWF0aW9uIHNlcnZpY2UgYW5kIGEgYmVuZWZpY2lhbCBh dWN0aW9uLg0KDQpUaGlzIHByb3Bvc2FsIGlzIG5lY2Vzc2FyeS4gSSBpbXBsb3JlLCBhdCB0aGUg dmVyeSBsZWFzdCwgdGhhdCB3ZSB1c2UNCnNvbWUgbWV0aG9kIHRoYXQgdmFsaWRhdGVzIGZ1bGwg dHJhbnNhY3Rpb24gcmVsaWFiaWxpdHkgYW5kIGVuYWJsZXMNCnNjYWxhYmlsaXR5IG9mIEJpdGNv aW4uIElmIG5vdCB0aGlzIHByb3Bvc2FsLCBhbiBhbHRlcm5hdGl2ZS4NCg0KSSBoYXZlIGRvbmUg YXMgbXVjaCB3aXRoIHRoaXMgcHJvcG9zYWwgYXMgSSBmZWVsIHRoYXQgSSBhbSBhYmxlIHNvIGZh cg0KYnV0IGNvbnRpbnVlIHRvIHRha2UgeW91ciBmZWVkYmFjay4NCg0KUmVnYXJkcywgwqANCkRh bWlhbiBXaWxsaWFtc29uDQoNClshW0NyZWF0aXZlIENvbW1vbnMgTGljZW5zZV0oaHR0cHM6Ly9p LmNyZWF0aXZlY29tbW9ucy5vcmcvbC9ieS1zYS80LjAvDQo4OHgzMS5wbmcpXShodHRwOi8vY3Jl YXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvKSDCoA0KPHNwYW4geG1sbnM6ZGN0 PSJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIg0KaHJlZj0iaHR0cDovL3B1cmwub3JnL2RjL2Rj bWl0eXBlL1RleHQiIHByb3BlcnR5PSJkY3Q6dGl0bGUiDQpyZWw9ImRjdDp0eXBlIj5CSVAgUHJv cG9zYWw6IFVUUEZPVElCIC0gVXNlIFRyYW5zYWN0aW9uIFByaW9yaXR5IEZvcg0KT3JkZXJpbmcg VHJhbnNhY3Rpb25zIEluIEJsb2Nrczwvc3Bhbj4gYnkgW0RhbWlhbiBXaWxsaWFtc29uDQombHQ7 d2lsbHRlY2hAbGl2ZS5jb20uYXUmZ3Q7XShodHRwOi8vdGhla2luZ2phbWVzaHJtaC50dW1ibHIu Y29tL3Bvc3QvMQ0KNjg5NDg1MzA5NTAvYmlwLXByb3Bvc2FsLXV0cGZvdGliLXVzZS10cmFuc2Fj dGlvbi1wcmlvcml0eS1mb3Itb3JkZXIpDQppcyBsaWNlbnNlZCB1bmRlciBhIFtDcmVhdGl2ZSBD b21tb25zIEF0dHJpYnV0aW9uLVNoYXJlQWxpa2UgNC4wDQpJbnRlcm5hdGlvbmFsIExpY2Vuc2Vd KGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8pLg0KQmFzZWQg b24gYSB3b3JrIGF0IGh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9waXBlcm1haWwv Yml0Y29pbi0NCmRldi8yMDE3LQ0KRGVjZW1iZXIvMDE1MzcxLmh0bWxdKGh0dHBzOi8vbGlzdHMu bGludXhmb3VuZGF0aW9uLm9yZy9waXBlcm1haWwvYml0Y28NCmluLWRldi8yMDE3LURlY2VtYmVy LzAxNTM3MS5odG1sKS4NClBlcm1pc3Npb25zIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBsaWNl bnNlIG1heSBiZSBhdmFpbGFibGUgYXQgW2h0dHBzDQo6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9CU0QtMy0NCkNsYXVzZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1D bGF1c2UpLg0KDQoNCg==