From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by sourceware.org (Postfix) with ESMTPS id 48AAE3857416 for ; Wed, 5 May 2021 15:17:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 48AAE3857416 Received: by mail-pj1-x102d.google.com with SMTP id h14-20020a17090aea8eb02901553e1cc649so1011434pjz.0 for ; Wed, 05 May 2021 08:17:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=NvvZJiHhgtQap+B+4qjOSoK3mW7EJdAUOTX1mQmevZ4=; b=CSWG7ctUEi4eSudn63pCJMKUNMrcAjuGgUfNWMuJvkopDDrHRFe10brM499Gqbe8eJ odeO8E7IrvQRL4YhNRKQvMnnpGZXfZBuUIUlSy0kz2rwUmu28tqnEHSrFNE9zkDAzmrr RzSi+c6rxG9OygsH+MP6mMjysyzkZyJm2epEDRmDmIqs8W0YQ3Y03J07DHjCiL+Ad/EB xDe7eQMuFOpARC1GuX2O2F/JoNrUOvDNR4kFfAWR8Z4sShYJAZv3detOgyH69ZcKmSAP G74X2ShBfqbX7EV+9rZURVoB5a9sh0rtqCuVqQlbMSblNpClWT5oCMAl5mo6WjyGF7ss rKoQ== X-Gm-Message-State: AOAM533HA/8MloaRf0JGRcbiZKO9yMFn6DHFhtgroT0BvCwwFUVxjRqH 8w4bIVWPPcX2dV/XnrJkpCc= X-Google-Smtp-Source: ABdhPJyYWUsFT5Ixn31M+4AgukJYhWjHSjMBidhlekEWoL/eqsnbHVPh3ZRUx0v/6hTRiX429p25ZA== X-Received: by 2002:a17:90a:ca97:: with SMTP id y23mr35559622pjt.230.1620227849018; Wed, 05 May 2021 08:17:29 -0700 (PDT) Received: from [192.168.50.12] (112-104-14-54.adsl.dynamic.seed.net.tw. [112.104.14.54]) by smtp.gmail.com with ESMTPSA id c24sm15591932pfi.32.2021.05.05.08.17.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 May 2021 08:17:28 -0700 (PDT) To: gcc-patches , Catherine Moore , Tobias Burnus From: Chung-Lin Tang Subject: [PATCH, OG10, OpenMP 5.0, committed] Implement relaxation of implicit map vs. existing device mappings Message-ID: <09ae7f35-41fd-c83e-2054-18ad4433d5e3@gmail.com> Date: Wed, 5 May 2021 23:17:25 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------8E5A54DDADCC548E9F05E5BA" Content-Language: en-US X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Wed, 05 May 2021 15:17:35 -0000 This is a multi-part message in MIME format. --------------8E5A54DDADCC548E9F05E5BA Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit This patch implements relaxing the requirements when a map with the implicit attribute encounters an overlapping existing map. As the OpenMP 5.0 spec describes on page 320, lines 18-27 (and 5.1 spec, page 352, lines 13-22): "If a single contiguous part of the original storage of a list item with an implicit data-mapping attribute has corresponding storage in the device data environment prior to a task encountering the construct that is associated with the map clause, only that part of the original storage will have corresponding storage in the device data environment as a result of the map clause." Also tracked in the OpenMP spec context as issue #1463: https://github.com/OpenMP/spec/issues/1463 The implementation inside the compiler is to of course, tag the implicitly created maps with some indication of "implicit". I've done this with a OMP_CLAUSE_MAP_IMPLICIT_P macro, using 'base.deprecated_flag' underneath. There is an encoding of this as GOMP_MAP_IMPLICIT == GOMP_MAP_FLAG_SPECIAL_3|GOMP_MAP_FLAG_SPECIAL_4 in include/gomp-constants.h for the runtime, but I've intentionally avoided exploding the entire gimplify/omp-low with a new set of GOMP_MAP_IMPLICIT_TO/FROM/etc. symbols, instead adding in the new flag bits only at the final runtime call generation during omp-lowering. The rest is libgomp mapping taking care of the implicit case: allowing map success if an existing map is a proper subset of the new map, if the new map is implicit. Straightforward enough I think. There are also some additions to print the implicit attribute during tree pretty-printing, for that reason some scan tests were updated. Also, another adjustment in this patch is how implicitly created clauses are added to the current clause list in gimplify_adjust_omp_clauses(). Instead of simply appending the new clauses to the end, this patch adds them at the position "after initial non-map clauses, but right before any existing map clauses". The reason for this is: when combined with other map clauses, for example: #pragma omp target map(rec.ptr[:N]) for (int i = 0; i < N; i++) rec.ptr[i] += 1; There will be an implicit map created for map(rec), because of the access inside the target region. The expectation is that 'rec' is implicitly mapped, and then the pointed array-section part by 'rec.ptr' will be mapped, and then attachment to the 'rec.ptr' field of the mapped 'rec' (in that order). If the implicit 'map(rec)' is appended to the end, instead of placed before other maps, the attachment operation will not find anything to attach to, and the entire region will fail. Note: this touches a bit on another issue which I will be sending a patch for later: per the discussion on omp-lang, an array section list item should *not* be mapping its base-pointer (although an attachment attempt should exist), while in current GCC behavior, for struct member pointers like 'rec.ptr' above, we do map it (which should be deemed incorrect). This means that as of right now, this modification of map order doesn't really exhibit the above mentioned behavior yet. I have included it as part of this patch because the "[implicit]" tree printing requires modifying many gimple scan tests already, so including the test modifications together seems more manageable patch-wise. Tested with no regressions, and pushed to devel/omp/gcc-10. Will be submitting a mainline trunk version later. Chung-Lin 2021-05-05 Chung-Lin Tang include/ChangeLog: * gomp-constants.h (GOMP_MAP_IMPLICIT): New special map kind bits value. (GOMP_MAP_FLAG_SPECIAL_BITS): Define helper mask for whole set of special map kind bits. (GOMP_MAP_NONCONTIG_ARRAY_P): Adjust test for non-contiguous array map kind bits to be more specific. (GOMP_MAP_IMPLICIT_P): New predicate macro for implicit map kinds. gcc/ChangeLog: * tree.h (OMP_CLAUSE_MAP_IMPLICIT_P): New access macro for 'implicit' bit, using 'base.deprecated_flag' field of tree_node. * tree-pretty-print.c (dump_omp_clause): Add support for printing implicit attribute in tree dumping. * gimplify.c (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_MAP_IMPLICIT_P to 1 if map clause is implicitly created. (gimplify_adjust_omp_clauses): Adjust place of adding implicitly created clauses, from simple append, to starting of list, after non-map clauses. * omp-low.c (lower_omp_target): Add GOMP_MAP_IMPLICIT bits into kind values passed to libgomp for implicit maps. gcc/testsuite/ChangeLog: * c-c++-common/gomp/target-implicit-map-1.c: New test. * c-c++-common/goacc/combined-reduction.c: Adjust scan test pattern. * c-c++-common/goacc/firstprivate-mappings-1.c: Likewise. * c-c++-common/goacc/mdc-1.c: Likewise. * c-c++-common/goacc/reduction-1.c: Likewise. * c-c++-common/goacc/reduction-2.c: Likewise. * c-c++-common/goacc/reduction-3.c: Likewise. * c-c++-common/goacc/reduction-4.c: Likewise. * c-c++-common/goacc/reduction-8.c: Likewise. * g++.dg/goacc/firstprivate-mappings-1.C: Likewise. * g++.dg/gomp/target-lambda-1.C: Likewise. * g++.dg/gomp/target-this-3.C: Likewise. * g++.dg/gomp/target-this-4.C: Likewise. * gfortran.dg/goacc/common-block-3.f90: Likewise. * gfortran.dg/goacc/loop-tree-1.f90: Likewise. * gfortran.dg/goacc/private-explicit-kernels-1.f95: Likewise. * gfortran.dg/goacc/private-predetermined-kernels-1.f95: Likewise. libgomp/ChangeLog: * target.c (gomp_map_vars_existing): Add 'bool implicit' parameter, add implicit map handling to allow a "superset" existing map as valid case. (get_kind): Adjust to filter out GOMP_MAP_IMPLICIT bits in return value. (get_implicit): New function to extract implicit status. (gomp_map_fields_existing): Adjust arguments in calls to gomp_map_vars_existing, and add uses of get_implicit. (gomp_map_vars_internal): Likewise. * testsuite/libgomp.c-c++-common/target-implicit-map-1.c: New test. --------------8E5A54DDADCC548E9F05E5BA Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-OpenMP-5.0-Implement-relaxation-of-implicit-map-vs.-.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-OpenMP-5.0-Implement-relaxation-of-implicit-map-vs.-.pa"; filename*1="tch" RnJvbSBhNzBiNWIxYWE4YjNkMzJmNjcyOGRiZmNmYzAwYjBjZmY4YzUyMTlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHVuZy1MaW4gVGFuZyA8Y2x0YW5nQGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IFdlZCwgNSBNYXkgMjAyMSAwODoxMToxOSAtMDcwMApTdWJqZWN0 OiBbUEFUQ0hdIE9wZW5NUCA1LjA6IEltcGxlbWVudCByZWxheGF0aW9uIG9mIGltcGxpY2l0 IG1hcCB2cy4gZXhpc3RpbmcKIGRldmljZSBtYXBwaW5ncwoKVGhpcyBwYXRjaCBpbXBsZW1l bnRzIHJlbGF4aW5nIHRoZSByZXF1aXJlbWVudHMgd2hlbiBhIG1hcCB3aXRoIHRoZSBpbXBs aWNpdAphdHRyaWJ1dGUgZW5jb3VudGVycyBhbiBvdmVybGFwcGluZyBleGlzdGluZyBtYXAu IEFzIHRoZSBPcGVuTVAgNS4wIHNwZWMKZGVzY3JpYmVzIG9uIHBhZ2UgMzIwLCBsaW5lcyAx OC0yNyAoYW5kIDUuMSBzcGVjLCBwYWdlIDM1MiwgbGluZXMgMTMtMjIpOgoKIklmIGEgc2lu Z2xlIGNvbnRpZ3VvdXMgcGFydCBvZiB0aGUgb3JpZ2luYWwgc3RvcmFnZSBvZiBhIGxpc3Qg aXRlbSB3aXRoIGFuCiBpbXBsaWNpdCBkYXRhLW1hcHBpbmcgYXR0cmlidXRlIGhhcyBjb3Jy ZXNwb25kaW5nIHN0b3JhZ2UgaW4gdGhlIGRldmljZSBkYXRhCiBlbnZpcm9ubWVudCBwcmlv ciB0byBhIHRhc2sgZW5jb3VudGVyaW5nIHRoZSBjb25zdHJ1Y3QgdGhhdCBpcyBhc3NvY2lh dGVkIHdpdGgKIHRoZSBtYXAgY2xhdXNlLCBvbmx5IHRoYXQgcGFydCBvZiB0aGUgb3JpZ2lu YWwgc3RvcmFnZSB3aWxsIGhhdmUgY29ycmVzcG9uZGluZwogc3RvcmFnZSBpbiB0aGUgZGV2 aWNlIGRhdGEgZW52aXJvbm1lbnQgYXMgYSByZXN1bHQgb2YgdGhlIG1hcCBjbGF1c2UuIgoK QWxzbyB0cmFja2VkIGluIHRoZSBPcGVuTVAgc3BlYyBjb250ZXh0IGFzIGlzc3VlICMxNDYz OgpodHRwczovL2dpdGh1Yi5jb20vT3Blbk1QL3NwZWMvaXNzdWVzLzE0NjMKCjIwMjEtMDUt MDUgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CgppbmNsdWRl L0NoYW5nZUxvZzoKCgkqIGdvbXAtY29uc3RhbnRzLmggKEdPTVBfTUFQX0lNUExJQ0lUKTog TmV3IHNwZWNpYWwgbWFwIGtpbmQgYml0cyB2YWx1ZS4KCShHT01QX01BUF9GTEFHX1NQRUNJ QUxfQklUUyk6IERlZmluZSBoZWxwZXIgbWFzayBmb3Igd2hvbGUgc2V0IG9mCglzcGVjaWFs IG1hcCBraW5kIGJpdHMuCgkoR09NUF9NQVBfTk9OQ09OVElHX0FSUkFZX1ApOiBBZGp1c3Qg dGVzdCBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXkgbWFwCglraW5kIGJpdHMgdG8gYmUgbW9y ZSBzcGVjaWZpYy4KCShHT01QX01BUF9JTVBMSUNJVF9QKTogTmV3IHByZWRpY2F0ZSBtYWNy byBmb3IgaW1wbGljaXQgbWFwIGtpbmRzLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIHRyZWUuaCAo T01QX0NMQVVTRV9NQVBfSU1QTElDSVRfUCk6IE5ldyBhY2Nlc3MgbWFjcm8gZm9yICdpbXBs aWNpdCcKCWJpdCwgdXNpbmcgJ2Jhc2UuZGVwcmVjYXRlZF9mbGFnJyBmaWVsZCBvZiB0cmVl X25vZGUuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfb21wX2NsYXVzZSk6IEFkZCBz dXBwb3J0IGZvciBwcmludGluZwoJaW1wbGljaXQgYXR0cmlidXRlIGluIHRyZWUgZHVtcGlu Zy4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2VzXzEpOgoJU2V0 IE9NUF9DTEFVU0VfTUFQX0lNUExJQ0lUX1AgdG8gMSBpZiBtYXAgY2xhdXNlIGlzIGltcGxp Y2l0bHkgY3JlYXRlZC4KCShnaW1wbGlmeV9hZGp1c3Rfb21wX2NsYXVzZXMpOiBBZGp1c3Qg cGxhY2Ugb2YgYWRkaW5nIGltcGxpY2l0bHkgY3JlYXRlZAoJY2xhdXNlcywgZnJvbSBzaW1w bGUgYXBwZW5kLCB0byBzdGFydGluZyBvZiBsaXN0LCBhZnRlciBub24tbWFwIGNsYXVzZXMu CgkqIG9tcC1sb3cuYyAobG93ZXJfb21wX3RhcmdldCk6IEFkZCBHT01QX01BUF9JTVBMSUNJ VCBiaXRzIGludG8ga2luZAoJdmFsdWVzIHBhc3NlZCB0byBsaWJnb21wIGZvciBpbXBsaWNp dCBtYXBzLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vZ29t cC90YXJnZXQtaW1wbGljaXQtbWFwLTEuYzogTmV3IHRlc3QuCgkqIGMtYysrLWNvbW1vbi9n b2FjYy9jb21iaW5lZC1yZWR1Y3Rpb24uYzogQWRqdXN0IHNjYW4gdGVzdCBwYXR0ZXJuLgoJ KiBjLWMrKy1jb21tb24vZ29hY2MvZmlyc3Rwcml2YXRlLW1hcHBpbmdzLTEuYzogTGlrZXdp c2UuCgkqIGMtYysrLWNvbW1vbi9nb2FjYy9tZGMtMS5jOiBMaWtld2lzZS4KICAgICAgICAq IGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMS5jOiBMaWtld2lzZS4KICAgICAgICAq IGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMi5jOiBMaWtld2lzZS4KICAgICAgICAq IGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMy5jOiBMaWtld2lzZS4KICAgICAgICAq IGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tNC5jOiBMaWtld2lzZS4KICAgICAgICAq IGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tOC5jOiBMaWtld2lzZS4KICAgICAgICAq IGcrKy5kZy9nb2FjYy9maXJzdHByaXZhdGUtbWFwcGluZ3MtMS5DOiBMaWtld2lzZS4KICAg ICAgICAqIGcrKy5kZy9nb21wL3RhcmdldC1sYW1iZGEtMS5DOiBMaWtld2lzZS4KICAgICAg ICAqIGcrKy5kZy9nb21wL3RhcmdldC10aGlzLTMuQzogTGlrZXdpc2UuCiAgICAgICAgKiBn KysuZGcvZ29tcC90YXJnZXQtdGhpcy00LkM6IExpa2V3aXNlLgogICAgICAgICogZ2ZvcnRy YW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMuZjkwOiBMaWtld2lzZS4KICAgICAgICAqIGdm b3J0cmFuLmRnL2dvYWNjL2xvb3AtdHJlZS0xLmY5MDogTGlrZXdpc2UuCiAgICAgICAgKiBn Zm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLWV4cGxpY2l0LWtlcm5lbHMtMS5mOTU6IExpa2V3 aXNlLgoJKiBnZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLXByZWRldGVybWluZWQta2VybmVs cy0xLmY5NTogTGlrZXdpc2UuCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkqIHRhcmdldC5jIChn b21wX21hcF92YXJzX2V4aXN0aW5nKTogQWRkICdib29sIGltcGxpY2l0JyBwYXJhbWV0ZXIs IGFkZAoJaW1wbGljaXQgbWFwIGhhbmRsaW5nIHRvIGFsbG93IGEgInN1cGVyc2V0IiBleGlz dGluZyBtYXAgYXMgdmFsaWQgY2FzZS4KCShnZXRfa2luZCk6IEFkanVzdCB0byBmaWx0ZXIg b3V0IEdPTVBfTUFQX0lNUExJQ0lUIGJpdHMgaW4gcmV0dXJuIHZhbHVlLgoJKGdldF9pbXBs aWNpdCk6IE5ldyBmdW5jdGlvbiB0byBleHRyYWN0IGltcGxpY2l0IHN0YXR1cy4KCShnb21w X21hcF9maWVsZHNfZXhpc3RpbmcpOiBBZGp1c3QgYXJndW1lbnRzIGluIGNhbGxzIHRvCgln b21wX21hcF92YXJzX2V4aXN0aW5nLCBhbmQgYWRkIHVzZXMgb2YgZ2V0X2ltcGxpY2l0LgoJ KGdvbXBfbWFwX3ZhcnNfaW50ZXJuYWwpOiBMaWtld2lzZS4KCgkqIHRlc3RzdWl0ZS9saWJn b21wLmMtYysrLWNvbW1vbi90YXJnZXQtaW1wbGljaXQtbWFwLTEuYzogTmV3IHRlc3QuCi0t LQogZ2NjL2dpbXBsaWZ5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAxMSArKy0KIGdjYy9vbXAtbG93LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTMgKysrKwogLi4uL2MtYysrLWNvbW1vbi9nb2FjYy9jb21iaW5lZC1yZWR1 Y3Rpb24uYyAgICAgICAgfCAgNCArLQogLi4uL2MtYysrLWNvbW1vbi9nb2FjYy9maXJzdHBy aXZhdGUtbWFwcGluZ3MtMS5jICAgfCAgNiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29hY2MvbWRjLTEuYyAgICAgICAgICAgfCAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTEuYyAgICAgfCAgNCArLQogZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTIuYyAgICAgfCAgNCArLQogZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTMuYyAgICAgfCAgNCArLQog Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTQuYyAgICAgfCAg NCArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTguYyAg ICAgfCAxMCArLS0KIC4uLi9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtaW1wbGljaXQtbWFw LTEuYyAgICAgIHwgMzkgKysrKysrKysrKysKIC4uLi9nKysuZGcvZ29hY2MvZmlyc3Rwcml2 YXRlLW1hcHBpbmdzLTEuQyAgICAgICAgIHwgIDIgKy0KIGdjYy90ZXN0c3VpdGUvZysrLmRn L2dvbXAvdGFyZ2V0LWxhbWJkYS0xLkMgICAgICAgIHwgIDYgKy0KIGdjYy90ZXN0c3VpdGUv ZysrLmRnL2dvbXAvdGFyZ2V0LXRoaXMtMy5DICAgICAgICAgIHwgIDQgKy0KIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2dvbXAvdGFyZ2V0LXRoaXMtNC5DICAgICAgICAgIHwgIDQgKy0KIGdj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMuZjkwIHwgIDgg Ky0tCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2xvb3AtdHJlZS0xLmY5MCAg ICB8ICAyICstCiAuLi4vZ29hY2MvcHJpdmF0ZS1leHBsaWNpdC1rZXJuZWxzLTEuZjk1ICAg ICAgICAgICB8ICA0ICstCiAuLi4vZ29hY2MvcHJpdmF0ZS1wcmVkZXRlcm1pbmVkLWtlcm5l bHMtMS5mOTUgICAgICB8ICA0ICstCiBnY2MvdHJlZS1wcmV0dHktcHJpbnQuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAzICsKIGdjYy90cmVlLmggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysKIGluY2x1ZGUvZ29tcC1jb25zdGFu dHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKy0KIGxpYmdvbXAvdGFy Z2V0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNzggKysrKysrKysr KysrKysrKy0tLS0tLQogLi4uL2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1pbXBsaWNp dC1tYXAtMS5jICAgfCAzMSArKysrKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNl cnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1pbXBsaWNpdC1tYXAtMS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24v dGFyZ2V0LWltcGxpY2l0LW1hcC0xLmMKCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBi L2djYy9naW1wbGlmeS5jCmluZGV4IDkxYWExNWQuLmJhMDcxZTggMTAwNjQ0Ci0tLSBhL2dj Yy9naW1wbGlmeS5jCisrKyBiL2djYy9naW1wbGlmeS5jCkBAIC0xMDU3OSw2ICsxMDU3OSw3 IEBAIGdpbXBsaWZ5X2FkanVzdF9vbXBfY2xhdXNlc18xIChzcGxheV90cmVlX25vZGUgbiwg dm9pZCAqZGF0YSkKIAkgIGdjY191bnJlYWNoYWJsZSAoKTsKIAl9CiAgICAgICBPTVBfQ0xB VVNFX1NFVF9NQVBfS0lORCAoY2xhdXNlLCBraW5kKTsKKyAgICAgIE9NUF9DTEFVU0VfTUFQ X0lNUExJQ0lUX1AgKGNsYXVzZSkgPSAxOwogICAgICAgaWYgKERFQ0xfU0laRSAoZGVjbCkK IAkgICYmIFRSRUVfQ09ERSAoREVDTF9TSVpFIChkZWNsKSkgIT0gSU5URUdFUl9DU1QpCiAJ ewpAQCAtMTExNTgsOSArMTExNTksMTUgQEAgZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2Vz IChnaW1wbGVfc2VxICpwcmVfcCwgZ2ltcGxlX3NlcSBib2R5LCB0cmVlICpsaXN0X3AsCiAJ bGlzdF9wID0gJk9NUF9DTEFVU0VfQ0hBSU4gKGMpOwogICAgIH0KIAotICAvKiBBZGQgaW4g YW55IGltcGxpY2l0IGRhdGEgc2hhcmluZy4gICovCisgIC8qIEFkZCBpbiBhbnkgaW1wbGlj aXQgZGF0YSBzaGFyaW5nLiBJbXBsaWNpdCBjbGF1c2VzIGFyZSBhZGRlZCBhdCB0aGUgc3Rh cnQKKyAgICAgb2YgdGhlIGNsYXVzZSBsaXN0LCBidXQgYWZ0ZXIgYW55IG5vbi1tYXAgY2xh dXNlcy4gICovCiAgIHN0cnVjdCBnaW1wbGlmeV9hZGp1c3Rfb21wX2NsYXVzZXNfZGF0YSBk YXRhOwotICBkYXRhLmxpc3RfcCA9IGxpc3RfcDsKKyAgdHJlZSAqaW1wbGljaXRfYWRkX2xp c3RfcCA9IG9yaWdfbGlzdF9wOworICB3aGlsZSAoKmltcGxpY2l0X2FkZF9saXN0X3AKKwkg JiYgT01QX0NMQVVTRV9DT0RFICgqaW1wbGljaXRfYWRkX2xpc3RfcCkgIT0gT01QX0NMQVVT RV9NQVApCisgICAgaW1wbGljaXRfYWRkX2xpc3RfcCA9ICZPTVBfQ0xBVVNFX0NIQUlOICgq aW1wbGljaXRfYWRkX2xpc3RfcCk7CisKKyAgZGF0YS5saXN0X3AgPSBpbXBsaWNpdF9hZGRf bGlzdF9wOwogICBkYXRhLnByZV9wID0gcHJlX3A7CiAgIHNwbGF5X3RyZWVfZm9yZWFjaCAo Y3R4LT52YXJpYWJsZXMsIGdpbXBsaWZ5X2FkanVzdF9vbXBfY2xhdXNlc18xLCAmZGF0YSk7 CiAKZGlmZiAtLWdpdCBhL2djYy9vbXAtbG93LmMgYi9nY2Mvb21wLWxvdy5jCmluZGV4IDY2 NTE5YWQuLjY0YjdjMTkgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtbG93LmMKKysrIGIvZ2NjL29t cC1sb3cuYwpAQCAtMTI5MjAsNiArMTI5MjAsMTkgQEAgbG93ZXJfb21wX3RhcmdldCAoZ2lt cGxlX3N0bXRfaXRlcmF0b3IgKmdzaV9wLCBvbXBfY29udGV4dCAqY3R4KQogCQkgICAgZWxz ZSBpZiAoaW50ZWdlcl9ub256ZXJvcCAocykpCiAJCSAgICAgIHRraW5kX3plcm8gPSB0a2lu ZDsKIAkJICB9CisJCWlmICh0a2luZF96ZXJvID09IHRraW5kCisJCSAgICAmJiBPTVBfQ0xB VVNFX01BUF9JTVBMSUNJVF9QIChjKQorCQkgICAgJiYgKCgodGtpbmQgJiBHT01QX01BUF9G TEFHX1NQRUNJQUxfQklUUykKKwkJCSAmIH5HT01QX01BUF9JTVBMSUNJVCkKKwkJCT09IDAp KQorCQkgIHsKKwkJICAgIC8qIElmIHRoaXMgaXMgYW4gaW1wbGljaXQgbWFwLCBhbmQgdGhl IEdPTVBfTUFQX0lNUExJQ0lUCisJCSAgICAgICBiaXRzIGFyZSBub3QgaW50ZXJmZXJlZCBi eSBvdGhlciBzcGVjaWFsIGJpdCBlbmNvZGluZ3MsCisJCSAgICAgICB0aGVuIHR1cm4gdGhl IEdPTVBfSU1QTElDSVRfQklUIGZsYWcgb24gZm9yIHRoZSBydW50aW1lCisJCSAgICAgICB0 byBzZWUuICAqLworCQkgICAgdGtpbmQgfD0gR09NUF9NQVBfSU1QTElDSVQ7CisJCSAgICB0 a2luZF96ZXJvID0gdGtpbmQ7CisJCSAgfQogCQlicmVhazsKIAkgICAgICBjYXNlIE9NUF9D TEFVU0VfRklSU1RQUklWQVRFOgogCQlnY2NfY2hlY2tpbmdfYXNzZXJ0IChpc19naW1wbGVf b21wX29hY2MgKGN0eC0+c3RtdCkpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29hY2MvY29tYmluZWQtcmVkdWN0aW9uLmMgYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9nb2FjYy9jb21iaW5lZC1yZWR1Y3Rpb24uYwppbmRleCBlY2YyM2Y1Li5m YTY3ZTA4IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9j b21iaW5lZC1yZWR1Y3Rpb24uYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b2FjYy9jb21iaW5lZC1yZWR1Y3Rpb24uYwpAQCAtMjMsNyArMjMsNyBAQCBtYWluICgpCiAg IHJldHVybiAwOwogfQogCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg Im9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCByZWR1Y3Rpb24uKzp2MS4gbWFwLnRvZnJvbTp2 MSIgMSAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAib21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIHJlZHVjdGlvbi4rOnYxLiBmaXJzdHBy aXZhdGUubi4gbWFwLnRvZnJvbTp2MSIgMSAiZ2ltcGxlIiB9IH0gKi8KIC8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYWNjIGxvb3AgcmVkdWN0aW9uLis6djEuIHBy aXZhdGUuaS4iIDEgImdpbXBsZSIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIm9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcC5mb3JjZV90b2Zyb206 biAubGVuOiA0Li4gbWFwLmZvcmNlX3RvZnJvbTp2MSAubGVuOiA0Li4iIDEgImdpbXBsZSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm9tcCB0YXJn ZXQgb2FjY19rZXJuZWxzIG1hcC5mb3JjZV90b2Zyb206biAubGVuOiA0Li5pbXBsaWNpdC4u IG1hcC5mb3JjZV90b2Zyb206djEgLmxlbjogNC4uaW1wbGljaXQuLiIgMSAiZ2ltcGxlIiB9 IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYWNjIGxvb3Ag cmVkdWN0aW9uLis6djEuIHByaXZhdGUuaS4iIDEgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9maXJzdHByaXZhdGUtbWFw cGluZ3MtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvZmlyc3Rwcml2 YXRlLW1hcHBpbmdzLTEuYwppbmRleCA3OTg3YmVhLi5mNDNlNGI0IDEwMDY0NAotLS0gYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9maXJzdHByaXZhdGUtbWFwcGluZ3Mt MS5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL2ZpcnN0cHJpdmF0 ZS1tYXBwaW5ncy0xLmMKQEAgLTQxOSwxMiArNDE5LDEyIEBAIHZsYSAoaW50IGFycmF5X2xp KQogICBjb3B5b3V0IChhcnJheV9zbykKICAgLyogVGhlIGdpbXBsaWZpZXIgaGFzIGNyZWF0 ZWQgYW4gaW1wbGljaXQgJ2ZpcnN0cHJpdmF0ZScgY2xhdXNlIGZvciB0aGUgYXJyYXkKICAg ICAgbGVuZ3RoLgotICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyg/bikjcHJh Z21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBtYXBcKGZyb206YXJyYXlfc28gXFtsZW46 IDRcXVwpIGZpcnN0cHJpdmF0ZVwoYXJyYXlfbGkuWzAtOV0rXCl9IG9tcGxvd2VyIHsgdGFy Z2V0IHsgISBjKysgfSB9IH0gfQotICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg eyg/bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBtYXBcKGZyb206YXJyYXlf c28gXFtsZW46IDRcXVwpIGZpcnN0cHJpdmF0ZVwofSBvbXBsb3dlciB7IHRhcmdldCB7IGMr KyB9IH0gfSB9CisgICAgIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7KD9uKSNwcmFn bWEgb21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIGZpcnN0cHJpdmF0ZVwoYXJyYXlfbGkuWzAt OV0rXCkgbWFwXChmcm9tOmFycmF5X3NvIFxbbGVuOiA0XF1cKX0gb21wbG93ZXIgeyB0YXJn ZXQgeyAhIGMrKyB9IH0gfSB9CisgICAgIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7 KD9uKSNwcmFnbWEgb21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIGZpcnN0cHJpdmF0ZVwoW14p XStcKSBtYXBcKGZyb206YXJyYXlfc28gXFtsZW46IDRcXVwpfSBvbXBsb3dlciB7IHRhcmdl dCB7IGMrKyB9IH0gfSB9CiAgICAgIChDKysgY29tcHV0ZXMgYW4gaW50ZXJtZWRpYXRlIHZh bHVlLCBzbyBjYW4ndCBzY2FuIGZvciAnZmlyc3Rwcml2YXRlKGFycmF5X2xpKScuKSAgKi8K ICAgLyogRm9yIEMsIG5vbi1MUDY0LCB0aGUgZ2ltcGxpZmllciBoYXMgYWxzbyBjcmVhdGVk IGEgbWFwcGluZyBmb3IgdGhlIGFycmF5CiAgICAgIGl0c2VsZjsgUFI5MDg1OS4KLSAgICAg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsoP24pI3ByYWdtYSBvbXAgdGFyZ2V0IG9h Y2NfcGFyYWxsZWwgbWFwXChmcm9tOmFycmF5X3NvIFxbbGVuOiA0XF1cKSBmaXJzdHByaXZh dGVcKGFycmF5X2xpLlswLTldK1wpIG1hcFwodG9mcm9tOlwoXCphcnJheS5bMC05XStcKSBc W2xlbjogRFwuWzAtOV0rXF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTphcnJheSBcW3BvaW50ZXIg YXNzaWduLCBiaWFzOiAwXF1cKSBcW30gb21wbG93ZXIgeyB0YXJnZXQgeyBjICYmIHsgISBs cDY0IH0gfSB9IH0gfSAqLworICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyg/ bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBmaXJzdHByaXZhdGVcKGFycmF5 X2xpLlswLTldK1wpIG1hcFwodG9mcm9tOlwoXCphcnJheS5bMC05XStcKSBcW2xlbjogRFwu WzAtOV0rXF1cW2ltcGxpY2l0XF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTphcnJheSBcW3BvaW50 ZXIgYXNzaWduLCBiaWFzOiAwXF1cKSBtYXBcKGZyb206YXJyYXlfc28gXFtsZW46IDRcXVwp IFxbfSBvbXBsb3dlciB7IHRhcmdldCB7IGMgJiYgeyAhIGxwNjQgfSB9IH0gfSB9ICovCiAg IHsKICAgICBhcnJheV9zbyA9IHNpemVvZiBhcnJheTsKICAgfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvbWRjLTEuYyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvYWNjL21kYy0xLmMKaW5kZXggMzM3YzFmNy4uOWY0M2RlNCAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvbWRjLTEuYworKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9tZGMtMS5jCkBAIC00NSw3ICs0 NSw3IEBAIHQxICgpCiAKIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi cHJhZ21hIG9tcCB0YXJnZXQgb2FjY19lbnRlcl9leGl0X2RhdGEgbWFwLnRvOnMgLmxlbjog MzIuLiIgMSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNjX2RhdGEgbWFwLnRvZnJvbToueiAu bGVuOiA0MC4uIG1hcC5zdHJ1Y3Q6cyAubGVuOiAxLi4gbWFwLmFsbG9jOnMuYSAubGVuOiA4 Li4gbWFwLnRvZnJvbTouXzEgLmxlbjogNDAuLiBtYXAuYXR0YWNoOnMuYSAuYmlhczogMC4u IiAxICJvbXBsb3dlciIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgInByYWdtYSBvbXAgdGFyZ2V0IG9hY2NfcGFyYWxsZWwgbWFwLmF0dGFjaDpzLmUg LmJpYXM6IDAuLiBtYXAudG9mcm9tOnMgLmxlbjogMzIiIDEgIm9tcGxvd2VyIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAicHJhZ21hIG9tcCB0YXJn ZXQgb2FjY19wYXJhbGxlbCBtYXAudG9mcm9tOnMgLmxlbjogMzIuLmltcGxpY2l0Li4gbWFw LmF0dGFjaDpzLmUgLmJpYXM6IDAuLiIgMSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNjX2Vu dGVyX2V4aXRfZGF0YSBtYXAuYXR0YWNoOmEgLmJpYXM6IDAuLiIgMSAib21wbG93ZXIiIH0g fSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcmFnbWEgb21w IHRhcmdldCBvYWNjX2VudGVyX2V4aXRfZGF0YSBtYXAuZGV0YWNoOmEgLmJpYXM6IDAuLiIg MSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNjX2VudGVyX2V4aXRfZGF0YSBtYXAudG86YSAu bGVuOiA4Li4iIDEgIm9tcGxvd2VyIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi0xLmMgYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMS5jCmluZGV4IDM1YmZjODYuLmQ5ZTNjMzgg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlv bi0xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9u LTEuYwpAQCAtNjgsNSArNjgsNSBAQCBtYWluKHZvaWQpCiB9CiAKIC8qIENoZWNrIHRoYXQg ZGVmYXVsdCBjb3B5IG1hcHMgYXJlIGdlbmVyYXRlZCBmb3IgbG9vcCByZWR1Y3Rpb25zLiAg Ki8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwXFwodG9mcm9t OnJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiIDcgImdpbXBsZSIgfSB9ICovCi0v KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpscmVz dWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgMiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwXFwodG9mcm9tOnJlc3VsdCBc XFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGljaXRcXFxdXFwpIiA3ICJnaW1wbGUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJtYXBcXCh0b2Zy b206bHJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGljaXRcXFxdXFwpIiAy ICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29hY2MvcmVkdWN0aW9uLTIuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dv YWNjL3JlZHVjdGlvbi0yLmMKaW5kZXggOWRiYTAzNS4uMThkYzAzYyAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTIuYworKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMi5jCkBAIC01MCw1 ICs1MCw1IEBAIG1haW4odm9pZCkKIH0KIAogLyogQ2hlY2sgdGhhdCBkZWZhdWx0IGNvcHkg bWFwcyBhcmUgZ2VuZXJhdGVkIGZvciBsb29wIHJlZHVjdGlvbnMuICAqLwotLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJtYXBcXCh0b2Zyb206cmVzdWx0IFxcXFts ZW46IFxbMC05XF0rXFxcXVxcKSIgNCAiZ2ltcGxlIiB9IH0gKi8KLS8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwXFwodG9mcm9tOmxyZXN1bHQgXFxcW2xlbjog XFswLTlcXStcXFxdXFwpIiAyICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJtYXBcXCh0b2Zyb206cmVzdWx0IFxcXFtsZW46IFxbMC05 XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDQgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpscmVzdWx0IFxc XFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDIgImdpbXBsZSIgfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1 Y3Rpb24tMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9u LTMuYwppbmRleCA2NjljZDQzLi4yMzExZDRiIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMy5jCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi0zLmMKQEAgLTUwLDUgKzUwLDUgQEAgbWFp bih2b2lkKQogfQogCiAvKiBDaGVjayB0aGF0IGRlZmF1bHQgY29weSBtYXBzIGFyZSBnZW5l cmF0ZWQgZm9yIGxvb3AgcmVkdWN0aW9ucy4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpyZXN1bHQgXFxcW2xlbjogXFswLTlcXStc XFxdXFwpIiA0ICJnaW1wbGUiIH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJtYXBcXCh0b2Zyb206bHJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1c XCkiIDIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIm1hcFxcKHRvZnJvbTpyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2lt cGxpY2l0XFxcXVxcKSIgNCAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAibWFwXFwodG9mcm9tOmxyZXN1bHQgXFxcW2xlbjogXFswLTlc XStcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIgMiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi00LmMgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tNC5jCmluZGV4IDVj M2RmYjEuLjU3ODIzZjggMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvYWNjL3JlZHVjdGlvbi00LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v Z29hY2MvcmVkdWN0aW9uLTQuYwpAQCAtMzgsNSArMzgsNSBAQCBtYWluKHZvaWQpCiB9CiAK IC8qIENoZWNrIHRoYXQgZGVmYXVsdCBjb3B5IG1hcHMgYXJlIGdlbmVyYXRlZCBmb3IgbG9v cCByZWR1Y3Rpb25zLiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAibWFwXFwodG9mcm9tOnJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiIDIgImdp bXBsZSIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm1h cFxcKHRvZnJvbTpscmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgMiAiZ2ltcGxl IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwXFwo dG9mcm9tOnJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGljaXRcXFxdXFwp IiAyICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICJtYXBcXCh0b2Zyb206bHJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1w bGljaXRcXFxdXFwpIiAyICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTguYyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi04LmMKaW5kZXggOGEwMjgzZi4uODQ5NGU1 OSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0 aW9uLTguYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rp b24tOC5jCkBAIC04Nyw4ICs4NywxMCBAQCBtYWluKHZvaWQpCiAKIC8qIENoZWNrIHRoYXQg ZGVmYXVsdCBjb3B5IG1hcHMgYXJlIGdlbmVyYXRlZCBmb3IgbG9vcCByZWR1Y3Rpb25zLiAg Ki8KIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAicmVkdWN0aW9uLi46 cmVzdWx0LiBtYXAudG9mcm9tOnJlc3VsdCAubGVuOiA0Li4iIDEgImdpbXBsZSIgfSB9ICov Ci0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm9hY2NfcGFyYWxsZWwg bWFwLnRvZnJvbTpyZXN1bHQgLmxlbjogNC4uIiAyICJnaW1wbGUiIH0gfSAqLwotLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJtYXAudG9mcm9tOmFycmF5IC5sZW46 IDQwMDAuLiBmaXJzdHByaXZhdGUucmVzdWx0LiIgMyAiZ2ltcGxlIiB9IH0gKi8KLS8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwLnRvZnJvbTpyZXN1bHQgLmxl bjogNC4uIG1hcC50b2Zyb206YXJyYXkgLmxlbjogNDAwMC4uIiAxICJnaW1wbGUiIH0gfSAq LwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJtYXAudG9mcm9tOmFy cmF5IC5sZW46IDQwMDAuLiBtYXAuZm9yY2VfdG9mcm9tOnJlc3VsdCAubGVuOiA0Li4iIDEg ImdpbXBsZSIgfSB9ICovCisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAib2FjY19wYXJhbGxlbCBtYXAudG9mcm9tOnJlc3VsdCAubGVuOiA0Li5pbXBsaWNpdC4u IiAxICJnaW1wbGUiIH0gfSAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIm1hcC50b2Zyb206YXJyYXkgLmxlbjogNDAwMC4uaW1wbGljaXQuLiBmaXJzdHBy aXZhdGUucmVzdWx0LiIgMyAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAibWFwLnRvZnJvbTphcnJheSAubGVuOiA0MDAwLi5pbXBsaWNp dC4uIG1hcC50b2Zyb206cmVzdWx0IC5sZW46IDQuLiIgMSAiZ2ltcGxlIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwLnRvZnJvbTphcnJheSAu bGVuOiA0MDAwLi5pbXBsaWNpdC4uIG1hcC5mb3JjZV90b2Zyb206cmVzdWx0IC5sZW46IDQu LmltcGxpY2l0Li4iIDEgImdpbXBsZSIgfSB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWltcGxpY2l0LW1hcC0xLmMgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1pbXBsaWNpdC1tYXAtMS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyOTQ0ZmQKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1pbXBsaWNp dC1tYXAtMS5jCkBAIC0wLDAgKzEsMzkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisj aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbHNlCitleHRlcm4KKyNlbmRpZgor dm9pZCBhYm9ydCAodm9pZCk7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgI2RlZmluZSBO IDUKKyAgaW50IGFycmF5W05dW05dOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsr KQorICAgIHsKKyAgICAgICNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcChhbGxv YzogYXJyYXlbaToxXVswOk5dKQorCisgICAgICAjcHJhZ21hIG9tcCB0YXJnZXQKKyAgICAg IGZvciAoaW50IGogPSAwOyBqIDwgTjsgaisrKQorCWFycmF5W2ldW2pdID0gaSAqIDEwICsg ajsKKworICAgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IGV4aXQgZGF0YSBtYXAoZnJvbTogYXJy YXlbaToxXVswOk5dKQorICAgIH0KKworICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykK KyAgICBmb3IgKGludCBqID0gMDsgaiA8IE47IGorKykKKyAgICAgIGlmIChhcnJheVtpXVtq XSAhPSBpICsgaikKKwlhYm9ydCAoKTsKKworICByZXR1cm4gMDsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBt YXBcKGFsbG9jOmFycmF5XFtbXl1dK1xdXFswXF0gXFtsZW46IFswLTldK1xdXCl9ICJnaW1w bGUiIH0gfSAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyNwcmFnbWEg b21wIHRhcmdldCBudW1fdGVhbXMuKiBmaXJzdHByaXZhdGVcKGlcKSBtYXBcKHRvZnJvbTph cnJheSBcW2xlbjogWzAtOV0rXF1cW2ltcGxpY2l0XF1cKX0gImdpbXBsZSIgfSB9ICovCisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7I3ByYWdtYSBvbXAgdGFyZ2V0IGV4 aXQgZGF0YSBtYXBcKGZyb206YXJyYXlcW1teXV0rXF1cWzBcXSBcW2xlbjogWzAtOV0rXF1c KX0gImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9n b2FjYy9maXJzdHByaXZhdGUtbWFwcGluZ3MtMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Z29hY2MvZmlyc3Rwcml2YXRlLW1hcHBpbmdzLTEuQwppbmRleCAxYjFiYWRiLi45OWEzYmQ0 IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb2FjYy9maXJzdHByaXZhdGUt bWFwcGluZ3MtMS5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvYWNjL2ZpcnN0cHJp dmF0ZS1tYXBwaW5ncy0xLkMKQEAgLTQxNiw3ICs0MTYsNyBAQCB2bGEgKGludCAmYXJyYXlf bGkpCiAgIGNvcHlvdXQgKGFycmF5X3NvKQogICAvKiBUaGUgZ2ltcGxpZmllciBoYXMgY3Jl YXRlZCBhbiBpbXBsaWNpdCAnZmlyc3Rwcml2YXRlJyBjbGF1c2UgZm9yIHRoZSBhcnJheQog ICAgICBsZW5ndGguCi0gICAgIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7KD9uKSNw cmFnbWEgb21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIG1hcFwoZnJvbTphcnJheV9zbyBcW2xl bjogNFxdXCkgZmlyc3Rwcml2YXRlXCh9IG9tcGxvd2VyIH0gfQorICAgICB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgeyg/bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxl bCBmaXJzdHByaXZhdGVcKFteKV0rXCkgbWFwXChmcm9tOmFycmF5X3NvIFxbbGVuOiA0XF1c KX0gb21wbG93ZXIgfSB9CiAgICAgIChDKysgY29tcHV0ZXMgYW4gaW50ZXJtZWRpYXRlIHZh bHVlLCBzbyBjYW4ndCBzY2FuIGZvciAnZmlyc3Rwcml2YXRlKGFycmF5X2xpKScuKSAgKi8K ICAgewogICAgIGFycmF5X3NvID0gc2l6ZW9mIGFycmF5OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtbGFtYmRhLTEuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2dvbXAvdGFyZ2V0LWxhbWJkYS0xLkMKaW5kZXggN2RjZWVmOC4uZTVhMjRkNyAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtbGFtYmRhLTEu QworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL3RhcmdldC1sYW1iZGEtMS5DCkBA IC04Nyw4ICs4Nyw4IEBAIGludCBtYWluICh2b2lkKQogICByZXR1cm4gMDsKIH0KIAotLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9tcCB0YXJnZXQgbnVtX3Rl YW1zLiogbWFwXCh0bzpcKl9fY2xvc3VyZSBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGZpcnN0 cHJpdmF0ZTpfX2Nsb3N1cmUgXFtwb2ludGVyIGFzc2lnbiwgYmlhczogMFxdXCkgbWFwXChh dHRhY2hfemVyb19sZW5ndGhfYXJyYXlfc2VjdGlvbjpfX2Nsb3N1cmUtPl9faXB0ciBcW2Jp YXM6IDBcXVwpIG1hcFwoc3RydWN0OlwqX19jbG9zdXJlIFxbbGVuOiAxXF1cKSBtYXBcKGFs bG9jOl9fY2xvc3VyZS0+X190aGlzIFxbbGVuOiBbMC05XStcXVwpIG1hcFwodG9mcm9tOlwq X1swLTldKyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsd2F5c19wb2ludGVyOl9fY2xvc3Vy ZS0+X190aGlzIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0YWNoX3pl cm9fbGVuZ3RoX2FycmF5X3NlY3Rpb246X1swLTldKy0+cHRyIFxbYmlhczogMFxdXCkgbWFw XChmcm9tOm1hcHBlZCBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsbG9jOlwqX1swLTldKyBc W2xlbjogMFxdXCkgbWFwXChhbGxvYzpcKl9bMC05XSsgXFtsZW46IDBcXVwpIGZpcnN0cHJp dmF0ZVwoYlwpIG1hcFwoYWxsb2M6TUVNLiogXFtsZW46IDBcXVwpIG1hcFwoZmlyc3Rwcml2 YXRlOmlwdHIgXFtwb2ludGVyIGFzc2lnbiwgYmlhczogMFxdXCkgbWFwXChhbGxvYzpNRU0u KiBcW2xlbjogMFxdXCkgbWFwXChmaXJzdHByaXZhdGU6dGhpcyBcW3BvaW50ZXIgYXNzaWdu LCBiaWFzOiAwXF1cKX0gImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgeyNwcmFnbWEgb21wIHRhcmdldCBudW1fdGVhbXMuKiBmaXJzdHByaXZhdGVc KGJcKSBtYXBcKGFsbG9jOk1FTS4qIFxbbGVuOiAwXF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTpp cHRyIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoYWxsb2M6TUVNLiogXFts ZW46IDBcXVwpIG1hcFwoZmlyc3Rwcml2YXRlOnRoaXMgXFtwb2ludGVyIGFzc2lnbiwgYmlh czogMFxdXCkgbWFwXCh0bzpcKl9fY2xvc3VyZSBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGZp cnN0cHJpdmF0ZTpfX2Nsb3N1cmUgXFtwb2ludGVyIGFzc2lnbiwgYmlhczogMFxdXCkgbWFw XChhdHRhY2hfemVyb19sZW5ndGhfYXJyYXlfc2VjdGlvbjpfX2Nsb3N1cmUtPl9faXB0ciBc W2JpYXM6IDBcXVwpIG1hcFwoc3RydWN0OlwqX19jbG9zdXJlIFxbbGVuOiAxXF1cKSBtYXBc KGFsbG9jOl9fY2xvc3VyZS0+X190aGlzIFxbbGVuOiBbMC05XStcXVwpIG1hcFwodG9mcm9t OlwqX1swLTldKyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsd2F5c19wb2ludGVyOl9fY2xv c3VyZS0+X190aGlzIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0YWNo X3plcm9fbGVuZ3RoX2FycmF5X3NlY3Rpb246X1swLTldKy0+cHRyIFxbYmlhczogMFxdXCkg bWFwXChmcm9tOm1hcHBlZCBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsbG9jOlwqX1swLTld KyBcW2xlbjogMFxdXCkgbWFwXChhbGxvYzpcKl9bMC05XSsgXFtsZW46IDBcXVwpfSAiZ2lt cGxlIiB9IH0gKi8KIAotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21h IG9tcCB0YXJnZXQgbnVtX3RlYW1zLiogbWFwXCh0bzpsb29wIFxbbGVuOiBbMC05XStcXVwp IG1hcFwoYXR0YWNoX3plcm9fbGVuZ3RoX2FycmF5X3NlY3Rpb246bG9vcFwuX19kYXRhMSBc W2JpYXM6IDBcXVwpIG1hcFwoYWxsb2M6XCpfWzAtOV0rIFxbbGVuOiAwXF1cKSBmaXJzdHBy aXZhdGVcKGVuZFwpIGZpcnN0cHJpdmF0ZVwoYmVnaW5cKX0gImdpbXBsZSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyNwcmFnbWEgb21wIHRhcmdldCBudW1f dGVhbXMuKiBmaXJzdHByaXZhdGVcKGVuZFwpIGZpcnN0cHJpdmF0ZVwoYmVnaW5cKSBtYXBc KHRvOmxvb3AgXFtsZW46IFswLTldK1xdXCkgbWFwXChhdHRhY2hfemVyb19sZW5ndGhfYXJy YXlfc2VjdGlvbjpsb29wXC5fX2RhdGExIFxbYmlhczogMFxdXCkgbWFwXChhbGxvYzpcKl9b MC05XSsgXFtsZW46IDBcXVwpfSAiZ2ltcGxlIiB9IH0gKi8KIAotLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9tcCB0YXJnZXQgbnVtX3RlYW1zLiogbWFwXCh0 bzpsb29wIFxbbGVuOiBbMC05XStcXVwpIG1hcFwoYXR0YWNoX3plcm9fbGVuZ3RoX2FycmF5 X3NlY3Rpb246bG9vcFwuX19kYXRhMiBcW2JpYXM6IDBcXVwpIG1hcFwoYWxsb2M6XCpfWzAt OV0rIFxbbGVuOiAwXF1cKSBmaXJzdHByaXZhdGVcKGVuZFwpIGZpcnN0cHJpdmF0ZVwoYmVn aW5cKX0gImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg eyNwcmFnbWEgb21wIHRhcmdldCBudW1fdGVhbXMuKiBmaXJzdHByaXZhdGVcKGVuZFwpIGZp cnN0cHJpdmF0ZVwoYmVnaW5cKSBtYXBcKHRvOmxvb3AgXFtsZW46IFswLTldK1xdXCkgbWFw XChhdHRhY2hfemVyb19sZW5ndGhfYXJyYXlfc2VjdGlvbjpsb29wXC5fX2RhdGEyIFxbYmlh czogMFxdXCkgbWFwXChhbGxvYzpcKl9bMC05XSsgXFtsZW46IDBcXVwpfSAiZ2ltcGxlIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvdGFyZ2V0LXRo aXMtMy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtdGhpcy0zLkMKaW5k ZXggMDg1NjhmOS4uMjc1NWI0YiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Z29tcC90YXJnZXQtdGhpcy0zLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90 YXJnZXQtdGhpcy0zLkMKQEAgLTEwMCw2ICsxMDAsNiBAQCBpbnQgbWFpbiAodm9pZCkKICAg cmV0dXJuIDA7CiB9CiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7I3ByYWdt YSBvbXAgdGFyZ2V0IG51bV90ZWFtcy4qIG1hcFwodG9mcm9tOlwqdGhpcyBcW2xlbjogWzAt OV0rXF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTp0aGlzIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6 IDBcXVwpIG1hcFwoYWxsb2M6XCpfWzAtOV0rIFxbcG9pbnRlciBhc3NpZ24sIHplcm8tbGVu Z3RoIGFycmF5IHNlY3Rpb24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0YWNoOnRoaXMtPnJlZnB0 ciBcW2JpYXM6IDBcXVwpIG1hcFwoZnJvbTptYXBwZWQgXFtsZW46IFswLTldK1xdXCkgbWFw XChhbGxvYzpcKl9bMC05K10gXFtsZW46IDBcXVwpIGZpcnN0cHJpdmF0ZVwoblwpfSAiZ2lt cGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7I3ByYWdtYSBv bXAgdGFyZ2V0IG51bV90ZWFtcy4qIGZpcnN0cHJpdmF0ZVwoblwpIG1hcFwodG9mcm9tOlwq dGhpcyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTp0aGlzIFxbcG9pbnRl ciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoYWxsb2M6XCpfWzAtOV0rIFxbcG9pbnRlciBh c3NpZ24sIHplcm8tbGVuZ3RoIGFycmF5IHNlY3Rpb24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0 YWNoOnRoaXMtPnJlZnB0ciBcW2JpYXM6IDBcXVwpIG1hcFwoZnJvbTptYXBwZWQgXFtsZW46 IFswLTldK1xdXCkgbWFwXChhbGxvYzpcKl9bMC05K10gXFtsZW46IDBcXVwpfSAiZ2ltcGxl IiB9IH0gKi8KIAotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9t cCB0YXJnZXQgbnVtX3RlYW1zLiogbWFwXCh0b2Zyb206XCp0aGlzIFxbbGVuOiBbMC05XStc XVwpIG1hcFwoZmlyc3Rwcml2YXRlOnRoaXMgXFtwb2ludGVyIGFzc2lnbiwgYmlhczogMFxd XCkgbWFwXChhdHRhY2hfemVyb19sZW5ndGhfYXJyYXlfc2VjdGlvbjp0aGlzLT5wdHIgXFti aWFzOiAwXF1cKSBtYXBcKGZyb206bWFwcGVkIFxbbGVuOiBbMC05XStcXVwpIG1hcFwoYWxs b2M6XCpfWzAtOV0rIFxbbGVuOiAwXF1cKSBmaXJzdHByaXZhdGVcKG5cKX0gImdpbXBsZSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyNwcmFnbWEgb21wIHRh cmdldCBudW1fdGVhbXMuKiBmaXJzdHByaXZhdGVcKG5cKSBtYXBcKHRvZnJvbTpcKnRoaXMg XFtsZW46IFswLTldK1xdXCkgbWFwXChmaXJzdHByaXZhdGU6dGhpcyBcW3BvaW50ZXIgYXNz aWduLCBiaWFzOiAwXF1cKSBtYXBcKGF0dGFjaF96ZXJvX2xlbmd0aF9hcnJheV9zZWN0aW9u OnRoaXMtPnB0ciBcW2JpYXM6IDBcXVwpIG1hcFwoZnJvbTptYXBwZWQgXFtsZW46IFswLTld K1xdXCkgbWFwXChhbGxvYzpcKl9bMC05XSsgXFtsZW46IDBcXVwpfSAiZ2ltcGxlIiB9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvdGFyZ2V0LXRoaXMt NC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtdGhpcy00LkMKaW5kZXgg M2IyZDU4MS4uMzcwMzc2MiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29t cC90YXJnZXQtdGhpcy00LkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90YXJn ZXQtdGhpcy00LkMKQEAgLTEwMiw2ICsxMDIsNiBAQCBpbnQgbWFpbiAodm9pZCkKICAgcmV0 dXJuIDA7CiB9CiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7I3ByYWdtYSBv bXAgdGFyZ2V0IG51bV90ZWFtcy4qIG1hcFwodG86XCpfX2Nsb3N1cmUgXFtsZW46IFswLTld K1xdXCkgbWFwXChmaXJzdHByaXZhdGU6X19jbG9zdXJlIFxbcG9pbnRlciBhc3NpZ24sIGJp YXM6IDBcXVwpIG1hcFwoc3RydWN0OlwqX19jbG9zdXJlIFxbbGVuOiAxXF1cKSBtYXBcKGFs bG9jOl9fY2xvc3VyZS0+X190aGlzIFxbbGVuOiBbMC05XStcXVwpIG1hcFwodG9mcm9tOlwq X1swLTldKyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsd2F5c19wb2ludGVyOl9fY2xvc3Vy ZS0+X190aGlzIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0YWNoX3pl cm9fbGVuZ3RoX2FycmF5X3NlY3Rpb246X1swLTldKy0+cHRyIFxbYmlhczogMFxdXCkgbWFw XChmcm9tOm1hcHBlZCBcW2xlbjogMVxdXCkgbWFwXChhbGxvYzpcKl9bMC05XSsgXFtsZW46 IDBcXVwpIGZpcnN0cHJpdmF0ZVwoblwpIG1hcFwoYWxsb2M6TUVNLiogXFtsZW46IDBcXVwp IG1hcFwoZmlyc3Rwcml2YXRlOnRoaXMgXFtwb2ludGVyIGFzc2lnbiwgYmlhczogMFxdXCl9 ICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJh Z21hIG9tcCB0YXJnZXQgbnVtX3RlYW1zLiogZmlyc3Rwcml2YXRlXChuXCkgbWFwXChhbGxv YzpNRU0uKiBcW2xlbjogMFxdXCkgbWFwXChmaXJzdHByaXZhdGU6dGhpcyBcW3BvaW50ZXIg YXNzaWduLCBiaWFzOiAwXF1cKSBtYXBcKHRvOlwqX19jbG9zdXJlIFxbbGVuOiBbMC05XStc XVwpIG1hcFwoZmlyc3Rwcml2YXRlOl9fY2xvc3VyZSBcW3BvaW50ZXIgYXNzaWduLCBiaWFz OiAwXF1cKSBtYXBcKHN0cnVjdDpcKl9fY2xvc3VyZSBcW2xlbjogMVxdXCkgbWFwXChhbGxv YzpfX2Nsb3N1cmUtPl9fdGhpcyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKHRvZnJvbTpcKl9b MC05XSsgXFtsZW46IFswLTldK1xdXCkgbWFwXChhbHdheXNfcG9pbnRlcjpfX2Nsb3N1cmUt Pl9fdGhpcyBcW3BvaW50ZXIgYXNzaWduLCBiaWFzOiAwXF1cKSBtYXBcKGF0dGFjaF96ZXJv X2xlbmd0aF9hcnJheV9zZWN0aW9uOl9bMC05XSstPnB0ciBcW2JpYXM6IDBcXVwpIG1hcFwo ZnJvbTptYXBwZWQgXFtsZW46IDFcXVwpIG1hcFwoYWxsb2M6XCpfWzAtOV0rIFxbbGVuOiAw XF1cKX0gImdpbXBsZSIgfSB9ICovCiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCB7I3ByYWdtYSBvbXAgdGFyZ2V0IG51bV90ZWFtcy4qIG1hcFwodG86XCpfX2Nsb3N1cmUg XFtsZW46IFswLTldK1xdXCkgbWFwXChmaXJzdHByaXZhdGU6X19jbG9zdXJlIFxbcG9pbnRl ciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1hcFwoc3RydWN0OlwqX19jbG9zdXJlIFxbbGVuOiAx XF1cKSBtYXBcKGFsbG9jOl9fY2xvc3VyZS0+X190aGlzIFxbbGVuOiBbMC05XStcXVwpIG1h cFwodG9mcm9tOlwqX1swLTldKyBcW2xlbjogWzAtOV0rXF1cKSBtYXBcKGFsd2F5c19wb2lu dGVyOl9fY2xvc3VyZS0+X190aGlzIFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXVwpIG1h cFwoYWxsb2M6XCpfWzAtOV0rIFxbcG9pbnRlciBhc3NpZ24sIHplcm8tbGVuZ3RoIGFycmF5 IHNlY3Rpb24sIGJpYXM6IDBcXVwpIG1hcFwoYXR0YWNoOl9bMC05XSstPnJlZnB0ciBcW2Jp YXM6IDBcXVwpIG1hcFwoZnJvbTptYXBwZWQgXFtsZW46IFswLTldK1xdXCkgbWFwXChhbGxv YzpcKl9bMC05XSsgXFtsZW46IDBcXVwpIGZpcnN0cHJpdmF0ZVwoblwpIG1hcFwoYWxsb2M6 TUVNLiogXFtsZW46IDBcXVwpIG1hcFwoZmlyc3Rwcml2YXRlOnRoaXMgXFtwb2ludGVyIGFz c2lnbiwgYmlhczogMFxdXCl9ICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9tcCB0YXJnZXQgbnVtX3RlYW1zLiogZmlyc3Rwcml2 YXRlXChuXCkgbWFwXChhbGxvYzpNRU0uKiBcW2xlbjogMFxdXCkgbWFwXChmaXJzdHByaXZh dGU6dGhpcyBcW3BvaW50ZXIgYXNzaWduLCBiaWFzOiAwXF1cKSBtYXBcKHRvOlwqX19jbG9z dXJlIFxbbGVuOiBbMC05XStcXVwpIG1hcFwoZmlyc3Rwcml2YXRlOl9fY2xvc3VyZSBcW3Bv aW50ZXIgYXNzaWduLCBiaWFzOiAwXF1cKSBtYXBcKHN0cnVjdDpcKl9fY2xvc3VyZSBcW2xl bjogMVxdXCkgbWFwXChhbGxvYzpfX2Nsb3N1cmUtPl9fdGhpcyBcW2xlbjogWzAtOV0rXF1c KSBtYXBcKHRvZnJvbTpcKl9bMC05XSsgXFtsZW46IFswLTldK1xdXCkgbWFwXChhbHdheXNf cG9pbnRlcjpfX2Nsb3N1cmUtPl9fdGhpcyBcW3BvaW50ZXIgYXNzaWduLCBiaWFzOiAwXF1c KSBtYXBcKGFsbG9jOlwqX1swLTldKyBcW3BvaW50ZXIgYXNzaWduLCB6ZXJvLWxlbmd0aCBh cnJheSBzZWN0aW9uLCBiaWFzOiAwXF1cKSBtYXBcKGF0dGFjaDpfWzAtOV0rLT5yZWZwdHIg XFtiaWFzOiAwXF1cKSBtYXBcKGZyb206bWFwcGVkIFxbbGVuOiBbMC05XStcXVwpIG1hcFwo YWxsb2M6XCpfWzAtOV0rIFxbbGVuOiAwXF1cKX0gImdpbXBsZSIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2NvbW1vbi1ibG9jay0zLmY5 MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMuZjkw CmluZGV4IGU0M2QzNzYuLmU5ZjE2OWYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMuZjkwCkBAIC0zMywxMCArMzMsMTAg QEAgZW5kIHByb2dyYW0gbWFpbgogCiAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAib21wIHRhcmdldCBvYWNjX2RhdGFfa2VybmVscyAuKm1hcFxcKHRvZnJvbTp4IFxc XFtsZW46IDQwMFxcXF1cXCkiIDEgIm9tcGxvd2VyIiB9IH0KICEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2NfZGF0YV9rZXJuZWxzIC4qbWFw XFwodG9mcm9tOnkgXFxcW2xlbjogNDAwXFxcXVxcXCkiIDEgIm9tcGxvd2VyIiB9IH0KLSEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2Nfa2Vy bmVscyAuKm1hcFxcKGZvcmNlX3ByZXNlbnQ6eCBcXFxbbGVuOiA0MDBcXFxdXFwpIiAxICJv bXBsb3dlciIgfSB9Ci0hIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21w IHRhcmdldCBvYWNjX2tlcm5lbHMgLiptYXBcXChmb3JjZV9wcmVzZW50OnkgXFxcW2xlbjog NDAwXFxcXVxcXCkiIDEgIm9tcGxvd2VyIiB9IH0KLSEgeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyAuKm1hcFxcKGZvcmNlX3Rv ZnJvbTppIFxcXFtsZW46IDRcXFxdXFwpIiAxICJvbXBsb3dlciIgfSB9Ci0hIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tlcm5lbHMgLipt YXBcXChmb3JjZV90b2Zyb206YyBcXFxbbGVuOiA0XFxcXVxcKSIgMSAib21wbG93ZXIiIH0g fQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm9tcCB0YXJnZXQgb2Fj Y19rZXJuZWxzIC4qbWFwXFwoZm9yY2VfcHJlc2VudDp4IFxcXFtsZW46IDQwMFxcXF1cXFxb aW1wbGljaXRcXFxdXFwpIiAxICJvbXBsb3dlciIgfSB9CishIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tlcm5lbHMgLiptYXBcXChmb3Jj ZV9wcmVzZW50OnkgXFxcW2xlbjogNDAwXFxcXVxcXFtpbXBsaWNpdFxcXF1cXFwpIiAxICJv bXBsb3dlciIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21w IHRhcmdldCBvYWNjX2tlcm5lbHMgLiptYXBcXChmb3JjZV90b2Zyb206aSBcXFxbbGVuOiA0 XFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDEgIm9tcGxvd2VyIiB9IH0KKyEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyAuKm1h cFxcKGZvcmNlX3RvZnJvbTpjIFxcXFtsZW46IDRcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIg MSAib21wbG93ZXIiIH0gfQogCiAhIEV4cGVjdGluZyBubyBtYXBwaW5nIG9mIHVuLXJlZmVy ZW5jZWQgY29tbW9uLWJsb2NrcyB2YXJpYWJsZXMKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9sb29wLXRyZWUtMS5mOTAgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvYWNjL2xvb3AtdHJlZS0xLmY5MAppbmRleCAxNTBmOTMwLi40Y2Rm YzU1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2xvb3At dHJlZS0xLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2xvb3At dHJlZS0xLmY5MApAQCAtNDQsNCArNDQsNCBAQCBlbmQgcHJvZ3JhbSB0ZXN0CiAKICEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcml2YXRlXFwobVxcKSIgMSAib3Jp Z2luYWwiIH0gfSAKICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJyZWR1 Y3Rpb25cXChcXCs6c3VtXFwpIiAxICJvcmlnaW5hbCIgfSB9IAotISB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpzdW0gXFxcW2xlbjogXFswLTlc XStcXFxdXFwpIiAxICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpzdW0gXFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2lt cGxpY2l0XFxcXVxcKSIgMSAiZ2ltcGxlIiB9IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHJpdmF0ZS1leHBsaWNpdC1rZXJuZWxzLTEuZjk1IGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLWV4cGxpY2l0LWtlcm5l bHMtMS5mOTUKaW5kZXggMGM0NzA0NS4uZmVmNTEyNiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLWV4cGxpY2l0LWtlcm5lbHMtMS5mOTUK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLWV4cGxpY2l0 LWtlcm5lbHMtMS5mOTUKQEAgLTgzLDcgKzgzLDcgQEAgcHJvZ3JhbSB0ZXN0CiAgICEkYWNj IGtlcm5lbHMgISBFeHBsaWNpdCAicHJpdmF0ZShpMl8yX3MpIiBjbGF1c2UgY2Fubm90IGJl IHNwZWNpZmllZCBoZXJlLgogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAicHJpdmF0ZVxcKGkyXzJfc1xcKSIgMSAib3JpZ2luYWwiIHsgeGZhaWwgKi0qLSogfSB9 IH0gISBQUjkwMDY3CiAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJw cml2YXRlXFwoaTJfMl9zXFwpIiAxICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0gISBQ UjkwMDY3Ci0gICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21h IG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8yX3MgXFxc W2xlbjogXFswLTlcXStcXFxdXFwpIiAwICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0g ISBQUjkwMDY3CisgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJh Z21hIG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8yX3Mg XFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIgMCAiZ2ltcGxlIiB7 IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwogICBkbyBpMl8yX3MgPSAxLCAxMDAKICAg ICAgISRhY2MgbG9vcCBwcml2YXRlKGoyXzJfcykgaW5kZXBlbmRlbnQKICAgICAgISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgYWNjIGxvb3AgcHJpdmF0 ZVxcKGoyXzJfc1xcKSBpbmRlcGVuZGVudCIgMSAib3JpZ2luYWwiIH0gfQpAQCAtMjM0LDcg KzIzNCw3IEBAIHByb2dyYW0gdGVzdAogICAhJGFjYyBrZXJuZWxzICEgRXhwbGljaXQgInBy aXZhdGUoaTNfNV9zKSIgY2xhdXNlIGNhbm5vdCBiZSBzcGVjaWZpZWQgaGVyZS4KICAgISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInByaXZhdGVcXChpM181X3NcXCki IDEgIm9yaWdpbmFsIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwogICAhIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAicHJpdmF0ZVxcKGkzXzVfc1xcKSIgMSAi Z2ltcGxlIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwotICAhIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2VybmVs cyBtYXBcXChmb3JjZV90b2Zyb206aTNfNV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIg MCAiZ2ltcGxlIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NworICAhIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2Vy bmVscyBtYXBcXChmb3JjZV90b2Zyb206aTNfNV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxc XFtpbXBsaWNpdFxcXF1cXCkiIDAgImdpbXBsZSIgeyB4ZmFpbCAqLSotKiB9IH0gfSAhIFBS OTAwNjcKICAgZG8gaTNfNV9zID0gMSwgMTAwCiAgICAgICEkYWNjIGxvb3AgcHJpdmF0ZShq M181X3MpIGluZGVwZW5kZW50CiAgICAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICIjcHJhZ21hIGFjYyBsb29wIHByaXZhdGVcXChqM181X3NcXCkgaW5kZXBlbmRl bnQiIDEgIm9yaWdpbmFsIiB9IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29hY2MvcHJpdmF0ZS1wcmVkZXRlcm1pbmVkLWtlcm5lbHMtMS5mOTUgYi9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL3ByaXZhdGUtcHJlZGV0ZXJtaW5lZC1rZXJu ZWxzLTEuZjk1CmluZGV4IDMzNTdhMjAuLjM4NDU5Y2YgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHJpdmF0ZS1wcmVkZXRlcm1pbmVkLWtlcm5lbHMt MS5mOTUKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLXBy ZWRldGVybWluZWQta2VybmVscy0xLmY5NQpAQCAtODMsNyArODMsNyBAQCBwcm9ncmFtIHRl c3QKICAgISRhY2Mga2VybmVscwogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAicHJpdmF0ZVxcKGkyXzJfc1xcKSIgMSAib3JpZ2luYWwiIHsgeGZhaWwgKi0qLSog fSB9IH0gISBQUjkwMDY3CiAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJwcml2YXRlXFwoaTJfMl9zXFwpIiAxICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0g ISBQUjkwMDY3Ci0gICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJh Z21hIG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8yX3Mg XFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiAwICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9 IH0gISBQUjkwMDY3CisgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIj cHJhZ21hIG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8y X3MgXFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIgMCAiZ2ltcGxl IiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwogICBkbyBpMl8yX3MgPSAxLCAxMDAK ICAgICAgISRhY2MgbG9vcCBpbmRlcGVuZGVudAogICAgICAhIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBhY2MgbG9vcCBwcml2YXRlXFwoajJfMl9zXFwp IGluZGVwZW5kZW50IiAxICJvcmlnaW5hbCIgfSB9CkBAIC0yMzQsNyArMjM0LDcgQEAgcHJv Z3JhbSB0ZXN0CiAgICEkYWNjIGtlcm5lbHMKICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInByaXZhdGVcXChpM181X3NcXCkiIDEgIm9yaWdpbmFsIiB7IHhmYWls ICotKi0qIH0gfSB9ICEgUFI5MDA2NwogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAicHJpdmF0ZVxcKGkzXzVfc1xcKSIgMSAiZ2ltcGxlIiB7IHhmYWlsICotKi0q IH0gfSB9ICEgUFI5MDA2NwotICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zyb206 aTNfNV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgMCAiZ2ltcGxlIiB7IHhmYWlsICot Ki0qIH0gfSB9ICEgUFI5MDA2NworICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAiI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zy b206aTNfNV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDAg ImdpbXBsZSIgeyB4ZmFpbCAqLSotKiB9IH0gfSAhIFBSOTAwNjcKICAgZG8gaTNfNV9zID0g MSwgMTAwCiAgICAgICEkYWNjIGxvb3AgaW5kZXBlbmRlbnQKICAgICAgISB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgYWNjIGxvb3AgcHJpdmF0ZVxcKGoz XzVfc1xcKSBpbmRlcGVuZGVudCIgMSAib3JpZ2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtcHJldHR5LXByaW50LmMgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwppbmRleCAy NjFjYzlkLi40Y2Q0NjA2IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwor KysgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwpAQCAtOTQ2LDYgKzk0Niw5IEBAIGR1bXBf b21wX2NsYXVzZSAocHJldHR5X3ByaW50ZXIgKnBwLCB0cmVlIGNsYXVzZSwgaW50IHNwYywg ZHVtcF9mbGFnc190IGZsYWdzKQogCQkJICAgICBzcGMsIGZsYWdzLCBmYWxzZSk7CiAJICBw cF9yaWdodF9icmFja2V0IChwcCk7CiAJfQorICAgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAo Y2xhdXNlKSA9PSBPTVBfQ0xBVVNFX01BUAorCSAgJiYgT01QX0NMQVVTRV9NQVBfSU1QTElD SVRfUCAoY2xhdXNlKSkKKwlwcF9zdHJpbmcgKHBwLCAiW2ltcGxpY2l0XSIpOwogICAgICAg cHBfcmlnaHRfcGFyZW4gKHBwKTsKICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS5oIGIvZ2NjL3RyZWUuaAppbmRleCA4ZDk4MjljLi42NDdjNWJhIDEwMDY0NAotLS0g YS9nY2MvdHJlZS5oCisrKyBiL2djYy90cmVlLmgKQEAgLTE2MzcsNiArMTYzNywxMCBAQCBj bGFzcyBhdXRvX3N1cHByZXNzX2xvY2F0aW9uX3dyYXBwZXJzCiAgICB2YXJpYWJsZS4gICov CiAjZGVmaW5lIE9NUF9DTEFVU0VfTUFQX0lOX1JFRFVDVElPTihOT0RFKSBcCiAgIFRSRUVf UFJJVkFURSAoT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNLIChOT0RFLCBPTVBfQ0xBVVNFX01B UCkpCisvKiBOb256ZXJvIGlmIHRoaXMgbWFwIGNsYXVzZSB3YXMgY3JlYXRlZCB0aHJvdWdo IGltcGxpY2l0IGRhdGEtbWFwcGluZworICAgcnVsZXMuICovCisjZGVmaW5lIE9NUF9DTEFV U0VfTUFQX0lNUExJQ0lUX1AoTk9ERSkgXAorICAoT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNL IChOT0RFLCBPTVBfQ0xBVVNFX01BUCktPmJhc2UuZGVwcmVjYXRlZF9mbGFnKQogCiAvKiBU cnVlIG9uIGFuIE9NUF9DTEFVU0VfVVNFX0RFVklDRV9QVFIgd2l0aCBhbiBPcGVuQUNDICdp Zl9wcmVzZW50JwogICAgY2xhdXNlLiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ29tcC1j b25zdGFudHMuaCBiL2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaAppbmRleCBiOGVmYjMwLi4z M2NmY2I5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgKKysrIGIvaW5j bHVkZS9nb21wLWNvbnN0YW50cy5oCkBAIC00Niw2ICs0NiwxNiBAQAogCQkJCQkgfCBHT01Q X01BUF9GTEFHX1NQRUNJQUxfMCkKICNkZWZpbmUgR09NUF9NQVBfREVFUF9DT1BZCQkoR09N UF9NQVBfRkxBR19TUEVDSUFMXzQgXAogCQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxf MikKKy8qIFRoaXMgdmFsdWUgaW5kaWNhdGVzIHRoZSBtYXAgd2FzIGNyZWF0ZWQgaW1wbGlj aXRseSBhY2NvcmRpbmcgdG8KKyAgIE9wZW5NUCBydWxlcy4gICovCisjZGVmaW5lIEdPTVBf TUFQX0lNUExJQ0lUCQkoR09NUF9NQVBfRkxBR19TUEVDSUFMXzMgXAorCQkJCQkgfCBHT01Q X01BUF9GTEFHX1NQRUNJQUxfNCkKKy8qIE1hc2sgZm9yIGVudGlyZSBzZXQgb2Ygc3BlY2lh bCBtYXAga2luZCBiaXRzLiAgKi8KKyNkZWZpbmUgR09NUF9NQVBfRkxBR19TUEVDSUFMX0JJ VFMJKEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8wIFwKKwkJCQkJIHwgR09NUF9NQVBfRkxBR19T UEVDSUFMXzEgXAorCQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxfMiBcCisJCQkJCSB8 IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8zIFwKKwkJCQkJIHwgR09NUF9NQVBfRkxBR19TUEVD SUFMXzQpCiAvKiBGbGFnIHRvIGZvcmNlIGEgc3BlY2lmaWMgYmVoYXZpb3IgKG9yIGVsc2Us IHRyaWdnZXIgYSBydW4tdGltZSBlcnJvcikuICAqLwogI2RlZmluZSBHT01QX01BUF9GTEFH X0ZPUkNFCQkoMSA8PCA3KQogCkBAIC0yMjUsNyArMjM1LDEyIEBAIGVudW0gZ29tcF9tYXBf a2luZAogICAoR09NUF9NQVBfQUxXQVlTX1RPX1AgKFgpIHx8ICgoWCkgPT0gR09NUF9NQVBf QUxXQVlTX0ZST00pKQogCiAjZGVmaW5lIEdPTVBfTUFQX05PTkNPTlRJR19BUlJBWV9QKFgp IFwKLSAgKChYKSAmIEdPTVBfTUFQX05PTkNPTlRJR19BUlJBWSkKKyAgKCgoWCkgJiBHT01Q X01BUF9GTEFHX1NQRUNJQUxfQklUUykgPT0gR09NUF9NQVBfTk9OQ09OVElHX0FSUkFZCVwK KyAgIHx8IChYKSA9PSBHT01QX01BUF9OT05DT05USUdfQVJSQVlfRk9SQ0VfUFJFU0VOVCkK KworI2RlZmluZSBHT01QX01BUF9JTVBMSUNJVF9QKFgpIFwKKyAgKCgoWCkgJiBHT01QX01B UF9GTEFHX1NQRUNJQUxfQklUUykgPT0gR09NUF9NQVBfSU1QTElDSVQpCisKIAogLyogQXN5 bmNocm9ub3VzIGJlaGF2aW9yLiAgS2VlcCBpbiBzeW5jIHdpdGgKICAgIGxpYmdvbXAve29w ZW5hY2MuaCxvcGVuYWNjLmY5MCxvcGVuYWNjX2xpYi5ofTphY2NfYXN5bmNfdC4gICovCmRp ZmYgLS1naXQgYS9saWJnb21wL3RhcmdldC5jIGIvbGliZ29tcC90YXJnZXQuYwppbmRleCA5 Yzc1ODI2Li5lY2RhMmVmIDEwMDY0NAotLS0gYS9saWJnb21wL3RhcmdldC5jCisrKyBiL2xp YmdvbXAvdGFyZ2V0LmMKQEAgLTUxMCw3ICs1MTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQK IGdvbXBfbWFwX3ZhcnNfZXhpc3RpbmcgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2 aWNlcCwKIAkJCXN0cnVjdCBnb2FjY19hc3luY3F1ZXVlICphcSwgc3BsYXlfdHJlZV9rZXkg b2xkbiwKIAkJCXNwbGF5X3RyZWVfa2V5IG5ld24sIHN0cnVjdCB0YXJnZXRfdmFyX2Rlc2Mg KnRndF92YXIsCi0JCQl1bnNpZ25lZCBjaGFyIGtpbmQsIGJvb2wgYWx3YXlzX3RvX2ZsYWcs CisJCQl1bnNpZ25lZCBjaGFyIGtpbmQsIGJvb2wgYWx3YXlzX3RvX2ZsYWcsIGJvb2wgaW1w bGljaXQsCiAJCQlzdHJ1Y3QgZ29tcF9jb2FsZXNjZV9idWYgKmNidWYsCiAJCQlodGFiX3Qg KnJlZmNvdW50X3NldCkKIHsKQEAgLTUyMiwxMSArNTIyLDIyIEBAIGdvbXBfbWFwX3ZhcnNf ZXhpc3RpbmcgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKICAgdGd0X3Zh ci0+YWx3YXlzX2NvcHlfZnJvbSA9IEdPTVBfTUFQX0FMV0FZU19GUk9NX1AgKGtpbmQpOwog ICB0Z3RfdmFyLT5pc19hdHRhY2ggPSBmYWxzZTsKICAgdGd0X3Zhci0+b2Zmc2V0ID0gbmV3 bi0+aG9zdF9zdGFydCAtIG9sZG4tPmhvc3Rfc3RhcnQ7Ci0gIHRndF92YXItPmxlbmd0aCA9 IG5ld24tPmhvc3RfZW5kIC0gbmV3bi0+aG9zdF9zdGFydDsKKworICAvKiBGb3IgaW1wbGlj aXQgbWFwcywgb2xkIGNvbnRhaW5lZCBpbiBuZXcgaXMgdmFsaWQuICAqLworICBib29sIGlt cGxpY2l0X3N1YnNldCA9IChpbXBsaWNpdAorCQkJICAmJiBuZXduLT5ob3N0X3N0YXJ0IDw9 IG9sZG4tPmhvc3Rfc3RhcnQKKwkJCSAgJiYgb2xkbi0+aG9zdF9lbmQgPD0gbmV3bi0+aG9z dF9lbmQpOworICBpZiAoaW1wbGljaXRfc3Vic2V0KQorICAgIHRndF92YXItPmxlbmd0aCA9 IG9sZG4tPmhvc3RfZW5kIC0gb2xkbi0+aG9zdF9zdGFydDsKKyAgZWxzZQorICAgIHRndF92 YXItPmxlbmd0aCA9IG5ld24tPmhvc3RfZW5kIC0gbmV3bi0+aG9zdF9zdGFydDsKIAogICBp ZiAoKGtpbmQgJiBHT01QX01BUF9GTEFHX0ZPUkNFKQotICAgICAgfHwgb2xkbi0+aG9zdF9z dGFydCA+IG5ld24tPmhvc3Rfc3RhcnQKLSAgICAgIHx8IG9sZG4tPmhvc3RfZW5kIDwgbmV3 bi0+aG9zdF9lbmQpCisgICAgICAvKiBGb3IgaW1wbGljaXQgbWFwcywgb2xkIGNvbnRhaW5l ZCBpbiBuZXcgaXMgdmFsaWQuICAqLworICAgICAgfHwgIShpbXBsaWNpdF9zdWJzZXQKKwkg ICAvKiBPdGhlcndpc2UsIG5ldyBjb250YWluZWQgaW5zaWRlIG9sZCBpcyBjb25zaWRlcmVk IHZhbGlkLiAgKi8KKwkgICB8fCAob2xkbi0+aG9zdF9zdGFydCA8PSBuZXduLT5ob3N0X3N0 YXJ0CisJICAgICAgICYmIG5ld24tPmhvc3RfZW5kIDw9IG9sZG4tPmhvc3RfZW5kKSkpCiAg ICAgewogICAgICAgZ29tcF9tdXRleF91bmxvY2sgKCZkZXZpY2VwLT5sb2NrKTsKICAgICAg IGdvbXBfZmF0YWwgKCJUcnlpbmcgdG8gbWFwIGludG8gZGV2aWNlIFslcC4uJXApIG9iamVj dCB3aGVuICIKQEAgLTUzNiwxMSArNTQ3LDE3IEBAIGdvbXBfbWFwX3ZhcnNfZXhpc3Rpbmcg KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKICAgICB9CiAKICAgaWYgKEdP TVBfTUFQX0FMV0FZU19UT19QIChraW5kKSB8fCBhbHdheXNfdG9fZmxhZykKLSAgICBnb21w X2NvcHlfaG9zdDJkZXYgKGRldmljZXAsIGFxLAotCQkJKHZvaWQgKikgKG9sZG4tPnRndC0+ dGd0X3N0YXJ0ICsgb2xkbi0+dGd0X29mZnNldAotCQkJCSAgKyBuZXduLT5ob3N0X3N0YXJ0 IC0gb2xkbi0+aG9zdF9zdGFydCksCi0JCQkodm9pZCAqKSBuZXduLT5ob3N0X3N0YXJ0LAot CQkJbmV3bi0+aG9zdF9lbmQgLSBuZXduLT5ob3N0X3N0YXJ0LCBmYWxzZSwgY2J1Zik7Cisg ICAgeworICAgICAgLyogSW1wbGljaXQgKyBhbHdheXMgc2hvdWxkIG5vdCBoYXBwZW4uIElm IHRoaXMgZG9lcyBvY2N1ciwgYmVsb3cKKwkgYWRkcmVzcy9sZW5ndGggYWRqdXN0bWVudCBp cyBhIFRPRE8uICAqLworICAgICAgYXNzZXJ0ICghaW1wbGljaXRfc3Vic2V0KTsKKworICAg ICAgZ29tcF9jb3B5X2hvc3QyZGV2IChkZXZpY2VwLCBhcSwKKwkJCSAgKHZvaWQgKikgKG9s ZG4tPnRndC0+dGd0X3N0YXJ0ICsgb2xkbi0+dGd0X29mZnNldAorCQkJCSAgICArIG5ld24t Pmhvc3Rfc3RhcnQgLSBvbGRuLT5ob3N0X3N0YXJ0KSwKKwkJCSAgKHZvaWQgKikgbmV3bi0+ aG9zdF9zdGFydCwKKwkJCSAgbmV3bi0+aG9zdF9lbmQgLSBuZXduLT5ob3N0X3N0YXJ0LCBm YWxzZSwgY2J1Zik7CisgICAgfQogCiAgIGdvbXBfaW5jcmVtZW50X3JlZmNvdW50IChvbGRu LCByZWZjb3VudF9zZXQpOwogfQpAQCAtNTQ4LDggKzU2NSwyNCBAQCBnb21wX21hcF92YXJz X2V4aXN0aW5nIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiBzdGF0aWMg aW50CiBnZXRfa2luZCAoYm9vbCBzaG9ydF9tYXBraW5kLCB2b2lkICpraW5kcywgaW50IGlk eCkKIHsKLSAgcmV0dXJuIHNob3J0X21hcGtpbmQgPyAoKHVuc2lnbmVkIHNob3J0ICopIGtp bmRzKVtpZHhdCi0JCSAgICAgICA6ICgodW5zaWduZWQgY2hhciAqKSBraW5kcylbaWR4XTsK KyAgaW50IHZhbCA9IChzaG9ydF9tYXBraW5kCisJICAgICA/ICgodW5zaWduZWQgc2hvcnQg Kikga2luZHMpW2lkeF0KKwkgICAgIDogKCh1bnNpZ25lZCBjaGFyICopIGtpbmRzKVtpZHhd KTsKKworICBpZiAoR09NUF9NQVBfSU1QTElDSVRfUCAodmFsKSkKKyAgICB2YWwgJj0gfkdP TVBfTUFQX0lNUExJQ0lUOworICByZXR1cm4gdmFsOworfQorCisKK3N0YXRpYyBib29sCitn ZXRfaW1wbGljaXQgKGJvb2wgc2hvcnRfbWFwa2luZCwgdm9pZCAqa2luZHMsIGludCBpZHgp Cit7CisgIGludCB2YWwgPSAoc2hvcnRfbWFwa2luZAorCSAgICAgPyAoKHVuc2lnbmVkIHNo b3J0ICopIGtpbmRzKVtpZHhdCisJICAgICA6ICgodW5zaWduZWQgY2hhciAqKSBraW5kcylb aWR4XSk7CisKKyAgcmV0dXJuIEdPTVBfTUFQX0lNUExJQ0lUX1AgKHZhbCk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC02MTIsNiArNjQ1LDcgQEAgZ29tcF9tYXBfZmllbGRzX2V4aXN0aW5n IChzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjICp0Z3QsCiAgIHN0cnVjdCBzcGxheV90cmVlX3Mg Km1lbV9tYXAgPSAmZGV2aWNlcC0+bWVtX21hcDsKICAgc3RydWN0IHNwbGF5X3RyZWVfa2V5 X3MgY3VyX25vZGU7CiAgIGludCBraW5kOworICBib29sIGltcGxpY2l0OwogICBjb25zdCBi b29sIHNob3J0X21hcGtpbmQgPSB0cnVlOwogICBjb25zdCBpbnQgdHlwZW1hc2sgPSBzaG9y dF9tYXBraW5kID8gMHhmZiA6IDB4NzsKIApAQCAtNjE5LDEyICs2NTMsMTQgQEAgZ29tcF9t YXBfZmllbGRzX2V4aXN0aW5nIChzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjICp0Z3QsCiAgIGN1 cl9ub2RlLmhvc3RfZW5kID0gY3VyX25vZGUuaG9zdF9zdGFydCArIHNpemVzW2ldOwogICBz cGxheV90cmVlX2tleSBuMiA9IHNwbGF5X3RyZWVfbG9va3VwIChtZW1fbWFwLCAmY3VyX25v ZGUpOwogICBraW5kID0gZ2V0X2tpbmQgKHNob3J0X21hcGtpbmQsIGtpbmRzLCBpKTsKKyAg aW1wbGljaXQgPSBnZXRfaW1wbGljaXQgKHNob3J0X21hcGtpbmQsIGtpbmRzLCBpKTsKICAg aWYgKG4yCiAgICAgICAmJiBuMi0+dGd0ID09IG4tPnRndAogICAgICAgJiYgbjItPmhvc3Rf c3RhcnQgLSBuLT5ob3N0X3N0YXJ0ID09IG4yLT50Z3Rfb2Zmc2V0IC0gbi0+dGd0X29mZnNl dCkKICAgICB7CiAgICAgICBnb21wX21hcF92YXJzX2V4aXN0aW5nIChkZXZpY2VwLCBhcSwg bjIsICZjdXJfbm9kZSwgJnRndC0+bGlzdFtpXSwKLQkJCSAgICAgIGtpbmQgJiB0eXBlbWFz aywgZmFsc2UsIGNidWYsIHJlZmNvdW50X3NldCk7CisJCQkgICAgICBraW5kICYgdHlwZW1h c2ssIGZhbHNlLCBpbXBsaWNpdCwgY2J1ZiwKKwkJCSAgICAgIHJlZmNvdW50X3NldCk7CiAg ICAgICByZXR1cm47CiAgICAgfQogICBpZiAoc2l6ZXNbaV0gPT0gMCkKQEAgLTY0MCw3ICs2 NzYsOCBAQCBnb21wX21hcF9maWVsZHNfZXhpc3RpbmcgKHN0cnVjdCB0YXJnZXRfbWVtX2Rl c2MgKnRndCwKIAkJID09IG4yLT50Z3Rfb2Zmc2V0IC0gbi0+dGd0X29mZnNldCkKIAkgICAg ewogCSAgICAgIGdvbXBfbWFwX3ZhcnNfZXhpc3RpbmcgKGRldmljZXAsIGFxLCBuMiwgJmN1 cl9ub2RlLCAmdGd0LT5saXN0W2ldLAotCQkJCSAgICAgIGtpbmQgJiB0eXBlbWFzaywgZmFs c2UsIGNidWYsIHJlZmNvdW50X3NldCk7CisJCQkJICAgICAga2luZCAmIHR5cGVtYXNrLCBm YWxzZSwgaW1wbGljaXQsIGNidWYsCisJCQkJICAgICAgcmVmY291bnRfc2V0KTsKIAkgICAg ICByZXR1cm47CiAJICAgIH0KIAl9CkBAIC02NTIsNyArNjg5LDggQEAgZ29tcF9tYXBfZmll bGRzX2V4aXN0aW5nIChzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjICp0Z3QsCiAJICAmJiBuMi0+ aG9zdF9zdGFydCAtIG4tPmhvc3Rfc3RhcnQgPT0gbjItPnRndF9vZmZzZXQgLSBuLT50Z3Rf b2Zmc2V0KQogCXsKIAkgIGdvbXBfbWFwX3ZhcnNfZXhpc3RpbmcgKGRldmljZXAsIGFxLCBu MiwgJmN1cl9ub2RlLCAmdGd0LT5saXN0W2ldLAotCQkJCSAga2luZCAmIHR5cGVtYXNrLCBm YWxzZSwgY2J1ZiwgcmVmY291bnRfc2V0KTsKKwkJCQkgIGtpbmQgJiB0eXBlbWFzaywgZmFs c2UsIGltcGxpY2l0LCBjYnVmLAorCQkJCSAgcmVmY291bnRfc2V0KTsKIAkgIHJldHVybjsK IAl9CiAgICAgfQpAQCAtODk4LDYgKzkzNiw3IEBAIGdvbXBfbWFwX3ZhcnNfaW50ZXJuYWwg KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKICAgZm9yIChpID0gMDsgaSA8 IG1hcG51bTsgaSsrKQogICAgIHsKICAgICAgIGludCBraW5kID0gZ2V0X2tpbmQgKHNob3J0 X21hcGtpbmQsIGtpbmRzLCBpKTsKKyAgICAgIGJvb2wgaW1wbGljaXQgPSBnZXRfaW1wbGlj aXQgKHNob3J0X21hcGtpbmQsIGtpbmRzLCBpKTsKICAgICAgIGlmIChob3N0YWRkcnNbaV0g PT0gTlVMTAogCSAgfHwgKGtpbmQgJiB0eXBlbWFzaykgPT0gR09NUF9NQVBfRklSU1RQUklW QVRFX0lOVCkKIAl7CkBAIC0xMTA0LDggKzExNDMsOCBAQCBnb21wX21hcF92YXJzX2ludGVy bmFsIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCX0KIAkgICAgfQog CSAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNlcCwgYXEsIG4sICZjdXJfbm9kZSwg JnRndC0+bGlzdFtpXSwKLQkJCQkgIGtpbmQgJiB0eXBlbWFzaywgYWx3YXlzX3RvX2NudCA+ IDAsIE5VTEwsCi0JCQkJICByZWZjb3VudF9zZXQpOworCQkJCSAga2luZCAmIHR5cGVtYXNr LCBhbHdheXNfdG9fY250ID4gMCwgaW1wbGljaXQsCisJCQkJICBOVUxMLCByZWZjb3VudF9z ZXQpOwogCSAgaSArPSBhbHdheXNfdG9fY250OwogCX0KICAgICAgIGVsc2UKQEAgLTExODIs NyArMTIyMSw3IEBAIGdvbXBfbWFwX3ZhcnNfaW50ZXJuYWwgKHN0cnVjdCBnb21wX2Rldmlj ZV9kZXNjciAqZGV2aWNlcCwKIAkJewogCQkgIGFzc2VydCAobi0+cmVmY291bnQgIT0gUkVG Q09VTlRfTElOSyk7CiAJCSAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNlcCwgYXEs IG4sICZjdXJfbm9kZSwgcm93X2Rlc2MsCi0JCQkJCSAga2luZCAmIHR5cGVtYXNrLCBmYWxz ZSwKKwkJCQkJICBraW5kICYgdHlwZW1hc2ssIGZhbHNlLCBmYWxzZSwKIAkJCQkJICAvKiBU T0RPOiBjYnVmPyAqLyBOVUxMLCByZWZjb3VudF9zZXQpOwogCQl9CiAJICAgICAgZWxzZQpA QCAtMTMxMiw2ICsxMzUxLDcgQEAgZ29tcF9tYXBfdmFyc19pbnRlcm5hbCAoc3RydWN0IGdv bXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLAogCWVsc2UgaWYgKHRndC0+bGlzdFtpXS5rZXkg PT0gTlVMTCkKIAkgIHsKIAkgICAgaW50IGtpbmQgPSBnZXRfa2luZCAoc2hvcnRfbWFwa2lu ZCwga2luZHMsIGkpOworCSAgICBib29sIGltcGxpY2l0ID0gZ2V0X2ltcGxpY2l0IChzaG9y dF9tYXBraW5kLCBraW5kcywgaSk7CiAJICAgIGlmIChob3N0YWRkcnNbaV0gPT0gTlVMTCkK IAkgICAgICBjb250aW51ZTsKIAkgICAgc3dpdGNoIChraW5kICYgdHlwZW1hc2spCkBAIC0x NDgzLDcgKzE1MjMsNyBAQCBnb21wX21hcF92YXJzX2ludGVybmFsIChzdHJ1Y3QgZ29tcF9k ZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJICAgIHNwbGF5X3RyZWVfa2V5IG4gPSBzcGxheV90 cmVlX2xvb2t1cCAobWVtX21hcCwgayk7CiAJICAgIGlmIChuICYmIG4tPnJlZmNvdW50ICE9 IFJFRkNPVU5UX0xJTkspCiAJICAgICAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNl cCwgYXEsIG4sIGssICZ0Z3QtPmxpc3RbaV0sCi0JCQkJICAgICAga2luZCAmIHR5cGVtYXNr LCBmYWxzZSwgY2J1ZnAsCisJCQkJICAgICAga2luZCAmIHR5cGVtYXNrLCBmYWxzZSwgaW1w bGljaXQsIGNidWZwLAogCQkJCSAgICAgIHJlZmNvdW50X3NldCk7CiAJICAgIGVsc2UKIAkg ICAgICB7CkBAIC0xNzAyLDcgKzE3NDIsNyBAQCBnb21wX21hcF92YXJzX2ludGVybmFsIChz dHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCSAgICB7CiAJCSAgICAgIGFz c2VydCAoay0+cmVmY291bnQgIT0gUkVGQ09VTlRfTElOSyk7CiAJCSAgICAgIGdvbXBfbWFw X3ZhcnNfZXhpc3RpbmcgKGRldmljZXAsIGFxLCBrLCAmY3VyX25vZGUsIHJvd19kZXNjLAot CQkJCQkgICAgICBraW5kICYgdHlwZW1hc2ssIGZhbHNlLAorCQkJCQkgICAgICBraW5kICYg dHlwZW1hc2ssIGZhbHNlLCBmYWxzZSwKIAkJCQkJICAgICAgY2J1ZnAsIHJlZmNvdW50X3Nl dCk7CiAJCSAgICB9CiAJCSAgZWxzZQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5jLWMrKy1jb21tb24vdGFyZ2V0LWltcGxpY2l0LW1hcC0xLmMgYi9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtaW1wbGljaXQtbWFwLTEu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmU3MjkzCi0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFy Z2V0LWltcGxpY2l0LW1hcC0xLmMKQEAgLTAsMCArMSwzMSBAQAorI2lmZGVmIF9fY3BsdXNw bHVzCitleHRlcm4gIkMiCisjZWxzZQorZXh0ZXJuCisjZW5kaWYKK3ZvaWQgYWJvcnQgKHZv aWQpOworCitpbnQKK21haW4gKHZvaWQpCit7CisgICNkZWZpbmUgTiA1CisgIGludCBhcnJh eVtOXVtOXTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAg ICAjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXAoYWxsb2M6IGFycmF5W2k6MV1b MDpOXSkKKworICAgICAgI3ByYWdtYSBvbXAgdGFyZ2V0CisgICAgICBmb3IgKGludCBqID0g MDsgaiA8IE47IGorKykKKwlhcnJheVtpXVtqXSA9IGkgKyBqOworCisgICAgICAjcHJhZ21h IG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcChmcm9tOiBhcnJheVtpOjFdWzA6Tl0pCisgICAg fQorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIGZvciAoaW50IGogPSAw OyBqIDwgTjsgaisrKQorICAgICAgaWYgKGFycmF5W2ldW2pdICE9IGkgKyBqKQorCWFib3J0 ICgpOworCisgIHJldHVybiAwOworfQotLSAKMi44LjEKCg== --------------8E5A54DDADCC548E9F05E5BA--