From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.2331.1595896824964553107 for ; Mon, 27 Jul 2020 17:40:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=y1U76jqF; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: liming.gao@intel.com) IronPort-SDR: pQDloTn+vCkhRgjYyM5YFTQnTUn3z1drcXu2wOpuJ4X2sNe2bTaWigW6t775ShhD4J9X5f2ySp s3KIeXIvetQA== X-IronPort-AV: E=McAfee;i="6000,8403,9695"; a="131196879" X-IronPort-AV: E=Sophos;i="5.75,404,1589266800"; d="scan'208";a="131196879" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2020 17:40:23 -0700 IronPort-SDR: XEFQfPuxHWGdHV3gQyRYPXHSxAWg1iT/Yg5YSudzavteCYH53aDwtS969Kxxl0VFw81IHoeRd5 IhwVryV1GnNg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,404,1589266800"; d="scan'208";a="364310928" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 27 Jul 2020 17:40:23 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) 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; Mon, 27 Jul 2020 17:40:22 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 27 Jul 2020 17:40:22 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.173) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 27 Jul 2020 17:40:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g59O/gJILNo70cBtAc3/42MzyIC381U4g5PDKxj1LqxbqtzF66Z8T/YBMzVsHnon3Ge1rJWzAn1oFwTsiSXWmNVpkN0RCQ4uGbnKil+XFHPEaZrR9LKG2Pnu+GZfayGfAzdlJeI26TzwqRw4wod0oaJvANZ/PmstEHgO1gIQCmJiO9IW5aFlrOM14Qn/TcplR1YkpeykT+NdZzR7lqNKHf94UTIlB9MW30Gl+HGzQvJcuHgFIQkXBUGWE04FiZ8pMDtTgGf+meGitcktoF0Qx6UFEdLTzj2hrLMyrSYNFk/YoS3Dw6tlx5htj7y86TnVuQOB4MZfri2feCfIotkaNg== 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=76qZptd+5ISQ2aVQeirfzlo0Zc5hfi1zMW9P6cy60CU=; b=PaeATk9kXPY2YXlPdaAVIlpObZPVj/4Nad33yetKgOUdYVEMFrmBlD7jN9dzp4klDD3mhAT0PldXmKXivVGoryr+s9/o6U/phGXGNIEwYE8S2nzLGf76/1P4CEhmP9Q71wjNLoc4mLVuWHgm6l0m53SQCjcn2k9gP/dmdiEcOBQPjxZOIx76LqrBUUukKgpOzkg9CMqFck2HD0aHD+VOzaVGy+UssueHzNwhsMAfPTVGrLoo/Q1L4gfbr9oGCnGLcct1U8T9lnKgKYBn0l6gAOUjZloI/TlmOpLzo5QnVEgj4txQ13AGWA5iuWifH8hGLPuNC7v7G/JXaZEsFWH3Aw== 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=76qZptd+5ISQ2aVQeirfzlo0Zc5hfi1zMW9P6cy60CU=; b=y1U76jqF3aeIWwoeTm0maVcbYE41X8gfpIXX/nwXBvXiqUKU8jCsBKg5W+lllS/BVs1otY4ZmSqQnPgos6ypfHFOcnFof4m5EjRYobq6z4XdwhSrdwJYjVJzlAYXKdaHELI7JUYbkp82e4BLrxUq7SCbbgJuHj8N4UdsChQbtY0= Received: from MWHPR11MB1630.namprd11.prod.outlook.com (2603:10b6:301:e::7) by MW3PR11MB4539.namprd11.prod.outlook.com (2603:10b6:303:2f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.20; Tue, 28 Jul 2020 00:40:16 +0000 Received: from MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e]) by MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e%6]) with mapi id 15.20.3216.033; Tue, 28 Jul 2020 00:40:16 +0000 From: "Liming Gao" To: "devel@edk2.groups.io" , "pierre.gondois@arm.com" , Leif Lindholm , Masahisa Kojima CC: Sami Mujawar , Tomas Pilar , "Feng, Bob C" , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Topic: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Index: AQHWT7DSFte3sv2wdUi56uyaKgiaJqkbnJyAgAAFA5CAADCigIAAfMlg Date: Tue, 28 Jul 2020 00:40:16 +0000 Message-ID: References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1b0668a6-1d7a-46f4-814a-08d8328ecc1d x-ms-traffictypediagnostic: MW3PR11MB4539: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TXxQqpwXKmrXgabx/QU1NPWOXExbYQ7LXh4LsFT90oCMiXOA4SNVFggiWeQQxDmW7MHXlv2rD38O+VHkYaLWtakcG+8BDlI/+5fMPL9/Q922gNADkoLW1E5J/gfRH5Lf9/orLL31wXuiVs1QdZbF18E/w2mhMwliWrrOSKpXNzV1U/zzOsOf/tToj5UFZGs1wuIplzBOM6jGBJdNdRWm4gTK+DL7LY0xOKIgooBbHwjl9/Aas4X5rJBmuju6RKvkYlYxP2DKlJriJDQuGM79BtwFLyOh6YlI6KuXtgMtJG5sZRjtj3h3aBQdm6r+E71JJJbIZmRQu0l5I5W29YK7AG0Ng7Pniba5HSfNUafmKreifFo1POIxu0y0VwxMo5RQ3XTJedZKopapyjfU9fTkHqx1/h/PcmLKl9+ZD5vI1gnJI9kZCS8j1U78w0GenvnPFNML92n7eLMqaShHNRElm4Nqx1SurlL2otJ4mS25aH4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1630.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(478600001)(71200400001)(55016002)(9686003)(316002)(110136005)(2906002)(186003)(54906003)(966005)(26005)(8676002)(8936002)(4326008)(86362001)(66556008)(66476007)(66446008)(64756008)(7696005)(53546011)(6506007)(83380400001)(33656002)(5660300002)(52536014)(30864003)(76116006)(66946007)(142923001)(21314003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: as2q5ZzOq3Ef7bAbRCtuWCPJAUu4pA3fhFsm/wdv0nRVyy6rvOv/B8njkGWH1ODcjyp7EUJrq5Y23uBIX9XPpfOZHRJXon7tDfFsWVjeCfkJqF4bcRbTCKEkBtfH6b+ekEjJf7erdi72zd3nktbGV5jOZmMfs/s4f6fMwrPVKQvb8irCYU2bU7X/eeTasS8nY8PK6OOTkE4wCCQi1P9gfReo4CqKwPRi9a53aK5Sqkk/bF6u427T1QXSReVrZ39Tpkj8bis7ggsSRq+6a34de4vXc9Yvz7OYo34o+L9MAf3+Ba/Yt6tS/MXRR00ZV+XFqpCPpNr/6DUgr1yPbaiBZq+M7KEJPqEDWK7UZdZ8xkyOMgnH36hi6xqrwfAzsvO9MkL10IObCdfSSabv4gCHN1gAIcw6oC5iDp1Bf8VU9lglUqHPH7jqGw6Gpy1dqLhO+f+opnMk/pOCdnn7kuyS0Gsuy1kFSTLHLjKzi8K83e5MdSXpbaNlB4xczoc5r7xk MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b0668a6-1d7a-46f4-814a-08d8328ecc1d X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2020 00:40:16.1546 (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: hpN9JSEZmOKRlMQgWG0ZsL88z4Ffsy+bOKnC3JPUNR45iXW+n+arYsCNS3ykVPVGO5nICvbG0+W8Lgu06tyG1Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4539 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGllcnJlOg0KICBUaGFua3MgZm9yIHlvdXIgaW52ZXN0aWdhdGlvbi4gRm9yIG5vdywgdGhlIG1v ZHVsZSB3aWxsIHJlbmFtZSBzb3VyY2UgZmlsZSB0byBhdm9pZCB0aGUgZmlsZSBjb25mbGljdC4g Q2FuIHlvdSBzdWJtaXQgb25lIEJaIGZvciBCYXNlVG9vbHMgdG8gZW5oYW5jZSB0aGUgbG9naWMg Zm9yIHRoZSBhdXRvZ2VuIHNvdXJjZSBmaWxlPyBUaGlzIG5lZWRzIG1vcmUgZGlzY3Vzc2lvbi4g DQoNCiAgWWVzLiBJIGFncmVlIHRvIHBsYWNlIHRoZSBnZW5lcmF0ZWQgc291cmNlIGZpbGUgaW50 byAkKERFQlVHX0RJUikuIFlvdSBjYW4gbWFrZSBhbm90aGVyIHBhdGNoIGZvciB0aGlzIGNoYW5n ZS4gDQoNClRoYW5rcw0KTGltaW5nDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTog ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2Yg UGllcnJlR29uZG9pcw0KU2VudDogMjAyMOW5tDfmnIgyOOaXpSAxOjEwDQpUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW87IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IExlaWYgTGlu ZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgTWFzYWhpc2EgS29qaW1hIDxtYXNhaGlzYS5rb2pp bWFAbGluYXJvLm9yZz4NCkNjOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsg VG9tYXMgUGlsYXIgPFRvbWFzLlBpbGFyQGFybS5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVu Z0BpbnRlbC5jb20+OyBBcmQgQmllc2hldXZlbCA8QXJkLkJpZXNoZXV2ZWxAYXJtLmNvbT4NClN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY1IDQvNV0gQmFzZVRvb2xzOiBDb21waWxl IEFNTCBieXRlY29kZSBhcnJheXMgaW50byAub2JqIGZpbGUNCg0KSGVsbG8sDQoNCkxpbWluZzoN CkkgZGlkbid0IGZpbmQgYW55dGhpbmcgcHJldmVudGluZyBmcm9tIGhhdmluZyBhIC52ZnIgYW5k IC5jIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBzYW1lIHNjb3BlLg0KDQpFdmVyeWJv ZHk6DQpUaGUgLmMgZmlsZXMgZ2VuZXJhdGVkIChmcm9tIGVpdGhlciAudmZyIG9yIC5hc2wpIGFy ZSBnZW5lcmF0ZWQgaW4gdGhlIEJ1aWxkLy4uLi4vT1VUUFVULyBkaXJlY3RvcnksIHdpdGggdGhl aXIgb3JpZ2luYWwgc3ViZGlyZWN0b3J5IHN0cmlwcGVkLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywg dGhlIC5jLCAudmZyIGFuZCAuYXNsIGZpbGVzIGhhdmUgYmVlbiBwbGFjZWQgaW4gc3ViZGlyZWN0 b3JpZXMgaW4gZWRrMi9lZGsyLXBsYXRmb3Jtcy4gVGhlIHJlY2lwZXMgdGhhdCBoYXZlIGJlZW4g Z2VuZXJhdGVkIGFyZToNCiQoT1VUUFVUX0RJUikvRW1tYy5vYmogOiAkKE9VVFBVVF9ESVIpL0Fz bERpci9FbW1jLmMgKGZyb20gRW1tYy5hc2wpICQoT1VUUFVUX0RJUikvSXA0Q29uZmlnMi5vYmog OiAkKERFQlVHX0RJUikvVmZyRGlyL0lwNENvbmZpZzIuYyAoZnJvbSBJcDRDb25maWcyLnZmcikg JChPVVRQVVRfRElSKS9DRGlyL0VtbWMub2JqIDogJChXT1JLU1BBQ0UpL2VkazItcGxhdGZvcm1z L1NpbGljb24vU29jaW9uZXh0L1N5blF1YWNlci9Ecml2ZXJzL1BsYXRmb3JtRHhlL0NEaXIvRW1t Yy5jIChmcm9tIEVtbWMuYykNCg0KVGhlIG9ubHkgc3ViZGlyZWN0b3J5IHRoYXQgcmVtYWlucyBp cyB0aGUgb25lIGZyb20gdGhlIC5jIGZpbGVzLiBJbmRlZWQsIHRoZSBidWlsZCBzeXN0ZW0gbWln aHQgZGV0ZWN0cyBzdWJkaXJlY3RvcmllcyBmcm9tIHRoZSAuaW5mIGZpbGUgbG9jYXRpb24uIEFz IHRoZSAuYyBmaWxlIGlzIGdlbmVyYXRlZCBpbiB0aGUgT1VUUFVUIGRpcmVjdG9yeSB3aGVyZSB0 aGVyZSBpcyBubyAuaW5mIGZpbGUsIGl0IGdldHMgc3RyaXBwZWQuDQpUaGlzIG1lYW5zIHRoYXQg aWYgYSBzdWJkaXJlY3RvcnkgaXMgY3JlYXRlZCwgaXQgaXMgZm9yIHRoZSAuYyBmaWxlLCBidXQg SSBkb24ndCB0aGluayB3ZSBzaG91bGQgbW9kaWZ5IHRoaXMuDQoNCkFkZGluZyBhIHByZS9wb3N0 Zml4IHRvIHRoZSBnZW5lcmF0ZWQgLmMgZmlsZW5hbWUgc2VlbXMgYSBiZXR0ZXIgYXBwcm9hY2gg dG8gbWUuIEl0IHdvdWxkIHJlcXVpcmUgbW9kaWZ5aW5nIGJ1aWxkX3J1bGUudGVtcGxhdGUsIGFu ZCBjaG9vc2Ugd2hpY2ggcHJlL3Bvc3RmaXggdG8gYWRkLg0KDQpBbm90aGVyIHBvaW50IGlzIHRo YXQgdGhlIC5jIGZpbGUgZ2VuZXJhdGVkIGZyb20gdGhlIC5jIGZpbGUgaXMgcGxhY2VkIGluIHRo ZSAkKERFQlVHX0RJUiksIHdoZW4gdGhlIG9uZSBjb21pbmcgZnJvbSB0aGUgLmFzbCBmaWxlIGlz IHBsYWNlZCBpbiAkKE9VVFBVVF9ESVIpLiBNYXliZSBpdCBzaG91bGQgYmUgbW9kaWZpZWQgdG8g JChERUJVR19ESVIpIGFzd2VsbC4NCg0KUmVnYXJkcywNClBpZXJyZQ0KDQotLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiBPbiBCZWhhbGYgT2YgTGltaW5nIEdhbyB2aWEgZ3JvdXBzLmlvDQpTZW50OiBNb25k YXksIEp1bHkgMjcsIDIwMjAgMzoyMSBQTQ0KVG86IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFp bmMuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IFBpZXJyZSBHb25kb2lzIDxQaWVycmUuR29u ZG9pc0Bhcm0uY29tPjsgTWFzYWhpc2EgS29qaW1hIDxtYXNhaGlzYS5rb2ppbWFAbGluYXJvLm9y Zz4NCkNjOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgVG9tYXMgUGlsYXIg PFRvbWFzLlBpbGFyQGFybS5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+ OyBBcmQgQmllc2hldXZlbCA8QXJkLkJpZXNoZXV2ZWxAYXJtLmNvbT4NClN1YmplY3Q6IFJlOiBb ZWRrMi1kZXZlbF0gW1BBVENIIHY1IDQvNV0gQmFzZVRvb2xzOiBDb21waWxlIEFNTCBieXRlY29k ZSBhcnJheXMgaW50byAub2JqIGZpbGUNCg0KTGVpZjoNCiAgVkZSIGZpbGUgaGFzIHRoZSBzaW1p bGFyIGNhc2UuIFZGUiBpcyBjb252ZXJ0ZWQgdG8geHh4LmMsIHRoZW4gY29tcGlsZSBpdCB0byBv YmogZmlsZS4NCg0KQm9iOg0KICBIYXMgQmFzZVRvb2xzIHN1Y2ggZGV0ZWN0aW9uIGlmIFZGUiBh bmQgQyBzb3VyY2UgZmlsZSBoYXZlIHRoZSBzYW1lIGZpbGUgbmFtZT8NCg0KVGhhbmtzDQpMaW1p bmcNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGVpZiBMaW5kaG9sbSA8 bGVpZkBudXZpYWluYy5jb20+DQo+IFNlbnQ6IE1vbmRheSwgSnVseSAyNywgMjAyMCA5OjU4IFBN DQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgcGllcnJlLmdvbmRvaXNAYXJtLmNvbTsgTWFz YWhpc2EgS29qaW1hIA0KPiA8bWFzYWhpc2Eua29qaW1hQGxpbmFyby5vcmc+DQo+IENjOiBzYW1p Lm11amF3YXJAYXJtLmNvbTsgdG9tYXMucGlsYXJAYXJtLmNvbTsgRmVuZywgQm9iIEMgDQo+IDxi b2IuYy5mZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IEFyZCANCj4gQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbT4NCj4gU3ViamVjdDog UmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjUgNC81XSBCYXNlVG9vbHM6IENvbXBpbGUgQU1MIA0K PiBieXRlY29kZSBhcnJheXMgaW50byAub2JqIGZpbGUNCj4NCj4gSGkgUGllcnJlLCAoK01hc2Fo aXNhKQ0KPg0KPiBUaGlzIGNvbW1pdCAoMGE0YWEyMGU4ZDQ0KSBtYWRlIGZvciBhbiBleGNpdGlu ZyBzdGFydCB0byBteSB3ZWVrLg0KPg0KPiBTb2Npb25leHQncyBEZXZlbG9wZXJib3ggZmFpbGVk IHRvIGJ1aWxkIGZvciBtZSwgd2l0aCB0aGUgc3BlY3RhY3VsYXIgDQo+IGVycm9yIG1lc3NhZ2U6 DQo+DQo+IC91c3IvbGliL2djYy1jcm9zcy9hYXJjaDY0LWxpbnV4LWdudS84Ly4uLy4uLy4uLy4u L2FhcmNoNjQtbGludXgtZ251L2Jpbi9sZDoNCj4gRFdBUkYgZXJyb3I6IGNvdWxkIG5vdCBmaW5k IGFiYnJldiBudW1iZXIgNTkxMg0KPiAvdG1wL2NjS3Q0Z2FNLmx0cmFuczAubHRyYW5zLm86IGlu IGZ1bmN0aW9uIGBSZWdpc3RlckRldmljZXMnOg0KPiA8YXJ0aWZpY2lhbD46KC50ZXh0LlJlZ2lz dGVyRGV2aWNlcysweGIwKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byANCj4gYFJlZ2lzdGVyRW1t YycNCj4NCj4gR0NDNDkgKHdpdGhvdXQgbHRvKSBhbmQgQ0xBTkczOCBwcm9maWxlcyBnaXZlIG11 Y2ggdGhlIHNhbWUgcmVzdWx0LCANCj4gd2l0aCBzbGlnaHRseSBsZXNzIGVzb3RlcmljIG1lc3Nh Z2VzLg0KPg0KPiBUaGUgcmVhc29uIGZvciB0aGlzIHR1cm5lZCBvdXQgdG8gYmUgdGhhdCBlZGsy LXBsYXRmb3JtcyANCj4gU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0RyaXZlcnMvUGxhdGZv cm1EeGUvIGhhcyBib3RoIGFuIEVtbWMuYXNsIA0KPiBhbmQgYW4gRW1tYy5jIGZpbGUsIHdoaWNo IGFmdGVyIHRoaXMgcGF0Y2ggYm90aCBnZW5lcmF0ZSBhbiBFbW1jLm9iaiANCj4gaW4gdGhlIHNh bWUgb3V0cHV0IGRpcmVjdG9yeS4NCj4NCj4gSSB0aGluayB0aGUgY29ycmVjdCBjb3Vyc2Ugb2Yg YWN0aW9uIGlzIHRvIGZpeCB0aGlzIGluIHRoZSBTeW5RdWFjZXIgDQo+IGRyaXZlciwgYnV0IEkg YW0gcmVwb3J0aW5nIGl0IGhlcmUgc28gd2UgZ2V0IGl0IGxvZ2dlZCBpbiB0aGUgbGlzdCANCj4g YXJjaGl2ZXMuDQo+DQo+IEl0IHdvdWxkIG9mIGNvdXJzZSBiZSBnb29kIGlmIHRoZSBidWlsZCBz eXN0ZW0gY291bGQgZGV0ZWN0IGFuZCB3YXJuIA0KPiBvdmVyIGNhc2VzIGxpa2UgdGhpcywgcmF0 aGVyIHRoYW4gc2lsZW50bHkgb3ZlcndyaXRpbmcgZXhpc3Rpbmcgb2JqZWN0IA0KPiBmaWxlcy4N Cj4NCj4gTWFzYWhpc2EgLSBzaW5jZSBBcmQgaXMgc3RpbGwgb24gaG9saWRheSwgY291bGQgeW91 IGNyZWF0ZSBhIHBhdGNoIGFuZCANCj4gc2VuZCBvdXQgZm9yIG1lIHRvIHJldmlldz8gRWl0aGVy IG9uZSBvZiB0aGUgZmlsZXMgbmVlZHMgdG8gYmUgDQo+IHJlbmFtZWQsIG9yIHdlIG5lZWQgdG8g bW92ZSB0aGUgLmFzbCBmaWxlcyAoRW1tYy5hc2wgYW5kIE9wdGVlLmFzbCkgDQo+IGludG8gYSBz dWJkaXJlY3RvcnkuDQo+DQo+IEJlc3QgUmVnYXJkcywNCj4NCj4gTGVpZg0KPg0KPiBPbiBXZWQs IEp1bCAwMSwgMjAyMCBhdCAxNTowNjowMyArMDEwMCwgUGllcnJlR29uZG9pcyB3cm90ZToNCj4g PiBGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gPg0KPiA+ IFRoZSBBbWxUb0hleCBzY3JpcHQgYW5kIFBvc2l4L1dpbmRvd3NMaWtlIHdyYXBwZXJzIGNvbnZl cnQgYW4gQU1MIA0KPiA+IGZpbGUgdG8gYSAuaGV4IGZpbGUsIGNvbnRhaW5pbmcgYSBDIGFycmF5 IHN0b3JpbmcgQU1MIGJ5dGVjb2RlLiBUaGlzIA0KPiA+ICIuaGV4IiBmaWxlIGNhbiB0aGVuIGJl IGluY2x1ZGVkIGluIGEgQyBmaWxlLCBhbGxvd2luZyB0byBhY2Nlc3MgdGhlIA0KPiA+IEFNTCBi eXRlY29kZSBmcm9tIHRoaXMgQyBmaWxlLg0KPiA+DQo+ID4gVGhlIEVESzIgYnVpbGQgc3lzdGVt IGRvZXNuJ3QgYWxsb3cgdG8gYSBkZXBpY3QgZGVwZW5kZW5jeSBvcmRlcnMgDQo+ID4gYmV0d2Vl biBmaWxlcyBvZiBkaWZmZXJlbnQgbGFuZ3VhZ2VzLiBGb3IgaW5zdGFuY2UsIGluIGEgbW9kdWxl IA0KPiA+IGNvbnRhaW5pbmcgYSAiLmMiIGZpbGUgYW5kIGEgIi5hc2wiLCB0aGUgIi5jIg0KPiA+ IGZpbGUgbWF5IG9yIG1heSBub3QgYmUgYnVpbHQgcHJpb3IgdG8gdGhlICIuYXNsIiBmaWxlLg0K PiA+IFRoaXMgcHJldmVudHMgYW55IGluY2x1c2lvbiBvZiBhIGdlbmVyYXRlZCAiLmhleCIgaW4g YSAiLmMiIGZpbGUgDQo+ID4gc2luY2UgdGhpcyBsYXRlciAiLmhleCIgZmlsZSBtYXkgb3IgbWF5 IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIG1vZGlmaWVz IHRoZSBBbWxUb0Mgc2NyaXB0IHRvIGdlbmVyYXRlIGEgQyBmaWxlIGluc3RlYWQgDQo+ID4gb2Yg YSAiLmhleCIgZmlsZS4NCj4gPiBJdCBhbHNvIGFkZHMgdGhlIGdlbmVyYXRpb24gb2YgYW4gaW50 ZXJtZWRpYXRlICIuYW1saSIgZmlsZSB3aGVuIA0KPiA+IGNvbXBpbGluZyBhbiBBU0wgZmlsZSwg YW5kIGFkZHMgYSBydWxlIHRvIGNvbnZlcnQgdGhpcyAiLmFtbGkiIHRvIGEgDQo+ID4gQyBmaWxl Lg0KPiA+DQo+ID4gVGhpcyBhbGxvd3MgdG8gZ2VuZXJhdGUgYSBDIGZpbGUgY29udGFpbmluZyB0 aGUgQU1MIGJ5dGVjb2RlIGZyb20gYW4gDQo+ID4gQVNMIGZpbGUuIFRoaXMgQyBmaWxlIHdpbGwg dGhlbiBiZSBoYW5kbGVkIGJ5IHRoZSBFREsyIGJ1aWxkIHN5c3RlbSANCj4gPiB0byBnZW5lcmF0 ZSBhbiBvYmplY3QgZmlsZS4NCj4gPiBUaHVzLCBubyBmaWxlIGluY2x1c2lvbiB3aWxsIGJlIHJl cXVpcmVkIGFueW1vcmUuIFRoZSBDIGZpbGUgDQo+ID4gcmVxdWlyaW5nIHRoZSBBTUwgYnl0ZWNv ZGUgYXMgYSBDIGFycmF5LCBhbmQgdGhlIEFTTCBmaWxlLCB3aWxsIGJlIA0KPiA+IGNvbXBpbGVk IGluZGVwZW5kZW50bHkuIFRoZSBDIGFycmF5IG11c3QgYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5h bCANCj4gPiBzeW1ib2wuIFRoZSBsaW5rZXIgaXMgcmVzb2x2aW5nIHRoZSByZWZlcmVuY2UgdG8g dGhlIEMgYXJyYXkgc3ltYm9sLg0KPiA+DQo+ID4gVG8gc3VtbWFyaXplLCB0aGUgZmxvdyBnb2Vz IGFzOg0KPiA+ICAtMS4gQVNMIGZpbGUgaXMgY29tcGlsZWQgdG8gQU1MOw0KPiA+ICAtMi4gQU1M IGZpbGUgaXMgY29waWVkIHRvIGEgIi5hbWxpIiBpbnRlcm1lZGlhdGUgZmlsZTsgIC0zLiBFREsy IA0KPiA+IGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBydWxlIHJlbGV2YW50IHRvICIuYW1saSIN Cj4gPiAgICAgIGZpbGVzLiBUaGlzIGlzLCBjYWxsaW5nIHRoZSAiQW1sVG9DIiBzY3JpcHQsIGdl bmVyYXRpbmcNCj4gPiAgICAgIGEgQyBmaWxlIGZyb20gdGhlICIuYW1saSIgZmlsZTsgIC00LiBF REsyIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIA0KPiA+IHRoZSBydWxlIHJlbGV2YW50IHRvIEMgZmls ZXMuDQo+ID4gICAgICBUaGlzIGlzIGNyZWF0aW5nIGFuIG9iamVjdCBmaWxlLg0KPiA+ICAtNS4g RURLMiBidWlsZCBzeXN0ZW0gbGlua3MgdGhlIG9iamVjdCBmaWxlIGNvbnRhaW5pbmcgdGhlDQo+ ID4gICAgICBBTUwgYnl0ZWNvZGUgd2l0aCB0aGUgb2JqZWN0IGZpbGUgcmVxdWlyaW5nIGl0Lg0K PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUGllcnJlIEdvbmRvaXMgPFBpZXJyZS5Hb25kb2lzQGFy bS5jb20+DQo+ID4gU3VnZ2VzdGVkLWJ5OiBUb21hcyBQaWxhciA8VG9tYXMuUGlsYXJAYXJtLmNv bT4NCj4gPiAtLS0NCj4gPg0KPiA+IFRoZSBjaGFuZ2VzIGNhbiBiZSBzZWVuIGF0Og0KPiA+IGh0 dHBzOi8vZ2l0aHViLmNvbS9QaWVycmVBUk0vZWRrMi9jb21taXRzLzgwM19Db21waWxlX0FNTF9i eXRlY29kZV9hDQo+ID4gcnJheV9pbnRvX09CSl9maWxlX3Y1DQo+ID4NCj4gPiBOb3RlczoNCj4g PiAgICAgdjE6DQo+ID4gICAgICAtIEFkZCBhIG5ldyBydWxlIHRvIHRoZSBidWlsZF9ydWxlLnRl bXBsYXRlIGZpbGUgdG8NCj4gPiAgICAgICAgZ2VuZXJhdGUgIi5vYmoiIGZpbGVzIGZyb20gLmFz bCBmaWxlcywgYW5kIG1vZGlmeQ0KPiA+ICAgICAgICB0aGUgQW1sVG9DIHNjcmlwdCBhY2NvcmRp bmdseS4gW1BpZXJyZV0NCj4gPiAgICAgdjI6DQo+ID4gICAgICAtIFJlc3RyaWN0IHRoZSBydWxl IHRvIERYRV9EUklWRVIuIFRoaXMgYWxsb3dzIHRvIGJ1aWxkDQo+ID4gICAgICAgIHRoZSBPdm1m UGtnLCB3aGljaCB3YXMgbm90IHRoZSBjYXNlIGluIHYxLiBbUGllcnJlXQ0KPiA+ICAgICB2MzoN Cj4gPiAgICAgIC0gQ2hhbmdlZCAiU2lnbmVkLW9mZi1ieSIgdG8gIlN1Z2dlc3RlZC1ieSIuIFtC b2JdDQo+ID4gICAgIHY0Og0KPiA+ICAgICAtIE5vIG1vZGlmaWNhdGlvbi4gUmUtc2VuZGluZyB0 aGUgcGF0Y2ggd2l0aCBiYXNlNjQNCj4gPiAgICAgICBlbmNvZGluZyB0byBjb25zZXJ2ZSB0aGUg cmlnaHQgbGluZSBlbmRpbmdzLiBbQm9iXQ0KPiA+ICAgICB2NToNCj4gPiAgICAgIC0gTm8gbW9k aWZpY2F0aW9uLiBbUGllcnJlXQ0KPiA+DQo+ID4gIEJhc2VUb29scy9Db25mL2J1aWxkX3J1bGUu dGVtcGxhdGUgICAgICAgfCAxNSArKystDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Ft bFRvQy9BbWxUb0MucHkgfCA4MiArKysrKysrKy0tLS0tLS0tLS0tLQ0KPiA+ICAyIGZpbGVzIGNo YW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gPiBiL0Jhc2VUb29s cy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gPiBpbmRleA0KPiA+IDA4MjJiNjgxZmNkOWY2 MWM2NTA4ZTZmOTNmZmMzMWZhNzBmZDcwNTkuLmMwMzQ4Njk5MTU5MTQ5MzZlMjhmNjRhNmFhDQo+ ID4gZGJhMDhlMDE2OWRhNDQgMTAwNzU1DQo+ID4gLS0tIGEvQmFzZVRvb2xzL0NvbmYvYnVpbGRf cnVsZS50ZW1wbGF0ZQ0KPiA+ICsrKyBiL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxh dGUNCj4gPiBAQCAtNDE5LDYgKzQxOSw3IEBADQo+ID4NCj4gPiAgICAgIDxPdXRwdXRGaWxlPg0K PiA+ICAgICAgICAgICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4g PiArICAgICAgICAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KPiA+ DQo+ID4gICAgICA8RXh0cmFEZXBlbmRlbmN5Pg0KPiA+ICAgICAgICAgICQoTUFLRV9GSUxFKQ0K PiA+IEBAIC00MjgsMTQgKzQyOSwyNCBAQA0KPiA+ICAgICAgICAgICIkKEFTTFBQKSIgJChERVBT X0ZMQUdTKSAkKEFTTFBQX0ZMQUdTKSAkKElOQykgL0kke3NfcGF0aH0gDQo+ID4gJChPVVRQVVRf RElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmkgPg0KPiAkKE9VVFBVVF9ESVIpKCspJHtzX2Rp cn0oKykke3NfYmFzZX0uaWlpDQo+ID4gICAgICAgICAgVHJpbSAtLXNvdXJjZS1jb2RlIC1sIC1v ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWlpICQoT1VUUFVUX0RJUiko Kykke3NfZGlyfSgrKSR7c19iYXNlfS5paWkNCj4gPiAgICAgICAgICAiJChBU0wpIiAkKEFTTF9G TEFHUykgJChBU0xfT1VURkxBR1MpJHtkc3R9ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7 c19iYXNlfS5paWlpDQo+ID4gLSAgICAgICAgLUFtbFRvSGV4ICQoT1VUUFVUX0RJUikoKykke3Nf ZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4gPiArICAgICAgICAkKENQKSAkKE9VVFBVVF9ESVIpKCsp JHtzX2Rpcn0oKykke3NfYmFzZX0uYW1sDQo+ID4gKyAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0o Kykke3NfYmFzZX0uYW1saQ0KPiA+DQo+ID4gICAgICA8Q29tbWFuZC5HQ0M+DQo+ID4gICAgICAg ICAgVHJpbSAtLWFzbC1maWxlIC0tYXNsLWRlcHMgLW8gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9 KCspJHtzX2Jhc2V9LmkgLWkgJChJTkNfTElTVCkgJHtzcmN9DQo+ID4gICAgICAgICAgIiQoQVNM UFApIiAkKERFUFNfRkxBR1MpICQoQVNMUFBfRkxBR1MpICQoSU5DKSAtSSR7c19wYXRofSANCj4g PiAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaSA+DQo+ICQoT1VUUFVUX0RJ UikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWkNCj4gPiAgICAgICAgICBUcmltIC0tc291cmNl LWNvZGUgLWwgLW8gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkgJChP VVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaQ0KPiA+ICAgICAgICAgICIkKEFT TCkiICQoQVNMX0ZMQUdTKSAkKEFTTF9PVVRGTEFHUykke2RzdH0gJChPVVRQVVRfRElSKSgrKSR7 c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkNCj4gPiAtICAgICAgICAtQW1sVG9IZXggJChPVVRQVVRf RElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiA+ICsgICAgICAgICQoQ1ApICQoT1VU UFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4gPiArICQoT1VUUFVUX0RJUiko Kykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWxpDQo+ID4gKw0KPiA+ICtbQWNwaS1NYWNoaW5lLUxh bmd1YWdlLUZpbGUtdG8tQy5EWEVfRFJJVkVSXQ0KPiA+ICsgICAgPElucHV0RmlsZT4NCj4gPiAr ICAgICAgICA/LmFtbGkNCj4gPiArDQo+ID4gKyAgICA8T3V0cHV0RmlsZT4NCj4gPiArICAgICAg ICAke3NfcGF0aH0oKykke3NfYmFzZX0uYw0KPiA+ICsNCj4gPiArICAgIDxDb21tYW5kPg0KPiA+ ICsgICAgICAgIC1BbWxUb0MgJHtzcmN9DQo+ID4NCj4gPiAgW0MtQ29kZS1GaWxlLkFjcGlUYWJs ZV0NCj4gPiAgICAgIDxJbnB1dEZpbGU+DQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0FtbFRvQy9BbWxUb0MucHkNCj4gPiBpbmRleA0KPiA+IDY0M2RiMjkxMGUzN2FjZmRkODBhYzE4 ZDI4OGM5MjEzMjBhNzljZTEuLjM0NmRlNzE1OWRlNzAyZDg2MGJiZDgwOWRkDQo+ID4gYmU4MTc1 ZjE0OTNjZmIgMTAwNjQ0DQo+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9D L0FtbFRvQy5weQ0KPiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxU b0MucHkNCj4gPiBAQCAtMSw5ICsxLDkgQEANCj4gPiAgIyMgQGZpbGUNCj4gPiAgIw0KPiA+IC0j IENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5 dGVjb2RlIA0KPiA+IHN0b3JlZCBpbiBhDQo+ID4gKyMgQ29udmVydCBhbiBBTUwgZmlsZSB0byBh IC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIA0KPiA+ICtzdG9yZWQgaW4gYQ0K PiA+ICAjIEMgYXJyYXkuDQo+ID4gLSMgQnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2ls bCBnZW5lcmF0ZSAiVGFibGVzXERzZHQuaGV4Ii4NCj4gPiAtIyAiVGFibGVzXERzZHQuaGV4IiB3 aWxsIGNvbnRhaW4gYSBDIGFycmF5IG5hbWVkICJkc2R0X2FtbF9jb2RlIg0KPiA+IHRoYXQgY29u dGFpbnMNCj4gPiArIyBCeSBkZWZhdWx0LCAiVGFibGVzXERzZHQuYW1sIiB3aWxsIGdlbmVyYXRl ICJUYWJsZXNcRHNkdC5jIi4NCj4gPiArIyAiVGFibGVzXERzZHQuYyIgd2lsbCBjb250YWluIGEg QyBhcnJheSBuYW1lZCAiZHNkdF9hbWxfY29kZSIgdGhhdCANCj4gPiArY29udGFpbnMNCj4gPiAg IyB0aGUgQU1MIGJ5dGVjb2RlLg0KPiA+ICAjDQo+ID4gICMgQ29weXJpZ2h0IChjKSAyMDIwLCBB Uk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+IEBADQo+ID4gLTE3LDMxICsxNywy NiBAQCBmcm9tIENvbW1vbi5CdWlsZFRvb2xFcnJvciBpbXBvcnQgKiAgaW1wb3J0IHN5cyANCj4g PiBpbXBvcnQgb3MNCj4gPg0KPiA+ICtfX2Rlc2NyaXB0aW9uX18gPSAiIiINCj4gPiArQ29udmVy dCBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0 b3JlZCANCj4gPiAraW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0LCBUYWJsZXNcRHNkdC5hbWwgd2ls bCBnZW5lcmF0ZSBUYWJsZXNcRHNkdC5jLg0KPiA+ICtUYWJsZXNcRHNkdC5jIHdpbGwgY29udGFp biBhIEMgYXJyYXkgbmFtZWQgImRzZHRfYW1sX2NvZGUiIHRoYXQgDQo+ID4gK2NvbnRhaW5zIHRo ZSBBTUwgYnl0ZWNvZGUuDQo+ID4gKyIiIg0KPiA+ICsNCj4gPiAgIyMgUGFyc2UgdGhlIGNvbW1h bmQgbGluZSBhcmd1bWVudHMuDQo+ID4gICMNCj4gPiAgIyBAcmV0dmFsIEEgYXJncGFyc2UuTmFt ZVNwYWNlIGluc3RhbmNlLCBjb250YWluaW5nIHBhcnNlZCB2YWx1ZXMuDQo+ID4gICMNCj4gPiAg ZGVmIFBhcnNlQXJncygpOg0KPiA+ICAgICAgIyBJbml0aWFsaXplIHRoZSBwYXJzZXIuDQo+ID4g LSAgICBQYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigNCj4gPiAtICAgICAgZGVzY3Jp cHRpb249IkNvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUg QU1MICIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICJieXRlY29kZSBzdG9yZWQgaW4gYSBD IGFycmF5LiBCeSBkZWZhdWx0LCAiICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAiXCJUYWJs ZXNcXERzZHQuYW1sXCIgd2lsbCBnZW5lcmF0ZSIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAg ICJcIlRhYmxlc1xcRHNkdC5oZXhcIi4gXCJUYWJsZXNcXERzZHQuaGV4XCIgd2lsbCAiICsgXA0K PiA+IC0gICAgICAgICAgICAgICAgICAiY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgXCJkc2R0X2Ft bF9jb2RlXCIgdGhhdCAiICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAiY29udGFpbnMgdGhl IEFNTCBieXRlY29kZS4iDQo+ID4gLSAgICAgICkNCj4gPiArICAgIFBhcnNlciA9IGFyZ3BhcnNl LkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZGVzY3JpcHRpb25fXykNCj4gPg0KPiA+ICAg ICAgIyBEZWZpbmUgdGhlIHBvc3NpYmxlIGFyZ3VtZW50cy4NCj4gPiAtICAgIFBhcnNlci5hZGRf YXJndW1lbnQoDQo+ID4gLSAgICAgIGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gLSAgICAgIGhlbHA9 IlBhdGggdG8gYW4gaW5wdXQgQU1MIGZpbGUgdG8gZ2VuZXJhdGUgYSAuaGV4IGZpbGUgZnJvbS4i DQo+ID4gLSAgICAgICkNCj4gPiAtICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4gLSAgICAg ICItbyIsICItLW91dC1kaXIiLCBkZXN0PSJPdXREaXIiLA0KPiA+IC0gICAgICBoZWxwPSJPdXRw dXQgZGlyZWN0b3J5IHdoZXJlIHRoZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuICIgKyBc DQo+ID4gLSAgICAgICAgICAgIkRlZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3Rvcnku Ig0KPiA+IC0gICAgICApDQo+ID4gKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9IklucHV0 RmlsZSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gYW4gaW5w dXQgQU1MIGZpbGUgdG8gZ2VuZXJhdGUgYSAuYyBmaWxlIGZyb20uIikNCj4gPiArICAgIFBhcnNl ci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tb3V0LWRpciIsIGRlc3Q9Ik91dERpciIsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5j IGZpbGUgDQo+ID4gKyB3aWxsIGJlIGdlbmVyYXRlZC4gRGVmYXVsdCBpcyB0aGUgaW5wdXQgZmls ZSdzIGRpcmVjdG9yeS4iKQ0KPiA+DQo+ID4gICAgICAjIFBhcnNlIHRoZSBpbnB1dCBhcmd1bWVu dHMuDQo+ID4gICAgICBBcmdzID0gUGFyc2VyLnBhcnNlX2FyZ3MoKQ0KPiA+IEBAIC01NSw5ICs1 MCw3IEBAIGRlZiBQYXJzZUFyZ3MoKToNCj4gPiAgICAgICAgICB3aXRoIG9wZW4oQXJncy5JbnB1 dEZpbGUsICJyYiIpIGFzIGZJbjoNCj4gPiAgICAgICAgICAgICAgU2lnbmF0dXJlID0gc3RyKGZJ bi5yZWFkKDQpKQ0KPiA+ICAgICAgICAgICAgICBpZiAoIkRTRFQiIG5vdCBpbiBTaWduYXR1cmUp IGFuZCAoIlNTRFQiIG5vdCBpbiBTaWduYXR1cmUpOg0KPiA+IC0gICAgICAgICAgICAgICAgRWRr TG9nZ2VyLmluZm8oIkludmFsaWQgZmlsZSB0eXBlLiAiICsgXA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJGaWxlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCAiICsgXA0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEU0RUIG9yIFNTRFQgc2lnbmF0dXJl OiAlcyIgJSBBcmdzLklucHV0RmlsZSkNCj4gPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5p bmZvKCJJbnZhbGlkIGZpbGUgdHlwZS4gRmlsZSBkb2VzIG5vdCANCj4gPiArIGhhdmUgYSB2YWxp ZCBEU0RUIG9yIFNTRFQgc2lnbmF0dXJlOiB7fSIuZm9ybWF0KEFyZ3MuSW5wdXRGaWxlKSkNCj4g PiAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiAgICAgICMgR2V0IHRoZSBi YXNlbmFtZSBvZiB0aGUgaW5wdXQgZmlsZS4NCj4gPiBAQCAtNjYsNDIgKzU5LDM5IEBAIGRlZiBQ YXJzZUFyZ3MoKToNCj4gPg0KPiA+ICAgICAgIyBJZiBubyBvdXRwdXQgZGlyZWN0b3J5IGlzIHNw ZWNpZmllZCwgb3V0cHV0IHRvIHRoZSBpbnB1dCBkaXJlY3RvcnkuDQo+ID4gICAgICBpZiBub3Qg QXJncy5PdXREaXI6DQo+ID4gLSAgICAgICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2lu KA0KPiA+IC0gICAgICAgICAgb3MucGF0aC5kaXJuYW1lKEFyZ3MuSW5wdXRGaWxlKSwNCj4gPiAt ICAgICAgICAgIEJhc2VOYW1lICsgIi5oZXgiDQo+ID4gLSAgICAgICAgICApDQo+ID4gKyAgICAg ICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShBcmdzLklu cHV0RmlsZSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJh c2VOYW1lICsgIi5jIikNCj4gPiAgICAgIGVsc2U6DQo+ID4gICAgICAgICAgaWYgbm90IG9zLnBh dGguZXhpc3RzKEFyZ3MuT3V0RGlyKToNCj4gPiAgICAgICAgICAgICAgb3MubWtkaXIoQXJncy5P dXREaXIpDQo+ID4gLSAgICAgICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2luKEFyZ3Mu T3V0RGlyLCBCYXNlTmFtZSArICIuaGV4IikNCj4gPiArICAgICAgICBBcmdzLk91dHB1dEZpbGUg PSBvcy5wYXRoLmpvaW4oQXJncy5PdXREaXIsIEJhc2VOYW1lICsNCj4gPiArICIuYyIpDQo+ID4N Cj4gPiAgICAgIEFyZ3MuQmFzZU5hbWUgPSBCYXNlTmFtZQ0KPiA+DQo+ID4gICAgICByZXR1cm4g QXJncw0KPiA+DQo+ID4gLSMjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29u dGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIA0KPiA+IHN0b3JlZA0KPiA+ICsjIyBDb252ZXJ0IGFu IEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgDQo+ID4g K3N0b3JlZA0KPiA+ICAjICBpbiBhIEMgYXJyYXkuDQo+ID4gICMNCj4gPiAgIyBAcGFyYW0gIElu cHV0RmlsZSAgICAgUGF0aCB0byB0aGUgaW5wdXQgQU1MIGZpbGUuDQo+ID4gLSMgQHBhcmFtICBP dXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuaGV4IGZpbGUgdG8gZ2VuZXJhdGUuDQo+ ID4gKyMgQHBhcmFtICBPdXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuYyBmaWxlIHRv IGdlbmVyYXRlLg0KPiA+ICAjIEBwYXJhbSAgQmFzZU5hbWUgICAgICBCYXNlIG5hbWUgb2YgdGhl IGlucHV0IGZpbGUuDQo+ID4gLSMgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYWxzbyB0 aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5oZXggZmlsZS4NCj4gPiArIyAgICAgICAgICAgICAg ICAgICAgICAgVGhpcyBpcyBhbHNvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgLmMgZmlsZS4N Cj4gPiAgIw0KPiA+IC1kZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFt ZSk6DQo+ID4gK2RlZiBBbWxUb0MoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFtZSk6DQo+ ID4NCj4gPiAtICAgIE1hY3JvTmFtZSA9ICJfX3t9X0hFWF9fIi5mb3JtYXQoQmFzZU5hbWUudXBw ZXIoKSkNCj4gPiAgICAgIEFycmF5TmFtZSA9IEJhc2VOYW1lLmxvd2VyKCkgKyAiX2FtbF9jb2Rl Ig0KPiA+ICsgICAgRmlsZUhlYWRlciA9XA0KPiA+ICsiIiINCj4gPiArLy8gVGhpcyBmaWxlIGhh cyBiZWVuIGdlbmVyYXRlZCBmcm9tOg0KPiA+ICsvLyAgIC1QeXRob24gc2NyaXB0OiB7fQ0KPiA+ ICsvLyAgIC1JbnB1dCBBTUwgZmlsZToge30NCj4gPiArDQo+ID4gKyIiIg0KPiA+DQo+ID4gICAg ICB3aXRoIG9wZW4oSW5wdXRGaWxlLCAicmIiKSBhcyBmSW4sIG9wZW4oT3V0cHV0RmlsZSwgInci KSBhcyBmT3V0Og0KPiA+ICAgICAgICAgICMgV3JpdGUgaGVhZGVyLg0KPiA+IC0gICAgICAgIGZP dXQud3JpdGUoIi8vIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbTpcbiIgKyBcDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAiLy8gXHRQeXRob24gc2NyaXB0OiAiICsgXA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSArICJcbiIgKyBcDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAiLy8gXHRJbnB1dCBBTUwgZmlsZTogIiArIFwNCj4gPiAt ICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChJbnB1dEZpbGUpICsgIlxuXG4iICsg XA0KPiA+IC0gICAgICAgICAgICAgICAgICAgIiNpZm5kZWYge31cbiIuZm9ybWF0KE1hY3JvTmFt ZSkgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB7fVxuXG4iLmZvcm1hdChN YWNyb05hbWUpDQo+ID4gLSAgICAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAgZk91dC53 cml0ZShGaWxlSGVhZGVyLmZvcm1hdChvcy5wYXRoLmFic3BhdGgoSW5wdXRGaWxlKSwNCj4gPiAr IG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQ0KPiA+DQo+ID4gICAgICAgICAgIyBXcml0ZSB0 aGUgYXJyYXkgYW5kIGl0cyBjb250ZW50Lg0KPiA+ICAgICAgICAgIGZPdXQud3JpdGUoInVuc2ln bmVkIGNoYXIge31bXSA9IHt7XG4gICIuZm9ybWF0KEFycmF5TmFtZSkpIA0KPiA+IEBAIC0xMTUs MTUgKzEwNSwxMiBAQCBkZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFt ZSk6DQo+ID4gICAgICAgICAgICAgIGJ5dGUgPSBmSW4ucmVhZCgxKQ0KPiA+ICAgICAgICAgIGZP dXQud3JpdGUoIlxufTtcbiIpDQo+ID4NCj4gPiAtICAgICAgICAjIFdyaXRlIGZvb3Rlci4NCj4g PiAtICAgICAgICBmT3V0LndyaXRlKCIjZW5kaWYgLy8ge31cbiIuZm9ybWF0KE1hY3JvTmFtZSkp DQo+ID4gLQ0KPiA+ICAjIyBNYWluIG1ldGhvZA0KPiA+ICAjDQo+ID4gICMgVGhpcyBtZXRob2Q6 DQo+ID4gICMgICAxLSAgSW5pdGlhbGl6ZSBhbiBFZGtMb2dnZXIgaW5zdGFuY2UuDQo+ID4gICMg ICAyLSAgUGFyc2VzIHRoZSBpbnB1dCBhcmd1bWVudHMuDQo+ID4gLSMgICAzLSAgQ29udmVydHMg YW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0 b3JlZA0KPiA+ICsjICAgMy0gIENvbnZlcnRzIGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250 YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3RvcmVkDQo+ID4gICMgICAgICAgaW4gYSBDIGFycmF5 Lg0KPiA+ICAjDQo+ID4gICMgQHJldHZhbCAwICAgICBTdWNjZXNzLg0KPiA+IEBAIC0xMzksMTAg KzEyNiw5IEBAIGRlZiBNYWluKCk6DQo+ID4gICAgICAgICAgaWYgbm90IENvbW1hbmRBcmd1bWVu dHM6DQo+ID4gICAgICAgICAgICAgIHJldHVybiAxDQo+ID4NCj4gPiAtICAgICAgICAjIENvbnZl cnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2Rl IHN0b3JlZA0KPiA+ICsgICAgICAgICMgQ29udmVydCBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUg Y29udGFpbmluZyB0aGUgQU1MIA0KPiA+ICsgYnl0ZWNvZGUgc3RvcmVkDQo+ID4gICAgICAgICAg IyBpbiBhIEMgYXJyYXkuDQo+ID4gLSAgICAgICAgQW1sVG9IZXgoQ29tbWFuZEFyZ3VtZW50cy5J bnB1dEZpbGUsIENvbW1hbmRBcmd1bWVudHMuT3V0cHV0RmlsZSwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICBDb21tYW5kQXJndW1lbnRzLkJhc2VOYW1lKQ0KPiA+ICsgICAgICAgIEFt bFRvQyhDb21tYW5kQXJndW1lbnRzLklucHV0RmlsZSwNCj4gPiArIENvbW1hbmRBcmd1bWVudHMu T3V0cHV0RmlsZSwgQ29tbWFuZEFyZ3VtZW50cy5CYXNlTmFtZSkNCj4gPiAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToNCj4gPiAgICAgICAgICBwcmludChlKQ0KPiA+ICAgICAgICAgIHJldHVy biAxDQo+ID4gLS0NCj4gPiAnR3VpZChDRTE2NTY2OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3 NTkpJw0KPiA+DQo+ID4NCg0KDQoNCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0 aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFs c28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwg cGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2Ug dGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2Us IG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlv dS4NCg0KDQoNCg==