From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44950 invoked by alias); 1 Jun 2017 23:33:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 44926 invoked by uid 89); 1 Jun 2017 23:33:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-22.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,LOTS_OF_MONEY,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=Children, Tab, tus, review! X-HELO: mail-yw0-f196.google.com Received: from mail-yw0-f196.google.com (HELO mail-yw0-f196.google.com) (209.85.161.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Jun 2017 23:33:03 +0000 Received: by mail-yw0-f196.google.com with SMTP id p144so3686939ywp.2 for ; Thu, 01 Jun 2017 16:33:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=U3Y+U0FdJC8H4tc5jYy1L2+fzbRaOvEkjcAB0dt1bbs=; b=Y7ym0i8H4PrIxVNldYBxgGUTYqR2+X6ecOYpCheq1SJg+DM+JPr1TWsM+EEgxndKoK 2c/LsTXeksyyeHAZVC2L2lGik/uOLeD2XzW4Wstnz4Orcuga/qOr3TVae4X8PAt+JLIq jQokcfwhHITKAk/VGXQ2eHKdD75hLmb5ShEdWMazr3rAbqnSNqbMg8w0WQjaINg61yrf R2SJUs99YbZTZQUY3HCEiarFam30QVbozpTkIZT/uJ2zaNBhDGL1Qm9YMhGINUkQ6OJW 2k1CUAAhg0IYmLJlsN9yiveL9XMs8egKFUkwsg+VZT/f/Dy5qV+jjjPZ5XKNpHtk8LZ4 PDiw== X-Gm-Message-State: AODbwcAJnPfHvCsQoQjZmRAdSLNLCxdkuPJ5jbPSii1Pj/ex0FudR/Sx mWUYTZ4e01mPmAxWrjRSUmAPSFdf4St8oT4= X-Received: by 10.129.85.83 with SMTP id j80mr3414819ywb.283.1496359985602; Thu, 01 Jun 2017 16:33:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.83.33.141 with HTTP; Thu, 1 Jun 2017 16:33:04 -0700 (PDT) In-Reply-To: <94eb2c14fcd6985e8c055020a838@google.com> References: <94eb2c14fcd6985e8c055020a838@google.com> From: David Blaikie Date: Thu, 01 Jun 2017 23:33:00 -0000 Message-ID: Subject: Re: [PATCH] Fission support for multiple CUs per DWO file To: Doug Evans Cc: gdb-patches , Pedro Alves Content-Type: multipart/mixed; boundary="001a113f3cbe6620d30550ee754a" X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg00005.txt.bz2 --001a113f3cbe6620d30550ee754a Content-Type: text/plain; charset="UTF-8" Content-length: 8482 gdb/ChangeLog: 2017-05-12 David Blaikie * dwarf2read.c (struct dwo_file): Use a htab of dwo_unit* (rather than a singular dwo_unit*) to support multiple CUs in the same way that multiple TUs are supported. (static void create_cus_hash_table): Replace create_dwo_cu with a function for parsing multiple CUs from a DWO file. (open_and_init_dwo_file): Use create_cus_hash_table rather than create_dwo_cu. (lookup_dwo_cutu): Lookup CU in the hash table in the dwo_file with htab_find, rather than comparing the signature to a singleton CU in the dwo_file. gdb/testsuite/ChangeLog: 2017-05-12 David Blaikie * gdb.dwarf2/fission-multi-cu.S: Test containing multiple CUs in a DWO, built from fission-multi-cu{1,2}.c. * gdb.dwarf2/fission-multi-cu.exp: Test similar to fission-base.exp, except putting 'main' and 'func' in separate CUs while in the same DWO file. * gdb.dwarf2/fission-multi-cu1.c: First CU for the multi-CU-single-DWO test. * gdb.dwarf2/fission-multi-cu2.c: Second CU for the multi-CU-single-DWO test. On Mon, May 22, 2017 at 11:01 AM, Doug Evans wrote: > David Blaikie writes: > > ... > > Hi. Review comments inline. Hi - thanks for the review! (responses inline, patch addressing the issues is attached) Do let me know if there's other things that'd be good to address or if this looks good as-is. Thanks, - Dave > All nits. > > First one: Tab instead of spaces throughout (including ChangeLog entries). Think I got all that addressed - though GMail seems to be getting in my way of adding tabs into the ChangeLog entries inline in the email. I'll be sure they're there when I commit it. > > The testcase is fine with me. > > > gdb/ChangeLog: > > > > 2017-05-12 David Blaikie > > > > * dwarf2read.c (struct dwo_file): Use a htab of dwo_unit* > > (rather than a singular dwo_unit*) to support multiple CUs in the same > > way that multiple TUs are supported. > > (static void create_cus_hash_table): Replace create_dwo_cu > > with a function for parsing multiple CUs from a DWO file. > > (open_and_init_dwo_file): Use create_cus_hash_table rather > > than create_dwo_cu. > > (lookup_dwo_cutu): Lookup CU in the hash table in the dwo_file > > with htab_find, rather than comparing the signature to a singleton CU > > in the dwo_file. > > > > gdb/testsuite/ChangeLog: > > > > 2017-05-12 David Blaikie > > > > * gdb.dwarf2/fission-multi-cu.S: Test containing multiple CUs > > in a DWO, built from fission-multi-cu{1,2}.c. > > * gdb.dwarf2/fission-multi-cu.exp: Test similar to > > fission-base.exp, except putting 'main' and 'func' in separate CUs > > while in the same DWO file. > > * gdb.dwarf2/fission-multi-cu1.c: First CU for the > > multi-CU-single-DWO test. > > * gdb.dwarf2/fission-multi-cu2.c: Second CU for the > > multi-CU-single-DWO test. > > diff --git gdb/dwarf2read.c gdb/dwarf2read.c > > index b58d0fc16e..29eb5a14b2 100644 > > --- gdb/dwarf2read.c > > +++ gdb/dwarf2read.c > > @@ -852,12 +852,9 @@ struct dwo_file > > sections (for lack of a better name). */ > > struct dwo_sections sections; > > > > - /* The CU in the file. > > - We only support one because having more than one requires hacking the > > - dwo_name of each to match, which is highly unlikely to happen. > > - Doing this means all TUs can share comp_dir: We also assume that > > - DW_AT_comp_dir across all TUs in a DWO file will be identical. */ > > - struct dwo_unit *cu; > > + /* The CUs in the file. > > + Each element is a struct dwo_unit. */ > > Since this is currently non-standard, I think it will help some readers > to elaborate on the Why of things here. IOW, add a comment explaining why > we're now supporting multi-CUs in one DWO file. Commented about the use case here & that it's supported as an extension. > > > + htab_t cus; > > > > /* Table of TUs in the file. > > Each element is a struct dwo_unit. */ > > @@ -9702,72 +9699,75 @@ create_dwo_cu_reader (const struct die_reader_specs *reader, > > hex_string (dwo_unit->signature)); > > } > > > > -/* Create the dwo_unit for the lone CU in DWO_FILE. > > - Note: This function processes DWO files only, not DWP files. */ > > Need to keep the function comment (just reword it). > And please keep the note about only being used for DWO files, not DWP files. Kept & reworded. > > > - > > -static struct dwo_unit * > > -create_dwo_cu (struct dwo_file *dwo_file) > > +static void create_cus_hash_table (struct dwo_file &dwo_file, > > + dwarf2_section_info §ion, > > + htab_t &cus_htab) > > { > > struct objfile *objfile = dwarf2_per_objfile->objfile; > > - struct dwarf2_section_info *section = &dwo_file->sections.info; > > + const struct dwarf2_section_info *abbrev_section = &dwo_file.sections.abbrev; > > const gdb_byte *info_ptr, *end_ptr; > > - struct create_dwo_cu_data create_dwo_cu_data; > > - struct dwo_unit *dwo_unit; > > > > - dwarf2_read_section (objfile, section); > > - info_ptr = section->buffer; > > + dwarf2_read_section (objfile, §ion); > > + info_ptr = section.buffer; > > > > if (info_ptr == NULL) > > - return NULL; > > + return; > > > > if (dwarf_read_debug) > > { > > fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n", > > - get_section_name (section), > > - get_section_file_name (section)); > > + get_section_name (§ion), > > + get_section_file_name (§ion)); > > } > > > > - create_dwo_cu_data.dwo_file = dwo_file; > > - dwo_unit = NULL; > > - > > - end_ptr = info_ptr + section->size; > > + end_ptr = info_ptr + section.size; > > extra space Removed. > > > while (info_ptr < end_ptr) > > { > > struct dwarf2_per_cu_data per_cu; > > + struct create_dwo_cu_data create_dwo_cu_data; > > + struct dwo_unit *dwo_unit; > > + void **slot; > > + sect_offset sect_off = (sect_offset) (info_ptr - section.buffer); > > > > memset (&create_dwo_cu_data.dwo_unit, 0, > > sizeof (create_dwo_cu_data.dwo_unit)); > > memset (&per_cu, 0, sizeof (per_cu)); > > per_cu.objfile = objfile; > > per_cu.is_debug_types = 0; > > - per_cu.sect_off = sect_offset (info_ptr - section->buffer); > > - per_cu.section = section; > > + per_cu.sect_off = sect_offset (info_ptr - section.buffer); > > + per_cu.section = §ion; > > + create_dwo_cu_data.dwo_file = &dwo_file; > > > > - init_cutu_and_read_dies_no_follow (&per_cu, dwo_file, > > + init_cutu_and_read_dies_no_follow (&per_cu, &dwo_file, > > create_dwo_cu_reader, > > &create_dwo_cu_data); > > + info_ptr += per_cu.length; > > > > - if (create_dwo_cu_data.dwo_unit.dwo_file != NULL) > > - { > > - /* If we've already found one, complain. We only support one > > - because having more than one requires hacking the dwo_name of > > - each to match, which is highly unlikely to happen. */ > > - if (dwo_unit != NULL) > > - { > > - complaint (&symfile_complaints, > > - _("Multiple CUs in DWO file %s [in module %s]"), > > - dwo_file->dwo_name, objfile_name (objfile)); > > - break; > > - } > > Add a comment explaining why this test is present: > > > + if (create_dwo_cu_data.dwo_unit.dwo_file == NULL) > > + continue; Added a comment & fixed a mistake I introduced by initializing dwo_file before this call rather than letting the call initialize it. Looks like the original code was using this for error detection & I attempted to keep that the same but broke it by initializing the value early. > > > > - dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit); > > - *dwo_unit = create_dwo_cu_data.dwo_unit; > > - } > > + if (cus_htab == NULL) > > Remove the surrounding braces. > > > + { > > + cus_htab = allocate_dwo_unit_table (objfile); > > + } Removed & reduced indentation. --001a113f3cbe6620d30550ee754a Content-Type: text/plain; charset="US-ASCII"; name="multiple_cus_per_dwo.diff" Content-Disposition: attachment; filename="multiple_cus_per_dwo.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3f1oxd00 Content-length: 35409 ZGlmZiAtLWdpdCBnZGIvZHdhcmYycmVhZC5jIGdkYi9kd2FyZjJyZWFkLmMK aW5kZXggYjU4ZDBmYzE2ZS4uOTY1ZDc0YzQ0ZiAxMDA2NDQKLS0tIGdkYi9k d2FyZjJyZWFkLmMKKysrIGdkYi9kd2FyZjJyZWFkLmMKQEAgLTg1MiwxMiAr ODUyLDExIEBAIHN0cnVjdCBkd29fZmlsZQogICAgICBzZWN0aW9ucyAoZm9y IGxhY2sgb2YgYSBiZXR0ZXIgbmFtZSkuICAqLwogICBzdHJ1Y3QgZHdvX3Nl Y3Rpb25zIHNlY3Rpb25zOwogCi0gIC8qIFRoZSBDVSBpbiB0aGUgZmlsZS4K LSAgICAgV2Ugb25seSBzdXBwb3J0IG9uZSBiZWNhdXNlIGhhdmluZyBtb3Jl IHRoYW4gb25lIHJlcXVpcmVzIGhhY2tpbmcgdGhlCi0gICAgIGR3b19uYW1l IG9mIGVhY2ggdG8gbWF0Y2gsIHdoaWNoIGlzIGhpZ2hseSB1bmxpa2VseSB0 byBoYXBwZW4uCi0gICAgIERvaW5nIHRoaXMgbWVhbnMgYWxsIFRVcyBjYW4g c2hhcmUgY29tcF9kaXI6IFdlIGFsc28gYXNzdW1lIHRoYXQKLSAgICAgRFdf QVRfY29tcF9kaXIgYWNyb3NzIGFsbCBUVXMgaW4gYSBEV08gZmlsZSB3aWxs IGJlIGlkZW50aWNhbC4gICovCi0gIHN0cnVjdCBkd29fdW5pdCAqY3U7Cisg IC8qIFRoZSBDVXMgaW4gdGhlIGZpbGUuCisgICAgIEVhY2ggZWxlbWVudCBp cyBhIHN0cnVjdCBkd29fdW5pdC4gTXVsdGlwbGUgQ1VzIHBlciBEV08gYXJl IHN1cHBvcnRlZCBhcworICAgICBhbiBleHRlbnNpb24gdG8gaGFuZGxlIExM Vk0ncyBMaW5rIFRpbWUgT3B0aW1pemF0aW9uIG91dHB1dCAod2hlcmUKKyAg ICAgbXVsdGlwbGUgc291cmNlIGZpbGVzIG1heSBiZSBjb21waWxlZCBpbnRv IGEgc2luZ2xlIG9iamVjdC9kd28gcGFpcikuICovCisgIGh0YWJfdCBjdXM7 CiAKICAgLyogVGFibGUgb2YgVFVzIGluIHRoZSBmaWxlLgogICAgICBFYWNo IGVsZW1lbnQgaXMgYSBzdHJ1Y3QgZHdvX3VuaXQuICAqLwpAQCAtOTcwMiw3 MiArOTcwMSw3NSBAQCBjcmVhdGVfZHdvX2N1X3JlYWRlciAoY29uc3Qgc3Ry dWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKIAkJCWhleF9zdHJpbmcg KGR3b191bml0LT5zaWduYXR1cmUpKTsKIH0KIAotLyogQ3JlYXRlIHRoZSBk d29fdW5pdCBmb3IgdGhlIGxvbmUgQ1UgaW4gRFdPX0ZJTEUuCisvKiBDcmVh dGUgdGhlIGR3b191bml0cyBmb3IgdGhlIENVcyBpbiBhIERXT19GSUxFLgog ICAgTm90ZTogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgRFdPIGZpbGVzIG9u bHksIG5vdCBEV1AgZmlsZXMuICAqLwogCi1zdGF0aWMgc3RydWN0IGR3b191 bml0ICoKLWNyZWF0ZV9kd29fY3UgKHN0cnVjdCBkd29fZmlsZSAqZHdvX2Zp bGUpCitzdGF0aWMgdm9pZAorY3JlYXRlX2N1c19oYXNoX3RhYmxlIChzdHJ1 Y3QgZHdvX2ZpbGUgJmR3b19maWxlLCBkd2FyZjJfc2VjdGlvbl9pbmZvICZz ZWN0aW9uLAorCQkgICAgICAgaHRhYl90ICZjdXNfaHRhYikKIHsKICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9i amZpbGU7Ci0gIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9u ID0gJmR3b19maWxlLT5zZWN0aW9ucy5pbmZvOworICBjb25zdCBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyAqYWJicmV2X3NlY3Rpb24gPSAmZHdvX2Zp bGUuc2VjdGlvbnMuYWJicmV2OwogICBjb25zdCBnZGJfYnl0ZSAqaW5mb19w dHIsICplbmRfcHRyOwotICBzdHJ1Y3QgY3JlYXRlX2R3b19jdV9kYXRhIGNy ZWF0ZV9kd29fY3VfZGF0YTsKLSAgc3RydWN0IGR3b191bml0ICpkd29fdW5p dDsKIAotICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9u KTsKLSAgaW5mb19wdHIgPSBzZWN0aW9uLT5idWZmZXI7CisgIGR3YXJmMl9y ZWFkX3NlY3Rpb24gKG9iamZpbGUsICZzZWN0aW9uKTsKKyAgaW5mb19wdHIg PSBzZWN0aW9uLmJ1ZmZlcjsKIAogICBpZiAoaW5mb19wdHIgPT0gTlVMTCkK LSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm47CiAKICAgaWYgKGR3YXJm X3JlYWRfZGVidWcpCiAgICAgewogICAgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAiUmVhZGluZyAlcyBmb3IgJXM6XG4iLAotCQkJICBn ZXRfc2VjdGlvbl9uYW1lIChzZWN0aW9uKSwKLQkJCSAgZ2V0X3NlY3Rpb25f ZmlsZV9uYW1lIChzZWN0aW9uKSk7CisJCQkgIGdldF9zZWN0aW9uX25hbWUg KCZzZWN0aW9uKSwKKwkJCSAgZ2V0X3NlY3Rpb25fZmlsZV9uYW1lICgmc2Vj dGlvbikpOwogICAgIH0KIAotICBjcmVhdGVfZHdvX2N1X2RhdGEuZHdvX2Zp bGUgPSBkd29fZmlsZTsKLSAgZHdvX3VuaXQgPSBOVUxMOwotCi0gIGVuZF9w dHIgPSBpbmZvX3B0ciArIHNlY3Rpb24tPnNpemU7CisgIGVuZF9wdHIgPSBp bmZvX3B0ciArIHNlY3Rpb24uc2l6ZTsKICAgd2hpbGUgKGluZm9fcHRyIDwg ZW5kX3B0cikKICAgICB7CiAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhIHBlcl9jdTsKKyAgICAgIHN0cnVjdCBjcmVhdGVfZHdvX2N1X2RhdGEg Y3JlYXRlX2R3b19jdV9kYXRhOworICAgICAgc3RydWN0IGR3b191bml0ICpk d29fdW5pdDsKKyAgICAgIHZvaWQgKipzbG90OworICAgICAgc2VjdF9vZmZz ZXQgc2VjdF9vZmYgPSAoc2VjdF9vZmZzZXQpIChpbmZvX3B0ciAtIHNlY3Rp b24uYnVmZmVyKTsKIAogICAgICAgbWVtc2V0ICgmY3JlYXRlX2R3b19jdV9k YXRhLmR3b191bml0LCAwLAogCSAgICAgIHNpemVvZiAoY3JlYXRlX2R3b19j dV9kYXRhLmR3b191bml0KSk7CiAgICAgICBtZW1zZXQgKCZwZXJfY3UsIDAs IHNpemVvZiAocGVyX2N1KSk7CiAgICAgICBwZXJfY3Uub2JqZmlsZSA9IG9i amZpbGU7CiAgICAgICBwZXJfY3UuaXNfZGVidWdfdHlwZXMgPSAwOwotICAg ICAgcGVyX2N1LnNlY3Rfb2ZmID0gc2VjdF9vZmZzZXQgKGluZm9fcHRyIC0g c2VjdGlvbi0+YnVmZmVyKTsKLSAgICAgIHBlcl9jdS5zZWN0aW9uID0gc2Vj dGlvbjsKKyAgICAgIHBlcl9jdS5zZWN0X29mZiA9IHNlY3Rfb2Zmc2V0IChp bmZvX3B0ciAtIHNlY3Rpb24uYnVmZmVyKTsKKyAgICAgIHBlcl9jdS5zZWN0 aW9uID0gJnNlY3Rpb247CisKKyAgICAgIGluaXRfY3V0dV9hbmRfcmVhZF9k aWVzX25vX2ZvbGxvdyAoCisJICAmcGVyX2N1LCAmZHdvX2ZpbGUsIGNyZWF0 ZV9kd29fY3VfcmVhZGVyLCAmY3JlYXRlX2R3b19jdV9kYXRhKTsKKyAgICAg IGluZm9fcHRyICs9IHBlcl9jdS5sZW5ndGg7CisKKyAgICAgIC8vIElmIHRo ZSB1bml0IGNvdWxkIG5vdCBiZSBwYXJzZWQsIHNraXAgaXQuCisgICAgICBp ZiAoY3JlYXRlX2R3b19jdV9kYXRhLmR3b191bml0LmR3b19maWxlID09IE5V TEwpCisJY29udGludWU7CiAKLSAgICAgIGluaXRfY3V0dV9hbmRfcmVhZF9k aWVzX25vX2ZvbGxvdyAoJnBlcl9jdSwgZHdvX2ZpbGUsCi0JCQkJCSBjcmVh dGVfZHdvX2N1X3JlYWRlciwKLQkJCQkJICZjcmVhdGVfZHdvX2N1X2RhdGEp OworICAgICAgaWYgKGN1c19odGFiID09IE5VTEwpCisJY3VzX2h0YWIgPSBh bGxvY2F0ZV9kd29fdW5pdF90YWJsZSAob2JqZmlsZSk7CiAKLSAgICAgIGlm IChjcmVhdGVfZHdvX2N1X2RhdGEuZHdvX3VuaXQuZHdvX2ZpbGUgIT0gTlVM TCkKKyAgICAgIGR3b191bml0ID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkd29fdW5pdCk7CisgICAgICAq ZHdvX3VuaXQgPSBjcmVhdGVfZHdvX2N1X2RhdGEuZHdvX3VuaXQ7CisgICAg ICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGN1c19odGFiLCBkd29fdW5pdCwg SU5TRVJUKTsKKyAgICAgIGdkYl9hc3NlcnQgKHNsb3QgIT0gTlVMTCk7Cisg ICAgICBpZiAoKnNsb3QgIT0gTlVMTCkKIAl7Ci0JICAvKiBJZiB3ZSd2ZSBh bHJlYWR5IGZvdW5kIG9uZSwgY29tcGxhaW4uICBXZSBvbmx5IHN1cHBvcnQg b25lCi0JICAgICBiZWNhdXNlIGhhdmluZyBtb3JlIHRoYW4gb25lIHJlcXVp cmVzIGhhY2tpbmcgdGhlIGR3b19uYW1lIG9mCi0JICAgICBlYWNoIHRvIG1h dGNoLCB3aGljaCBpcyBoaWdobHkgdW5saWtlbHkgdG8gaGFwcGVuLiAgKi8K LQkgIGlmIChkd29fdW5pdCAhPSBOVUxMKQotCSAgICB7Ci0JICAgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotCQkJIF8oIk11bHRpcGxl IENVcyBpbiBEV08gZmlsZSAlcyBbaW4gbW9kdWxlICVzXSIpLAotCQkJIGR3 b19maWxlLT5kd29fbmFtZSwgb2JqZmlsZV9uYW1lIChvYmpmaWxlKSk7Ci0J ICAgICAgYnJlYWs7Ci0JICAgIH0KKwkgIGNvbnN0IHN0cnVjdCBkd29fdW5p dCAqZHVwX2N1ID0gKGNvbnN0IHN0cnVjdCBkd29fdW5pdCAqKSpzbG90Owor CSAgc2VjdF9vZmZzZXQgZHVwX3NlY3Rfb2ZmID0gZHVwX2N1LT5zZWN0X29m ZjsKIAotCSAgZHdvX3VuaXQgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywgc3RydWN0IGR3b191bml0KTsKLQkgICpkd29f dW5pdCA9IGNyZWF0ZV9kd29fY3VfZGF0YS5kd29fdW5pdDsKKwkgIGNvbXBs YWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKwkJICAgICBfKCJkZWJ1ZyBj dSBlbnRyeSBhdCBvZmZzZXQgMHgleCBpcyBkdXBsaWNhdGUgdG8iCisJCSAg ICAgICAiIHRoZSBlbnRyeSBhdCBvZmZzZXQgMHgleCwgc2lnbmF0dXJlICVz IiksCisJCSAgICAgdG9fdW5kZXJseWluZyAoc2VjdF9vZmYpLCB0b191bmRl cmx5aW5nIChkdXBfc2VjdF9vZmYpLAorCQkgICAgIGhleF9zdHJpbmcgKGR3 b191bml0LT5zaWduYXR1cmUpKTsKIAl9Ci0KLSAgICAgIGluZm9fcHRyICs9 IHBlcl9jdS5sZW5ndGg7CisgICAgICAqc2xvdCA9ICh2b2lkICopZHdvX3Vu aXQ7CiAgICAgfQotCi0gIHJldHVybiBkd29fdW5pdDsKIH0KIAogLyogRFdQ IGZpbGUgLmRlYnVnX3tjdSx0dX1faW5kZXggc2VjdGlvbiBmb3JtYXQ6CkBA IC0xMDc3Miw3ICsxMDc3NCw3IEBAIG9wZW5fYW5kX2luaXRfZHdvX2ZpbGUg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKICAgYmZkX21h cF9vdmVyX3NlY3Rpb25zIChkd29fZmlsZS0+ZGJmZCwgZHdhcmYyX2xvY2F0 ZV9kd29fc2VjdGlvbnMsCiAJCQkgJmR3b19maWxlLT5zZWN0aW9ucyk7CiAK LSAgZHdvX2ZpbGUtPmN1ID0gY3JlYXRlX2R3b19jdSAoZHdvX2ZpbGUpOwor ICBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKCpkd29fZmlsZSwgZHdvX2ZpbGUt PnNlY3Rpb25zLmluZm8sIGR3b19maWxlLT5jdXMpOwogCiAgIGNyZWF0ZV9k ZWJ1Z190eXBlc19oYXNoX3RhYmxlIChkd29fZmlsZSwgZHdvX2ZpbGUtPnNl Y3Rpb25zLnR5cGVzLAogCQkJCSBkd29fZmlsZS0+dHVzKTsKQEAgLTExMTM5 LDEwICsxMTE0MSwxNCBAQCBsb29rdXBfZHdvX2N1dHUgKHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnRoaXNfdW5pdCwKIAkgICAgICBkd29fY3V0dQog CQk9IChzdHJ1Y3QgZHdvX3VuaXQgKikgaHRhYl9maW5kIChkd29fZmlsZS0+ dHVzLCAmZmluZF9kd29fY3V0dSk7CiAJICAgIH0KLQkgIGVsc2UgaWYgKCFp c19kZWJ1Z190eXBlcyAmJiBkd29fZmlsZS0+Y3UpCisJICBlbHNlIGlmICgh aXNfZGVidWdfdHlwZXMgJiYgZHdvX2ZpbGUtPmN1cykKIAkgICAgewotCSAg ICAgIGlmIChzaWduYXR1cmUgPT0gZHdvX2ZpbGUtPmN1LT5zaWduYXR1cmUp Ci0JCWR3b19jdXR1ID0gZHdvX2ZpbGUtPmN1OworCSAgICAgIHN0cnVjdCBk d29fdW5pdCBmaW5kX2R3b19jdXR1OworCisJICAgICAgbWVtc2V0ICgmZmlu ZF9kd29fY3V0dSwgMCwgc2l6ZW9mIChmaW5kX2R3b19jdXR1KSk7CisJICAg ICAgZmluZF9kd29fY3V0dS5zaWduYXR1cmUgPSBzaWduYXR1cmU7CisJICAg ICAgZHdvX2N1dHUgPSAoc3RydWN0IGR3b191bml0ICopaHRhYl9maW5kIChk d29fZmlsZS0+Y3VzLAorCQkJCQkJICAgICAgICZmaW5kX2R3b19jdXR1KTsK IAkgICAgfQogCiAJICBpZiAoZHdvX2N1dHUgIT0gTlVMTCkKZGlmZiAtLWdp dCBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZmlzc2lvbi1tdWx0aS1jdS5T IGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9uLW11bHRpLWN1LlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDA5YTdl NTQzZAotLS0gL2Rldi9udWxsCisrKyBnZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZmlzc2lvbi1tdWx0aS1jdS5TCkBAIC0wLDAgKzEsMzc0IEBACisvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgorCisgICBDb3B5cmlnaHQgMjAxMi0yMDE3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyAg IFRoaXMgZmlsZSB3YXMgY3JlYXRlZCBieSBkb2luZzoKKworICAgY2xhbmcg Zmlzc2lvbi1tdWx0aS1jdSouYyAtZyAtZm5vLXNwbGl0LWR3YXJmLWlubGlu aW5nIC1lbWl0LWxsdm0gLVMgLWMKKyAgIGxsdm0tbGluayBmaXNzaW9uLW11 bHRpLWN1Ki5sbCAtUyAtbyBmaXNzaW9uLW11bHRpLWN1LmxsCisgICBjbGFu Zy10b3QgZmlzc2lvbi1tdWx0aS1jdS5sbCAtZ3NwbGl0LWR3YXJmIC1TCisK KyAgIGFuZCB0aGVuIG1hc3NhZ2luZyB0aGUgb3V0cHV0LgorKi8KKwkudGV4 dAorCS5maWxlCSJsbHZtLWxpbmsiCisJLmdsb2JsCWZ1bmMKKwkucDJhbGln bgk0LCAweDkwCisJLnR5cGUJZnVuYyxAZnVuY3Rpb24KK2Z1bmM6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEBmdW5jCisuTGZ1bmNf YmVnaW4wOgorCS5maWxlCTEgImZpc3Npb24tbXVsdGktY3UxLmMiCisJLmxv YwkxIDIwIDAgICAgICAgICAgICAgICAgICAjIGZpc3Npb24tbXVsdGktY3Ux LmM6MjA6MAorCS5jZmlfc3RhcnRwcm9jCisjIEJCIzA6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyAlZW50cnkKKwlwdXNocQklcmJwCisJ LmNmaV9kZWZfY2ZhX29mZnNldCAxNgorCS5jZmlfb2Zmc2V0ICVyYnAsIC0x NgorCW1vdnEJJXJzcCwgJXJicAorCS5jZmlfZGVmX2NmYV9yZWdpc3RlciAl cmJwCisJbW92bAklZWRpLCAtNCglcmJwKQorCS5sb2MJMSAyMSAxMCBwcm9s b2d1ZV9lbmQgICAgIyBmaXNzaW9uLW11bHRpLWN1MS5jOjIxOjEwCisJbW92 bAktNCglcmJwKSwgJWVkaQorCS5sb2MJMSAyMSAxNCBpc19zdG10IDAgICAg ICAgIyBmaXNzaW9uLW11bHRpLWN1MS5jOjIxOjE0CisJYWRkbAkkMSwgJWVk aQorCS5sb2MJMSAyMSAzICAgICAgICAgICAgICAgICAgIyBmaXNzaW9uLW11 bHRpLWN1MS5jOjIxOjMKKwltb3ZsCSVlZGksICVlYXgKKwlwb3BxCSVyYnAK KwlyZXRxCisuTGZ1bmNfZW5kMDoKKwkuc2l6ZQlmdW5jLCAuTGZ1bmNfZW5k MC1mdW5jCisJLmNmaV9lbmRwcm9jCisKKwkuZ2xvYmwJbWFpbgorCS5wMmFs aWduCTQsIDB4OTAKKwkudHlwZQltYWluLEBmdW5jdGlvbgorbWFpbjogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQG1haW4KKy5MZnVu Y19iZWdpbjE6CisJLmZpbGUJMiAiZmlzc2lvbi1tdWx0aS1jdTIuYyIKKwku bG9jCTIgMjMgMCBpc19zdG10IDEgICAgICAgICMgZmlzc2lvbi1tdWx0aS1j dTIuYzoyMzowCisJLmNmaV9zdGFydHByb2MKKyMgQkIjMDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjICVlbnRyeQorCXB1c2hxCSVyYnAK KwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2CisJLmNmaV9vZmZzZXQgJXJicCwg LTE2CisJbW92cQklcnNwLCAlcmJwCisJLmNmaV9kZWZfY2ZhX3JlZ2lzdGVy ICVyYnAKKwltb3ZsCSQ0Mjk0OTY3Mjk1LCAlZWRpICAgICAgICMgaW1tID0g MHhGRkZGRkZGRgorCS5sb2MJMiAyNCAzIHByb2xvZ3VlX2VuZCAgICAgIyBm aXNzaW9uLW11bHRpLWN1Mi5jOjI0OjMKKwltb3ZiCSQwLCAlYWwKKwljYWxs cQlmdW5jCisJeG9ybAklZWF4LCAlZWF4CisJLmxvYwkyIDI1IDEgICAgICAg ICAgICAgICAgICAjIGZpc3Npb24tbXVsdGktY3UyLmM6MjU6MQorCXBvcHEJ JXJicAorCXJldHEKKy5MZnVuY19lbmQxOgorCS5zaXplCW1haW4sIC5MZnVu Y19lbmQxLW1haW4KKwkuY2ZpX2VuZHByb2MKKworCS5zZWN0aW9uCS5kZWJ1 Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQorLkxza2VsX3N0cmluZzA6CisJLmFz Y2l6CSJmaXNzaW9uLW11bHRpLWN1LmR3byIgICMgc3RyaW5nIG9mZnNldD0w CisuTHNrZWxfc3RyaW5nMToKKwkuYXNjaXoJIi90bXAvc3JjL2dkYi90ZXN0 c3VpdGUiICMgc3RyaW5nIG9mZnNldD0yMQorCS5zZWN0aW9uCS5kZWJ1Z19s b2MuZHdvLCIiLEBwcm9nYml0cworCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYs IiIsQHByb2diaXRzCisJLmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAg IyBBYmJyZXZpYXRpb24gQ29kZQorCS5ieXRlCTE3ICAgICAgICAgICAgICAg ICAgICAgICMgRFdfVEFHX2NvbXBpbGVfdW5pdAorCS5ieXRlCTAgICAgICAg ICAgICAgICAgICAgICAgICMgRFdfQ0hJTERSRU5fbm8KKwkuYnl0ZQkxNiAg ICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3N0bXRfbGlzdAorCS5ieXRl CTIzICAgICAgICAgICAgICAgICAgICAgICMgRFdfRk9STV9zZWNfb2Zmc2V0 CisJLmFzY2lpCSJcMjYwQiIgICAgICAgICAgICAgICAgICMgRFdfQVRfR05V X2R3b19uYW1lCisJLmJ5dGUJMTQgICAgICAgICAgICAgICAgICAgICAgIyBE V19GT1JNX3N0cnAKKwkuYnl0ZQkyNyAgICAgICAgICAgICAgICAgICAgICAj IERXX0FUX2NvbXBfZGlyCisJLmJ5dGUJMTQgICAgICAgICAgICAgICAgICAg ICAgIyBEV19GT1JNX3N0cnAKKwkuYXNjaWkJIlwyNjFCIiAgICAgICAgICAg ICAgICAgIyBEV19BVF9HTlVfZHdvX2lkCisJLmJ5dGUJNyAgICAgICAgICAg ICAgICAgICAgICAgIyBEV19GT1JNX2RhdGE4CisJLmFzY2lpCSJcMjYzQiIg ICAgICAgICAgICAgICAgICMgRFdfQVRfR05VX2FkZHJfYmFzZQorCS5ieXRl CTIzICAgICAgICAgICAgICAgICAgICAgICMgRFdfRk9STV9zZWNfb2Zmc2V0 CisJLmJ5dGUJMTcgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9sb3df cGMKKwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1f YWRkcgorCS5ieXRlCTE4ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRf aGlnaF9wYworCS5ieXRlCTYgICAgICAgICAgICAgICAgICAgICAgICMgRFdf Rk9STV9kYXRhNAorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMg RU9NKDEpCisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00o MikKKwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgzKQor CS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cworLkxjdV9iZWdp bjA6CisJLmxvbmcJNDQgICAgICAgICAgICAgICAgICAgICAgIyBMZW5ndGgg b2YgVW5pdAorCS5zaG9ydAk0ICAgICAgICAgICAgICAgICAgICAgICAjIERX QVJGIHZlcnNpb24gbnVtYmVyCisJLmxvbmcJLmRlYnVnX2FiYnJldiAgICAg ICAgICAgIyBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24KKwkuYnl0ZQk4 ICAgICAgICAgICAgICAgICAgICAgICAjIEFkZHJlc3MgU2l6ZSAoaW4gYnl0 ZXMpCisJLmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXYg WzFdIDB4YjoweDI1IERXX1RBR19jb21waWxlX3VuaXQKKwkubG9uZwkuTGxp bmVfdGFibGVfc3RhcnQwICAgICAjIERXX0FUX3N0bXRfbGlzdAorCS5sb25n CS5Mc2tlbF9zdHJpbmcwICAgICAgICAgICMgRFdfQVRfR05VX2R3b19uYW1l CisJLmxvbmcJLkxza2VsX3N0cmluZzEgICAgICAgICAgIyBEV19BVF9jb21w X2RpcgorCS5xdWFkCTc2MTU4NTIwNjc3NDc0MzE0MTMgICAgICMgRFdfQVRf R05VX2R3b19pZAorCS5sb25nCS5kZWJ1Z19hZGRyICAgICAgICAgICAgICMg RFdfQVRfR05VX2FkZHJfYmFzZQorCS5xdWFkCS5MZnVuY19iZWdpbjAgICAg ICAgICAgICMgRFdfQVRfbG93X3BjCisJLmxvbmcJLkxmdW5jX2VuZDAtLkxm dW5jX2JlZ2luMCAjIERXX0FUX2hpZ2hfcGMKKy5MY3VfYmVnaW4xOgorCS5s b25nCTQ0ICAgICAgICAgICAgICAgICAgICAgICMgTGVuZ3RoIG9mIFVuaXQK Kwkuc2hvcnQJNCAgICAgICAgICAgICAgICAgICAgICAgIyBEV0FSRiB2ZXJz aW9uIG51bWJlcgorCS5sb25nCS5kZWJ1Z19hYmJyZXYgICAgICAgICAgICMg T2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uCisJLmJ5dGUJOCAgICAgICAg ICAgICAgICAgICAgICAgIyBBZGRyZXNzIFNpemUgKGluIGJ5dGVzKQorCS5i eXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgQWJicmV2IFsxXSAweGI6 MHgyNSBEV19UQUdfY29tcGlsZV91bml0CisJLmxvbmcJLkxsaW5lX3RhYmxl X3N0YXJ0MCAgICAgIyBEV19BVF9zdG10X2xpc3QKKwkubG9uZwkuTHNrZWxf c3RyaW5nMCAgICAgICAgICAjIERXX0FUX0dOVV9kd29fbmFtZQorCS5sb25n CS5Mc2tlbF9zdHJpbmcxICAgICAgICAgICMgRFdfQVRfY29tcF9kaXIKKwku cXVhZAkyMDM3NjUwMjYxNTk5NjkyMzI0ICAgICAjIERXX0FUX0dOVV9kd29f aWQKKwkubG9uZwkuZGVidWdfYWRkciAgICAgICAgICAgICAjIERXX0FUX0dO VV9hZGRyX2Jhc2UKKwkucXVhZAkuTGZ1bmNfYmVnaW4xICAgICAgICAgICAj IERXX0FUX2xvd19wYworCS5sb25nCS5MZnVuY19lbmQxLS5MZnVuY19iZWdp bjEgIyBEV19BVF9oaWdoX3BjCisJLnNlY3Rpb24JLmRlYnVnX3Jhbmdlcywi IixAcHJvZ2JpdHMKKwkuc2VjdGlvbgkuZGVidWdfbWFjaW5mbywiIixAcHJv Z2JpdHMKKy5MY3VfbWFjcm9fYmVnaW4xOgorLkxjdV9tYWNyb19iZWdpbjM6 CisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgT2YgTWFj cm8gTGlzdCBNYXJrCisJLnNlY3Rpb24JLmRlYnVnX3N0ci5kd28sIk1TIixA cHJvZ2JpdHMsMQorLkxpbmZvX3N0cmluZzA6CisJLmFzY2l6CSJmaXNzaW9u LW11bHRpLWN1LmR3byIgICMgc3RyaW5nIG9mZnNldD0wCisuTGluZm9fc3Ry aW5nMToKKwkuYXNjaXoJImNsYW5nIHZlcnNpb24gNS4wLjAgKHRydW5rIDMw Mjg1NSkgKGxsdm0vdHJ1bmsgMzAyODUzKSIgIyBzdHJpbmcgb2Zmc2V0PTIx CisuTGluZm9fc3RyaW5nMjoKKwkuYXNjaXoJImZpc3Npb24tbXVsdGktY3Ux LmMiICMgc3RyaW5nIG9mZnNldD03NgorLkxpbmZvX3N0cmluZzM6CisJLmFz Y2l6CSJmaXNzaW9uLW11bHRpLWN1Mi5jIiAjIHN0cmluZyBvZmZzZXQ9OTYK Ky5MaW5mb19zdHJpbmc0OgorCS5hc2NpegkiZnVuYyIgICAgICAgICAgICAg ICAgICAjIHN0cmluZyBvZmZzZXQ9MTE2CisuTGluZm9fc3RyaW5nNToKKwku YXNjaXoJImludCIgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcgb2Zmc2V0 PTEyMQorLkxpbmZvX3N0cmluZzY6CisJLmFzY2l6CSJtYWluIiAgICAgICAg ICAgICAgICAgICMgc3RyaW5nIG9mZnNldD0xMjUKKy5MaW5mb19zdHJpbmc3 OgorCS5hc2NpegkiYXJnIiAgICAgICAgICAgICAgICAgICAjIHN0cmluZyBv ZmZzZXQ9MTMwCisJLnNlY3Rpb24JLmRlYnVnX3N0cl9vZmZzZXRzLmR3bywi IixAcHJvZ2JpdHMKKwkubG9uZwkwCisJLmxvbmcJMjEKKwkubG9uZwk3Ngor CS5sb25nCTk2CisJLmxvbmcJMTE2CisJLmxvbmcJMTIxCisJLmxvbmcJMTI1 CisJLmxvbmcJMTMwCisJLnNlY3Rpb24JLmRlYnVnX2luZm8uZHdvLCIiLEBw cm9nYml0cworCS5sb25nCTUzICAgICAgICAgICAgICAgICAgICAgICMgTGVu Z3RoIG9mIFVuaXQKKwkuc2hvcnQJNCAgICAgICAgICAgICAgICAgICAgICAg IyBEV0FSRiB2ZXJzaW9uIG51bWJlcgorCS5sb25nCTAgICAgICAgICAgICAg ICAgICAgICAgICMgT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uCisJLmJ5 dGUJOCAgICAgICAgICAgICAgICAgICAgICAgIyBBZGRyZXNzIFNpemUgKGlu IGJ5dGVzKQorCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgQWJi cmV2IFsxXSAweGI6MHgyZSBEV19UQUdfY29tcGlsZV91bml0CisJLmJ5dGUJ MCAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9HTlVfZHdvX25hbWUK KwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3Byb2R1 Y2VyCisJLnNob3J0CTEyICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRf bGFuZ3VhZ2UKKwkuYnl0ZQkyICAgICAgICAgICAgICAgICAgICAgICAjIERX X0FUX25hbWUKKwkucXVhZAk3NjE1ODUyMDY3NzQ3NDMxNDEzICAgICAjIERX X0FUX0dOVV9kd29faWQKKwkuYnl0ZQkyICAgICAgICAgICAgICAgICAgICAg ICAjIEFiYnJldiBbMl0gMHgxOToweDFiIERXX1RBR19zdWJwcm9ncmFtCisJ LmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9sb3dfcGMK KwkubG9uZwkuTGZ1bmNfZW5kMC0uTGZ1bmNfYmVnaW4wICMgRFdfQVRfaGln aF9wYworCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRf ZnJhbWVfYmFzZQorCS5ieXRlCTg2CisJLmJ5dGUJNCAgICAgICAgICAgICAg ICAgICAgICAgIyBEV19BVF9uYW1lCisJLmJ5dGUJMSAgICAgICAgICAgICAg ICAgICAgICAgIyBEV19BVF9kZWNsX2ZpbGUKKwkuYnl0ZQkxOSAgICAgICAg ICAgICAgICAgICAgICAjIERXX0FUX2RlY2xfbGluZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfcHJvdG90eXBl ZAorCS5sb25nCTUyICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfdHlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RFdfQVRfZXh0ZXJuYWwKKwkuYnl0ZQkzICAgICAgICAgICAgICAgICAgICAg ICAjIEFiYnJldiBbM10gMHgyODoweGIgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0 ZXIKKwkuYnl0ZQkyICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2xv Y2F0aW9uCisJLmJ5dGUJMTQ1CisJLmJ5dGUJMTI0CisJLmJ5dGUJNyAgICAg ICAgICAgICAgICAgICAgICAgIyBEV19BVF9uYW1lCisJLmJ5dGUJMSAgICAg ICAgICAgICAgICAgICAgICAgIyBEV19BVF9kZWNsX2ZpbGUKKwkuYnl0ZQkx OSAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2RlY2xfbGluZQorCS5s b25nCTUyICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfdHlwZQorCS5i eXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIE9mIENoaWxkcmVu IE1hcmsKKwkuYnl0ZQk0ICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJl diBbNF0gMHgzNDoweDQgRFdfVEFHX2Jhc2VfdHlwZQorCS5ieXRlCTUgICAg ICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5ieXRlCTUgICAg ICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZW5jb2RpbmcKKwkuYnl0ZQk0 ICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2J5dGVfc2l6ZQorCS5i eXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIE9mIENoaWxkcmVu IE1hcmsKKwkubG9uZwk0MSAgICAgICAgICAgICAgICAgICAgICAjIExlbmd0 aCBvZiBVbml0CisJLnNob3J0CTQgICAgICAgICAgICAgICAgICAgICAgICMg RFdBUkYgdmVyc2lvbiBudW1iZXIKKwkubG9uZwkwICAgICAgICAgICAgICAg ICAgICAgICAjIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbgorCS5ieXRl CTggICAgICAgICAgICAgICAgICAgICAgICMgQWRkcmVzcyBTaXplIChpbiBi eXRlcykKKwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJl diBbMV0gMHhiOjB4MjIgRFdfVEFHX2NvbXBpbGVfdW5pdAorCS5ieXRlCTAg ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfR05VX2R3b19uYW1lCisJ LmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9wcm9kdWNl cgorCS5zaG9ydAkxMiAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2xh bmd1YWdlCisJLmJ5dGUJMyAgICAgICAgICAgICAgICAgICAgICAgIyBEV19B VF9uYW1lCisJLnF1YWQJMjAzNzY1MDI2MTU5OTY5MjMyNCAgICAgIyBEV19B VF9HTlVfZHdvX2lkCisJLmJ5dGUJNSAgICAgICAgICAgICAgICAgICAgICAg IyBBYmJyZXYgWzVdIDB4MTk6MHhmIERXX1RBR19zdWJwcm9ncmFtCisJLmJ5 dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9sb3dfcGMKKwku bG9uZwkuTGZ1bmNfZW5kMS0uTGZ1bmNfYmVnaW4xICMgRFdfQVRfaGlnaF9w YworCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZnJh bWVfYmFzZQorCS5ieXRlCTg2CisJLmJ5dGUJNiAgICAgICAgICAgICAgICAg ICAgICAgIyBEV19BVF9uYW1lCisJLmJ5dGUJMiAgICAgICAgICAgICAgICAg ICAgICAgIyBEV19BVF9kZWNsX2ZpbGUKKwkuYnl0ZQkyMiAgICAgICAgICAg ICAgICAgICAgICAjIERXX0FUX2RlY2xfbGluZQorCS5sb25nCTQwICAgICAg ICAgICAgICAgICAgICAgICMgRFdfQVRfdHlwZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZXh0ZXJuYWwKKwku Ynl0ZQk0ICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJldiBbNF0gMHgy ODoweDQgRFdfVEFHX2Jhc2VfdHlwZQorCS5ieXRlCTUgICAgICAgICAgICAg ICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5ieXRlCTUgICAgICAgICAgICAg ICAgICAgICAgICMgRFdfQVRfZW5jb2RpbmcKKwkuYnl0ZQk0ICAgICAgICAg ICAgICAgICAgICAgICAjIERXX0FUX2J5dGVfc2l6ZQorCS5ieXRlCTAgICAg ICAgICAgICAgICAgICAgICAgICMgRW5kIE9mIENoaWxkcmVuIE1hcmsKKwku c2VjdGlvbgkuZGVidWdfYWJicmV2LmR3bywiIixAcHJvZ2JpdHMKKwkuYnl0 ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJldmlhdGlvbiBDb2Rl CisJLmJ5dGUJMTcgICAgICAgICAgICAgICAgICAgICAgIyBEV19UQUdfY29t cGlsZV91bml0CisJLmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBE V19DSElMRFJFTl95ZXMKKwkuYXNjaWkJIlwyNjBCIiAgICAgICAgICAgICAg ICAgIyBEV19BVF9HTlVfZHdvX25hbWUKKwkuYXNjaWkJIlwyMDI+IiAgICAg ICAgICAgICAgICAgIyBEV19GT1JNX0dOVV9zdHJfaW5kZXgKKwkuYnl0ZQkz NyAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3Byb2R1Y2VyCisJLmFz Y2lpCSJcMjAyPiIgICAgICAgICAgICAgICAgICMgRFdfRk9STV9HTlVfc3Ry X2luZGV4CisJLmJ5dGUJMTkgICAgICAgICAgICAgICAgICAgICAgIyBEV19B VF9sYW5ndWFnZQorCS5ieXRlCTUgICAgICAgICAgICAgICAgICAgICAgICMg RFdfRk9STV9kYXRhMgorCS5ieXRlCTMgICAgICAgICAgICAgICAgICAgICAg ICMgRFdfQVRfbmFtZQorCS5hc2NpaQkiXDIwMj4iICAgICAgICAgICAgICAg ICAjIERXX0ZPUk1fR05VX3N0cl9pbmRleAorCS5hc2NpaQkiXDI2MUIiICAg ICAgICAgICAgICAgICAjIERXX0FUX0dOVV9kd29faWQKKwkuYnl0ZQk3ICAg ICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZGF0YTgKKwkuYnl0ZQkw ICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgxKQorCS5ieXRlCTAgICAg ICAgICAgICAgICAgICAgICAgICMgRU9NKDIpCisJLmJ5dGUJMiAgICAgICAg ICAgICAgICAgICAgICAgIyBBYmJyZXZpYXRpb24gQ29kZQorCS5ieXRlCTQ2 ICAgICAgICAgICAgICAgICAgICAgICMgRFdfVEFHX3N1YnByb2dyYW0KKwku Ynl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIERXX0NISUxEUkVOX3ll cworCS5ieXRlCTE3ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbG93 X3BjCisJLmFzY2lpCSJcMjAxPiIgICAgICAgICAgICAgICAgICMgRFdfRk9S TV9HTlVfYWRkcl9pbmRleAorCS5ieXRlCTE4ICAgICAgICAgICAgICAgICAg ICAgICMgRFdfQVRfaGlnaF9wYworCS5ieXRlCTYgICAgICAgICAgICAgICAg ICAgICAgICMgRFdfRk9STV9kYXRhNAorCS5ieXRlCTY0ICAgICAgICAgICAg ICAgICAgICAgICMgRFdfQVRfZnJhbWVfYmFzZQorCS5ieXRlCTI0ICAgICAg ICAgICAgICAgICAgICAgICMgRFdfRk9STV9leHBybG9jCisJLmJ5dGUJMyAg ICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9uYW1lCisJLmFzY2lpCSJc MjAyPiIgICAgICAgICAgICAgICAgICMgRFdfRk9STV9HTlVfc3RyX2luZGV4 CisJLmJ5dGUJNTggICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9kZWNs X2ZpbGUKKwkuYnl0ZQkxMSAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZP Uk1fZGF0YTEKKwkuYnl0ZQk1OSAgICAgICAgICAgICAgICAgICAgICAjIERX X0FUX2RlY2xfbGluZQorCS5ieXRlCTExICAgICAgICAgICAgICAgICAgICAg ICMgRFdfRk9STV9kYXRhMQorCS5ieXRlCTM5ICAgICAgICAgICAgICAgICAg ICAgICMgRFdfQVRfcHJvdG90eXBlZAorCS5ieXRlCTI1ICAgICAgICAgICAg ICAgICAgICAgICMgRFdfRk9STV9mbGFnX3ByZXNlbnQKKwkuYnl0ZQk3MyAg ICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3R5cGUKKwkuYnl0ZQkxOSAg ICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fcmVmNAorCS5ieXRlCTYz ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZXh0ZXJuYWwKKwkuYnl0 ZQkyNSAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZmxhZ19wcmVz ZW50CisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMSkK KwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgyKQorCS5i eXRlCTMgICAgICAgICAgICAgICAgICAgICAgICMgQWJicmV2aWF0aW9uIENv ZGUKKwkuYnl0ZQk1ICAgICAgICAgICAgICAgICAgICAgICAjIERXX1RBR19m b3JtYWxfcGFyYW1ldGVyCisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAg ICAgIyBEV19DSElMRFJFTl9ubworCS5ieXRlCTIgICAgICAgICAgICAgICAg ICAgICAgICMgRFdfQVRfbG9jYXRpb24KKwkuYnl0ZQkyNCAgICAgICAgICAg ICAgICAgICAgICAjIERXX0ZPUk1fZXhwcmxvYworCS5ieXRlCTMgICAgICAg ICAgICAgICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5hc2NpaQkiXDIwMj4i ICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fR05VX3N0cl9pbmRleAorCS5i eXRlCTU4ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZGVjbF9maWxl CisJLmJ5dGUJMTEgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2Rh dGExCisJLmJ5dGUJNTkgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9k ZWNsX2xpbmUKKwkuYnl0ZQkxMSAgICAgICAgICAgICAgICAgICAgICAjIERX X0ZPUk1fZGF0YTEKKwkuYnl0ZQk3MyAgICAgICAgICAgICAgICAgICAgICAj IERXX0FUX3R5cGUKKwkuYnl0ZQkxOSAgICAgICAgICAgICAgICAgICAgICAj IERXX0ZPUk1fcmVmNAorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAg ICMgRU9NKDEpCisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBF T00oMikKKwkuYnl0ZQk0ICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJl dmlhdGlvbiBDb2RlCisJLmJ5dGUJMzYgICAgICAgICAgICAgICAgICAgICAg IyBEV19UQUdfYmFzZV90eXBlCisJLmJ5dGUJMCAgICAgICAgICAgICAgICAg ICAgICAgIyBEV19DSElMRFJFTl9ubworCS5ieXRlCTMgICAgICAgICAgICAg ICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5hc2NpaQkiXDIwMj4iICAgICAg ICAgICAgICAgICAjIERXX0ZPUk1fR05VX3N0cl9pbmRleAorCS5ieXRlCTYy ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZW5jb2RpbmcKKwkuYnl0 ZQkxMSAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZGF0YTEKKwku Ynl0ZQkxMSAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2J5dGVfc2l6 ZQorCS5ieXRlCTExICAgICAgICAgICAgICAgICAgICAgICMgRFdfRk9STV9k YXRhMQorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDEp CisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMikKKwku Ynl0ZQk1ICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJldmlhdGlvbiBD b2RlCisJLmJ5dGUJNDYgICAgICAgICAgICAgICAgICAgICAgIyBEV19UQUdf c3VicHJvZ3JhbQorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMg RFdfQ0hJTERSRU5fbm8KKwkuYnl0ZQkxNyAgICAgICAgICAgICAgICAgICAg ICAjIERXX0FUX2xvd19wYworCS5hc2NpaQkiXDIwMT4iICAgICAgICAgICAg ICAgICAjIERXX0ZPUk1fR05VX2FkZHJfaW5kZXgKKwkuYnl0ZQkxOCAgICAg ICAgICAgICAgICAgICAgICAjIERXX0FUX2hpZ2hfcGMKKwkuYnl0ZQk2ICAg ICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZGF0YTQKKwkuYnl0ZQk2 NCAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2ZyYW1lX2Jhc2UKKwku Ynl0ZQkyNCAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZXhwcmxv YworCS5ieXRlCTMgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbmFt ZQorCS5hc2NpaQkiXDIwMj4iICAgICAgICAgICAgICAgICAjIERXX0ZPUk1f R05VX3N0cl9pbmRleAorCS5ieXRlCTU4ICAgICAgICAgICAgICAgICAgICAg ICMgRFdfQVRfZGVjbF9maWxlCisJLmJ5dGUJMTEgICAgICAgICAgICAgICAg ICAgICAgIyBEV19GT1JNX2RhdGExCisJLmJ5dGUJNTkgICAgICAgICAgICAg ICAgICAgICAgIyBEV19BVF9kZWNsX2xpbmUKKwkuYnl0ZQkxMSAgICAgICAg ICAgICAgICAgICAgICAjIERXX0ZPUk1fZGF0YTEKKwkuYnl0ZQk3MyAgICAg ICAgICAgICAgICAgICAgICAjIERXX0FUX3R5cGUKKwkuYnl0ZQkxOSAgICAg ICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fcmVmNAorCS5ieXRlCTYzICAg ICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZXh0ZXJuYWwKKwkuYnl0ZQky NSAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZmxhZ19wcmVzZW50 CisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMSkKKwku Ynl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgyKQorCS5ieXRl CTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDMpCisJLnNlY3Rpb24J LmRlYnVnX2xpbmUuZHdvLCIiLEBwcm9nYml0cworLkx0bXA0OgorCS5sb25n CSguTHRtcDUtLkx0bXA0KS00CisJLnNob3J0CTIKKwkubG9uZwkoLkx0bXA2 LS5MdG1wNCktMTAKKwkuYnl0ZQkxCisJLmJ5dGUJMQorCS5ieXRlCS01CisJ LmJ5dGUJMTQKKwkuYnl0ZQkxCisJLmJ5dGUJMAorCS5ieXRlCTAKKy5MdG1w NjoKKy5MdG1wNToKKwkuc2VjdGlvbgkuZGVidWdfYWRkciwiIixAcHJvZ2Jp dHMKKwkucXVhZAkuTGZ1bmNfYmVnaW4wCisJLnF1YWQJLkxmdW5jX2JlZ2lu MQorCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKKwku bG9uZwkuTHB1Yk5hbWVzX2VuZDAtLkxwdWJOYW1lc19iZWdpbjAgIyBMZW5n dGggb2YgUHVibGljIE5hbWVzIEluZm8KKy5McHViTmFtZXNfYmVnaW4wOgor CS5zaG9ydAkyICAgICAgICAgICAgICAgICAgICAgICAjIERXQVJGIFZlcnNp b24KKwkubG9uZwkuTGN1X2JlZ2luMCAgICAgICAgICAgICAjIE9mZnNldCBv ZiBDb21waWxhdGlvbiBVbml0IEluZm8KKwkubG9uZwk0OCAgICAgICAgICAg ICAgICAgICAgICAjIENvbXBpbGF0aW9uIFVuaXQgTGVuZ3RoCisJLmxvbmcJ MjUgICAgICAgICAgICAgICAgICAgICAgIyBESUUgb2Zmc2V0CisJLmFzY2l6 CSJmdW5jIiAgICAgICAgICAgICAgICAgICMgRXh0ZXJuYWwgTmFtZQorCS5s b25nCTAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIE1hcmsKKy5McHVi TmFtZXNfZW5kMDoKKwkubG9uZwkuTHB1Yk5hbWVzX2VuZDEtLkxwdWJOYW1l c19iZWdpbjEgIyBMZW5ndGggb2YgUHVibGljIE5hbWVzIEluZm8KKy5McHVi TmFtZXNfYmVnaW4xOgorCS5zaG9ydAkyICAgICAgICAgICAgICAgICAgICAg ICAjIERXQVJGIFZlcnNpb24KKwkubG9uZwkuTGN1X2JlZ2luMSAgICAgICAg ICAgICAjIE9mZnNldCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KKwkubG9u Zwk0OCAgICAgICAgICAgICAgICAgICAgICAjIENvbXBpbGF0aW9uIFVuaXQg TGVuZ3RoCisJLmxvbmcJMjUgICAgICAgICAgICAgICAgICAgICAgIyBESUUg b2Zmc2V0CisJLmFzY2l6CSJtYWluIiAgICAgICAgICAgICAgICAgICMgRXh0 ZXJuYWwgTmFtZQorCS5sb25nCTAgICAgICAgICAgICAgICAgICAgICAgICMg RW5kIE1hcmsKKy5McHViTmFtZXNfZW5kMToKKwkuc2VjdGlvbgkuZGVidWdf cHVidHlwZXMsIiIsQHByb2diaXRzCisJLmxvbmcJLkxwdWJUeXBlc19lbmQw LS5McHViVHlwZXNfYmVnaW4wICMgTGVuZ3RoIG9mIFB1YmxpYyBUeXBlcyBJ bmZvCisuTHB1YlR5cGVzX2JlZ2luMDoKKwkuc2hvcnQJMiAgICAgICAgICAg ICAgICAgICAgICAgIyBEV0FSRiBWZXJzaW9uCisJLmxvbmcJLkxjdV9iZWdp bjAgICAgICAgICAgICAgIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJ bmZvCisJLmxvbmcJNDggICAgICAgICAgICAgICAgICAgICAgIyBDb21waWxh dGlvbiBVbml0IExlbmd0aAorCS5sb25nCTUyICAgICAgICAgICAgICAgICAg ICAgICMgRElFIG9mZnNldAorCS5hc2NpegkiaW50IiAgICAgICAgICAgICAg ICAgICAjIEV4dGVybmFsIE5hbWUKKwkubG9uZwkwICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBNYXJrCisuTHB1YlR5cGVzX2VuZDA6CisJLmxvbmcJ LkxwdWJUeXBlc19lbmQxLS5McHViVHlwZXNfYmVnaW4xICMgTGVuZ3RoIG9m IFB1YmxpYyBUeXBlcyBJbmZvCisuTHB1YlR5cGVzX2JlZ2luMToKKwkuc2hv cnQJMiAgICAgICAgICAgICAgICAgICAgICAgIyBEV0FSRiBWZXJzaW9uCisJ LmxvbmcJLkxjdV9iZWdpbjEgICAgICAgICAgICAgIyBPZmZzZXQgb2YgQ29t cGlsYXRpb24gVW5pdCBJbmZvCisJLmxvbmcJNDggICAgICAgICAgICAgICAg ICAgICAgIyBDb21waWxhdGlvbiBVbml0IExlbmd0aAorCS5sb25nCTQwICAg ICAgICAgICAgICAgICAgICAgICMgRElFIG9mZnNldAorCS5hc2NpegkiaW50 IiAgICAgICAgICAgICAgICAgICAjIEV4dGVybmFsIE5hbWUKKwkubG9uZwkw ICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBNYXJrCisuTHB1YlR5cGVz X2VuZDE6CisKKwkuaWRlbnQJImNsYW5nIHZlcnNpb24gNS4wLjAgKHRydW5r IDMwMjg1NSkgKGxsdm0vdHJ1bmsgMzAyODUzKSIKKwkuaWRlbnQJImNsYW5n IHZlcnNpb24gNS4wLjAgKHRydW5rIDMwMjg1NSkgKGxsdm0vdHJ1bmsgMzAy ODUzKSIKKwkuc2VjdGlvbgkiLm5vdGUuR05VLXN0YWNrIiwiIixAcHJvZ2Jp dHMKKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKKy5MbGlu ZV90YWJsZV9zdGFydDA6CmRpZmYgLS1naXQgZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2Zpc3Npb24tbXVsdGktY3UuZXhwIGdkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9maXNzaW9uLW11bHRpLWN1LmV4cApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4xZjIzYzViNmVlCi0tLSAvZGV2L251 bGwKKysrIGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9uLW11bHRp LWN1LmV4cApAQCAtMCwwICsxLDY3IEBACisjIENvcHlyaWdodCAyMDEyLTIw MTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMK KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKK2xvYWRfbGliIGR3YXJmLmV4cAorCisjIFdlIHJ1biBvYmpj b3B5IGxvY2FsbHkgdG8gc3BsaXQgb3V0IHRoZSAuZHdvIGZpbGUuCitpZiBb aXNfcmVtb3RlIGhvc3RdIHsKKyAgICByZXR1cm4gMAorfQorCisjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0 IERXQVJGLTIgYW5kIHVzZSBnYXMuCitpZiAhW2R3YXJmMl9zdXBwb3J0XSB7 CisgICAgcmV0dXJuIDAKK30KKworIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg cnVuIG9uIHg4Ni02NCB0YXJnZXRzLgoraWYgeyFbaXN0YXJnZXQgeDg2XzY0 LSpdIHx8ICFbaXNfbHA2NF90YXJnZXRdfSB7CisgICAgcmV0dXJuIDAKK30K Kworc3RhbmRhcmRfdGVzdGZpbGUgLlMKKworaWYgW2J1aWxkX2V4ZWN1dGFi bGVfZnJvbV9maXNzaW9uX2Fzc2VtYmxlciBcCisJIiR0ZXN0ZmlsZS5leHAi ICIkYmluZmlsZSIgIiRzcmNmaWxlIiB7bm9kZWJ1Z31dIHsKKyAgICByZXR1 cm4gLTEKK30KKworZ2RiX2V4aXQKK2dkYl9zdGFydAorZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisjIE1ha2Ugc3VyZSB3ZSBjYW4g ZmluZCB0aGUgLmR3byBmaWxlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgd2Un cmUKKyMgcnVubmluZyBpbiBwYXJhbGxlbCBtb2RlLgorZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkgW2ZpbGUgZGlybmFt ZSAkYmluZmlsZV0iIFwKKyAgICAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5 IgorZ2RiX2xvYWQgJGJpbmZpbGUKKworaWYgIVtydW50b19tYWluXSB7Cisg ICAgcmV0dXJuIC0xCit9CisKKyMgRG8gYSBmZXcgYmFzaWMgdGhpbmdzIHRv IHZlcmlmeSB3ZSdyZSBmaW5kaW5nIHRoZSBEV08gZGVidWcgaW5mby4KKwor Z2RiX3Rlc3QgInB0eXBlIG1haW4iICJ0eXBlID0gaW50IFxcKFxcKSIKK2dk Yl90ZXN0ICJwdHlwZSBmdW5jIiAidHlwZSA9IGludCBcXChpbnRcXCkiCisK K2dkYl90ZXN0ICJmcmFtZSIgIiMwICptYWluIFxcKFxcKSBhdCAke3Rlc3Rm aWxlfTJcXC5jOiRkZWNpbWFsLioiIFwKKyAgICAiZnJhbWUgaW4gbWFpbiIK KworZ2RiX3Rlc3QgImJyZWFrIGZ1bmMiICJCcmVha3BvaW50LiphdC4qIGZp bGUgLioke3Rlc3RmaWxlfTFcXC5jLCBsaW5lIC4qIgorCitnZGJfdGVzdCAi Y29udGludWUiICJCcmVha3BvaW50LiogZnVuYyBcXChhcmc9LTFcXCkuKiIg XAorICAgICJjb250aW51ZSB0byBmdW5jIgorCitnZGJfdGVzdCAiZnJhbWUi ICIjMCAqZnVuYyBcXChhcmc9LTFcXCkgYXQgJHt0ZXN0ZmlsZX0xXFwuYzok ZGVjaW1hbC4qIiBcCisgICAgImZyYW1lIGluIGZ1bmMiCmRpZmYgLS1naXQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2Zpc3Npb24tbXVsdGktY3UxLmMg Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2Zpc3Npb24tbXVsdGktY3UxLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDkzZTJm OTEyZQotLS0gL2Rldi9udWxsCisrKyBnZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZmlzc2lvbi1tdWx0aS1jdTEuYwpAQCAtMCwwICsxLDIyIEBACisvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgorCisgICBDb3B5cmlnaHQgMjAxMi0yMDE3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor CitpbnQKK2Z1bmMgKGludCBhcmcpCit7CisgIHJldHVybiBhcmcgKyAxOwor fQpkaWZmIC0tZ2l0IGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9u LW11bHRpLWN1Mi5jIGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9u LW11bHRpLWN1Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjA1M2IzZWExNDEKLS0tIC9kZXYvbnVsbAorKysgZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2Zpc3Npb24tbXVsdGktY3UyLmMKQEAgLTAsMCAr MSwyNCBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTItMjAxNyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKwordm9pZCBmdW5jICgpOworCitpbnQKK21haW4gKCkK K3sKKyAgZnVuYyAoLTEpOworfQo= --001a113f3cbe6620d30550ee754a--