Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sgZ30-004DC9-GC for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Aug 2024 00:17:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sgZ2y-004wFl-JP for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Aug 2024 00:17:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sgZ2x-004wFd-Ox for pgsql-hackers@lists.postgresql.org; Wed, 21 Aug 2024 00:17:56 +0000 Received: from mail-yb1-xb36.google.com ([2607:f8b0:4864:20::b36]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sgZ2v-000eAS-Jo for pgsql-hackers@lists.postgresql.org; Wed, 21 Aug 2024 00:17:55 +0000 Received: by mail-yb1-xb36.google.com with SMTP id 3f1490d57ef6-e115eb44752so6492648276.0 for ; Tue, 20 Aug 2024 17:17:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724199473; x=1724804273; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4CTEAOAkU0F3U9YcLYE20qPquW6aip70y1UhIli5kw4=; b=R39/8AquoJbuUXkMjCdH5FiCoT/T6QKRg2TiSeIAGvbu72hDCBIx7l7cADo2ljZlQl ujxHOF3kzovA0lVGezNpqsQwOMZtkCOF4t3rZBLLHxz/hq3he8ZO7KLbQlVRMb+yYbwJ g20ICwk3Ps769KYf4OTeDPLmL/gtBm6Wo+17O1pQYR1epW483GDOyZU7VJSCxeZT5wjQ 7bH97yE9dyP6hnW12sqbVWj7DOi7sUgysWOEcUdl5dIabJ+Edaqz+jIsvBGE2l8Wc2Yw bWgrdAaAJMp/l1mOySnwu+xXDeh01n6Mo8a68TW+Qq32iOqbS+Zh1ZvuJJxHWyY+RbLg pwOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724199473; x=1724804273; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4CTEAOAkU0F3U9YcLYE20qPquW6aip70y1UhIli5kw4=; b=QexCgz8Ido8eI6nSu4D4SGRlueo+tkYaWecQuiHU9LNH1D5TuMVLggTEcwCbobaMnS if9XwpW143mCoTKZ/x374MJA9HJmwSfMEnnZN/oP/o+VXtuzOptXY44SJYPRSpsmygPD bIEM8mnH0bo+NBu8qlxAe3F+Wd6F1FRQobUER/X6cuy5Ofjd9f3b6vH5BZq4u8S8xyqF wF4pUfH57MX5po1OSkSj1vIqXwVbSW3ZoJYSabjpoPxvvEy4KdPqNTiQxRVdpgTP+x+p xrTJq1MkCu5xo/j0lWfmVEBa22SMY+OHq2w+fOw61BxxNyWJekon5a5I3rDP3jBKOHqv 5k9w== X-Forwarded-Encrypted: i=1; AJvYcCVA4M5Tw/11fEdrNXzmOw01Dwf83KH+0V56zk1/cF7517IIMtlMh5Q6M2D7orIXrUttjjhGWI/WEon4PHYv@lists.postgresql.org X-Gm-Message-State: AOJu0YzaQU948pgP9gjUqkfyDsIA64DcLpIeIqR4txPA1FTohuA6jFzt 03oLj/281e0V3lhivf3s/2Nnv9CjOqlopHzyCbeuSVRMxp+HnwJ5gSc5g3jLJaNAfF7gYSJsKdA A75QCmMbb0Zmaq2fHaLOXCpU/s4c= X-Google-Smtp-Source: AGHT+IE2AVOYLjVffnS3iXqIoEiQsfRclzIjT9e4D4gNBqMQf0DMFBXZaXF67hXEFKma1xtDYZ9z910/qWMK7sHJ18U= X-Received: by 2002:a25:abee:0:b0:e16:6742:6eaf with SMTP id 3f1490d57ef6-e16674271c8mr590926276.4.1724199472529; Tue, 20 Aug 2024 17:17:52 -0700 (PDT) MIME-Version: 1.0 References: <567ED6CA.2040504@sigaev.ru> <8969055.VV5PYv0bhD@thinkpad-pgpro> <38289f6c-b8c0-4713-8fb5-703fe771872a@postgrespro.ru> <759292d5-cb51-4b12-89fa-576c1d9b374d@postgrespro.ru> <531fc0ab-371e-4235-97e3-dd2d077b6995@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Wed, 21 Aug 2024 03:17:40 +0300 Message-ID: Subject: Re: POC, WIP: OR-clause support for indexes To: Alena Rybakina Cc: Nikolay Shaplov , pgsql-hackers@lists.postgresql.org, Andrei Lepikhov , jian he , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela Content-Type: multipart/mixed; boundary="0000000000001524e2062026797d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001524e2062026797d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Thu, Aug 15, 2024 at 10:13=E2=80=AFPM Alena Rybakina wrote: > On 07.08.2024 04:11, Alexander Korotkov wrote: > > On Mon, Aug 5, 2024 at 11:24=E2=80=AFPM Alena Rybakina > > wrote: > >> Ok, thank you for your work) > >> > >> I think we can leave only the two added libraries in the first patch, > >> others are superfluous. > > Thank you. > > I also have fixed some grammar issues. > > While reviewing the patch, I can't understand one part of the code where > we check the comparability of restrictinfos. > > /* RestrictInfo parameters dmust match parent */ > if (subRinfo->is_pushed_down !=3D rinfo->is_pushed_down || > subRinfo->is_clone !=3D rinfo->is_clone || > subRinfo->security_level !=3D rinfo->security_level || > !bms_equal(subRinfo->required_relids, > rinfo->required_relids) || > !bms_equal(subRinfo->incompatible_relids, > rinfo->incompatible_relids) || > !bms_equal(subRinfo->outer_relids, rinfo->outer_relids)) > return NULL; > > I didn't find a place in the optimizer where required_relids, > incompatible_relids and outer_relids become different. Each > make_restrictinfo function takes arguments from > parent data. > > I disabled this check and the regression tests passed. This code is > needed for security verification=EF=BC=8C may I clarify? Thank you for pointing this. I've rechecked the life cycle of those parameters. make_restrictinfo() makes them initially equal (except required_relids which might be narrower for sub-clauses). The later changes like adjust_appendrel_attrs_mutator() applies equally for the both parent and children. So, I've turned this into assert check. > In the last patch I corrected the libraries - one of them was not in > alphabetical order. Thank you! Also, I convert the check you've introduced in the previous message to op_in_opfamily(), and introduced collation check similar to match_opclause_to_indexcol(). ------ Regards, Alexander Korotkov Supabase --0000000000001524e2062026797d Content-Type: application/octet-stream; name="v35-0002-Teach-bitmap-path-generation-about-transforming-.patch" Content-Disposition: attachment; filename="v35-0002-Teach-bitmap-path-generation-about-transforming-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m033l8031 RnJvbSBkOGZlNTExN2I5YmE3Nzg1OGRjMGM1M2UwYjUxZjg0MDU2MmY5YTAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAyOCBKdWwgMjAyNCAxNjozNjozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjM1IDIvMl0gVGVhY2ggYml0bWFwIHBhdGggZ2VuZXJhdGlvbiBhYm91dCB0cmFuc2Zv cm1pbmcKIE9SLWNsYXVzZXMgdG8gU0FPUCdzCgpXaGVuIG9wdGltaXplciBnZW5lcmF0ZXMgYml0 bWFwIHBhdGhzLCBpdCBjb25zaWRlcnMgYnJlYWtpbmcgT1ItY2xhdXNlCmFyZ3VtZW50cyBvbmUt Ynktb25lLiAgQnV0IG5vdywgYSBncm91cCBvZiBzaW1pbGFyIE9SLWNsYXVzZXMgY2FuIGJlCnRy YW5zZm9ybWVkIGludG8gU0FPUCBkdXJpbmcgaW5kZXggbWF0Y2hpbmcuICBTbywgYml0bWFwIHBh dGhzIHNob3VsZAprZWVwIHVwLgoKVGhpcyBjb21taXQgdGVhY2hlcyBiaXRtYXAgcGF0aHMgZ2Vu ZXJhdGlvbiBtYWNoaW5lcnkgdG8gZ3JvdXAgc2ltaWxhcgpPUi1jbGF1c2VzIGludG8gZGVkaWNh dGVkIFJlc3RyaWN0SW5mb3MuICBUaG9zZSBSZXN0cmljdEluZm9zIGFyZSBjb25zaWRlcmVkCmJv dGggdG8gbWF0Y2ggaW5kZXggYXMgYSB3aG9sZSAoYXMgU0FPUCksIG9yIHRvIG1hdGNoIGFzIGEg c2V0IG9mIGluZGl2aWR1YWwKT1ItY2xhdXNlIGFyZ3VtZW50IG9uZS1ieS1vbmUgKHRoZSBvbGQg d2F5KS4KClRoZXJlZm9yZSwgYml0bWFwIHBhdGggZ2VuZXJhdGlvbiB3aWxsIHRha2VzIGFkdmFu dGFnZSBvZiBPUi1jbGF1c2VzIHRvIFNBT1Ancwp0cmFuc2Zvcm1hdGlvbi4gIFRoZSBvbGQgd2F5 IG9mIGhhbmRsaW5nIHRoZW0gaXMgYWxzbyBjb25zaWRlcmVkLiAgU28sIHRoZXJlCnNob3VsZG4n dCBiZSBwbGFubmluZyByZWdyZXNzaW9uLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS81NjdFRDZDQS4yMDQwNTA0JTQwc2lnYWV2LnJ1ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2luZHhwYXRoLmMgICAgICB8IDM1NSArKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8ICAyOCArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgIHwgIDU2ICsrLS0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDM5 NCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv aW5keHBhdGguYwppbmRleCBjNDY3MDQ4NjA3Yi4uNzNmYjU3YjJhNTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMTE3Myw2ICsxMTczLDMyNSBAQCBidWlsZF9wYXRo c19mb3JfT1IoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlyZXR1cm4gcmVz dWx0OwogfQogCisvKgorICogRGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGluZm9ybWF0aW9u IGFib3V0IE9SLWNsYXVzZSBhcmd1bWVudCBhbmQgaXRzCisgKiBtYXRjaGluZyBpbmRleCBrZXku ICBVc2VkIGZvciBncm91cGluZyBvZiBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMgaW4KKyAq IGdyb3VwX3NpbWlsYXJfb3JfYXJncygpLgorICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJ CWluZGV4bnVtOwkJLyogaW5kZXggb2YgdGhlIG1hdGNoaW5nIGluZGV4ICovCisJaW50CQkJY29s bnVtOwkJCS8qIGluZGV4IG9mIHRoZSBtYXRjaGluZyBjb2x1bW4gKi8KKwlPaWQJCQlvcG5vOwkJ CS8qIE9JRCBvZiB0aGUgT3BDbGF1c2Ugb3BlcmF0b3IgKi8KKwlPaWQJCQlpbnB1dGNvbGxpZDsJ LyogT0lEIG9mIHRoZSBPcENsYXVzZSBpbnB1dCBjb2xsYXRpb24gKi8KKwlpbnQJCQlhcmdpbmRl eDsJCS8qIGluZGV4IG9mIHRoZSBjbGF1c2UgaW4gdGhlIGxpc3Qgb2YKKwkJCQkJCQkJICogYXJn dW1lbnRzICovCit9IE9yQXJnSW5kZXhNYXRjaDsKKworLyoKKyAqIENvbXBhcmlzb24gZnVuY3Rp b24gZm9yIE9yQXJnSW5kZXhNYXRjaCB3aGljaCBwcm92aWRlcyBzb3J0IG9yZGVyIHBsYWNpbmcK KyAqIHNpbWlsYXIgT1ItY2xhdXNlIGFyZ3VtZW50cyB0b2dldGhlci4KKyAqLworc3RhdGljIGlu dAorb3JfYXJnX2luZGV4X21hdGNoX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQor eworCWNvbnN0IE9yQXJnSW5kZXhNYXRjaCAqbWF0Y2hfYSA9IChjb25zdCBPckFyZ0luZGV4TWF0 Y2ggKikgYTsKKwljb25zdCBPckFyZ0luZGV4TWF0Y2ggKm1hdGNoX2IgPSAoY29uc3QgT3JBcmdJ bmRleE1hdGNoICopIGI7CisKKwlpZiAobWF0Y2hfYS0+aW5kZXhudW0gPCBtYXRjaF9iLT5pbmRl eG51bSkKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKG1hdGNoX2EtPmluZGV4bnVtID4gbWF0Y2hf Yi0+aW5kZXhudW0pCisJCXJldHVybiAxOworCisJaWYgKG1hdGNoX2EtPmNvbG51bSA8IG1hdGNo X2ItPmNvbG51bSkKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKG1hdGNoX2EtPmNvbG51bSA+IG1h dGNoX2ItPmNvbG51bSkKKwkJcmV0dXJuIDE7CisKKwlpZiAobWF0Y2hfYS0+b3BubyA8IG1hdGNo X2ItPm9wbm8pCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChtYXRjaF9hLT5vcG5vID4gbWF0Y2hf Yi0+b3BubykKKwkJcmV0dXJuIDE7CisKKwlpZiAobWF0Y2hfYS0+aW5wdXRjb2xsaWQgPCBtYXRj aF9iLT5pbnB1dGNvbGxpZCkKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKG1hdGNoX2EtPmlucHV0 Y29sbGlkID4gbWF0Y2hfYi0+aW5wdXRjb2xsaWQpCisJCXJldHVybiAxOworCisJaWYgKG1hdGNo X2EtPmFyZ2luZGV4IDwgbWF0Y2hfYi0+YXJnaW5kZXgpCisJCXJldHVybiAtMTsKKwllbHNlIGlm IChtYXRjaF9hLT5hcmdpbmRleCA+IG1hdGNoX2ItPmFyZ2luZGV4KQorCQlyZXR1cm4gMTsKKwor CXJldHVybiAwOworfQorCisvKgorICogZ3JvdXBfc2ltaWxhcl9vcl9hcmdzCisgKgkJR3JvdXAg c2ltaWxhciBPUi1hcmd1bWVudHMgaW50cm8gZGVkaWNhdGVkIFJlc3RyaWN0SW5mb3MuICBQcm9j ZXNzCisgKgkJYXJndW1lbnRzIG9mICdyaW5mbycgY2xhdXNlLCByZXR1cm5zIHRoZSBwcm9jZXNz ZWQgbGlzdCBvZiBhcmd1bWVudHMuCisgKgorICogU2ltaWxhciBhcmd1bWVudHMgY2xhdXNlcyBv ZiBmb3JtICJpbmRleGtleSBvcCBjb25zdGFudCIgaGF2aW5nIHNhbWUKKyAqIGluZGV4a2V5LCBv cGVyYXRvciwgYW5kIGNvbGxhdGlvbi4gIENvbnN0YW50IG1heSBjb21wcmlzZSBlaXRoZXIgQ29u c3QKKyAqIG9yIFBhcmFtLgorICovCitzdGF0aWMgTGlzdCAqCitncm91cF9zaW1pbGFyX29yX2Fy Z3MoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJbmZvICpyaW5m bykKK3sKKwlpbnQJCQluOworCWludAkJCWk7CisJaW50CQkJZ3JvdXBfc3RhcnQ7CisJT3JBcmdJ bmRleE1hdGNoICptYXRjaGVzOworCUxpc3RDZWxsICAgKmxjOworCUxpc3RDZWxsICAgKmxjMjsK KwlMaXN0CSAgICpvcmFyZ3M7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCisJQXNzZXJ0KElz QShyaW5mby0+b3JjbGF1c2UsIEJvb2xFeHByKSk7CisJb3JhcmdzID0gKChCb29sRXhwciAqKSBy aW5mby0+b3JjbGF1c2UpLT5hcmdzOworCW4gPSBsaXN0X2xlbmd0aChvcmFyZ3MpOworCisJLyoK KwkgKiBBbGxvY2F0ZSBhbmQgZmlsbCBPckFyZ0luZGV4TWF0Y2ggc3RydWN0IGZvciBlYWNoIGNs YXVzZSBpbiB0aGUKKwkgKiBhcmd1bWVudCBsaXN0LgorCSAqLworCWkgPSAtMTsKKwltYXRjaGVz ID0gKE9yQXJnSW5kZXhNYXRjaCAqKSBwYWxsb2Moc2l6ZW9mKE9yQXJnSW5kZXhNYXRjaCkgKiBu KTsKKwlmb3JlYWNoKGxjLCBvcmFyZ3MpCisJeworCQlOb2RlCSAgICphcmcgPSBsZmlyc3QobGMp OworCQlSZXN0cmljdEluZm8gKmFyZ3JpbmZvOworCQlPcEV4cHIJICAgKmNsYXVzZTsKKwkJT2lk CQkJb3BubzsKKwkJTm9kZQkgICAqbGVmdG9wLAorCQkJCSAgICpyaWdodG9wOworCQlOb2RlCSAg ICpub25Db25zdEV4cHI7CisJCWludAkJCWluZGV4bnVtOworCQlpbnQJCQljb2xudW07CisKKwkJ aSsrOworCQltYXRjaGVzW2ldLmFyZ2luZGV4ID0gaTsKKwkJbWF0Y2hlc1tpXS5pbmRleG51bSA9 IC0xOworCQltYXRjaGVzW2ldLmNvbG51bSA9IC0xOworCQltYXRjaGVzW2ldLm9wbm8gPSBJbnZh bGlkT2lkOworCQltYXRjaGVzW2ldLmlucHV0Y29sbGlkID0gSW52YWxpZE9pZDsKKworCQlpZiAo IUlzQShhcmcsIFJlc3RyaWN0SW5mbykpCisJCQljb250aW51ZTsKKworCQlhcmdyaW5mbyA9IGNh c3ROb2RlKFJlc3RyaWN0SW5mbywgYXJnKTsKKworCQkvKiBPbmx5IG9wZXJhdG9yIGNsYXVzZXMg c2NhbiBtYXRjaCAgKi8KKwkJaWYgKCFJc0EoYXJncmluZm8tPmNsYXVzZSwgT3BFeHByKSkKKwkJ CWNvbnRpbnVlOworCisJCWNsYXVzZSA9IChPcEV4cHIgKikgYXJncmluZm8tPmNsYXVzZTsKKwkJ b3BubyA9IGNsYXVzZS0+b3BubzsKKworCQkvKiBPbmx5IGJpbmFyeSBvcGVyYXRvcnMgY2FuIG1h dGNoICAqLworCQlpZiAobGlzdF9sZW5ndGgoY2xhdXNlLT5hcmdzKSAhPSAyKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJLyoKKwkJICogSWdub3JlIGFueSBSZWxhYmVsVHlwZSBub2RlIGFib3ZlIHRo ZSBvcGVyYW5kcy4gIFRoaXMgaXMgbmVlZGVkIHRvCisJCSAqIGJlIGFibGUgdG8gYXBwbHkgaW5k ZXhzY2FubmluZyBpbiBiaW5hcnktY29tcGF0aWJsZS1vcGVyYXRvciBjYXNlcy4KKwkJICogTm90 ZTogd2UgY2FuIGFzc3VtZSB0aGVyZSBpcyBhdCBtb3N0IG9uZSBSZWxhYmVsVHlwZSBub2RlOwor CQkgKiBldmFsX2NvbnN0X2V4cHJlc3Npb25zKCkgd2lsbCBoYXZlIHNpbXBsaWZpZWQgaWYgbW9y ZSB0aGFuIG9uZS4KKwkJICovCisJCWxlZnRvcCA9IGdldF9sZWZ0b3AoY2xhdXNlKTsKKwkJaWYg KElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKKwkJCWxlZnRvcCA9IChOb2RlICopICgoUmVsYWJl bFR5cGUgKikgbGVmdG9wKS0+YXJnOworCisJCXJpZ2h0b3AgPSBnZXRfcmlnaHRvcChjbGF1c2Up OworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFiZWxUeXBlKSkKKwkJCXJpZ2h0b3AgPSAoTm9kZSAq KSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9y IGNsYXVzZXMgb2YgdGhlIGZvcm06IChpbmRleGtleSBvcGVyYXRvciBjb25zdGFudCkgb3IKKwkJ ICogKGNvbnN0YW50IG9wZXJhdG9yIGluZGV4a2V5KS4gIEJ1dCB3ZSBkb24ndCBrbm93IGEgcGFy dGljdWxhciBpbmRleAorCQkgKiB5ZXQuICBGaXJzdCBjaGVjayBmb3IgYSBjb25zdGFudCwgd2hp Y2ggbXVzdCBiZSBDb25zdCBvciBQYXJhbS4KKwkJICogVGhhdCdzIGNoZWFwZXIgdGhhbiBzZWFy Y2ggZm9yIGFuIGluZGV4IGtleSBhbW9uZyBhbGwgaW5kZXhlcy4KKwkJICovCisJCWlmIChJc0Eo bGVmdG9wLCBDb25zdCkgfHwgSXNBKGxlZnRvcCwgUGFyYW0pKQorCQl7CisJCQlvcG5vID0gZ2V0 X2NvbW11dGF0b3Iob3Bubyk7CisKKwkJCWlmICghT2lkSXNWYWxpZChvcG5vKSkKKwkJCXsKKwkJ CQkvKiBjb21tdXRhdG9yIGRvZXNuJ3QgZXhpc3QsIHdlIGNhbid0IHJldmVyc2UgdGhlIG9yZGVy ICovCisJCQkJY29udGludWU7CisJCQl9CisJCQlub25Db25zdEV4cHIgPSByaWdodG9wOworCQl9 CisJCWVsc2UgaWYgKElzQShyaWdodG9wLCBDb25zdCkgfHwgSXNBKHJpZ2h0b3AsIFBhcmFtKSkK KwkJeworCQkJbm9uQ29uc3RFeHByID0gbGVmdG9wOworCQl9CisJCWVsc2UKKwkJeworCQkJY29u dGludWU7CisJCX0KKworCQkvKgorCQkgKiBNYXRjaCBub24tY29uc3RhbnQgcGFydCB0byB0aGUg aW5kZXgga2V5LiAgSXQncyBwb3NzaWJsZSB0aGF0IGEKKwkJICogc2luZ2xlIG5vbi1jb25zdGFu dCBwYXJ0IG1hdGNoZXMgbXVsdGlwbGUgaW5kZXgga2V5cy4gIEl0J3MgT0ssIHdlCisJCSAqIGp1 c3Qgc3RvcCB3aXRoIGZpcnN0IG1hdGNoaW5nIGluZGV4IGtleS4gIEdpdmVuIHRoYXQgdGhpcyBj aG9pY2UgaXMKKwkJICogZGV0ZXJtaW5lZCB0aGUgc2FtZSBmb3IgZXZlcnkgY2xhdXNlLCB3ZSB3 aWxsIGdyb3VwIHNpbWlsYXIgY2xhdXNlcworCQkgKiB0b2dldGhlciBhbnl3YXkuCisJCSAqLwor CQlpbmRleG51bSA9IDA7CisJCWZvcmVhY2gobGMyLCByZWwtPmluZGV4bGlzdCkKKwkJeworCQkJ SW5kZXhPcHRJbmZvICppbmRleCA9IChJbmRleE9wdEluZm8gKikgbGZpcnN0KGxjMik7CisKKwkJ CS8qIElnbm9yZSBpbmRleCBpZiBpdCBkb2Vzbid0IHN1cHBvcnQgYml0bWFwIHNjYW5zICovCisJ CQlpZiAoIWluZGV4LT5hbWhhc2dldGJpdG1hcCkKKwkJCQljb250aW51ZTsKKworCQkJZm9yIChj b2xudW0gPSAwOyBjb2xudW0gPCBpbmRleC0+bmtleWNvbHVtbnM7IGNvbG51bSsrKQorCQkJewor CQkJCWlmIChtYXRjaF9pbmRleF90b19vcGVyYW5kKG5vbkNvbnN0RXhwciwgY29sbnVtLCBpbmRl eCkpCisJCQkJeworCQkJCQltYXRjaGVzW2ldLmluZGV4bnVtID0gaW5kZXhudW07CisJCQkJCW1h dGNoZXNbaV0uY29sbnVtID0gY29sbnVtOworCQkJCQltYXRjaGVzW2ldLm9wbm8gPSBvcG5vOwor CQkJCQltYXRjaGVzW2ldLmlucHV0Y29sbGlkID0gY2xhdXNlLT5pbnB1dGNvbGxpZDsKKwkJCQl9 CisJCQl9CisJCQlpbmRleG51bSsrOworCQl9CisJfQorCisJLyogU29ydCBjbGF1c2VzIHRvIG1h a2Ugc2ltaWxhciBjbGF1c2VzIGdvIHRvZ2V0aGVyICovCisJcGdfcXNvcnQobWF0Y2hlcywgbiwg c2l6ZW9mKE9yQXJnSW5kZXhNYXRjaCksIG9yX2FyZ19pbmRleF9tYXRjaF9jbXApOworCisJLyog R3JvdXAgc2ltaWxhciBjbGF1c2VzIGludG8gKi8KKwlncm91cF9zdGFydCA9IDA7CisJZm9yIChp ID0gMTsgaSA8PSBuOyBpKyspCisJeworCQkvKiBDaGVjayBpZiBpdCdzIGEgZ3JvdXAgYm91bmRh cnkgKi8KKwkJaWYgKGdyb3VwX3N0YXJ0ID49IDAgJiYKKwkJCShpID09IG4gfHwKKwkJCSBtYXRj aGVzW2ldLmluZGV4bnVtICE9IG1hdGNoZXNbZ3JvdXBfc3RhcnRdLmluZGV4bnVtIHx8CisJCQkg bWF0Y2hlc1tpXS5jb2xudW0gIT0gbWF0Y2hlc1tncm91cF9zdGFydF0uY29sbnVtIHx8CisJCQkg bWF0Y2hlc1tpXS5vcG5vICE9IG1hdGNoZXNbZ3JvdXBfc3RhcnRdLm9wbm8gfHwKKwkJCSBtYXRj aGVzW2ldLmlucHV0Y29sbGlkICE9IG1hdGNoZXNbZ3JvdXBfc3RhcnRdLmlucHV0Y29sbGlkIHx8 CisJCQkgbWF0Y2hlc1tpXS5pbmRleG51bSA9PSAtMSkpCisJCXsKKwkJCS8qCisJCQkgKiBPbmUg Y2xhdXNlIGluIGdyb3VwOiBhZGQgaXQgImFzIGlzIiB0byB0aGUgdXBwZXItbGV2ZWwgT1IuCisJ CQkgKi8KKwkJCWlmIChpIC0gZ3JvdXBfc3RhcnQgPT0gMSkKKwkJCXsKKwkJCQlyZXN1bHQgPSBs YXBwZW5kKHJlc3VsdCwKKwkJCQkJCQkJIGxpc3RfbnRoKG9yYXJncywKKwkJCQkJCQkJCQkgIG1h dGNoZXNbZ3JvdXBfc3RhcnRdLmFyZ2luZGV4KSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBUd28gb3IgbW9yZSBjbGF1c2VzIGluIGEgZ3JvdXA6IGNyZWF0ZSBhIG5lc3Rl ZCBPUi4KKwkJCQkgKi8KKwkJCQlMaXN0CSAgICphcmdzID0gTklMOworCQkJCVJlc3RyaWN0SW5m byAqc3VicmluZm8gPSBtYWtlTm9kZShSZXN0cmljdEluZm8pOworCQkJCWludAkJCWo7CisKKwkJ CQlBc3NlcnQoaSAtIGdyb3VwX3N0YXJ0ID49IDIpOworCisJCQkJLyogQ29uc3RydWN0IHRoZSBs aXN0IG9mIG5lc3RlZCBPUiBhcmd1bWVudHMgKi8KKwkJCQlmb3IgKGogPSBncm91cF9zdGFydDsg aiA8IGk7IGorKykKKwkJCQkJYXJncyA9IGxhcHBlbmQoYXJncywgbGlzdF9udGgob3JhcmdzLCBt YXRjaGVzW2pdLmFyZ2luZGV4KSk7CisKKwkJCQkvKiBDb25zdHJ1Y3QgdGhlIG5lc3RlZCBPUiBh bmQgd3JhcCBpdCB3aXRoIFJlc3RyaWN0SW5mbyAqLworCQkJCSpzdWJyaW5mbyA9ICpyaW5mbzsK KwkJCQlzdWJyaW5mby0+Y2xhdXNlID0gbWFrZV9vcmNsYXVzZShhcmdzKTsKKwkJCQlzdWJyaW5m by0+b3JjbGF1c2UgPSBzdWJyaW5mby0+Y2xhdXNlOworCQkJCXJlc3VsdCA9IGxhcHBlbmQocmVz dWx0LCBzdWJyaW5mbyk7CisJCQl9CisKKwkJCWdyb3VwX3N0YXJ0ID0gaTsKKwkJfQorCX0KKwlw ZnJlZShtYXRjaGVzKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogbWFrZV9iaXRtYXBf cGF0aHNfZm9yX29yX2dyb3VwCisgKgkJR2VuZXJhdGUgYml0bWFwIHBhdGhzIGZvciBhIGdyb3Vw IG9mIHNpbWlsYXIgT1ItY2xhdXNlIGFyZ3VtZW50cworICoJCXByb2R1Y2VkIGJ5IGdyb3VwX3Np bWlsYXJfb3JfYXJncygpLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY29uc2lkZXJzIHR3byBjYXNl czogKDEpIG1hdGNoaW5nIGEgZ3JvdXAgb2YgY2xhdXNlcyB0bworICogdGhlIGluZGV4IGFzIGEg d2hvbGUsIGFuZCAoMikgbWF0Y2hpbmcgdGhlIGluZGl2aWR1YWwgY2xhdXNlcyBvbmUtYnktb25l LgorICogKDEpIHR5cGljYWxseSBjb21wcmlzZXMgYW4gb3B0aW1hbCBzb2x1dGlvbi4gIElmIG5v dCwgKDIpIHR5cGljYWxseQorICogY29tcHJpc2VzIGZhaXIgYWx0ZXJuYXRpdmUuCisgKgorICog SWRlYWxseSwgd2UgY291bGQgY29uc2lkZXIgYWxsIGFyYml0cmFyeSBzcGxpdHMgb2YgYXJndW1l bnRzIGludG8KKyAqIHN1Ymdyb3VwcywgYnV0IHRoYXQgY291bGQgbGVhZCB0byB1bmFjY2VwdGFi bGUgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5LgorICogVGhpcyBpcyB3aHkgd2Ugb25seSBjb25z aWRlciB0d28gY2FzZXMgb2YgYWJvdmUuCisgKi8KK3N0YXRpYyBMaXN0ICoKK21ha2VfYml0bWFw X3BhdGhzX2Zvcl9vcl9ncm91cChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAor CQkJCQkJCSAgIFJlc3RyaWN0SW5mbyAqcmksIExpc3QgKm90aGVyX2NsYXVzZXMpCit7CisJTGlz dAkgICAqam9pbnRsaXN0ID0gTklMOworCUxpc3QJICAgKnNwbGl0bGlzdCA9IE5JTDsKKwlMaXN0 Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpvcmFyZ3M7CisJTGlzdAkgICAqYXJncyA9ICgoQm9vbEV4 cHIgKikgcmktPmNsYXVzZSktPmFyZ3M7CisJQ29zdAkJam9pbnRjb3N0ID0gMC4wLAorCQkJCXNw bGl0Y29zdCA9IDAuMDsKKwlQYXRoCSAgICpiaXRtYXBxdWFsOworCUxpc3QJICAgKmluZGxpc3Q7 CisKKwkvKgorCSAqIEZpcnN0LCB0cnkgdG8gbWF0Y2ggdGhlIHdob2xlIGdyb3VwIHRvIHRoZSBv bmUgaW5kZXguCisJICovCisJb3JhcmdzID0gbGlzdF9tYWtlMShyaSk7CisJaW5kbGlzdCA9IGJ1 aWxkX3BhdGhzX2Zvcl9PUihyb290LCByZWwsCisJCQkJCQkJCSBvcmFyZ3MsCisJCQkJCQkJCSBv dGhlcl9jbGF1c2VzKTsKKwlpZiAoaW5kbGlzdCAhPSBOSUwpCisJeworCQliaXRtYXBxdWFsID0g Y2hvb3NlX2JpdG1hcF9hbmQocm9vdCwgcmVsLCBpbmRsaXN0KTsKKwkJam9pbnRjb3N0ID0gYml0 bWFwcXVhbC0+dG90YWxfY29zdDsKKwkJam9pbnRsaXN0ID0gbGlzdF9tYWtlMShiaXRtYXBxdWFs KTsKKwl9CisKKwkvKgorCSAqIEFsc28gdHJ5IHRvIG1hdGNoIGFsbCBjb250YWluaW5nIGNsYXVz ZXMgb25lLWJ5LW9uZS4KKwkgKi8KKwlmb3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJb3JhcmdzID0g bGlzdF9tYWtlMShsZmlyc3QobGMpKTsKKworCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09S KHJvb3QsIHJlbCwKKwkJCQkJCQkJCSBvcmFyZ3MsCisJCQkJCQkJCQkgb3RoZXJfY2xhdXNlcyk7 CisKKwkJaWYgKGluZGxpc3QgPT0gTklMKQorCQl7CisJCQlzcGxpdGxpc3QgPSBOSUw7CisJCQli cmVhazsKKwkJfQorCisJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWws IGluZGxpc3QpOworCQlzcGxpdGNvc3QgKz0gYml0bWFwcXVhbC0+dG90YWxfY29zdDsKKwkJc3Bs aXRsaXN0ID0gbGFwcGVuZChzcGxpdGxpc3QsIGJpdG1hcHF1YWwpOworCX0KKworCS8qCisJICog UGljayB0aGUgYmVzdCBvcHRpb24uCisJICovCisJaWYgKHNwbGl0bGlzdCA9PSBOSUwpCisJCXJl dHVybiBqb2ludGxpc3Q7CisJZWxzZSBpZiAoam9pbnRsaXN0ID09IE5JTCkKKwkJcmV0dXJuIHNw bGl0bGlzdDsKKwllbHNlCisJCXJldHVybiAoam9pbnRjb3N0IDwgc3BsaXRjb3N0KSA/IGpvaW50 bGlzdCA6IHNwbGl0bGlzdDsKK30KKworCiAvKgogICogZ2VuZXJhdGVfYml0bWFwX29yX3BhdGhz CiAgKgkJTG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIGNsYXVzZXMgdG8gZmluZCBPUiBjbGF1c2Vz LCBhbmQgZ2VuZXJhdGUKQEAgLTEyMDMsNiArMTUyMiw3IEBAIGdlbmVyYXRlX2JpdG1hcF9vcl9w YXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQlMaXN0CSAgICpwYXRo bGlzdDsKIAkJUGF0aAkgICAqYml0bWFwcXVhbDsKIAkJTGlzdENlbGwgICAqajsKKwkJTGlzdAkg ICAqZ3JvdXBlZEFyZ3M7CiAKIAkJLyogSWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3Qg T1JzICovCiAJCWlmICghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJpbmZvKSkKQEAgLTEyMTMs NyArMTUzMywxMyBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJICogdGhlIE9SLCBlbHNlIHdlIGNhbid0IHVzZSBpdC4KIAkJ ICovCiAJCXBhdGhsaXN0ID0gTklMOwotCQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8t Pm9yY2xhdXNlKS0+YXJncykKKworCQkvKgorCQkgKiBHcm91cCB0aGUgc2ltaWxhciBPUi1jbGF1 c2UgYXJndW1lbnQgaW50byBkZWRpY2F0ZWQgUmVzdHJpY3RJbmZvcywKKwkJICogYmVjYXVzZSB0 aG9zZSBSZXN0cmljdEluZm9zIG1pZ2h0IG1hdGNoIHRvIHRoZSBpbmRleCBhcyB3aG9sZS4KKwkJ ICovCisJCWdyb3VwZWRBcmdzID0gZ3JvdXBfc2ltaWxhcl9vcl9hcmdzKHJvb3QsIHJlbCwgcmlu Zm8pOworCQlmb3JlYWNoKGosIGdyb3VwZWRBcmdzKQogCQl7CiAJCQlOb2RlCSAgICpvcmFyZyA9 IChOb2RlICopIGxmaXJzdChqKTsKIAkJCUxpc3QJICAgKmluZGxpc3Q7CkBAIC0xMjMzLDEyICsx NTU5LDM3IEBAIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCQkJCQkJICAgYW5kYXJncywKIAkJCQkJCQkJCQkJCQkJ CSAgIGFsbF9jbGF1c2VzKSk7CiAJCQl9CisJCQllbHNlIGlmIChyZXN0cmljdGlvbl9pc19vcl9j bGF1c2UoY2FzdE5vZGUoUmVzdHJpY3RJbmZvLCBvcmFyZykpKQorCQkJeworCQkJCVJlc3RyaWN0 SW5mbyAqcmkgPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIG9yYXJnKTsKKworCQkJCS8qCisJCQkJ ICogR2VuZXJhdGUgYml0bWFwIHBhdGhzIGZvciB0aGUgZ3JvdXAgb2Ygc2ltaWxhciBPUi1jbGF1 c2UKKwkJCQkgKiBhcmd1bWVudHMuICBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBpbW1lZGlhdGVs eSByZW1vdmUgdGhlCisJCQkJICogcmluZm8gZnJvbSBvdGhlciBjbGF1c2VzLiAgVGhpcyBpcyBi ZWNhdXNlIHJpbmZvIGNhbiBiZQorCQkJCSAqIHRyYW5zZm9ybWVkIGR1cmluZyBpbmRleCBtYXRj aGluZy4gIFNvLCB3ZSBtaWdodCBiZSB1bmFibGUKKwkJCQkgKiB0byByZW1vdmUgdGhhdCBsYXRl ci4KKwkJCQkgKi8KKwkJCQlpbmRsaXN0ID0gbWFrZV9iaXRtYXBfcGF0aHNfZm9yX29yX2dyb3Vw KHJvb3QsCisJCQkJCQkJCQkJCQkJCSByZWwsIHJpLAorCQkJCQkJCQkJCQkJCQkgbGlzdF9kZWxl dGUoYWxsX2NsYXVzZXMsIHJpbmZvKSk7CisKKwkJCQlpZiAoaW5kbGlzdCA9PSBOSUwpCisJCQkJ eworCQkJCQlwYXRobGlzdCA9IE5JTDsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWVsc2UKKwkJ CQl7CisJCQkJCXBhdGhsaXN0ID0gbGlzdF9jb25jYXQocGF0aGxpc3QsIGluZGxpc3QpOworCQkJ CQljb250aW51ZTsKKwkJCQl9CisJCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJUmVzdHJpY3RJbmZv ICpyaSA9IGNhc3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOwogCQkJCUxpc3QJICAgKm9yYXJn czsKIAotCQkJCUFzc2VydCghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJpKSk7CiAJCQkJb3Jh cmdzID0gbGlzdF9tYWtlMShyaSk7CiAKIAkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09S KHJvb3QsIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApp bmRleCAwYzRmN2QyZjNkMi4uY2FjMDc2YWJiODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTIwMDMsMjUgKzIwMDMsMjQgQEAgU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNh bmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKChodW5kcmVkID0gNDIp IEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSBPUiAodGVudGhvdXMgPCAy KSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVuZHJl ZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKSBPUiAo dGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIEZpbHRlcjogKCgo aHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBPUiAodGhvdXNhbmQgPSA5OSkgT1Ig KHRlbnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0MSkpCiAgICAgICAgICAtPiAgQml0bWFw T3IKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBBbmQKICAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQogICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcE9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQyKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA5OSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9 IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAyKQogICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCiAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKLSgxNiByb3dz KQorKDE1IHJvd3MpCiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRy ZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8 IDIpIE9SIHRob3VzYW5kID0gNDE7CkBAIC0yMDMzLDIyICsyMDMyLDIxIEBAIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQg PSA0MikgQU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICgodGhvdXNh bmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo aHVuZHJlZCA9IDQyKSBBTkQgKCgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSBP UiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkpKQorICAgICAgICAgRmls dGVyOiAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0g OTkpIEFORCAodGVudGhvdXMgPSAyKSkpCiAgICAgICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXBPcgotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPSA0MikKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9 IDIpKQotKDEzIHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKQorKDEyIHJv d3MpCiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0 ZW50aG91cyA9IDIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2lu Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggYWJlOThmZjNj NTMuLmQyNmE5MzgzMWQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTQyMjYs MjAgKzQyMjYsMjAgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogIE5l c3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1 ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSAzKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1 bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCho dW5kcmVkID0gNCkgT1IgKHVuaXF1ZTEgPSAyKSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAyKQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo dW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykpCisgICAgICAgICAgICAgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUxID0gMSkpCiAgICAgICAgICAgICAgICAtPiAg Qml0bWFwT3IKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxID0gMSkKICgxNyByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpCkBAIC00MjUzLDEy ICs0MjUzLDEyIEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgICAg ICAgIEZpbHRlcjogKCh1bmlxdWUxID0gMikgT1IgKHRlbiA9IDQpKQogICAgLT4gIE1hdGVyaWFs aXplCiAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykpCisgICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUxID0gMSkp CiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICgxMiByb3dzKQogCiBleHBsYWluIChj b3N0cyBvZmYpCkBAIC00MjcwLDIxICs0MjcwLDIxIEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBq b2luIHRlbmsxIGIgb24KICBOZXN0ZWQgTG9vcAogICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVl MSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoKGEudW5pcXVlMiA9IDMpIE9SIChhLnVu aXF1ZTIgPSA3KSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCiAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiB0ZW5rMSBiCi0gICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDIpIE9SICho dW5kcmVkID0gNCkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQpIE9SICh1 bmlxdWUxID0gMikpCiAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodW5pcXVlMSA9IDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGh1bmRyZWQgPSA0KQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0g MikKICAgIC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g dGVuazEgYQotICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAo dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6ICgodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1 ZTEgPSAxKSkKICAgICAgICAgICAgICAgIEZpbHRlcjogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1 ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQog ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5Z ICgnezMsN30nOjppbnRlZ2VyW10pKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICgxOCByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYp CkBAIC00Mjk2LDIxICs0Mjk2LDIxIEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsx IGIgb24KICBOZXN0ZWQgTG9vcAogICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFO RCAoYi51bmlxdWUxID0gMikpIE9SICgoKGEudW5pcXVlMiA9IDMpIE9SIChhLnVuaXF1ZTIgPSA3 KSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCiAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MSBiCi0gICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0g NCkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQpIE9SICh1bmlxdWUxID0g MikpCiAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodW5pcXVlMSA9IDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfaHVuZHJlZAogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQg PSA0KQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgIC0+ ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQot ICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9 IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6 ICgodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1ZTEgPSAxKSkK ICAgICAgICAgICAgICAgIEZpbHRlcjogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSBP UiAodW5pcXVlMiA9IDcpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUxID0gMSkKICgxOCByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpCkBAIC00MzI0 LDE4ICs0MzI0LDE2IEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAg IC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSBiCiAgICAtPiAgTWF0ZXJpYWxpemUKICAgICAgICAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAgICAgICAgICAgIFJlY2hlY2sgQ29u ZDogKCh1bmlxdWUxIDwgMjApIE9SICh1bmlxdWUxID0gMykgT1IgKHVuaXF1ZTEgPSAxKSBPUiAo dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6ICgodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1 ZTEgPSBBTlkgKCd7MywxfSc6OmludGVnZXJbXSkpIE9SICh1bmlxdWUxIDwgMjApKQogICAgICAg ICAgICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSAzKSBPUiAodW5p cXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh1bmlxdWUxIDwgMjApCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAzKQotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKLSgxNiByb3dzKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gQU5Z ICgnezMsMX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUxIDwgMjApCisoMTQgcm93cykKIAogLS0KIC0tIHRlc3QgcGxhY2Vt ZW50IG9mIG1vdmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCA2ZDQyNGM4OTE4Ni4uODgzNDBhZjNiMDYgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNzY0LDYgKzE3NjQsNyBAQCBPcHJDYWNoZUtleQogT3By SW5mbwogT3ByUHJvb2ZDYWNoZUVudHJ5CiBPcHJQcm9vZkNhY2hlS2V5CitPckFyZ0luZGV4TWF0 Y2gKIE91dGVySm9pbkNsYXVzZUluZm8KIE91dHB1dFBsdWdpbkNhbGxiYWNrcwogT3V0cHV0UGx1 Z2luT3B0aW9ucwotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ2KQoK --0000000000001524e2062026797d Content-Type: application/octet-stream; name="v35-0001-Transform-OR-clauses-to-SAOP-s-during-index-matc.patch" Content-Disposition: attachment; filename="v35-0001-Transform-OR-clauses-to-SAOP-s-during-index-matc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m033l7zx0 RnJvbSA5MTU2NGVjYzRlNTNiZWVjNmM2MjE1NGI2OTAyNTY3MDNjNzgxZDNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogTW9uLCA1IEF1ZyAyMDI0IDIxOjI3OjAyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MzUgMS8yXSBUcmFuc2Zvcm0gT1ItY2xhdXNlcyB0byBTQU9QJ3MgZHVyaW5nIGluZGV4 IG1hdGNoaW5nCgpSZXBsYWNlICIoaW5kZXhrZXkgb3AgQzEpIE9SIChpbmRleGtleSBvcCBDMikg Li4uIChpbmRleGtleSBvcCBDTikiIHdpdGgKImluZGV4a2V5IG9wIEFOWShBUlJBWVtDMSwgQzIs IC4uLl0pIiAoU2NhbGFyQXJyYXlPcEV4cHIgbm9kZSkgZHVyaW5nIG1hdGNoaW5nCmEgY2xhdXNl IHRvIGluZGV4LgoKSGVyZSBDaSBpcyBhbiBpLXRoIGNvbnN0YW50IG9yIHBhcmFtZXRlcnMgZXhw cmVzc2lvbiwgJ2V4cHInIGlzIG5vbi1jb25zdGFudApleHByZXNzaW9uLCAnb3AnIGlzIGFuIG9w ZXJhdG9yIHdoaWNoIHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyCihm b3IgdGhlIGNhc2Ugb2YgcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50 IHBhcnRzIG9mIHRoZQpleHByZXNzaW9uLCBsaWtlICdDbiBvcCBleHByJykuCgpUaGlzIHRyYW5z Zm9ybWF0aW9uIGFsbG93cyBoYW5kbGluZyBsb25nIE9SLWNsYXVzZXMgd2l0aCBzaW5nbGUgSW5k ZXhTY2FuCmF2b2lkaW5nIHNsb3dlciBiaXRtYXAgc2NhbnMuCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzU2N0VENkNBLjIwNDA1MDQlNDBzaWdhZXYucnUKQXV0aG9yOiBBbGVuYSBS eWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1PgpBdXRob3I6IEFuZHJleSBMZXBpa2hv diA8YS5sZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IFBldGVyIEdlb2doZWdh biA8cGdAYm93dC5pZT4KUmV2aWV3ZWQtYnk6IFJhbmllciBWaWxlbGEgPHJhbmllci52ZkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KUmV2aWV3ZWQtYnk6IE5pa29sYXkgU2hh cGxvdiA8ZGh5YW5AbmF0YXJhai5zdT4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jICAgICAgfCAyNjYgKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDI3NiArKysrKysrKysrKysrKysrKysrLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAgICB8ICA1NyArKysrLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQgIHwgICA3ICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICB8ICAxMiArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0ICAgICAgICAgfCAgMzEgKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgNjkgKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcm93c2VjdXJpdHkuc3FsICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0 YXRzX2V4dC5zcWwgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNx bCAgICAgICAgICAgICAgfCAgMTIgKwogMTEgZmlsZXMgY2hhbmdlZCwgNzIxIGluc2VydGlvbnMo KyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmlu ZGV4IGMwZmNjN2Q3OGRmLi5jNDY3MDQ4NjA3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVy YXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKQEAgLTMyLDggKzMzLDEwIEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3Bh dGhzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv cmVzdHJpY3RpbmZvLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCiAKIAogLyogWFhYIHNlZSBQYXJ0Q29sbE1hdGNoZXNFeHByQ29sbCAq LwpAQCAtMTc3LDYgKzE4MCwxMCBAQCBzdGF0aWMgSW5kZXhDbGF1c2UgKm1hdGNoX3Jvd2NvbXBh cmVfdG9faW5kZXhjb2woUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgUmVzdHJpY3RJ bmZvICpyaW5mbywKIAkJCQkJCQkJCQkJCSBpbnQgaW5kZXhjb2wsCiAJCQkJCQkJCQkJCQkgSW5k ZXhPcHRJbmZvICppbmRleCk7CitzdGF0aWMgSW5kZXhDbGF1c2UgKm1hdGNoX29yY2xhdXNlX3Rv X2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkgICBSZXN0cmljdEluZm8g KnJpbmZvLAorCQkJCQkJCQkJCQkgICBpbnQgaW5kZXhjb2wsCisJCQkJCQkJCQkJCSAgIEluZGV4 T3B0SW5mbyAqaW5kZXgpOwogc3RhdGljIEluZGV4Q2xhdXNlICpleHBhbmRfaW5kZXhxdWFsX3Jv d2NvbXBhcmUoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlSZXN0cmljdEluZm8gKnJp bmZvLAogCQkJCQkJCQkJCQkJaW50IGluZGV4Y29sLApAQCAtMjI0OCw2ICsyMjU1LDEwIEBAIG1h dGNoX2NsYXVzZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAl7CiAJCXJldHVybiBt YXRjaF9yb3djb21wYXJlX3RvX2luZGV4Y29sKHJvb3QsIHJpbmZvLCBpbmRleGNvbCwgaW5kZXgp OwogCX0KKwllbHNlIGlmIChyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmluZm8pKQorCXsKKwkJ cmV0dXJuIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKHJvb3QsIHJpbmZvLCBpbmRleGNvbCwg aW5kZXgpOworCX0KIAllbHNlIGlmIChpbmRleC0+YW1zZWFyY2hudWxscyAmJiBJc0EoY2xhdXNl LCBOdWxsVGVzdCkpCiAJewogCQlOdWxsVGVzdCAgICpudCA9IChOdWxsVGVzdCAqKSBjbGF1c2U7 CkBAIC0yNzcxLDYgKzI3ODIsMjYxIEBAIG1hdGNoX3Jvd2NvbXBhcmVfdG9faW5kZXhjb2woUGxh bm5lckluZm8gKnJvb3QsCiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBtYXRjaF9vcmNsYXVz ZV90b19pbmRleGNvbCgpCisgKgkgIEhhbmRsZXMgdGhlIE9SLWV4cHIgY2FzZSBmb3IgbWF0Y2hf Y2xhdXNlX3RvX2luZGV4Y29sKCkgaW4gdGhlIGNhc2UKKyAqCSAgd2hlbiBpdCBjb3VsZCBiZSB0 cmFuc2Zvcm1lZCB0byBTY2FsYXJBcnJheU9wRXhwci4KKyAqLworc3RhdGljIEluZGV4Q2xhdXNl ICoKK21hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJ ICAgUmVzdHJpY3RJbmZvICpyaW5mbywKKwkJCQkJCSAgIGludCBpbmRleGNvbCwKKwkJCQkJCSAg IEluZGV4T3B0SW5mbyAqaW5kZXgpCit7CisJTGlzdENlbGwgICAqbGM7CisJQm9vbEV4cHIgICAq b3JjbGF1c2UgPSAoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlOworCU5vZGUJICAgKmluZGV4 RXhwciA9IE5VTEw7CisJTGlzdAkgICAqY29uc3RzID0gTklMOworCU5vZGUJICAgKmFycmF5Tm9k ZSA9IE5VTEw7CisJU2NhbGFyQXJyYXlPcEV4cHIgKnNhb3BleHByID0gTlVMTDsKKwlIZWFwVHVw bGUJb3BlcnR1cDsKKwlGb3JtX3BnX29wZXJhdG9yIG9wZXJmb3JtOworCU9pZAkJCW1hdGNoT3Bu byA9IEludmFsaWRPaWQ7CisJSW5kZXhDbGF1c2UgKmljbGF1c2U7CisJT2lkCQkJY29uc3R0eXBl ID0gSW52YWxpZE9pZDsKKwlPaWQJCQlhcnJheXR5cGUgPSBJbnZhbGlkT2lkOworCU9pZAkJCWlu cHV0Y29sbGlkID0gSW52YWxpZE9pZDsKKwlib29sCQlmaXJzdFRpbWUgPSB0cnVlOworCWJvb2wJ CWhhdmVfcGFyYW0gPSBmYWxzZTsKKworCUFzc2VydChJc0Eob3JjbGF1c2UsIEJvb2xFeHByKSk7 CisJQXNzZXJ0KG9yY2xhdXNlLT5ib29sb3AgPT0gT1JfRVhQUik7CisKKwkvKgorCSAqIEl0ZXJh dGUgb3ZlciBPUiBlbnRyaWVzLiAgQ2hlY2sgdGhhdCBlYWNoIE9SIGVudHJ5IGlzIG9mIHRoZSBm b3JtOgorCSAqIChpbmRleGtleSBvcGVyYXRvciBjb25zdGFudCkgb3IgKGNvbnN0YW50IG9wZXJh dG9yIGluZGV4a2V5KS4gT3BlcmF0b3JzCisJICogb2YgYWxsIHRoZSBlbnRyaWVzIG11c3QgbWF0 Y2guICBDb25zdGFudCBtaWdodCBiZSBlaXRoZXIgQ29uc3Qgb3IKKwkgKiBQYXJhbS4gIEV4aXQg d2l0aCBOVUxMIG9uIGZpcnN0IG5vbi1tYXRjaGluZyBlbnRyeS4KKwkgKi8KKwlmb3JlYWNoKGxj LCBvcmNsYXVzZS0+YXJncykKKwl7CisJCVJlc3RyaWN0SW5mbyAqc3ViUmluZm87CisJCU9wRXhw cgkgICAqc3ViQ2xhdXNlOworCQlPaWQJCQlvcG5vOworCQlOb2RlCSAgICpsZWZ0b3AsCisJCQkJ ICAgKnJpZ2h0b3A7CisJCU5vZGUJICAgKmNvbnN0RXhwcjsKKworCQlpZiAoIUlzQShsZmlyc3Qo bGMpLCBSZXN0cmljdEluZm8pKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJc3ViUmluZm8gPSAoUmVz dHJpY3RJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyogT25seSBvcGVyYXRvciBjbGF1c2VzIHNj YW4gbWF0Y2ggICovCisJCWlmICghSXNBKHN1YlJpbmZvLT5jbGF1c2UsIE9wRXhwcikpCisJCQly ZXR1cm4gTlVMTDsKKworCQlzdWJDbGF1c2UgPSAoT3BFeHByICopIHN1YlJpbmZvLT5jbGF1c2U7 CisJCW9wbm8gPSBzdWJDbGF1c2UtPm9wbm87CisKKwkJLyogT25seSBiaW5hcnkgb3BlcmF0b3Jz IGNhbiBtYXRjaCAgKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKHN1YkNsYXVzZS0+YXJncykgIT0gMikK KwkJCXJldHVybiBOVUxMOworCisJCS8qCisJCSAqIFRoZSBwYXJhbWV0ZXJzIGJlbG93IG11c3Qg bWF0Y2ggYmV0d2VlbiBzdWItcmluZm8gYW5kIGl0cyBwYXJlbnQgYXMKKwkJICogbWFrZV9yZXN0 cmljdGluZm8oKSBmaWxscyB0aGVtIHdpdGggdGhlIHNhbWUgdmFsdWVzLCBhbmQgZnVydGhlcgor CQkgKiBtb2RpZmljYXRpb25zIGFyZSBhbHNvIHRoZSBzYW1lIGZvciB0aGUgd2hvbGUgc3VidHJl ZS4gSG93ZXZlciwKKwkJICogc3RpbGwgbWFrZSBhIHNhbml0eSBjaGVjay4KKwkJICovCisJCUFz c2VydChzdWJSaW5mby0+aXNfcHVzaGVkX2Rvd24gPT0gcmluZm8tPmlzX3B1c2hlZF9kb3duKTsK KwkJQXNzZXJ0KHN1YlJpbmZvLT5pc19jbG9uZSA9PSByaW5mby0+aXNfY2xvbmUpOworCQlBc3Nl cnQoc3ViUmluZm8tPnNlY3VyaXR5X2xldmVsID09IHJpbmZvLT5zZWN1cml0eV9sZXZlbCk7CisJ CUFzc2VydChibXNfZXF1YWwoc3ViUmluZm8tPmluY29tcGF0aWJsZV9yZWxpZHMsIHJpbmZvLT5p bmNvbXBhdGlibGVfcmVsaWRzKSk7CisJCUFzc2VydChibXNfZXF1YWwoc3ViUmluZm8tPm91dGVy X3JlbGlkcywgcmluZm8tPm91dGVyX3JlbGlkcykpOworCisJCS8qCisJCSAqIEFsc28sIGNoZWNr IHRoYXQgcmVxdWlyZWRfcmVsaWRzIGluIHN1Yi1yaW5mbyBpcyBzdWJzZXQgb2YgcGFyZW50J3MK KwkJICogcmVxdWlyZWRfcmVsaWRzLgorCQkgKi8KKwkJQXNzZXJ0KGJtc19pc19zdWJzZXQoc3Vi UmluZm8tPnJlcXVpcmVkX3JlbGlkcywgcmluZm8tPnJlcXVpcmVkX3JlbGlkcykpOworCisJCS8q IE9ubHkgb3BlcmF0b3IgcmV0dXJuaW5nIGJvb2xlYW4gc3VpdHMgdGhlIHRyYW5zZm9ybWF0aW9u ICovCisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5vKSAhPSBCT09MT0lEKQorCQkJcmV0dXJuIE5V TEw7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIGNsYXVzZXMgb2YgdGhlIGZvcm06IChpbmRleGtl eSBvcGVyYXRvciBjb25zdGFudCkgb3IKKwkJICogKGNvbnN0YW50IG9wZXJhdG9yIGluZGV4a2V5 KS4gIERldGVybWluZSBpbmRleGtleSBzaWRlIGZpcnN0LCBjaGVjaworCQkgKiB0aGUgY29uc3Rh bnQgbGF0ZXIuCisJCSAqLworCQlsZWZ0b3AgPSAoTm9kZSAqKSBsaW5pdGlhbChzdWJDbGF1c2Ut PmFyZ3MpOworCQlyaWdodG9wID0gKE5vZGUgKikgbHNlY29uZChzdWJDbGF1c2UtPmFyZ3MpOwor CQlpZiAobWF0Y2hfaW5kZXhfdG9fb3BlcmFuZChsZWZ0b3AsIGluZGV4Y29sLCBpbmRleCkpCisJ CXsKKwkJCWluZGV4RXhwciA9IGxlZnRvcDsKKwkJCWNvbnN0RXhwciA9IHJpZ2h0b3A7CisJCX0K KwkJZWxzZSBpZiAobWF0Y2hfaW5kZXhfdG9fb3BlcmFuZChyaWdodG9wLCBpbmRleGNvbCwgaW5k ZXgpKQorCQl7CisJCQlvcG5vID0gZ2V0X2NvbW11dGF0b3Iob3Bubyk7CisJCQlpZiAoIU9pZElz VmFsaWQob3BubykpCisJCQl7CisJCQkJLyogY29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3ZSBj YW4ndCByZXZlcnNlIHRoZSBvcmRlciAqLworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJaW5k ZXhFeHByID0gcmlnaHRvcDsKKwkJCWNvbnN0RXhwciA9IGxlZnRvcDsKKwkJfQorCQllbHNlCisJ CXsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJLyoKKwkJICogSWdub3JlIGFueSBSZWxhYmVs VHlwZSBub2RlIGFib3ZlIHRoZSBvcGVyYW5kcy4gIFRoaXMgaXMgbmVlZGVkIHRvCisJCSAqIGJl IGFibGUgdG8gYXBwbHkgaW5kZXhzY2FubmluZyBpbiBiaW5hcnktY29tcGF0aWJsZS1vcGVyYXRv ciBjYXNlcy4KKwkJICogTm90ZTogd2UgY2FuIGFzc3VtZSB0aGVyZSBpcyBhdCBtb3N0IG9uZSBS ZWxhYmVsVHlwZSBub2RlOworCQkgKiBldmFsX2NvbnN0X2V4cHJlc3Npb25zKCkgd2lsbCBoYXZl IHNpbXBsaWZpZWQgaWYgbW9yZSB0aGFuIG9uZS4KKwkJICovCisJCWlmIChJc0EoY29uc3RFeHBy LCBSZWxhYmVsVHlwZSkpCisJCQljb25zdEV4cHIgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICop IGNvbnN0RXhwciktPmFyZzsKKwkJaWYgKElzQShpbmRleEV4cHIsIFJlbGFiZWxUeXBlKSkKKwkJ CWluZGV4RXhwciA9IChOb2RlICopICgoUmVsYWJlbFR5cGUgKikgaW5kZXhFeHByKS0+YXJnOwor CisJCS8qIFdlIGFsbG93IGNvbnN0YW50IHRvIGJlIENvbnN0IG9yIFBhcmFtICovCisJCWlmICgh SXNBKGNvbnN0RXhwciwgQ29uc3QpICYmICFJc0EoY29uc3RFeHByLCBQYXJhbSkpCisJCQlyZXR1 cm4gTlVMTDsKKworCQkvKiBGb3JiaWQgdHJhbnNmb3JtYXRpb24gZm9yIGNvbXBvc2l0ZSB0eXBl cywgcmVjb3Jkcy4gKi8KKwkJaWYgKHR5cGVfaXNfcm93dHlwZShleHByVHlwZShjb25zdEV4cHIp KSB8fAorCQkJdHlwZV9pc19yb3d0eXBlKGV4cHJUeXBlKGluZGV4RXhwcikpKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHRoZSBmaXJzdCBtYXRjaGluZyBxdWFsLCBzYXZlIGlu Zm9ybWF0aW9uIGFib3V0IG9wZXJhdG9yLCB0eXBlCisJCSAqIGFuZCBjb2xsYXRpb24uICBGb3Ig dGhlIG90aGVyIHF1YWxzIGp1c3QgY2hlY2sgdGhlIG1hdGNoIHdpdGggdGhlCisJCSAqIGZpcnN0 LgorCQkgKi8KKwkJaWYgKGZpcnN0VGltZSkKKwkJeworCQkJbWF0Y2hPcG5vID0gb3BubzsKKwkJ CWNvbnN0dHlwZSA9IGV4cHJUeXBlKGNvbnN0RXhwcik7CisJCQlhcnJheXR5cGUgPSBnZXRfYXJy YXlfdHlwZShjb25zdHR5cGUpOworCQkJaW5wdXRjb2xsaWQgPSBzdWJDbGF1c2UtPmlucHV0Y29s bGlkOworCisJCQkvKgorCQkJICogQ2hlY2sgb3BlcmF0b3IgaXMgcHJlc2VudCBpbiB0aGUgb3Bm YW1pbHksIGV4cHJlc3Npb24gY29sbGF0aW9uCisJCQkgKiBtYXRjaGVzIGluZGV4IGNvbGxhdGlv bi4gIEFsc28sIHRoZXJlIG11c3QgYmUgYW4gYXJyYXkgdHlwZSBpbgorCQkJICogb3JkZXIgdG8g Y29uc3RydWN0IGFuIGFycmF5IGxhdGVyLgorCQkJICovCisJCQlpZiAoIUluZGV4Q29sbE1hdGNo ZXNFeHByQ29sbChpbmRleC0+aW5kZXhjb2xsYXRpb25zW2luZGV4Y29sXSwgaW5wdXRjb2xsaWQp IHx8CisJCQkJIW9wX2luX29wZmFtaWx5KG1hdGNoT3BubywgaW5kZXgtPm9wZmFtaWx5W2luZGV4 Y29sXSkgfHwKKwkJCQkhT2lkSXNWYWxpZChhcnJheXR5cGUpKQorCQkJCXJldHVybiBOVUxMOwor CQkJZmlyc3RUaW1lID0gZmFsc2U7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAob3BubyAhPSBt YXRjaE9wbm8gfHwKKwkJCQlpbnB1dGNvbGxpZCAhPSBzdWJDbGF1c2UtPmlucHV0Y29sbGlkIHx8 CisJCQkJY29uc3R0eXBlICE9IGV4cHJUeXBlKGNvbnN0RXhwcikpCisJCQkJcmV0dXJuIE5VTEw7 CisJCX0KKworCQlpZiAoSXNBKGNvbnN0RXhwciwgUGFyYW0pKQorCQkJaGF2ZV9wYXJhbSA9IHRy dWU7CisJCWNvbnN0cyA9IGxhcHBlbmQoY29uc3RzLCBjb25zdEV4cHIpOworCX0KKworCWlmICho YXZlX3BhcmFtKQorCXsKKwkJLyoKKwkJICogV2UgbmVlZCB0byBjb25zdHJ1Y3QgYW4gQXJyYXlF eHByIGdpdmVuIHdlIGhhdmUgUGFyYW0ncyBub3QganVzdAorCQkgKiBDb25zdCdzLgorCQkgKi8K KwkJQXJyYXlFeHByICAqYXJyYXlFeHByID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKworCQkvKiBh cnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJCWFycmF5RXhw ci0+ZWxlbWVudF90eXBlaWQgPSBjb25zdHR5cGU7CisJCWFycmF5RXhwci0+YXJyYXlfdHlwZWlk ID0gYXJyYXl0eXBlOworCQlhcnJheUV4cHItPm11bHRpZGltcyA9IGZhbHNlOworCQlhcnJheUV4 cHItPmVsZW1lbnRzID0gY29uc3RzOworCQlhcnJheUV4cHItPmxvY2F0aW9uID0gLTE7CisKKwkJ YXJyYXlOb2RlID0gKE5vZGUgKikgYXJyYXlFeHByOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBXZSBoYXZlIG9ubHkgQ29uc3Qncy4gIEluIHRoaXMgY2FzZSB3ZSBjYW4gY29uc3RydWN0IGFu IGFycmF5CisJCSAqIGRpcmVjdGx5LgorCQkgKi8KKwkJaW50MTYJCXR5cGxlbjsKKwkJYm9vbAkJ dHlwYnl2YWw7CisJCWNoYXIJCXR5cGFsaWduOworCQlEYXR1bQkgICAqZWxlbXM7CisJCWludAkJ CWkgPSAwOworCQlBcnJheVR5cGUgICphcnJheUNvbnN0OworCisJCWdldF90eXBsZW5ieXZhbGFs aWduKGNvbnN0dHlwZSwgJnR5cGxlbiwgJnR5cGJ5dmFsLCAmdHlwYWxpZ24pOworCisJCWVsZW1z ID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbGlzdF9sZW5ndGgoY29uc3RzKSk7 CisJCWZvcmVhY2gobGMsIGNvbnN0cykKKwkJCWVsZW1zW2krK10gPSAoKENvbnN0ICopIGxmaXJz dChsYykpLT5jb25zdHZhbHVlOworCisJCWFycmF5Q29uc3QgPSBjb25zdHJ1Y3RfYXJyYXkoZWxl bXMsIGksIGNvbnN0dHlwZSwKKwkJCQkJCQkJCSB0eXBsZW4sIHR5cGJ5dmFsLCB0eXBhbGlnbik7 CisJCWFycmF5Tm9kZSA9IChOb2RlICopIG1ha2VDb25zdChhcnJheXR5cGUsIC0xLCBpbnB1dGNv bGxpZCwKKwkJCQkJCQkJCSAgIC0xLCBQb2ludGVyR2V0RGF0dW0oYXJyYXlDb25zdCksCisJCQkJ CQkJCQkgICBmYWxzZSwgZmFsc2UpOworCisJCXBmcmVlKGVsZW1zKTsKKwkJbGlzdF9mcmVlKGNv bnN0cyk7CisJfQorCisJLyogTG9va3VwIGZvciBvcGVyYXRvciB0byBmZXRjaCBuZWNlc3Nhcnkg aW5mb3JtYXRpb24gZm9yIHRoZSBTQU9QIG5vZGUgKi8KKwlvcGVydHVwID0gU2VhcmNoU3lzQ2Fj aGUxKE9QRVJPSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKG1hdGNoT3BubykpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZChvcGVydHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIG9wZXJhdG9yICV1IiwgbWF0Y2hPcG5vKTsKKworCW9wZXJmb3JtID0gKEZv cm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsKKworCS8qIEJ1aWxkIHRoZSBTQU9Q IGV4cHJlc3Npb24gbm9kZSAqLworCXNhb3BleHByID0gbWFrZU5vZGUoU2NhbGFyQXJyYXlPcEV4 cHIpOworCXNhb3BleHByLT5vcG5vID0gbWF0Y2hPcG5vOworCXNhb3BleHByLT5vcGZ1bmNpZCA9 IG9wZXJmb3JtLT5vcHJjb2RlOworCXNhb3BleHByLT5oYXNoZnVuY2lkID0gSW52YWxpZE9pZDsK KwlzYW9wZXhwci0+bmVnZnVuY2lkID0gSW52YWxpZE9pZDsKKwlzYW9wZXhwci0+dXNlT3IgPSB0 cnVlOworCXNhb3BleHByLT5pbnB1dGNvbGxpZCA9IGlucHV0Y29sbGlkOworCXNhb3BleHByLT5h cmdzID0gbGlzdF9tYWtlMihpbmRleEV4cHIsIGFycmF5Tm9kZSk7CisJc2FvcGV4cHItPmxvY2F0 aW9uID0gLTE7CisKKwlSZWxlYXNlU3lzQ2FjaGUob3BlcnR1cCk7CisKKwkvKgorCSAqIEZpbmFs bHkgYnVpbGQgYW4gSW5kZXhDbGF1c2UgYmFzZWQgb24gdGhlIFNBT1Agbm9kZS4KKwkgKi8KKwlp Y2xhdXNlID0gbWFrZU5vZGUoSW5kZXhDbGF1c2UpOworCWljbGF1c2UtPnJpbmZvID0gbWFrZV9y ZXN0cmljdGluZm8ocm9vdCwKKwkJCQkJCQkJCSAgICZzYW9wZXhwci0+eHByLAorCQkJCQkJCQkJ ICAgcmluZm8tPmlzX3B1c2hlZF9kb3duLAorCQkJCQkJCQkJICAgcmluZm8tPmhhc19jbG9uZSwK KwkJCQkJCQkJCSAgIHJpbmZvLT5pc19jbG9uZSwKKwkJCQkJCQkJCSAgIHJpbmZvLT5wc2V1ZG9j b25zdGFudCwKKwkJCQkJCQkJCSAgIHJpbmZvLT5zZWN1cml0eV9sZXZlbCwKKwkJCQkJCQkJCSAg IHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMsCisJCQkJCQkJCQkgICByaW5mby0+aW5jb21wYXRpYmxl X3JlbGlkcywKKwkJCQkJCQkJCSAgIHJpbmZvLT5vdXRlcl9yZWxpZHMpOworCWljbGF1c2UtPmlu ZGV4cXVhbHMgPSBsaXN0X21ha2UxKGljbGF1c2UtPnJpbmZvKTsKKwlpY2xhdXNlLT5sb3NzeSA9 IGZhbHNlOworCWljbGF1c2UtPmluZGV4Y29sID0gaW5kZXhjb2w7CisJaWNsYXVzZS0+aW5kZXhj b2xzID0gTklMOworCXJldHVybiBpY2xhdXNlOworfQorCiAvKgogICogZXhwYW5kX2luZGV4cXVh bF9yb3djb21wYXJlIC0tLSBleHBhbmQgYSBzaW5nbGUgaW5kZXhxdWFsIGNvbmRpdGlvbgogICoJ CXRoYXQgaXMgYSBSb3dDb21wYXJlRXhwcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfaW5kZXgub3V0CmluZGV4IGNmNmVhYzU3MzQ5Li4wYzRmN2QyZjNkMiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMTg0NCwxOCArMTg0NCw2NyBA QCBEUk9QIFRBQkxFIG9uZWtfd2l0aF9udWxsOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNU ICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAg IFJlY2hlY2sgQ29uZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKSBPUiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBB TkQgKHRlbnRob3VzID0gNDIpKSkKLSAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkKLSAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMykpCi0gICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDQy KSkKLSg5IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEKKyAgIElu ZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9 Jzo6aW50ZWdlcltdKSkpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJF IHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRo b3VzID0gNDIpOworIHVuaXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50 eSB8IGh1bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhv dXMgfCBvZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAgIDQyIHwgICAgNTUzMCB8ICAgMCB8 ICAgIDIgfCAgIDIgfCAgICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIgfCAgICAgICAgICA0MiB8 ICAgICAgICA0MiB8ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8IFFCQUFBQSAgIHwgU0VJQUFBICAg fCBPT09PeHgKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0 ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gKFNFTEVDVCAxICsgMikgT1IgdGVudGhvdXMgPSA0Mik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2Nh biB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0 aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZIChBUlJBWVsxLCAoSW5pdFBsYW4gMSku Y29sMSwgNDJdKSkpCisgICBJbml0UGxhbiAxCisgICAgIC0+ICBSZXN1bHQKKyg0IHJvd3MpCisK K1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3Vz ID0gMSBPUiB0ZW50aG91cyA9IChTRUxFQ1QgMSArIDIpIE9SIHRlbnRob3VzID0gNDIpOworIHVu aXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8IGh1bmRyZWQgfCB0 aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMgfCBvZGQgfCBldmVu IHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0KKyAgICAgIDQyIHwgICAgNTUzMCB8ICAgMCB8ICAgIDIgfCAgIDIgfCAg ICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIgfCAgICAgICAgICA0MiB8ICAgICAgICA0MiB8ICAg ICAgIDQyIHwgIDg0IHwgICA4NSB8IFFCQUFBQSAgIHwgU0VJQUFBICAgfCBPT09PeHgKKygxIHJv dykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAg UmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5 OX0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkKKyg4 IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgY291bnQgCistLS0tLS0t CisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0 ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0 ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5Z ICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVu azEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9 IDMgT1IgdGVudGhvdXMgPSA0Mik7CkBAIC0xODY1LDEzICsxOTE0LDEzMCBAQCBTRUxFQ1QgKiBG Uk9NIHRlbmsxCiAoMSByb3cpCiAKIEVYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g dGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMTo6bnVtZXJpYyBP UiB0ZW50aG91cyA9IDM6OmludDQgT1IgdGVudGhvdXMgPSA0Mjo6bnVtZXJpYyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAg U2NhbiBvbiB0ZW5rMQorICAgUmVjaGVjayBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAgIEZpbHRl cjogKCgodGVudGhvdXMpOjpudW1lcmljID0gJzEnOjpudW1lcmljKSBPUiAodGVudGhvdXMgPSAz KSBPUiAoKHRlbnRob3VzKTo6bnVtZXJpYyA9ICc0Mic6Om51bWVyaWMpKQorICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPSA0MikKKyg1IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGVudGhvdXMgPSAxOjpudW1lcmljIE9SIHRlbnRob3Vz ID0gMzo6aW50NCBPUiB0ZW50aG91cyA9IDQyOjpudW1lcmljOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHRlbmsxCisgICBG aWx0ZXI6ICgoKHRlbnRob3VzKTo6bnVtZXJpYyA9ICcxJzo6bnVtZXJpYykgT1IgKHRlbnRob3Vz ID0gMykgT1IgKCh0ZW50aG91cyk6Om51bWVyaWMgPSAnNDInOjpudW1lcmljKSkKKygyIHJvd3Mp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9 Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCBy b3dzKQorCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjb3VudCAKKy0tLS0tLS0KKyAgICAx MAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5k IDwgOTkgT1IgNDMgPiB0aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVj aGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0 Myw0Mn0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9Jzo6aW50ZWdl cltdKSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRo b3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSBy b3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBP UiB0aG91c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAg UmVjaGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEs M30nOjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNf dGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0 MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorKDggcm93cykKKwor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCist LS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0 MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQg PSA0MikgT1IgKHRob3VzYW5kID0gOTkpKSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVu ZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBPUiAodGhvdXNhbmQgPSA5OSkgT1IgKHRl bnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IK KyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA5OSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90 aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRlbnRob3VzIDwgMikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRob3VzYW5kID0gNDEpCisoMTYgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK KyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5 IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAyMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBP UiAodGhvdXNhbmQgPSA0MSkgT1IgKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikp KSkKICAgICAgICAgIC0+ICBCaXRtYXBBbmQKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoaHVuZHJlZCA9IDQyKQpAQCAtMTg3OSwxNiArMjA0NSw5MCBAQCBTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3Rob3VzX3RlbnRob3VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPSA0MikKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCi0oMTEgcm93cykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAo dGVudGhvdXMgPSAyKSkKKygxMyByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQot ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkp OworICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g NDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAKIC0tLS0tLS0K ICAgICAxMAogKDEgcm93KQogCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMSwgdGVuazIKKyAgV0hFUkUgdGVuazEuaHVuZHJlZCA9IDQyIEFORCAodGVuazIu dGhvdXNhbmQgPSA0MiBPUiB0ZW5rMS50aG91c2FuZCA9IDQxIE9SIHRlbmsyLnRlbnRob3VzID0g MikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5odW5kcmVkOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgIEpvaW4gRmls dGVyOiAoKHRlbmsyLnRob3VzYW5kID0gNDIpIE9SICh0ZW5rMS50aG91c2FuZCA9IDQxKSBPUiAo dGVuazIudGVudGhvdXMgPSAyKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgIC0+ICBNYXRl cmlhbGl6ZQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazIKKyAg ICAgICAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMl9odW5kcmVkCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorKDEyIHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxLCB0 ZW5rMgorICBXSEVSRSB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQy IE9SIHRlbmsyLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVu azIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMgorICAgICAgICAgICAgICAgUmVjaGVjayBD b25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKHRob3VzYW5kID0g NDIpIE9SICh0aG91c2FuZCA9IDQxKSBPUiAodGVudGhvdXMgPSAyKSkKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMl9odW5kcmVkCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgLT4gIEluZGV4IE9ubHkg U2NhbiB1c2luZyB0ZW5rMV9odW5kcmVkIG9uIHRlbmsxCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoaHVuZHJlZCA9IDQyKQorKDkgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEgSk9JTiB0ZW5rMiBPTgorICB0ZW5rMS5odW5kcmVkID0g NDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQyIE9SIHRlbmsyLnRob3VzYW5kID0gNDEgT1IgdGVu azIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MgorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAg ICAgICAgRmlsdGVyOiAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDQxKSBPUiAodGVu dGhvdXMgPSAyKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r Ml9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQy KQorICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyB0ZW5rMV9odW5kcmVkIG9uIHRl bmsxCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorKDkgcm93cykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgTEVGVCBK T0lOIHRlbmsyIE9OCisgIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0g NDIgT1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0 ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVk IExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKHRlbmsxLmh1bmRyZWQgPSA0 MikKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgdGVuazFfaHVuZHJlZCBvbiB0 ZW5rMQorICAgICAgICAgLT4gIE1lbW9pemUKKyAgICAgICAgICAgICAgIENhY2hlIEtleTogdGVu azEuaHVuZHJlZAorICAgICAgICAgICAgICAgQ2FjaGUgTW9kZTogbG9naWNhbAorICAgICAgICAg ICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgdGVuazJfaHVuZHJlZCBvbiB0ZW5rMgorICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSB0ZW5rMS5odW5kcmVkKQorICAg ICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9 IDQxKSBPUiAodGVudGhvdXMgPSAyKSkKKygxMCByb3dzKQorCiAtLQogLS0gQ2hlY2sgYmVoYXZp b3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQKaW5kZXggNTNmNzBkNzJlZDYuLmFiZTk4ZmYzYzUzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTQyNzgsMTUgKzQyNzgsNjQgQEAgc2VsZWN0ICogZnJv bSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGh1bmRyZWQgPSA0KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5p cXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAgICAgICAg ICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBP UiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0gNykpCiAgICAgICAgICAgICAgICAtPiAgQml0 bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV91bmlxdWUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIg PSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTggcm93cykKKworZXhwbGFpbiAoY29zdHMg b2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUx ID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVl MiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAg Sm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgo KGEudW5pcXVlMiA9IDMpIE9SIChhLnVuaXF1ZTIgPSA3KSkgQU5EIChiLmh1bmRyZWQgPSA0KSkp CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCisgICAgICAgICAtPiAgQml0bWFw T3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUx CisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0KQorICAgLT4gIE1hdGVyaWFsaXpl CisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKCh1bmlxdWUxID0gMSkgT1Ig KHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUy ID0gNykKLSgxOSByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTggcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAo YS51bmlxdWUxIDwgMjAgb3IgYS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVu aXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIu aHVuZHJlZCA9IDQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBM b29wCisgICBKb2luIEZpbHRlcjogKChhLnVuaXF1ZTEgPCAyMCkgT1IgKGEudW5pcXVlMSA9IDMp IE9SICgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUy ID0gMykgT1IgKGEudW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiB0ZW5rMSBiCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1 bmlxdWUxIDwgMjApIE9SICh1bmlxdWUxID0gMykgT1IgKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVl MiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgo dW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0gMSkgT1IgKHVuaXF1 ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAyMCkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMp CisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAx KQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Vu aXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0g QU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE2IHJvd3MpCiAKIC0tCiAtLSB0ZXN0IHBsYWNl bWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRyZWUKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKaW5kZXggMzE5MTkwODU1YmQuLmVm ODkwYjk2Y2M2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3Vy aXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dApA QCAtNDQ5Miw2ICs0NDkyLDEzIEBAIFNFTEVDVCAqIEZST00gcmxzX3RibCBXSEVSRSBhIDw8PCAx MDAwOwogLS0tCiAoMCByb3dzKQogCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g cmxzX3RibCBXSEVSRSBhIDw8PCAxMDAwIG9yIGEgPDw8IDkwMDsKKyAgICAgICAgUVVFUlkgUExB TiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRp bWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKwogRFJPUCBPUEVSQVRPUiA8PDwgKGludCwgaW50 KTsKIERST1AgRlVOQ1RJT04gb3BfbGVhayhpbnQsIGludCk7CiBSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4 dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggOGM0 ZGE5NTUwODQuLmE0YzdiZTQ4N2VmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19l eHQub3V0CkBAIC0zMjU0LDYgKzMyNTQsOCBAQCBDUkVBVEUgT1BFUkFUT1IgPDw8IChwcm9jZWR1 cmUgPSBvcF9sZWFrLCBsZWZ0YXJnID0gaW50LCByaWdodGFyZyA9IGludCwKICAgICAgICAgICAg ICAgICAgICAgIHJlc3RyaWN0ID0gc2NhbGFybHRzZWwpOwogU0VMRUNUICogRlJPTSB0c3RzdGF0 cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFBlcm1pc3Npb24g ZGVuaWVkCiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZSBwcml2X3Rlc3RfdGJs CitTRUxFQ1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBPUiBi IDw8PCAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgcHJpdl90ZXN0X3Ri bAogREVMRVRFIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBi IDw8PCAwOyAtLSBQZXJtaXNzaW9uIGRlbmllZAogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBm b3IgdGFibGUgcHJpdl90ZXN0X3RibAogLS0gR3JhbnQgYWNjZXNzIHZpYSBhIHNlY3VyaXR5IGJh cnJpZXIgdmlldywgYnV0IGhpZGUgYWxsIGRhdGEKQEAgLTMyNjgsNiArMzI3MCwxMSBAQCBTRUxF Q1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8 IDA7IC0tIFNob3VsZCBub3QgbAogLS0tKy0tLQogKDAgcm93cykKIAorU0VMRUNUICogRlJPTSB0 c3RzdGF0cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAwIE9SIGIgPDw8IDA7IC0tIFNob3Vs ZCBub3QgbGVhaworIGEgfCBiIAorLS0tKy0tLQorKDAgcm93cykKKwogREVMRVRFIEZST00gdHN0 c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUgYSA8PDwgMCBBTkQgYiA8PDwgMDsgLS0gU2hvdWxk IG5vdCBsZWFrCiAtLSBHcmFudCB0YWJsZSBhY2Nlc3MsIGJ1dCBoaWRlIGFsbCBkYXRhIHdpdGgg UkxTCiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CkBAIC0zMjgwLDYgKzMyODcsMTEgQEAg U0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIg PDw8IDA7IC0tIFNob3VsZCBub3QgbGUKIC0tLSstLS0KICgwIHJvd3MpCiAKK1NFTEVDVCAqIEZS T00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIE9SIGIgPDw8IDA7CisgYSB8 IGIgCistLS0rLS0tCisoMCByb3dzKQorCiBERUxFVEUgRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3Rf dGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogLS0gcHJp dmlsZWdlIGNoZWNrcyBmb3IgcGdfc3RhdHNfZXh0IGFuZCBwZ19zdGF0c19leHRfZXhwcnMKIFJF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXVpZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0Cmlu ZGV4IDYwMjZlMTVlZDMxLi44ZjRlZjBkN2E2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91dWlkLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQu b3V0CkBAIC0xMjksNiArMTI5LDM3IEBAIENSRUFURSBJTkRFWCBndWlkMV9idHJlZSBPTiBndWlk MSBVU0lORyBCVFJFRSAoZ3VpZF9maWVsZCk7CiBDUkVBVEUgSU5ERVggZ3VpZDFfaGFzaCAgT04g Z3VpZDEgVVNJTkcgSEFTSCAgKGd1aWRfZmllbGQpOwogLS0gdW5pcXVlIGluZGV4IHRlc3QKIENS RUFURSBVTklRVUUgSU5ERVggZ3VpZDFfdW5pcXVlX0JUUkVFIE9OIGd1aWQxIFVTSU5HIEJUUkVF IChndWlkX2ZpZWxkKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGd1aWQxIFdIRVJFIGd1aWRfZmllbGQgPD4gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExJyBPUgorCQkJCQkJCWd1aWRfZmllbGQgPD4gJzNmM2UzYzNiLTNhMzAtMzkzOC0zNzM2LTM1 MzQzM2EyMzEzZSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBTY2FuIG9uIGd1aWQx CisgICAgICAgICBGaWx0ZXI6ICgoZ3VpZF9maWVsZCA8PiAnMTExMTExMTEtMTExMS0xMTExLTEx MTEtMTExMTExMTExMTExJzo6dXVpZCkgT1IgKGd1aWRfZmllbGQgPD4gJzNmM2UzYzNiLTNhMzAt MzkzOC0zNzM2LTM1MzQzM2EyMzEzZSc6OnV1aWQpKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3VpZF9maWVsZCA8PSAn MjIyMjIyMjItMjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyJyBPUgorCQkJCQkJCQkJZ3VpZF9m aWVsZCA8PSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIE9SCisJCQkJCQkJCQln dWlkX2ZpZWxkIDw9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBTY2FuIG9uIGd1aWQxCisg ICAgICAgICBGaWx0ZXI6ICgoZ3VpZF9maWVsZCA8PSAnMjIyMjIyMjItMjIyMi0yMjIyLTIyMjIt MjIyMjIyMjIyMjIyJzo6dXVpZCkgT1IgKGd1aWRfZmllbGQgPD0gJzExMTExMTExLTExMTEtMTEx MS0xMTExLTExMTExMTExMTExMSc6OnV1aWQpIE9SIChndWlkX2ZpZWxkIDw9ICczZjNlM2MzYi0z YTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOjp1dWlkKSkKKygzIHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGd1aWQxIFdIRVJFIGd1aWRfZmllbGQg PSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMzYTIzMTNlJyBPUgorCQkJCQkJCWd1aWRf ZmllbGQgPSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0 ZQorICAgLT4gIFNlcSBTY2FuIG9uIGd1aWQxCisgICAgICAgICBGaWx0ZXI6ICgoZ3VpZF9maWVs ZCA9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOjp1dWlkKSBPUiAoZ3Vp ZF9maWVsZCA9ICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnOjp1dWlkKSkK KygzIHJvd3MpCisKIC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyBndWlkMShndWlkX2ZpZWxk KSBWQUxVRVMoJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMScpOwogRVJST1I6 ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJndWlkMV91 bmlxdWVfYnRyZWUiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5k ZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBlMjk2 ODkxY2FiOC4uN2UxMDhmOWIyODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ny ZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNx bApAQCAtNzMyLDEyICs3MzIsODEgQEAgU0VMRUNUICogRlJPTSB0ZW5rMQogU0VMRUNUICogRlJP TSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRo b3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gKFNFTEVDVCAxICsgMikgT1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1QgKiBG Uk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVu dGhvdXMgPSAoU0VMRUNUIDEgKyAyKSBPUiB0ZW50aG91cyA9IDQyKTsKKwogRVhQTEFJTiAoQ09T VFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSk7CiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEK KyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMg T1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5k ID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIp OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRo b3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDE6Om51bWVyaWMgT1IgdGVudGhvdXMgPSAzOjpp bnQ0IE9SIHRlbnRob3VzID0gNDI6Om51bWVyaWMpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRlbnRob3VzID0gMTo6bnVtZXJpYyBPUiB0ZW50 aG91cyA9IDM6OmludDQgT1IgdGVudGhvdXMgPSA0Mjo6bnVtZXJpYzsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNh bmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPCA0MiBP UiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhvdXNhbmQgT1IgNDIgPiB0aG91c2FuZCk7CisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRo b3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2Fu ZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0 MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJF IGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50 aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQor ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkg T1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhv dXMgPSAyKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFO RCB0ZW50aG91cyA9IDIpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMSwgdGVuazIKKyAgV0hFUkUgdGVuazEuaHVuZHJlZCA9IDQyIEFORCAodGVuazIu dGhvdXNhbmQgPSA0MiBPUiB0ZW5rMS50aG91c2FuZCA9IDQxIE9SIHRlbmsyLnRlbnRob3VzID0g MikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5odW5kcmVkOworCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMSwgdGVuazIKKyAgV0hFUkUgdGVuazEu aHVuZHJlZCA9IDQyIEFORCAodGVuazIudGhvdXNhbmQgPSA0MiBPUiB0ZW5rMi50aG91c2FuZCA9 IDQxIE9SIHRlbmsyLnRlbnRob3VzID0gMikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5o dW5kcmVkOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MSBKT0lOIHRlbmsyIE9OCisgIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5k ID0gNDIgT1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAor ICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgTEVGVCBKT0lOIHRlbmsyIE9OCisgIHRlbmsxLmh1 bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhvdXNhbmQgPSA0 MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVu ZHJlZDsKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4g Y29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IGQ4MWZmNjNiZTUzLi40NDczYjhm MDRkNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAgLTE0MzMsNiArMTQzMywxNSBAQCBzZWxlY3Qg KiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVu aXF1ZTEgPSAyKSBvcgogICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIu aHVuZHJlZCA9IDQpOwogCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsx IGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBv cgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQp OworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEg YiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3IgYS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAx IGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0g NykgYW5kIGIuaHVuZHJlZCA9IDQpOworCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJs ZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCiAtLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsCmluZGV4IDMwMTFkNzFiMTJiLi42ZDI0MTRiNjA0NCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbApAQCAtMjE3Nyw2ICsyMTc3LDcgQEAgQ1JFQVRFIEZV TkNUSU9OIG9wX2xlYWsoaW50LCBpbnQpIFJFVFVSTlMgYm9vbAogQ1JFQVRFIE9QRVJBVE9SIDw8 PCAocHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9IGludCwgcmlnaHRhcmcgPSBpbnQsCiAg ICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAqIEZS T00gcmxzX3RibCBXSEVSRSBhIDw8PCAxMDAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBhIDw8PCA5MDA7CiBEUk9QIE9QRVJB VE9SIDw8PCAoaW50LCBpbnQpOwogRFJPUCBGVU5DVElPTiBvcF9sZWFrKGludCwgaW50KTsKIFJF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCmlu ZGV4IDBjMDhhNmNjNDJlLi41Yzc4NmIxNmM2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHNfZXh0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQu c3FsCkBAIC0xNjM0LDYgKzE2MzQsNyBAQCBDUkVBVEUgRlVOQ1RJT04gb3BfbGVhayhpbnQsIGlu dCkgUkVUVVJOUyBib29sCiBDUkVBVEUgT1BFUkFUT1IgPDw8IChwcm9jZWR1cmUgPSBvcF9sZWFr LCBsZWZ0YXJnID0gaW50LCByaWdodGFyZyA9IGludCwKICAgICAgICAgICAgICAgICAgICAgIHJl c3RyaWN0ID0gc2NhbGFybHRzZWwpOwogU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3Rf dGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFBlcm1pc3Npb24gZGVuaWVkCitTRUxF Q1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAw OwogREVMRVRFIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBi IDw8PCAwOyAtLSBQZXJtaXNzaW9uIGRlbmllZAogCiAtLSBHcmFudCBhY2Nlc3MgdmlhIGEgc2Vj dXJpdHkgYmFycmllciB2aWV3LCBidXQgaGlkZSBhbGwgZGF0YQpAQCAtMTY0NSw2ICsxNjQ2LDcg QEAgR1JBTlQgU0VMRUNULCBERUxFVEUgT04gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgVE8gcmVn cmVzc19zdGF0c191c2VyMTsKIC0tIFNob3VsZCBub3cgaGF2ZSBhY2Nlc3MgdmlhIHRoZSB2aWV3 LCBidXQgc2VlIG5vdGhpbmcgYW5kIGxlYWsgbm90aGluZwogU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3N0YXRzX3VzZXIxOwogU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rl c3RfdmlldyBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKK1NF TEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUgYSA8PDwgMCBPUiBiIDw8 PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF92 aWV3IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBH cmFudCB0YWJsZSBhY2Nlc3MsIGJ1dCBoaWRlIGFsbCBkYXRhIHdpdGggUkxTCkBAIC0xNjU1LDYg KzE2NTcsNyBAQCBHUkFOVCBTRUxFQ1QsIERFTEVURSBPTiB0c3RzdGF0cy5wcml2X3Rlc3RfdGJs IFRPIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CiAtLSBTaG91bGQgbm93IGhhdmUgZGlyZWN0IHRhYmxl IGFjY2VzcywgYnV0IHNlZSBub3RoaW5nIGFuZCBsZWFrIG5vdGhpbmcKIFNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19zdGF0c191c2VyMTsKIFNFTEVDVCAqIEZST00gdHN0c3RhdHMu cHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxl YWsKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIE9S IGIgPDw8IDA7CiBERUxFVEUgRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8 IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBwcml2aWxlZ2UgY2hlY2tz IGZvciBwZ19zdGF0c19leHQgYW5kIHBnX3N0YXRzX2V4dF9leHBycwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNx bAppbmRleCBjODhmNmQwODdhNy4uNzVlZTk2NmRlZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCkBA IC02Myw2ICs2MywxOCBAQCBDUkVBVEUgSU5ERVggZ3VpZDFfaGFzaCAgT04gZ3VpZDEgVVNJTkcg SEFTSCAgKGd1aWRfZmllbGQpOwogCiAtLSB1bmlxdWUgaW5kZXggdGVzdAogQ1JFQVRFIFVOSVFV RSBJTkRFWCBndWlkMV91bmlxdWVfQlRSRUUgT04gZ3VpZDEgVVNJTkcgQlRSRUUgKGd1aWRfZmll bGQpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBX SEVSRSBndWlkX2ZpZWxkIDw+ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgT1IK KwkJCQkJCQlndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMx M2UnOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hF UkUgZ3VpZF9maWVsZCA8PSAnMjIyMjIyMjItMjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyJyBP UgorCQkJCQkJCQkJZ3VpZF9maWVsZCA8PSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTEnIE9SCisJCQkJCQkJCQlndWlkX2ZpZWxkIDw9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0z NTM0MzNhMjMxM2UnOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00g Z3VpZDEgV0hFUkUgZ3VpZF9maWVsZCA9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNh MjMxM2UnIE9SCisJCQkJCQkJZ3VpZF9maWVsZCA9ICcxMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMSc7CisKIC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyBndWlkMShndWlkX2ZpZWxk KSBWQUxVRVMoJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMScpOwogCi0tIAoy LjM5LjMgKEFwcGxlIEdpdC0xNDYpCgo= --0000000000001524e2062026797d--