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.96) (envelope-from ) id 1vvyDr-00D6Io-0T for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Feb 2026 13:49:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvyDp-003Yd0-2a for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Feb 2026 13:49:37 +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.96) (envelope-from <3danissimo@gmail.com>) id 1vvyDo-003Ycq-2r for pgsql-hackers@lists.postgresql.org; Fri, 27 Feb 2026 13:49:37 +0000 Received: from mail-yw1-x1130.google.com ([2607:f8b0:4864:20::1130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1vvyDf-00000001VKw-43y3 for pgsql-hackers@lists.postgresql.org; Fri, 27 Feb 2026 13:49:36 +0000 Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-7986fb839f5so17691477b3.0 for ; Fri, 27 Feb 2026 05:49:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772200168; cv=none; d=google.com; s=arc-20240605; b=JAweAwSY4RM88YIvaDflIeDluFKATDQ7nbaOHB5wh6eJmw64Vz1qJ05nVQRK2qFztD EZ3cE9rYfvKlL5D8Bj4WmN/IOxooNI5He4d94OXw7rRwKKT2GiLEJJZQQVtkm7+qsChx +DS7JaLKgWJxmzRc3D8RmgComBjkCqLzyuqaTgTcAV9u/bQf65mcygla75Rkk18oRgk8 6bz9NPcVg6ReqlOaSsBdOCYcvwc8YmXctwoUz0IaVzYihT5nNOjrHndgNfe0mjmSN2qy V57192n6feGu7dLOc32g6xO5sjOf8CGCTf17hINtLx91UyczedOHzWzbNN90x4KoM9bv Owjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=uIwaCTNqfJui8ZhB/Ih3hSYvEpjx4Lwt0vzgZMCykX0=; fh=BJU8E0eYecC1i/3NULELbekPCgaSfKy2iTJ1ZzeGoqo=; b=Kr50QtE+hs8aPhqiTuoAkIaGb+Oa6ylyr8t+uxv4QHJQW9FnbyiQPUaU3svG8+IrGu 8s58NuhuZ/ye97hps1tiokhmHtiOJ86XO2k6GBaIxTHH93vPoR/cZ1Ax6OeXgobn7y+O ngs2T8SI4eVAgtE9u9KHGSCQgT9SOeYaTEnGfrCWr9d/8Ix/7AdRLzcQ84g/yD+2qz72 IWG7cp5K+nNZ9T9cUEQaStP/2P4IODYEsCJqmPmZvBcwEQBpWz1lWcnYveq9lvRGf6dG DMld1atqgkKSMFHS075vm91AsYU7t+k0RUDfvnmnA/dXNaPwVRJX1kiN9D5SONdla+4p PUjw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772200168; x=1772804968; 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=uIwaCTNqfJui8ZhB/Ih3hSYvEpjx4Lwt0vzgZMCykX0=; b=HZtrRlE8/Ip98NgbJbTndu19rzJ+vKZHJ/zUZFOepVoiYXR475J6m9l9umqxuVparF QA42WXcsRVlXXWRK+BKZ/+InaQhjq7SKvm3CR08nFUnzv3M+HaNTMg4eRf0cOcrN1JwE 1F2oD/WcMWgp4MEbVPDzPGgvWFkACepXs9E3ZjyTJNTnt6ByG4wqyCF3ZVKdtcQ8HO0H bwyG/TQG2g0FTa4crUCxL/M4UoGnB57omGW5pimLZt+BC1ugwNdBlDr084rI9Nwf+ELa CcTh5AMpy1C55dEM+rmnbYlVXD3rgjqXGNxnHdI4WeEney/T+ZsLr6xPRqeIsm9Se3Im NuNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772200168; x=1772804968; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uIwaCTNqfJui8ZhB/Ih3hSYvEpjx4Lwt0vzgZMCykX0=; b=Epns6yHMuRvk0ONilSwTJjqHhu24zuZtvGADJstyYo+g7Rcd4+4iZMXnCtty3Bd02d +r7tkopwMQ52nsPc0IdJX8sNr+0z5l9zKiyFAiAgBqc52k4KlUPhOuWJxU8jJ36irE4s 1fm0kufmHfGNoCn6Tlj5EpDx6dflCJJpswuRwrvNo8fZoEbRcYT6tQrqQJALJCXI1WuP uApDXyQ0uJwh0tcweV4rBYZXTOj5VZsT71zDMPNcpSg0tqbPbAS67YzrAVmChIzxSEOb qVvY4l17+IwhEURiGNK3Sib2bvgcln4mm/h1nLN2q/KtyQlpoSymMxhliuJyU0Arnr/v P5+Q== X-Forwarded-Encrypted: i=1; AJvYcCXs5xkPW11RwRd2IEjV+LLtCptJYHsQnaf4+Rpn6gAvkfZQNX3nuGvMaSZoIpW/2km6650Bj5tu21vRaknl@lists.postgresql.org X-Gm-Message-State: AOJu0YxbuE2M5mdsESjXVxF9IERwvk7Ct5TdcqI8uPTymaKMnnjRSmWl aZhNFw7aS90NKCKPzcKQUNK+co5hnrAHGT1dWfh/zZU1Eh0zfj75MCesZottWbsddNmBrft1jkc VsfE5t2Z1Ap+Wj/VFRHpgrKERJZd9n4s= X-Gm-Gg: ATEYQzyDIR5ArOBPKDiq15uVp0ttuNZuqb+wAyc+Sow81ScVPSK4HHJWSba8YVwFTYR FQ8cEYw7ei4h9IGcpjZi98EYoE+84sQ+l/pMKyS9GqWnjFv8sEY+AJFZP4EFZfa+zUVC46Tglcb svGXGIdBE/i3EcF/Vi8eR22P7/WsLiPsNJF2ox/c12d2wuxL+UMW2/X+plAHAaIMIfJ3V32bIXm ZJdx5BiGC5gY+eDvv9NnWFCS4pVi1MC64eNfOLizlqlCjejpa+ffLXZtr5GhjheEwKVL/Rb5Ncw zOf02MEN X-Received: by 2002:a05:690c:e3cb:b0:798:77ee:cc0b with SMTP id 00721157ae682-7988561eb52mr22012407b3.64.1772200168178; Fri, 27 Feb 2026 05:49:28 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Fri, 27 Feb 2026 20:49:15 +0700 X-Gm-Features: AaiRm53QqEqtMLJpf3tG0jRxg6Iw5s4s8DWnUZqGO9hwB7cYANJqysC7680ozMw Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000007f33bc064bce81d8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f33bc064bce81d8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Thu, Feb 26, 2026 at 6:59=E2=80=AFAM Masahiko Sawada wrote: > > For example, if users want to disable all parallel queries, they can do > that by setting max_parallel_workers to 0. If parallel vacuum workers > for autovacuums are taken from max_worker_processes pool (i.e., > without max_paralle_workers limit), users would need to set both > max_parallel_workers and autovacuum_max_parallel_workers to 0. > This is kinda off-topic already, but I really want to clarify this question= . If parallel a/v workers are not limited by max_parallel_workers and the user wants to disable all parallel operations, it is still enough to set max_parallel_workers to 0. In this case parallel a/v could not acquire any workers from bgworkers pool, and thus the user's goal is reached (and there is no need to set autovacuum_max_parallel_workers to 0). **Comments on the 0002 patch** > > + /* Worker usage stats for > parallel autovacuum. */ > + appendStringInfo(&buf, > + > _("parallel index vacuum: %d workers were planned, %d workers were > reserved and %d workers were launched in total\n"), > + > vacrel->workers_usage.vacuum.nplanned, > + > vacrel->workers_usage.vacuum.nreserved, > + > vacrel->workers_usage.vacuum.nlaunched); > > These log messages need to take care of plural forms but it seems to > be too long if we use errmsg_plural() for each number. So how about > something like: > > parallel workers: index: %d planned, %d reserved, %d launched in total > parallel workers: cleanup %d planned, %d reserved, %d launched > > (Index cleanup is executed at most once so we don't need "in total" in > the message.) Oh, I forgot about plural form preservation. Agree with your suggestion. **Comments on the 0003 patch** > > +typedef struct CostParamsData > +{ > + double cost_delay; > + int cost_limit; > + int cost_page_dirty; > + int cost_page_hit; > + int cost_page_miss; > +} CostParamsData; > > The name CostParamsData sounds too generic and I guess it could > conflict with optimizer-related struct names in the future. How about > renaming it to VacuumDelayParams? I agree with the idea to rename this structure. But maybe we should rename it to "VacuumCostParams"? This name conveys the contents of the structure better, because enabling these parameters is called "VacuumCostActive". > + SpinLockAcquire(&pv_shared_cost_params->mutex); > + > + shared_params_data =3D pv_shared_cost_params->params_data; > + > + VacuumCostDelay =3D shared_params_data.cost_delay; > + VacuumCostLimit =3D shared_params_data.cost_limit; > + VacuumCostPageDirty =3D shared_params_data.cost_page_dirty; > + VacuumCostPageHit =3D shared_params_data.cost_page_hit; > + VacuumCostPageMiss =3D shared_params_data.cost_page_miss; > + > + SpinLockRelease(&pv_shared_cost_params->mutex); > > If we copy the shared values in pv_shared_cost_params, we should > release the spinlock earlier, i.e., before updating VacuumCostXXX > variables. But I don't think we would even need to set these values in > the local variables in this case as updating 4 local variables is > fairly cheap. > Do you mean that we can release spinlock because we already copied the valu= es from the shared state to the local variable "shared_params_data"? I added t= his variable as an alias for the long string "pv_shared_cost_params->params_dat= a" and I guess that compiler will get rid of it. But now it doesn't seem like a good solution to me anymore. I'll get rid of the local variable and copy the values directly from the shared state (under spinlock). > --- > + FillCostParamsData(&local_params_data); > + SpinLockAcquire(&pv_shared_cost_params->mutex); > + > + if (CostParamsDataEqual(pv_shared_cost_params->params_data, > + local_params_dat= a)) > + { > > IIUC it stores cost-based vacuum delay parameters into the > local_params_data only for using CostParamsDataEqual() macro. I think > it's better to directly compare values in pv_shared_cost_params and > the cost-based vacuum delay parameters. I agree. > > > How about renaming it to use_shared_delay_params? I think it conveys > > > better what the field is used for. > > > > I think that we should leave this name, because in the future some othe= r > > behavior differences may occur between manual VACUUM and autovacuum. > > If so, we will already have an "am_autovacuum" field which we can use i= n > > the code. > > The existing logic with the "am_autovacuum" name is also LGTM - we shou= ld > > use shared delay params only because we are running parallel autovacuum= . > > It may occur but we can change the field name when it really comes. > > I'm slightly concerned that we've been using am_xxx variables in a > different way. For instance, am_walsender is a global variable that is > set to true only in wal sender processes. Also we have a bunch of > AmXXProcess() macros that checks the global variable MyBackendType, to > check the kinds of the current process. That is, the subject of 'am' > is typically the process, I guess. On the other hand, > am_parallel_autovacuum is stored in DSM space and indicates whether a > parallel vacuum is invoked by manual VACUUM or autovacuum. Yeah, I agree that "am_xxx" is not the best choice. What about a simple "bool is_autovacuum"? **Comments on the 0004 patch** > If we write the log "%d parallel autovacuum workers have been > released" in AutoVacuumReleaseParallelWorkres(), can we simplify both > tests (4 and 5) further? > It won't help the 4th test, because ReleaseParallelWorkers is called due to both ERROR and shmem_exit, but we want to be sure that workers are released in the try/catch block (i.e. before the shmem_exit). I thought that we could pass some additional info to the "ReleaseAllParallelWorkers" such as "bool error_occured", but I decided not to do so. Also, I don't know whether the 5th test needs this log at all, because in the end we are checking the number of free parallel workers. If a killed a/v leader doesn't release parallel workers, we'll notice it. > + if (nworkers > 0) > + > INJECTION_POINT("autovacuum-leader-before-indexes-processing", NULL); > > I think it's better to use #ifdef USE_INJECTION_POINTS here. > Agree. I'll also fix it in vacuumlazy.c > +#ifdef USE_INJECTION_POINTS > +/* > + * Log values of the related to cost-based delay parameters. It is used = for > > s/values of the related to/values related to/ > OK > + * testing purpose. > + */ > +static void > +parallel_vacuum_report_cost_based_params(void) > +{ > + StringInfoData buf; > + > + /* Simulate config reload during normal processing */ > + pg_atomic_add_fetch_u32(VacuumActiveNWorkers, 1); > + vacuum_delay_point(false); > + pg_atomic_sub_fetch_u32(VacuumActiveNWorkers, 1); > > Calling vacuum_delay_point() here feels a bit arbitrary to me. Since > parallel vacuum workers are calling > parallel_vacuum_report_cost_based_params() after > parallel_vacuum_process_safe_indexes(), I think we don't necessarily > call vacuum_delay_point() here. > Sure! It is left from the previous implementation of the test. I'll remove this call. > + appendStringInfo(&buf, "Vacuum cost-based delay parameters of > parallel worker:\n"); > + appendStringInfo(&buf, "vacuum_cost_limit =3D %d\n",vacuum_cost_l= imit); > + appendStringInfo(&buf, "vacuum_cost_delay =3D %g\n", vacuum_cost_= delay); > + appendStringInfo(&buf, "vacuum_cost_page_miss =3D %d\n", > VacuumCostPageMiss); > + appendStringInfo(&buf, "vacuum_cost_page_dirty =3D %d\n", > VacuumCostPageDirty); > + appendStringInfo(&buf, "vacuum_cost_page_hit =3D %d\n", > VacuumCostPageHit); > > I'd write these messages directly in elog() instead of using > StringInfoData, which is simpler and can save palloc()/pfree(). > OK > + ereport(DEBUG2, errmsg("%s", buf.data)); > > Let's use elog() instead of ereport(). > I suppose this is suggested because we don't want to translate error messages of DEBUG level. Did I understand you correctly? > +# Create role with pg_signal_autovacuum_worker for terminating > autovacuum worker. > +$node->safe_psql('postgres', qq{ > + CREATE ROLE regress_worker_role; > + GRANT pg_signal_autovacuum_worker TO regress_worker_role; > + SET ROLE regress_worker_role; > +}); > + > +$node->safe_psql('postgres', qq{ > + SELECT pg_terminate_backend('$av_pid'); > +}); > > These two safe_psql calls use separate connections, meaning that > pg_terminate_backend() is executed by the superuser rather than > regress_worker_role. I think we don't need to create the > regrss_worker_role and we can use the superuser in this test case. > Hm, looks like another one piece of code from my previous attempts to implement this test. I'll remove it. > We would add more autovacuum related tests to the test_autovacuum > directory in the future. Given that the 001_basic.pl focuses on > parallel vacuum tests, how about renaming it to 001_parallel_vacuum.pl > or something? > Agree, I'll rename it. > > This time I'll try something experimental - besides the patches I'll al= so > > post differences between corresponding patches from v20 and v21. > > I.e. you can apply v20--v21-diff-for-0001 on the v20-0001 patch and > > get the v21-0001 patch. There are a lot of changes, so I guess it will > > help you during review. Please, let me know whether it is useful for y= ou. > > It was helpful to easily see the changes from the previous version. Thank= you! > I'm glad to hear it :) I will keep this tradition alive. Thank you very much for the review! Please, see updated set of patches and diffs between v21 and v22. -- Best regards, Daniil Davydov --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0004-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v22-0004-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzovj1 RnJvbSA2OGRiNTZhOTUwMzI1MThiZjUyNzM3NmUxNTI1NDBjYzExZGRiYjMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjIgNC81XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQ5ICsrKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDI4ICsrCiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlICAgfCAgIDIgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vTWFrZWZpbGUgICAgIHwgIDI4ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS9tZXNvbi5idWlsZCAgfCAgMzYgKysKIC4uLi90LzAwMV9wYXJhbGxlbF9hdXRv dmFjdXVtLnBsICAgICAgICAgICAgICB8IDMxOSArKysrKysrKysrKysrKysrKysKIC4uLi90ZXN0 X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsICB8ICAxMiArCiAuLi4vbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMgfCAgNDEgKysrCiAuLi4vdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sICAgfCAgIDMgKwogMTMgZmlsZXMgY2hh bmdlZCwgNTMwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1 dG92YWN1dW0ucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1 bS5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDkxYmUyNTAy YzA5Li42NDA3YzEwNTI0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MTUxLDYgKzE1MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCisjaW5j bHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfcnVzYWdlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0 YW1wLmgiCkBAIC04NjksNiArODcwLDE0IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws IGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJbGF6eV9jaGVja193cmFwYXJvdW5kX2ZhaWxz YWZlKHZhY3JlbCk7CiAJZGVhZF9pdGVtc19hbGxvYyh2YWNyZWwsIHBhcmFtcy5ud29ya2Vycyk7 CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qCisJICogVHJpZ2dlciBpbmplY3Rp b24gcG9pbnQsIGlmIHBhcmFsbGVsIGF1dG92YWN1dW0gaXMgYWJvdXQgdG8gYmUgc3RhcnRlZC4K KwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIFBhcmFsbGVsVmFjdXVt SXNBY3RpdmUodmFjcmVsKSkKKwkJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLXN0YXJ0LXBh cmFsbGVsLXZhY3V1bSIsIE5VTEwpOworI2VuZGlmCisKIAkvKgogCSAqIENhbGwgbGF6eV9zY2Fu X2hlYXAgdG8gcGVyZm9ybSBhbGwgcmVxdWlyZWQgaGVhcCBwcnVuaW5nLCBpbmRleAogCSAqIHZh Y3V1bWluZywgYW5kIGhlYXAgdmFjdXVtaW5nIChwbHVzIHJlbGF0ZWQgcHJvY2Vzc2luZykKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDI3YTYxMjBiMGUzLi43OGNjZmVk ZTAzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0zOSw2ICszOSw3 IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAKQEAgLTMwNiw2ICszMDcsMTAgQEAgc3RhdGljIGJvb2wgcGFyYWxs ZWxfdmFjdXVtX2luZGV4X2lzX3BhcmFsbGVsX3NhZmUoUmVsYXRpb24gaW5kcmVsLCBpbnQgbnVt X2luZGUKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVs X3ZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogCisjaWZkZWYgVVNFX0lOSkVDVElP Tl9QT0lOVFMKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJhbGxlbF92YWN1dW1fcmVwb3J0X2Nvc3Rf YmFzZWRfcGFyYW1zKHZvaWQpOworI2VuZGlmCisKIC8qCiAgKiBUcnkgdG8gZW50ZXIgcGFyYWxs ZWwgbW9kZSBhbmQgY3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gIFRoZW4gaW5pdGlhbGl6ZQog ICogc2hhcmVkIG1lbW9yeSBzdGF0ZS4KQEAgLTkxOCw2ICs5MjMsMTkgQEAgcGFyYWxsZWxfdmFj dXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVt X2luZGV4X3NjYW4KIAkJCQkJCQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkLCBud29ya2Vy cykpKTsKIAl9CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qCisJICogVG8gYmUg YWJsZSB0byBleGVyY2lzZSB3aGV0aGVyIGFsbCByZXNlcnZlZCBwYXJhbGxlbCB3b3JrZXJzIGFy ZSBiZWluZworCSAqIHJlbGVhc2VkIGFueXdheSwgYWxsb3cgaW5qZWN0aW9uIHBvaW50cyB0byB0 cmlnZ2VyIGEgZmFpbHVyZSBhdCB0aGlzCisJICogcG9pbnQuCisJICoKKwkgKiBUaGlzIGluamVj dGlvbiBwb2ludCBpcyBhbHNvIHVzZWQgdG8gd2FpdCB1bnRpbCBwYXJhbGxlbCB3b3JrZXJzCisJ ICogZmluaXNoZXMgdGhlaXIgcGFydCBvZiBpbmRleCBwcm9jZXNzaW5nLgorCSAqLworCWlmIChu d29ya2VycyA+IDApCisJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3Jl LWluZGV4ZXMtcHJvY2Vzc2luZyIsIE5VTEwpOworI2VuZGlmCisKIAkvKiBWYWN1dW0gdGhlIGlu ZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCkBAIC0xMjk1LDYg KzEzMTMsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCS8qIFByb2Nlc3MgaW5kZXhlcyB0byBwZXJmb3JtIHZhY3V1bS9jbGVhbnVwICov CiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKCZwdnMpOwogCisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwkvKgorCSAqIElmIHdlIGFyZSBwYXJhbGxlbCBhdXRvdmFj dXVtIHdvcmtlciwgd2UgY2FuIGNvbnN1bWUgZGVsYXkgcGFyYW1ldGVycworCSAqIGR1cmluZyBp bmRleCBwcm9jZXNzaW5nICh2aWEgdmFjdXVtX2RlbGF5X3BvaW50IGNhbGwpLiBUaGlzIGxvZ2dp bmcKKwkgKiBhbGxvd3MgdGVzdHMgdG8gZW5zdXJlIHRoaXMuCisJICovCisJaWYgKHNoYXJlZC0+ aXNfYXV0b3ZhY3V1bSkKKwkJcGFyYWxsZWxfdmFjdXVtX3JlcG9ydF9jb3N0X2Jhc2VkX3BhcmFt cygpOworI2VuZGlmCisKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxs ZWwgZXhlY3V0aW9uICovCiAJYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKQEAg LTEzNDcsMyArMTM3NSwyNCBAQCBwYXJhbGxlbF92YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKQogCQkJcmV0dXJuOwogCX0KIH0KKworI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisv KgorICogTG9nIHZhbHVlcyByZWxhdGVkIHRvIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFt ZXRlcnMuIEl0IGlzIHVzZWQgZm9yCisgKiB0ZXN0aW5nIHB1cnBvc2UuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3JlcG9ydF9jb3N0X2Jhc2VkX3BhcmFtcyh2b2lk KQoreworCWNvbnN0IGNoYXIgKm1zZ19mb3JtYXQgPQorCQlfKCJQYXJhbGxlbCBhdXRvdmFjdXVt IHdvcmtlciBjb3N0IHBhcmFtczogY29zdF9saW1pdD0lZCwgY29zdF9kZWxheT0lZywgY29zdF9w YWdlX21pc3M9JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwgY29zdF9wYWdlX2hpdD0lZCIpOworCisJ ZWxvZyhERUJVRzIsCisJCSBtc2dfZm9ybWF0LAorCQkgdmFjdXVtX2Nvc3RfbGltaXQsCisJCSB2 YWN1dW1fY29zdF9kZWxheSwKKwkJIFZhY3V1bUNvc3RQYWdlTWlzcywKKwkJIFZhY3V1bUNvc3RQ YWdlRGlydHksCisJCSBWYWN1dW1Db3N0UGFnZUhpdCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMGQ3OGQwMmJkMDkuLjdiMjRhNWQ2ZTY3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMjQ5NSwxMiArMjQ5NSwyMCBAQCBkb19hdXRv dmFjdXVtKHZvaWQpCiAJCX0KIAkJUEdfQ0FUQ0goKTsKIAkJeworCQkJaW50CW5yZXNlcnZlZF93 b3JrZXJzID0gYXZfbndvcmtlcnNfcmVzZXJ2ZWQ7CisKIAkJCS8qCiAJCQkgKiBQYXJhbGxlbCBh dXRvdmFjdXVtIGNhbiByZXNlcnZlIHBhcmFsbGVsIHdvcmtlcnMuIE1ha2Ugc3VyZQogCQkJICog dGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQuCiAJCQkgKi8KIAkJCUF1dG9W YWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7CiAKKwkJCWlmIChucmVzZXJ2ZWRfd29y a2VycyA+IDApCisJCQkJZXJlcG9ydChERUJVRzIsCisJCQkJCQkoZXJybXNnKCIlZCBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYWZ0ZXIgb2NjdXJlZCBlcnJv ciIsCisJCQkJCQkJCW5yZXNlcnZlZF93b3JrZXJzKSwKKwkJCQkJCSBlcnJoaWRlY29udGV4dCh0 cnVlKSkpOworCiAJCQkvKgogCQkJICogQWJvcnQgdGhlIHRyYW5zYWN0aW9uLCBzdGFydCBhIG5l dyBvbmUsIGFuZCBwcm9jZWVkIHdpdGggdGhlCiAJCQkgKiBuZXh0IHRhYmxlIGluIG91ciBsaXN0 LgpAQCAtMzQ2NSw2ICszNDczLDIxIEBAIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3Jr ZXJzKHZvaWQpCiAJQXNzZXJ0KGF2X253b3JrZXJzX3Jlc2VydmVkID09IDApOwogfQogCisvKgor ICogR2V0IG51bWJlciBvZiBmcmVlIGF1dG92YWN1dW0gcGFyYWxsZWwgd29ya2Vycy4KKyAqLwor dWludDMyCitBdXRvVmFjdXVtR2V0RnJlZVBhcmFsbGVsV29ya2Vycyh2b2lkKQoreworCXVpbnQz MgkJbmZyZWVfd29ya2VyczsKKworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX1NI QVJFRCk7CisJbmZyZWVfd29ya2VycyA9IEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVs V29ya2VyczsKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKKworCXJldHVybiBuZnJl ZV93b3JrZXJzOworfQorCiAvKgogICogYXV0b3ZhY19pbml0CiAgKgkJVGhpcyBpcyBjYWxsZWQg YXQgcG9zdG1hc3RlciBpbml0aWFsaXphdGlvbi4KQEAgLTM2MzMsNSArMzY1NiwxMCBAQCBhZGp1 c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKQog CUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9IE1heChuZnJlZV93b3Jr ZXJzLCAwKTsKIAlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKKwllcmVwb3J0KERFQlVHMiwKKwkJCShlcnJt c2coIm51bWJlciBvZiBmcmVlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8g JXUgZHVlIHRvIGNvbmZpZyByZWxvYWQiLAorCQkJCQlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQ YXJhbGxlbFdvcmtlcnMpLAorCQkJIGVycmhpZGVjb250ZXh0KHRydWUpKSk7CisKIAlMV0xvY2tS ZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgK aW5kZXggZjM3ODNhZmI1MWIuLjUyYmUyNjBlMTVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uaApAQCAtNjYsNiArNjYsNyBAQCBleHRlcm4gYm9vbCBBdXRvVmFjdXVtUmVxdWVzdFdv cmsoQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZSB0eXBlLAogZXh0ZXJuIHZvaWQJQXV0b1ZhY3V1bVJl c2VydmVQYXJhbGxlbFdvcmtlcnMoaW50ICpud29ya2Vycyk7CiBleHRlcm4gdm9pZCBBdXRvVmFj dXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpOwogZXh0ZXJuIHZvaWQgQXV0 b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCk7CitleHRlcm4gdWludDMyIEF1 dG9WYWN1dW1HZXRGcmVlUGFyYWxsZWxXb3JrZXJzKHZvaWQpOwogCiAvKiBzaGFyZWQgbWVtb3J5 IHN0dWZmICovCiBleHRlcm4gU2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZvaWQpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZp bGUKaW5kZXggNDRjNzE2M2MxY2QuLjkzN2RiYjY0ZmQyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTE2LDYg KzE2LDcgQEAgU1VCRElSUyA9IFwKIAkJICBwbHNhbXBsZSBcCiAJCSAgc3BnaXN0X25hbWVfb3Bz IFwKIAkJICB0ZXN0X2FpbyBcCisJCSAgdGVzdF9hdXRvdmFjdXVtIFwKIAkJICB0ZXN0X2JpbmFy eWhlYXAgXAogCQkgIHRlc3RfYml0bWFwc2V0IFwKIAkJICB0ZXN0X2Jsb29tZmlsdGVyIFwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkCmluZGV4IDI2MzRhNTE5OTM1Li41YWM4ZDg3NzAyZCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkCkBAIC0xNiw2ICsxNiw3IEBAIHN1YmRpcigncGxzYW1wbGUnKQogc3ViZGlyKCdzcGdp c3RfbmFtZV9vcHMnKQogc3ViZGlyKCdzc2xfcGFzc3BocmFzZV9jYWxsYmFjaycpCiBzdWJkaXIo J3Rlc3RfYWlvJykKK3N1YmRpcigndGVzdF9hdXRvdmFjdXVtJykKIHN1YmRpcigndGVzdF9iaW5h cnloZWFwJykKIHN1YmRpcigndGVzdF9iaXRtYXBzZXQnKQogc3ViZGlyKCd0ZXN0X2Jsb29tZmls dGVyJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRp Z25vcmUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTZlMTdmNWEyYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKQEAg LTAsMCArMSwyIEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3RvcmllcworL3RtcF9jaGVjay8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMjU0YzUzYTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKQEAgLTAsMCArMSwyOCBAQAor IyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQorCitQR0ZJTEVERVND ID0gInRlc3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSIK KworTU9EVUxFX2JpZyA9IHRlc3RfYXV0b3ZhY3V1bQorT0JKUyA9IFwKKwkkKFdJTjMyUkVTKSBc CisJdGVzdF9hdXRvdmFjdXVtLm8KKworRVhURU5TSU9OID0gdGVzdF9hdXRvdmFjdXVtCitEQVRB ID0gdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCisKK1RBUF9URVNUUyA9IDEKKworRVhUUkFfSU5T VEFMTCA9IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cworCitleHBvcnQgZW5hYmxl X2luamVjdGlvbl9wb2ludHMKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZp ZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykK K2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtCit0b3BfYnVp bGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxl Lmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsK K2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNv bi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNDQxZTVlNDljZgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxk CkBAIC0wLDAgKzEsMzYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LTIwMjUsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RfYXV0b3ZhY3V1bV9zb3VyY2VzID0gZmls ZXMoCisgICd0ZXN0X2F1dG92YWN1dW0uYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5k b3dzJworICB0ZXN0X2F1dG92YWN1dW1fc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2lu MzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3RfYXV0b3ZhY3V1bScs CisgICAgJy0tRklMRURFU0MnLCAndGVzdF9hdXRvdmFjdXVtIC0gdGVzdCBjb2RlIGZvciBwYXJh bGxlbCBhdXRvdmFjdXVtJyxdKQorZW5kaWYKKwordGVzdF9hdXRvdmFjdXVtID0gc2hhcmVkX21v ZHVsZSgndGVzdF9hdXRvdmFjdXVtJywKKyAgdGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMsCisgIGt3 YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3RfYXV0 b3ZhY3V1bQorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAgJ3Rlc3RfYXV0b3ZhY3V1 bS5jb250cm9sJywKKyAgJ3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCcsCispCisKK3Rlc3RzICs9 IHsKKyAgJ25hbWUnOiAndGVzdF9hdXRvdmFjdXVtJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9z b3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAn OiB7CisgICAgJ2Vudic6IHsKKyAgICAgICAnZW5hYmxlX2luamVjdGlvbl9wb2ludHMnOiBnZXRf b3B0aW9uKCdpbmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdubycsCisgICAgfSwKKyAgICAn dGVzdHMnOiBbCisgICAgICAndC8wMDFfYmFzaWMucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9h dXRvdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFy YWxsZWxfYXV0b3ZhY3V1bS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOWI4MGQzNzFmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0wLDAgKzEsMzE5IEBA CisjIFRlc3QgcGFyYWxsZWwgYXV0b3ZhY3V1bSBiZWhhdmlvcgorCit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5q ZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9u IHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJlZm9yZSBlYWNo IHRlc3Qgd2Ugc2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFi bGUgYW5kCisjIGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuCisKK3N1YiBwcmVwYXJl X2Zvcl9uZXh0X3Rlc3QKK3sKKwlteSAoJG5vZGUsICR0ZXN0X251bWJlcikgPSBAXzsKKworCSRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3Zh YyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwl9KTsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCVVQREFURSB0ZXN0X2F1dG92YWMgU0VUIGNvbF8xID0g JHRlc3RfbnVtYmVyOworCX0pOworfQorCisKK215ICRwc3FsX291dDsKKworbXkgJG5vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJyk7Ciskbm9kZS0+aW5pdDsKKwor IyBDb25maWd1cmUgcG9zdGdyZXMsIHNvIGl0IGNhbiBsYXVuY2ggcGFyYWxsZWwgYXV0b3ZhY3V1 bSB3b3JrZXJzLCBsb2cgYWxsCisjIGluZm9ybWF0aW9uIHdlIGFyZSBpbnRlcmVzdGVkIGluIGFu ZCBhdXRvdmFjdXVtIHdvcmtzIGZyZXF1ZW50bHkKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgcXF7CisJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAyMAorCW1heF9wYXJhbGxl bF93b3JrZXJzID0gMjAKKwltYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9IDIwCisJ YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJbG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMgorCWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKKwlhdXRvdmFjdXVtX25h cHRpbWUgPSAnMXMnCisJbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDAKKwlzaGFyZWRf cHJlbG9hZF9saWJyYXJpZXM9dGVzdF9hdXRvdmFjdXVtCit9KTsKKyRub2RlLT5zdGFydDsKKwor IyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBh cyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0 YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBk ZWZhdWx0LgoraWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykp Cit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGlu c3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVkIGZvciB0ZXN0aW5n Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBFWFRFTlNJT04gdGVz dF9hdXRvdmFjdXVtOworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30pOwor CitteSAkaW5kZXhlc19udW0gPSA0OworbXkgJGluaXRpYWxfcm93c19udW0gPSAxMF8wMDA7Citt eSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMjsKKworIyBDcmVhdGUgdGFibGUgYW5k IGZpbGwgaXQgd2l0aCBzb21lIGRhdGEKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQ1JFQVRFIFRBQkxFIHRlc3RfYXV0b3ZhYyAoCisJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwK KwkJY29sXzEgSU5URUdFUiwgIGNvbF8yIElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQg SU5URUdFUgorCSkgV0lUSCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2Vycyk7CisKKwlJTlNFUlQgSU5UTyB0ZXN0X2F1dG92YWMKKwlTRUxF Q1QKKwkJZyBBUyBjb2wxLAorCQlnICsgMSBBUyBjb2wyLAorCQlnICsgMiBBUyBjb2wzLAorCQln ICsgMyBBUyBjb2w0CisJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJGluaXRpYWxfcm93c19udW0p IEFTIGc7Cit9KTsKKworIyBDcmVhdGUgc3BlY2lmaWVkIG51bWJlciBvZiBiLXRyZWUgaW5kZXhl cyBvbiB0aGUgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJRE8gXCRc JAorCURFQ0xBUkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElOIDEuLiRpbmRleGVz X251bSBMT09QCisJCQlFWEVDVVRFIGZvcm1hdCgnQ1JFQVRFIElOREVYIGlkeF9jb2xfXCVzIE9O IHRlc3RfYXV0b3ZhYyAoY29sX1wlcyk7JywgaSwgaSk7CisJCUVORCBMT09QOworCUVORCBcJFwk OworfSk7CisKKyMgVGVzdCAxIDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQg YXBwcm9wcmlhdGUgcmVsb3B0aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8g cHJvY2VzcyBpdCBpbiBwYXJhbGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbi4KKyMgQWxz byBjaGVjayB3aGV0aGVyIGFsbCByZXF1ZXN0ZWQgd29ya2VyczoKKyMgCTEpIGxhdW5jaGVkCisj IAkyKSBjb3JyZWN0bHkgcmVsZWFzZWQKKworcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAx KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0 X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQg dW50aWwgdGhlIHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29tcGxldGVkLiBBdCB0 aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgcGFy YWxsZWwgd29ya2VycyBoYXMgYmVlbiBzdGFydGVkLgorJGxvZ19zdGFydCA9ICRub2RlLT53YWl0 X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFjdXVtOiAyIHBsYW5uZWQs IDIgcmVzZXJ2ZWQsIDIgbGF1bmNoZWQvLAorCSRsb2dfc3RhcnQKKyk7CisKKyRwc3FsX291dCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGdldF9wYXJhbGxlbF9h dXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOworfSk7CitpcygkcHNxbF9vdXQsIDIwLCAnQWxsIHBh cmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxlYWRlcicpOworCisjIFRl c3QgMjoKKyMgQ2hlY2sgd2hldGhlciBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBjYW4gcHJv cGFnYXRlIGNvc3QtYmFzZWQgcGFyYW1ldGVycworIyB0byBwYXJhbGxlbCB3b3JrZXJzLgorCitw cmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDIpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1z dGFydC1wYXJhbGxlbC12YWN1dW0nLCAnd2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycsICd3 YWl0Jyk7CisKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnMgPSAxLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdh aXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0ZWQKKyRub2RlLT53YWl0X2Zvcl9l dmVudCgKKwknYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVs LXZhY3V1bScKKyk7CisKKyMgUmVsb2FkIGNvbmZpZyAtIGxlYWRlciB3b3JrZXIgbXVzdCB1cGRh dGUgaXRzIG93biBwYXJhbWV0ZXJzIGR1cmluZyBpbmRleGVzCisjIHByb2Nlc3NpbmcKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29z dF9saW1pdCA9IDUwMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfbWlzcyA9 IDEwOworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9kaXJ0eSA9IDEwOworCUFM VEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9oaXQgPSAxMDsKKwlTRUxFQ1QgcGdfcmVs b2FkX2NvbmYoKTsKK30pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12 YWN1dW0nKTsKK30pOworCisjIE5vdyB3YWl0IHVudGlsIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVh ZGVyIGNvbXBsZXRlcyBwcm9jZXNzaW5nIHRhYmxlIChpLmUuCisjIGd1YXJhbnRlZWQgdG8gY2Fs bCB2YWN1dW1fZGVsYXlfcG9pbnQpIGFuZCBsYXVuY2hlcyBwYXJhbGxlbCB3b3JrZXIuCiskbm9k ZS0+d2FpdF9mb3JfZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0b3ZhY3V1bS1s ZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycKKyk7CisKKyMgQ2hlY2sgd2hldGhlciBw YXJhbGxlbCB3b3JrZXIgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgYWxsIHBhcmFtZXRlcnMgZHVyaW5n CisjIGluZGV4IHByb2Nlc3NpbmcKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAor CXFyL1BhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PTUw MCwgY29zdF9kZWxheT0yLCAvIC4KKwlxci9jb3N0X3BhZ2VfbWlzcz0xMCwgY29zdF9wYWdlX2Rp cnR5PTEwLCBjb3N0X3BhZ2VfaGl0PTEwLywKKwkkbG9nX3N0YXJ0CispOworCisjIENsZWFudXAK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfd2FrZXVwKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7 CisKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tc3RhcnQtcGFy YWxsZWwtdmFjdXVtJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFj dXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisKKwlBTFRFUiBUQUJMRSB0 ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzKTsKK30pOworCisjIFRlc3QgMzoKKyMgVGVzdCBhZGp1c3RtZW50 IG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBudW1iZXIgd2hlbiBjaGFuZ2luZworIyBhdXRvdmFj dXVtX21heF9wYXJhbGxlbF93b3JrZXJzIHBhcmFtZXRlcgorCitwcmVwYXJlX2Zvcl9uZXh0X3Rl c3QoJG5vZGUsIDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4 ZXMtcHJvY2Vzc2luZycsICd3YWl0Jyk7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAo YXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworJG5vZGUtPndhaXRfZm9yX2V2ZW50 KAorCSdhdXRvdmFjdXVtIHdvcmtlcicsCisJJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRl eGVzLXByb2Nlc3NpbmcnCispOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CUFMVEVSIFNZU1RFTSBTRVQgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDE7CisJ U0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9KTsKKworIyBTaW5jZSAyIHBhcmFsbGVsIHdvcmtl cnMgYWxyZWFkeSBsYXVuY2hlZCBhbmQgd2lsbCBiZSByZWxlYXNlZCBpbiB0aGUgZnV0dXJlLAor IyB3ZSBhcmUgZXhwZWN0aW5nIHRoYXQgOgorIyAxKSBudW1iZXIgb2YgZnJlZSB3b3JrZXJzIHdp bGwgYmUgJzAnIGFmdGVyIGNvbmZpZyByZWxvYWQKKyMgMikgbnVtYmVyIG9mIGZyZWUgd29ya2Vy cyB3aWxsIGJlICcxJyBhZnRlciByZWxlYXNpbmcgd29ya2VycworCisjIENoZWNrIHN0YXRlbWVu dCAoMSkKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL251bWJlciBvZiBm cmVlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8gMCBkdWUgdG8gY29uZmln IHJlbG9hZC8sCisJJGxvZ19zdGFydAorKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92YWN1dW0tbGVhZGVy LWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCisjIFdhaXQgdW50aWwgdGhlIGVu ZCBvZiBwYXJhbGxlbCBwcm9jZXNzaW5nCiskbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9yX2xv ZygKKwlxci9wYXJhbGxlbCB3b3JrZXJzOiBpbmRleCB2YWN1dW06IDIgcGxhbm5lZCwgMiByZXNl cnZlZCwgMiBsYXVuY2hlZC8sCisJJGxvZ19zdGFydAorKTsKKworIyBDaGVjayBzdGF0ZW1lbnQg KDIpCiskcHNxbF9vdXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVD VCBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsKK30pOworaXMoJHBzcWxf b3V0LCAxLCAnTnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBpcyBjb25zaXN0ZW50Jyk7 CisKKyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVz LXByb2Nlc3NpbmcnKTsKKwlBTFRFUiBTWVNURU0gU0VUIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVs X3dvcmtlcnMgPSAxMDsKKwlTRUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsKK30pOworCisjIFRlc3Qg NDoKKyMgV2Ugd2FudCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gYmUgcmVsZWFzZWQg ZXZlbiBpZiBsZWFkZXIgZ2V0cyBhbgorIyBlcnJvci4gQXQgZmlyc3QsIHNpbXVsYXRlIHNpdHVh dGlvbiwgd2hlbiBsZWFkZXIgZXhpdHMgZHVlIHRvIGFuIEVSUk9SLgorCitwcmVwYXJlX2Zvcl9u ZXh0X3Rlc3QoJG5vZGUsIDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3Jl LWluZGV4ZXMtcHJvY2Vzc2luZycsICdlcnJvcicpOworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3Zh YyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRsb2dfc3RhcnQgPSAk bm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL2Vycm9yIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IC8gLgorCXFyL2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3Npbmcv LAorCSRsb2dfc3RhcnQKKyk7CisKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAor CXFyLzIgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGFmdGVy IG9jY3VyZWQgZXJyb3IvLAorCSRsb2dfc3RhcnQKKyk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCisj IFRlc3QgNToKKyMgU2FtZSBhcyBhYm92ZSB0ZXN0LCBidXQgc2ltdWxhdGUgc2l0dWF0aW9uLCB3 aGVuIGxlYWRlciBleGl0cyBkdWUgdG8gRkFUQUwuCisKK3ByZXBhcmVfZm9yX25leHRfdGVzdCgk bm9kZSwgNSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScs ICd3YWl0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLWxl YWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJywgJ3dhaXQnKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdh aXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0ZWQgYW5kIHdha2UgdXAgdGhlIGxl YWRlcgorJG5vZGUtPndhaXRfZm9yX2V2ZW50KAorCSdhdXRvdmFjdXVtIHdvcmtlcicsCisJJ2F1 dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJworKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdhdXRvdmFjdXVt LXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworfSk7CisKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgK KwknYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhl cy1wcm9jZXNzaW5nJworKTsKKworbXkgJGF2X3BpZCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXF7CisJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlXSEVSRSBiYWNr ZW5kX3R5cGUgPSAnYXV0b3ZhY3V1bSB3b3JrZXInCisJICBBTkQgd2FpdF9ldmVudCA9ICdhdXRv dmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJworCUxJTUlUIDE7Cit9KTsK KworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgcGdfdGVybWluYXRl X2JhY2tlbmQoJyRhdl9waWQnKTsKK30pOworCiskbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9y X2xvZygKKwlxci90ZXJtaW5hdGluZyBhdXRvdmFjdXVtIHByb2Nlc3MgZHVlIHRvIGFkbWluaXN0 cmF0b3IgY29tbWFuZC8sCisJJGxvZ19zdGFydAorKTsKKworIyBOb3cgaXQgaXMgc2FmZSB0byBj aGVjayB0aGUgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycywgYmVjYXVzZSBldmVuIGlm CisjIGF1dG92YWN1dW0gaXMgdHJ5aW5nIHRvIHZhY3V1bSB0YWJsZSBpbiBwYXJhbGxlbCBtb2Rl IGFnYWluLCB0aGUgbGVhZGVyCisjIHdvcmtlciBjYW5ub3QgZ28gYW55IGZ1cnRoZXIgdGhhbiAi YXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0iIHBvaW50LgorIyBJLmUuIG5vIG9uZSBj YW4gaW50ZXJmZXJlIGFuZCBjaGFuZ2UgdGhlIG51bWJlciBvZiBmcmVlIHBhcmFsbGVsIHdvcmtl cnMuCisKKyRwc3FsX291dCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VM RUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOworfSk7CitpcygkcHNx bF9vdXQsIDEwLCAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhl IGxlYWRlciBhZnRlciBGQVRBTCcpOworCisjIENsZWFudXAKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVt LXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycpOworfSk7CisK KyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1NjQ2ZTBkZWY1Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0x LjAuc3FsCkBAIC0wLDAgKzEsMTIgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQg aXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVj aG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfYXV0b3ZhY3V1bSIgdG8gbG9hZCB0aGlzIGZp bGUuIFxxdWl0CisKKy8qCisgKiBGdW5jdGlvbnMgZm9yIGV4cGVjdGluZyBzaGFyZWQgYXV0b3Zh Y3V1bSBzdGF0ZQorICovCisKK0NSRUFURSBGVU5DVElPTiBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1 bV9mcmVlX3dvcmtlcnMoKQorUkVUVVJOUyBJTlRFR0VSIFNUUklDVAorQVMgJ01PRFVMRV9QQVRI TkFNRScgTEFOR1VBR0UgQzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdGVzdF9hdXRvdmFjdXVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjk1OTYyOWM3Njg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKQEAgLTAsMCArMSw0MSBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogdGVzdF9hdXRvdmFjdXVtLmMKKyAqCQlIZWxwZXJzIHRvIHdyaXRl IHRlc3RzIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIw LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRv dmFjdXVtLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKworI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImZtZ3IuaCIK KyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0u aCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCisKK1BHX01PRFVMRV9NQUdJQzsK KworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtl cnMpOworRGF0dW0KK2dldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycyhQR19GVU5D VElPTl9BUkdTKQoreworCXVpbnQzMgkJbmZyZWVfd29ya2VyczsKKworI2lmbmRlZiBVU0VfSU5K RUNUSU9OX1BPSU5UUworCWVyZXBvcnQoRVJST1IsIGVycm1zZygiaW5qZWN0aW9uIHBvaW50cyBu b3Qgc3VwcG9ydGVkIikpOworI2VuZGlmCisKKwluZnJlZV93b3JrZXJzID0gQXV0b1ZhY3V1bUdl dEZyZWVQYXJhbGxlbFdvcmtlcnMoKTsKKworCVBHX1JFVFVSTl9VSU5UMzIobmZyZWVfd29ya2Vy cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0 X2F1dG92YWN1dW0uY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rl c3RfYXV0b3ZhY3V1bS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4xYjdmYWQyNThmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sCkBAIC0wLDAgKzEsMyBAQAorY29t bWVudCA9ICdUZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0nCitkZWZhdWx0X3ZlcnNp b24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9hdXRvdmFjdXVtJwot LSAKMi40My4wCgo= --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Disposition: attachment; filename="v22-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzovw2 RnJvbSBmNTM1YzYwM2YxMTIzM2Q1YWU2ZWIzY2E0NDEwMjdkNTE5NmUyMGVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUaHUsIDE1IEphbiAyMDI2IDIzOjE1OjQ4ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjIgMy81XSBDb3N0IGJhc2VkIHBhcmFtZXRlcnMgcHJvcGFnYXRpb24gZm9yIHBhcmFsbGVs CiBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAg fCAgMjMgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDE2MCAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8 ICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgICAyICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwppbmRleCAwMzkzMmY0NWM4YS4uNzA4ODI1NDRkMDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jCkBAIC0yNDMwLDggKzI0MzAsMjEgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNf YW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0 QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykK KwkJcmV0dXJuOworCisJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFBv c3NpYmx5IHVwZGF0ZSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMuCisJCSAqCisJCSAqIERv IGl0IGJlZm9yZSBjaGVja2luZyBWYWN1dW1Db3N0QWN0aXZlLCBiZWNhdXNlIGl0cyB2YWx1ZSBt aWdodCBiZQorCQkgKiBjaGFuZ2VkIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKwkJICov CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwor CWlmICghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTI0NDUsNiArMjQ1OCwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBp c19hbmFseXplKQogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAq IElmIHdlIGFyZSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBhbmQgc29tZSBvZiBjb3N0LWJh c2VkCisJCSAqIHBhcmFtZXRlcnMgaGFkIGNoYW5nZWQsIGxldCBvdGhlciBwYXJhbGxlbCB3b3Jr ZXJzIGtub3cuCisJCSAqLworCQlwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxh eV9wYXJhbXMoKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK aW5kZXggODZkOWYyYjc0YzkuLjI3YTYxMjBiMGUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKQEAgLTUzLDYgKzUzLDU5IEBACiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfV0FMX1VTQUdFCQk0CiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJ CTUKIAorLyoKKyAqIEhlbHBlciBmb3IgdGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3R1cmUg KHNlZSBiZWxvdyksIHRvIGF2b2lkCisgKiByZXBldGl0aW9uLgorICovCit0eXBlZGVmIHN0cnVj dCBWYWN1dW1Db3N0UGFyYW1zCit7CisJZG91YmxlCQljb3N0X2RlbGF5OworCWludAkJCWNvc3Rf bGltaXQ7CisJaW50CQkJY29zdF9wYWdlX2RpcnR5OworCWludAkJCWNvc3RfcGFnZV9oaXQ7CisJ aW50CQkJY29zdF9wYWdlX21pc3M7Cit9IFZhY3V1bUNvc3RQYXJhbXM7CisKKyNkZWZpbmUJRmls bFZhY0Nvc3RQYXJhbXMoY29zdF9wYXJhbXMpIFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X2RlbGF5 ID0gdmFjdXVtX2Nvc3RfZGVsYXk7IFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X2xpbWl0ID0gdmFj dXVtX2Nvc3RfbGltaXQ7IFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1 dW1Db3N0UGFnZURpcnR5OyBcCisJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1 bUNvc3RQYWdlSGl0OyBcCisJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX21pc3MgPSBWYWN1dW1D b3N0UGFnZU1pc3MKKworI2RlZmluZSBWYWNDb3N0UGFyYW1zRXF1YWxzKHBhcmFtcykgXAorCSh2 YWN1dW1fY29zdF9kZWxheSA9PSAocGFyYW1zKS5jb3N0X2RlbGF5ICYmIFwKKwkgdmFjdXVtX2Nv c3RfbGltaXQgPT0gKHBhcmFtcykuY29zdF9saW1pdCAmJiBcCisJIFZhY3V1bUNvc3RQYWdlRGly dHkgPT0gKHBhcmFtcykuY29zdF9wYWdlX2RpcnR5ICYmIFwKKwkgVmFjdXVtQ29zdFBhZ2VIaXQg PT0gKHBhcmFtcykuY29zdF9wYWdlX2hpdCAmJiBcCisJIFZhY3V1bUNvc3RQYWdlTWlzcyA9PSAo cGFyYW1zKS5jb3N0X3BhZ2VfbWlzcykKKworLyoKKyAqIFN0cnVjdCBmb3IgY29zdC1iYXNlZCB2 YWN1dW0gZGVsYXkgcmVsYXRlZCBwYXJhbWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCisgKiBhdXRv dmFjdXVtIHdvcmtlciBhbmQgaXRzIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgorICovCit0eXBl ZGVmIHN0cnVjdCBQVlNoYXJlZENvc3RQYXJhbXMKK3sKKwkvKgorCSAqIEVhY2ggdGltZSBsZWFk ZXIgd29ya2VyIHVwZGF0ZXMgaXRzIHBhcmFtZXRlcnMsIGl0IG11c3QgaW5jcmVhc2UKKwkgKiBn ZW5lcmF0aW9uLiBFdmVyeSBwYXJhbGxlbCB3b3JrZXIga2VlcHMgdGhlIGdlbmVyYXRpb24KKwkg KiAoc2hhcmVkX3BhcmFtc19sb2NhbF9nZW5lcmF0aW9uKSBhdCB3aGljaCBpdCBoYWQgbGFzdCB0 aW1lIHJlY2VpdmVkCisJICogcGFyYW1ldGVycyBmcm9tIHRoZSBsZWFkZXIuCisJICoKKwkgKiBJ dCBpcyBlbm91Z2ggZm9yIHdvcmtlciB0byBjb21wYXJlIGl0J3MgbG9jYWxfZ2VuZXJhdGlvbiB3 aXRoIHRoZSBmaWVsZAorCSAqIGJlbG93IHRvIGRldGVybWluZSB3aGV0aGVyIGl0IG5lZWRzIHRv IHJlY2VpdmUgbmV3IHBhcmFtZXRlcnMnIHZhbHVlcy4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMy IGdlbmVyYXRpb247CisKKwlzbG9ja190CQltdXRleDsJCQkvKiBwcm90ZWN0cyBhbGwgZmllbGRz IGJlbG93ICovCisKKwkvKgorCSAqIENvcGllcyBvZiB0aGUgY29ycmVzcG9uZGluZyBjb3N0LWJh c2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZyb20KKwkgKiBhdXRvdmFjdXVtIGxlYWRlciBw cm9jZXNzLgorCSAqLworCVZhY3V1bUNvc3RQYXJhbXMgcGFyYW1zX2RhdGE7Cit9IFBWU2hhcmVk Q29zdFBhcmFtczsKKwogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3 b3JrZXJzLiAgU28gdGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQogICogc2VnbWVudC4KQEAg LTEyMiw2ICsxNzUsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUFZTaGFyZWQKIAogCS8qIFN0YXRpc3Rp Y3Mgb2Ygc2hhcmVkIGRlYWQgaXRlbXMgKi8KIAlWYWNEZWFkSXRlbXNJbmZvIGRlYWRfaXRlbXNf aW5mbzsKKworCS8qCisJICogSWYgJ3RydWUnIHRoZW4gd2UgYXJlIHJ1bm5pbmcgcGFyYWxsZWwg YXV0b3ZhY3V1bS4gT3RoZXJ3aXNlLCB3ZSBhcmUKKwkgKiBydW5uaW5nIHBhcmFsbGVsIG1haW50 ZW5lbmNlIFZBQ1VVTS4KKwkgKi8KKwlib29sCQlpc19hdXRvdmFjdXVtOworCisJLyoKKwkgKiBT dHJ1Y3QgZm9yIHN5bmNpbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBiZXR3 ZWVuCisJICogc3VwcG9ydGl2ZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgd2l0aCBsZWFk ZXIgd29ya2VyLgorCSAqLworCVBWU2hhcmVkQ29zdFBhcmFtcyBjb3N0X3BhcmFtczsKIH0gUFZT aGFyZWQ7CiAKIC8qIFN0YXR1cyB1c2VkIGR1cmluZyBwYXJhbGxlbCBpbmRleCB2YWN1dW0gb3Ig Y2xlYW51cCAqLwpAQCAtMjI0LDYgKzI4OSwxMSBAQCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0 ZQogCVBWSW5kVmFjU3RhdHVzIHN0YXR1czsKIH07CiAKK3N0YXRpYyBQVlNoYXJlZENvc3RQYXJh bXMgKnB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7CisKKy8qIFNlZSBjb21tZW50cyBmb3Ig dGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3R1cmUgZm9yIHRoZSBleHBsYW5hdGlvbi4gKi8K K3N0YXRpYyB1aW50MzIgc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3Rh dGljIGludAlwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxz LCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3Bh cmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBA IC0zOTUsNiArNDY1LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwZ19hdG9taWNfaW5pdF91MzIoJihzaGFy ZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+ aWR4KSwgMCk7CiAKKwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCk7CisKKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCXsKKwkJRmlsbFZhY0Nv c3RQYXJhbXMoJnNoYXJlZC0+Y29zdF9wYXJhbXMucGFyYW1zX2RhdGEpOworCQlwZ19hdG9taWNf aW5pdF91MzIoJnNoYXJlZC0+Y29zdF9wYXJhbXMuZ2VuZXJhdGlvbiwgMCk7CisJCVNwaW5Mb2Nr SW5pdCgmc2hhcmVkLT5jb3N0X3BhcmFtcy5tdXRleCk7CisKKwkJcHZfc2hhcmVkX2Nvc3RfcGFy YW1zID0gJihzaGFyZWQtPmNvc3RfcGFyYW1zKTsKKwl9CisKIAlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfU0hBUkVELCBzaGFyZWQpOwogCXB2cy0+c2hhcmVk ID0gc2hhcmVkOwogCkBAIC01MzksNiArNjIwLDgyIEBAIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVw X2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVw CiAJCQkJCQkJCQkJJnd1c2FnZS0+Y2xlYW51cCk7CiB9CiAKKy8qCisgKiBJZiB3ZSBhcmUgcGFy YWxsZWwgKmF1dG92YWN1dW0qIHdvcmtlciwgY2hlY2sgd2hldGhlciByZWxhdGVkIHRvIGNvc3Qt YmFzZWQKKyAqIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGhhZCBjaGFuZ2VkIGluIHRoZSBsZWFk ZXIgd29ya2VyLiBJZiBzbywKKyAqIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycyB3aWxsIGJlIHVw ZGF0ZWQgdG8gdGhlIHZhbHVlcyB3aGljaCBsZWFkZXIgd29ya2VyCisgKiBpcyBvcGVyYXRpbmcg b24uCisgKgorICogRm9yIG5vbi1hdXRvdmFjdXVtIHBhcmFsbGVsIHdvcmtlciB0aGlzIGZ1bmN0 aW9uIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV91cGRh dGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQoreworCXVpbnQzMgkJcGFyYW1zX2dlbmVyYXRp b247CisKKwlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCS8qIENoZWNrIHdoZXRoZXIg d2UgYXJlIHJ1bm5pbmcgcGFyYWxsZWwgYXV0b3ZhY3V1bSAqLworCWlmIChwdl9zaGFyZWRfY29z dF9wYXJhbXMgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJcGFyYW1zX2dlbmVyYXRpb24gPSBwZ19h dG9taWNfcmVhZF91MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2VuZXJhdGlvbik7CisJQXNz ZXJ0KHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA8PSBwYXJhbXNfZ2VuZXJhdGlvbik7 CisKKwkvKiBSZXR1cm4gaWYgcGFyYW1ldGVycyBoYWQgbm90IGNoYW5nZWQgaW4gdGhlIGxlYWRl ciAqLworCWlmIChwYXJhbXNfZ2VuZXJhdGlvbiA9PSBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25f bG9jYWwpCisJCXJldHVybjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVkX2Nvc3RfcGFy YW1zLT5tdXRleCk7CisKKwlWYWN1dW1Db3N0RGVsYXkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PnBhcmFtc19kYXRhLmNvc3RfZGVsYXk7CisJVmFjdXVtQ29zdExpbWl0ID0gcHZfc2hhcmVkX2Nv c3RfcGFyYW1zLT5wYXJhbXNfZGF0YS5jb3N0X2xpbWl0OworCVZhY3V1bUNvc3RQYWdlRGlydHkg PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRhLmNvc3RfcGFnZV9kaXJ0eTsKKwlW YWN1dW1Db3N0UGFnZUhpdCA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29z dF9wYWdlX2hpdDsKKwlWYWN1dW1Db3N0UGFnZU1pc3MgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PnBhcmFtc19kYXRhLmNvc3RfcGFnZV9taXNzOworCisJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFy ZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisKKwlzaGFy ZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwgPSBwYXJhbXNfZ2VuZXJhdGlvbjsKK30KKworLyoK KyAqIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmcm9tIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVy IGluIG9yZGVyIHRvIHByb3BhZ2F0ZQorICogc29tZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBw YXJhbWV0ZXJzIHRvIHRoZSBzdXBwb3J0aXZlIHdvcmtlcnMuCisgKi8KK3ZvaWQKK3BhcmFsbGVs X3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQoreworCUFzc2VydChB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOworCisJLyogQ2hlY2sgd2hldGhlciB3ZSBhcmUg cnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtICovCisJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFt cyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+bXV0ZXgpOworCisJaWYgKFZhY0Nvc3RQYXJhbXNFcXVhbHMocHZfc2hhcmVkX2Nv c3RfcGFyYW1zLT5wYXJhbXNfZGF0YSkpCisJeworCQkvKgorCQkgKiBXZSBkb24ndCBuZWVkIHRv IHVwZGF0ZSBzaGFyZWQgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1zIGlmCisJCSAqIHRo ZXkgaGF2ZW4ndCBjaGFuZ2VkLgorCQkgKi8KKwkJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRf Y29zdF9wYXJhbXMtPm11dGV4KTsKKwkJcmV0dXJuOworCX0KKworCUZpbGxWYWNDb3N0UGFyYW1z KCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRhKTsKKwlTcGluTG9ja1JlbGVhc2Uo JnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCisJLyoKKwkgKiBJbmNyZWFzZSBnZW5l cmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJhbGxlbCB3b3JrZXJzIGtub3cK KwkgKiB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNvc3QgcGFyYW1zLgorCSAqLwor CXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmdlbmVyYXRp b24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtl ciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAqIHZhY3V1bSBhbmQgaW5kZXgg Y2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3b3JrZXJzLgpAQCAtMTEwNSw2 ICsxMjYyLDkgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihzaGFyZWQtPmNvc3RfYmFsYW5j ZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKTsK IAorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9 ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisKIAkvKiBTZXQgcGFyYWxsZWwgdmFjdXVtIHN0YXRl ICovCiAJcHZzLmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy5uaW5kZXhlcyA9IG5pbmRleGVzOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBmNDBhYmU5MGVkNS4uMGQ3OGQwMmJk MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xNjkwLDcgKzE2OTAsNyBA QCBWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQogCX0KIAllbHNlCiAJewotCQkvKiBNdXN0IGJlIGV4 cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFICovCisJCS8qIE11c3QgYmUgZXhwbGljaXQgVkFDVVVN IG9yIEFOQUxZWkUgb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgKi8KIAkJdmFjdXVtX2Nv c3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJCXZhY3V1bV9jb3N0X2xpbWl0ID0gVmFjdXVt Q29zdExpbWl0OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggZDNkYzRlOGNjNjcuLmIxMDgy OWE5Mzc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDIzLDYgKzQyMyw4IEBAIGV4dGVybiB2 b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCiAJCQkJCQkJCQkJCQli b29sIGVzdGltYXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNhZ2Up OworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1z KHZvaWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9zaGFyZWRfZGVs YXlfcGFyYW1zKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3Nl Z21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICov CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGFlMTA0N2RkZjVkLi4yMGZlMzRmOGNjNyAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIwNjksNiArMjA2OSw3IEBAIFBWSW5kU3Rh dHMKIFBWSW5kVmFjU3RhdHVzCiBQVk9JRAogUFZTaGFyZWQKK1BWU2hhcmVkQ29zdFBhcmFtcwog UFZXb3JrZXJzVXNhZ2UKIFBWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwpAQCAtMzI0OSw2ICszMjUw LDcgQEAgVmFjQXR0clN0YXRzUAogVmFjRGVhZEl0ZW1zSW5mbwogVmFjRXJyUGhhc2UKIFZhY09w dFZhbHVlCitWYWN1dW1Db3N0UGFyYW1zCiBWYWN1dW1QYXJhbXMKIFZhY3V1bVJlbGF0aW9uCiBW YWN1dW1TdG10Ci0tIAoyLjQzLjAKCg== --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v22-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzow83 RnJvbSBlOGVjYmM2NWVmNjFhY2RjOGQzMTg0ZWM5M2FjNGY0ODc3MzU4ZmMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjIgMi81XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCA2MSArKysrKysrKysrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyOSArKysrKysr KysrLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgMjggKysrKysr KysrKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgIDMgKysKIDQg ZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA0YmUyNjdmZjY1Ny4uOTFiZTI1MDJjMDkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0MCw2ICszNDAsMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWludAkJCW51bV9pbmRleF9zY2FuczsKIAlpbnQJ CQludW1fZGVhZF9pdGVtc19yZXNldHM7CiAJU2l6ZQkJdG90YWxfZGVhZF9pdGVtc19ieXRlczsK KworCS8qCisJICogVG90YWwgbnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5IGxhdW5jaGVk IHBhcmFsbGVsIHdvcmtlcnMgZm9yCisJICogaW5kZXggc2NhbnMuCisJICovCisJUFZXb3JrZXJz VXNhZ2Ugd29ya2Vyc191c2FnZTsKIAkvKiBDb3VudGVycyB0aGF0IGZvbGxvdyBhcmUgb25seSBm b3Igc2Nhbm5lZF9wYWdlcyAqLwogCWludDY0CQl0dXBsZXNfZGVsZXRlZDsgLyogIyBkZWxldGVk IGZyb20gdGFibGUgKi8KIAlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJLyogIyBuZXdseSBmcm96ZW4g Ki8KQEAgLTc3OCw2ICs3ODQsMTEgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9w YWdlcyA9IDA7CiAJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzID0gMDsKIAorCXZhY3JlbC0+ d29ya2Vyc191c2FnZS52YWN1dW0ubmxhdW5jaGVkID0gMDsKKwl2YWNyZWwtPndvcmtlcnNfdXNh Z2UudmFjdXVtLm5wbGFubmVkID0gMDsKKwl2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5u bGF1bmNoZWQgPSAwOworCXZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkID0g MDsKKwogCS8qCiAJICogR2V0IGN1dG9mZnMgdGhhdCBkZXRlcm1pbmUgd2hpY2ggZGVsZXRlZCB0 dXBsZXMgYXJlIGNvbnNpZGVyZWQgREVBRCwKIAkgKiBub3QganVzdCBSRUNFTlRMWV9ERUFELCBh bmQgd2hpY2ggWElEcy9NWElEcyB0byBmcmVlemUuICBUaGVuIGRldGVybWluZQpAQCAtMTEyMCw2 ICsxMTMxLDUwIEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBh cmFtcyBwYXJhbXMsCiAJCQkJCQkJIG9yaWdfcmVsX3BhZ2VzID09IDAgPyAxMDAuMCA6CiAJCQkJ CQkJIDEwMC4wICogdmFjcmVsLT5scGRlYWRfaXRlbV9wYWdlcyAvIG9yaWdfcmVsX3BhZ2VzLAog CQkJCQkJCSB2YWNyZWwtPmxwZGVhZF9pdGVtcyk7CisJCQlpZiAodmFjcmVsLT53b3JrZXJzX3Vz YWdlLnZhY3V1bS5ucGxhbm5lZCA+IDApCisJCQl7CisJCQkJLyogU3RhdHMgZm9yIHZhY3V1bSBw aGFzZSBvZiBpbmRleCB2YWN1dW1pbmcuICovCisKKwkJCQlpZiAoQW1BdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpKQorCQkJCXsKKwkJCQkJLyogV29ya2VyIHVzYWdlIHN0YXRzIGZvciBwYXJhbGxl bCBhdXRvdmFjdXVtLiAqLworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCQkg XygicGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFjdXVtOiAlZCBwbGFubmVkLCAlZCByZXNlcnZl ZCwgJWQgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJCQkJCQkJIHZhY3JlbC0+d29ya2Vyc191 c2FnZS52YWN1dW0ubnBsYW5uZWQsCisJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZh Y3V1bS5ucmVzZXJ2ZWQsCisJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5u bGF1bmNoZWQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBXb3JrZXIgdXNhZ2Ug c3RhdHMgZm9yIG1hbnVhbCBWQUNVVU0gKFBBUkFMTEVMKS4gKi8KKwkJCQkJYXBwZW5kU3RyaW5n SW5mbygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTog JWQgcGxhbm5lZCwgJWQgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJCQkJCQkJIHZhY3JlbC0+ d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQsCisJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJz X3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQpOworCQkJCX0KKwkJCX0KKwkJCWlmICh2YWNyZWwtPndv cmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCA+IDApCisJCQl7CisJCQkJLyogU3RhdHMgZm9y IGNsZWFudXAgcGhhc2Ugb2YgaW5kZXggdmFjdXVtaW5nLiAqLworCisJCQkJaWYgKEFtQXV0b1Zh Y3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJCQl7CisJCQkJCS8qIFdvcmtlciB1c2FnZSBzdGF0cyBm b3IgcGFyYWxsZWwgYXV0b3ZhY3V1bS4gKi8KKwkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAor CQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IGNsZWFudXA6ICVkIHBsYW5uZWQs ICVkIHJlc2VydmVkLCAlZCBsYXVuY2hlZFxuIiksCisJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJz X3VzYWdlLmNsZWFudXAubnBsYW5uZWQsCisJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdl LmNsZWFudXAubnJlc2VydmVkLAorCQkJCQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVh bnVwLm5sYXVuY2hlZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIFdvcmtlciB1 c2FnZSBzdGF0cyBmb3IgbWFudWFsIFZBQ1VVTSAoUEFSQUxMRUwpLiAqLworCQkJCQlhcHBlbmRT dHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCQkgXygicGFyYWxsZWwgd29ya2VyczogaW5kZXggY2xl YW51cDogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJIHZhY3JlbC0+d29y a2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3JlbC0+d29ya2Vyc191 c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCk7CisJCQkJfQorCQkJfQogCQkJZm9yIChpbnQgaSA9IDA7 IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKyspCiAJCQl7CiAJCQkJSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICppc3RhdCA9IHZhY3JlbC0+aW5kc3RhdHNbaV07CkBAIC0yNjY0LDcgKzI3MTksOCBAQCBs YXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJewogCQkvKiBPdXRz b3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJCXBhcmFsbGVsX3ZhY3V1 bV9idWxrZGVsX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90dXBsZXMsCi0JCQkJ CQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJdmFjcmVsLT5udW1f aW5kZXhfc2NhbnMsCisJCQkJCQkJCQkJCSZ2YWNyZWwtPndvcmtlcnNfdXNhZ2UpOwogCiAJCS8q CiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5nIHdyYXBhcm91bmQgZmFp bHNhZmUgbm93LiAgTm90ZQpAQCAtMzA5Nyw3ICszMTUzLDggQEAgbGF6eV9jbGVhbnVwX2FsbF9p bmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291cmNlIGV2ZXJ5dGhpbmcgdG8g cGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhl cyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRleF9z Y2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJCQkJZXN0aW1hdGVk X2NvdW50LAorCQkJCQkJCQkJCQkmdmFjcmVsLT53b3JrZXJzX3VzYWdlKTsKIAl9CiAKIAkvKiBS ZXNldCB0aGUgcHJvZ3Jlc3MgY291bnRlcnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCmluZGV4IGQzZTBjMzJiN2VlLi44NmQ5ZjJiNzRjOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RydWN0IFBhcmFsbGVsVmFj dXVtU3RhdGUKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAkJCQkJCQkJCQkJ Ym9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2lu ZGV4X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCB2YWN1dW0pOworCQkJCQkJCQkJCQkJYm9vbCB2 YWN1dW0sIFBWV29ya2Vyc1N0YXRzICp3c3RhdHMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFj dXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBzdGF0 aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhQYXJhbGxlbFZh Y3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25l X2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLApAQCAtNTAy LDcgKzUwMiw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9yZXNldF9kZWFkX2l0ZW1zKFBhcmFsbGVsVmFj dXVtU3RhdGUgKnB2cykKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2lu ZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMsCi0J CQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zKQorCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2Fu cywgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIo KSk7CiAKQEAgLTUxMyw3ICs1MTMsOCBAQCBwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5k ZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2cy0+ c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5lc3Rp bWF0ZWRfY291bnQgPSB0cnVlOwogCi0JcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4 ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUpOworCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNz X2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCB0cnVlLAorCQkJCQkJCQkJCSZ3dXNh Z2UtPnZhY3V1bSk7CiB9CiAKIC8qCkBAIC01MjEsNyArNTIyLDggQEAgcGFyYWxsZWxfdmFjdXVt X2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90 YWJsZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMo UGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJ CQlpbnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkKKwkJCQkJCQkJCWlu dCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJUFZXb3Jr ZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CiAKQEAg LTUzMyw3ICs1MzUsOCBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2cy0+c2hhcmVkLT5y ZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291 bnQgPSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwKKwkJCQkJCQkJCQkm d3VzYWdlLT5jbGVhbnVwKTsKIH0KIAogLyoKQEAgLTYxOCw3ICs2MjEsNyBAQCBwYXJhbGxlbF92 YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGlu dCBucmVxdWVzdGVkLAogICovCiBzdGF0aWMgdm9pZAogcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nf YWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW5z LAotCQkJCQkJCQkJYm9vbCB2YWN1dW0pCisJCQkJCQkJCQlib29sIHZhY3V1bSwgUFZXb3JrZXJz U3RhdHMgKndzdGF0cykKIHsKIAlpbnQJCQlud29ya2VyczsKIAlQVkluZFZhY1N0YXR1cyBuZXdf c3RhdHVzOwpAQCAtNjU1LDEzICs2NTgsMjMgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxs X2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAkg Ki8KIAlud29ya2VycyA9IE1pbihud29ya2VycywgcHZzLT5wY3h0LT5ud29ya2Vycyk7CiAKKwkv KiBSZW1lbWJlciB0aGlzIHZhbHVlLCBpZiB3ZSBhc2tlZCB0byAqLworCWlmICh3c3RhdHMgIT0g TlVMTCAmJiBud29ya2VycyA+IDApCisJCXdzdGF0cy0+bnBsYW5uZWQgKz0gbndvcmtlcnM7CisK IAkvKgogCSAqIFJlc2VydmUgd29ya2VycyBpbiBhdXRvdmFjdXVtIGdsb2JhbCBzdGF0ZS4gTm90 ZSB0aGF0IHdlIG1heSBiZSBnaXZlbgogCSAqIGZld2VyIHdvcmtlcnMgdGhhbiB3ZSByZXF1ZXN0 ZWQuCiAJICovCiAJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBud29ya2VycyA+ IDApCisJewogCQlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycygmbndvcmtlcnMpOwog CisJCS8qIFJlbWVtYmVyIHRoaXMgdmFsdWUsIGlmIHdlIGFza2VkIHRvICovCisJCWlmICh3c3Rh dHMgIT0gTlVMTCkKKwkJCXdzdGF0cy0+bnJlc2VydmVkICs9IG53b3JrZXJzOworCX0KKwogCS8q CiAJICogU2V0IGluZGV4IHZhY3V1bSBzdGF0dXMgYW5kIG1hcmsgd2hldGhlciBwYXJhbGxlbCB2 YWN1dW0gd29ya2VyIGNhbgogCSAqIHByb2Nlc3MgaXQuCkBAIC03MjgsNiArNzQxLDEwIEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCQkvKiBFbmFibGUgc2hhcmVkIGNvc3QgYmFsYW5jZSBm b3IgbGVhZGVyIGJhY2tlbmQgKi8KIAkJCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihwdnMt PnNoYXJlZC0+Y29zdF9iYWxhbmNlKTsKIAkJCVZhY3V1bUFjdGl2ZU5Xb3JrZXJzID0gJihwdnMt PnNoYXJlZC0+YWN0aXZlX253b3JrZXJzKTsKKworCQkJLyogUmVtZW1iZXIgdGhpcyB2YWx1ZSwg aWYgd2UgYXNrZWQgdG8gKi8KKwkJCWlmICh3c3RhdHMgIT0gTlVMTCkKKwkJCQl3c3RhdHMtPm5s YXVuY2hlZCArPSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOwogCQl9CiAKIAkJaWYgKHZh Y3V1bSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggZTg4NWE0YjljNzcuLmQzZGM0ZThjYzY3IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMzAwLDYgKzMwMCwyOCBAQCB0eXBlZGVmIHN0cnVjdCBW YWNEZWFkSXRlbXNJbmZvCiAJaW50NjQJCW51bV9pdGVtczsJCS8qIGN1cnJlbnQgIyBvZiBlbnRy aWVzICovCiB9IFZhY0RlYWRJdGVtc0luZm87CiAKKy8qCisgKiBIZWxwZXIgZm9yIHRoZSBQVldv cmtlcnNVc2FnZSBzdHJ1Y3R1cmUgKHNlZSBiZWxvdyksIHRvIGF2b2lkIHJlcGV0aXRpb24uCisg Ki8KK3R5cGVkZWYgc3RydWN0IFBWV29ya2Vyc1N0YXRzCit7CisJaW50CQkJbnBsYW5uZWQ7CQkv KiAjIG9mIHBhcmFsbGVsIHdvcmtlcnMgd2UgYXJlIHBsYW5uZWQgdG8KKwkJCQkJCQkJICogbGF1 bmNoICovCisJaW50CQkJbnJlc2VydmVkOwkJLyogZm9yIGF1dG92YWN1dW0gb25seSAtICMgb2Yg cGFyYWxsZWwgd29ya2VycworCQkJCQkJCQkgKiB3ZSBoYXZlIG1hbmFnZWQgdG8gcmVzZXJ2ZSAq LworCWludAkJCW5sYXVuY2hlZDsJCS8qICMgb2YgbGF1bmNoZWQgcGFyYWxsZWwgd29ya2VycyAq LworfSBQVldvcmtlcnNTdGF0czsKKworLyoKKyAqIFBWV29ya2Vyc1VzYWdlIHN0b3JlcyBpbmZv cm1hdGlvbiBhYm91dCB0b3RhbCBudW1iZXIgb2YgbGF1bmNoZWQsIHJlc2VydmVkCisgKiBhbmQg cGxhbm5lZCB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0gKGJvdGggZm9yIHZhY3V1bSBh bmQgY2xlYW51cCkuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBWV29ya2Vyc1VzYWdlCit7CisJUFZX b3JrZXJzU3RhdHMgdmFjdXVtOworCVBWV29ya2Vyc1N0YXRzIGNsZWFudXA7Cit9IFBWV29ya2Vy c1VzYWdlOworCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBk ZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0OwkvKiBQR0RMTElNUE9SVCBmb3IgUG9zdEdJUyAqLwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1fZnJlZXplX21pbl9hZ2U7CkBAIC0zOTQsMTEg KzQxNiwxMyBAQCBleHRlcm4gVGlkU3RvcmUgKnBhcmFsbGVsX3ZhY3V1bV9nZXRfZGVhZF9pdGVt cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1f cmVzZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogZXh0ZXJuIHZvaWQg cGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVzLAotCQkJCQkJCQkJCQkJaW50 IG51bV9pbmRleF9zY2Fucyk7CisJCQkJCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLAorCQkJ CQkJCQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92 YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiAJCQkJ CQkJCQkJCQlsb25nIG51bV90YWJsZV90dXBsZXMsCiAJCQkJCQkJCQkJCQlpbnQgbnVtX2luZGV4 X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCBlc3RpbWF0ZWRfY291bnQpOworCQkJCQkJCQkJCQkJ Ym9vbCBlc3RpbWF0ZWRfY291bnQsCisJCQkJCQkJCQkJCQlQVldvcmtlcnNVc2FnZSAqd3VzYWdl KTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYyk7CiAKIC8qIGluIGNvbW1hbmRzL2FuYWx5emUuYyAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCAyNDE5NDU3MzRlYy4uYWUxMDQ3ZGRmNWQgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0yMDY5LDYgKzIwNjksOCBAQCBQVkluZFN0YXRzCiBQVkluZFZhY1N0 YXR1cwogUFZPSUQKIFBWU2hhcmVkCitQVldvcmtlcnNVc2FnZQorUFZXb3JrZXJzU3RhdHMKIFBY X0FsaWFzCiBQWF9DaXBoZXIKIFBYX0NvbWJvCkBAIC0yNDA3LDYgKzI0MDksNyBAQCBQdWxsRmls dGVyT3BzCiBQdXNoRmlsdGVyCiBQdXNoRmlsdGVyT3BzCiBQdXNoRnVuY3Rpb24KK1BWV29ya2Vy c1VzYWdlCiBQeUNGdW5jdGlvbgogUHlNZXRob2REZWYKIFB5TW9kdWxlRGVmCi0tIAoyLjQzLjAK Cg== --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0005-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v22-0005-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzouv0 RnJvbSBlMTkyZGU5MjVkY2ZjOTMyZDFjMjIzYzA1MWI3MTgzNWRjZWRlZDBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjIgNS81XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZjY3MGUy ZDRjMzEuLjA3MTM5ZWM3ZmYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MzgwLDYgKzkzODEsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IDdjOTU4YjA2MjczLi5jOWY5MTYzYzU1MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTkyNiw2ICs5MjYsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA5ODI1MzJmZTcyNS4uNDg5NGRlMDIxY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxOCw2ICsxNzE4LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgIDx2YXJsaXN0ZW50cnkgaWQ9InJl bG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM8 L3Zhcm5hbWU+IHN0b3JhZ2UgcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIHBy b2Nlc3MKKyAgICAgIGluZGV4ZXMgb2YgdGhpcyB0YWJsZS4KKyAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIC0xLCB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisg ICAgICB0aGlzIHRhYmxlLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwgZGVncmVlIHdpbGwg Y29tcHV0ZWQgYmFzZWQgb24KKyAgICAgIG51bWJlciBvZiBpbmRleGVzLgorICAgICAgTm90ZSB0 aGF0IHRoZSBjb21wdXRlZCBudW1iZXIgb2Ygd29ya2VycyBtYXkgbm90IGFjdHVhbGx5IGJlIGF2 YWlsYWJsZSBhdAorICAgICAgcnVuIHRpbWUuIElmIHRoaXMgb2NjdXJzLCB0aGUgYXV0b3ZhY3V1 bSB3aWxsIHJ1biB3aXRoIGZld2VyIHdvcmtlcnMKKyAgICAgIHRoYW4gZXhwZWN0ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZs YWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5h dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK ICAgICA8aW5kZXh0ZXJtPgotLSAKMi40My4wCgo= --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v22-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzowk4 RnJvbSBkMzEyNzM2NjkwZmZlMWRmN2FlNzNjNzNkYmIyZWYzMzRkZmEzMjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjIgMS81XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy MzkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCAyMzdhYjhkMGVkOS4uOTQ1OWEwMTBjYzMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMzUsNiArMjM1LDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTk2OCw2ICsxOTc3LDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGMzYjNjOWVhMjFhLi5k M2UwYzMyYjdlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBA IC0zNzMsOCArMzc2LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9n ZXRfbXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9 CiAJCShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBh cmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsK KwkJdmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgor CQl2YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2 YWNfd29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9y IGRlYWQgaXRlbXMgKi8KQEAgLTU1MywxMiArNTU3LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJ CQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3Jt aW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVu IHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIg fHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5 Nyw4ICs2MDYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICpp bmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMg PSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVs KSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJz LCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJp YWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dv cmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDYsNiArNjU1LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtl cnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4g YXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUgdGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KKwkgKiBm ZXdlciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAwKQorCQlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFs bGVsV29ya2VycygmbndvcmtlcnMpOworCiAJLyoKIAkgKiBTZXQgaW5kZXggdmFjdXVtIHN0YXR1 cyBhbmQgbWFyayB3aGV0aGVyIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgY2FuCiAJICogcHJvY2Vz cyBpdC4KQEAgLTY5MCw2ICs3MDYsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2lu ZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAogCQlM YXVuY2hQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0KTsKIAorCQkvKgorCQkgKiBUZWxsIGF1dG92 YWN1dW0gdGhhdCB3ZSBjb3VsZCBub3QgbGF1bmNoIGFsbCB0aGUgcHJldmlvdXNseQorCQkgKiBy ZXNlcnZlZCB3b3JrZXJzLgorCQkgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3Mo KSAmJgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3JrZXJzKQorCQl7CisJ CQlBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2VycyAtIHB2cy0+cGN4dC0+ bndvcmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM4LDYgKzc2NCwxMCBAQCBwYXJhbGxlbF92YWN1 dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1f aW5kZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIFJlbGVhc2UgYWxsIHRoZSByZXNl cnZlZCBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFjdXVtICovCisJCWlmIChBbUF1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkgJiYgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCisJ CQlBdXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOwogCX0KIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDZmZGU3NDA0NjVmLi5mNDBhYmU5MGVkNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1MSw2ICsxNTEsMTMgQEAgaW50 CQkJTG9nX2F1dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUg YXZfc3RvcmFnZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2Vf cGFyYW1fY29zdF9saW1pdCA9IC0xOwogCisvKgorICogVHJhY2tzIHRoZSBudW1iZXIgb2YgcGFy YWxsZWwgd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQgYnkgdGhlCisgKiBhdXRvdmFjdXVtIHdv cmtlci4gVGhpcyBpcyBub24temVybyBvbmx5IGZvciB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bQor ICogbGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQg PSAwOworCiAvKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRp bGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7CiAKQEAgLTI4NSw2ICsyOTIsOCBA QCB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVtV29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29y ayBpdGVtIGFycmF5CiAgKiBhdl9ud29ya2Vyc0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRv dmFjdXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4KICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3 b3JrZXIgY29zdCBsaW1pdAorICogYXZfZnJlZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9m IGZyZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtl cnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoK ICAqIFRoaXMgc3RydWN0IGlzIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZv ciBhdl9zaWduYWwgYW5kIHBhcnRzCiAgKiBvZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSku CkBAIC0yOTksNiArMzA4LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0 aW5nV29ya2VyOwogCUF1dG9WYWN1dW1Xb3JrSXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVN U107CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9ud29ya2Vyc0ZvckJhbGFuY2U7CisJdWludDMyCQlh dl9mcmVlUGFyYWxsZWxXb3JrZXJzOworCXVpbnQzMgkJYXZfbWF4UGFyYWxsZWxXb3JrZXJzOwog fSBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAKIHN0YXRpYyBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Qg KkF1dG9WYWN1dW1TaG1lbTsKQEAgLTM2MSw2ICszNzIsNyBAQCBzdGF0aWMgdm9pZCBhdXRvdmFj X3JlcG9ydF93b3JraXRlbShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtLAogc3RhdGljIHZv aWQgYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgYm9vbCBhdl93b3Jr ZXJfYXZhaWxhYmxlKHZvaWQpOwogc3RhdGljIHZvaWQgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9p ZCk7CitzdGF0aWMgdm9pZCBhZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21h eF9wYXJhbGxlbF93b3JrZXJzKTsKIAogCiAKQEAgLTc1OSw2ICs3NzEsOCBAQCBQcm9jZXNzQXV0 b1ZhY0xhdW5jaGVySW50ZXJydXB0cyh2b2lkKQogCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQog CXsKIAkJaW50CQkJYXV0b3ZhY3V1bV9tYXhfd29ya2Vyc19wcmV2ID0gYXV0b3ZhY3V1bV9tYXhf d29ya2VyczsKKwkJaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2ID0K KwkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKIAkJQ29uZmlnUmVsb2FkUGVu ZGluZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKQEAgLTc3NSw2 ICs3ODksMTUgQEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAkJaWYg KGF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiAhPSBhdXRvdmFjdXVtX21heF93b3JrZXJzKQog CQkJY2hlY2tfYXZfd29ya2VyX2d1Y3MoKTsKIAorCQkvKgorCQkgKiBJZiBhdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzIGNoYW5nZWQsIHdlIG11c3QgdGFrZSBjYXJlIG9mCisJCSAqIHRo ZSBjb3JyZWN0IHZhbHVlIG9mIGF2YWlsYWJsZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMg aW4KKwkJICogc2htZW0uCisJCSAqLworCQlpZiAoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29y a2Vyc19wcmV2ICE9CisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzKQorCQkJYWRq dXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJz X3ByZXYpOworCiAJCS8qIHJlYnVpbGQgdGhlIGxpc3QgaW4gY2FzZSB0aGUgbmFwdGltZSBjaGFu Z2VkICovCiAJCXJlYnVpbGRfZGF0YWJhc2VfbGlzdChJbnZhbGlkT2lkKTsKIAl9CkBAIC0xMzc5 LDYgKzE0MDIsMTYgQEAgYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxfQVJHUykKICAqCQkJCQkg IEFVVE9WQUNVVU0gV09SS0VSIENPREUKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorLyoKKyAqIE1ha2Ugc3Vy ZSB0aGF0IGFsbCByZXNlcnZlZCB3b3JrZXJzIGFyZSByZWxlYXNlZCwgZXZlbiBpZiBwYXJhbGxl bAorICogYXV0b3ZhY3V1bSBsZWFkZXIgaXMgZmluaXNoaW5nIGR1ZSB0byBGQVRBTCBlcnJvci4K KyAqLworc3RhdGljIHZvaWQKK2F1dG92YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0KGlu dCBjb2RlLCBEYXR1bSBhcmcpCit7CisJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtl cnMoKTsKK30KKwogLyoKICAqIE1haW4gZW50cnkgcG9pbnQgZm9yIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3Nlcy4KICAqLwpAQCAtMjI3NSw2ICsyMzA4LDEyIEBAIGRvX2F1dG92YWN1dW0odm9p ZCkKIAkJCQkJCQkJCQkgICJBdXRvdmFjdXVtIFBvcnRhbCIsCiAJCQkJCQkJCQkJICBBTExPQ1NF VF9ERUZBVUxUX1NJWkVTKTsKIAorCS8qCisJICogUGFyYWxsZWwgYXV0b3ZhY3V1bSBjYW4gcmVz ZXJ2ZSBwYXJhbGxlbCB3b3JrZXJzLiBNYWtlIHN1cmUgdGhhdCBhbGwKKwkgKiByZXNlcnZlZCB3 b3JrZXJzIGFyZSByZWxlYXNlZCBldmVuIGFmdGVyIEZBVEFMIGVycm9yLgorCSAqLworCWJlZm9y ZV9zaG1lbV9leGl0KGF1dG92YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0LCAwKTsKKwog CS8qCiAJICogUGVyZm9ybSBvcGVyYXRpb25zIG9uIGNvbGxlY3RlZCB0YWJsZXMuCiAJICovCkBA IC0yNDU2LDYgKzI0OTUsMTIgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQl9CiAJCVBHX0NBVENI KCk7CiAJCXsKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBhdXRvdmFjdXVtIGNhbiByZXNlcnZlIHBh cmFsbGVsIHdvcmtlcnMuIE1ha2Ugc3VyZQorCQkJICogdGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2Vy cyBhcmUgcmVsZWFzZWQuCisJCQkgKi8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxX b3JrZXJzKCk7CisKIAkJCS8qCiAJCQkgKiBBYm9ydCB0aGUgdHJhbnNhY3Rpb24sIHN0YXJ0IGEg bmV3IG9uZSwgYW5kIHByb2NlZWQgd2l0aCB0aGUKIAkJCSAqIG5leHQgdGFibGUgaW4gb3VyIGxp c3QuCkBAIC0yODU2LDggKzI5MDEsMTIgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxp ZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8KIAkJdGFiLT5hdF9wYXJhbXMuaW5kZXhf Y2xlYW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwogCQl0YWItPmF0X3BhcmFtcy50cnVu Y2F0ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQkvKiBBcyBvZiBub3csIHdlIGRvbid0 IHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRvdmFjdXVtICovCi0JCXRhYi0+YXRfcGFy YW1zLm53b3JrZXJzID0gLTE7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2UgbmVlZCB0byBwcm9j ZXNzIGluZGV4ZXMgb2YgdGFibGUgaW4gcGFyYWxsZWwuICovCisJCXRhYi0+YXRfcGFyYW1zLm53 b3JrZXJzID0gYXZvcHRzCisJCQk/IGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJz CisJCQk6IC0xOworCiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9taW5fYWdlID0gZnJlZXplX21p bl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSBmcmVlemVfdGFibGVf YWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2UgPSBtdWx0aXhh Y3RfZnJlZXplX21pbl9hZ2U7CkBAIC0zMzM0LDYgKzMzODMsODggQEAgQXV0b1ZhY3V1bVJlcXVl c3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwgT2lkIHJlbGF0aW9uSWQsCiAJcmV0 dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJlc2VydmVzIHBhcmFsbGVsIHdvcmtlcnMgZm9yIGF1 dG92YWN1dW0uCisgKgorICogbndvcmtlcnMgaXMgYW4gaW4vb3V0IHBhcmFtZXRlcjsgdGhlIHJl cXVlc3RlZCBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycworICogdG8gcmVzZXJ2ZSBieSB0aGUg Y2FsbGVyLCBhbmQgc2V0IHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJlc2VydmVkIHdvcmtlcnMu CisgKgorICogVGhlIGNhbGxlciBtdXN0IGNhbGwgQXV0b1ZhY3V1bVJlbGVhc2VbQWxsXVBhcmFs bGVsV29ya2VycygpIHRvIHJlbGVhc2UgdGhlCisgKiByZXNlcnZlZCB3b3JrZXJzLgorICoKKyAq IE5PVEU6IFdlIHdpbGwgdHJ5IHRvIHByb3ZpZGUgYXMgbWFueSB3b3JrZXJzIGFzIHJlcXVlc3Rl ZCwgZXZlbiBpZiBjYWxsZXIKKyAqIHdpbGwgb2NjdXB5IGFsbCBhdmFpbGFibGUgd29ya2Vycy4K KyAqLwordm9pZAorQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoaW50ICpud29ya2Vy cykKK3sKKwkvKiBPbmx5IGxlYWRlciBhdXRvdmFjdXVtIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1 bmN0aW9uLiAqLworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOworCisJLyog VGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGFueSByZXNlcnZlZCB3b3JrZXJzIHlldCAqLworCUFz c2VydChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsKKworCUxXTG9ja0FjcXVpcmUoQXV0b3Zh Y3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKiBQcm92aWRlIGFzIG1hbnkgd29ya2VycyBh cyB3ZSBjYW4uICovCisJKm53b3JrZXJzID0gTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBh cmFsbGVsV29ya2VycywgKm53b3JrZXJzKTsKKwlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJh bGxlbFdvcmtlcnMgLT0gKm53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9j ayk7CisKKwkvKiBSZW1lbWJlciBob3cgbWFueSB3b3JrZXJzIHdlIGhhdmUgcmVzZXJ2ZWQuICov CisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAqbndvcmtlcnM7Cit9CisKKy8qCisgKiBSZWxlYXNl cyB0aGUgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYXV0b3ZhY3V1bS4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIHJlbGVhc2UgdGhlIHBhcmFsbGVsIHdvcmtl cnMgdGhhdCBhbgorICogYXV0b3ZhY3V1bSB3b3JrZXIgcmVzZXJ2ZWQgYnkgQXV0b1ZhY3V1bVJl c2VydmVQYXJhbGxlbFdvcmtlcnMoKS4gbndvcmtlcnMKKyAqIGlzIHRoZSBudW1iZXIgb2Ygd29y a2VycyB0byByZWxlYXNlLCB3aGljaCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlCisgKiBu dW1iZXIgb2Ygd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQsIGF2X253b3JrZXJzX3Jlc2VydmVk LgorICovCit2b2lkCitBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtl cnMpCit7CisJLyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICov CisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CisKKwkvKiBDYW5ub3QgcmVs ZWFzZSBtb3JlIHdvcmtlcnMgdGhhbiByZXNlcnZlZCAqLworCUFzc2VydChud29ya2VycyA8PSBh dl9ud29ya2Vyc19yZXNlcnZlZCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBM V19FWENMVVNJVkUpOworCisJLyoKKwkgKiBJZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxs ZWwgd29ya2VycyB3YXMgcmVkdWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorCSAqIHdlIG11c3QgY2Fw IGF2YWlsYWJsZSB3b3JrZXJzIG51bWJlciBieSBpdHMgbmV3IHZhbHVlLgorCSAqLworCUF1dG9W YWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCU1pbihBdXRvVmFjdXVtU2ht ZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgKyBud29ya2VycywKKwkJCUF1dG9WYWN1dW1TaG1l bS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzKTsKKworCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxv Y2spOworCisJLyogRG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3JrZXJzIGFueW1vcmUu ICovCisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgLT0gbndvcmtlcnM7Cit9CisKKy8qCisgKiBTYW1l IGFzIGFib3ZlLCBidXQgdGhpcyBmdW5jdGlvbiByZWxlYXNlcyBhbGwgdGhlIHBhcmFsbGVsIHdv cmtlcnMgdGhhdAorICogdGhpcyBhdXRvdmFjdXVtIHdvcmtlciByZXNlcnZlZC4KKyAqLwordm9p ZAorQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCkKK3sKKwkvKiBPbmx5 IGxlYWRlciB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4gKi8KKwlBc3NlcnQoQW1BdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCWlmIChhdl9ud29ya2Vyc19yZXNlcnZlZCA+IDAp CisJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGF2X253b3JrZXJzX3Jlc2VydmVk KTsKKworCUFzc2VydChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsKK30KKwogLyoKICAqIGF1 dG92YWNfaW5pdAogICoJCVRoaXMgaXMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6YXRp b24uCkBAIC0zMzk0LDYgKzM1MjUsMTAgQEAgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQogCQlB c3NlcnQoIWZvdW5kKTsKIAogCQlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsK KwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMgPQorCQkJTWluKGF1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1heF9wYXJhbGxlbF93b3JrZXJzKTsKKwkJQXV0 b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzID0KKwkJCUF1dG9WYWN1dW1TaG1l bS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogCQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVt LT5hdl9mcmVlV29ya2Vycyk7CiAJCWRsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVu bmluZ1dvcmtlcnMpOwogCQlBdXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVM TDsKQEAgLTM0NzUsMyArMzYxMCwyOCBAQCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKQogCQkJ CSBlcnJkZXRhaWwoIlRoZSBzZXJ2ZXIgd2lsbCBvbmx5IHN0YXJ0IHVwIHRvIFwiYXV0b3ZhY3V1 bV93b3JrZXJfc2xvdHNcIiAoJWQpIGF1dG92YWN1dW0gd29ya2VycyBhdCBhIGdpdmVuIHRpbWUu IiwKIAkJCQkJCSAgIGF1dG92YWN1dW1fd29ya2VyX3Nsb3RzKSkpOwogfQorCisvKgorICogQWRq dXN0cyB0aGUgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBjb3JyZXNwb25kcyB0byB0 aGUgbmV3CisgKiBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIHZhbHVlLgorICovCitz dGF0aWMgdm9pZAorYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhfcGFy YWxsZWxfd29ya2VycykKK3sKKwlpbnQJbmZyZWVfd29ya2VyczsKKworCUxXTG9ja0FjcXVpcmUo QXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIENhcCBvciBpbmNyZWFz ZSBudW1iZXIgb2YgZnJlZSBwYXJhbGxlbCB3b3JrZXJzIGFjY29yZGluZyB0byB0aGUKKwkgKiBw YXJhbWV0ZXIgY2hhbmdlLgorCSAqLworCW5mcmVlX3dvcmtlcnMgPQorCQlhdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzIC0gcHJldl9tYXhfcGFyYWxsZWxfd29ya2VycyArCisJCUF1dG9W YWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VyczsKKworCUF1dG9WYWN1dW1TaG1lbS0+ YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9IE1heChuZnJlZV93b3JrZXJzLCAwKTsKKwlBdXRvVmFj dXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVs X3dvcmtlcnM7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9nbG9iYWxzLmMKaW5kZXggMzZhZDcwOGIzNjAuLjgyNjVhODJiNjM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIGludAkJCU5CdWZmZXJzID0gMTYz ODQ7CiBpbnQJCQlNYXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJCW1heF93b3JrZXJfcHJvY2Vz c2VzID0gODsKIGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsKK2ludAkJCWF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyOwogaW50CQkJTWF4QmFja2VuZHMgPSAwOwogCiAv KiBHVUMgcGFyYW1ldGVycyBmb3IgdmFjdXVtICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBkNzc1 MDI4MzhjNC4uNGE1YzczYTllMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzMyNiw5ICszMzI2 LDEzIEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hh bmRsZSAqaGFuZGxlLAogCSAqCiAJICogQWxzbyBhbGxvdyBub3JtYWwgc2V0dGluZyBpZiB0aGUg R1VDIGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJICoKLQkgKiBPdGhlciBjaGFu Z2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLgor CSAqIE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qgb3RoZXIgd29ya2Vycywgc28g Zm9yYmlkIHRoZW0uIE5vdGUsCisJICogdGhhdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBp cyBhbiBleGNlcHRpb24sIGJlY2F1c2Ugb25seQorCSAqIGNvc3QtYmFzZWQgZGVsYXlzIG5lZWQg dG8gYmUgYWZmZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCB2YWN1dW0gd29ya2VycywKKwkgKiBhbmQg d2Ugd2lsbCBoYW5kbGUgaXQgZWxzZXdoZXJlIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCWlmIChJ c0luUGFyYWxsZWxNb2RlKCkgJiYgY2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNfQUNUSU9OX1NB VkUgJiYKKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9j ZXNzKCkgJiYgY2hhbmdlVmFsICYmCisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKIAkJ KHJlY29yZC0+ZmxhZ3MgJiBHVUNfQUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJewogCQllcmVw b3J0KGVsZXZlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5k ZXggOTUwNzc3ODQxNWQuLjkyYjY5YzY1ZTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTU0LDYgKzE1NCwxNCBAQAogICBtYXggPT4gJzIwMDAwMDAw MDAnLAogfSwKIAoreyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywg dHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1f QVVUT1ZBQ1VVTScsCisgIHNob3J0X2Rlc2MgPT4gJ01heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycywgdGhhdCBjYW4gYmUgdGFrZW4gZnJvbSBiZ3dvcmtlcnMgcG9v bC4nLAorICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsCisg IGJvb3RfdmFsID0+ICcyJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICdNQVhfQkFDS0VORFMn LAorfSwKKwogeyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywgdHlwZSA9PiAnaW50 JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVUT1ZBQ1VVTScs CiAgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91 c2x5IHJ1bm5pbmcgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLicsCiAgIHZhcmlhYmxlID0+ ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBmOTM4Y2M2NWEzYS4uZWY4MTI2ZjM3OTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTcxMCw2 ICs3MTAsNyBAQAogI2F1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMTYgICAgICAgICAgICMgYXV0 b3ZhY3V1bSB3b3JrZXIgc2xvdHMgdG8gYWxsb2NhdGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNhdXRvdmFjdXVt X21heF93b3JrZXJzID0gMyAgICAgICAgICAgICAjIG1heCBudW1iZXIgb2YgYXV0b3ZhY3V1bSBz dWJwcm9jZXNzZXMKKyNhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMiAgICAjIGxp bWl0ZWQgYnkgbWF4X3BhcmFsbGVsX3dvcmtlcnMKICNhdXRvdmFjdXVtX25hcHRpbWUgPSAxbWlu ICAgICAgICAgICAgICAjIHRpbWUgYmV0d2VlbiBhdXRvdmFjdXVtIHJ1bnMKICNhdXRvdmFjdXVt X3ZhY3V1bV90aHJlc2hvbGQgPSA1MCAgICAgICAjIG1pbiBudW1iZXIgb2Ygcm93IHVwZGF0ZXMg YmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2YWN1dW0K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwppbmRleCA4YjkxYmMwMDA2Mi4uZWQ1OWEyMTI4OWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKQEAgLTE0MjMsNiArMTQyMyw3IEBAIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCB0YWJsZV9zdG9yYWdlX3BhcmFtZXRlcnNbXSA9IHsKIAkiYXV0b3ZhY3V1bV9tdWx0 aXhhY3RfZnJlZXplX21heF9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWlu X2FnZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UiLAorCSJhdXRv dmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5 IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCIsCiAJImF1dG92YWN1dW1fdmFjdXVt X2luc2VydF9zY2FsZV9mYWN0b3IiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBmMTZmMzU2NTliOS4uMDAxOTBjNjdl Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oCkBAIC0xNzgsNiArMTc4LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBN YXhCYWNrZW5kczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF93b3JrZXJfcHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBtYXhfcGFyYWxsZWxfd29ya2VyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBj b21taXRfdGltZXN0YW1wX2J1ZmZlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG11bHRpeGFj dF9tZW1iZXJfYnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKaW5kZXggNWFh MGYzYThhYzEuLmYzNzgzYWZiNTFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVy L2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApA QCAtNjIsNiArNjIsMTEgQEAgcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgQXV0b1ZhY1dvcmtlck1h aW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnQKIGV4dGVybiBib29sIEF1 dG9WYWN1dW1SZXF1ZXN0V29yayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsCiAJCQkJCQkJ CSAgT2lkIHJlbGF0aW9uSWQsIEJsb2NrTnVtYmVyIGJsa25vKTsKIAorLyogcGFyYWxsZWwgYXV0 b3ZhY3V1bSBzdHVmZiAqLworZXh0ZXJuIHZvaWQJQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdv cmtlcnMoaW50ICpud29ya2Vycyk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFs bGVsV29ya2VycyhpbnQgbndvcmtlcnMpOworZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VB bGxQYXJhbGxlbFdvcmtlcnModm9pZCk7CisKIC8qIHNoYXJlZCBtZW1vcnkgc3R1ZmYgKi8KIGV4 dGVybiBTaXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBBdXRvVmFj dXVtU2htZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAyMzY4MzBmNmI5My4uN2M1ZTM1YTQ4NmMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3JlbC5oCkBAIC0zMTEsNiArMzExLDEzIEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlD YWNoZUluZm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsK KworCS8qCisJICogTWF4IG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMuIElm IHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbAorCSAqIGRlZ3JlZSB3aWxsIGNvbXB1dGVkIGJhc2Vk IG9uIG51bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VyczsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90 aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7Ci0tIAoyLjQzLjAKCg== --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v21--v22-diff-for-0003.patch" Content-Disposition: attachment; filename="v21--v22-diff-for-0003.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzuwf6 RnJvbSAyZTVhYjBhNGYwMjU5MDBhNjFhMWUzNGY1ZDJkMTYzYjZmZjIzZjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE0OjQ1OjIyICswNzAwClN1YmplY3Q6IFtQQVRD SCAxLzNdIGZpeGVzIGZvciAwMDAzIHBhdGNoCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMgfCA3NCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAz NiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYwppbmRleCBjY2IzODEyMTY1Yy4uMjdhNjEyMGIwZTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtNTcsMjggKzU3LDI4IEBACiAgKiBIZWxwZXIgZm9y IHRoZSBQVlNoYXJlZENvc3RQYXJhbXMgc3RydWN0dXJlIChzZWUgYmVsb3cpLCB0byBhdm9pZAog ICogcmVwZXRpdGlvbi4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgQ29zdFBhcmFtc0RhdGEKK3R5cGVk ZWYgc3RydWN0IFZhY3V1bUNvc3RQYXJhbXMKIHsKIAlkb3VibGUJCWNvc3RfZGVsYXk7CiAJaW50 CQkJY29zdF9saW1pdDsKIAlpbnQJCQljb3N0X3BhZ2VfZGlydHk7CiAJaW50CQkJY29zdF9wYWdl X2hpdDsKIAlpbnQJCQljb3N0X3BhZ2VfbWlzczsKLX0gQ29zdFBhcmFtc0RhdGE7Cit9IFZhY3V1 bUNvc3RQYXJhbXM7CiAKLSNkZWZpbmUJRmlsbENvc3RQYXJhbXNEYXRhKGNvc3RfcGFyYW1zKSBc CisjZGVmaW5lCUZpbGxWYWNDb3N0UGFyYW1zKGNvc3RfcGFyYW1zKSBcCiAJKGNvc3RfcGFyYW1z KS0+Y29zdF9kZWxheSA9IHZhY3V1bV9jb3N0X2RlbGF5OyBcCiAJKGNvc3RfcGFyYW1zKS0+Y29z dF9saW1pdCA9IHZhY3V1bV9jb3N0X2xpbWl0OyBcCiAJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdl X2RpcnR5ID0gVmFjdXVtQ29zdFBhZ2VEaXJ0eTsgXAogCShjb3N0X3BhcmFtcyktPmNvc3RfcGFn ZV9oaXQgPSBWYWN1dW1Db3N0UGFnZUhpdDsgXAogCShjb3N0X3BhcmFtcyktPmNvc3RfcGFnZV9t aXNzID0gVmFjdXVtQ29zdFBhZ2VNaXNzCiAKLSNkZWZpbmUgQ29zdFBhcmFtc0RhdGFFcXVhbChw YXJhbXNfMSwgcGFyYW1zXzIpIFwKLQkoKHBhcmFtc18xKS5jb3N0X2RlbGF5ID09IChwYXJhbXNf MikuY29zdF9kZWxheSAmJiBcCi0JIChwYXJhbXNfMSkuY29zdF9saW1pdCA9PSAocGFyYW1zXzIp LmNvc3RfbGltaXQgJiYgXAotCSAocGFyYW1zXzEpLmNvc3RfcGFnZV9kaXJ0eSA9PSAocGFyYW1z XzIpLmNvc3RfcGFnZV9kaXJ0eSAmJiBcCi0JIChwYXJhbXNfMSkuY29zdF9wYWdlX2hpdCA9PSAo cGFyYW1zXzIpLmNvc3RfcGFnZV9oaXQgJiYgXAotCSAocGFyYW1zXzEpLmNvc3RfcGFnZV9taXNz ID09IChwYXJhbXNfMikuY29zdF9wYWdlX21pc3MpCisjZGVmaW5lIFZhY0Nvc3RQYXJhbXNFcXVh bHMocGFyYW1zKSBcCisJKHZhY3V1bV9jb3N0X2RlbGF5ID09IChwYXJhbXMpLmNvc3RfZGVsYXkg JiYgXAorCSB2YWN1dW1fY29zdF9saW1pdCA9PSAocGFyYW1zKS5jb3N0X2xpbWl0ICYmIFwKKwkg VmFjdXVtQ29zdFBhZ2VEaXJ0eSA9PSAocGFyYW1zKS5jb3N0X3BhZ2VfZGlydHkgJiYgXAorCSBW YWN1dW1Db3N0UGFnZUhpdCA9PSAocGFyYW1zKS5jb3N0X3BhZ2VfaGl0ICYmIFwKKwkgVmFjdXVt Q29zdFBhZ2VNaXNzID09IChwYXJhbXMpLmNvc3RfcGFnZV9taXNzKQogCiAvKgogICogU3RydWN0 IGZvciBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSByZWxhdGVkIHBhcmFtZXRlcnMgdG8gc2hhcmUg YW1vbmcgYW4KQEAgLTk5LDggKzk5LDExIEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkQ29zdFBh cmFtcwogCiAJc2xvY2tfdAkJbXV0ZXg7CQkJLyogcHJvdGVjdHMgYWxsIGZpZWxkcyBiZWxvdyAq LwogCi0JLyogQ29waWVzIG9mIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycyBmcm9tIGF1dG92YWN1 dW0gbGVhZGVyIHByb2Nlc3MgKi8KLQlDb3N0UGFyYW1zRGF0YSBwYXJhbXNfZGF0YTsKKwkvKgor CSAqIENvcGllcyBvZiB0aGUgY29ycmVzcG9uZGluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBw YXJhbWV0ZXJzIGZyb20KKwkgKiBhdXRvdmFjdXVtIGxlYWRlciBwcm9jZXNzLgorCSAqLworCVZh Y3V1bUNvc3RQYXJhbXMgcGFyYW1zX2RhdGE7CiB9IFBWU2hhcmVkQ29zdFBhcmFtczsKIAogLyoK QEAgLTE3NywxMSArMTgwLDExIEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkCiAJICogSWYgJ3Ry dWUnIHRoZW4gd2UgYXJlIHJ1bm5pbmcgcGFyYWxsZWwgYXV0b3ZhY3V1bS4gT3RoZXJ3aXNlLCB3 ZSBhcmUKIAkgKiBydW5uaW5nIHBhcmFsbGVsIG1haW50ZW5lbmNlIFZBQ1VVTS4KIAkgKi8KLQli b29sCQlhbV9wYXJhbGxlbF9hdXRvdmFjdXVtOworCWJvb2wJCWlzX2F1dG92YWN1dW07CiAKIAkv KgotCSAqIFN0cnVjdCBmb3Igc3luY2luZyBwYXJhbWV0ZXJzIGJldHdlZW4gc3VwcG9ydGl2ZSBw YXJhbGxlbCBhdXRvdmFjdXVtCi0JICogd29ya2VycyB3aXRoIGxlYWRlciB3b3JrZXIuCisJICog U3RydWN0IGZvciBzeW5jaW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgYmV0 d2VlbgorCSAqIHN1cHBvcnRpdmUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHdpdGggbGVh ZGVyIHdvcmtlci4KIAkgKi8KIAlQVlNoYXJlZENvc3RQYXJhbXMgY29zdF9wYXJhbXM7CiB9IFBW U2hhcmVkOwpAQCAtNDYyLDExICs0NjUsMTEgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXBnX2F0b21pY19pbml0 X3UzMigmKHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKSwgMCk7CiAJcGdfYXRvbWljX2luaXRfdTMy KCYoc2hhcmVkLT5pZHgpLCAwKTsKIAotCXNoYXJlZC0+YW1fcGFyYWxsZWxfYXV0b3ZhY3V1bSA9 IEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKTsKKwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CiAKLQlpZiAoc2hhcmVkLT5hbV9wYXJhbGxlbF9h dXRvdmFjdXVtKQorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCiAJewotCQlGaWxsQ29zdFBh cmFtc0RhdGEoJnNoYXJlZC0+Y29zdF9wYXJhbXMucGFyYW1zX2RhdGEpOworCQlGaWxsVmFjQ29z dFBhcmFtcygmc2hhcmVkLT5jb3N0X3BhcmFtcy5wYXJhbXNfZGF0YSk7CiAJCXBnX2F0b21pY19p bml0X3UzMigmc2hhcmVkLT5jb3N0X3BhcmFtcy5nZW5lcmF0aW9uLCAwKTsKIAkJU3BpbkxvY2tJ bml0KCZzaGFyZWQtPmNvc3RfcGFyYW1zLm11dGV4KTsKIApAQCAtNjE4LDEwICs2MjEsMTAgQEAg cGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzLCBsb25nIG51bV90YWJsZV90dXAKIH0KIAogLyoKLSAqIElmIHdlIGFyZSBwYXJhbGxlbCAq YXV0b3ZhY3V1bSogd29ya2VyLCBjaGVjayB3aGV0aGVyIHJlbGF0ZWQgdG8KLSAqIGNvc3QtYmFz ZWQgZGVsYXkgcGFyYW1ldGVycyBoYWQgY2hhbmdlZCBpbiB0aGUgbGVhZGVyIHdvcmtlci4gSWYK LSAqIHNvLCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSB2 YWx1ZXMgd2hpY2gKLSAqIGxlYWRlciB3b3JrZXIgaXMgb3BlcmF0aW5nIG9uLgorICogSWYgd2Ug YXJlIHBhcmFsbGVsICphdXRvdmFjdXVtKiB3b3JrZXIsIGNoZWNrIHdoZXRoZXIgcmVsYXRlZCB0 byBjb3N0LWJhc2VkCisgKiB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBoYWQgY2hhbmdlZCBpbiB0 aGUgbGVhZGVyIHdvcmtlci4gSWYgc28sCisgKiBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgd2ls bCBiZSB1cGRhdGVkIHRvIHRoZSB2YWx1ZXMgd2hpY2ggbGVhZGVyIHdvcmtlcgorICogaXMgb3Bl cmF0aW5nIG9uLgogICoKICAqIEZvciBub24tYXV0b3ZhY3V1bSBwYXJhbGxlbCB3b3JrZXIgdGhp cyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0LgogICovCkBAIC02MjksNyArNjMyLDYgQEAg dm9pZAogcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpCiB7 CiAJdWludDMyCQlwYXJhbXNfZ2VuZXJhdGlvbjsKLQlDb3N0UGFyYW1zRGF0YSBzaGFyZWRfcGFy YW1zX2RhdGE7CiAKIAlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKIApAQCAtNjQ2LDEzICs2 NDgsMTEgQEAgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQp CiAKIAlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOwogCi0J c2hhcmVkX3BhcmFtc19kYXRhID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YTsK LQotCVZhY3V1bUNvc3REZWxheSA9IHNoYXJlZF9wYXJhbXNfZGF0YS5jb3N0X2RlbGF5OwotCVZh Y3V1bUNvc3RMaW1pdCA9IHNoYXJlZF9wYXJhbXNfZGF0YS5jb3N0X2xpbWl0OwotCVZhY3V1bUNv c3RQYWdlRGlydHkgPSBzaGFyZWRfcGFyYW1zX2RhdGEuY29zdF9wYWdlX2RpcnR5OwotCVZhY3V1 bUNvc3RQYWdlSGl0ID0gc2hhcmVkX3BhcmFtc19kYXRhLmNvc3RfcGFnZV9oaXQ7Ci0JVmFjdXVt Q29zdFBhZ2VNaXNzID0gc2hhcmVkX3BhcmFtc19kYXRhLmNvc3RfcGFnZV9taXNzOworCVZhY3V1 bUNvc3REZWxheSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29zdF9kZWxh eTsKKwlWYWN1dW1Db3N0TGltaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRh LmNvc3RfbGltaXQ7CisJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFt cy0+cGFyYW1zX2RhdGEuY29zdF9wYWdlX2RpcnR5OworCVZhY3V1bUNvc3RQYWdlSGl0ID0gcHZf c2hhcmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YS5jb3N0X3BhZ2VfaGl0OworCVZhY3V1bUNv c3RQYWdlTWlzcyA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29zdF9wYWdl X21pc3M7CiAKIAlTcGluTG9ja1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgp OwogCkBAIC02NjMsMzQgKzY2MywzMCBAQCBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9k ZWxheV9wYXJhbXModm9pZCkKIAogLyoKICAqIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmcm9tIHBh cmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGluIG9yZGVyIHRvIHByb3BhZ2F0ZQotICogc29tZSBj b3N0LWJhc2VkIHBhcmFtZXRlcnMgdG8gdGhlIHN1cHBvcnRpdmUgd29ya2Vycy4KKyAqIHNvbWUg Y29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyB0byB0aGUgc3VwcG9ydGl2ZSB3b3Jr ZXJzLgogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9w YXJhbXModm9pZCkKIHsKLQlDb3N0UGFyYW1zRGF0YSBsb2NhbF9wYXJhbXNfZGF0YTsKLQogCUFz c2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOwogCiAJLyogQ2hlY2sgd2hldGhlciB3 ZSBhcmUgcnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtICovCiAJaWYgKHB2X3NoYXJlZF9jb3N0 X3BhcmFtcyA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlGaWxsQ29zdFBhcmFtc0RhdGEoJmxvY2Fs X3BhcmFtc19kYXRhKTsKIAlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+ bXV0ZXgpOwogCi0JaWYgKENvc3RQYXJhbXNEYXRhRXF1YWwocHZfc2hhcmVkX2Nvc3RfcGFyYW1z LT5wYXJhbXNfZGF0YSwKLQkJCQkJCQlsb2NhbF9wYXJhbXNfZGF0YSkpCisJaWYgKFZhY0Nvc3RQ YXJhbXNFcXVhbHMocHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YSkpCiAJewogCQkv KgotCQkgKiBXZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBzaGFyZWQgZGVsYXkgcGFyYW1zIGlmIHRo ZXkgaGF2ZW4ndAotCQkgKiBjaGFuZ2VkLgorCQkgKiBXZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBz aGFyZWQgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1zIGlmCisJCSAqIHRoZXkgaGF2ZW4n dCBjaGFuZ2VkLgogCQkgKi8KIAkJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJh bXMtPm11dGV4KTsKIAkJcmV0dXJuOwogCX0KIAotCUZpbGxDb3N0UGFyYW1zRGF0YSgmcHZfc2hh cmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YSk7CisJRmlsbFZhY0Nvc3RQYXJhbXMoJnB2X3No YXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEpOwogCVNwaW5Mb2NrUmVsZWFzZSgmcHZfc2hh cmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7CiAKIAkvKgpAQCAtMTI2Niw3ICsxMjYyLDcgQEAgcGFy YWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVZhY3V1 bVNoYXJlZENvc3RCYWxhbmNlID0gJihzaGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0 aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKTsKIAotCWlmIChzaGFyZWQt PmFtX3BhcmFsbGVsX2F1dG92YWN1dW0pCisJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKIAkJ cHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gJihzaGFyZWQtPmNvc3RfcGFyYW1zKTsKIAogCS8qIFNl dCBwYXJhbGxlbCB2YWN1dW0gc3RhdGUgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg MmQ2YjU3MjMyZTYuLjIwZmUzNGY4Y2M3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt NTQ1LDcgKzU0NSw2IEBAIENvcHlUb1JvdXRpbmUKIENvcHlUb1N0YXRlCiBDb3B5VG9TdGF0ZURh dGEKIENvc3QKLUNvc3RQYXJhbXNEYXRhCiBDb3N0U2VsZWN0b3IKIENvdW50ZXJzCiBDb3ZlckV4 dApAQCAtMzI1MSw2ICszMjUwLDcgQEAgVmFjQXR0clN0YXRzUAogVmFjRGVhZEl0ZW1zSW5mbwog VmFjRXJyUGhhc2UKIFZhY09wdFZhbHVlCitWYWN1dW1Db3N0UGFyYW1zCiBWYWN1dW1QYXJhbXMK IFZhY3V1bVJlbGF0aW9uCiBWYWN1dW1TdG10Ci0tIAoyLjQzLjAKCg== --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v21--v22-diff-for-0002.patch" Content-Disposition: attachment; filename="v21--v22-diff-for-0002.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzuwr7 RnJvbSBkZDVkZjEwNjk0NmExODgzNDI5OTJmNTBlNTg3ZjI2OTg4MWNhY2FlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE0OjAzOjUxICswNzAwClN1YmplY3Q6IFtQQVRD SF0gZml4ZXMgZm9yIDAwMDIgcGF0Y2gKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDE5 ZTE1Y2JjY2UuLjkxYmUyNTAyYzA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0xMTM5LDcgKzExMzksNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25z dCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJCXsKIAkJCQkJLyogV29ya2VyIHVzYWdlIHN0YXRz IGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtLiAqLwogCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYs Ci0JCQkJCQkJCQkgXygicGFyYWxsZWwgaW5kZXggdmFjdXVtOiAlZCB3b3JrZXJzIHdlcmUgcGxh bm5lZCwgJWQgd29ya2VycyB3ZXJlIHJlc2VydmVkIGFuZCAlZCB3b3JrZXJzIHdlcmUgbGF1bmNo ZWQgaW4gdG90YWxcbiIpLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZh Y3V1bTogJWQgcGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxhdW5jaGVkIGluIHRvdGFsXG4iKSwK IAkJCQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkLAogCQkJCQkJ CQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnJlc2VydmVkLAogCQkJCQkJCQkJIHZh Y3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubmxhdW5jaGVkKTsKQEAgLTExNDgsNyArMTE0OCw3 IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJh bXMsCiAJCQkJewogCQkJCQkvKiBXb3JrZXIgdXNhZ2Ugc3RhdHMgZm9yIG1hbnVhbCBWQUNVVU0g KFBBUkFMTEVMKS4gKi8KIAkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAotCQkJCQkJCQkJIF8o InBhcmFsbGVsIGluZGV4IHZhY3V1bTogJWQgd29ya2VycyB3ZXJlIHBsYW5uZWQgYW5kICVkIHdv cmtlcnMgd2VyZSBsYXVuY2hlZCBpbiB0b3RhbFxuIiksCisJCQkJCQkJCQkgXygicGFyYWxsZWwg d29ya2VyczogaW5kZXggdmFjdXVtOiAlZCBwbGFubmVkLCAlZCBsYXVuY2hlZCBpbiB0b3RhbFxu IiksCiAJCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ucGxhbm5lZCwKIAkJ CQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5sYXVuY2hlZCk7CiAJCQkJfQpA QCAtMTE2MSw3ICsxMTYxLDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3Qg VmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQl7CiAJCQkJCS8qIFdvcmtlciB1c2FnZSBzdGF0cyBm b3IgcGFyYWxsZWwgYXV0b3ZhY3V1bS4gKi8KIAkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAot CQkJCQkJCQkJIF8oInBhcmFsbGVsIGluZGV4IGNsZWFudXA6ICVkIHdvcmtlcnMgd2VyZSBwbGFu bmVkLCAlZCB3b3JrZXJzIHdlcmUgcmVzZXJ2ZWQgYW5kICVkIHdvcmtlcnMgd2VyZSBsYXVuY2hl ZCBpbiB0b3RhbFxuIiksCisJCQkJCQkJCQkgXygicGFyYWxsZWwgd29ya2VyczogaW5kZXggY2xl YW51cDogJWQgcGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxhdW5jaGVkXG4iKSwKIAkJCQkJCQkJ CSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCwKIAkJCQkJCQkJCSB2YWNy ZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucmVzZXJ2ZWQsCiAJCQkJCQkJCQkgdmFjcmVsLT53 b3JrZXJzX3VzYWdlLmNsZWFudXAubmxhdW5jaGVkKTsKQEAgLTExNzAsNyArMTE3MCw3IEBAIGhl YXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJ CQkJewogCQkJCQkvKiBXb3JrZXIgdXNhZ2Ugc3RhdHMgZm9yIG1hbnVhbCBWQUNVVU0gKFBBUkFM TEVMKS4gKi8KIAkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAotCQkJCQkJCQkJIF8oInBhcmFs bGVsIGluZGV4IGNsZWFudXA6ICVkIHdvcmtlcnMgd2VyZSBwbGFubmVkIGFuZCAlZCB3b3JrZXJz IHdlcmUgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtl cnM6IGluZGV4IGNsZWFudXA6ICVkIHBsYW5uZWQsICVkIGxhdW5jaGVkXG4iKSwKIAkJCQkJCQkJ CSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCwKIAkJCQkJCQkJCSB2YWNy ZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ubGF1bmNoZWQpOwogCQkJCX0KLS0gCjIuNDMuMAoK --0000000000007f33bc064bce81d8 Content-Type: text/x-patch; charset="US-ASCII"; name="v21--v22-diff-for-0004.patch" Content-Disposition: attachment; filename="v21--v22-diff-for-0004.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4xzuw25 RnJvbSBkMzgwMTNiNGFiZTE0YjY5ZjQwNTgzMzdjZDcyMzFhYjExNTBlMTJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE2OjE1OjM0ICswNzAwClN1YmplY3Q6IFtQQVRD SCAzLzNdIGZpeGVzIGZvciAwMDA0IHBhdGNoCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgICAgICAgICB8IDM4ICsrKysrKysrLS0tLS0tLS0tLS0KIC4uLi9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9iYXNpYy5wbCAgICB8IDIxICsrLS0tLS0tLS0KIDMgZmls ZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDI0OThlZGNjMGQ1Li42NDA3YzEwNTI0YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtODcwLDExICs4NzAsMTMgQEAgaGVh cF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAls YXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUodmFjcmVsKTsKIAlkZWFkX2l0ZW1zX2FsbG9j KHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAorI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRT CiAJLyoKIAkgKiBUcmlnZ2VyIGluamVjdGlvbiBwb2ludCwgaWYgcGFyYWxsZWwgYXV0b3ZhY3V1 bSBpcyBhYm91dCB0byBiZSBzdGFydGVkLgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0FjdGl2ZSh2YWNyZWwpKQogCQlJTkpFQ1RJT05f UE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtIiwgTlVMTCk7CisjZW5kaWYK IAogCS8qCiAJICogQ2FsbCBsYXp5X3NjYW5faGVhcCB0byBwZXJmb3JtIGFsbCByZXF1aXJlZCBo ZWFwIHBydW5pbmcsIGluZGV4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRl eCA4ODg0MmM1Y2VjOS4uNzhjY2ZlZGUwMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwpAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBib29sIHBhcmFsbGVsX3ZhY3V1bV9p bmRleF9pc19wYXJhbGxlbF9zYWZlKFJlbGF0aW9uIGluZHJlbCwgaW50IG51bV9pbmRlCiBzdGF0 aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIAogI2lm ZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi1zdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcmVw b3J0X2Nvc3RfYmFzZWRfcGFyYW1zKHZvaWQpOworc3RhdGljIGlubGluZSB2b2lkIHBhcmFsbGVs X3ZhY3V1bV9yZXBvcnRfY29zdF9iYXNlZF9wYXJhbXModm9pZCk7CiAjZW5kaWYKIAogLyoKQEAg LTkyMyw2ICs5MjMsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJCXB2cy0+cGN4 dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOwogCX0KIAorI2lmZGVmIFVTRV9JTkpF Q1RJT05fUE9JTlRTCiAJLyoKIAkgKiBUbyBiZSBhYmxlIHRvIGV4ZXJjaXNlIHdoZXRoZXIgYWxs IHJlc2VydmVkIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGJlaW5nCiAJICogcmVsZWFzZWQgYW55d2F5 LCBhbGxvdyBpbmplY3Rpb24gcG9pbnRzIHRvIHRyaWdnZXIgYSBmYWlsdXJlIGF0IHRoaXMKQEAg LTkzMyw2ICs5MzQsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCSAqLwogCWlmIChud29y a2VycyA+IDApCiAJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWlu ZGV4ZXMtcHJvY2Vzc2luZyIsIE5VTEwpOworI2VuZGlmCiAKIAkvKiBWYWN1dW0gdGhlIGluZGV4 ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwpAQCAtMTMxNyw3ICsxMzE5 LDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9j KQogCSAqIGR1cmluZyBpbmRleCBwcm9jZXNzaW5nICh2aWEgdmFjdXVtX2RlbGF5X3BvaW50IGNh bGwpLiBUaGlzIGxvZ2dpbmcKIAkgKiBhbGxvd3MgdGVzdHMgdG8gZW5zdXJlIHRoaXMuCiAJICov Ci0JaWYgKHNoYXJlZC0+YW1fcGFyYWxsZWxfYXV0b3ZhY3V1bSkKKwlpZiAoc2hhcmVkLT5pc19h dXRvdmFjdXVtKQogCQlwYXJhbGxlbF92YWN1dW1fcmVwb3J0X2Nvc3RfYmFzZWRfcGFyYW1zKCk7 CiAjZW5kaWYKIApAQCAtMTM3NiwyOSArMTM3OCwyMSBAQCBwYXJhbGxlbF92YWN1dW1fZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKQogCiAjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKIC8qCi0g KiBMb2cgdmFsdWVzIG9mIHRoZSByZWxhdGVkIHRvIGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVy cy4gSXQgaXMgdXNlZCBmb3IKKyAqIExvZyB2YWx1ZXMgcmVsYXRlZCB0byBjb3N0LWJhc2VkIHZh Y3V1bSBkZWxheSBwYXJhbWV0ZXJzLiBJdCBpcyB1c2VkIGZvcgogICogdGVzdGluZyBwdXJwb3Nl LgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBwYXJhbGxlbF92YWN1dW1f cmVwb3J0X2Nvc3RfYmFzZWRfcGFyYW1zKHZvaWQpCiB7Ci0JU3RyaW5nSW5mb0RhdGEgYnVmOwot Ci0JLyogU2ltdWxhdGUgY29uZmlnIHJlbG9hZCBkdXJpbmcgbm9ybWFsIHByb2Nlc3NpbmcgKi8K LQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMihWYWN1dW1BY3RpdmVOV29ya2VycywgMSk7Ci0JdmFj dXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKLQlwZ19hdG9taWNfc3ViX2ZldGNoX3UzMihWYWN1dW1B Y3RpdmVOV29ya2VycywgMSk7Ci0KLQlpbml0U3RyaW5nSW5mbygmYnVmKTsKLQotCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwgIlZhY3V1bSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMgb2YgcGFy YWxsZWwgd29ya2VyOlxuIik7Ci0JYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAidmFjdXVtX2Nvc3Rf bGltaXQgPSAlZFxuIix2YWN1dW1fY29zdF9saW1pdCk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmYnVm LCAidmFjdXVtX2Nvc3RfZGVsYXkgPSAlZ1xuIiwgdmFjdXVtX2Nvc3RfZGVsYXkpOwotCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgInZhY3V1bV9jb3N0X3BhZ2VfbWlzcyA9ICVkXG4iLCBWYWN1dW1D b3N0UGFnZU1pc3MpOwotCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgInZhY3V1bV9jb3N0X3BhZ2Vf ZGlydHkgPSAlZFxuIiwgVmFjdXVtQ29zdFBhZ2VEaXJ0eSk7Ci0JYXBwZW5kU3RyaW5nSW5mbygm YnVmLCAidmFjdXVtX2Nvc3RfcGFnZV9oaXQgPSAlZFxuIiwgVmFjdXVtQ29zdFBhZ2VIaXQpOwot Ci0JZXJlcG9ydChERUJVRzIsIGVycm1zZygiJXMiLCBidWYuZGF0YSkpOwotCXBmcmVlKGJ1Zi5k YXRhKTsKKwljb25zdCBjaGFyICptc2dfZm9ybWF0ID0KKwkJXygiUGFyYWxsZWwgYXV0b3ZhY3V1 bSB3b3JrZXIgY29zdCBwYXJhbXM6IGNvc3RfbGltaXQ9JWQsIGNvc3RfZGVsYXk9JWcsIGNvc3Rf cGFnZV9taXNzPSVkLCBjb3N0X3BhZ2VfZGlydHk9JWQsIGNvc3RfcGFnZV9oaXQ9JWQiKTsKKwor CWVsb2coREVCVUcyLAorCQkgbXNnX2Zvcm1hdCwKKwkJIHZhY3V1bV9jb3N0X2xpbWl0LAorCQkg dmFjdXVtX2Nvc3RfZGVsYXksCisJCSBWYWN1dW1Db3N0UGFnZU1pc3MsCisJCSBWYWN1dW1Db3N0 UGFnZURpcnR5LAorCQkgVmFjdXVtQ29zdFBhZ2VIaXQpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9iYXNpYy5wbCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX2Jhc2ljLnBsCmluZGV4IGIzZDIyMzYx ZGNmLi45YjgwZDM3MWY1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92 YWN1dW0vdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdC8wMDFfYmFzaWMucGwKQEAgLTEwOSw4ICsxMDksNyBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxewogIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhdXRvdmFjdXVtIG9uIHRh YmxlIGlzIGNvbXBsZXRlZC4gQXQgdGhlIHNhbWUgdGltZSwKICMgd2UgY2hlY2sgdGhhdCB0aGUg cmVxdWlyZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gc3RhcnRlZC4KICRs b2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAotCXFyL3BhcmFsbGVsIGluZGV4IHZhY3V1 bTogMiB3b3JrZXJzIHdlcmUgcGxhbm5lZCwgLyAuCi0JcXIvMiB3b3JrZXJzIHdlcmUgcmVzZXJ2 ZWQgYW5kIDIgd29ya2VycyB3ZXJlIGxhdW5jaGVkIGluIHRvdGFsLywKKwlxci9wYXJhbGxlbCB3 b3JrZXJzOiBpbmRleCB2YWN1dW06IDIgcGxhbm5lZCwgMiByZXNlcnZlZCwgMiBsYXVuY2hlZC8s CiAJJGxvZ19zdGFydAogKTsKIApAQCAtMTYyLDEyICsxNjEsOCBAQCAkbm9kZS0+d2FpdF9mb3Jf ZXZlbnQoCiAjIENoZWNrIHdoZXRoZXIgcGFyYWxsZWwgd29ya2VyIHN1Y2Nlc3NmdWxseSB1cGRh dGVkIGFsbCBwYXJhbWV0ZXJzIGR1cmluZwogIyBpbmRleCBwcm9jZXNzaW5nCiAkbG9nX3N0YXJ0 ID0gJG5vZGUtPndhaXRfZm9yX2xvZygKLQlxci9WYWN1dW0gY29zdC1iYXNlZCBkZWxheSBwYXJh bWV0ZXJzIG9mIHBhcmFsbGVsIHdvcmtlcjpcbi8gLgotCXFyL1x0dmFjdXVtX2Nvc3RfbGltaXQg PSA1MDBcbi8gLgotCXFyL1x0dmFjdXVtX2Nvc3RfZGVsYXkgPSAyXG4vIC4KLQlxci9cdHZhY3V1 bV9jb3N0X3BhZ2VfbWlzcyA9IDEwXG4vIC4KLQlxci9cdHZhY3V1bV9jb3N0X3BhZ2VfZGlydHkg PSAxMFxuLyAuCi0JcXIvXHR2YWN1dW1fY29zdF9wYWdlX2hpdCA9IDEwXG4vLAorCXFyL1BhcmFs bGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PTUwMCwgY29zdF9k ZWxheT0yLCAvIC4KKwlxci9jb3N0X3BhZ2VfbWlzcz0xMCwgY29zdF9wYWdlX2RpcnR5PTEwLCBj b3N0X3BhZ2VfaGl0PTEwLywKIAkkbG9nX3N0YXJ0CiApOwogCkBAIC0yMTksOCArMjE0LDcgQEAg JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKIAogIyBXYWl0IHVudGlsIHRoZSBlbmQg b2YgcGFyYWxsZWwgcHJvY2Vzc2luZwogJGxvZ19zdGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2co Ci0JcXIvcGFyYWxsZWwgaW5kZXggdmFjdXVtOiAyIHdvcmtlcnMgd2VyZSBwbGFubmVkLCAvIC4K LQlxci8yIHdvcmtlcnMgd2VyZSByZXNlcnZlZCBhbmQgMiB3b3JrZXJzIHdlcmUgbGF1bmNoZWQg aW4gdG90YWwvLAorCXFyL3BhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTogMiBwbGFubmVk LCAyIHJlc2VydmVkLCAyIGxhdW5jaGVkLywKIAkkbG9nX3N0YXJ0CiApOwogCkBAIC0yOTYsMTMg KzI5MCw2IEBAIG15ICRhdl9waWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewog CUxJTUlUIDE7CiB9KTsKIAotIyBDcmVhdGUgcm9sZSB3aXRoIHBnX3NpZ25hbF9hdXRvdmFjdXVt X3dvcmtlciBmb3IgdGVybWluYXRpbmcgYXV0b3ZhY3V1bSB3b3JrZXIuCi0kbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxewotCUNSRUFURSBST0xFIHJlZ3Jlc3Nfd29ya2VyX3JvbGU7Ci0J R1JBTlQgcGdfc2lnbmFsX2F1dG92YWN1dW1fd29ya2VyIFRPIHJlZ3Jlc3Nfd29ya2VyX3JvbGU7 Ci0JU0VUIFJPTEUgcmVncmVzc193b3JrZXJfcm9sZTsKLX0pOwotCiAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxewogCVNFTEVDVCBwZ190ZXJtaW5hdGVfYmFja2VuZCgnJGF2X3BpZCcp OwogfSk7Ci0tIAoyLjQzLjAKCg== --0000000000007f33bc064bce81d8--