From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zg8tmja2lje4os4yms4ymjma.icoremail.net (zg8tmja2lje4os4yms4ymjma.icoremail.net [206.189.21.223]) by sourceware.org (Postfix) with ESMTP id D65663858C2D for ; Sat, 29 Jul 2023 09:14:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D65663858C2D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from E0002168DT (unknown [10.12.97.254]) by app2 (Coremail) with SMTP id EggMCgAnYZJ12MRkiNo3AA--.4049S2; Sat, 29 Jul 2023 17:14:30 +0800 (CST) Date: Sat, 29 Jul 2023 17:14:30 +0800 From: "Xiao Zeng" To: jeffreyalaw , gcc-patches Cc: research_trasio , kito.cheng , zhengyu , eri-sw-toolchain Subject: Re: Re: [PATCH 3/5] [RISC-V] Generate Zicond instruction for select pattern with condition eq or neq to 0 References: <20230719101156.21771-1-zengxiao@eswincomputing.com>, <20230719101156.21771-4-zengxiao@eswincomputing.com>, <51e4b6e3-ef07-8462-f2d0-fc56f5299391@gmail.com> X-Priority: 3 X-GUID: 3CCE5D9F-C19B-46AF-955B-279E450ED577 X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <2023072917142990536214@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:EggMCgAnYZJ12MRkiNo3AA--.4049S2 X-Coremail-Antispam: 1UD129KBjvJXoW3uF4fXFWrCr4DWFWUAFyftFb_yoWDur13pr 1kJrWUJryUJr1rJr18Jr1UJFyUAr1UJw1DJr18XF1UJr1UJr1jgr1UXr1qgr1UJr48Jr1U Jr1UXrnrZr1UJrDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPCb7Iv0xC_KF4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4 A2jsIEc7CjxVAFwI0_GcCE3s1lnx0E6VACY4xI67k04243AVACY4xI67k04243AVAKzVAK j4xI6x02cVCv0xWle2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrV C2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE 7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwACY4xI67k04243AVAKzVAKj4xxMxkIecxEwV Cm-wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMI IF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UMVCEFcxC0VAYjxAxZFUvcSsGvfC2KfnxnUUI 43ZEXa7IUb58n5UUUUU== X-CM-SenderInfo: p2hqw5xldrqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_NUMSUBJECT,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T24gU2F0LCBKdWwgMjksIDIwMjMgYXQgMDQ6NTk6MDAgQU0gwqBKZWZmIExhdyA8amVmZnJleWFs YXdAZ21haWwuY29tPiB3cm90ZToKPgo+Cj4KPk9uIDcvMTkvMjMgMDQ6MTEsIFhpYW8gWmVuZyB3 cm90ZToKPgo+PiArwqAgZWxzZSBpZiAoVEFSR0VUX1pJQ09ORAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgJiYgKGNvZGUgPT0gRVEgfHwgY29kZSA9PSBORSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgICYmIEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX0lOVCkKPj4gK8KgwqDCoCB7Cj4+ ICvCoMKgwqDCoMKgIG5lZWRfZXFfbmVfcCA9IHRydWU7Cj4+ICvCoMKgwqDCoMKgIC8qIDAgKyBp bW3CoCAqLwo+PiArwqDCoMKgwqDCoCBpZiAoR0VUX0NPREUgKGNvbnMpID09IENPTlNUX0lOVCAm JiBjb25zID09IGNvbnN0MF9ydHgKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAmJiBHRVRfQ09ERSAo YWx0KSA9PSBDT05TVF9JTlQgJiYgYWx0ICE9IGNvbnN0MF9ydHgpCj4+ICvCoMKgwqDCoMKgwqDC oCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9pbnRfY29tcGFyZSAoJmNvZGUs ICZvcDAsICZvcDEsIG5lZWRfZXFfbmVfcCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IGNv bmQgPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgR0VUX01PREUgKG9wMCksIG9wMCwgb3AxKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoCBhbHQgPSBmb3JjZV9yZWcgKG1vZGUsIGFsdCk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoZGVzdCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBnZW5fcnR4X0lGX1RIRU5fRUxTRSAobW9kZSwgY29uZCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnMsIGFsdCkpKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqAgLyogaW1tICsgaW1twqAgKi8KPj4gK8KgwqDCoMKgwqAgZWxzZSBpZiAoR0VUX0NP REUgKGNvbnMpID09IENPTlNUX0lOVCAmJiBjb25zICE9IGNvbnN0MF9ydHgKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgR0VUX0NPREUgKGFsdCkgPT0gQ09OU1RfSU5UICYmIGFs dCAhPSBjb25zdDBfcnR4KQo+PiArwqDCoMKgwqDCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqDC oMKgIHJpc2N2X2VtaXRfaW50X2NvbXBhcmUgKCZjb2RlLCAmb3AwLCAmb3AxLCBuZWVkX2VxX25l X3ApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHJ0eCBjb25kID0gZ2VuX3J0eF9mbXRfZWUgKGNv ZGUsIEdFVF9NT0RFIChvcDApLCBvcDAsIG9wMSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgYWx0 ID0gZm9yY2VfcmVnIChtb2RlLCBhbHQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHJ0eCB0ZW1w MSA9IGdlbl9yZWdfcnR4IChtb2RlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBydHggdGVtcDIg PSBHRU5fSU5UKC0xICogSU5UVkFMIChjb25zKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlz Y3ZfZW1pdF9iaW5hcnkoUExVUywgdGVtcDEsIGFsdCwgdGVtcDIpOwo+U28gaW4gdGhpcyBzZXF1 ZW5jZSB5b3UncmUganVzdCBjb21wdXRpbmcgYSBjb25zdGFudCBzaW5jZSBib3RoIEFMVCBhbmQK PkNPTlMgYXJlIGNvbnN0YW50cy7CoCBJdCdzIGJldHRlciB0byBqdXN0IGZvcm0gdGhlIGNvbnN0 YW50IGRpcmVjdGx5LAo+dGhlbiBmb3JjZSB0aGF0IGludG8gYSByZWdpc3RlciBiZWNhdXNlIGl0 J2xsIG1ha2UgdGhlIGNvc3RpbmcgbW9yZQo+Y29ycmVjdCwgcGFydGljdWxhcmx5IGlmIHRoZSBy ZXN1bHRpbmcgY29uc3RhbnQgbmVlZHMgbW9yZSB0aGFuIG9uZQo+aW5zdHJ1Y3Rpb24gdG8gc3lu dGhlc2l6ZS4gCgpGaXhlZAoKPgo+QW5kIGEgbml0LsKgIFRoZXJlIHNob3VsZCBhbHdheXMgYmUg YSBzcGFjZSBiZXR3ZWVuIGEgZnVuY3Rpb24gbmFtZSBhbmQKPml0cyBhcmd1bWVudCBsaXN0LiAK CkZpeGVkCgo+Cj4KPgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIGVtaXRfaW5zbiAoZ2VuX3J0eF9T RVQgKGRlc3QsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2VuX3J0eF9JRl9USEVOX0VMU0UgKG1vZGUsIGNvbmQs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb25zdDBfcnR4LCBhbHQpKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9i aW5hcnkoUExVUywgZGVzdCwgZGVzdCwgY29ucyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHRydWU7Cj5JIGRvbid0IHNlZSBob3cgdGhpcyBjYW4gYmUgY29ycmVjdCBmcm9tIGEgY29k ZSBnZW5lcmF0aW9uIHN0YW5kcG9pbnQuCj5Zb3UgY29tcHV0ZSBBTFQtQ09OUyBpbnRvIFRFTVAx IGVhcmxpZXIuwqAgQnV0IHlvdSBuZXZlciB1c2UgVEVNUDEgYWZ0ZXIKPnRoYXQuwqAgSSB0aGlu ayB5b3UgbWVhbnQgdG8gdXNlIFRFTVAxIGluc3RlYWQgb2YgQUxUIGFzIHRoZSBmYWxzZSBhcm0g aWYKPnRoZSBJRi1USEVOLUVMU0UgeW91IGNvbnN0cnVjdGVkLiAKCkZpeGVkCgo+Cj5JbiBnZW5l cmFsIHlvdSBzaG91bGQgYmUgdXNpbmcgQ09OU1QwX1JUWCAobW9kZSkgcmF0aGVyIHRoYW4gY29u c3QwX3J0eC4KPiAKCkZpeGVkCgo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoCAv KiBpbW0gKyByZWfCoCAqLwo+PiArwqDCoMKgwqDCoCBlbHNlIGlmIChHRVRfQ09ERSAoY29ucykg PT0gQ09OU1RfSU5UICYmIGNvbnMgIT0gY29uc3QwX3J0eAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAmJiBHRVRfQ09ERSAoYWx0KSA9PSBSRUcpCj4+ICvCoMKgwqDCoMKgwqDCoCB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgLyogT3B0aW1pemUgZm9yIHJlZ2lzdGVyIHZhbHVlIG9m IDAuwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBpZiAob3AwID09IGFsdCAmJiBvcDEgPT0g Y29uc3QwX3J0eCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcnR4IGNvbmQgPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgR0VUX01PREUg KG9wMCksIG9wMCwgb3AxKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnMgPSBm b3JjZV9yZWcgKG1vZGUsIGNvbnMpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW1p dF9pbnNuIChnZW5fcnR4X1NFVCAoZGVzdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhf SUZfVEhFTl9FTFNFIChtb2RlLCBjb25kLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zLCBhbHQpKSk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHJpc2N2X2VtaXRfaW50X2NvbXBhcmUgKCZj b2RlLCAmb3AwLCAmb3AxLCBuZWVkX2VxX25lX3ApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHJ0 eCBjb25kID0gZ2VuX3J0eF9mbXRfZWUgKGNvZGUsIEdFVF9NT0RFIChvcDApLCBvcDAsIG9wMSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IHRlbXAxID0gZ2VuX3JlZ19ydHggKG1vZGUpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgIHJ0eCB0ZW1wMiA9IEdFTl9JTlQoLTEgKiBJTlRWQUwgKGNv bnMpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCByaXNjdl9lbWl0X2JpbmFyeShQTFVTLCB0ZW1w MSwgYWx0LCB0ZW1wMik7Cj5IZXJlIHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgaWYgQ09OUyBpcyAt MjA0OC7CoCBZb3UgbmVnYXRlIGl0IHJlc3VsdGluZwo+aW4gKzIwNDggd2hpY2ggY2FuJ3QgYmUg dXNlZCBpbiBhbiBhZGRpLsKgIFRoaXMgd2lsbCBjYXVzZSB0aGUgZW50aXJlCj5zZXF1ZW5jZSB0 byBmYWlsIGR1ZSB0byBhbiB1bnJlY29nbml6ZWQgaW5zbi7CoCBJdCB3b3VsZCBiZSBiZXR0ZXIg dG8KPmhhbmRsZSB0aGF0IHNjZW5hcmlvIGRpcmVjdGx5IHNvIHRoZSBnZW5lcmF0ZWQgc2VxdWVu Y2UgaXMgc3RpbGwgdmFsaWQuCj4KPkJ5IGdlbmVyYXRpbmcgcmVjb2duaXphYmxlIGNvZGUgaW4g dGhhdCBjYXNlIHdlIGxldCB0aGUgY29zdGluZyBtb2RlbAo+ZGV0ZXJtaW5lIGlmIHRoZSBjb25k aXRpb25hbCBtb3ZlIHNlcXVlbmNlIGlzIGJldHRlciB0aGFuIHRoZSBicmFuY2hpbmcKPnNlcXVl bmNlLiAKClRoYW5rIHlvdSBmb3IgcG9pbnRpbmcgb3V0IHRoaXMgc3BlY2lhbCBzaXR1YXRpb24s IGl0IGhhcyBiZWVuIGZpeGVkCgo+Cj4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBlbWl0X2luc24g KGdlbl9ydHhfU0VUIChkZXN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhfSUZfVEhFTl9FTFNFICht b2RlLCBjb25kLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3QwX3J0eCwgYWx0KSkpOwo+SSB0aGluayB3ZSBoYXZlIHRoZSBzYW1l IHByb2JsZW0gd2l0aCB0aGUgdXNlIG9mIEFMVCBoZXJlIHJhdGhlciB0aGFuCj5URU1QMSB0aGF0 IHdlIGhhZCBpbiB0aGUgcHJldmlvdXMgY2FzZS4gCgpGaXhlZAoKPgo+Cj4KPj4gK8KgwqDCoMKg wqAgLyogcmVnICsgaW1twqAgKi8KPj4gK8KgwqDCoMKgwqAgZWxzZSBpZiAoR0VUX0NPREUgKGNv bnMpID09IFJFRwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiBHRVRfQ09ERSAo YWx0KSA9PSBDT05TVF9JTlQgJiYgYWx0ICE9IGNvbnN0MF9ydHgpCj4+ICvCoMKgwqDCoMKgwqDC oCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgLyogT3B0aW1pemUgZm9yIHJlZ2lzdGVyIHZhbHVl IG9mIDAuwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBpZiAob3AwID09IGNvbnMgJiYgb3Ax ID09IGNvbnN0MF9ydHgpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJ0eCBjb25kID0gZ2VuX3J0eF9mbXRfZWUgKGNvZGUsIEdFVF9N T0RFIChvcDApLCBvcDAsIG9wMSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbHQg PSBmb3JjZV9yZWcgKG1vZGUsIGFsdCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bWl0X2luc24gKGdlbl9ydHhfU0VUIChkZXN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2VuX3J0 eF9JRl9USEVOX0VMU0UgKG1vZGUsIGNvbmQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnMsIGFsdCkpKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9pbnRfY29tcGFyZSAo JmNvZGUsICZvcDAsICZvcDEsIG5lZWRfZXFfbmVfcCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAg cnR4IGNvbmQgPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgR0VUX01PREUgKG9wMCksIG9wMCwgb3Ax KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBydHggdGVtcDEgPSBnZW5fcmVnX3J0eCAobW9kZSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IHRlbXAyID0gR0VOX0lOVCgtMSAqIElOVFZBTCAo YWx0KSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9iaW5hcnkoUExVUywgdGVt cDEsIGNvbnMsIHRlbXAyKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBlbWl0X2luc24gKGdlbl9y dHhfU0VUIChkZXN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhfSUZfVEhFTl9FTFNFIChtb2RlLCBj b25kLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdGVtcDEsIGNvbnN0MF9ydHgpKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3Zf ZW1pdF9iaW5hcnkoUExVUywgZGVzdCwgZGVzdCwgYWx0KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gdHJ1ZTsKPlRoaXMgaGFzIGJhc2ljYWxseSB0aGUgc2FtZSBpc3N1ZXMgYXMgdGhl IGltbSArIHJlZyBjYXNlLiAKCkZpeGVkCgo+Cj4KPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqAgLyogcmVnICsgcmVnwqAgKi8KPj4gK8KgwqDCoMKgwqAgZWxzZSBpZiAoR0VUX0NP REUgKGNvbnMpID09IFJFRyAmJiBHRVRfQ09ERSAoYWx0KSA9PSBSRUcpCj4+ICvCoMKgwqDCoMKg wqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IHJlZzEgPSBnZW5fcmVnX3J0eCAobW9k ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IHJlZzIgPSBnZW5fcmVnX3J0eCAobW9kZSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9pbnRfY29tcGFyZSAoJmNvZGUsICZv cDAsICZvcDEsIG5lZWRfZXFfbmVfcCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcnR4IGNvbmQx ID0gZ2VuX3J0eF9mbXRfZWUgKGNvZGUsIEdFVF9NT0RFIChvcDApLCBvcDAsIG9wMSk7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqAgcnR4IGNvbmQyID0gZ2VuX3J0eF9mbXRfZWUgKGNvZGUgPT0gTkUg PyBFUSA6IE5FLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VUX01PREUgKG9wMCksIG9wMCwgb3Ax KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChyZWcyLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGdlbl9ydHhfSUZfVEhFTl9FTFNFIChtb2RlLCBjb25kMiwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0MF9y dHgsIGNvbnMpKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgZW1pdF9pbnNuIChnZW5fcnR4X1NF VCAocmVnMSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW5fcnR4X0lGX1RIRU5fRUxTRSAobW9kZSwgY29uZDEs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb25zdDBfcnR4LCBhbHQpKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgcmlzY3ZfZW1pdF9i aW5hcnkoSU9SLCBkZXN0LCByZWcxLCByZWcyKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gdHJ1ZTsKPlRoaXMgcHJvYmFibHkgc2hvdWxkIGRldGVjdCB0aGUgY2FzZSB3aGVyZSBhbHQg b3IgY29ucyBpcyB0aGUgc2FtZSBhcwo+b3AwLsKgIE90aGVyd2lzZSBJIHdvdWxkIGV4cGVjdCB0 aGUgY29zdGluZyBtb2RlbCB0byByZWplY3Qgc29tZSBjYXNlcwo+dGhhdCBhcmUgYWN0dWFsbHkg cHJvZml0YWJsZS4KPiAKCkZpeGVkCgo+Cj4+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+PiBpbmRleCA2YjhjMmU4ZTI2 OC4uYjQxNDdjN2E3OWMgMTAwNjQ0Cj4+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQK Pj4gKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+PiBAQCAtMjQ4NCw3ICsyNDg0LDcg QEAKPj7CoMKgIChpZl90aGVuX2Vsc2U6R1BSIChtYXRjaF9vcGVyYW5kIDEgImNvbXBhcmlzb25f b3BlcmF0b3IiKQo+PsKgwqAgwqAgKG1hdGNoX29wZXJhbmQ6R1BSIDIgInJlZ19vcl8wX29wZXJh bmQiKQo+PsKgwqAgwqAgKG1hdGNoX29wZXJhbmQ6R1BSIDMgInNmYl9hbHVfb3BlcmFuZCIpKSkK Pj4gLcKgICJUQVJHRVRfU0ZCX0FMVSB8fCBUQVJHRVRfWFRIRUFEQ09ORE1PViIKPj4gK8KgICJU QVJHRVRfU0ZCX0FMVSB8fCBUQVJHRVRfWFRIRUFEQ09ORE1PViB8fCBUQVJHRVRfWklDT05EIgo+ Tm90ZSB0aGUgcHJlZGljYXRlIGZvciBvcGVyYW5kMiB3aWxsIHJlamVjdCBhbGwgY29uc3RhbnRz IGV4Y2VwdCAwLgo+Cj5Bbnl3YXksIEknbSBzdGlsbCBjbGVhbmluZyB0aGlzIHVwIGFuZCBhZGRp bmcgdGhlIGJpdHMgZnJvbSBWZW50YW5hCj53aGljaCBoYW5kbGUgdGhlIHJlbGF0aW9uYWwgY29u ZGl0aW9ucyBhcyB3ZWxsIGFzIEZQIGNvbmRpdGlvbmFscy4KPgo+SmVmZiAKCjEgVGhhbmsgeW91 IGZvciBKZWZmJ3MgY29kZSByZXZpZXcgY29tbWVudHMuIEkgaGF2ZSBtYWRlIHRoZSBtb2RpZmlj YXRpb25zCmFuZCBzdWJtaXR0ZWQgdGhlIFYyLXBhdGNoWzMvNV0uCgoyIEZvciB0aGUgY2FsY3Vs YXRpb24gbWV0aG9kIG9mIGNvc3QsIEkgaG9wZSB0byBzdWJtaXQgYSBzZXBhcmF0ZSBwYXRjaFtj b3N0XQphZnRlciB0aGUgVjItcGF0Y2hbMy81XSBtZXJnZWQgaW50byBtYXN0ZXIsIHdoaWNoIHdp bGwgZm9jdXMgb24gZXhwbGFpbmluZwp0aGUgcmVhc29ucyBmb3IgY2FsY3VsYXRpbmcgY29zdCBp biB0aGUgc2FtZSB3YXkgYXMgaW4gcGF0Y2hbNC81XS4KCjMgQXQgdGhlIHNhbWUgdGltZSwgSSBy ZWFsaXplZCB0aGF0IGZvciBaaWNvbmQncyBzZXJpZXMgb2YgcGF0Y2hlcywgaXQgd291bGQgYmUK YmV0dGVyIHRvIHNwbGl0IHRoZW0gaW50byBzZXBhcmF0ZSBwYXRjaGVzIGFuZCBzdWJtaXQgdGhl bSB0byB0aGUgY29tbXVuaXR5CmNvZGUgcmV2aWV3LiBUaGVyZWZvcmUsIEkgcGxhbiB0byBzdWJt aXQ6IApWMi1wYXRjaFszLzVdCnBhdGNoW2Nvc3RdClYyLXBhdGNoWzQvNV0gClYyLXBhdGNoWzUv NV0KSSB3aWxsIG9ubHkgc3VibWl0IHN1YnNlcXVlbnQgcGF0Y2hlcyBhZnRlciB0aGUgcHJldmlv dXMgcGF0Y2ggZW50ZXJzIHRoZSBtYXN0ZXIuCgo0LiBJbiBWMi1wYXRjaFszLzVdLCBaaWNvbmQn cyBjb3N0IGNhbGN1bGF0aW9uIGlzIG5vdCBpbnZvbHZlZCwgdGhlcmVmb3JlLCBhbGwgdGVzdApj YXNlcyBhcmUgc2tpcHBlZCB3aXRoICItIE8wIiBhbmQgIi0gT3MiLiBJIHdpbGwgcmVtb3ZlIHRo ZSAiLSBPcyIgY29uc3RyYWludCBmcm9tCnRoZSB0ZXN0IGNhc2UgaW4gcGF0Y2hbY29zdF0uCgo1 IFRoZSBhZGRyZXNzIGZvciBWMi1wYXRjaFszLzVdIGlzOsKgaHR0cHM6Ly9nY2MuZ251Lm9yZy9w aXBlcm1haWwvZ2NjLXBhdGNoZXMvMjAyMy1KdWx5LzYyNTc4MS5odG1sCgpUaGFua3MKWGlhbyBa ZW5n