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 1wATsh-0000xj-0P for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Apr 2026 14:27:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wATre-0003Zt-2g for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Apr 2026 14:26:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wATre-0003Zj-1V for pgsql-hackers@lists.postgresql.org; Wed, 08 Apr 2026 14:26:43 +0000 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wATrc-0000000013q-3Lj2 for pgsql-hackers@postgresql.org; Wed, 08 Apr 2026 14:26:43 +0000 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c74244dc0b3so3830256a12.2 for ; Wed, 08 Apr 2026 07:26:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775658399; cv=none; d=google.com; s=arc-20240605; b=S2Zu7ax9oWFFobDk4lYUjYnJlUdKotmdsdvb3xcfS41xAmVahVe7aDLjI2SOmW6GzU qgdGnmj/C1cksqKlSZdT1ua6WZFJOMWDwkODKUDZBsKy6tOEQ7aXTiFo0ZUzMbP2R98w vDBs8WrT7glUBPOYr8Ff3aElzo0lHdbxxALTNjSjCZblrZXmZLCpGEfWqaJO72EaRyhJ OI41vgtXB/0FNIpkBP+6WHtxyR63s3s8T7Pz6nrPQab1mPFKtkq3HZIhEtIMj4ZAzsxz wrWJhvMk29D+lYOLoiGeC0s/bnWA98ZvqPAHlqPjfTJJKRe3BdPDao4VBh4CWmDPUyP2 HARA== 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=ROglRNkvcrK01dduPrppa2Qc3VHiIX3spbBvi9QexpI=; fh=Wnw2+2BmbY5bDwDXOiULndM2ZgPQ4yU/F5ezZXkNd9o=; b=jDlAtWrOgMxFJTsoy0rMj1jWqZGanfX81ixh2l9gxdb5LfJavPvMRBVlDKN30Mawv/ hdAIHz9lkGltxaOLdASJCksy7VrS+IS8rxQyXVdZRxgthkODDhRzujc6pPSSP50g6kOn d9DxZ8qiTXItU1jtMp5JBEFhSeKFY4ZVJwDPsG0ktk1XtvDlsElsKgPN+Fi7xXJuCvFv xXn1Z8n76xKZU+ocawrYAwqgKvRsLYrR7E2tp5XkwpbzZQO9adYZ20IguNAz/VVlJ+z1 t8Du+zIRVFAUvWybVRfxbnyo1/yI7ephBOk2BWF32/68vGaEzzjyX770y1NBtu8Kp/Hn RT8Q==; darn=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=20251104; t=1775658399; x=1776263199; darn=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=ROglRNkvcrK01dduPrppa2Qc3VHiIX3spbBvi9QexpI=; b=R0vpCGcNCgwgwwRjZ9FqonBwQ+uacuGMn2OIXYuG3dKobuBYXvoDCl6c9OY6GiWqZf 7yaSkoXWvMHIfXG6zY0OPV23XwDpo8zvWjUmIcw623gka82y5D+xXksn5EjyyarrYNCm VOPyHMaU3F7LzKLBXVH4xgW5hS5zqp6C0gif/JoEW+qCrAlWguuIafDPom4ZGYC9AMTh ef8IekoOPsIsbAr/8eZ02JUP8zasZG5pd0UOZ9tCi25txF+1gXgd8DQGBD9w+gF8fW6S 4juk8H/NPCenJQGYh0dYv67yBcTmv4B9RNPKz1n9+KngzZJebYy54Ig111mRg34rmkuT 8mzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775658399; x=1776263199; 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=ROglRNkvcrK01dduPrppa2Qc3VHiIX3spbBvi9QexpI=; b=hT9JIFXhytxrxMGnKTBll7afdYTOihxRDUPxDaK0ByBIPQD5NqvZFzl6kK5rdYSdCA rEELRhKgJ0YR0g3uSul+nPYplRKhlcTb8+DaJuRHr7dabXJW//YySDHvMuNtTtKuQSML s8BIk3yng4y5UkV47vtWF126N5LskWgZnzkJIcAFuxa8DM4JNUrrJhufC2jpVVN9+YMr hdM68tnuJjJiixTxCxx2ETJUemrgfmiIVk4jGdVN0jZ90bfZb4DenfMI4+SYKcGlvdgu eYYhkfur5j/uf/eFiJ/tE37o9a8QmtE2JIDp5HiLJn6m2GmRWdy+fariAY9uHlv4v47S NJRg== X-Gm-Message-State: AOJu0Yyh/+9t3FR3Hs7Ljb9V5iHxFC5VReW99YmWyunRi3Buu5nkY/jA UwISIqWK1P7NQ59qsc5LmQ01btq8TrMTr5RWsVLUC8xO5BgcJwFJgWa8Sr4w2dpdntHzEAQWaUD IbrzQx8DPf/N7QKVCeUaSWmj07rSf3nVUpBIK X-Gm-Gg: AeBDieuOmvmfVEZjluDaEdmDM/eOEF4L12p7HJa4Gs4lcPrc1uOQYsEUs9AcCzeX4oV 1KipJrVPSJfkRrrCvTzNAYh9r+VGqAJ+4jXQwU+9pr0mFMuVrNLfAZK668pFzoAIjjx+YODLHfk kygG0MBcd30Fmn9NQhSupS7kFZo0frIWCxJA3NyEDvXPzJw1a3DKDi/NIY2uoo89OS5fjMDqcpF 1ZmL/NLNxSIb5cIicEAevY0Y/i1XsDHM2jtVN/7FgQK24FrEVMEUuJZesNG9l6di8z1LUgrtc6/ 98EYKwzQ4VGqcXAEWYA= X-Received: by 2002:a05:6300:2189:b0:39b:8545:f15 with SMTP id adf61e73a8af0-39f2eedae6cmr21783557637.25.1775658398479; Wed, 08 Apr 2026 07:26:38 -0700 (PDT) MIME-Version: 1.0 References: <2BE661BA-D909-4093-BF78-DB9B0C099337@gmail.com> <77FA04FE-1F84-4DA1-8855-8BBFD8CC889A@gmail.com> <72AA2663-B642-4FB1-BDC2-5FAFF2D2DF15@gmail.com> In-Reply-To: From: Amit Langote Date: Wed, 8 Apr 2026 23:26:21 +0900 X-Gm-Features: AQROBzB9N5kRjo56WUjD1eUUTG0hl8yStU-ojRg-VSjN8uY-CEsGW52cZENzwO8 Message-ID: Subject: Re: Eliminating SPI / SQL from some RI triggers - take 3 To: Evan Montgomery-Recht Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000015e5c1064ef3b0ef" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000015e5c1064ef3b0ef Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 8, 2026 at 6:58=E2=80=AFPM Amit Langote wrote: > On Wed, Apr 8, 2026 at 10:23=E2=80=AFAM Amit Langote wrote: > > On Tue, Apr 7, 2026 at 10:00=E2=80=AFPM Evan Montgomery-Recht > > wrote: > > > The patch also adds a test module (test_spi_func) with a C function > > > that executes SQL via SPI_connect/SPI_execute/SPI_finish, since this > > > crash cannot be triggered from PL/pgSQL. The test exercises the > > > C-level SPI INSERT with multiple FK constraints, FK violations, and > > > nested PL/pgSQL-calls-C-SPI (matching the PostGIS call pattern). > > I applied only the test module changes and it passes (without > crashing) even without your proposed fix. It seems that's because the > C function in test_spi_func calling SPI is using the same resource > owner as the parent SELECT. I think you'd need to create a resource > owner manually in the spi_exec() C function to reproduce the crash, as > done in the attached 0001, which contains the src/test changes > extracted from your patch modified as described, including renaming > the C function to spi_exec_sql(). > > Also, the test cases that call spi_exec() (_sql()) directly from a > SELECT don't actually exercise the crash path because there is no > outer trigger-firing loop active. query_depth is 0 inside the inner > SPI's AfterTriggerEndQuery, so the old guard wouldn't suppress the > callback there anyway. The critical case requires spi_exec_sql() to be > called from inside an AFTER trigger, where query_depth > 0 causes the > guard to defer the callback past the inner resource owner's lifetime. > I've added that test case. I kept your original test cases as they > still provide useful coverage of C-level SPI FK behavior even if they > don't exercise the crash path specifically. Maybe your original > PostGIS test suite that hit the crash did have the right structure, > but that's not reflected in the patch as far as I can tell. > > I've also renamed the module to test_spi_resowner to better reflect > what it's about. > > For the fix, I have a different proposal. As you observed, the > query_depth > 0 early return in FireAfterTriggerBatchCallbacks() means > that the nested SPI's callbacks get called under the outer resource > owner, which may not be the same as the one that SPI used. I think it > was a mistake to have that early return in the first place. Instead we > could remember for each callback what firing level it should be called > at, so the nested SPI's callbacks fire before returning to the parent > level and parent-level callbacks fire when the parent level completes. > I have implemented that in the attached 0002 along with transaction > boundary cleanup of callbacks, which passes the check-world for me, > but I'll need to stare some more at it before committing. > > Let me know if this also fixes your own in-house test suite or if you > have any other suggestions or if you think I am missing something. One more cleanup patch attached as 0003: afterTriggerFiringDepth was added by commit 5c54c3ed1 as a file-static variable, which in hindsight should have been a field in AfterTriggersData alongside the other per-transaction after-trigger state. This patch makes that correction. One alternative design worth considering for 0002: storing batch_callbacks per query level in AfterTriggersQueryData rather than as a single list in AfterTriggersData, so callbacks naturally live at the query level where they were registered and get cleaned up with AfterTriggerFreeQuery on abort. Deferred constraints still need a top-level list in AfterTriggersData since they fire outside any query level. FireAfterTriggerBatchCallbacks() takes a list parameter and the caller passes either the query-level or top-level list as appropriate. This eliminates the need for firing_depth-matched firing entirely. I did that in 0004. I think I like it over 0002. Will look more closely tomorrow morning. -- Thanks, Amit Langote --00000000000015e5c1064ef3b0ef Content-Type: application/octet-stream; name="v3-0004-Store-batch-callbacks-at-the-appropriate-level-ra.patch" Content-Disposition: attachment; filename="v3-0004-Store-batch-callbacks-at-the-appropriate-level-ra.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnq531tm0 RnJvbSAxNGViODdkMDY4ZTQ2OTM5YzMyNWMyZjA3MGM2NmY0ZGZiNGYwNjRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgOCBBcHIgMjAyNiAyMzoyMjo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg NC80XSBTdG9yZSBiYXRjaCBjYWxsYmFja3MgYXQgdGhlIGFwcHJvcHJpYXRlIGxldmVsIHJhdGhl cgogdGhhbiBkZXB0aC1tYXRjaGluZwoKSW5zdGVhZCBvZiB0YWdnaW5nIGVhY2ggQWZ0ZXJUcmln Z2VyQ2FsbGJhY2tJdGVtIHdpdGggYSBmaXJpbmcgZGVwdGgKYW5kIG1hdGNoaW5nIGF0IGludm9j YXRpb24gdGltZSwgc3RvcmUgY2FsbGJhY2tzIGRpcmVjdGx5IGF0IHRoZSBsZXZlbAp3aGVyZSB0 aGV5IHNob3VsZCBmaXJlOiBpbiBBZnRlclRyaWdnZXJzUXVlcnlEYXRhLmJhdGNoX2NhbGxiYWNr cyBmb3IKaW1tZWRpYXRlIGNvbnN0cmFpbnRzIChmaXJlZCBieSBBZnRlclRyaWdnZXJFbmRRdWVy eSkgYW5kIGluCkFmdGVyVHJpZ2dlcnNEYXRhLmJhdGNoX2NhbGxiYWNrcyBmb3IgZGVmZXJyZWQg Y29uc3RyYWludHMgKGZpcmVkIGJ5CkFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCBhbmQgQWZ0ZXJU cmlnZ2VyU2V0U3RhdGUpLgoKUmVnaXN0ZXJBZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrKCkgcm91 dGVzIHRoZSBjYWxsYmFjayB0byB0aGUgY3VycmVudApxdWVyeS1sZXZlbCBsaXN0IHdoZW4gcXVl cnlfZGVwdGggPj0gMCwgYW5kIHRvIHRoZSB0b3AtbGV2ZWwgbGlzdApvdGhlcndpc2UgKGRlZmVy cmVkIGZpcmluZyBhdCBDT01NSVQpLgoKRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tzKCkg aXMgc2ltcGxpZmllZCB0byBqdXN0IGl0ZXJhdGUgYW5kCmludm9rZSB0aGUgcGFzc2VkIGxpc3Qu ICBNZW1vcnkgY2xlYW51cCBpcyBoYW5kbGVkIGJ5IHRoZSBjYWxsZXI6CkFmdGVyVHJpZ2dlckZy ZWVRdWVyeSgpIGZvciBxdWVyeS1sZXZlbCBjYWxsYmFja3MgYW5kCkFmdGVyVHJpZ2dlckVuZFhh Y3QoKSBmb3IgdGhlIHRvcC1sZXZlbCBsaXN0LgoKVGhpcyBlbGltaW5hdGVzIHRoZSBmaXJpbmdf ZGVwdGggZmllbGQgZnJvbSBBZnRlclRyaWdnZXJDYWxsYmFja0l0ZW0KYW5kIHRoZSBkZXB0aC1t YXRjaGVkIGl0ZXJhdGlvbiBsb2dpYywgcmVwbGFjaW5nIGl0IHdpdGggbmF0dXJhbApsaXN0LWxl dmVsIHNjb3BpbmcuICBUaGUgZmlyaW5nX2RlcHRoIGNvdW50ZXIgaW4gQWZ0ZXJUcmlnZ2Vyc0Rh dGEKaXMgcmV0YWluZWQgc29sZWx5IGZvciBBZnRlclRyaWdnZXJJc0FjdGl2ZSgpLgotLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyB8IDkwICsrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggYmJjMjQwNWNjNGEuLjk5M2EwMGFlYzhj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC0zOTAyLDggKzM5MDIsOCBAQCB0eXBlZGVmIHN0 cnVjdCBBZnRlclRyaWdnZXJzRGF0YQogCSAqLwogCWludAkJCWZpcmluZ19kZXB0aDsKIAotCUxp c3QJICAgKmJhdGNoX2NhbGxiYWNrczsJLyogTGlzdCBvZiBBZnRlclRyaWdnZXJDYWxsYmFja0l0 ZW0sCi0JCQkJCQkJCQkgKiBwb3NzaWJseSBmcm9tIG11bHRpcGxlIGZpcmluZyBkZXB0aHMgKi8K KwlMaXN0CSAgICpiYXRjaF9jYWxsYmFja3M7CS8qIExpc3Qgb2YgQWZ0ZXJUcmlnZ2VyQ2FsbGJh Y2tJdGVtOworCQkJCQkJCQkJICogZm9yIGRlZmVycmVkIGNvbnN0cmFpbnRzICovCiB9IEFmdGVy VHJpZ2dlcnNEYXRhOwogCiBzdHJ1Y3QgQWZ0ZXJUcmlnZ2Vyc1F1ZXJ5RGF0YQpAQCAtMzkxMSw2 ICszOTExLDcgQEAgc3RydWN0IEFmdGVyVHJpZ2dlcnNRdWVyeURhdGEKIAlBZnRlclRyaWdnZXJF dmVudExpc3QgZXZlbnRzOwkvKiBldmVudHMgcGVuZGluZyBmcm9tIHRoaXMgcXVlcnkgKi8KIAlU dXBsZXN0b3Jlc3RhdGUgKmZkd190dXBsZXN0b3JlOwkvKiBmb3JlaWduIHR1cGxlcyBmb3Igc2Fp ZCBldmVudHMgKi8KIAlMaXN0CSAgICp0YWJsZXM7CQkJLyogbGlzdCBvZiBBZnRlclRyaWdnZXJz VGFibGVEYXRhLCBzZWUgYmVsb3cgKi8KKwlMaXN0ICAgICAgICpiYXRjaF9jYWxsYmFja3M7ICAg IC8qIExpc3Qgb2YgQWZ0ZXJUcmlnZ2VyQ2FsbGJhY2tJdGVtICovCiB9OwogCiBzdHJ1Y3QgQWZ0 ZXJUcmlnZ2Vyc1RyYW5zRGF0YQpAQCAtMzk0NCw4ICszOTQ1LDYgQEAgc3RydWN0IEFmdGVyVHJp Z2dlcnNUYWJsZURhdGEKIHR5cGVkZWYgc3RydWN0IEFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbQog ewogCUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2sgY2FsbGJhY2s7Ci0JaW50CQkJZmlyaW5nX2Rl cHRoOwkvKiBhZnRlclRyaWdnZXJGaXJpbmdEZXB0aCB3aGVuIHJlZ2lzdGVyZWQ7Ci0JCQkJCQkJ CSAqIGNhbGxiYWNrIGZpcmVzIG9ubHkgYXQgdGhpcyBkZXB0aCAqLwogCXZvaWQJICAgKmFyZzsK IH0gQWZ0ZXJUcmlnZ2VyQ2FsbGJhY2tJdGVtOwogCkBAIC0zOTg0LDcgKzM5ODMsNyBAQCBzdGF0 aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUFkZEl0ZW0oU2V0Q29uc3Ry YWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9pZCB0Z29pZCwgYm9vbCB0Z2lzZGVmZXJy ZWQpOwogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBD bWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAotc3RhdGljIHZvaWQgRmlyZUFmdGVyVHJp Z2dlckJhdGNoQ2FsbGJhY2tzKHZvaWQpOworc3RhdGljIHZvaWQgRmlyZUFmdGVyVHJpZ2dlckJh dGNoQ2FsbGJhY2tzKExpc3QgKmNhbGxiYWNrcyk7CiAKIC8qCiAgKiBHZXQgdGhlIEZEVyB0dXBs ZXN0b3JlIGZvciB0aGUgY3VycmVudCB0cmlnZ2VyIHF1ZXJ5IGxldmVsLCBjcmVhdGluZyBpdApA QCAtNTIzNywxNyArNTIzNiwxNSBAQCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0 ZSkKIAkvKgogCSAqIEZpcmUgYmF0Y2ggY2FsbGJhY2tzIGJlZm9yZSByZWxlYXNpbmcgcXVlcnkt bGV2ZWwgc3RvcmFnZSBhbmQgYmVmb3JlCiAJICogZGVjcmVtZW50aW5nIHF1ZXJ5X2RlcHRoLiAg Q2FsbGJhY2tzIG1heSBkbyByZWFsIHdvcmsgKGluZGV4IHByb2JlcywKLQkgKiBlcnJvciByZXBv cnRpbmcpIGFuZCByZWx5IG9uIHF1ZXJ5X2RlcHRoIHN0aWxsIHJlZmxlY3RpbmcgdGhlIGN1cnJl bnQKLQkgKiBiYXRjaCBsZXZlbCBzbyB0aGF0IG5lc3RlZCBjYWxscyBmcm9tIFNQSSBpbnNpZGUg QUZURVIgdHJpZ2dlcnMgYXJlCi0JICogY29ycmVjdGx5IHN1cHByZXNzZWQgYnkgRmlyZUFmdGVy VHJpZ2dlckJhdGNoQ2FsbGJhY2tzJ3MgZGVwdGggZ3VhcmQuCisJICogZXJyb3IgcmVwb3J0aW5n KS4KIAkgKi8KLQlGaXJlQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFja3MoKTsKKwlGaXJlQWZ0ZXJU cmlnZ2VyQmF0Y2hDYWxsYmFja3MocXMtPmJhdGNoX2NhbGxiYWNrcyk7CisJYWZ0ZXJUcmlnZ2Vy cy5maXJpbmdfZGVwdGgtLTsKIAogCS8qIFJlbGVhc2UgcXVlcnktbGV2ZWwtbG9jYWwgc3RvcmFn ZSwgaW5jbHVkaW5nIHR1cGxlc3RvcmVzIGlmIGFueSAqLwogCUFmdGVyVHJpZ2dlckZyZWVRdWVy eSgmYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXSk7 CiAKIAlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoLS07Ci0JYWZ0ZXJUcmlnZ2Vycy5maXJpbmdf ZGVwdGgtLTsKIH0KIAogCkBAIC01MzA0LDYgKzUzMDEsOSBAQCBBZnRlclRyaWdnZXJGcmVlUXVl cnkoQWZ0ZXJUcmlnZ2Vyc1F1ZXJ5RGF0YSAqcXMpCiAJICovCiAJcXMtPnRhYmxlcyA9IE5JTDsK IAlsaXN0X2ZyZWVfZGVlcCh0YWJsZXMpOworCisJbGlzdF9mcmVlX2RlZXAocXMtPmJhdGNoX2Nh bGxiYWNrcyk7CisJcXMtPmJhdGNoX2NhbGxiYWNrcyA9IE5JTDsKIH0KIAogCkBAIC01MzUzLDgg KzUzNTMsNyBAQCBBZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9pZCkKIAl9CiAKIAkvKiBGbHVz aCBhbnkgZmFzdC1wYXRoIGJhdGNoZXMgYWNjdW11bGF0ZWQgYnkgdGhlIHRyaWdnZXJzIGp1c3Qg ZmlyZWQuICovCi0JRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tzKCk7Ci0KKwlGaXJlQWZ0 ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFja3MoYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9jYWxsYmFja3MpOwog CWFmdGVyVHJpZ2dlcnMuZmlyaW5nX2RlcHRoLS07CiAKIAkvKgpAQCAtNTQyNCwxNCArNTQyMyw4 IEBAIEFmdGVyVHJpZ2dlckVuZFhhY3QoYm9vbCBpc0NvbW1pdCkKIAogCWFmdGVyVHJpZ2dlcnMu ZmlyaW5nX2RlcHRoID0gMDsKIAotCUFzc2VydChhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNr cyA9PSBOSUwgfHwgIWlzQ29tbWl0KTsKLQotCS8qIE9uIGFib3J0LCBkaXNjYXJkIGFueSBwZW5k aW5nIGNhbGxiYWNrcyB3aXRob3V0IGZpcmluZyB0aGVtLiAqLwotCWlmICghaXNDb21taXQpCi0J ewotCQlsaXN0X2ZyZWVfZGVlcChhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyk7Ci0JCWFm dGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzID0gTklMOwotCX0KKwlsaXN0X2ZyZWVfZGVlcChh ZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyk7CisJYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9jYWxs YmFja3MgPSBOSUw7CiB9CiAKIC8qCkBAIC01NzMyLDYgKzU3MjUsNyBAQCBBZnRlclRyaWdnZXJF bmxhcmdlUXVlcnlTdGF0ZSh2b2lkKQogCQlxcy0+ZXZlbnRzLnRhaWxmcmVlID0gTlVMTDsKIAkJ cXMtPmZkd190dXBsZXN0b3JlID0gTlVMTDsKIAkJcXMtPnRhYmxlcyA9IE5JTDsKKwkJcXMtPmJh dGNoX2NhbGxiYWNrcyA9IE5JTDsKIAogCQkrK2luaXRfZGVwdGg7CiAJfQpAQCAtNjExNCw3ICs2 MTA4LDkgQEAgQWZ0ZXJUcmlnZ2VyU2V0U3RhdGUoQ29uc3RyYWludHNTZXRTdG10ICpzdG10KQog CQkvKgogCQkgKiBGbHVzaCBhbnkgZmFzdC1wYXRoIGJhdGNoZXMgYWNjdW11bGF0ZWQgYnkgdGhl IHRyaWdnZXJzIGp1c3QgZmlyZWQuCiAJCSAqLwotCQlGaXJlQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxs YmFja3MoKTsKKwkJRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tzKGFmdGVyVHJpZ2dlcnMu YmF0Y2hfY2FsbGJhY2tzKTsKKwkJbGlzdF9mcmVlX2RlZXAoYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9j YWxsYmFja3MpOworCQlhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyA9IE5JTDsKIAkJYWZ0 ZXJUcmlnZ2Vycy5maXJpbmdfZGVwdGgtLTsKIAogCQlpZiAoc25hcHNob3Rfc2V0KQpAQCAtNjg0 Myw2MCArNjgzOSwzOCBAQCBSZWdpc3RlckFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2soQWZ0ZXJU cmlnZ2VyQmF0Y2hDYWxsYmFjayBjYWxsYmFjaywKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAlpdGVtID0gcGFsbG9jKHNpemVvZihBZnRl clRyaWdnZXJDYWxsYmFja0l0ZW0pKTsKIAlpdGVtLT5jYWxsYmFjayA9IGNhbGxiYWNrOwotCWl0 ZW0tPmZpcmluZ19kZXB0aCA9IGFmdGVyVHJpZ2dlcnMuZmlyaW5nX2RlcHRoOwogCWl0ZW0tPmFy ZyA9IGFyZzsKLQlhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyA9Ci0JCWxhcHBlbmQoYWZ0 ZXJUcmlnZ2Vycy5iYXRjaF9jYWxsYmFja3MsIGl0ZW0pOworCWlmIChhZnRlclRyaWdnZXJzLnF1 ZXJ5X2RlcHRoID49IDApCisJeworCQlBZnRlclRyaWdnZXJzUXVlcnlEYXRhICpxcyA9CisJCQkm YWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXTsKKwkJ cXMtPmJhdGNoX2NhbGxiYWNrcyA9IGxhcHBlbmQocXMtPmJhdGNoX2NhbGxiYWNrcywgaXRlbSk7 CisJfQorCWVsc2UKKwkJYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9jYWxsYmFja3MgPQorCQkJbGFwcGVu ZChhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcywgaXRlbSk7CiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CiB9CiAKIC8qCiAgKiBGaXJlQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFj a3MKLSAqCQlJbnZva2UgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgYXQgdGhlIGN1cnJlbnQgZmlyaW5n IGRlcHRoLgotICoKLSAqIEVhY2ggY2FsbGJhY2sgaXMgdGFnZ2VkIHdpdGggdGhlIGFmdGVyVHJp Z2dlckZpcmluZ0RlcHRoIGF0IHJlZ2lzdHJhdGlvbgotICogdGltZS4gIE9ubHkgY2FsbGJhY2tz IG1hdGNoaW5nIHRoZSBjdXJyZW50IGRlcHRoIGFyZSBpbnZva2VkOyB0aGUgcmVzdAotICogYXJl IHJldGFpbmVkIGZvciB3aGVuIHRoZWlyIG93biBkZXB0aCBmaXJlcy4gIFRoaXMgZW5zdXJlcyB0 aGF0IG5lc3RlZAotICogdHJpZ2dlci1maXJpbmcgY29udGV4dHMgKGUuZy4sIFNQSSBjYWxscyBp bnNpZGUgQUZURVIgdHJpZ2dlcnMpIG9ubHkKLSAqIGZpcmUgdGhlIGNhbGxiYWNrcyB0aGV5IHJl Z2lzdGVyZWQsIGxlYXZpbmcgb3V0ZXItbGV2ZWwgY2FsbGJhY2tzIGludGFjdAotICogdW50aWwg dGhlaXIgZmlyaW5nIGRlcHRoIGlzIHJlYWNoZWQuCisgKgkJSW52b2tlIGFsbCBjYWxsYmFja3Mg aW4gdGhlIGdpdmVuIGxpc3QuCiAgKgotICogVGhlIGxpc3QgaXMgdXBkYXRlZCBiZWZvcmUgYW55 IGNhbGxiYWNrcyBhcmUgaW52b2tlZCBzbyB0aGF0IGlmIGEKLSAqIGNhbGxiYWNrIHRocm93cyBh biBFUlJPUiB0aGUgbGlzdCBpcyBhbHJlYWR5IGluIGEgY29uc2lzdGVudCBzdGF0ZS4KKyAqIE1l bW9yeSBjbGVhbnVwIG9mIHRoZSBsaXN0IGFuZCBpdHMgaXRlbXMgaXMgaGFuZGxlZCBieSB0aGUg Y2FsbGVyCisgKiAoQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5IGZvciBxdWVyeS1sZXZlbCBjYWxsYmFj a3MsIEFmdGVyVHJpZ2dlckVuZFhhY3QKKyAqIGZvciB0b3AtbGV2ZWwgZGVmZXJyZWQgY2FsbGJh Y2tzKS4KICAqLwogc3RhdGljIHZvaWQKLUZpcmVBZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrcyh2 b2lkKQorRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tzKExpc3QgKmNhbGxiYWNrcykKIHsK LQlMaXN0CSAgICpyZW1haW5pbmcgPSBOSUw7Ci0JTGlzdAkgICAqdG9fZmlyZSA9IE5JTDsKIAlM aXN0Q2VsbCAgICpsYzsKIAotCS8qIHJlbWFpbmluZyBhbmQgdG9fZmlyZSBsaXN0cyBtdXN0IHN1 cnZpdmUgdW50aWwgY2FsbGJhY2tzIGNvbXBsZXRlICovCi0JTWVtb3J5Q29udGV4dCBvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKLQotCWZvcmVh Y2gobGMsIGFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzKQotCXsKLQkJQWZ0ZXJUcmlnZ2Vy Q2FsbGJhY2tJdGVtICppdGVtID0gbGZpcnN0KGxjKTsKLQotCQlpZiAoaXRlbS0+ZmlyaW5nX2Rl cHRoID09IGFmdGVyVHJpZ2dlcnMuZmlyaW5nX2RlcHRoKQotCQkJdG9fZmlyZSA9IGxhcHBlbmQo dG9fZmlyZSwgaXRlbSk7Ci0JCWVsc2UKLQkJCXJlbWFpbmluZyA9IGxhcHBlbmQocmVtYWluaW5n LCBpdGVtKTsKLQl9Ci0KLQlsaXN0X2ZyZWUoYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9jYWxsYmFja3Mp OwotCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzID0gcmVtYWluaW5nOwotCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOwotCi0JLyogTm93IGZpcmU7IGlmIG9uZSB0aHJvd3MsIHRo ZSBsaXN0IGlzIGFscmVhZHkgY2xlYW4gKi8KLQlmb3JlYWNoKGxjLCB0b19maXJlKQorCWZvcmVh Y2gobGMsIGNhbGxiYWNrcykKIAl7CiAJCUFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbSAqaXRlbSA9 IGxmaXJzdChsYyk7CiAKIAkJaXRlbS0+Y2FsbGJhY2soaXRlbS0+YXJnKTsKLQkJcGZyZWUoaXRl bSk7CiAJfQotCWxpc3RfZnJlZSh0b19maXJlKTsKIH0KIAogLyoKLS0gCjIuNDcuMwoK --00000000000015e5c1064ef3b0ef Content-Type: application/octet-stream; name="v3-0002-Fix-RI-fast-path-crash-under-nested-C-level-SPI.patch" Content-Disposition: attachment; filename="v3-0002-Fix-RI-fast-path-crash-under-nested-C-level-SPI.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnq531tx2 RnJvbSAzMTJmYWQxYzM2ZTA2NGFiOWU3ZGMxNzgwNTc1ZThjMDdmMzAwNzUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgOCBBcHIgMjAyNiAxODoxNzo0MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Mi80XSBGaXggUkkgZmFzdC1wYXRoIGNyYXNoIHVuZGVyIG5lc3RlZCBDLWxldmVsIFNQSQoKV2hl biBhIEMtbGFuZ3VhZ2UgZnVuY3Rpb24gdXNlcyBTUElfY29ubmVjdC9TUElfZXhlY3V0ZS9TUElf ZmluaXNoIHRvCklOU0VSVCBpbnRvIGEgdGFibGUgd2l0aCBGSyBjb25zdHJhaW50cywgdGhlIEZL IEFGVEVSIHRyaWdnZXJzCnJlZ2lzdGVyIHJpX0Zhc3RQYXRoRW5kQmF0Y2ggYXMgYSBiYXRjaCBj YWxsYmFjayBhbmQgb3BlbiBQSyByZWxhdGlvbnMKdW5kZXIgdGhlIFNQSSBwb3J0YWwncyByZXNv dXJjZSBvd25lci4gIEZpcmVBZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrcwp3YXMgc3VwcHJlc3Nl ZCBhdCB0aGF0IHBvaW50IGJ5IHRoZSBxdWVyeV9kZXB0aCA+IDAgZ3VhcmQsIGRlZmVycmluZwp0 ZWFyZG93biB0byB0aGUgb3V0ZXIgcXVlcnkncyBBZnRlclRyaWdnZXJFbmRRdWVyeS4gIEJ5IHRo ZW4gdGhlIFNQSQpwb3J0YWwncyByZXNvdXJjZSBvd25lciBoYWQgYmVlbiByZWxlYXNlZCwgZGVj cmVtZW50aW5nIHRoZSBjYWNoZWQKcmVsYXRpb25zJyByZWZjb3VudHMgdG8gemVyby4gIHJpX0Zh c3RQYXRoVGVhcmRvd24gdGhlbiBjcmFzaGVkCmF0dGVtcHRpbmcgdG8gY2xvc2UgdGhlbToKCiAg VFJBUDogZmFpbGVkIEFzc2VydCgicmVsLT5yZF9yZWZjbnQgPiAwIikKCkZpeCBieSB0YWdnaW5n IGVhY2ggQWZ0ZXJUcmlnZ2VyQ2FsbGJhY2tJdGVtIHdpdGggdGhlCmFmdGVyVHJpZ2dlckZpcmlu Z0RlcHRoIChhZGRlZCBpbiA1YzU0YzNlZDFiOSkgYXQgcmVnaXN0cmF0aW9uIHRpbWUKYW5kIGZp cmluZyBvbmx5IGNhbGxiYWNrcyB3aG9zZSBkZXB0aCBtYXRjaGVzIHRoZSBjdXJyZW50IGRlcHRo LiAgVGhpcwpyZXBsYWNlcyB0aGUgcXVlcnlfZGVwdGggPiAwIHN1cHByZXNzaW9uIGd1YXJkLiBD YWxsYmFja3Mgbm93IGZpcmUgYXQKdGhlIHNhbWUgZmlyaW5nIGRlcHRoIGF0IHdoaWNoIHRoZXkg d2VyZSByZWdpc3RlcmVkLCB3aGlsZSB0aGUKcmVzb3VyY2Ugb3duZXIgdGhhdCB3YXMgYWN0aXZl IGR1cmluZyByZWdpc3RyYXRpb24gaXMgc3RpbGwgYWxpdmUsCmVsaW1pbmF0aW5nIHRoZSBtaXNt YXRjaC4KCldoaWxlIGF0IGl0LCBlbnN1cmUgY2FsbGJhY2tzIGFyZSBwcm9wZXJseSBhY2NvdW50 ZWQgZm9yIGF0IGFsbAp0cmFuc2FjdGlvbiBib3VuZGFyaWVzLCBhcyBjbGVhbnVwIG9mIGI3YjI3 ZWI0MWE1YzogYXNzZXJ0IG9uIGNvbW1pdAp0aGF0IG5vIGNhbGxiYWNrcyByZW1haW4gdW5maXJl ZCwgYW5kIGRpc2NhcmQgYW55IHJlbWFpbmluZyBjYWxsYmFja3MKb24gdHJhbnNhY3Rpb24gYWJv cnQuICBBbHNvIHJlc3RydWN0dXJlIEZpcmVBZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrcygpCnRv IHVwZGF0ZSBhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyBiZWZvcmUgaW52b2tpbmcgYW55 IGNhbGxiYWNrcywKc28gdGhhdCBpZiBhIGNhbGxiYWNrIHRocm93cyBhbiBFUlJPUiB0aGUgbGlz dCBpcyBhbHJlYWR5IGluIGEKY29uc2lzdGVudCBzdGF0ZS4KCk5vdGUgdGhhdCByaV9QZXJmb3Jt Q2hlY2soKSB1c2VzIGZpcmVfdHJpZ2dlcnM9ZmFsc2UsIHdoaWNoIHNraXBzCkFmdGVyVHJpZ2dl ckJlZ2luUXVlcnkvRW5kUXVlcnkgYW5kIHRodXMgbmV2ZXIgaW5jcmVtZW50cwphZnRlclRyaWdn ZXJGaXJpbmdEZXB0aDsgZXZlbnRzIHF1ZXVlZCB0aGVyZSBmaXJlIGF0IHRoZSBvdXRlcgpxdWVy eSdzIGRlcHRoIGFuZCBhcmUgdW5hZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4KClJlcG9ydGVkLWJ5 OiBFdmFuIE1vbnRnb21lcnktUmVjaHQgPG1vbnRnZUBtaWFuZXR3b3Jrcy5uZXQ+CkF1dGhvcjog RXZhbiBNb250Z29tZXJ5LVJlY2h0IDxtb250Z2VAbWlhbmV0d29ya3MubmV0PgpDby1hdXRob3Jl ZC1ieTogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUVnN3B3Y0tmMDFGbURxRkFmLUh6dV9wWW5NWVNjWV9PdGlk LXBlOXV3M0JKNmdxOWdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jCmluZGV4IGM0MTAwNWJhNDRlLi5mNTk1MzdmZTg2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwpAQCAtMzkzNSw2ICszOTM1LDggQEAgc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEK IHR5cGVkZWYgc3RydWN0IEFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbQogewogCUFmdGVyVHJpZ2dl ckJhdGNoQ2FsbGJhY2sgY2FsbGJhY2s7CisJaW50CQkJZmlyaW5nX2RlcHRoOwkvKiBhZnRlclRy aWdnZXJGaXJpbmdEZXB0aCB3aGVuIHJlZ2lzdGVyZWQ7CisJCQkJCQkJCSAqIGNhbGxiYWNrIGZp cmVzIG9ubHkgYXQgdGhpcyBkZXB0aCAqLwogCXZvaWQJICAgKmFyZzsKIH0gQWZ0ZXJUcmlnZ2Vy Q2FsbGJhY2tJdGVtOwogCkBAIC01NDE5LDYgKzU0MjEsMTUgQEAgQWZ0ZXJUcmlnZ2VyRW5kWGFj dChib29sIGlzQ29tbWl0KQogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGggPSAtMTsKIAogCWFm dGVyVHJpZ2dlckZpcmluZ0RlcHRoID0gMDsKKworCUFzc2VydChhZnRlclRyaWdnZXJzLmJhdGNo X2NhbGxiYWNrcyA9PSBOSUwgfHwgIWlzQ29tbWl0KTsKKworCS8qIE9uIGFib3J0LCBkaXNjYXJk IGFueSBwZW5kaW5nIGNhbGxiYWNrcyB3aXRob3V0IGZpcmluZyB0aGVtLiAqLworCWlmICghaXND b21taXQpCisJeworCQlsaXN0X2ZyZWVfZGVlcChhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNr cyk7CisJCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzID0gTklMOworCX0KIH0KIAogLyoK QEAgLTY4MzAsNiArNjg0MSw3IEBAIFJlZ2lzdGVyQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFjayhB ZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrIGNhbGxiYWNrLAogCW9sZGN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCWl0ZW0gPSBwYWxsb2Moc2l6ZW9m KEFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbSkpOwogCWl0ZW0tPmNhbGxiYWNrID0gY2FsbGJhY2s7 CisJaXRlbS0+ZmlyaW5nX2RlcHRoID0gYWZ0ZXJUcmlnZ2VyRmlyaW5nRGVwdGg7CiAJaXRlbS0+ YXJnID0gYXJnOwogCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzID0KIAkJbGFwcGVuZChh ZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcywgaXRlbSk7CkBAIC02ODM4LDMxICs2ODUwLDUx IEBAIFJlZ2lzdGVyQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFjayhBZnRlclRyaWdnZXJCYXRjaENh bGxiYWNrIGNhbGxiYWNrLAogCiAvKgogICogRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tz Ci0gKgkJSW52b2tlIGFuZCBjbGVhciBhbGwgcmVnaXN0ZXJlZCBiYXRjaCBjYWxsYmFja3MuCisg KgkJSW52b2tlIGNhbGxiYWNrcyByZWdpc3RlcmVkIGF0IHRoZSBjdXJyZW50IGZpcmluZyBkZXB0 aC4KKyAqCisgKiBFYWNoIGNhbGxiYWNrIGlzIHRhZ2dlZCB3aXRoIHRoZSBhZnRlclRyaWdnZXJG aXJpbmdEZXB0aCBhdCByZWdpc3RyYXRpb24KKyAqIHRpbWUuICBPbmx5IGNhbGxiYWNrcyBtYXRj aGluZyB0aGUgY3VycmVudCBkZXB0aCBhcmUgaW52b2tlZDsgdGhlIHJlc3QKKyAqIGFyZSByZXRh aW5lZCBmb3Igd2hlbiB0aGVpciBvd24gZGVwdGggZmlyZXMuICBUaGlzIGVuc3VyZXMgdGhhdCBu ZXN0ZWQKKyAqIHRyaWdnZXItZmlyaW5nIGNvbnRleHRzIChlLmcuLCBTUEkgY2FsbHMgaW5zaWRl IEFGVEVSIHRyaWdnZXJzKSBvbmx5CisgKiBmaXJlIHRoZSBjYWxsYmFja3MgdGhleSByZWdpc3Rl cmVkLCBsZWF2aW5nIG91dGVyLWxldmVsIGNhbGxiYWNrcyBpbnRhY3QKKyAqIHVudGlsIHRoZWly IGZpcmluZyBkZXB0aCBpcyByZWFjaGVkLgogICoKLSAqIE9ubHkgZmlyZXMgYXQgdGhlIG91dGVy bW9zdCBxdWVyeSBsZXZlbCAocXVlcnlfZGVwdGggPT0gMCkgb3IgZnJvbQotICogdG9wLWxldmVs IG9wZXJhdGlvbnMgKHF1ZXJ5X2RlcHRoID09IC0xLCBlLmcuIEFmdGVyVHJpZ2dlckZpcmVEZWZl cnJlZAotICogYXQgQ09NTUlUKS4gIE5lc3RlZCBxdWVyaWVzIGZyb20gU1BJIGluc2lkZSBBRlRF UiB0cmlnZ2VycyBydW4gYXQKLSAqIGRlcHRoID4gMCBhbmQgbXVzdCBub3QgdGVhciBkb3duIHJl c291cmNlcyB0aGUgb3V0ZXIgYmF0Y2ggc3RpbGwgbmVlZHMuCisgKiBUaGUgbGlzdCBpcyB1cGRh dGVkIGJlZm9yZSBhbnkgY2FsbGJhY2tzIGFyZSBpbnZva2VkIHNvIHRoYXQgaWYgYQorICogY2Fs bGJhY2sgdGhyb3dzIGFuIEVSUk9SIHRoZSBsaXN0IGlzIGFscmVhZHkgaW4gYSBjb25zaXN0ZW50 IHN0YXRlLgogICovCiBzdGF0aWMgdm9pZAogRmlyZUFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2tz KHZvaWQpCiB7CisJTGlzdAkgICAqcmVtYWluaW5nID0gTklMOworCUxpc3QJICAgKnRvX2ZpcmUg PSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAKLQlpZiAoYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0 aCA+IDApCi0JCXJldHVybjsKKwkvKiByZW1haW5pbmcgYW5kIHRvX2ZpcmUgbGlzdHMgbXVzdCBz dXJ2aXZlIHVudGlsIGNhbGxiYWNrcyBjb21wbGV0ZSAqLworCU1lbW9yeUNvbnRleHQgb2xkY3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAKLQlBc3Nl cnQoYWZ0ZXJUcmlnZ2VyRmlyaW5nRGVwdGggPiAwKTsKIAlmb3JlYWNoKGxjLCBhZnRlclRyaWdn ZXJzLmJhdGNoX2NhbGxiYWNrcykKIAl7CiAJCUFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbSAqaXRl bSA9IGxmaXJzdChsYyk7CiAKLQkJaXRlbS0+Y2FsbGJhY2soaXRlbS0+YXJnKTsKKwkJaWYgKGl0 ZW0tPmZpcmluZ19kZXB0aCA9PSBhZnRlclRyaWdnZXJGaXJpbmdEZXB0aCkKKwkJCXRvX2ZpcmUg PSBsYXBwZW5kKHRvX2ZpcmUsIGl0ZW0pOworCQllbHNlCisJCQlyZW1haW5pbmcgPSBsYXBwZW5k KHJlbWFpbmluZywgaXRlbSk7CiAJfQogCi0JbGlzdF9mcmVlX2RlZXAoYWZ0ZXJUcmlnZ2Vycy5i YXRjaF9jYWxsYmFja3MpOwotCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tzID0gTklMOwor CWxpc3RfZnJlZShhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcyk7CisJYWZ0ZXJUcmlnZ2Vy cy5iYXRjaF9jYWxsYmFja3MgPSByZW1haW5pbmc7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN4dCk7CisKKwkvKiBOb3cgZmlyZTsgaWYgb25lIHRocm93cywgdGhlIGxpc3QgaXMgYWxyZWFk eSBjbGVhbiAqLworCWZvcmVhY2gobGMsIHRvX2ZpcmUpCisJeworCQlBZnRlclRyaWdnZXJDYWxs YmFja0l0ZW0gKml0ZW0gPSBsZmlyc3QobGMpOworCisJCWl0ZW0tPmNhbGxiYWNrKGl0ZW0tPmFy Zyk7CisJCXBmcmVlKGl0ZW0pOworCX0KKwlsaXN0X2ZyZWUodG9fZmlyZSk7CiB9CiAKIC8qCi0t IAoyLjQ3LjMKCg== --00000000000015e5c1064ef3b0ef Content-Type: application/octet-stream; name="v3-0003-Move-afterTriggerFiringDepth-into-AfterTriggersDa.patch" Content-Disposition: attachment; filename="v3-0003-Move-afterTriggerFiringDepth-into-AfterTriggersDa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnq531tt1 RnJvbSA0ZWQ5MGE1Yjc0Yzc3YzVlNGEyZjViMGE2MDJhMDZhMzcyYWVjNzk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgOCBBcHIgMjAyNiAyMzoyMjo0MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg My80XSBNb3ZlIGFmdGVyVHJpZ2dlckZpcmluZ0RlcHRoIGludG8gQWZ0ZXJUcmlnZ2Vyc0RhdGEK ClRoZSBzdGF0aWMgdmFyaWFibGUgYWZ0ZXJUcmlnZ2VyRmlyaW5nRGVwdGggaXMgbG9naWNhbGx5 IHBhcnQgb2YgdGhlCmFmdGVyLXRyaWdnZXIgc3RhdGUuICBNb3ZlIGl0IGludG8gQWZ0ZXJUcmln Z2Vyc0RhdGEgYXMgZmlyaW5nX2RlcHRoLAphbG9uZ3NpZGUgcXVlcnlfZGVwdGggYW5kIHRoZSBv dGhlciBwZXItdHJhbnNhY3Rpb24gYWZ0ZXItdHJpZ2dlcgpzdGF0ZS4KLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMgfCA0MiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IGY1OTUzN2ZlODZlLi5iYmMyNDA1Y2M0YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYwpAQCAtMzg5NCw3ICszODk0LDE2IEBAIHR5cGVkZWYgc3RydWN0IEFm dGVyVHJpZ2dlcnNEYXRhCiAJQWZ0ZXJUcmlnZ2Vyc1RyYW5zRGF0YSAqdHJhbnNfc3RhY2s7CS8q IGFycmF5IG9mIHN0cnVjdHMgc2hvd24gYmVsb3cgKi8KIAlpbnQJCQltYXh0cmFuc2RlcHRoOwkv KiBhbGxvY2F0ZWQgbGVuIG9mIGFib3ZlIGFycmF5ICovCiAKLQlMaXN0CSAgICpiYXRjaF9jYWxs YmFja3M7CS8qIExpc3Qgb2YgQWZ0ZXJUcmlnZ2VyQ2FsbGJhY2tJdGVtICovCisJLyoKKwkgKiBJ bmNyZW1lbnRlZCBhcm91bmQgdGhlIHRyaWdnZXItZmlyaW5nIGxvb3BzIGluIEFmdGVyVHJpZ2dl ckVuZFF1ZXJ5LAorCSAqIEFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCwgYW5kIEFmdGVyVHJpZ2dl clNldFN0YXRlLiAgVXNlZCBieQorCSAqIEFmdGVyVHJpZ2dlcklzQWN0aXZlKCkgYW5kIHRvIHRh ZyBiYXRjaCBjYWxsYmFja3Mgd2l0aCB0aGUgZGVwdGggYXQKKwkgKiB3aGljaCB0aGV5IHNob3Vs ZCBmaXJlLgorCSAqLworCWludAkJCWZpcmluZ19kZXB0aDsKKworCUxpc3QJICAgKmJhdGNoX2Nh bGxiYWNrczsJLyogTGlzdCBvZiBBZnRlclRyaWdnZXJDYWxsYmFja0l0ZW0sCisJCQkJCQkJCQkg KiBwb3NzaWJseSBmcm9tIG11bHRpcGxlIGZpcmluZyBkZXB0aHMgKi8KIH0gQWZ0ZXJUcmlnZ2Vy c0RhdGE7CiAKIHN0cnVjdCBBZnRlclRyaWdnZXJzUXVlcnlEYXRhCkBAIC0zOTQyLDEzICszOTUx LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQWZ0ZXJUcmlnZ2VyQ2FsbGJhY2tJdGVtCiAKIHN0YXRpYyBB ZnRlclRyaWdnZXJzRGF0YSBhZnRlclRyaWdnZXJzOwogCi0vKgotICogSW5jcmVtZW50ZWQgYmVm b3JlIGludm9raW5nIGFmdGVyVHJpZ2dlckludm9rZUV2ZW50cygpLiAgVXNlZCBieQotICogQWZ0 ZXJUcmlnZ2VySXNBY3RpdmUoKSB0byBkZXRlcm1pbmUgd2hldGhlciBiYXRjaCBjYWxsYmFja3Mg d2lsbCBmaXJlLAotICogc28gdGhhdCBSSSB0cmlnZ2VyIGZ1bmN0aW9ucyBjYW4gdGFrZSB0aGUg YmF0Y2hlZCBmYXN0IHBhdGguCi0gKi8KLXN0YXRpYyBpbnQJYWZ0ZXJUcmlnZ2VyRmlyaW5nRGVw dGggPSAwOwotCiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRl LAogCQkJCQkJCQlBZnRlclRyaWdnZXJFdmVudCBldmVudCwKIAkJCQkJCQkJUmVzdWx0UmVsSW5m byAqcmVsSW5mbywKQEAgLTUxMDgsNiArNTExMCw3IEBAIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2 b2lkKQogCSAqLwogCWFmdGVyVHJpZ2dlcnMuZmlyaW5nX2NvdW50ZXIgPSAoQ29tbWFuZElkKSAx OwkvKiBtdXN0bid0IGJlIDAgKi8KIAlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoID0gLTE7CisJ YWZ0ZXJUcmlnZ2Vycy5maXJpbmdfZGVwdGggPSAwOwogCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2Fs bGJhY2tzID0gTklMOwogCiAJLyoKQEAgLTUxMjIsNyArNTEyNSw2IEBAIEFmdGVyVHJpZ2dlckJl Z2luWGFjdCh2b2lkKQogCUFzc2VydChhZnRlclRyaWdnZXJzLmV2ZW50cy5oZWFkID09IE5VTEwp OwogCUFzc2VydChhZnRlclRyaWdnZXJzLnRyYW5zX3N0YWNrID09IE5VTEwpOwogCUFzc2VydChh ZnRlclRyaWdnZXJzLm1heHRyYW5zZGVwdGggPT0gMCk7Ci0JQXNzZXJ0KGFmdGVyVHJpZ2dlckZp cmluZ0RlcHRoID09IDApOwogfQogCiAKQEAgLTUxOTQsNyArNTE5Niw3IEBAIEFmdGVyVHJpZ2dl ckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKQogCSAqLwogCXFzID0gJmFmdGVyVHJpZ2dlcnMucXVl cnlfc3RhY2tbYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aF07CiAKLQlhZnRlclRyaWdnZXJGaXJp bmdEZXB0aCsrOworCWFmdGVyVHJpZ2dlcnMuZmlyaW5nX2RlcHRoKys7CiAJZm9yICg7OykKIAl7 CiAJCWlmIChhZnRlclRyaWdnZXJNYXJrRXZlbnRzKCZxcy0+ZXZlbnRzLCAmYWZ0ZXJUcmlnZ2Vy cy5ldmVudHMsIHRydWUpKQpAQCAtNTI0NSw3ICs1MjQ3LDcgQEAgQWZ0ZXJUcmlnZ2VyRW5kUXVl cnkoRVN0YXRlICplc3RhdGUpCiAJQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5KCZhZnRlclRyaWdnZXJz LnF1ZXJ5X3N0YWNrW2FmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGhdKTsKIAogCWFmdGVyVHJpZ2dl cnMucXVlcnlfZGVwdGgtLTsKLQlhZnRlclRyaWdnZXJGaXJpbmdEZXB0aC0tOworCWFmdGVyVHJp Z2dlcnMuZmlyaW5nX2RlcHRoLS07CiB9CiAKIApAQCAtNTM0MSw3ICs1MzQzLDcgQEAgQWZ0ZXJU cmlnZ2VyRmlyZURlZmVycmVkKHZvaWQpCiAJICogUnVuIGFsbCB0aGUgcmVtYWluaW5nIHRyaWdn ZXJzLiAgTG9vcCB1bnRpbCB0aGV5IGFyZSBhbGwgZ29uZSwgaW4gY2FzZQogCSAqIHNvbWUgdHJp Z2dlciBxdWV1ZXMgbW9yZSBmb3IgdXMgdG8gZG8uCiAJICovCi0JYWZ0ZXJUcmlnZ2VyRmlyaW5n RGVwdGgrKzsKKwlhZnRlclRyaWdnZXJzLmZpcmluZ19kZXB0aCsrOwogCXdoaWxlIChhZnRlclRy aWdnZXJNYXJrRXZlbnRzKGV2ZW50cywgTlVMTCwgZmFsc2UpKQogCXsKIAkJQ29tbWFuZElkCWZp cmluZ19pZCA9IGFmdGVyVHJpZ2dlcnMuZmlyaW5nX2NvdW50ZXIrKzsKQEAgLTUzNTMsNyArNTM1 NSw3IEBAIEFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCh2b2lkKQogCS8qIEZsdXNoIGFueSBmYXN0 LXBhdGggYmF0Y2hlcyBhY2N1bXVsYXRlZCBieSB0aGUgdHJpZ2dlcnMganVzdCBmaXJlZC4gKi8K IAlGaXJlQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFja3MoKTsKIAotCWFmdGVyVHJpZ2dlckZpcmlu Z0RlcHRoLS07CisJYWZ0ZXJUcmlnZ2Vycy5maXJpbmdfZGVwdGgtLTsKIAogCS8qCiAJICogV2Ug ZG9uJ3QgYm90aGVyIGZyZWVpbmcgdGhlIGV2ZW50IGxpc3QsIHNpbmNlIGl0IHdpbGwgZ28gYXdh eSBhbnl3YXkKQEAgLTU0MjAsNyArNTQyMiw3IEBAIEFmdGVyVHJpZ2dlckVuZFhhY3QoYm9vbCBp c0NvbW1pdCkKIAkvKiBObyBtb3JlIGFmdGVyVHJpZ2dlcnMgbWFuaXB1bGF0aW9uIHVudGlsIG5l eHQgdHJhbnNhY3Rpb24gc3RhcnRzLiAqLwogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGggPSAt MTsKIAotCWFmdGVyVHJpZ2dlckZpcmluZ0RlcHRoID0gMDsKKwlhZnRlclRyaWdnZXJzLmZpcmlu Z19kZXB0aCA9IDA7CiAKIAlBc3NlcnQoYWZ0ZXJUcmlnZ2Vycy5iYXRjaF9jYWxsYmFja3MgPT0g TklMIHx8ICFpc0NvbW1pdCk7CiAKQEAgLTYwNzksNyArNjA4MSw3IEBAIEFmdGVyVHJpZ2dlclNl dFN0YXRlKENvbnN0cmFpbnRzU2V0U3RtdCAqc3RtdCkKIAkJQWZ0ZXJUcmlnZ2VyRXZlbnRMaXN0 ICpldmVudHMgPSAmYWZ0ZXJUcmlnZ2Vycy5ldmVudHM7CiAJCWJvb2wJCXNuYXBzaG90X3NldCA9 IGZhbHNlOwogCi0JCWFmdGVyVHJpZ2dlckZpcmluZ0RlcHRoKys7CisJCWFmdGVyVHJpZ2dlcnMu ZmlyaW5nX2RlcHRoKys7CiAJCXdoaWxlIChhZnRlclRyaWdnZXJNYXJrRXZlbnRzKGV2ZW50cywg TlVMTCwgdHJ1ZSkpCiAJCXsKIAkJCUNvbW1hbmRJZAlmaXJpbmdfaWQgPSBhZnRlclRyaWdnZXJz LmZpcmluZ19jb3VudGVyKys7CkBAIC02MTEzLDcgKzYxMTUsNyBAQCBBZnRlclRyaWdnZXJTZXRT dGF0ZShDb25zdHJhaW50c1NldFN0bXQgKnN0bXQpCiAJCSAqIEZsdXNoIGFueSBmYXN0LXBhdGgg YmF0Y2hlcyBhY2N1bXVsYXRlZCBieSB0aGUgdHJpZ2dlcnMganVzdCBmaXJlZC4KIAkJICovCiAJ CUZpcmVBZnRlclRyaWdnZXJCYXRjaENhbGxiYWNrcygpOwotCQlhZnRlclRyaWdnZXJGaXJpbmdE ZXB0aC0tOworCQlhZnRlclRyaWdnZXJzLmZpcmluZ19kZXB0aC0tOwogCiAJCWlmIChzbmFwc2hv dF9zZXQpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtNjgzNywxMSArNjgzOSwxMSBAQCBS ZWdpc3RlckFmdGVyVHJpZ2dlckJhdGNoQ2FsbGJhY2soQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFj ayBjYWxsYmFjaywKIAkgKiBNdXN0IGJlIGNhbGxlZCB3aGlsZSBhZnRlclRyaWdnZXJzIGlzIGFj dGl2ZTsgY2FsbGJhY2tzIHJlZ2lzdGVyZWQKIAkgKiBvdXRzaWRlIGEgdHJpZ2dlci1maXJpbmcg Y29udGV4dCB3b3VsZCBuZXZlciBmaXJlLgogCSAqLwotCUFzc2VydChhZnRlclRyaWdnZXJGaXJp bmdEZXB0aCA+IDApOworCUFzc2VydChhZnRlclRyaWdnZXJzLmZpcmluZ19kZXB0aCA+IDApOwog CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwog CWl0ZW0gPSBwYWxsb2Moc2l6ZW9mKEFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbSkpOwogCWl0ZW0t PmNhbGxiYWNrID0gY2FsbGJhY2s7Ci0JaXRlbS0+ZmlyaW5nX2RlcHRoID0gYWZ0ZXJUcmlnZ2Vy RmlyaW5nRGVwdGg7CisJaXRlbS0+ZmlyaW5nX2RlcHRoID0gYWZ0ZXJUcmlnZ2Vycy5maXJpbmdf ZGVwdGg7CiAJaXRlbS0+YXJnID0gYXJnOwogCWFmdGVyVHJpZ2dlcnMuYmF0Y2hfY2FsbGJhY2tz ID0KIAkJbGFwcGVuZChhZnRlclRyaWdnZXJzLmJhdGNoX2NhbGxiYWNrcywgaXRlbSk7CkBAIC02 ODc2LDcgKzY4NzgsNyBAQCBGaXJlQWZ0ZXJUcmlnZ2VyQmF0Y2hDYWxsYmFja3Modm9pZCkKIAl7 CiAJCUFmdGVyVHJpZ2dlckNhbGxiYWNrSXRlbSAqaXRlbSA9IGxmaXJzdChsYyk7CiAKLQkJaWYg KGl0ZW0tPmZpcmluZ19kZXB0aCA9PSBhZnRlclRyaWdnZXJGaXJpbmdEZXB0aCkKKwkJaWYgKGl0 ZW0tPmZpcmluZ19kZXB0aCA9PSBhZnRlclRyaWdnZXJzLmZpcmluZ19kZXB0aCkKIAkJCXRvX2Zp cmUgPSBsYXBwZW5kKHRvX2ZpcmUsIGl0ZW0pOwogCQllbHNlCiAJCQlyZW1haW5pbmcgPSBsYXBw ZW5kKHJlbWFpbmluZywgaXRlbSk7CkBAIC02OTA4LDUgKzY5MTAsNSBAQCBGaXJlQWZ0ZXJUcmln Z2VyQmF0Y2hDYWxsYmFja3Modm9pZCkKIGJvb2wKIEFmdGVyVHJpZ2dlcklzQWN0aXZlKHZvaWQp CiB7Ci0JcmV0dXJuIGFmdGVyVHJpZ2dlckZpcmluZ0RlcHRoID4gMDsKKwlyZXR1cm4gYWZ0ZXJU cmlnZ2Vycy5maXJpbmdfZGVwdGggPiAwOwogfQotLSAKMi40Ny4zCgo= --00000000000015e5c1064ef3b0ef Content-Type: application/octet-stream; name="v3-0001-Modified-test-suite-from-Evan-s-patch.patch" Content-Disposition: attachment; filename="v3-0001-Modified-test-suite-from-Evan-s-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnq531tz3 RnJvbSAyZGE3NDE0NmFhZmJkOWQ1MDVlOWUwZDkwMzgxMzhiYzQ2ZjBjZDA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgOCBBcHIgMjAyNiAxMzo1MzowOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg MS80XSBNb2RpZmllZCB0ZXN0IHN1aXRlIGZyb20gRXZhbidzIHBhdGNoCgpUaGUgQyBmdW5jdGlv biBpbiB0aGUgb3JpZ2luYWwgdGVzdCBtb2R1bGUgd2FzIHVzaW5nIHRoZSBzYW1lIHJlc291cmNl Cm93bmVyIGFzIHRoZSBwYXJlbnQgU0VMRUNULCBzbyB0aGUgY3Jhc2ggY291bGQgbm90IGJlIHJl cHJvZHVjZWQuCkFkZGVkIGEgZGVkaWNhdGVkIHJlc291cmNlIG93bmVyIGFyb3VuZCB0aGUgU1BJ IGNhbGwgdG8gZW5zdXJlIHRoZSBpbm5lcgpyZXNvdXJjZSBvd25lciBpcyByZWxlYXNlZCBiZWZv cmUgdGhlIG91dGVyIHRyaWdnZXItZmlyaW5nIGJhdGNoIGNhbGxiYWNrCmZpcmVzLCB3aGljaCBp cyBuZWNlc3NhcnkgdG8gdHJpZ2dlciB0aGUgY3Jhc2ggdGhpcyB0ZXN0IGlzIG1lYW50IHRvCmNv dmVyLgotLS0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9NYWtlZmlsZSAgIHwgIDIz ICsrKysKIC4uLi9leHBlY3RlZC9yaV9mYXN0cGF0aC5vdXQgICAgICAgICAgICAgICAgICB8IDEx OCArKysrKysrKysrKysrKysrKysKIC4uLi9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL21lc29u LmJ1aWxkICAgICB8ICAzMSArKysrKwogLi4uL3Rlc3Rfc3BpX3Jlc293bmVyL3NxbC9yaV9mYXN0 cGF0aC5zcWwgICAgIHwgMTA3ICsrKysrKysrKysrKysrKysKIC4uLi90ZXN0X3NwaV9yZXNvd25l ci0tMS4wLnNxbCAgICAgICAgICAgICAgICB8ICAgOSArKwogLi4uL3Rlc3Rfc3BpX3Jlc293bmVy L3Rlc3Rfc3BpX3Jlc293bmVyLmMgICAgIHwgIDcwICsrKysrKysrKysrCiAuLi4vdGVzdF9zcGlf cmVzb3duZXIuY29udHJvbCAgICAgICAgICAgICAgICAgfCAgIDQgKwogOSBmaWxlcyBjaGFuZ2Vk LCAzNjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9zcGlfcmVzb3duZXIvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL2V4cGVjdGVkL3JpX2Zhc3RwYXRoLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvbWVzb24uYnVp bGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVy L3NxbC9yaV9mYXN0cGF0aC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci90ZXN0X3NwaV9yZXNv d25lci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNv d25lci90ZXN0X3NwaV9yZXNvd25lci5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggMGE3NGFiNWM4 NmYuLjAxNmIzMjhjOGM1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTUyLDYgKzUyLDcgQEAgU1VCRElSUyA9 IFwKIAkJICB0ZXN0X3NobWVtIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwK KwkJICB0ZXN0X3NwaV9yZXNvd25lciBcCiAJCSAgdGVzdF90aWRzdG9yZSBcCiAJCSAgdW5zYWZl X3Rlc3RzIFwKIAkJICB3b3JrZXJfc3BpIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDRiY2E0MmJi MzcwLi4zY2E0NTQwNjRkMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWls ZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC01Myw2ICs1Myw3IEBAIHN1 YmRpcigndGVzdF9zYXNscHJlcCcpCiBzdWJkaXIoJ3Rlc3Rfc2htZW0nKQogc3ViZGlyKCd0ZXN0 X3NobV9tcScpCiBzdWJkaXIoJ3Rlc3Rfc2xydScpCitzdWJkaXIoJ3Rlc3Rfc3BpX3Jlc293bmVy JykKIHN1YmRpcigndGVzdF90aWRzdG9yZScpCiBzdWJkaXIoJ3R5cGNhY2hlJykKIHN1YmRpcign dW5zYWZlX3Rlc3RzJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVz b3duZXIvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YTY5ZTNhM2M0Mgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvTWFr ZWZpbGUKQEAgLTAsMCArMSwyMyBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293 bmVyL01ha2VmaWxlCisKK01PRFVMRV9iaWcgPSB0ZXN0X3NwaV9yZXNvd25lcgorT0JKUyA9IFwK KwkkKFdJTjMyUkVTKSBcCisJdGVzdF9zcGlfcmVzb3duZXIubworUEdGSUxFREVTQyA9ICJ0ZXN0 X3NwaV9yZXNvd25lciAtIFNRTC1jYWxsYWJsZSBDIFNQSSBmdW5jdGlvbiB1bmRlciBhIGRlZGlj YXRlZCBSZXNvdXJjZU93bmVyIgorCitFWFRFTlNJT04gPSB0ZXN0X3NwaV9yZXNvd25lcgorREFU QSA9IHRlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsCisKK1JFR1JFU1MgPSByaV9mYXN0cGF0aAor CitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwg JChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4v Li4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUg JCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9leHBlY3RlZC9yaV9mYXN0cGF0 aC5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL2V4cGVjdGVkL3JpX2Zh c3RwYXRoLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWQ2YjBm N2M5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293 bmVyL2V4cGVjdGVkL3JpX2Zhc3RwYXRoLm91dApAQCAtMCwwICsxLDExOCBAQAorLS0KKy0tIFRl c3QgUkkgZmFzdC1wYXRoIEZLIGNoZWNrIHVuZGVyIEMtbGV2ZWwgU1BJLgorLS0KKy0tIFRoZSBS SSBmYXN0LXBhdGggY2FjaGVzIFBLIHJlbGF0aW9uIHJlZmVyZW5jZXMgaW4gcmlfRmFzdFBhdGhH ZXRFbnRyeSgpCistLSB1bmRlciB0aGUgY3VycmVudCByZXNvdXJjZSBvd25lci4gIFdoZW4gRksg dHJpZ2dlcnMgZmlyZSBpbnNpZGUgYQorLS0gQy1sZXZlbCBTUEkgY29udGV4dCB0aGF0IGNyZWF0 ZXMgYSBkZWRpY2F0ZWQgc2hvcnQtbGl2ZWQgcmVzb3VyY2Ugb3duZXIsCistLSB0aG9zZSByZWZl cmVuY2VzIG11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHRoZSBpbm5lciByZXNvdXJjZSBvd25lciBp cworLS0gcmVsZWFzZWQuICBUaGUgZml4IGVuc3VyZXMgYmF0Y2ggY2FsbGJhY2tzIGZpcmUgYXQg dGhlIHNhbWUgZmlyaW5nIGRlcHRoCistLSBhdCB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZCwg d2hpbGUgdGhlIGNvcnJlc3BvbmRpbmcgcmVzb3VyY2Ugb3duZXIKKy0tIGlzIHN0aWxsIGFsaXZl LiAgV2l0aG91dCB0aGlzLCByaV9GYXN0UGF0aFRlYXJkb3duIHdvdWxkIGNyYXNoIHdpdGgKKy0t IEFzc2VydChyZWwtPnJkX3JlZmNudCA+IDApIGluIGluZGV4X2Nsb3NlLgorLS0KKy0tIFNpbXBs ZSBQTC9wZ1NRTCBkb2VzIG5vdCB0cmlnZ2VyIHRoaXMgYmVjYXVzZSBpdHMgU1BJIGNvbm5lY3Rp b24gc3BhbnMKKy0tIHRoZSBlbnRpcmUgZnVuY3Rpb24gY2FsbCwgc28gaXRzIHJlc291cmNlIG93 bmVyIG91dGxpdmVzIHRoZSBiYXRjaAorLS0gY2FsbGJhY2suICBUaGUgY3JpdGljYWwgdGVzdCBj YXNlIHJlcXVpcmVzIGEgQyBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYQorLS0gZGVkaWNhdGVkIHNo b3J0LWxpdmVkIHJlc291cmNlIG93bmVyIGFyb3VuZCBpdHMgU1BJIGNhbGwuCistLQorQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X3NwaV9yZXNvd25lcjsKK0NSRUFURSBUQUJMRSByaV9mcF9wazEgKGlk IHNlcmlhbCBQUklNQVJZIEtFWSk7CitDUkVBVEUgVEFCTEUgcmlfZnBfcGsyIChpZCBzZXJpYWwg UFJJTUFSWSBLRVkpOworQ1JFQVRFIFRBQkxFIHJpX2ZwX3BrMyAoaWQgc2VyaWFsIFBSSU1BUlkg S0VZKTsKK0lOU0VSVCBJTlRPIHJpX2ZwX3BrMSBWQUxVRVMgKDEpOworSU5TRVJUIElOVE8gcmlf ZnBfcGsyIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyByaV9mcF9wazMgVkFMVUVTICgxKTsKK0NS RUFURSBUQUJMRSByaV9mcF9mayAoCisgICAgaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAorICAgIGEg aW50IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlkKSwKKyAgICBiIGludCBSRUZFUkVOQ0VTIHJpX2Zw X3BrMihpZCksCisgICAgYyBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazMoaWQpLAorICAgIGQgaW50 IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlkKSwKKyAgICBlIGludCBSRUZFUkVOQ0VTIHJpX2ZwX3Br MihpZCksCisgICAgZiBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazMoaWQpCispOworLS0gQy1sZXZl bCBTUEkgSU5TRVJUOiB0aGUgY3JpdGljYWwgdGVzdCBjYXNlLgorLS0gV2l0aG91dCB0aGUgZml4 IHRoaXMgY3Jhc2hlcyB0aGUgc2VydmVyLgorU0VMRUNUIHNwaV9leGVjX3NxbCgKKyAgICAnSU5T RVJUIElOVE8gcmlfZnBfZmsgKGEsIGIsIGMsIGQsIGUsIGYpIFZBTFVFUyAoMSwgMSwgMSwgMSwg MSwgMSknKTsKKyBzcGlfZXhlY19zcWwgCistLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCist LSBBZGRpdGlvbmFsIEMtbGV2ZWwgU1BJIElOU0VSVHMgdG8gZXhlcmNpc2UgYmF0Y2ggcmV1c2Ug YWNyb3NzIGNhbGxzLgorLS0gVXNlIGRpZmZlcmVudCBjb2x1bW4gb3JkZXJpbmdzIHRvIGVuc3Vy ZSBlYWNoIGlzIGEgZGlzdGluY3Qgc3RhdGVtZW50LgorU0VMRUNUIHNwaV9leGVjX3NxbCgKKyAg ICAnSU5TRVJUIElOVE8gcmlfZnBfZmsgKGYsIGUsIGQsIGMsIGIsIGEpIFZBTFVFUyAoMSwgMSwg MSwgMSwgMSwgMSknKTsKKyBzcGlfZXhlY19zcWwgCistLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNFUlQgSU5UTyByaV9mcF9mayAoYSwg YywgZSwgYiwgZCwgZikgVkFMVUVTICgxLCAxLCAxLCAxLCAxLCAxKScpOworIHNwaV9leGVjX3Nx bCAKKy0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEMtbGV2ZWwgU1BJIHdpdGggRksg dmlvbGF0aW9uOiBzaG91bGQgZXJyb3IsIG5vdCBjcmFzaAorU0VMRUNUIHNwaV9leGVjX3NxbCgK KyAgICAnSU5TRVJUIElOVE8gcmlfZnBfZmsgKGEsIGIsIGMsIGQsIGUsIGYpIFZBTFVFUyAoOTk5 LCAxLCAxLCAxLCAxLCAxKScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJy aV9mcF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmlfZnBfZmtfYV9ma2V5 IgorREVUQUlMOiAgS2V5IChhKT0oOTk5KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAicmlfZnBf cGsxIi4KK0NPTlRFWFQ6ICBTUUwgc3RhdGVtZW50ICJJTlNFUlQgSU5UTyByaV9mcF9mayAoYSwg YiwgYywgZCwgZSwgZikgVkFMVUVTICg5OTksIDEsIDEsIDEsIDEsIDEpIgorLS0gTmVzdGVkOiBQ TC9wZ1NRTCBjYWxsaW5nIEMgU1BJIChtaW1pY3MgUG9zdEdJUyB0b1RvcG9HZW9tIHBhdHRlcm4p CitDUkVBVEUgRlVOQ1RJT04gcGxwZ3NxbF9jYWxsc19jX3NwaSgpIFJFVFVSTlMgdm9pZCBBUyAk JAorREVDTEFSRQorICAgIGluc19zdG10IHRleHQgOj0gJ0lOU0VSVCBJTlRPIHJpX2ZwX2ZrIChh LCBiLCBjLCBkLCBlLCBmKSBWQUxVRVMgKDEsIDEsIDEsIDEsIDEsIDEpJzsKK0JFR0lOCisgICAg UEVSRk9STSBzcGlfZXhlY19zcWwoaW5zX3N0bXQpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3Nx bDsKK1NFTEVDVCBwbHBnc3FsX2NhbGxzX2Nfc3BpKCk7CisgcGxwZ3NxbF9jYWxsc19jX3NwaSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBBRlRFUiB0cmlnZ2VyIHRo YXQgdXNlcyBDLWxldmVsIFNQSSB0byBpbnNlcnQgaW50byBhbiBGSy1yZWZlcmVuY2luZyB0YWJs ZS4KKy0tIFRoZSBGSyBiYXRjaCBjYWxsYmFjayBpcyByZWdpc3RlcmVkIGF0IHRoZSBpbm5lciBT UEkncyBmaXJpbmcgZGVwdGggYW5kCistLSBtdXN0IGZpcmUgYmVmb3JlIHRoZSBpbm5lciByZXNv dXJjZSBvd25lciBpcyByZWxlYXNlZC4gIFRoaXMgZXhlcmNpc2VzCistLSB0aGUgZGVwdGgtbWF0 Y2hlZCBjYWxsYmFjayBmaXJpbmcgaW50cm9kdWNlZCB0byBmaXggdGhhdCBjcmFzaC4KK0NSRUFU RSBUQUJMRSByaV9mcF9vdXRlciAoaWQgaW50IFBSSU1BUlkgS0VZKTsKK0NSRUFURSBUQUJMRSBy aV9mcF9pbm5lciAoaWQgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlkKSk7CitDUkVBVEUgRlVO Q1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfb2soKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lO CisgICAgUEVSRk9STSBzcGlfZXhlY19zcWwoJ0lOU0VSVCBJTlRPIHJpX2ZwX2lubmVyIFZBTFVF UyAoMSknKTsKKyAgICBSRVRVUk4gTkVXOworRU5EICQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVB VEUgVFJJR0dFUiBvdXRlcl90ZyBBRlRFUiBJTlNFUlQgT04gcmlfZnBfb3V0ZXIKKyAgICBGT1Ig RUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiBvdXRlcl90cmlnZ2VyX3NwaV9vaygpOworLS0gRmly ZXMgb3V0ZXJfdGcsIHdob3NlIFBML3BnU1FMIGJvZHkgY2FsbHMgc3BpX2V4ZWNfc3FsKCkuICBU aGUgQyBmdW5jdGlvbgorLS0gY3JlYXRlcyBhIGRlZGljYXRlZCByZXNvdXJjZSBvd25lcjsgdGhl IEZLIGJhdGNoIGNhbGxiYWNrIGZpcmVzIGF0IHRoZQorLS0gaW5uZXIgU1BJJ3MgZmlyaW5nIGRl cHRoIGJlZm9yZSB0aGF0IHJlc291cmNlIG93bmVyIGlzIHJlbGVhc2VkLgorSU5TRVJUIElOVE8g cmlfZnBfb3V0ZXIgVkFMVUVTICgxKTsKK0NSRUFURSBGVU5DVElPTiBvdXRlcl90cmlnZ2VyX3Nw aV9mYWlsKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZPUk0gc3BpX2V4 ZWNfc3FsKCdJTlNFUlQgSU5UTyByaV9mcF9pbm5lciBWQUxVRVMgKDMpJyk7CisgICAgUkVUVVJO IE5FVzsKK0VORCAkJCBMQU5HVUFHRSBwbHBnc3FsOworRFJPUCBUUklHR0VSIG91dGVyX3RnIE9O IHJpX2ZwX291dGVyOworRFJPUCBGVU5DVElPTiBvdXRlcl90cmlnZ2VyX3NwaV9vaygpOworQ1JF QVRFIFRSSUdHRVIgb3V0ZXJfdGcgQUZURVIgSU5TRVJUIE9OIHJpX2ZwX291dGVyCisgICAgRk9S IEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpOworLS0g IExpa2UgYWJvdmUgYnV0IHRoZSBpbm5lciBpbnNlcnQgZmFpbHMuCitJTlNFUlQgSU5UTyByaV9m cF9vdXRlciBWQUxVRVMgKDIpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJy aV9mcF9pbm5lciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmlfZnBfaW5uZXJf aWRfZmtleSIKK0RFVEFJTDogIEtleSAoaWQpPSgzKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAi cmlfZnBfcGsxIi4KK0NPTlRFWFQ6ICBTUUwgc3RhdGVtZW50ICJJTlNFUlQgSU5UTyByaV9mcF9p bm5lciBWQUxVRVMgKDMpIgorU1FMIHN0YXRlbWVudCAiU0VMRUNUIHNwaV9leGVjX3NxbCgnSU5T RVJUIElOVE8gcmlfZnBfaW5uZXIgVkFMVUVTICgzKScpIgorUEwvcGdTUUwgZnVuY3Rpb24gb3V0 ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpIGxpbmUgMyBhdCBQRVJGT1JNCitEUk9QIFRSSUdHRVIgb3V0 ZXJfdGcgT04gcmlfZnBfb3V0ZXI7CitEUk9QIEZVTkNUSU9OIG91dGVyX3RyaWdnZXJfc3BpX2Zh aWwoKTsKK0RST1AgVEFCTEUgcmlfZnBfaW5uZXIsIHJpX2ZwX291dGVyOworLS0gQ2xlYW51cAor RFJPUCBUQUJMRSByaV9mcF9mazsKK0RST1AgVEFCTEUgcmlfZnBfcGszLCByaV9mcF9wazIsIHJp X2ZwX3BrMTsKK0RST1AgRVhURU5TSU9OIHRlc3Rfc3BpX3Jlc293bmVyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZiYjAyN2UwNWM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9tZXNvbi5idWlsZApAQCAtMCwwICsxLDMx IEBACit0ZXN0X3NwaV9yZXNvd25lcl9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X3NwaV9yZXNv d25lci5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3Rfc3BpX3Jl c293bmVyX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9h cmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X3NwaV9yZXNvd25lcicsCisgICAgJy0tRklMRURF U0MnLCAndGVzdF9zcGlfcmVzb3duZXIgLSBTUUwtY2FsbGFibGUgQyBTUEkgZnVuY3Rpb24gdW5k ZXIgYSBkZWRpY2F0ZWQgUmVzb3VyY2VPd25lcicsXSkKK2VuZGlmCisKK3Rlc3Rfc3BpX3Jlc293 bmVyID0gc2hhcmVkX21vZHVsZSgndGVzdF9zcGlfcmVzb3duZXInLAorICB0ZXN0X3NwaV9yZXNv d25lcl9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3Rh bGxfbGlicyArPSB0ZXN0X3NwaV9yZXNvd25lcgorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxl cygKKyAgJ3Rlc3Rfc3BpX3Jlc293bmVyLmNvbnRyb2wnLAorICAndGVzdF9zcGlfcmVzb3duZXIt LTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3Rfc3BpX3Jlc293bmVy JywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1 cnJlbnRfYnVpbGRfZGlyKCksCisgICdyZWdyZXNzJzogeworICAgICdzcWwnOiBbCisgICAgICAn cmlfZmFzdHBhdGgnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3NxbC9yaV9mYXN0cGF0aC5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3NxbC9yaV9mYXN0cGF0aC5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1MTdiMjQzN2M0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9zcWwvcmlfZmFzdHBhdGguc3FsCkBA IC0wLDAgKzEsMTA3IEBACistLQorLS0gVGVzdCBSSSBmYXN0LXBhdGggRksgY2hlY2sgdW5kZXIg Qy1sZXZlbCBTUEkuCistLQorLS0gVGhlIFJJIGZhc3QtcGF0aCBjYWNoZXMgUEsgcmVsYXRpb24g cmVmZXJlbmNlcyBpbiByaV9GYXN0UGF0aEdldEVudHJ5KCkKKy0tIHVuZGVyIHRoZSBjdXJyZW50 IHJlc291cmNlIG93bmVyLiAgV2hlbiBGSyB0cmlnZ2VycyBmaXJlIGluc2lkZSBhCistLSBDLWxl dmVsIFNQSSBjb250ZXh0IHRoYXQgY3JlYXRlcyBhIGRlZGljYXRlZCBzaG9ydC1saXZlZCByZXNv dXJjZSBvd25lciwKKy0tIHRob3NlIHJlZmVyZW5jZXMgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUg dGhlIGlubmVyIHJlc291cmNlIG93bmVyIGlzCistLSByZWxlYXNlZC4gIFRoZSBmaXggZW5zdXJl cyBiYXRjaCBjYWxsYmFja3MgZmlyZSBhdCB0aGUgc2FtZSBmaXJpbmcgZGVwdGgKKy0tIGF0IHdo aWNoIHRoZXkgd2VyZSByZWdpc3RlcmVkLCB3aGlsZSB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJj ZSBvd25lcgorLS0gaXMgc3RpbGwgYWxpdmUuICBXaXRob3V0IHRoaXMsIHJpX0Zhc3RQYXRoVGVh cmRvd24gd291bGQgY3Jhc2ggd2l0aAorLS0gQXNzZXJ0KHJlbC0+cmRfcmVmY250ID4gMCkgaW4g aW5kZXhfY2xvc2UuCistLQorLS0gU2ltcGxlIFBML3BnU1FMIGRvZXMgbm90IHRyaWdnZXIgdGhp cyBiZWNhdXNlIGl0cyBTUEkgY29ubmVjdGlvbiBzcGFucworLS0gdGhlIGVudGlyZSBmdW5jdGlv biBjYWxsLCBzbyBpdHMgcmVzb3VyY2Ugb3duZXIgb3V0bGl2ZXMgdGhlIGJhdGNoCistLSBjYWxs YmFjay4gIFRoZSBjcml0aWNhbCB0ZXN0IGNhc2UgcmVxdWlyZXMgYSBDIGZ1bmN0aW9uIHRoYXQg Y3JlYXRlcyBhCistLSBkZWRpY2F0ZWQgc2hvcnQtbGl2ZWQgcmVzb3VyY2Ugb3duZXIgYXJvdW5k IGl0cyBTUEkgY2FsbC4KKy0tCitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc3BpX3Jlc293bmVyOwor CitDUkVBVEUgVEFCTEUgcmlfZnBfcGsxIChpZCBzZXJpYWwgUFJJTUFSWSBLRVkpOworQ1JFQVRF IFRBQkxFIHJpX2ZwX3BrMiAoaWQgc2VyaWFsIFBSSU1BUlkgS0VZKTsKK0NSRUFURSBUQUJMRSBy aV9mcF9wazMgKGlkIHNlcmlhbCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyByaV9mcF9wazEg VkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIHJpX2ZwX3BrMiBWQUxVRVMgKDEpOworSU5TRVJUIElO VE8gcmlfZnBfcGszIFZBTFVFUyAoMSk7CisKK0NSRUFURSBUQUJMRSByaV9mcF9mayAoCisgICAg aWQgc2VyaWFsIFBSSU1BUlkgS0VZLAorICAgIGEgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlk KSwKKyAgICBiIGludCBSRUZFUkVOQ0VTIHJpX2ZwX3BrMihpZCksCisgICAgYyBpbnQgUkVGRVJF TkNFUyByaV9mcF9wazMoaWQpLAorICAgIGQgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlkKSwK KyAgICBlIGludCBSRUZFUkVOQ0VTIHJpX2ZwX3BrMihpZCksCisgICAgZiBpbnQgUkVGRVJFTkNF UyByaV9mcF9wazMoaWQpCispOworCistLSBDLWxldmVsIFNQSSBJTlNFUlQ6IHRoZSBjcml0aWNh bCB0ZXN0IGNhc2UuCistLSBXaXRob3V0IHRoZSBmaXggdGhpcyBjcmFzaGVzIHRoZSBzZXJ2ZXIu CitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNFUlQgSU5UTyByaV9mcF9mayAoYSwgYiwg YywgZCwgZSwgZikgVkFMVUVTICgxLCAxLCAxLCAxLCAxLCAxKScpOworCistLSBBZGRpdGlvbmFs IEMtbGV2ZWwgU1BJIElOU0VSVHMgdG8gZXhlcmNpc2UgYmF0Y2ggcmV1c2UgYWNyb3NzIGNhbGxz LgorLS0gVXNlIGRpZmZlcmVudCBjb2x1bW4gb3JkZXJpbmdzIHRvIGVuc3VyZSBlYWNoIGlzIGEg ZGlzdGluY3Qgc3RhdGVtZW50LgorU0VMRUNUIHNwaV9leGVjX3NxbCgKKyAgICAnSU5TRVJUIElO VE8gcmlfZnBfZmsgKGYsIGUsIGQsIGMsIGIsIGEpIFZBTFVFUyAoMSwgMSwgMSwgMSwgMSwgMSkn KTsKK1NFTEVDVCBzcGlfZXhlY19zcWwoCisgICAgJ0lOU0VSVCBJTlRPIHJpX2ZwX2ZrIChhLCBj LCBlLCBiLCBkLCBmKSBWQUxVRVMgKDEsIDEsIDEsIDEsIDEsIDEpJyk7CisKKy0tIEMtbGV2ZWwg U1BJIHdpdGggRksgdmlvbGF0aW9uOiBzaG91bGQgZXJyb3IsIG5vdCBjcmFzaAorU0VMRUNUIHNw aV9leGVjX3NxbCgKKyAgICAnSU5TRVJUIElOVE8gcmlfZnBfZmsgKGEsIGIsIGMsIGQsIGUsIGYp IFZBTFVFUyAoOTk5LCAxLCAxLCAxLCAxLCAxKScpOworCistLSBOZXN0ZWQ6IFBML3BnU1FMIGNh bGxpbmcgQyBTUEkgKG1pbWljcyBQb3N0R0lTIHRvVG9wb0dlb20gcGF0dGVybikKK0NSRUFURSBG VU5DVElPTiBwbHBnc3FsX2NhbGxzX2Nfc3BpKCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJF CisgICAgaW5zX3N0bXQgdGV4dCA6PSAnSU5TRVJUIElOVE8gcmlfZnBfZmsgKGEsIGIsIGMsIGQs IGUsIGYpIFZBTFVFUyAoMSwgMSwgMSwgMSwgMSwgMSknOworQkVHSU4KKyAgICBQRVJGT1JNIHNw aV9leGVjX3NxbChpbnNfc3RtdCk7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxF Q1QgcGxwZ3NxbF9jYWxsc19jX3NwaSgpOworCistLSBBRlRFUiB0cmlnZ2VyIHRoYXQgdXNlcyBD LWxldmVsIFNQSSB0byBpbnNlcnQgaW50byBhbiBGSy1yZWZlcmVuY2luZyB0YWJsZS4KKy0tIFRo ZSBGSyBiYXRjaCBjYWxsYmFjayBpcyByZWdpc3RlcmVkIGF0IHRoZSBpbm5lciBTUEkncyBmaXJp bmcgZGVwdGggYW5kCistLSBtdXN0IGZpcmUgYmVmb3JlIHRoZSBpbm5lciByZXNvdXJjZSBvd25l ciBpcyByZWxlYXNlZC4gIFRoaXMgZXhlcmNpc2VzCistLSB0aGUgZGVwdGgtbWF0Y2hlZCBjYWxs YmFjayBmaXJpbmcgaW50cm9kdWNlZCB0byBmaXggdGhhdCBjcmFzaC4KK0NSRUFURSBUQUJMRSBy aV9mcF9vdXRlciAoaWQgaW50IFBSSU1BUlkgS0VZKTsKK0NSRUFURSBUQUJMRSByaV9mcF9pbm5l ciAoaWQgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsxKGlkKSk7CisKK0NSRUFURSBGVU5DVElPTiBv dXRlcl90cmlnZ2VyX3NwaV9vaygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBQ RVJGT1JNIHNwaV9leGVjX3NxbCgnSU5TRVJUIElOVE8gcmlfZnBfaW5uZXIgVkFMVUVTICgxKScp OworICAgIFJFVFVSTiBORVc7CitFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRS SUdHRVIgb3V0ZXJfdGcgQUZURVIgSU5TRVJUIE9OIHJpX2ZwX291dGVyCisgICAgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfb2soKTsKKworLS0gRmlyZXMg b3V0ZXJfdGcsIHdob3NlIFBML3BnU1FMIGJvZHkgY2FsbHMgc3BpX2V4ZWNfc3FsKCkuICBUaGUg QyBmdW5jdGlvbgorLS0gY3JlYXRlcyBhIGRlZGljYXRlZCByZXNvdXJjZSBvd25lcjsgdGhlIEZL IGJhdGNoIGNhbGxiYWNrIGZpcmVzIGF0IHRoZQorLS0gaW5uZXIgU1BJJ3MgZmlyaW5nIGRlcHRo IGJlZm9yZSB0aGF0IHJlc291cmNlIG93bmVyIGlzIHJlbGVhc2VkLgorSU5TRVJUIElOVE8gcmlf ZnBfb3V0ZXIgVkFMVUVTICgxKTsKKworQ1JFQVRFIEZVTkNUSU9OIG91dGVyX3RyaWdnZXJfc3Bp X2ZhaWwoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVSRk9STSBzcGlfZXhl Y19zcWwoJ0lOU0VSVCBJTlRPIHJpX2ZwX2lubmVyIFZBTFVFUyAoMyknKTsKKyAgICBSRVRVUk4g TkVXOworRU5EICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0RST1AgVFJJR0dFUiBvdXRlcl90ZyBP TiByaV9mcF9vdXRlcjsKK0RST1AgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfb2soKTsKKwor Q1JFQVRFIFRSSUdHRVIgb3V0ZXJfdGcgQUZURVIgSU5TRVJUIE9OIHJpX2ZwX291dGVyCisgICAg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpOwor CistLSAgTGlrZSBhYm92ZSBidXQgdGhlIGlubmVyIGluc2VydCBmYWlscy4KK0lOU0VSVCBJTlRP IHJpX2ZwX291dGVyIFZBTFVFUyAoMik7CisKK0RST1AgVFJJR0dFUiBvdXRlcl90ZyBPTiByaV9m cF9vdXRlcjsKK0RST1AgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpOworRFJPUCBU QUJMRSByaV9mcF9pbm5lciwgcmlfZnBfb3V0ZXI7CisKKy0tIENsZWFudXAKK0RST1AgVEFCTEUg cmlfZnBfZms7CitEUk9QIFRBQkxFIHJpX2ZwX3BrMywgcmlfZnBfcGsyLCByaV9mcF9wazE7CitE Uk9QIEVYVEVOU0lPTiB0ZXN0X3NwaV9yZXNvd25lcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvdGVzdF9zcGlfcmVzb3duZXItLTEuMC5zcWwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOWVmNzBlZTBkYwotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvdGVzdF9z cGlfcmVzb3duZXItLTEuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsICovCisKKy0tIGNv bXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVB VEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9zcGlfcmVzb3du ZXIiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gc3BpX2V4ZWNf c3FsKHF1ZXJ5IHRleHQpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAnc3Bp X2V4ZWNfc3FsJworTEFOR1VBR0UgQyBTVFJJQ1Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmMgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzMDYxMzliNWMwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci90ZXN0X3NwaV9yZXNvd25lci5jCkBA IC0wLDAgKzEsNzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rfc3BpX3Jlc293 bmVyLmMKKyAqCQlTUUwtY2FsbGFibGUgQyBmdW5jdGlvbiB0aGF0IHVzZXMgU1BJIHRvIGV4ZWN1 dGUgYSBxdWVyeS4KKyAqCisgKgkJVXNlZnVsIGZvciB0ZXN0aW5nIGNvZGUgcGF0aHMgdGhhdCBv bmx5IHRyaWdnZXIgdW5kZXIgQy1sZXZlbAorICoJCVNQSSAobm90IFBML3BnU1FMKSwgc3VjaCBh cyByZXNvdXJjZSBvd25lciBpbnRlcmFjdGlvbnMgd2l0aAorICoJCVJJIGZhc3QtcGF0aCBGSyBj aGVja3MuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NwaV9yZXNvd25lci90ZXN0X3NwaV9yZXNvd25lci5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZXhlY3V0b3Iv c3BpLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKworUEdfTU9EVUxFX01BR0lDOwor CitQR19GVU5DVElPTl9JTkZPX1YxKHNwaV9leGVjX3NxbCk7CisKKy8qCisgKiBzcGlfZXhlY19z cWwocXVlcnkgdGV4dCkgLSBleGVjdXRlIGEgU1FMIHF1ZXJ5IHZpYSBTUEkuCisgKgorICogT3Bl bnMgYSBmcmVzaCBTUEkgY29ubmVjdGlvbiwgZXhlY3V0ZXMgdGhlIHF1ZXJ5LCBhbmQgY2xvc2Vz IHRoZQorICogY29ubmVjdGlvbi4gIENyZWF0ZXMgYSBkZWRpY2F0ZWQgY2hpbGQgcmVzb3VyY2Ug b3duZXIgYXJvdW5kIHRoZQorICogU1BJX2V4ZWN1dGUgY2FsbCBhbmQgcmVsZWFzZXMgaXQgYmVm b3JlIHJldHVybmluZywgZW5zdXJpbmcgdGhhdAorICogYW55IHJlc291cmNlcyByZWdpc3RlcmVk IHVuZGVyIGl0IChzdWNoIGFzIHJlbGF0aW9uIHJlZmVyZW5jZXMKKyAqIG9wZW5lZCBieSBSSSBm YXN0LXBhdGggRksgY2hlY2tzKSBhcmUgcmVsZWFzZWQgYmVmb3JlIHRoZSBvdXRlcgorICogdHJp Z2dlci1maXJpbmcgYmF0Y2ggY2FsbGJhY2sgZmlyZXMuICBUaGlzIHJlcHJvZHVjZXMgdGhlIHJl c291cmNlCisgKiBvd25lciBtaXNtYXRjaCB0aGF0IG9jY3VycyB3aXRoIEMtbGFuZ3VhZ2UgZXh0 ZW5zaW9ucyBsaWtlIFBvc3RHSVMKKyAqIHRvcG9sb2d5IGZ1bmN0aW9ucywgd2hpY2ggY2Fubm90 IGJlIHRyaWdnZXJlZCBmcm9tIFBML3BnU1FMIHNpbmNlCisgKiBQTC9wZ1NRTCdzIFNQSSBjb25u ZWN0aW9uIHNwYW5zIHRoZSBlbnRpcmUgZnVuY3Rpb24gY2FsbC4KKyAqLworRGF0dW0KK3NwaV9l eGVjX3NxbChQR19GVU5DVElPTl9BUkdTKQoreworCWNvbnN0IGNoYXIgKnF1ZXJ5ID0gdGV4dF90 b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlpbnQJCQlyZXQ7CisJUmVzb3VyY2VP d25lciBzYXZlID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJUmVzb3VyY2VPd25lciBjaGlsZG93 bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShzYXZlLCAidGVzdF9zcGkgaW5uZXIiKTsKKworCVNQ SV9jb25uZWN0KCk7CisKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IGNoaWxkb3duZXI7CisJcmV0 ID0gU1BJX2V4ZWN1dGUocXVlcnksIGZhbHNlLCAwKTsKKworCWlmIChyZXQgPCAwKQorCQllbG9n KEVSUk9SLCAiU1BJX2V4ZWN1dGUgZmFpbGVkOiBlcnJvciBjb2RlICVkIiwgcmV0KTsKKworCVNQ SV9maW5pc2goKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZTsKKwlSZXNvdXJjZU93 bmVyUmVsZWFzZShjaGlsZG93bmVyLAorCQkJCQkJIFJFU09VUkNFX1JFTEVBU0VfQkVGT1JFX0xP Q0tTLAorCQkJCQkJIHRydWUsIGZhbHNlKTsKKwlSZXNvdXJjZU93bmVyUmVsZWFzZShjaGlsZG93 bmVyLAorCQkJCQkJIFJFU09VUkNFX1JFTEVBU0VfTE9DS1MsCisJCQkJCQkgdHJ1ZSwgZmFsc2Up OworCVJlc291cmNlT3duZXJSZWxlYXNlKGNoaWxkb3duZXIsCisJCQkJCQkgUkVTT1VSQ0VfUkVM RUFTRV9BRlRFUl9MT0NLUywKKwkJCQkJCSB0cnVlLCBmYWxzZSk7CisJUmVzb3VyY2VPd25lckRl bGV0ZShjaGlsZG93bmVyKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmNvbnRy b2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVy LmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxMjBhZTk0 NDJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25l ci90ZXN0X3NwaV9yZXNvd25lci5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdU ZXN0IFNRTC1jYWxsYWJsZSBDIGZ1bmN0aW9uIHRoYXQgdXNlcyBTUEkgdXNpbmcgZGVkaWNhdGVk IFJlc291cmNlT3duZXInCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1l ID0gJyRsaWJkaXIvdGVzdF9zcGlfcmVzb3duZXInCityZWxvY2F0YWJsZSA9IHRydWUKLS0gCjIu NDcuMwoK --00000000000015e5c1064ef3b0ef--