From dev-return-7713-archive-asf-public=cust-asf.ponee.io@mxnet.incubator.apache.org Wed Jun 24 02:09:50 2020 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 5434A1804BB for ; Wed, 24 Jun 2020 04:09:50 +0200 (CEST) Received: (qmail 59494 invoked by uid 500); 24 Jun 2020 02:09:49 -0000 Mailing-List: contact dev-help@mxnet.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@mxnet.incubator.apache.org Delivered-To: mailing list dev@mxnet.incubator.apache.org Received: (qmail 59481 invoked by uid 99); 24 Jun 2020 02:09:48 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 24 Jun 2020 02:09:48 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 0325918144B for ; Wed, 24 Jun 2020 02:09:48 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.749 X-Spam-Level: X-Spam-Status: No, score=-4.749 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, KAM_LOTSOFHASH=0.25, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=intel.onmicrosoft.com Received: from mx1-ec2-va.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id JB1HEwbND795 for ; Wed, 24 Jun 2020 02:09:45 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=ciyong.chen@intel.com; receiver= Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx1-ec2-va.apache.org (ASF Mail Server at mx1-ec2-va.apache.org) with ESMTPS id 5EC86BB8C5 for ; Wed, 24 Jun 2020 02:09:44 +0000 (UTC) IronPort-SDR: 8L5KJAeF8G3w7JRjm5wN3vQ7mwOF84kBeW+piVMTY28IvVI5cCFla//YT6qSkuUCIgd3/3iXN1 HUdkyYwJc0DA== X-IronPort-AV: E=McAfee;i="6000,8403,9661"; a="142523860" X-IronPort-AV: E=Sophos;i="5.75,273,1589266800"; d="scan'208";a="142523860" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jun 2020 19:09:38 -0700 IronPort-SDR: R0+AixYSQx8AypdnILOOp34/mXobolo1nW3RamCsjw8fJwR/A/ZIiZOaGvDMDwmw6BOZC44alS fmmJv7KJAzvw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,273,1589266800"; d="scan'208";a="353990879" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by orsmga001.jf.intel.com with ESMTP; 23 Jun 2020 19:09:38 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 23 Jun 2020 19:09:38 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 23 Jun 2020 19:09:37 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 23 Jun 2020 19:09:37 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.42) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 23 Jun 2020 19:09:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jq5ikJ9m7deBfXx9ty/sH7gO2ri2UFXrUI1asrF8FyKkeaJfK4PzsKJ2kDhEopMrzreG8S+xuPG0hGOuGgcFLo0/ibwxhddCan/k5pACOv1Q6niUSnIVhtddfpZzUSOU8Tj3LQQnOG8PRi/scqh7CRLbnJy3RLUIgFnq75NYHjkUn51Roqc9p4sMQ0gx9xUOYwymyIatbNJv4aYzpxcUOase2TEVWJSvn4XtMzSjFs55aSZhR6RFc6Ya0i0m/ty4RPSWjk7m0LyJc638wuAbffHDD+paCtqMHsadzIvuMaz2+VWvOtx3B7rL15elXwmAK0ciyMNpC1FBE1LpkviZeA== 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=9+IX3hsXDuGu5YT8mE7kPSK+qfH2mvqkcQfFLXByVpE=; b=NW6CDErKFooKaDjjcbqu1cOMdXspBoG2Zi/FfLkZHtJ1CfIjidRQJzm42X0zayVNJ1aBRGc59aLyGEU2yPd88sW7GjJQvQ0Y2ZlQwmLrSdPjrQLhQtJN3Q81qNMMOu6muXaHD7UiHWuHYqcoQZTEkTd1t0ilsBptzytWt+JyxpCHuoB+S1vUMUhRYMYGr/MmqQuOIQ75vue3Zjam1MOhuyvURWZ1vPozHqXaOD/+jXjjPRrAYeT497p3pb+zgbu8z3q6Sl6w6xMwRQaD7EdH0OUbNwaZ66u6O9cHIxtcJsTa/iUN6lfad9im51bB9I8BpNvzc87e+f9ipKPlGAogIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9+IX3hsXDuGu5YT8mE7kPSK+qfH2mvqkcQfFLXByVpE=; b=hTzc47oS4y6CRhIjMRI/PkyHNNULwmHHuvrlQ/yTeHIOPn+HAt3dHWwORiloeht1hCTJ8q8dFsV5Ze8MkAAdTLCn9v66M/Xrg6C4gDyrUkN35Y8Q8VslKDVc/pXwv1zkb/fpSDnQapVZ7YvNIF1JjcwMgUYpA7P1Nubk3r7BTFM= Received: from BYAPR11MB3144.namprd11.prod.outlook.com (2603:10b6:a03:8f::15) by BYAPR11MB3238.namprd11.prod.outlook.com (2603:10b6:a03:7e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 24 Jun 2020 02:09:36 +0000 Received: from BYAPR11MB3144.namprd11.prod.outlook.com ([fe80::2c40:562f:2015:20ce]) by BYAPR11MB3144.namprd11.prod.outlook.com ([fe80::2c40:562f:2015:20ce%7]) with mapi id 15.20.3109.027; Wed, 24 Jun 2020 02:09:36 +0000 From: "Chen, Ciyong" To: "dev@mxnet.incubator.apache.org" , "lausen@apache.org" , "general@incubator.apache.org" Subject: RE: [DISCUSS] When to add Apache Headers to Third Party Code [WAS] Re: [MENTORS] PPMC case-by-case decision for major modifications of third-party work guidance Thread-Topic: [DISCUSS] When to add Apache Headers to Third Party Code [WAS] Re: [MENTORS] PPMC case-by-case decision for major modifications of third-party work guidance Thread-Index: AQHWPqp57eMg4Ln4VEaAeWIcAXLP2KjRy/6AgACj4QCAAEXSAIAC/dyAgAEtfgCAAtWGgIAAn0MAgAum1DCAAJzbAIAAgP3g Date: Wed, 24 Jun 2020 02:09:36 +0000 Message-ID: References: <8b6c55149e17eb000854ddf750024580a298918d.camel@apache.org> <8d374f93d310145b86127ac2c0f6fcda465dd4fd.camel@apache.org> <489536ae7814ed991ca8ab17ed44232a5a841928.camel@apache.org> In-Reply-To: <489536ae7814ed991ca8ab17ed44232a5a841928.camel@apache.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.2.0.6 dlp-product: dlpe-windows authentication-results: mxnet.incubator.apache.org; dkim=none (message not signed) header.d=none;mxnet.incubator.apache.org; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.192] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fb9a0bfe-663a-468c-b71e-08d817e3a4fb x-ms-traffictypediagnostic: BYAPR11MB3238: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0444EB1997 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1YO2HAMZYaZ9qxlTdhfzlv6tNpfFU/xLHIEECxNEsF+iErPn0zl83m2XppwoTWWNSGKNKr5vDoTpT6TkmWtIyO89GuEEIrHyvh9Pnz7Sdnd1f9mQ8UJA1cDY9mzYpgB53D/La9sfb6BQDv3oULShMCAiyIixT9JRl97DYTYgjVufYwFYruUawiuFhSeA8sn9YP/sZoVhLC1OWBjqOpNilPijh/kBqASDZs1KqWOy4y2+2Zqgg2rUWVPY8eA1nhb82bsCJOqi3WKQYDjnp+CWYQVRiaMkx+of+WA/xBU9hKROe3RGOYDvf8zUbjHicW+swLs7p1ZD7eYepX2oZ14ZwYHg3bp86AA64ALZVLa5GAZ4vcsKD9yKqi77iJQGT1NuY5EvOaU+tYVuqh8sEXzhieOvl7ZNPCgAGUBN/lzwJxIZAVmWHHpEy7mcFLlWE5iLDyeAS0bGkqMubukcz1qK0g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3144.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(39860400002)(136003)(346002)(366004)(376002)(396003)(26005)(53546011)(71200400001)(966005)(83380400001)(6506007)(45080400002)(7696005)(478600001)(66556008)(66476007)(66446008)(110136005)(66946007)(76116006)(316002)(64756008)(8936002)(8676002)(55016002)(2906002)(9686003)(86362001)(30864003)(5660300002)(33656002)(186003)(52536014)(16793395002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: LBtzcG2LjiX49Muej31IJQTZIGFOG/DVaZ46QSUo6LvYcBw60k2peQTtURD81kFGjbKcMkdz4/HYbVtNUMLaPle7/7oHsKPUcZR9t/OZGVw1GjtQ/3p8cX385hVKtpYo2B838wUptjHrYoU/mncyjgfr2gm4YIrR8MT/jU2rxGH8kBpXlqraQnSprOWVJFDmyPdr4IS9D2URqZolaisRhvQ+Btqv4advnD4EDrA6JblW6aA/IMH0cuRc5u682e1oRJ5MXzrZdPzFDpjtpjVGZ8S2hxn/udHr5N3oBn2n3incS4v6W6THM/rzTwClhuEEixyl2E6oFeiRUJHk0Gq/OSxH6j8MBBTN0Bw450n/weppbFVxOEkIVxhU7brv0URvvB6qbgR6cWQfCgqbzsmZFG5OK3FwrxwkskUYASQ3in5Hehpoko8jNFNtCDQ8kBwZd8+R4myQZvDVDpj0c9IUtTTd/bLhPv0tg13r7idFMGL1ab5TyT6rlw/MCdGm92U4 x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: fb9a0bfe-663a-468c-b71e-08d817e3a4fb X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2020 02:09:36.4950 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Eu6cZ4bbpKQwtldD0MPW5QzMMLqXhTR4p2wtb2WfBrUZEe6sguNeL3YV+/PWevzAg+S/Y4D+pFeoZ6CFjf1Ayg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3238 X-OriginatorOrg: intel.com VGhhbmtzIExlb25hcmQgZm9yIHRoZSBjb25maXJtYXRpb24sIEkgd2lsbCB1cGRhdGUgdGhlIHJl bGF0ZWQgZmlsZXMgYmFzZWQgb24gdGhlIGNvbnNlbnN1cy4gDQoNClJlZ2FyZHMsDQotQ2l5b25n DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBMZW9uYXJkIExhdXNlbiA8bGF1 c2VuQGFwYWNoZS5vcmc+IA0KU2VudDogV2VkbmVzZGF5LCBKdW5lIDI0LCAyMDIwIDI6MjQgQU0N ClRvOiBkZXZAbXhuZXQuaW5jdWJhdG9yLmFwYWNoZS5vcmc7IGdlbmVyYWxAaW5jdWJhdG9yLmFw YWNoZS5vcmcNClN1YmplY3Q6IFJlOiBbRElTQ1VTU10gV2hlbiB0byBhZGQgQXBhY2hlIEhlYWRl cnMgdG8gVGhpcmQgUGFydHkgQ29kZSBbV0FTXSBSZTogW01FTlRPUlNdIFBQTUMgY2FzZS1ieS1j YXNlIGRlY2lzaW9uIGZvciBtYWpvciBtb2RpZmljYXRpb25zIG9mIHRoaXJkLXBhcnR5IHdvcmsg Z3VpZGFuY2UNCg0KSGkgQ2l5b25nLA0KDQp0aGUgY29uc2Vuc3VzIHBhc3NlZCwgc28gd2Ugc2hv dWxkIHByb2NlZWQgYWNjb3JkaW5nIHRvIHRoZSBjb25zZW5zdXMuDQoNClRoYW5rIHlvdQ0KTGVv bmFyZA0KDQpPbiBUdWUsIDIwMjAtMDYtMjMgYXQgMDk6MDQgKzAwMDAsIENoZW4sIENpeW9uZyB3 cm90ZToNCj4gSGkgYWxsLA0KPiANCj4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzIGFueSBmdXJ0 aGVyIGNvbmNlcm5zIGZvciB0aGlzICI3MiBob3VycyBsYXp5IA0KPiBjb25zZW5zdXMiPw0KPiBT aGFsbCB3ZSBjb250aW51ZSB3aXRoIHRoZSBvcHRpb24gb2YgIkkgYmVsaWV2ZSBQUE1DIHdvdWxk IHByZWZlciB0byANCj4gcHV0IHRoZSBBU0YgaGVhZGVyIG9uIHRvcCBvZiB0aGUgZmlsZSAoaWUu IDIgaGVhZGVycykiDQo+IA0KPiBUaGFua3MsDQo+IC1DaXlvbmcNCj4gDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExlb25hcmQgTGF1c2VuIDxsYXVzZW5AYXBhY2hlLm9y Zz4NCj4gU2VudDogVHVlc2RheSwgSnVuZSAxNiwgMjAyMCA3OjA2IEFNDQo+IFRvOiBkZXZAbXhu ZXQuaW5jdWJhdG9yLmFwYWNoZS5vcmc7IGdlbmVyYWxAaW5jdWJhdG9yLmFwYWNoZS5vcmcNCj4g U3ViamVjdDogUmU6IFtESVNDVVNTXSBXaGVuIHRvIGFkZCBBcGFjaGUgSGVhZGVycyB0byBUaGly ZCBQYXJ0eSBDb2RlIA0KPiBbV0FTXQ0KPiBSZTogW01FTlRPUlNdIFBQTUMgY2FzZS1ieS1jYXNl IGRlY2lzaW9uIGZvciBtYWpvciBtb2RpZmljYXRpb25zIG9mIA0KPiB0aGlyZC0gcGFydHkgd29y ayBndWlkYW5jZQ0KPiANCj4gVGhhbmsgeW91IGV2ZXJ5b25lIGZvciB5b3VyIHZhbHVhYmxlIGFk dmljZS4NCj4gDQo+ID4gc28gaWYgeW91IGRpZCB3YW50IHRvIGF2b2lkIGluY2x1ZGluZyB0aGUg bGljZW5zZSBpbiB5b3VyIHJlbGVhc2VzIA0KPiA+IHlvdSB3b3VsZCBlaXRoZXIgbmVlZCB0byBy ZWx5IG9uIHRoZSBmaWxlIGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgDQo+ID4gb3IgY29tcGxl dGVseSByZWltcGxlbWVudCB0aGUgZnVuY3Rpb25hbGl0eSBub3QgZGVyaXZpbmcgaXQgZnJvbSAN Cj4gPiB0aGlzIGZpbGUuDQo+IA0KPiBJbmNsdWRpbmcgdGhlIEJTRC0zIHN0eWxlIGxpY2Vuc2Ug aW4gcmVsZWFzZXMgd291bGRuJ3QgYmUgYSBwcm9ibGVtLCANCj4gYXMgaXQncyBjb21wYXRpYmxl IHdpdGggQXBhY2hlIExpY2Vuc2UgMi4gQXMgdGhlcmUgYXJlIHN1YnN0YW50aWFsIA0KPiBjaGFu Z2VzLCBJIGJlbGlldmUgUFBNQyB3b3VsZCBwcmVmZXIgdG8gcHV0IHRoZSBBU0YgaGVhZGVyIG9u IHRvcCBvZiANCj4gdGhlIGZpbGUgKGllLiAyIGhlYWRlcnMpIFs3MiBob3VycyBsYXp5IGNvbnNl bnN1cyBpZiB0aGVyZSBhcmUgbm8gDQo+IGNvbmNlcm5zXS4gV2Ugc3RpbGwgbmVlZCB0byBkZWNs YXJlIGFsbCB0aGUgbnVtcHkgZWluc3VtIGRlcml2ZWQgZmlsZXMgDQo+IGluIHRoZSBMSUNFTlNF IGFuZCBmaXggdGhlIGluY29uc2lzdGVuY3kgdGhhdCBBU0YgaGVhZGVyIHdhcyByZW1vdmVkIA0K PiBpbiBzcmMvb3BlcmF0b3IvbnVtcHkvbnBfZWluc3VtX29wLWlubC5oIGJ1dCByZW1haW5zIGlu IA0KPiBzcmMvb3BlcmF0b3IvbnVtcHkvbnBfZWluc3VtX3BhdGhfb3AtaW5sLmgNCj4gDQo+IFJl bGF0ZWQ6IEFzIFBQTUMgc3RyaXZlcyB0byBwcm92aWRlIHBhcnRpYWwgQVBJIGNvbXBhdGliaWxp dHkgd2l0aCANCj4gTnVtUHkgaW4gTVhOZXQgMiBiYXNlZCBvbiB0aGUgTnVtUHkgQXJyYXkgRnVu Y3Rpb24gUHJvdG9jb2wgWzFdLCBjb3VsZCANCj4geW91IGNsYXJpZnkgaWYgdGhlc2UgTVhOZXQg b3BlcmF0b3JzIHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcml2ZWQgZnJvbSANCj4gTnVtUHkgKHRo dXMgd2FycmFudGluZyB0aGUgQlNELTMgc3R5bGUgbGljZW5zZSBoZWFkZXJzKSBzb2xlbHkgYmFz ZWQgDQo+IG9uIGludGVncmF0aW5nIHdpdGggdGhlIE51bVB5IEFQSSBhbmQgcHJvdmlkaW5nIGNv bXBhdGlibGUgb3BlcmF0b3JzPyANCj4gT3Igb25seSAoYXMgaW4gdGhlIGVpbnN1bSBjYXNlIGFi b3ZlKSwgaWYgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiANCj4gd2FzIGRlcml2ZWQgZnJvbSBO dW1QeSdzIGltcGxlbWVudGF0aW9uLiBJIGJlbGlldmUgaXQncyB0aGUgbGF0dGVyLCBidXQgcGxl YXNlIGNsYXJpZnkgaWYgdGhhdCdzIHdyb25nLg0KPiANCj4gU2hvdWxkIEFTRiB1cGRhdGUgdGhl ICJEbyBub3QgYWRkIHRoZSBzdGFuZGFyZCBBcGFjaGUgTGljZW5zZSBoZWFkZXIgDQo+IHRvIHRo ZSB0b3Agb2YgdGhpcmQtcGFydHkgc291cmNlIGZpbGVzLiIgYXQgWzJdPyBUaGlzIHNlbnRlbmNl IHdhcyB0aGUgDQo+IG1vdGl2YXRpb24gdG8gb3BlbiB0aGlzIGRpc2N1c3Npb24gdGhyZWFkLCBh bmQgYWNjb3JkaW5nIHRvIHRoZSANCj4gY3VycmVudCBjb25zZW5zdXMgaGVyZSBpcyAiaW5jb21w bGV0ZSIuIEhvdyBhYm91dCBhZGRpbmcgYW4gInVubGVzcyANCj4gdGhlIHRoaXJkLXBhcnR5IHNv dXJjZSBmaWxlIGNvbnRhaW5zIG1ham9yIG1vZGlmaWNhdGlvbnMgYnkgQVNGIiB0byBjbGFyaWZ5 Pw0KPiANCj4gVGhhbmsgeW91DQo+IExlb25hcmQNCj4gDQo+IFsxXTogaHR0cHM6Ly9udW1weS5v cmcvbmVwcy9uZXAtMDAxOC1hcnJheS1mdW5jdGlvbi1wcm90b2NvbC5odG1sDQo+IFsyXTogaHR0 cHM6Ly93d3cuYXBhY2hlLm9yZy9sZWdhbC9zcmMtaGVhZGVycy5odG1sIzNwYXJ0eQ0KPiANCj4g T24gTW9uLCAyMDIwLTA2LTE1IGF0IDA5OjM2IC0wNDAwLCBKb2huIEQuIEFtZW50IHdyb3RlOg0K PiA+IE9uIFNhdCwgSnVuIDEzLCAyMDIwIGF0IDI6MTkgUE0gQm9iIFBhdWxpbiA8Ym9iQGJvYnBh dWxpbi5jb20+IHdyb3RlOg0KPiA+IA0KPiA+ID4gSGksDQo+ID4gPiANCj4gPiA+IEkgYWdyZWUg dGhlcmUgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGNvbnNlbnN1cyBvbiB3aGVuIGl0J3MgDQo+ID4g PiBhcHByb3ByaWF0ZSB0byBhZGQgQXBhY2hlIExpY2Vuc2UgSGVhZGVycyB0byBUaGlyZCBQYXJ0 eSBjb2RlIA0KPiA+ID4gYWNyb3NzIHByb2plY3RzLiAgSGVyZSBpcyBKdXN0aW4ncyBlbWFpbCB0 aGF0IHJlcXVlc3QgdGhlIEFwYWNoZSANCj4gPiA+IEhlYWRlcnMgcmVtb3ZlZCBbMV0NCj4gPiA+ IA0KPiA+ID4gPHNuaXA+DQo+ID4gPiANCj4gPiA+IC0gZmlsZSBjb3B5cmlnaHQgIE51bVB5IERl dmVsb3BlcnMgWzZdIHRoaXMgZmlsZSBsb29rIHRvIA0KPiA+ID4gaW5jb3JyZWN0bHkgaGF2ZSBh biBBU0YgaGVhZGVyIG9uIGl0IC4uLi4NCj4gPiA+IDYuIC4vc3JjL29wZXJhdG9yL251bXB5L25w X2VpbnN1bV9wYXRoX29wLWlubC5oDQo+ID4gPiA8L3NuaXA+DQo+ID4gPiANCj4gPiA+IFdlIHdh bnQgdG8gbWFrZSB0aGUgY2hvaWNlIHRoYXQgd2lsbCBiZSBtb3N0IHN1c3RhaW5hYmxlIGZvciB0 aGUgDQo+ID4gPiBwcm9qZWN0IGFuZCBtb3N0IGNvcnJlY3QgZm9yIHRoZSBzaXR1YXRpb24uDQo+ ID4gPiANCj4gPiA+IEJhc2VkIG9uIHRoZSBlbWFpbHMgSSBsaW5rZWQgaW4gdGhlIHByaW9yIGVt YWlsIGl0IGRvZXMgc2VlbSBsaWtlIA0KPiA+ID4gdGhlIGNhc2VzIHdoZXJlIGR1YWwgaGVhZGVy cyBhcmUgYXBwcm9wcmlhdGUgaXMgd2hlbiB0aGVyZSBhcmUgDQo+ID4gPiBNYWpvciBNb2RpZmlj YXRpb25zLiAgSW4gdGhlIGNhc2Ugb2YNCj4gPiA+IA0KPiA+ID4gbnBfZWluc3VtX3BhdGhfb3At aW5sLmgNCj4gPiA+IA0KPiA+ID4gVGhlIGZpbGUgaXMgZGVyaXZlZCBmcm9tIHRoZSBpbXBsZW1l bnRhdGlvbiBpbiBOdW1weSBbMl0uICBJZiB0aGUgDQo+ID4gPiBpbXBsZW1lbnRhdGlvbiBpbiBO dW1weSBjaGFuZ2VzIHdpbGwgdGhpcyBmaWxlIGNoYW5nZT8gIElmIHNvIHRoZW4gDQo+ID4gPiB0 aGUgY29tbXVuaXR5IHdpbGwgYmUgdGFza2VkIHdpdGggY29udGludWluZyB0byByZS1wb3J0IHRo ZSANCj4gPiA+IGNoYW5nZXMgb3ZlciB0aGF0IGlzIGFsd2F5cyBiYXNlZCBvbiBOdW1weSBzbyBp dCBtYXkgYmUgbW9yZSANCj4gPiA+IGFwcHJvcHJpYXRlIHRvIGp1c3Qga2VlcCB0aGUgTnVtcHkg bGljZW5zZS4NCj4gPiA+IA0KPiA+ID4gV2lsbCBNWE5ldCBsaWtlbHkgZXZvbHZlIHRoaXMgZmls ZSBpbiBhIHdheSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIA0KPiA+ID4gcmVzZW1ibGVzIHRoZSBOdW1w eSBpbXBsZW1lbnRhdGlvbiAoTWFqb3IgTW9kaWZpY2F0aW9uKT8gIElmIHNvIGl0IA0KPiA+ID4g bWF5IGJlIGJldHRlciB0byBrZWVwIHRoZSBBcGFjaGUgSGVhZGVyIGFzIGdvaW5nIGZvcndhcmQg dGhlIGZpbGUgDQo+ID4gPiB3aWxsIHJlcHJlc2VudCB0aGUgd29yayBvZiB0aGUgTVhOZXQgY29t bXVuaXR5IG5vdCB0aGF0IG9mIE51bXB5Lg0KPiA+ID4gDQo+ID4gDQo+ID4gS2VlcGluZyB0aGUg KHdoYXQgYXBwZWFycyB0byBiZSkgQlNELTMgc3R5bGUgbGljZW5zZSBpcyBwZXJmZWN0bHkgDQo+ ID4gZmluZSBhbmQgaXMgaW4gZmFjdCB3aGF0IHRoZSBOdW1QeSBsaWNlbnNlIHNheXMgdG8gZG8u ICBXZSB3b3VsZCANCj4gPiBvbmx5IGNoYW5nZSB0aGUgbGljZW5zZSBmcm9tIHRoZSBOdW1QeSBs aWNlbnNlIHRvIEFMdjIgaWYgYW4gU0dBIG9yIA0KPiA+IElDTEEgaXMgcmVjZWl2ZWQgZnJvbSBh bGwgY29udHJpYnV0b3JzIGhpc3RvcmljYWxseSBvbiB0aGlzIGZpbGUuICANCj4gPiBObyBtYXR0 ZXIgaG93IGRyYXN0aWMgb2YgbW9kaWZpY2F0aW9ucyB0aGUgTXhOZXQgY29tbXVuaXR5IG1ha2Vz IHRvIA0KPiA+IGl0LCBpdCB3b3VsZCBhbHdheXMgYmUgTnVtUHkgbGljZW5zZWQ7IHNvIGlmIHlv dSBkaWQgd2FudCB0byBhdm9pZCANCj4gPiBpbmNsdWRpbmcgdGhlIGxpY2Vuc2UgaW4geW91ciBy ZWxlYXNlcyB5b3Ugd291bGQgZWl0aGVyIG5lZWQgdG8gcmVseSANCj4gPiBvbiB0aGUgZmlsZSBh cyBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IG9yIGNvbXBsZXRlbHkgcmVpbXBsZW1lbnQgdGhlIA0K PiA+IGZ1bmN0aW9uYWxpdHkgbm90IGRlcml2aW5nIGl0IGZyb20gdGhpcyBmaWxlLiAgV2hldGhl ciBvciBub3QgdGhlIA0KPiA+IE14TmV0IGNvbW11bml0eSBpbXBvcnRzIHVwc3RyZWFtIGNoYW5n ZXMgb3Igbm90IGlzIHVwIHRvIHRoZW0sIGJ1dCANCj4gPiBlaXRoZXIgd2F5IHlvdSBoYXZlIGEg ZGVyaXZlZCB3b3JrIGhlcmUuDQo+ID4gDQo+ID4gSm9obg0KPiA+IA0KPiA+IA0KPiA+ID4gSG9w ZWZ1bGx5IHRoZSBhYm92ZSBoZWxwcyBjbGFyaWZ5IG15IHBlcnNwZWN0aXZlIG9uIGhvdyB0byAN Cj4gPiA+IGRldGVybWluZSBjYXNlIGJ5IGNhc2UuICBJIGRvbid0IHNlZSB0aGUgZHVhbCBsaWNl bnNlIHN0YXRlIGFzIHRoZSANCj4gPiA+IHNpbXBsZXIgY2FzZSBpbiBhbGwgc2l0dWF0aW9ucy4g IEkgZG9uJ3QgYmVsaWV2ZSB5b3Ugd291bGQgaGF2ZSB0byANCj4gPiA+IGdldCB0aGUgb3JpZ2lu YWwgY29tbWl0dGVyIHRvIHJlbGljZW5zZSB0aGUgZmlsZSB0byB5b3UgaW4gb3JkZXIgDQo+ID4g PiB0byByZW1vdmUgdGhlIGFkZGl0aW9uYWwgbGljZW5zZS4gIEkgYmVsaWV2ZSB0aGUgUFBNQyBo YXMgYWxsIHRoZSANCj4gPiA+IGF1dGhvcml0eSBpdCBuZWVkcyB0byBjaGFuZ2UgdGhlIGZpbGUu ICBJJ2QgYmUgaW50ZXJlc3RlZCB0byBoZWFyIA0KPiA+ID4gaWYgdGhpcyBpcyBhIHBvc2l0aW9u IHRoYXQgdGhlIHJlc3Qgb2YgdGhlIE1lbnRvcnMvSW5jdWJhdG9yIGFncmVlIA0KPiA+ID4gd2l0 aC4gIEkga25vdyBIZW4gaGFzIGJlZW4gaW52b2x2ZWQgaW4gc29tZSBvZiB0aGUgY29udmVyc2F0 aW9ucyANCj4gPiA+IGluIHN1cHBvcnQgb2YgZHVhbCBsaWNlbnNlcy4gIEhhcyB0aGlzIGV2ZXIg cmVxdWlyZWQgZXNjYWxhdGlvbiB0byANCj4gPiA+IGFuIGFjdHVhbCBMYXd5ZXIgaW4gTGVnYWw/ ICBPciBoYXZlIHRoZXNlIGRldGVybWluYXRpb25zIGJlZW4gbG93IA0KPiA+ID4gZW5vdWdoIHJp c2sgdGhhdCB3ZSBhcmUgY29tZm9ydGFibGUgd2l0aCBvdXIgUE1DIG1ha2luZyBiZXN0IA0KPiA+ ID4gZWZmb3J0IGRlY2lzaW9ucyBiYXNlZCBvbiB0aGUgQVNGIGd1aWRlbGluZXM/DQo+ID4gPiAN Cj4gPiA+IA0KPiA+ID4gLSBCb2INCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBbMV0NCj4gPiA+IGh0 dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy90aHJlYWQuaHRtbC9yYjgzZmY2NGJkYWM0NjRkZjJmMGNm MmZlOGZiNA0KPiA+ID4gYzYgYjlkM2I4ZmE2MmI2NDU3NjNkYzYwNjA0NWYlNDAlM0NnZW5lcmFs LmluY3ViYXRvci5hcGFjaGUub3JnJTNFDQo+ID4gPiANCj4gPiA+IFsyXQ0KPiA+ID4gaHR0cHM6 Ly9naXRodWIuY29tL251bXB5L251bXB5L2Jsb2IvbWFzdGVyL251bXB5L2NvcmUvZWluc3VtZnVu Yy5wDQo+ID4gPiB5IE9uIDYvMTIvMjAyMCA3OjIwIFBNLCBMZW9uYXJkIExhdXNlbiB3cm90ZToN Cj4gPiA+IA0KPiA+ID4gVGhhbmsgeW91IEJvYiBmb3IgdGhlIGVsYWJvcmF0aW9uLiBQUE1DIHdv dWxkIGxpa2UgdG8gbWluaW1pemUgDQo+ID4gPiBjb21wbGV4aXR5LCB0aGF0J3Mgd2h5IHdlIGFz ayBmb3IgeW91ciByZWNvbW1lbmRhdGlvbi4NCj4gPiA+IA0KPiA+ID4gSWYgaXQncyBlYXNpZXN0 IHRvIGp1c3Qga2VlcCB0aGUgb3JpZ2luYWwgbGljZW5zZSBoZWFkZXIsIHdlIGNhbiANCj4gPiA+ IGRvIHRoYXQuIERvIHdlIG5lZWQgdGhlIGNvbnRyaWJ1dG9yIHRvIHJlLWxpY2Vuc2UgdGhlaXIg DQo+ID4gPiBjb250cmlidXRpb24sIG9yIGlzIHRoZSBjb250cmlidXRpb24gYWxyZWFkeSBhdmFp bGFibGUgdW5kZXIgYm90aCANCj4gPiA+IGxpY2Vuc2VzIGFzIGJvdGggbGljZW5zZSBoZWFkZXJz IHdlcmUgaW5jbHVkZWQgYnkgdGhlIGNvbnRyaWJ1dG9yIA0KPiA+ID4gYW5kIHRoZSBBU0YgaGVh ZGVyIGNhbiBzaW1wbHkgYmUgZGVsZXRlZD8NCj4gPiA+IA0KPiA+ID4gUmVhZGluZyB0aHJvdWdo IHRoZSB0aHJlYWRzIHlvdSByZWZlcmVuY2VkLCB0aGVyZSBkb2VzIG5vdCBzZWVtIHRvIA0KPiA+ ID4gYmUgYSBzdHJvbmcgY29uc2Vuc3VzIGluIHRoZSBBU0YgYWJvdXQgaG93IHRvIGhhbmRsZSB0 aGlzIHNpdHVhdGlvbi4NCj4gPiA+IEZvciBleGFtcGxlLCBxdW90aW5nIFJvbWFuIFNoYXBvc2hu aWsgWzJdIGluIHN1cHBvcnQgb2YganVzdCANCj4gPiA+IHB1dHRpbmcNCj4gPiA+IDIgTGljZW5z ZSBIZWFkZXJzIGZvcg0KPiA+ID4gc2ltcGxpY2l0eToNCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBI bS4gVGhpcyBpcyB0cmlja3ksIG5vdyB0aGF0IEkgcmUtcmVhZCB0aGUgbGFuZ3VhZ2Ugb2YgdGhl IEFTRiANCj4gPiA+IGxpY2Vuc2UgaGVhZGVyIEknbSBub3Qgc3VyZSBhbnltb3JlLiBJICp0aGlu ayogdGhlIGxhbmd1YWdlIHRoZXJlIA0KPiA+ID4gc2hvdWxkIGFsbG93IHlvdSB0byBzbGFwIHNh aWQgaGVhZGVyIG9uIGEgY29tcGF0aWJsZSBsaWNlbnNlIGNvZGUuDQo+ID4gPiANCj4gPiA+IEJl c2lkZXMsIHRoZSBhbHRlcm5hdGl2ZSBpcyBtdWNoIG1lc3NpZXI6IGV2ZXJ5IHRpbWUgc29tZWJv ZHkgDQo+ID4gPiB0b3VjaGVzIHRoYXQgZmlsZSBoZS9zaGUgbmVlZHMgdG8gZGVjaWRlIHdoZXRo ZXIgaXQgaXMgdGltZSBmb3IgYW4gDQo+ID4gPiBBU0YgaGVhZGVyIG9yIG5vdC4NCj4gPiA+IA0K PiA+ID4gSSAqdGhpbmsqIChidXQgSSdkIGxvdmUgZm9yIG9sZC10aW1lcnMgdG8gY2hpbWUgaW4g YW5kIGNvcnJlY3QgbWUpIA0KPiA+ID4gdGhhdCAjMy01IHdlcmUgd3JpdHRlbiBmcm9tIHRob3Vn aC1zaGFsbC1ub3QtZm9yay1jb21tdW5pdGllcyBwZXJzcGVjdGl2ZS4NCj4gPiA+IA0KPiA+ID4g Q2FuIHdlIGZvbGxvdyB0aGlzIGFwcHJvYWNoIChrZWVwIDIgTGljZW5zZSBoZWFkZXJzKSBmb3Ig DQo+ID4gPiBzaW1wbGljaXR5IChhc3N1bWluZyByZW1vdmFsIG9mIEFTRiBoZWFkZXIgd2lsbCBy ZXF1aXJlIGV4dHJhIHN0ZXBzKT8NCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBXaXRoIHJlc3BlY3Qg dG8gZWluc3VtZnVuYy5weSBbNV0gdnMgbnBfZWluc3VtX29wLmNjIFs2XSBpZiB0aGlzIA0KPiA+ ID4gaXMgaW4gZmFjdCBhIHBvcnQgd2hlcmUgdGhlIGJlaGF2aW9yIHdhcyBjb3BpZWQvZGVyaXZl ZCBkaXJlY3RseSANCj4gPiA+IGZyb20gbnVtcHkgSSBjb3VsZCBzZWUgdGhhdCBhcyBzdXBwb3J0 aW5nIEp1c3RpbidzIGNhc2UgdGhhdCB0aGUgDQo+ID4gPiBBcGFjaGUgaGVhZGVyIHNob3VsZCBi ZSByZW1vdmVkLiAgSG93ZXZlciB0aGF0IGlzIGp1c3QgbXkgb3Bpbmlvbi4NCj4gPiA+IA0KPiA+ ID4gV2hpY2ggZW1haWwgb2YgSnVzdGluIGFyZSB5b3UgcmVmZXJyaW5nIHRvPw0KPiA+ID4gDQo+ ID4gPiBCZXN0IHJlZ2FyZHMNCj4gPiA+IExlb25hcmQNCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBb MV06IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9sZWdhbC9zcmMtaGVhZGVycy5odG1sI3B1cnBvc2UN Cj4gPiA+IFsyXToNCj4gPiA+IGh0dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy90aHJlYWQuaHRtbC9l ZjQ2YjFkMGEzZGQ4NjVkMjdhMzNjMjkwNDMwZA0KPiA+ID4gODkgDQo+ID4gPiAyZDMzNzNkNGJj NWUyN2I1ZjA2YzdiY2RhJTQwMTQ1MTk1MTI5NSU0MCUzQ2dlbmVyYWwuaW5jdWJhdG9yLmFwYWMN Cj4gPiA+IGhlDQo+ID4gPiAub3JnJTNFDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gT24gV2VkLCAy MDIwLTA2LTEwIGF0IDIxOjM5IC0wNTAwLCBCb2IgUGF1bGluIHdyb3RlOg0KPiA+ID4gDQo+ID4g PiBGaXJzdCBnZW5lcmFsIGRpc2NsYWltZXI6IEkgYW0gbm90IGEgbGF3eWVyLg0KPiA+ID4gDQo+ ID4gPiBTZWNvbmQgRGlzY2xhaW1lciB3aXRoIGFuIGVuZ2luZWVyIGhhdCBvbiB3ZSB3YW50IHRv IGF2b2lkIGNvcHlpbmcgDQo+ID4gPiB0aGlyZCBwYXJ0eSBjb2RlIGludG8gdGhlIHByb2plY3Qg c2luY2UgaXQgaW5jcmVhc2VzIHRoZSBhbW91bnQgb2YgDQo+ID4gPiBtYWludGVuYW5jZSBpbiBh IHNlbnNlIGZyb20gYSBjb2RlIHN0YW5kcG9pbnQgYW5kIGZyb20gYSBsaWNlbnNpbmcgDQo+ID4g PiBzdGFuZHBvaW50LiAgSWYgYXQgYWxsIHBvc3NpYmxlIGl0IGlzIHByZWZlcmFibGUgdG8gZWl0 aGVyIGxpbmsgb3IgDQo+ID4gPiB0cnkgdG8gZmluZCBhIHdheSB0byBpbnRlZ3JhdGUgeW91ciB0 d2Vha3MgYmFjayBpbnRvIHRoZSBvdGhlciANCj4gPiA+IHByb2plY3RzIGJlZm9yZSB0YWtpbmcg b24gdGhlIGJ1cmRlbiBvZiBob3VzaW5nIHRoZSBjb2RlIGluIE1YTmV0Lg0KPiA+ID4gSSBkbyBo b3BlIHRoZXNlIG9wdGlvbnMgd2VyZSBjb25zaWRlcmVkIG9yIGFyZSBiZWluZyBsb29rZWQgYXQg Zm9yIA0KPiA+ID4gcmVmYWN0b3JpbmcgaW4gdGhlIHByb2plY3Qgc2luY2UgaXQgd2lsbCBoZWxw IHRoZSBsb25nIHRlcm0gDQo+ID4gPiB2aWFiaWxpdHkgb2YgdGhlIHByb2plY3QuDQo+ID4gPiAN Cj4gPiA+IE5vdyB0byB5b3VyIHF1ZXN0aW9uLiAgU2ltaWxhciBzaXR1YXRpb25zIGhhdmUgYmVl biBkaXNjdXNzZWQgYm90aCANCj4gPiA+IG9uIGxlZ2FsIFsxXSBhbmQgb24gaW5jdWJhdG9yIFsy XVszXS4gIEl0IG1heSBiZSB1c2VmdWwgdG8gcmV2aWV3IA0KPiA+ID4gc29tZSBvZiB0aGVzZSB0 aHJlYWRzIHRvIHVuZGVyc3RhbmQgaG93IG90aGVyIHByb2plY3RzIG1hZGUgdGhpcyANCj4gPiA+ IGRldGVybWluYXRpb24uDQo+ID4gPiBUaGVyZSBhcmUgaW5zdGFuY2VzIHdoZXJlIG90aGVyIG1l bWJlcnMgaGF2ZSBzdGF0ZWQgaXQgaXMgDQo+ID4gPiBhcHByb3ByaWF0ZSBhbmQgdGhlIGR1YWwg aGVhZGVycyBoYXZlIGJlZW4gdXNlZCBbNF0uICBJdCBzZWVtcyBpbiANCj4gPiA+IHNvbWUgb2Yg dGhlc2UgY2FzZXMgdGhlIFBNQyBoYXMgcmVhY2hlZCBvdXQgdG8gdGhlIG90aGVyIHByb2plY3Rz IA0KPiA+ID4gdG8gYXNrIGZvciBwZXJtaXNzaW9uIHRvIGFwcGx5IHRoZSBBcGFjaGUgbGljZW5z ZS4NCj4gPiA+IA0KPiA+ID4gV2l0aCByZXNwZWN0IHRvIGVpbnN1bWZ1bmMucHkgWzVdIHZzIG5w X2VpbnN1bV9vcC5jYyBbNl0gaWYgdGhpcyANCj4gPiA+IGlzIGluIGZhY3QgYSBwb3J0IHdoZXJl IHRoZSBiZWhhdmlvciB3YXMgY29waWVkL2Rlcml2ZWQgZGlyZWN0bHkgDQo+ID4gPiBmcm9tIG51 bXB5IEkgY291bGQgc2VlIHRoYXQgYXMgc3VwcG9ydGluZyBKdXN0aW4ncyBjYXNlIHRoYXQgdGhl IA0KPiA+ID4gQXBhY2hlIGhlYWRlciBzaG91bGQgYmUgcmVtb3ZlZC4gIEhvd2V2ZXIgdGhhdCBp cyBqdXN0IG15IG9waW5pb24uICANCj4gPiA+IElmIHRoZSBQTUMgZmVlbHMgc3Ryb25nbHkNCj4g PiA+IGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gZXNjYWxhdGUgdG8gbGVnYWwtZGlzY3Vzcy4gICBU aGVzZSBhcmUgY2FzZSBieQ0KPiA+ID4gY2FzZSBkZWNpc2lvbnMgYW5kIHRoZSBtb3JlIHRoaXJk IHBhcnR5IGNvZGUgdGhhdCBnZXRzIGNvcGllZCBpbiANCj4gPiA+IHRoZSBtb3JlIGRyYWcgdGhl cmUgd2lsbCBiZSBvbiB0aGUgY29tbXVuaXR5IHRvIGRlYWwgd2l0aCB0aGVzZSBpc3N1ZXMuDQo+ ID4gPiBJIHdvdWxkIGFsc28gZW5jb3VyYWdlIGRpc2N1c3Npb24gb2YgZWFjaCBjYXNlIHRvIHJl bWFpbiBvbiBsaXN0IA0KPiA+ID4gc28gdGhhdCB0aGUgaW5jdWJhdG9yIFBNQyBjYW4gc2VlIGhv dyB0aGUgUFBNQyBpcyBtYWtpbmcgdGhlc2UgDQo+ID4gPiBkZXRlcm1pbmF0aW9ucy4NCj4gPiA+ IA0KPiA+ID4gLSBCb2INCj4gPiA+IA0KPiA+ID4gWzFdDQo+ID4gPiBodHRwczovL2xpc3RzLmFw YWNoZS5vcmcvdGhyZWFkLmh0bWwvMGZjNGMwZTk1ZWUwYzQ4OTU1MzM3M2UzNzgxMjUNCj4gPiA+ IGEwIA0KPiA+ID4gZDE2M2JjNTExZGEyNTU1Y2FhNjhiZmE4NyU0MDE0NTU5MDMxNjglNDAlM0Ns ZWdhbC1kaXNjdXNzLmFwYWNoZS5vDQo+ID4gPiByZw0KPiA+ID4gJTNFDQo+ID4gPiANCj4gPiA+ IFsyXQ0KPiA+ID4gaHR0cHM6Ly9saXN0cy5hcGFjaGUub3JnL3RocmVhZC5odG1sL2QwMGY3MmM0 YWEwYjU2OTI3ZGFjODdiMTE2ZTJlDQo+ID4gPiA5MiANCj4gPiA+IGZhMzJiN2RjZjQ0NzAxNjcy NjY4M2NjNGZAMTQ1NTIxMDg3N0AlM0NnZW5lcmFsLmluY3ViYXRvci5hcGFjaGUubw0KPiA+ID4g cmcNCj4gPiA+ICUzRQ0KPiA+ID4gDQo+ID4gPiBbM10NCj4gPiA+IGh0dHBzOi8vbGlzdHMuYXBh Y2hlLm9yZy90aHJlYWQuaHRtbC9lNzQzYjFiMWNmZGEyYzQ3NzVjM2ZlNTA5ZjNhZA0KPiA+ID4g YzggDQo+ID4gPiBmNjlkNjRmZDJiNmViMjUzYWRlMzExZmU3JTQwMTQ1MTk0Nzg1NSU0MCUzQ2dl bmVyYWwuaW5jdWJhdG9yLmFwYWMNCj4gPiA+IGhlDQo+ID4gPiAub3JnJTNFDQo+ID4gPiANCj4g PiA+IFs0XQ0KPiA+ID4gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90cmFmb2Rpb24vYmxvYi9t YXN0ZXIvY29yZS9zcWwvcGFyc2VyL3VsDQo+ID4gPiBleA0KPiA+ID4gZXIuaA0KPiA+ID4gDQo+ ID4gPiBbNV0NCj4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9ibG9iL21hc3Rl ci9udW1weS9jb3JlL2VpbnN1bWZ1bmMucA0KPiA+ID4geQ0KPiA+ID4gDQo+ID4gPiBbNl0NCj4g PiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvaW5jdWJhdG9yLW14bmV0L2Jsb2IvbWFzdGVy L3NyYy9vcGVyYXRvcg0KPiA+ID4gL24NCj4gPiA+IHVtcHkvbnBfZWluc3VtX29wLmNjDQo+ID4g PiANCj4gPiA+IA0KPiA+ID4gT24gNi8xMC8yMDIwIDU6MjkgUE0sIExlb25hcmQgTGF1c2VuIHdy b3RlOg0KPiA+ID4gDQo+ID4gPiBIaSBCb2IsDQo+ID4gPiANCj4gPiA+IHllcywgeW91ciB1bmRl cnN0YW5kaW5nIGlzIGNvcnJlY3QuIFRvIGZ1cnRoZXIgZ2l2ZSBhbiBleGFtcGxlIEknZCANCj4g PiA+IGxpa2UgdG8gcXVvdGUgSGFvemhlbmcgd2hvIGFkZGVkIHR3byBvZiB0aGUgZmlsZXMgaW4g cXVlc3Rpb246DQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gVGhlIHR3byBmaWxlcyBvcmlnaW5hdGUg ZnJvbSA+DQo+ID4gPiANCj4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9ibG9i L21hc3Rlci9udW1weS9jb3JlL2VpbnN1bWZ1bmMucHkgLg0KPiA+ID4gDQo+ID4gPiBJIHRyYW5z bGF0ZWQgdGhlbSBmcm9tIHB5dGhvbiB0byBjcHAuIFRoZSBvcmlnaW5hbCBmaWxlcyBhcmUgDQo+ ID4gPiBzdWJqZWN0IHRvIHRoZSB0aGUgZm9sbG93aW5nIGxpY2Vuc2U6DQo+ID4gPiBodHRwczov L2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQNCj4gPiA+IA0K PiA+ID4gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9pbmN1YmF0b3ItbXhuZXQvaXNzdWVzLzE3 MzI5I2lzc3VlY29tbWVuDQo+ID4gPiB0LQ0KPiA+ID4gNjQwMDQzODE0DQo+ID4gPiANCj4gPiA+ IFRoYW5rIHlvdQ0KPiA+ID4gTGVvbmFyZA0KPiA+ID4gDQo+ID4gPiBPbiBXZWQsIDIwMjAtMDYt MTAgYXQgMDc6NDIgLTA1MDAsIEJvYiBQYXVsaW4gd3JvdGU6DQo+ID4gPiANCj4gPiA+IEhpLA0K PiA+ID4gDQo+ID4gPiBMZXQgbWUgcmVzdGF0ZSB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHdo YXQncyBiZWluZyBhc2tlZC4NCj4gPiA+IA0KPiA+ID4gMSkgVGhlcmUgaXMgdGhpcmQgcGFydHkg Y29kZSBpbiB0aGUgcHJvamVjdCB0aGF0IGhhcyBNYWpvciANCj4gPiA+IE1vZGlmaWNhdGlvbnMg dG8gdGhlIG9yaWdpbmFsIHRoaXJkIHBhcnR5IHNvdXJjZS4NCj4gPiA+IA0KPiA+ID4gMikgVGhl IG9yaWdpbmFsIHRoaXJkIHBhcnR5IGNvZGUgZG9lcyBub3QgY3VycmVudGx5IGhhdmUgdHdvIA0K PiA+ID4gbGljZW5zZSBoZWFkZXJzDQo+ID4gPiANCj4gPiA+IChleCBUaGlyZCBQYXJ0eSBDb2Rl IGhhcyBNSVQgbGljZW5zZSBvbmx5LiAgQXBhY2hlIExpY2Vuc2UgaGVhZGVyIA0KPiA+ID4gd2Fz IGFkZGVkIHdoZW4gaXQgd2FzIGNoZWNrZWQgaW50byBNWE5ldCByZXBvIHdpdGggbW9kaWZpY2F0 aW9ucykNCj4gPiA+IA0KPiA+ID4gMykgWW91IGFyZSBhc2tpbmcgaWYgdGhlIGZpbGVzIGNhbiBy ZW1haW4gaW4gdGhlIE1YTmV0IHJlcG9zaXRvcnkgDQo+ID4gPiB3aXRoIGJvdGggbGljZW5zZSBo ZWFkZXJzLg0KPiA+ID4gDQo+ID4gPiAtIEJvYg0KPiA+ID4gDQo+ID4gPiBPbiA2LzkvMjAyMCA1 OjA3IFBNLCBMZW9uYXJkIExhdXNlbiB3cm90ZToNCj4gPiA+IA0KPiA+ID4gSGkgTWVudG9ycywN Cj4gPiA+IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGVnYWwvc3JjLWhlYWRlcnMuaHRtbCMzcGFy dHkgc3RhdGVzIHRoZSA1IA0KPiA+ID4gcnVsZXMgZm9yIGhhbmRsaW5nIHRoaXJkLXBhcnR5IGNv ZGUgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QgWzFdLiANCj4gPiA+IEluIHBhcnRpY3VsYXIgUFBN QyBzaGFsbCBoYW5kbGUgbWFqb3IgbW9kaWZpY2F0aW9ucyBvbiBhIA0KPiA+ID4gY2FzZS1ieS1j YXNlIGJhc2lzLg0KPiA+ID4gDQo+ID4gPiBCdXQgdGhlIG90aGVyIHJ1bGVzIHN0YXRlDQo+ID4g PiANCj4gPiA+IA0KPiA+ID4gMS4gRG8gbm90IG1vZGlmeSBvciByZW1vdmUgYW55IGNvcHlyaWdo dCBub3RpY2VzIG9yIGxpY2Vuc2VzIA0KPiA+ID4gd2l0aGluDQo+ID4gPiB0aGlyZC0NCj4gPiA+ IA0KPiA+ID4gcGFydHkgd29ya3MuDQo+ID4gPiANCj4gPiA+IGFuZA0KPiA+ID4gDQo+ID4gPiAN Cj4gPiA+IDIuIERvIG5vdCBhZGQgdGhlIHN0YW5kYXJkIEFwYWNoZSBMaWNlbnNlIGhlYWRlciB0 byB0aGUgdG9wIG9mDQo+ID4gPiB0aGlyZC0gcGFydHkNCj4gPiA+IA0KPiA+ID4gc291cmNlIGZp bGVzLg0KPiA+ID4gDQo+ID4gPiBUaGUgbWFqb3IgbW9kaWZpY2F0aW9ucyBpbiBxdWVzdGlvbiBb Ml0gYXJlIGN1cnJlbnRseSBsaWNlbnNlZCANCj4gPiA+IHVuZGVyIEFwYWNoZSBMaWNlbnNlIGJ1 dCB0aGUgZmlsZXMgb3JpZ2luYXRlIGZyb20gYSB0aGlyZC1wYXJ0eSANCj4gPiA+IGFuZCB0aGVy ZSBhcmUgdGh1cyB0d28gbGljZW5zZSBoZWFkZXJzIGluIHRoZSBmaWxlcy4gVGhpcyBpcyBpbiAN Cj4gPiA+IGNvbmZsaWN0IHdpdGggcnVsZSAyLg0KPiA+ID4gDQo+ID4gPiBDb3VsZCB5b3UgY2xh cmlmeSBpZiBydWxlIDIgaXMgbm90IGEgcnVsZSBidXQgb25seSBhIGd1aWRlbGluZSANCj4gPiA+ IHRoYXQgY2FuIGJlIG92ZXJydWxlZCBpbiBQUE1DJ3MgY2FzZS1ieS1jYXNlIGRlY2lzaW9uPyBX aGF0J3MgeW91ciANCj4gPiA+IHJlY29tbWVuZGF0aW9uPw0KPiA+ID4gSWUuDQo+ID4gPiBjYW4N Cj4gPiA+IHdlIGtlZXAgdGhlIDIgaGVhZGVycyBpbiBwbGFjZT8NCj4gPiA+IA0KPiA+ID4gQmVz dCByZWdhcmRzDQo+ID4gPiBMZW9uYXJkDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gWzFdOg0KPiA+ ID4gDQo+ID4gPiANCj4gPiA+IDAuIFRoZSB0ZXJtICJ0aGlyZC1wYXJ0eSB3b3JrIiByZWZlcnMg dG8gYSB3b3JrIG5vdCBzdWJtaXR0ZWQgDQo+ID4gPiBkaXJlY3RseSB0byB0aGUgQVNGIGJ5IHRo ZSBjb3B5cmlnaHQgb3duZXIgb3Igb3duZXIncyBhZ2VudC4gVGhpcyANCj4gPiA+IGluY2x1ZGVz IHBhcnRzIG9mIGEgd29yayBzdWJtaXR0ZWQgZGlyZWN0bHkgdG8gdGhlIEFTRiBmb3Igd2hpY2gg DQo+ID4gPiB0aGUgc3VibWl0dGVyIGlzIG5vdCB0aGUgY29weXJpZ2h0IG93bmVyIG9yIG93bmVy J3MgYWdlbnQuDQo+ID4gPiAxLiBEbyBub3QgbW9kaWZ5IG9yIHJlbW92ZSBhbnkgY29weXJpZ2h0 IG5vdGljZXMgb3IgbGljZW5zZXMgDQo+ID4gPiB3aXRoaW4NCj4gPiA+IHRoaXJkLQ0KPiA+ID4g cGFydHkgd29ya3MuDQo+ID4gPiAyLiBEbyBlbnN1cmUgdGhhdCBldmVyeSB0aGlyZC1wYXJ0eSB3 b3JrIGluY2x1ZGVzIGl0cyBhc3NvY2lhdGVkIA0KPiA+ID4gbGljZW5zZSwgZXZlbiBpZiB0aGF0 IHJlcXVpcmVzIGFkZGluZyBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgZnJvbSANCj4gPiA+IHRoZSB0 aGlyZC1wYXJ0eSBkb3dubG9hZCBzaXRlIGludG8gdGhlIGRpc3RyaWJ1dGlvbi4NCj4gPiA+IDMu IERvIG5vdCBhZGQgdGhlIHN0YW5kYXJkIEFwYWNoZSBMaWNlbnNlIGhlYWRlciB0byB0aGUgdG9w IG9mDQo+ID4gPiB0aGlyZC0gcGFydHkgc291cmNlIGZpbGVzLg0KPiA+ID4gNC4gTWlub3IgbW9k aWZpY2F0aW9ucy9hZGRpdGlvbnMgdG8gdGhpcmQtcGFydHkgc291cmNlIGZpbGVzIA0KPiA+ID4g c2hvdWxkIHR5cGljYWxseSBiZSBsaWNlbnNlZCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyB0aGUg cmVzdCBvZiANCj4gPiA+IHRoZSByZXN0IG9mIHRoZSB0aGlyZC0gcGFydHkgc291cmNlIGZvciBj b252ZW5pZW5jZS4NCj4gPiA+IDUuIE1ham9yIG1vZGlmaWNhdGlvbnMvYWRkaXRpb25zIHRvIHRo aXJkLXBhcnR5IHNob3VsZCBiZSBkZWFsdCANCj4gPiA+IHdpdGggb24gYSBjYXNlLWJ5LWNhc2Ug YmFzaXMgYnkgdGhlIFBNQy4NCj4gPiA+IA0KPiA+ID4gWzJdOg0KPiA+ID4gaHR0cHM6Ly9naXRo dWIuY29tL2FwYWNoZS9pbmN1YmF0b3ItbXhuZXQvaXNzdWVzLzE3MzI5I2lzc3VlY29tbWVuDQo+ ID4gPiB0LQ0KPiA+ID4gNjQxMzExMTk5DQo+ID4gPiANCj4gPiA+IA0KDQo=