From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 33278385742B for ; Mon, 16 Aug 2021 15:39:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 33278385742B Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17GFW8ND011245; Mon, 16 Aug 2021 15:39:31 GMT Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3afgmb9e1q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Aug 2021 15:39:30 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17GFUkXE052500; Mon, 16 Aug 2021 15:39:29 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2109.outbound.protection.outlook.com [104.47.70.109]) by aserp3020.oracle.com with ESMTP id 3ae5n5w6jx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Aug 2021 15:39:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yv/O/AIiavUVFHFPnpVGurhRsJpUH29qeTo5NXn2M75Gr0p0g98GpR/+2No8qWi1c2TBe4X32gSaBdngvurWmnvAGNeUE5RKrbLWHsoMIaJG3EciSSjCPs00kGgFvuQROq/fr2qMheXcalqfbOKhd07emwuhmELgA+wPTzhGAb1eqOuSNscBvjbgUlzEv9nQUGcc3bdPckY9Kqy+h4ZzYxbcZZjqhRcMtjjqmqYwtY+XTUq583/L9ED324gsz+ZjzigRyaKgU0cHkpFk3/75y/l4mPwcbJXn6M/9Fpdzse8GzRerj9UOSWGLpddSEHyXQCUyNkLA2AQzwn3eVlh1Uw== 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=mFzf9cJBpyt20A0mqu1AuM5jlkvtOiHO9CvnuqFwgDM=; b=Dy7/kS7gTM86EMzVeaBMwE+4148iy7rtyQ8UOv7k2V8jZqMneGqeEImY8I7ckTCBu9x5s2q6t0sqocrexpxJu7N7d4THbmnr/1g50+CCVyF10vMnqcl+SZYN9UdtBiLJhgXqUKktV/Sf6ybf0CiiPBiNV6CbHAuca6yLt93JUe1ITZm6NSgFYcr0HotYmqdVvSIxi0/YIygowMzf6diS7pz1ZMcHX2VsUAAJMTRSWaPTeu31pCFQo0W/etkdfSZ256EU3lYuJJLIt5ZpGDvxmoDcRJ1tgWWv7QIP32QW2ZCkoLpB1+y2GsncbAZ3xHWCZmBgO2qHenupp1Hr0OmquQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH0PR10MB4843.namprd10.prod.outlook.com (2603:10b6:610:cb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.17; Mon, 16 Aug 2021 15:39:27 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547%9]) with mapi id 15.20.4415.023; Mon, 16 Aug 2021 15:39:27 +0000 From: Qing Zhao To: Richard Biener CC: Jakub Jelinek , Richard Sandiford , Nick Alcock via Gcc-patches , Kees Cook Subject: Re: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgpcfj6SO0Rka1UmU0GU91mFncqtrSzIAgAApjACAAPr8gIAAZYMAgAAKVgCAAAy9gIAABZoAgABR/YCAACR6AIAAkCQAgABtVACAAAEPAIAABLkAgAABQACAABmfAIAABkYAgAAIEICAAAlUAIAAPDYAgAAZ9wCABuLEgIAAfwqAgAAFuQCAAAi8gA== Date: Mon, 16 Aug 2021 15:39:26 +0000 Message-ID: References: <52E29277-1403-4755-901A-528116C43FB8@oracle.com> <6FD42B95-F73D-4B75-B83A-BAC4925B1714@oracle.com> <28A70D41-58C6-49FF-BDA9-661F36A2D795@oracle.com> <7CCB41E9-6807-4E6D-ABFB-C1DE73A9BEF1@oracle.com> <459A689F-039B-4298-881A-540A39418C13@suse.de> In-Reply-To: <459A689F-039B-4298-881A-540A39418C13@suse.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e07148db-ec26-4756-7746-08d960cc081a x-ms-traffictypediagnostic: CH0PR10MB4843: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: I18Cq9eezW7zq0dNDyKBgpAxTj2SaUH725DGa6TGuV2yxtDrltOEIz64WXDZAWQh4WnAxr3t2AXlJgbLSns1AEW2LU8o8i5cFRTxcqT/qLjh48JKeC07OLFdg+9EBoEnWkMwcmcpVadHi6ps3Zh2bYxT3EIadWRK+E05aiGr6z2GKin76PIuDk+HVu8drtrYK8tM86SSR6o9aC8QrHPZr292cy4jQGSzmNKWB6QDK+e9WqzMa5uqyewsmgYtU58GFeua44BlcDaPzGPJPtcaDqL+pIF06Xz2HUTOFxZ2lpkaK7OhWJpDkaWSvZU27bLoMDqAkX0FkMxZxjFrtQt7fx3fLU9DEW1R0U1opIB9jha0V4iCWX58BfU2E/Yj6iqGkTsYCih0PVGxwXZAs6PYucIkfG37LsmMOWqtGCafbfqAxAWt3h2+R7OmM5QdzTvprCer6tcLcovW3rR075NY+UltIvX3j0gC5jsyC1zybhzC4NYcMjJyJLk5p3ylIFyf7fcHRZ6elqyFMIYQ0vsLXgzv3+KMoYG6O/jres0Jp2q6pghUuAO9efY0ynrh+jpPzflor2bLoPnoXH3rNTglSuLEiSBigvaNq2Vqir5TNqJMdu2AEal8cACih8jJLHtXZ8hsVTeGV7xsY42l38oZCNjX6aFxgfkuCmVG6U4BV39mAS0lrxzkM2ukuObhuEM4OeFZt57XNm7gw+WgZ+TvS1bXAhiM58/39vRTcq8nr+X4Bfm2LQdVR0rkSDplidlx x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(396003)(366004)(39860400002)(136003)(376002)(8676002)(54906003)(53546011)(6506007)(71200400001)(33656002)(8936002)(4326008)(26005)(186003)(478600001)(83380400001)(44832011)(2616005)(86362001)(6916009)(6512007)(6486002)(76116006)(91956017)(66574015)(66446008)(66556008)(66476007)(30864003)(2906002)(64756008)(316002)(5660300002)(38100700002)(122000001)(36756003)(66946007)(38070700005)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MHpFdDZyNktyTzhNTnQzR2NIcjhDMW1JQUNCTUg5ZGhjTHdqNlZmK29IMi9z?= =?utf-8?B?QjZuMjRBSnhlbUFCWXBLM28wcmNBZzFxZ3BieStQNHQ3L3YzdHB4dENGdmZ0?= =?utf-8?B?T25wNkZYS0piY005SVVROW01MHJUUjd5cGZlb3VOd0VDV25TdUk5UWlYOTdm?= =?utf-8?B?aUREc3Z4YkkweWFza3N0aHphUG42enZKYkJrOXo3R3JmVmtpRHRxcVZnUkdn?= =?utf-8?B?M0RVOTUrbTRPVUptSkQ1aTJJSDFJWnpYWklBQVJwR2ZCN3RJeis5WC9XYnoz?= =?utf-8?B?UXhDbHhIMEp1cHUxdDFqVnJ6cnNNczFsQytzTDk3U2I5bFhUMjNMWDNwRU5r?= =?utf-8?B?VGdIbDlFUzBEOWY5dndnbWtYM1JwbGU1ZG5hQTBFUmJSUXpyTHJVV2hiTTYv?= =?utf-8?B?QzFTYWRKU0o5RlZ5UitXeUYxV1RJRkdWSnZoOGMvYnVWRUxpZ292KzlrQmhj?= =?utf-8?B?by9Mc3ZmWHE1ZnpHRWpwdFZWdk9mbjlDWlducWJTTnVEY2ZrYWlkVDNmTmta?= =?utf-8?B?eEF4U1pzem9Wb1ZhcGVhdlBPelRLUkZTN0gxMXpPZUNnWGxNc0hIK2d5Zmd3?= =?utf-8?B?SEtTNGI4U0kzbVI0Q2ppYUlocFVvZDZ3VUw4NW5ybmgvQW0vTHhONVBtQXJt?= =?utf-8?B?UDlEK1lzM053bjBweGhpQUJmRkdhR2dVazAyUDdhUkdRTXExOGk1OGpRb1cr?= =?utf-8?B?eEFIZTFqOUdBcFZJODBtbzErc01RWWRqTVVydlpzaStkdStvM090OE1OcUdS?= =?utf-8?B?MVlWam1WczR5S0wwajdKUTVqZWZoWHBXYlJhc1RCOU9sMzF0LzkrM3luSHF1?= =?utf-8?B?QUpnTCtFL0U3OWxQUllNN2IxRllzSGtIblA5YXFJQVh4SE1ybVRXaTY2cnFD?= =?utf-8?B?RjNSdGFGdjQ2TFJaMk10U1cxclIwSW1XVFV0REt1USt1aFlISDJJcnM0NlRK?= =?utf-8?B?TDVXNzR0RWlmcnlkTXlLVkp6Y2NVbHhPUmNLbVpHUDRQNENaeTRaaE5WVTMx?= =?utf-8?B?SjBncHhQVGhqT3hDSUNoTFZmTDZVUjY0dFNTRlM2Ry9yTFNTdDFjYTdBeHVN?= =?utf-8?B?Z0JtS2syMHh5UllubHFJT1hzWGVaS2FmZ08vdWpXMWlyQXFuMXZneXJlTENy?= =?utf-8?B?WHNxREJpczJMMDcxRXcxSFlzd1Y1VDhRcWZQWDBwVVhEVnhEUndyVTZ4ZVpq?= =?utf-8?B?WG4zVGR3YXlDRGJjanhadUFvaGJyZ2wwSDgweHBxemZYQ0xqUW5Wckg4bXFP?= =?utf-8?B?UTMwZDVIVHlaTnZqSGdvMHkxOWJaV0s0VEJvc2VuaFdiSWlXdXJsY3F0RCsr?= =?utf-8?B?d3IrZWt0NllSK21IclJzRlp6VGNZY21VaTd5YmRwaVBMckQzVlM1aGtEVzdG?= =?utf-8?B?d09Sb1hhQ2dzMDRYQlgvQmgzR3JKQndjalVlOVJuZHBMM2lYQlhmSG5Qc0t4?= =?utf-8?B?T1IvNjhpTHlmU0ltSXpmbEhjbEQ0NXV4dUdKNkFaa1NENEdBamt1WmhDdjN3?= =?utf-8?B?MGtaNEVrWWdnUGxWa2Q4NG9uMUllY3JmTzdGOWJyTy9FNHpFM1hReXBITmJj?= =?utf-8?B?WWFyd0hlRFlTQVo1REVtN2tSS3FvMi9uWis0WmlUbXhaOVk1VWR3N1RrYnRa?= =?utf-8?B?NnJ2SmdaYkRscXZyek90dm4zWGJKeENtd3lXQ3FUeTN4ZW1BWXk2b1g2Yzgz?= =?utf-8?B?UURyWHFUN1RSS1lyZHh6dXdyNzQxelFNUmQ5S2RMdmkxc2NVRDFjemFjbjZZ?= =?utf-8?Q?ny4VnYNgck3O6ds1CdPbGLgpoajptKkg5gqypqR?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <4B099B19A185024DA91EA228C8C5B4CB@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e07148db-ec26-4756-7746-08d960cc081a X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2021 15:39:26.4211 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5GK1ZlAuIWWjXexSuouNtLrB2G360tJ5gtnOp0xsEmTO4EgsX3ctppZTN8xx6Cb/S7K7/1O51p2kizNCDjUwHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4843 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10078 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108160098 X-Proofpoint-ORIG-GUID: c1ACVK6NbP9Xr2UTWw9wjH6DEv1ce89I X-Proofpoint-GUID: c1ACVK6NbP9Xr2UTWw9wjH6DEv1ce89I X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Aug 2021 15:39:52 -0000 DQoNCj4gT24gQXVnIDE2LCAyMDIxLCBhdCAxMDowOCBBTSwgUmljaGFyZCBCaWVuZXIgPHJndWVu dGhlckBzdXNlLmRlPiB3cm90ZToNCj4gDQo+IE9uIEF1Z3VzdCAxNiwgMjAyMSA0OjQ4OjE2IFBN IEdNVCswMjowMCwgUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4gd3JvdGU6DQo+PiAN Cj4+IA0KPj4+IE9uIEF1ZyAxNiwgMjAyMSwgYXQgMjoxMiBBTSwgUmljaGFyZCBCaWVuZXIgPHJn dWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+PiANCj4+PiBPbiBXZWQsIDExIEF1ZyAyMDIxLCBR aW5nIFpoYW8gd3JvdGU6DQo+Pj4gDQo+Pj4+IEhpLCANCj4+Pj4gDQo+Pj4+IEkgZmluYWxseSBk ZWNpZGVkIHRvIHRha2UgYW5vdGhlciBhcHByb2FjaCB0byByZXNvbHZlIHRoaXMgaXNzdWUsIGl0 IHJlc29sdmVkIGFsbCB0aGUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSDigJxhZGRyZXNzIHRh a2Vu4oCdIGF1dG8gdmFyaWFibGUuDQo+Pj4+IA0KPj4+PiBUaGUgYmFzaWMgaWRlYSBpcyB0byBh dm9pZCBnZW5lcmF0aW5nIHRoZSB0ZW1wb3JhcnkgdmFyaWFibGUgaW4gdGhlIGJlZ2lubmluZy4g DQo+Pj4+IEFzIHlvdSBtZW50aW9uZWQsICJUaGUgcmVhc29uIGlzIHRoYXQgYWx0X3JlbG9jIGlz IG1lbW9yeSAoYmVjYXVzZSBpdCBpcyBhZGRyZXNzIHRha2VuKSBhbmQgdGhhdCBHSU1QTEUgc2F5 cyB0aGF0IHJlZ2lzdGVyIHR5cGVkIHN0b3JlcyANCj4+Pj4gbmVlZCB0byB1c2UgYSBpc19naW1w bGVfdmFsIFJIUyB3aGljaCB0aGUgY2FsbCBpcyBub3Qu4oCdDQo+Pj4+IEluIG9yZGVyIHRvIGF2 b2lkIGdlbmVyYXRpbmcgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSBmb3Ig4oCcYWRkcmVzcyB0YWtl buKAnSBhdXRvIHZhcmlhYmxlLCBJIHVwZGF0ZWQgdGhlIHV0aWxpdHkgcm91dGluZSDigJxpc19n aW1wbGVfdmFs4oCdIGFzIGZvbGxvd2luZzoNCj4+Pj4gDQo+Pj4+IGRpZmYgLS1naXQgYS9nY2Mv Z2ltcGxlLWV4cHIuYyBiL2djYy9naW1wbGUtZXhwci5jDQo+Pj4+IGluZGV4IGEyNTYzYTQ1YzM3 ZC4uZDVlZjFhZWY4Y2VhIDEwMDY0NA0KPj4+PiAtLS0gYS9nY2MvZ2ltcGxlLWV4cHIuYw0KPj4+ PiArKysgYi9nY2MvZ2ltcGxlLWV4cHIuYw0KPj4+PiBAQCAtNzg3LDggKzc4NywyMCBAQCBpc19n aW1wbGVfcmVnICh0cmVlIHQpDQo+Pj4+ICByZXR1cm4gIURFQ0xfTk9UX0dJTVBMRV9SRUdfUCAo dCk7DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+ICsvKiBSZXR1cm4gdHJ1ZSBpZiBUIGlzIGEgY2FsbCB0 byAuREVGRVJSRURfSU5JVCBpbnRlcm5hbCBmdW5jdGlvbi4gICovIA0KPj4+PiArc3RhdGljIGJv b2wNCj4+Pj4gK2lzX2RlZmVycmVkX2luaXRfY2FsbCAodHJlZSB0KQ0KPj4+PiArew0KPj4+PiAr ICBpZiAoVFJFRV9DT0RFICh0KSA9PSBDQUxMX0VYUFINCj4+Pj4gKyAgICAgICYmICBDQUxMX0VY UFJfSUZOICh0KSA9PSBJRk5fREVGRVJSRURfSU5JVCkNCj4+Pj4gKyAgICByZXR1cm4gdHJ1ZTsN Cj4+Pj4gKyAgcmV0dXJuIGZhbHNlOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+IA0KPj4+PiAtLyog UmV0dXJuIHRydWUgaWYgVCBpcyBhIEdJTVBMRSBydmFsdWUsIGkuZS4gYW4gaWRlbnRpZmllciBv ciBhIGNvbnN0YW50LiAgKi8NCj4+Pj4gKy8qIFJldHVybiB0cnVlIGlmIFQgaXMgYSBHSU1QTEUg cnZhbHVlLCBpLmUuIGFuIGlkZW50aWZpZXIgb3IgYSBjb25zdGFudCwNCj4+Pj4gKyAgIG9yIGEg Y2FsbCB0byAuREVGRVJSRURfSU5JVCBpbnRlcm5hbCBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjYWxs IHRvDQo+Pj4+ICsgICAuREVGRVJSRURfSU5JVCB3aWxsIGV2ZW50dWFsbHkgYmUgZXhwYW5kZWQg YXMgYSBjb25zdGFudC4gICovDQo+Pj4+IA0KPj4+PiBib29sDQo+Pj4+IGlzX2dpbXBsZV92YWwg KHRyZWUgdCkNCj4+Pj4gQEAgLTc5OSw3ICs4MTEsOCBAQCBpc19naW1wbGVfdmFsICh0cmVlIHQp DQo+Pj4+ICAgICAgJiYgIWlzX2dpbXBsZV9yZWcgKHQpKQ0KPj4+PiAgICByZXR1cm4gZmFsc2U7 DQo+Pj4+IA0KPj4+PiAtICByZXR1cm4gKGlzX2dpbXBsZV92YXJpYWJsZSAodCkgfHwgaXNfZ2lt cGxlX21pbl9pbnZhcmlhbnQgKHQpKTsNCj4+Pj4gKyAgcmV0dXJuIChpc19naW1wbGVfdmFyaWFi bGUgKHQpIHx8IGlzX2dpbXBsZV9taW5faW52YXJpYW50ICh0KQ0KPj4+PiArICAgICAgICAgfHwg aXNfZGVmZXJyZWRfaW5pdF9jYWxsICh0KSk7DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+IFdpdGggdGhp cyBjaGFuZ2UsIHRoZSB0ZW1wb3JhcnkgdmFyaWFibGUgd2lsbCBub3QgYmUgY3JlYXRlZCBmb3Ig 4oCcYWRkcmVzcyB0YWtlbuKAnSBhdXRvIHZhcmlhYmxlLCBhbmQgdW5pbml0aWFsaXplZCBhbmFs eXNpcyBkb2VzIG5vdCBuZWVkIGFueSBjaGFuZ2UuIA0KPj4+PiBFdmVyeXRoaW5nIHdvcmtzIHdl bGwuDQo+Pj4+IA0KPj4+PiBBbmQgSSBiZWxpZXZlIHRoYXQgdHJlYXRpbmcg4oCcY2FsbCB0byAu REVGRVJSRURfSU5JVOKAnSBhcyDigJxpc19naW1wbGVfdmFs4oCdIGlzIHJlYXNvbmFibGUgc2lu Y2UgdGhpcyBjYWxsIGFjdHVhbGx5IGlzIGEgY29uc3RhbnQuDQo+Pj4+IA0KPj4+PiBMZXQgbWUg a25vdyBpZiB5b3UgaGF2ZSBhbnkgb2JqZWN0aW9uIG9uIHRoaXMgc29sdXRpb24uDQo+Pj4gDQo+ Pj4gWWVhaCwgSSBvYmplY3QgdG8gdGhpcyBzb2x1dGlvbi4NCj4+IA0KPj4gQ2FuIHlvdSBleHBs YWluIHdoYXTigJlzIHRoZSBtYWpvciBpc3N1ZSBmb3IgdGhpcyBzb2x1dGlvbj8gDQo+IA0KPiBJ dCBwdW5jaGVzIGEgaG9sZSBpbnRvIHRoZSBHSU1QTEUgSUwgd2hpY2ggaXMgdmVyeSBsaWtlbHkg aW5jb21wbGV0ZSBhbmQgd2lsbCBjYXVzZSBpc3N1ZXMgZWxzZXdoZXJlLiBJbiBwYXJ0aWN1bGFy IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgY2hlY2sgaXMgbWlzc2luZyBhbmQgbm90IGNvbXB1dGFi bGUgc2luY2UgdGhlIFJIUyBvZiB0aGlzIGNhbGwgaXNuJ3Qgc2VwYXJhdGVseSBhdmFpbGFibGUu IA0KPiANCj4gSWYgeW91IGdvIGRvd24gdGhpcyByb3V0ZSB0aGVuIHlvdSBzaG91bGQgaGF2ZSBh ZGRlZCBhIG5ldyBjb25zdGFudCBjbGFzcyB0cmVlIGNvZGUgaW5zdGVhZCBvZiBhbiBpbnRlcm5h bCBmdW5jdGlvbiBjYWxsLiANCg0KT2theS4gSSBzZWUuIA0KPiANCj4+IFRvIG1lLCAgdHJlYXRp bmcg4oCcY2FsbCB0byAuREVGRVJSRURfSU5JVOKAnSBhcyDigJxpc19naW1wbGVfdmFs4oCdIGlz IHJlYXNvbmFibGUgc2luY2UgdGhpcyBjYWxsIGFjdHVhbGx5IGlzIGEgY29uc3RhbnQuDQo+IA0K PiBTdXJlLCBidXQgaXQncyBub3QgcmVwcmVzZW50ZWQgYXMgc3VjaC4gDQoNClRoYW5rIHlvdSEu DQoNClFpbmcNCj4gDQo+IFJpY2hhcmQuIA0KPiANCj4+IFRoYW5rcy4NCj4+IA0KPj4gUWluZw0K Pj4+IFJpY2hhcmQuDQo+Pj4gDQo+Pj4+IHRoYW5rcy4NCj4+Pj4gDQo+Pj4+IFFpbmcNCj4+Pj4g DQo+Pj4+PiBPbiBBdWcgMTEsIDIwMjEsIGF0IDM6MzAgUE0sIFFpbmcgWmhhbyB2aWEgR2NjLXBh dGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90ZToNCj4+Pj4+IA0KPj4+Pj4gSGks IA0KPj4+Pj4gDQo+Pj4+PiBJIG1ldCBhbm90aGVyIGlzc3VlIGZvciDigJxhZGRyZXNzIHRha2Vu 4oCdIGF1dG8gdmFyaWFibGUsIHNlZSBiZWxvdyBmb3IgZGV0YWlsczoNCj4+Pj4+IA0KPj4+Pj4g KioqKiB0aGUgdGVzdGluZyBjYXNlOiAoZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdW5pbml0LTE2LmMp DQo+Pj4+PiANCj4+Pj4+IGludCBmb28sIGJhcjsNCj4+Pj4+IA0KPj4+Pj4gc3RhdGljDQo+Pj4+ PiB2b2lkIGRlY29kZV9yZWxvYyhpbnQgcmVsb2MsIGludCAqaXNfYWx0KQ0KPj4+Pj4gew0KPj4+ Pj4gaWYgKHJlbG9jID49IDIwKQ0KPj4+Pj4gICAgKmlzX2FsdCA9IDE7DQo+Pj4+PiBlbHNlIGlm IChyZWxvYyA+PSAxMCkNCj4+Pj4+ICAgICppc19hbHQgPSAwOw0KPj4+Pj4gfQ0KPj4+Pj4gDQo+ Pj4+PiB2b2lkIHRlc3RmdW5jKCkNCj4+Pj4+IHsNCj4+Pj4+IGludCBhbHRfcmVsb2M7DQo+Pj4+ PiANCj4+Pj4+IGRlY29kZV9yZWxvYyhmb28sICZhbHRfcmVsb2MpOw0KPj4+Pj4gDQo+Pj4+PiBp ZiAoYWx0X3JlbG9jKSAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQi IH0gKi8NCj4+Pj4+ICBiYXIgPSA0MjsNCj4+Pj4+IH0NCj4+Pj4+IA0KPj4+Pj4gKioqKldoZW4g Y29tcGlsZWQgd2l0aCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1PMiAtV3VuaW5pdGlh bGl6ZWQgLWZkdW1wLXRyZWUtYWxsOg0KPj4+Pj4gDQo+Pj4+PiAuKioqKioqKioqKioqKmdpbXBs ZSBkdW1wOg0KPj4+Pj4gDQo+Pj4+PiB2b2lkIHRlc3RmdW5jICgpDQo+Pj4+PiB7IA0KPj4+Pj4g aW50IGFsdF9yZWxvYzsNCj4+Pj4+IA0KPj4+Pj4gdHJ5DQo+Pj4+PiAgew0KPj4+Pj4gICAgXzEg PSAuREVGRVJSRURfSU5JVCAoNCwgMiwgMCk7DQo+Pj4+PiAgICBhbHRfcmVsb2MgPSBfMTsNCj4+ Pj4+ICAgIGZvby4wXzIgPSBmb287DQo+Pj4+PiAgICBkZWNvZGVfcmVsb2MgKGZvby4wXzIsICZh bHRfcmVsb2MpOw0KPj4+Pj4gICAgYWx0X3JlbG9jLjFfMyA9IGFsdF9yZWxvYzsNCj4+Pj4+ICAg IGlmIChhbHRfcmVsb2MuMV8zICE9IDApIGdvdG8gPEQuMTk1Mj47IGVsc2UgZ290byA8RC4xOTUz PjsNCj4+Pj4+ICAgIDxELjE5NTI+Og0KPj4+Pj4gICAgYmFyID0gNDI7DQo+Pj4+PiAgICA8RC4x OTUzPjoNCj4+Pj4+ICB9DQo+Pj4+PiBmaW5hbGx5DQo+Pj4+PiAgew0KPj4+Pj4gICAgYWx0X3Jl bG9jID0ge0NMT0JCRVJ9Ow0KPj4+Pj4gIH0NCj4+Pj4+IH0NCj4+Pj4+IA0KPj4+Pj4gKioqKioq KioqKioqKipmcmUxIGR1bXA6DQo+Pj4+PiANCj4+Pj4+IHZvaWQgdGVzdGZ1bmMgKCkNCj4+Pj4+ IHsNCj4+Pj4+IGludCBhbHRfcmVsb2M7DQo+Pj4+PiBpbnQgXzE7DQo+Pj4+PiBpbnQgZm9vLjBf MjsNCj4+Pj4+IA0KPj4+Pj4gPGJiIDI+IDoNCj4+Pj4+IF8xID0gLkRFRkVSUkVEX0lOSVQgKDQs IDIsIDApOw0KPj4+Pj4gZm9vLjBfMiA9IGZvbzsNCj4+Pj4+IGlmIChmb28uMF8yID4gMTkpDQo+ Pj4+PiAgZ290byA8YmIgMz47IFs1MC4wMCVdDQo+Pj4+PiBlbHNlDQo+Pj4+PiAgZ290byA8YmIg ND47IFs1MC4wMCVdDQo+Pj4+PiANCj4+Pj4+IDxiYiAzPiA6DQo+Pj4+PiBnb3RvIDxiYiA3Pjsg WzEwMC4wMCVdDQo+Pj4+PiANCj4+Pj4+IDxiYiA0PiA6DQo+Pj4+PiBpZiAoZm9vLjBfMiA+IDkp DQo+Pj4+PiAgZ290byA8YmIgNT47IFs1MC4wMCVdDQo+Pj4+PiBlbHNlDQo+Pj4+PiAgZ290byA8 YmIgNj47IFs1MC4wMCVdDQo+Pj4+PiANCj4+Pj4+IDxiYiA1PiA6DQo+Pj4+PiBnb3RvIDxiYiA4 PjsgWzEwMC4wMCVdDQo+Pj4+PiANCj4+Pj4+IDxiYiA2PiA6DQo+Pj4+PiBpZiAoXzEgIT0gMCkN Cj4+Pj4+ICBnb3RvIDxiYiA3PjsgW0lOVl0NCj4+Pj4+IGVsc2UNCj4+Pj4+ICBnb3RvIDxiYiA4 PjsgW0lOVl0NCj4+Pj4+IA0KPj4+Pj4gPGJiIDc+IDoNCj4+Pj4+IGJhciA9IDQyOw0KPj4+Pj4g DQo+Pj4+PiA8YmIgOD4gOg0KPj4+Pj4gcmV0dXJuOw0KPj4+Pj4gDQo+Pj4+PiB9DQo+Pj4+PiAN Cj4+Pj4+IEZyb20gdGhlIGFib3ZlIElSIGZpbGUgYWZ0ZXIg4oCcRlJF4oCdLCB3ZSBjYW4gc2Vl IHRoYXQgdGhlIG1ham9yIGlzc3VlIHdpdGggdGhpcyBJUiBpczoNCj4+Pj4+IA0KPj4+Pj4gVGhl IGFkZHJlc3MgdGFrZW4gYXV0byB2YXJpYWJsZSDigJxhbHRfcmVsb2PigJ0gaGFzIGJlZW4gY29t cGxldGVseSByZXBsYWNlZCBieSB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIOKAnF8x4oCdIGluIGFs bA0KPj4+Pj4gdGhlIHVzZXMgb2YgdGhlIG9yaWdpbmFsIOKAnGFsdF9yZWxvY+KAnS4gDQo+Pj4+ PiANCj4+Pj4+IFRoZSBtYWpvciBwcm9ibGVtIHdpdGggc3VjaCBJUiBpcywgIGR1cmluZyB1bmlu aXRpYWxpemVkIGFuYWx5c2lzIHBoYXNlLCB0aGUgb3JpZ2luYWwgdXNlIG9mIOKAnGFsdF9yZWxv Y+KAnSBkaXNhcHBlYXJlZCBjb21wbGV0ZWx5Lg0KPj4+Pj4gU28sIHRoZSB3YXJuaW5nIGNhbm5v dCBiZSByZXBvcnRlZC4NCj4+Pj4+IA0KPj4+Pj4gDQo+Pj4+PiBNeSBxdWVzdGlvbnM6DQo+Pj4+ PiANCj4+Pj4+IDEuIElzIGl0IHBvc3NpYmxlIHRvIGdldCB0aGUgb3JpZ2luYWwg4oCcYWx0X3Jl bG9j4oCdIHRocm91Z2ggdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSDigJxfMeKAnSB3aXRoIHNvbWUg YXZhaWxhYmxlIGluZm9ybWF0aW9uIHJlY29yZGVkIGluIHRoZSBJUj8NCj4+Pj4+IDIuIElmIG5v dCwgdGhlbiB3ZSBoYXZlIHRvIHJlY29yZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4g4oCcYWx0 X3JlbG9j4oCdIGFuZCDigJxfMeKAnSB3aGVuIHRoZSBvcmlnaW5hbCDigJxhbHRfcmVsb2PigJ0g aXMgcmVwbGFjZWQgYnkg4oCcXzHigJ0gYW5kIGdldCBzdWNoIHJlbGF0aW9uc2hpcCBkdXJpbmcN Cj4+Pj4+ICBVbmluaXRpYWxpemVkIGFuYWx5c2lzIHBoYXNlLiAgSXMgdGhpcyBkb2FibGU/DQo+ Pj4+PiAzLiBMb29rcyBsaWtlIHRoYXQgZm9yIOKAnGFkZHJlc3MgdGFrZW7igJ0gYXV0byB2YXJp YWJsZSwgaWYgd2UgaGF2ZSB0byBpbnRyb2R1Y2UgYSBuZXcgdGVtcG9yYXJ5IHZhcmlhYmxlIGFu ZCBzcGxpdCB0aGUgY2FsbCB0byAuREVGRVJSRURfSU5JVCBpbnRvIHR3bzoNCj4+Pj4+IA0KPj4+ Pj4gICAgdGVtcCA9IC5ERUZFUlJFRF9JTklUICg0LCAyLCAwKTsNCj4+Pj4+ICAgIGFsdF9yZWxv YyA9IHRlbXA7DQo+Pj4+PiANCj4+Pj4+IE1vcmUgaXNzdWVzIG1pZ2h0IHBvc3NpYmxlLg0KPj4+ Pj4gDQo+Pj4+PiBBbnkgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zIG9uIHRoaXMgaXNzdWU/DQo+ Pj4+PiANCj4+Pj4+IFFpbmcNCj4+Pj4+IA0KPj4+Pj4gag0KPj4+Pj4+IE9uIEF1ZyAxMSwgMjAy MSwgYXQgMTE6NTUgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6 DQo+Pj4+Pj4gDQo+Pj4+Pj4gT24gQXVndXN0IDExLCAyMDIxIDY6MjI6MDAgUE0gR01UKzAyOjAw LCBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPiB3cm90ZToNCj4+Pj4+Pj4gDQo+Pj4+ Pj4+IA0KPj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCAxMDo1MyBBTSwgUmljaGFyZCBCaWVu ZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gT24gQXVn dXN0IDExLCAyMDIxIDU6MzA6NDAgUE0gR01UKzAyOjAwLCBRaW5nIFpoYW8gPHFpbmcuemhhb0Bv cmFjbGUuY29tPiB3cm90ZToNCj4+Pj4+Pj4+PiBJIG1vZGlmaWVkIHRoZSByb3V0aW5lIOKAnGdp bXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXLigJ0gYXMgdGhlIGZvbGxvd2luZzoNCj4+Pj4+Pj4+ PiA9PT09DQo+Pj4+Pj4+Pj4gLyogR2VuZXJhdGUgaW5pdGlhbGl6YXRpb24gdG8gYXV0b21hdGlj IHZhcmlhYmxlIERFQ0wgYmFzZWQgb24gSU5JVF9UWVBFLg0KPj4+Pj4+Pj4+IEJ1aWxkIGEgY2Fs bCB0byBpbnRlcm5hbCBjb25zdCBmdW5jdGlvbiBERUZFUlJFRF9JTklUOg0KPj4+Pj4+Pj4+IDFz dCBhcmd1bWVudDogU0laRSBvZiB0aGUgREVDTDsNCj4+Pj4+Pj4+PiAybmQgYXJndW1lbnQ6IElO SVRfVFlQRTsNCj4+Pj4+Pj4+PiAzcmQgYXJndW1lbnQ6IElTX1ZMQSwgMCBOTywgMSBZRVM7DQo+ Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gYXMgREVGRVJSRURfSU5JVCAoU0laRSBvZiB0aGUgREVDTCwg SU5JVF9UWVBFLCBJU19WTEEpLiAgKi8NCj4+Pj4+Pj4+PiBzdGF0aWMgdm9pZA0KPj4+Pj4+Pj4+ IGdpbXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXIgKHRyZWUgZGVjbCwNCj4+Pj4+Pj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICBlbnVtIGF1dG9faW5pdF90eXBlIGluaXRfdHlwZSwNCj4+Pj4+ Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3ZsYSwNCj4+Pj4+Pj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICBnaW1wbGVfc2VxICpzZXFfcCkNCj4+Pj4+Pj4+PiB7DQo+Pj4+ Pj4+Pj4gZ2NjX2Fzc2VydCAoVkFSX1AgKGRlY2wpICYmICFERUNMX0VYVEVSTkFMIChkZWNsKSAm JiAhVFJFRV9TVEFUSUMgKGRlY2wpKTsNCj4+Pj4+Pj4+PiBnY2NfYXNzZXJ0IChpbml0X3R5cGUg PiBBVVRPX0lOSVRfVU5JTklUSUFMSVpFRCk7DQo+Pj4+Pj4+Pj4gdHJlZSBkZWNsX3NpemUgPSBU WVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChkZWNsKSk7DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4g dHJlZSBpbml0X3R5cGVfbm9kZQ0KPj4+Pj4+Pj4+ID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90 eXBlX25vZGUsIChpbnQpIGluaXRfdHlwZSk7DQo+Pj4+Pj4+Pj4gdHJlZSBpc192bGFfbm9kZQ0K Pj4+Pj4+Pj4+ID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIChpbnQpIGlzX3Zs YSk7DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gdHJlZSBjYWxsID0gYnVpbGRfY2FsbF9leHByX2lu dGVybmFsX2xvYyAoVU5LTk9XTl9MT0NBVElPTiwgSUZOX0RFRkVSUkVEX0lOSVQsDQo+Pj4+Pj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkVFX1RZUEUgKGRlY2wp LCAzLA0KPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj bF9zaXplLCBpbml0X3R5cGVfbm9kZSwNCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzX3ZsYV9ub2RlKTsNCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiAvKiBJ ZiB0aGlzIERFQ0wgaXMgYSBWTEEsIGEgdGVtcG9yYXJ5IGFkZHJlc3MgdmFyaWFibGUgZm9yIGl0 IGhhcyBiZWVuDQo+Pj4+Pj4+Pj4gY3JlYXRlZCwgdGhlIHJlcGxhY2VtZW50IGZvciBERUNMIGlz IHJlY29yZGVkIGluIERFQ0xfVkFMVUVfRVhQUiAoZGVjbCksDQo+Pj4+Pj4+Pj4gd2Ugc2hvdWxk IHVzZSBpdCBhcyB0aGUgTEhTIG9mIHRoZSBjYWxsLiAgKi8NCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+ PiB0cmVlIGxoc19jYWxsDQo+Pj4+Pj4+Pj4gPSBpc192bGEgPyBERUNMX1ZBTFVFX0VYUFIgKGRl Y2wpIDogZGVjbDsNCj4+Pj4+Pj4+PiBnaW1wbGlmeV9hc3NpZ24gKGxoc19jYWxsLCBjYWxsLCBz ZXFfcCk7DQo+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFdpdGggdGhpcyBjaGFu Z2UsIHRoZSBjdXJyZW50IGlzc3VlIGlzIHJlc29sdmVkLCB0aGUgZ2ltcGxlIGR1bXAgbm93IGlz Og0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ICgqYXJyLjEpID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1 MiwgMiwgMSk7DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gSG93ZXZlciwgdGhlcmUgaXMgYW5vdGhl ciBuZXcgaXNzdWU6DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gRm9yIHRoZSBmb2xsb3dpbmcgdGVz dGluZyBjYXNlOg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ID09PT09PQ0KPj4+Pj4+Pj4+IFtvcGNA cWluemhhby1vbDh1My14ODYgZ2NjXSQgY2F0IHQuYw0KPj4+Pj4+Pj4+IGludCBiYXI7DQo+Pj4+ Pj4+Pj4gDQo+Pj4+Pj4+Pj4gZXh0ZXJuIHZvaWQgZGVjb2RlX3JlbG9jKGludCAqKTsNCj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+PiB2b2lkIHRlc3RmdW5jKCkNCj4+Pj4+Pj4+PiB7DQo+Pj4+Pj4+Pj4g aW50IGFsdF9yZWxvYzsNCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBkZWNvZGVfcmVsb2MoJmFsdF9y ZWxvYyk7DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gaWYgKGFsdF9yZWxvYykgLyogeyBkZy13YXJu aW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICovDQo+Pj4+Pj4+Pj4gYmFyID0gNDI7 IA0KPj4+Pj4+Pj4+IH0NCj4+Pj4+Pj4+PiA9PT09PQ0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IElu IHRoZSBhYm92ZSwgdGhlIGF1dG8gdmFyIOKAnGFsdF9yZWxvY+KAnSBpcyBhZGRyZXNzIHRha2Vu LCB0aGVuIHRoZSBnaW1wbGUgZHVtcCBmb3IgaXQgd2hlbiBjb21waWxlZCB3aXRoIC1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8gaXM6DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gdm9pZCB0ZXN0 ZnVuYyAoKQ0KPj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+PiBpbnQgYWx0X3JlbG9jOw0KPj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+IHRyeQ0KPj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+PiBfMSA9IC5ERUZFUlJFRF9J TklUICg0LCAyLCAwKTsNCj4+Pj4+Pj4+PiBhbHRfcmVsb2MgPSBfMTsNCj4+Pj4+Pj4+PiBkZWNv ZGVfcmVsb2MgKCZhbHRfcmVsb2MpOw0KPj4+Pj4+Pj4+IGFsdF9yZWxvYy4wXzIgPSBhbHRfcmVs b2M7DQo+Pj4+Pj4+Pj4gaWYgKGFsdF9yZWxvYy4wXzIgIT0gMCkgZ290byA8RC4xOTQ5PjsgZWxz ZSBnb3RvIDxELjE5NTA+Ow0KPj4+Pj4+Pj4+IDxELjE5NDk+Og0KPj4+Pj4+Pj4+IGJhciA9IDQy Ow0KPj4+Pj4+Pj4+IDxELjE5NTA+Og0KPj4+Pj4+Pj4+IH0NCj4+Pj4+Pj4+PiBmaW5hbGx5DQo+ Pj4+Pj4+Pj4gew0KPj4+Pj4+Pj4+IGFsdF9yZWxvYyA9IHtDTE9CQkVSfTsNCj4+Pj4+Pj4+PiB9 DQo+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IEkuZSwgaW5zdGVhZCBvZiB0aGUg ZXhwZWN0ZWQgSVI6DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gYWx0X3JlbG9jID0gLkRFRkVSUkVE X0lOSVQgKDQsIDIsIDApOw0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFdlIGdvdCB0aGUgZm9sbG93 aW5nOg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IF8xID0gLkRFRkVSUkVEX0lOSVQgKDQsIDIsIDAp Ow0KPj4+Pj4+Pj4+IGFsdF9yZWxvYyA9IF8xOw0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IEkgZ3Vl c3MgdGhlIHRlbXAg4oCcXzHigJ0gaXMgY3JlYXRlZCBiZWNhdXNlIOKAnGFsdF9yZWxvY+KAnSBp cyBhZGRyZXNzIHRha2VuLiANCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gWWVzIGFuZCBuby4gVGhlIHJl YXNvbiBpcyB0aGF0IGFsdF9yZWxvYyBpcyBtZW1vcnkgKGJlY2F1c2UgaXQgaXMgYWRkcmVzcyB0 YWtlbikgYW5kIHRoYXQgR0lNUExFIHNheXMgdGhhdCByZWdpc3RlciB0eXBlZCBzdG9yZXMgbmVl ZCB0byB1c2UgYSBpc19naW1wbGVfdmFsIFJIUyB3aGljaCB0aGUgY2FsbCBpcyBub3QuDQo+Pj4+ Pj4+IA0KPj4+Pj4+PiBPa2F5Lg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gTXkgcXVlc3Rpb25zOg0K Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFNoYWxsIHdlIGFjY2VwdCBzdWNoIElSIGZvciAuREVGRVJS RURfSU5JVCBwdXJwb3NlIHdoZW4gdGhlIGF1dG8gdmFyIGlzIGFkZHJlc3MgdGFrZW4/IA0KPj4+ Pj4+Pj4gDQo+Pj4+Pj4+PiBJIHRoaW5rIHNvLiBOb3RlIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkg bmVlZCBhZGRyZXNzIHRha2luZyBidXQgYW55IG90aGVyIHJlYXNvbiB0aGF0IHByZXZlbnRzIFNT QSByZXdyaXRpbmcgdGhlIHZhcmlhYmxlIHN1ZmZpY2VzLiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFlv dSBtZWFuLCBpbiBhZGRpdGlvbiB0byDigJxhZGRyZXNzIHRha2Vu4oCdLCB0aGVyZSBhcmUgb3Ro ZXIgc2l0dWF0aW9ucyB0aGF0IHdpbGwgaW50cm9kdWNlIHN1Y2ggSVI6DQo+Pj4+Pj4+IA0KPj4+ Pj4+PiB0ZW1wID0gLkRFRkVSUkVEX0lOSVQoKTsNCj4+Pj4+Pj4gYXV0b192YXIgPSB0ZW1wOw0K Pj4+Pj4+PiANCj4+Pj4+Pj4gU28sIHN1Y2ggSVIgaXMgdW5hdm9pZGFibGUgYW5kIHdlIGhhdmUg dG8gaGFuZGxlIGl0Pw0KPj4+Pj4+IA0KPj4+Pj4+IFllcy4gDQo+Pj4+Pj4gDQo+Pj4+Pj4+IElm IHdlIGhhdmUgdG8gaGFuZGxlIGl0LCAgd2hhdOKAmSB0aGUgYmVzdCB3YXkgdG8gZG8gaXQ/DQo+ Pj4+Pj4+IA0KPj4+Pj4+PiBUaGUgc29sdXRpb24gaW4gbXkgbWluZCBpczoNCj4+Pj4+Pj4gMS4g RHVyaW5nIHVuaW5pdGlhbGl6ZWQgYW5hbHlzaXMgcGhhc2UsIGZvbGxvd2luZyB0aGUgZGF0YSBm bG93IHRvIGNvbm5lY3QgLkRFRkVSUkVEX0lOSVQgdG8g4oCcYXV0b192YXLigJ0sIGFuZCB0aGVu IGRlY2lkZSB0aGF0IOKAnGF1dG9fdmFy4oCdIGlzIHVuaW5pdGlhbGl6ZWQuDQo+Pj4+Pj4gDQo+ Pj4+Pj4gWWVzLiBCYXNpY2FsbHkgaWYgdGhlcmUncyBhbiBhcnRpZmljaWFsIHZhcmlhYmxlIGF1 dG8gaW5pdGlhbGl6ZWQgeW91IGhhdmUgdG8gbG9vayBhdCBpdHMgdXNlcy4gDQo+Pj4+Pj4gDQo+ Pj4+Pj4+IDIuIER1cmluZyBSVEwgZXhwYW5zaW9uLCBmb2xsb3dpbmcgdGhlIGRhdGEgZmxvdyB0 byBjb25uZWN0IC5ERUZFUlJFRF9JTklUIHRvIOKAnGF1dG9fdmFy4oCdLCBhbmQgdGhlbiBkZWxl dGUg4oCcdGVtcOKAnSwgYW5kIHRoZW4gZXhwYW5kIC5ERUZFUlJFRF9JTklUIHRvIGF1dG9fdmFy Lg0KPj4+Pj4+IA0KPj4+Pj4+IFRoYXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4gWW91J2QgaW5p dGlhbGl6ZSBhIHRlbXBvcmFyeSByZWdpc3RlciB3aGljaCBpcyB0aGVuIGNvcGllZCB0byB0aGUg cmVhbCB2YXJpYWJsZS4gVGhhdCdzIGdvb2QgZW5vdWdoIGFuZCBzaG91bGQgYmUgb3B0aW1pemVk IGJ5IHRoZSBSVEwgcGlwZWxpbmUuIA0KPj4+Pj4+IA0KPj4+Pj4+PiBMZXQgbWUga25vdyB5b3Vy IGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyBvbiB0aGlzLg0KPj4+Pj4+PiANCj4+Pj4+Pj4gDQo+ Pj4+Pj4+PiANCj4+Pj4+Pj4+IFRoZSBvbmx5IG90aGVyIG9wdGlvbiBpcyB0byBmb3JjZS4gREVG RVJFRF9JTklUIG1ha2luZyB0aGUgTEhTIGFkZHJlc3MgdGFrZW4gd2hpY2ggSSB0aGluayBjb3Vs ZCBiZSBhY2hpZXZlZCBieSBwYXNzaW5nIGl0IHRoZSBhZGRyZXNzIGFzIGFyZ3VtZW50IGluc3Rl YWQgb2YgaGF2aW5nIGEgTEhTLiBCdXQgbGV0J3Mgbm90IGdvIGRvd24gdGhpcyByb3V0ZSAtIGl0 IHdpbGwgaGF2ZSBxdWl0ZSBiYWQgYmVoYXZpb3Igb24gYWxpYXMgYW5hbHlzaXMgYW5kIG9wdGlt aXphdGlvbi4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBPa2F5Lg0KPj4+Pj4+PiANCj4+Pj4+Pj4gUWlu Zw0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gSWYgc28sIOKAnHVuaW5pdGlhbGl6ZWQgYW5hbHlzaXPi gJ0gcGhhc2UgbmVlZCB0byBiZSBmdXJ0aGVyIGFkanVzdGVkIHRvIHNwZWNpYWxseSBoYW5kbGUg c3VjaCBJUi4gDQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gSWYgbm90LCB3aGF0IHNob3VsZCB3ZSBk byB3aGVuIHRoZSBhdXRvIHZhciBpcyBhZGRyZXNzIHRha2VuPw0KPj4+PiANCj4+Pj4gDQo+Pj4g DQo+Pj4gLS0gDQo+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+IFNV U0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgTWF4ZmVsZHN0cmFzc2UgNSwgOTA0 MDkgTnVlcm5iZXJnLA0KPj4+IEdlcm1hbnk7IEdGOiBGZWxpeCBJbWVuZMO2cmZmZXI7IEhSQiAz NjgwOSAoQUcgTnVlcm5iZXJnKQ0KPj4gDQo+IA0KDQo=