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 1vLNs4-00EhLf-0A for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Nov 2025 15:43:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vLNs2-0071WM-1H for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Nov 2025 15:43:54 +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 1vLNs1-0071WD-33 for pgsql-hackers@lists.postgresql.org; Tue, 18 Nov 2025 15:43:54 +0000 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vLNrz-000CKb-1P for pgsql-hackers@postgresql.org; Tue, 18 Nov 2025 15:43:53 +0000 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5dbde7f4341so5254886137.1 for ; Tue, 18 Nov 2025 07:43:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763480629; x=1764085429; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=DeccHcwAam416rp+DbhHgiRaJkJXl/3RaxSj1EqiKQs=; b=gE/BAu9AVU04hPbzbo1cA/sTxDa0/YmKsYzOmmdq7UEnW4y4A+7FexRQ6W7oviUo7Q qFwh41svvR6SKnr+ORcL5kqGT/hso1NJMfSOcZc8eQDH9hbJkmbaeE90Ao4xLf5++0cD GbRJje8OvBcjmPHt7oQUi2G1D8hFAwJz4L2tPjxRGajuyfPItoPMj6MttnWQejnbqPaM JJvnSPn8/rlo7a3hhAfxVFIQ9of6VR5Qcjh9Rfi9yDoEcpMMYmllB21JbYn3BvdqfzJr PPb8Du+mNHFJ7dqcJMUOc98dVDZyFvECFjpqNN38FAcC3zLO0vc3ejxKuzOBf86WuNdI He0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763480629; x=1764085429; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DeccHcwAam416rp+DbhHgiRaJkJXl/3RaxSj1EqiKQs=; b=xHDI0lFcvbMOJjTtfqbg0pMaMcQ5cbeO2e6jWT00Y7HQ6bzuEoAEW22t/FCAR+HuxJ B+uVCKA87+D9lmnQ8IAY2PjSuQ5Ps8GrUZZneEq5AgD4xmsFklqwiY6oYnyuTulFsiui y2jGUsbvC1WHAu896aoyKfCEvJupbbJN2fMyvPr8Fuqu6mL+oIe3JEcagD4ZDYqCBYPA b4Fz7Km8TVrRjkw/r5e4aNYp1394r8ZY27zBzfpqulbCCPCjJW0upSkYzO2e+HMZRNak 61lHFNaskqcKWHX21crGfgiOxV4MXQPJzDZrz3OjpRc/KevUVamMyu+n1uBCqhEQMpEt 5kcA== X-Gm-Message-State: AOJu0YwItIcAcyruMjXdhl03XSP34sbkGT8jf5h/bVeIiFWca0KHVoT1 fHMnsEHKabq80V+juplymGzbD280eXVttOyhEodNvrw04bpeAxlfGbAV2YOViZo0MYC13jmf+C8 jLKU2gfpD9aT73ManjIOduxGKPBjPoE4fulAy+KNSfA== X-Gm-Gg: ASbGnctQDshnKm/p4JI6YY3OpRm/QRFdllIU4pRee6doW2vX3aa0sU9AIRmNMCc0PU4 jZkeHyjaPL/rNGhy/NN8OkMABKRB05/7hkiydCaUI3eUWZT1bGy1A+8OaVQHLmjRD+CqKI4IpW/ sPsBBJKzHo9VQhlG0xfRiTiCuImBP13bzjQ+K+1QI5FXhZV9pO4ZgOMY2hPo/4VDKgPj085yP4z QFV5fg9Cu+uCji2HXujdUsMNkV7flXUqfY+BX2NnyiHLbVvUZQpXKj0XkSMBsrMy/Tqx8QEUUHs Zd7JChIx1UUmirUw/ZLAAviImMUvaTxp9DKXPESlwes4WYho00kcdCiLJmKM0qWFRJcJNoIYfJO BfZIUg4YZM8IPccGH/t/Oxwp/x0hFkjS4vkOi00rQaF5iFtQrG3eEdqwRo3BQ9Fnvbc/h7HJisg == X-Google-Smtp-Source: AGHT+IHAkhfSPVAPSacxLJ7sYFucLYx7qbQCmeZumfhYNmY7dLcJxHicx8y4aRz+XuM2pk+QmH7EhGd0FSvayQNth+E= X-Received: by 2002:a05:6102:5107:b0:5dd:8953:4c39 with SMTP id ada2fe7eead31-5e190d74148mr1288723137.4.1763480629324; Tue, 18 Nov 2025 07:43:49 -0800 (PST) MIME-Version: 1.0 From: jian he Date: Tue, 18 Nov 2025 23:43:13 +0800 X-Gm-Features: AWmQ_blQCDJDEJ3geDbM8QfoEM6ee32yQfbva6ATniy--ra3gMf3-POF8ZNbGFY Message-ID: Subject: IS JSON predicate support for domain base type as JSON/JSONB/BYTEA/TEXT To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000007acafb0643e05493" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007acafb0643e05493 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable hi. src/backend/executor/execExpr.c case T_JsonIsPredicate: { JsonIsPredicate *pred =3D (JsonIsPredicate *) node; ExecInitExprRec((Expr *) pred->expr, state, resv, resnull); scratch.opcode =3D EEOP_IS_JSON; scratch.d.is_json.pred =3D pred; ExprEvalPushStep(state, &scratch); break; } gram.y: a_expr IS json_predicate_type_constraint the above shows the a_expr will be transformed and then evaluated. The exprType type of a_expr as domain should work just fine. The attached patch implements this, and it seems to be quite straightforwar= d. (extensive regress tests added) CREATE DOMAIN jd1 AS JSON CHECK ((VALUE ->'a')::text <> '3'); CREATE DOMAIN jd2 AS JSONB CHECK ((VALUE ->'a') =3D '1'::jsonb); CREATE DOMAIN jd4 AS bytea CHECK (VALUE <> '\x61'); SELECT NULL::jd1 IS JSON; SELECT NULL::jd2 IS JSON; SELECT NULL::jd4 IS JSON; in the master, the above 3 IS JSON would return error, with the attached patch, it will return NULL. I checked the discussion links [1], but couldn=E2=80=99t find the reason do= mains aren=E2=80=99t supported. I guess at that time, we didn't think about this issue. [1] https://git.postgresql.org/cgit/postgresql.git/commit/?id=3D6ee30209a6f= 161d0a267a33f090c70c579c87c00 -- jian https://www.enterprisedb.com/ --0000000000007acafb0643e05493 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-IS-JSON-predicate-work-with-domain-type.patch" Content-Disposition: attachment; filename="v1-0001-IS-JSON-predicate-work-with-domain-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi4qs6jc0 RnJvbSAwZjQzOWFhN2U3MzdiMDRhNjllMDEyNGNhMmI1MzViN2QxNmQ3ZWIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTggTm92IDIwMjUgMjM6NDA6NDcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gSVMgSlNPTiBwcmVkaWNhdGUgd29yayB3aXRoIGRvbWFpbiB0eXBlCgpJUyBKU09OIHBy ZWRpY2F0ZSB3b3JrIHdpdGggZG9tYWluIGJhc2UgdHlwZSBpcyBURVhULCBKU09OLCBKU09OQiwg QllURUEuCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLwotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgfCAgIDIgKwogc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICB8 ICAxNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICB8ICAgMiArLQog c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0IHwgMjE2ICsrKysrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uLnNxbCAgICAgIHwgMTA5ICsrKysrKysr KysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzQ2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmluZGV4IDBlMWE3NDk3NmY3Li41 NTgwZmM4ZTBlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC00NzQ2 LDYgKzQ3NDYsOCBAQCBFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZShFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wKQogCX0KIAogCWV4cHJ0eXBlID0gZXhwclR5cGUocHJlZC0+ZXhwcik7 CisJaWYgKGV4cHJ0eXBlICE9IHByZWQtPnJlc3VsdEJhc2VUeXBlKQorCQlleHBydHlwZSA9IHBy ZWQtPnJlc3VsdEJhc2VUeXBlOwogCiAJaWYgKGV4cHJ0eXBlID09IFRFWFRPSUQgfHwgZXhwcnR5 cGUgPT0gSlNPTk9JRCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGUyZDllOWJlNDFhLi43 ZTMzOWU2NDNhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTk4NCw3ICs5ODQsNyBAQCBtYWtl SnNvbktleVZhbHVlKE5vZGUgKmtleSwgTm9kZSAqdmFsdWUpCiAgKi8KIE5vZGUgKgogbWFrZUpz b25Jc1ByZWRpY2F0ZShOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsIEpzb25WYWx1ZVR5 cGUgaXRlbV90eXBlLAotCQkJCQlib29sIHVuaXF1ZV9rZXlzLCBpbnQgbG9jYXRpb24pCisJCQkJ CWJvb2wgdW5pcXVlX2tleXMsIE9pZCBvaWQsIGludCBsb2NhdGlvbikKIHsKIAlKc29uSXNQcmVk aWNhdGUgKm4gPSBtYWtlTm9kZShKc29uSXNQcmVkaWNhdGUpOwogCkBAIC05OTIsNiArOTkyLDcg QEAgbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsIEpz b25WYWx1ZVR5cGUgaXRlbV90eXBlLAogCW4tPmZvcm1hdCA9IGZvcm1hdDsKIAluLT5pdGVtX3R5 cGUgPSBpdGVtX3R5cGU7CiAJbi0+dW5pcXVlX2tleXMgPSB1bmlxdWVfa2V5czsKKwluLT5yZXN1 bHRCYXNlVHlwZSA9IG9pZDsKIAluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwogCiAJcmV0dXJuIChO b2RlICopIG47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjM2EwYTM1NGE5Yy4uZmE3MDc2MWMwNmYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtMTU1MjIsNyArMTU1MjIsNyBAQCBhX2V4cHI6CQljX2V4cHIJCQkJCQkJCQl7 ICQkID0gJDE7IH0KIAkJCQl7CiAJCQkJCUpzb25Gb3JtYXQgKmZvcm1hdCA9IG1ha2VKc29uRm9y bWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOwogCi0JCQkJCSQkID0g bWFrZUpzb25Jc1ByZWRpY2F0ZSgkMSwgZm9ybWF0LCAkMywgJDQsIEAxKTsKKwkJCQkJJCQgPSBt YWtlSnNvbklzUHJlZGljYXRlKCQxLCBmb3JtYXQsICQzLCAkNCwgSW52YWxpZE9pZCwgQDEpOwog CQkJCX0KIAkJCS8qCiAJCQkgKiBSZXF1aXJlZCBieSBTUUwvSlNPTiwgYnV0IHRoZXJlIGFyZSBj b25mbGljdHMKQEAgLTE1NTMxLDcgKzE1NTMxLDcgQEAgYV9leHByOgkJY19leHByCQkJCQkJCQkJ eyAkJCA9ICQxOyB9CiAJCQkJSVMgIGpzb25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWludAogCQkJ CQlqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CQklcHJlYyBJUwogCQkJCXsKLQkJ CQkJJCQgPSBtYWtlSnNvbklzUHJlZGljYXRlKCQxLCAkMiwgJDQsICQ1LCBAMSk7CisJCQkJCSQk ID0gbWFrZUpzb25Jc1ByZWRpY2F0ZSgkMSwgJDIsICQ0LCAkNSwgSW52YWxpZE9pZCwgQDEpOwog CQkJCX0KIAkJCSovCiAJCQl8IGFfZXhwciBJUyBOT1QKQEAgLTE1NTQwLDcgKzE1NTQwLDcgQEAg YV9leHByOgkJY19leHByCQkJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQkJewogCQkJCQlKc29uRm9y bWF0ICpmb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RF RkFVTFQsIC0xKTsKIAotCQkJCQkkJCA9IG1ha2VOb3RFeHByKG1ha2VKc29uSXNQcmVkaWNhdGUo JDEsIGZvcm1hdCwgJDQsICQ1LCBAMSksIEAxKTsKKwkJCQkJJCQgPSBtYWtlTm90RXhwcihtYWtl SnNvbklzUHJlZGljYXRlKCQxLCBmb3JtYXQsICQ0LCAkNSwgSW52YWxpZE9pZCwgQDEpLCBAMSk7 CiAJCQkJfQogCQkJLyoKIAkJCSAqIFJlcXVpcmVkIGJ5IFNRTC9KU09OLCBidXQgdGhlcmUgYXJl IGNvbmZsaWN0cwpAQCAtMTU1NTAsNyArMTU1NTAsNyBAQCBhX2V4cHI6CQljX2V4cHIJCQkJCQkJ CQl7ICQkID0gJDE7IH0KIAkJCQkJanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CiAJCQkJ CWpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQJCSVwcmVjIElTCiAJCQkJewotCQkJ CQkkJCA9IG1ha2VOb3RFeHByKG1ha2VKc29uSXNQcmVkaWNhdGUoJDEsICQyLCAkNSwgJDYsIEAx KSwgQDEpOworCQkJCQkkJCA9IG1ha2VOb3RFeHByKG1ha2VKc29uSXNQcmVkaWNhdGUoJDEsICQy LCAkNSwgJDYsIEludmFsaWRPaWQsIEAxKSwgQDEpOwogCQkJCX0KIAkJCSovCiAJCQl8IERFRkFV TFQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY3ZmIyZmI0ODVkLi41NzI2MTU4MzcxMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC00MDU1LDExICs0MDU1LDEzIEBAIHRyYW5zZm9y bUpzb25QYXJzZUFyZyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmpzZXhwciwgSnNvbkZvcm1h dCAqZm9ybWF0LAogewogCU5vZGUJICAgKnJhd19leHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2Uo cHN0YXRlLCBqc2V4cHIpOwogCU5vZGUJICAgKmV4cHIgPSByYXdfZXhwcjsKKwlPaWQJCQliYXNl dHlwZTsKIAogCSpleHBydHlwZSA9IGV4cHJUeXBlKGV4cHIpOworCWJhc2V0eXBlID0gZ2V0QmFz ZVR5cGUoKmV4cHJ0eXBlKTsKIAogCS8qIHByZXBhcmUgaW5wdXQgZG9jdW1lbnQgKi8KLQlpZiAo KmV4cHJ0eXBlID09IEJZVEVBT0lEKQorCWlmIChiYXNldHlwZSA9PSBCWVRFQU9JRCkKIAl7CiAJ CUpzb25WYWx1ZUV4cHIgKmp2ZTsKIApAQCAtNDA3NSwxMSArNDA3NywxMSBAQCB0cmFuc2Zvcm1K c29uUGFyc2VBcmcoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpqc2V4cHIsIEpzb25Gb3JtYXQg KmZvcm1hdCwKIAkJY2hhcgkJdHlwY2F0ZWdvcnk7CiAJCWJvb2wJCXR5cGlzcHJlZmVycmVkOwog Ci0JCWdldF90eXBlX2NhdGVnb3J5X3ByZWZlcnJlZCgqZXhwcnR5cGUsICZ0eXBjYXRlZ29yeSwg JnR5cGlzcHJlZmVycmVkKTsKKwkJZ2V0X3R5cGVfY2F0ZWdvcnlfcHJlZmVycmVkKGJhc2V0eXBl LCAmdHlwY2F0ZWdvcnksICZ0eXBpc3ByZWZlcnJlZCk7CiAKLQkJaWYgKCpleHBydHlwZSA9PSBV TktOT1dOT0lEIHx8IHR5cGNhdGVnb3J5ID09IFRZUENBVEVHT1JZX1NUUklORykKKwkJaWYgKGJh c2V0eXBlID09IFVOS05PV05PSUQgfHwgdHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllfU1RSSU5H KQogCQl7Ci0JCQlleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgKE5vZGUgKikg ZXhwciwgKmV4cHJ0eXBlLAorCQkJZXhwciA9IGNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUs IChOb2RlICopIGV4cHIsIGJhc2V0eXBlLAogCQkJCQkJCQkJCSBURVhUT0lELCAtMSwKIAkJCQkJ CQkJCQkgQ09FUkNJT05fSU1QTElDSVQsCiAJCQkJCQkJCQkJIENPRVJDRV9JTVBMSUNJVF9DQVNU LCAtMSk7CkBAIC00MTAzLDExICs0MTA1LDE0IEBAIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUpz b25Jc1ByZWRpY2F0ZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25Jc1ByZWRpY2F0ZSAqcHJlZCkK IHsKIAlPaWQJCQlleHBydHlwZTsKKwlPaWQJCQliYXNldHlwZTsKKwogCU5vZGUJICAgKmV4cHIg PSB0cmFuc2Zvcm1Kc29uUGFyc2VBcmcocHN0YXRlLCBwcmVkLT5leHByLCBwcmVkLT5mb3JtYXQs CiAJCQkJCQkJCQkJCSAmZXhwcnR5cGUpOwogCiAJLyogbWFrZSByZXN1bHRpbmcgZXhwcmVzc2lv biAqLwotCWlmIChleHBydHlwZSAhPSBURVhUT0lEICYmIGV4cHJ0eXBlICE9IEpTT05PSUQgJiYg ZXhwcnR5cGUgIT0gSlNPTkJPSUQpCisJYmFzZXR5cGUgPSBnZXRCYXNlVHlwZShleHBydHlwZSk7 CisJaWYgKGJhc2V0eXBlICE9IFRFWFRPSUQgJiYgYmFzZXR5cGUgIT0gSlNPTk9JRCAmJiBiYXNl dHlwZSAhPSBKU09OQk9JRCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFUWVBFX01JU01BVENIKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHR5cGUgJXMgaW4g SVMgSlNPTiBwcmVkaWNhdGUiLApAQCAtNDExNSw3ICs0MTIwLDcgQEAgdHJhbnNmb3JtSnNvbklz UHJlZGljYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbklzUHJlZGljYXRlICpwcmVkKQogCiAJ LyogVGhpcyBpbnRlbnRpb25hbGx5KD8pIGRyb3BzIHRoZSBmb3JtYXQgY2xhdXNlLiAqLwogCXJl dHVybiBtYWtlSnNvbklzUHJlZGljYXRlKGV4cHIsIE5VTEwsIHByZWQtPml0ZW1fdHlwZSwKLQkJ CQkJCQkgICBwcmVkLT51bmlxdWVfa2V5cywgcHJlZC0+bG9jYXRpb24pOworCQkJCQkJCSAgIHBy ZWQtPnVuaXF1ZV9rZXlzLCBiYXNldHlwZSwgcHJlZC0+bG9jYXRpb24pOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9tYWtlZnVuY3MuaAppbmRleCA1NDczY2U5YTI4OC4uNDQ5Y2Q1YjhlN2UgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21h a2VmdW5jcy5oCkBAIC0xMTcsNyArMTE3LDcgQEAgZXh0ZXJuIEpzb25WYWx1ZUV4cHIgKm1ha2VK c29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHByICpmb3JtYXR0ZWRfZXhwciwKIGV4dGVy biBOb2RlICptYWtlSnNvbktleVZhbHVlKE5vZGUgKmtleSwgTm9kZSAqdmFsdWUpOwogZXh0ZXJu IE5vZGUgKm1ha2VKc29uSXNQcmVkaWNhdGUoTm9kZSAqZXhwciwgSnNvbkZvcm1hdCAqZm9ybWF0 LAogCQkJCQkJCQkgSnNvblZhbHVlVHlwZSBpdGVtX3R5cGUsIGJvb2wgdW5pcXVlX2tleXMsCi0J CQkJCQkJCSBpbnQgbG9jYXRpb24pOworCQkJCQkJCQkgT2lkIG9pZCwgaW50IGxvY2F0aW9uKTsK IGV4dGVybiBKc29uQmVoYXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSBi dHlwZSwgTm9kZSAqZXhwciwKIAkJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBKc29u VGFibGVQYXRoICptYWtlSnNvblRhYmxlUGF0aChDb25zdCAqcGF0aHZhbHVlLCBjaGFyICpwYXRo bmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDFiNDQzNmYyZmY2Li42ZTMwYzFmODUwMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTE3NjEsNiArMTc2MSw3IEBAIHR5cGVkZWYgc3RydWN0 IEpzb25Jc1ByZWRpY2F0ZQogCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkvKiBGT1JNQVQgY2xhdXNl LCBpZiBzcGVjaWZpZWQgKi8KIAlKc29uVmFsdWVUeXBlIGl0ZW1fdHlwZTsJLyogSlNPTiBpdGVt IHR5cGUgKi8KIAlib29sCQl1bmlxdWVfa2V5czsJLyogY2hlY2sga2V5IHVuaXF1ZW5lc3M/ICov CisJT2lkCQkJcmVzdWx0QmFzZVR5cGU7CS8qIHJlc3VsdCBiYXNlIHR5cGUgKi8KIAlQYXJzZUxv Ywlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpz b25Jc1ByZWRpY2F0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z cWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbi5vdXQKaW5kZXgg YzdiOWU1NzU0NDUuLmRmMTE1N2MxMTlkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3NxbGpzb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNv bi5vdXQKQEAgLTExMTAsNiArMTExMCwxMCBAQCBDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1Ymxp Yy5qc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXcgQVMKICAgICAgICAgICAgICAgICAgICBGUk9NICgg VkFMVUVTICgxKSwgKDIpLCAoTlVMTDo6aW50ZWdlciksICg0KSkgZm9vKGkpKSBxKGEpKSBBUyAi anNvbl9hcnJheSIKIERST1AgVklFVyBqc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXc7CiAtLSBJUyBK U09OIHByZWRpY2F0ZQorQ1JFQVRFIERPTUFJTiBqZDEgQVMgSlNPTiBDSEVDSyAoKFZBTFVFIC0+ J2EnKTo6dGV4dCA8PiAnMycpOworQ1JFQVRFIERPTUFJTiBqZDIgQVMgSlNPTkIgQ0hFQ0sgKChW QUxVRSAtPidhJykgPSAnMSc6Ompzb25iKTsKK0NSRUFURSBET01BSU4gamQzIEFTIHRleHQgQ0hF Q0sgKFZBTFVFIDw+ICdhJyk7CitDUkVBVEUgRE9NQUlOIGpkNCBBUyBieXRlYSBDSEVDSyAoVkFM VUUgPD4gJ1x4NjEnKTsKIFNFTEVDVCBOVUxMIElTIEpTT047CiAgP2NvbHVtbj8gCiAtLS0tLS0t LS0tCkBAIC0xMTQ4LDYgKzExNTIsMTI0IEBAIFNFTEVDVCBOVUxMOjpieXRlYSBJUyBKU09OOwog CiBTRUxFQ1QgTlVMTDo6aW50IElTIEpTT047CiBFUlJPUjogIGNhbm5vdCB1c2UgdHlwZSBpbnRl Z2VyIGluIElTIEpTT04gcHJlZGljYXRlCitTRUxFQ1QgTlVMTDo6amQxIElTIEpTT047CisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBOVUxMOjpqZDEgSVMgTk9U IEpTT047CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBOVUxM OjpqZDIgSVMgSlNPTjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIE5VTEw6OmpkMyBJUyBKU09OOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgTlVMTDo6amQ0IElTIEpTT047CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBOVUxMOjpqZDQgSVMgTk9UIEpTT047CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAneyJhIjogMSwgImEiOiAyfSc6OmpkMSBJ UyBKU09OIFdJVEggVU5JUVVFIEtFWVM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEg cm93KQorCitTRUxFQ1QgJ3siYSI6IDEsICJhIjogMX0nOjpqZDIgSVMgSlNPTiBXSVRIIFVOSVFV RSBLRVlTOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUICd7 ImEiOiAxLCAiYSI6IDJ9Jzo6amQzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUzsKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCAneyJhIjogMSwgImEiOiAyfSc6 OmpkNCBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg ZgorKDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSB0c19kb21haW4oanMgdGV4dCk7CitJTlNF UlQgSU5UTyB0c19kb21haW4gVkFMVUVTICgneyJhIjozfScpLCAoJ3siYSI6IjEifScpLCAoJ2En KSwgKCdceDYxJyk7CitTRUxFQ1QganM6OmpkMSBJUyBKU09OIEZST00gdHNfZG9tYWluOworRVJS T1I6ICB2YWx1ZSBmb3IgZG9tYWluIGpkMSB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJqZDFf Y2hlY2siCitTRUxFQ1QganM6OmpkMiBJUyBKU09OIEZST00gdHNfZG9tYWluOworRVJST1I6ICB2 YWx1ZSBmb3IgZG9tYWluIGpkMiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJqZDJfY2hlY2si CitTRUxFQ1QganM6OmpkMyBJUyBKU09OIEZST00gdHNfZG9tYWluOworRVJST1I6ICB2YWx1ZSBm b3IgZG9tYWluIGpkMyB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJqZDNfY2hlY2siCitTRUxF Q1QganM6OmpkNCBJUyBKU09OIEZST00gdHNfZG9tYWluOworRVJST1I6ICB2YWx1ZSBmb3IgZG9t YWluIGpkNCB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJqZDRfY2hlY2siCitTRUxFQ1QganMs CisgIHBnX3R5cGVvZihqcyksCisgIGpzIElTIEpTT04gT0JKRUNUICJvYmplY3Q/IiwKKyAganMg SVMgSlNPTiBBUlJBWSAiYXJyYXk/IiwKKyAganMgSVMgSlNPTiBBUlJBWSBXSVRIIFVOSVFVRSBL RVlTICJhcnJheSB3LiBVSz8iLAorICBqcyBJUyBKU09OIEFSUkFZIFdJVEhPVVQgVU5JUVVFIEtF WVMgImFycmF5IHcvbyBVSz8iCitGUk9NIChWQUxVRVMgKCdbeyJhIjoiMSJ9LCB7ImIiOiIyIiwi YiI6IjMifV0nOjpqZDEpKSBmb28oanMpOworICAgICAgICAgICAgICAganMgICAgICAgICAgICAg ICB8IHBnX3R5cGVvZiB8IG9iamVjdD8gfCBhcnJheT8gfCBhcnJheSB3LiBVSz8gfCBhcnJheSB3 L28gVUs/IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIFt7ImEiOiIx In0sIHsiYiI6IjIiLCJiIjoiMyJ9XSB8IGpkMSAgICAgICB8IGYgICAgICAgfCB0ICAgICAgfCBm ICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK1NFTEVDVCBqcywKKyAgcGdfdHlwZW9mKGpzKSwK KyAganMgSVMgSlNPTiBPQkpFQ1QgIm9iamVjdD8iLAorICBqcyBJUyBKU09OIEFSUkFZICJhcnJh eT8iLAorICBqcyBJUyBKU09OIEFSUkFZIFdJVEggVU5JUVVFIEtFWVMgImFycmF5IHcuIFVLPyIs CisgIGpzIElTIEpTT04gQVJSQVkgV0lUSE9VVCBVTklRVUUgS0VZUyAiYXJyYXkgdy9vIFVLPyIK K0ZST00gKFZBTFVFUyAoJ1t7ImEiOiIxIn0sIHsiYiI6IjIiLCJiIjoiMyJ9XSc6OmpkMikpIGZv byhqcyk7CisgICAgICAgICAgICBqcyAgICAgICAgICAgIHwgcGdfdHlwZW9mIHwgb2JqZWN0PyB8 IGFycmF5PyB8IGFycmF5IHcuIFVLPyB8IGFycmF5IHcvbyBVSz8gCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tCisgW3siYSI6ICIxIn0sIHsiYiI6ICIzIn1dIHwgamQyICAgICAgIHwg ZiAgICAgICB8IHQgICAgICB8IHQgICAgICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIGpz LAorICBwZ190eXBlb2YoanMpLAorICBqcyBJUyBKU09OIE9CSkVDVCAib2JqZWN0PyIsCisgIGpz IElTIEpTT04gQVJSQVkgImFycmF5PyIsCisgIGpzIElTIEpTT04gQVJSQVkgV0lUSCBVTklRVUUg S0VZUyAiYXJyYXkgdy4gVUs/IiwKKyAganMgSVMgSlNPTiBBUlJBWSBXSVRIT1VUIFVOSVFVRSBL RVlTICJhcnJheSB3L28gVUs/IgorRlJPTSAoVkFMVUVTICgnW3siYSI6IjEifSwgeyJiIjoiMiIs ImIiOiIzIn1dJzo6amQzKSkgZm9vKGpzKTsKKyAgICAgICAgICAgICAgIGpzICAgICAgICAgICAg ICAgfCBwZ190eXBlb2YgfCBvYmplY3Q/IHwgYXJyYXk/IHwgYXJyYXkgdy4gVUs/IHwgYXJyYXkg dy9vIFVLPyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyBbeyJhIjoi MSJ9LCB7ImIiOiIyIiwiYiI6IjMifV0gfCBqZDMgICAgICAgfCBmICAgICAgIHwgdCAgICAgIHwg ZiAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1QganMsCisgIHBnX3R5cGVvZihqcyks CisgIGpzIElTIEpTT04gT0JKRUNUICJvYmplY3Q/IiwKKyAganMgSVMgSlNPTiBBUlJBWSAiYXJy YXk/IiwKKyAganMgSVMgSlNPTiBBUlJBWSBXSVRIIFVOSVFVRSBLRVlTICJhcnJheSB3LiBVSz8i LAorICBqcyBJUyBKU09OIEFSUkFZIFdJVEhPVVQgVU5JUVVFIEtFWVMgImFycmF5IHcvbyBVSz8i CitGUk9NIChWQUxVRVMgKCdbeyJhIjoiMSJ9LCB7ImIiOiIyIiwiYiI6IjMifV0nOjpqZDQpKSBm b28oanMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGdfdHlwZW9mIHwgb2JqZWN0PyB8IGFycmF5PyB8IGFycmF5IHcu IFVLPyB8IGFycmF5IHcvbyBVSz8gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyBceDViN2IyMjYxMjIzYTIyMzEy MjdkMmMyMDdiMjI2MjIyM2EyMjMyMjIyYzIyNjIyMjNhMjIzMzIyN2Q1ZCB8IGpkNCAgICAgICB8 IGYgICAgICAgfCB0ICAgICAgfCBmICAgICAgICAgICAgfCB0CisoMSByb3cpCisKIFNFTEVDVCAn JyBJUyBKU09OOwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpAQCAtMTIwNiw2ICsxMzI4LDMzIEBA IEZST00KICBbImEiLF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBm ICAgICAgIHwgdCAgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwg ZiAgICAgICAgIHwgZiAgICAgICAgICAgICAgfCBmCiAoMTYgcm93cykKIAorU0VMRUNUCisJanMs CisJanMgSVMgSlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5PVCBKU09OIiwK KwlqcyBJUyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpFQ1QgIklTIE9C SkVDVCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpTT04gU0NBTEFS ICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAiV0lUSE9VVCBV TklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklRVUUiCitGUk9N CisJKFNFTEVDVCBqczo6amQzIEZST00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElTIEpTT04pIGZv byhqcyk7CisgICAgICAgICAgICAgICAgICAgICAganMgICAgICAgICAgICAgICAgICAgICAgIHwg SVMgSlNPTiB8IElTIE5PVCBKU09OIHwgSVMgVkFMVUUgfCBJUyBPQkpFQ1QgfCBJUyBBUlJBWSB8 IElTIFNDQUxBUiB8IFdJVEhPVVQgVU5JUVVFIHwgV0lUSCBVTklRVUUgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgMTIzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAg ICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorICJhYWEgIiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQKKyB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgbnVsbCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAg ICAgIHwgdAorIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAg fCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbMSwgIjIiLCB7fV0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAg ICB8IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0 Cisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAiYiI6IG51bGwgfSAgICAgICAg ICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAg ICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJh IjogMSwgImEiOiBudWxsIH0gICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwg dCAgICAgICAgICAgICAgfCBmCisgeyAiYSI6IDEsICJiIjogW3sgImEiOiAxIH0sIHsgImEiOiAy IH1dIH0gICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAg fCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAi YiI6IFt7ICJhIjogMSwgImIiOiAwLCAiYSI6IDIgfV0gfSB8IHQgICAgICAgfCBmICAgICAgICAg ICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAg ICAgICAgICB8IGYKKygxMSByb3dzKQorCiBTRUxFQ1QKIAlqcywKIAlqcyBJUyBKU09OICJJUyBK U09OIiwKQEAgLTEyMzMsNiArMTM4Miw0NiBAQCBGUk9NCiAgeyAiYSI6IDEsICJiIjogW3sgImEi OiAxLCAiYiI6IDAsICJhIjogMiB9XSB9IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAg ICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwg ZgogKDExIHJvd3MpCiAKK1NFTEVDVAorCWpzLAorCWpzIElTIEpTT04gIklTIEpTT04iLAorCWpz IElTIE5PVCBKU09OICJJUyBOT1QgSlNPTiIsCisJanMgSVMgSlNPTiBWQUxVRSAiSVMgVkFMVUUi LAorCWpzIElTIEpTT04gT0JKRUNUICJJUyBPQkpFQ1QiLAorCWpzIElTIEpTT04gQVJSQVkgIklT IEFSUkFZIiwKKwlqcyBJUyBKU09OIFNDQUxBUiAiSVMgU0NBTEFSIiwKKwlqcyBJUyBKU09OIFdJ VEhPVVQgVU5JUVVFIEtFWVMgIldJVEhPVVQgVU5JUVVFIiwKKwlqcyBJUyBKU09OIFdJVEggVU5J UVVFIEtFWVMgIldJVEggVU5JUVVFIgorRlJPTQorCShTRUxFQ1QganM6OmpkMSBGUk9NIHRlc3Rf aXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMpOworICAgICAgICAgICAgICAgICAgICAg IGpzICAgICAgICAgICAgICAgICAgICAgICB8IElTIEpTT04gfCBJUyBOT1QgSlNPTiB8IElTIFZB TFVFIHwgSVMgT0JKRUNUIHwgSVMgQVJSQVkgfCBJUyBTQ0FMQVIgfCBXSVRIT1VUIFVOSVFVRSB8 IFdJVEggVU5JUVVFIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIDEyMyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgICAgICB8IHQKKyAiYWFhICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgdHJ1ZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAg IHwgdCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAg ICAgICAgIHwgdAorIG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbXSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAg ICAgICB8IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAg fCB0CisgWzEsICIyIiwge31dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICB8IGYg ICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwg dCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7 ICJhIjogMSwgImIiOiBudWxsIH0gICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAg IHwgdCAgICAgICAgICAgICAgfCB0CisgeyAiYSI6IDEsICJhIjogbnVsbCB9ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAg ICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgZgorIHsgImEiOiAx LCAiYiI6IFt7ICJhIjogMSB9LCB7ICJhIjogMiB9XSB9ICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIiOiBbeyAiYSI6IDEsICJiIjogMCwgImEiOiAy IH1dIH0gfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmCisoMTEgcm93cykKKworU0VM RUNUCisJanMsCisJanMgSVMgSlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5P VCBKU09OIiwKKwlqcyBJUyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpF Q1QgIklTIE9CSkVDVCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpT T04gU0NBTEFSICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAi V0lUSE9VVCBVTklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklR VUUiCitGUk9NCisJKFNFTEVDVCBqczo6amQyIEZST00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElT IEpTT04pIGZvbyhqcyk7CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gamQyIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgImpkMl9jaGVjayIKIFNFTEVDVAogCWpzMCwKIAlqcyBJUyBKU09OICJJ UyBKU09OIiwKQEAgLTEyNjAsNiArMTQ0OSwzMyBAQCBGUk9NCiAgeyAiYSI6IDEsICJiIjogW3sg ImEiOiAxLCAiYiI6IDAsICJhIjogMiB9XSB9IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAg ICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAg IHwgZgogKDExIHJvd3MpCiAKK1NFTEVDVAorCWpzMCwKKwlqcyBJUyBKU09OICJJUyBKU09OIiwK KwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZB TFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZ ICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNP TiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBXSVRI IFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpzLCBqczo6amQ0IEZS T00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElTIEpTT04pIGZvbyhqczAsIGpzKTsKKyAgICAgICAg ICAgICAgICAgICAgICBqczAgICAgICAgICAgICAgICAgICAgICAgfCBJUyBKU09OIHwgSVMgTk9U IEpTT04gfCBJUyBWQUxVRSB8IElTIE9CSkVDVCB8IElTIEFSUkFZIHwgSVMgU0NBTEFSIHwgV0lU SE9VVCBVTklRVUUgfCBXSVRIIFVOSVFVRSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyAxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwg dCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgImFhYSAiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAg fCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAor IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgW10gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQg ICAgICAgICAgICAgIHwgdAorIFsxLCAiMiIsIHt9XSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7fSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAg fCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAg ICAgICAgfCB0CisgeyAiYSI6IDEsICJiIjogbnVsbCB9ICAgICAgICAgICAgICAgICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAiYSI6IG51bGwg fSAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAg ICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8 IGYKKyB7ICJhIjogMSwgImIiOiBbeyAiYSI6IDEgfSwgeyAiYSI6IDIgfV0gfSAgICAgfCB0ICAg ICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAg ICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgeyAiYSI6IDEsICJiIjogW3sgImEiOiAxLCAi YiI6IDAsICJhIjogMiB9XSB9IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0 ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgZgorKDEx IHJvd3MpCisKIFNFTEVDVAogCWpzLAogCWpzIElTIEpTT04gIklTIEpTT04iLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zcWxqc29uLnNxbAppbmRleCAzNDNkMzQ0ZDI3MC4uMmI0ZjY5OTY2N2UgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3NxbGpzb24uc3FsCkBAIC0zODcsNiArMzg3LDExIEBAIFNFTEVDVCBKU09OX0FSUkFZKFNF TEVDVCBpIEZST00gKFZBTFVFUyAoMSksICgyKSwgKE5VTEwpLCAoNCkpIGZvbyhpKSBSRVRVUk5J TkcKIERST1AgVklFVyBqc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXc7CiAKIC0tIElTIEpTT04gcHJl ZGljYXRlCitDUkVBVEUgRE9NQUlOIGpkMSBBUyBKU09OIENIRUNLICgoVkFMVUUgLT4nYScpOjp0 ZXh0IDw+ICczJyk7CitDUkVBVEUgRE9NQUlOIGpkMiBBUyBKU09OQiBDSEVDSyAoKFZBTFVFIC0+ J2EnKSA9ICcxJzo6anNvbmIpOworQ1JFQVRFIERPTUFJTiBqZDMgQVMgdGV4dCBDSEVDSyAoVkFM VUUgPD4gJ2EnKTsKK0NSRUFURSBET01BSU4gamQ0IEFTIGJ5dGVhIENIRUNLIChWQUxVRSA8PiAn XHg2MScpOworCiBTRUxFQ1QgTlVMTCBJUyBKU09OOwogU0VMRUNUIE5VTEwgSVMgTk9UIEpTT047 CiBTRUxFQ1QgTlVMTDo6anNvbiBJUyBKU09OOwpAQCAtMzk1LDYgKzQwMCw1OCBAQCBTRUxFQ1Qg TlVMTDo6dGV4dCBJUyBKU09OOwogU0VMRUNUIE5VTEw6OmJ5dGVhIElTIEpTT047CiBTRUxFQ1Qg TlVMTDo6aW50IElTIEpTT047CiAKK1NFTEVDVCBOVUxMOjpqZDEgSVMgSlNPTjsKK1NFTEVDVCBO VUxMOjpqZDEgSVMgTk9UIEpTT047CitTRUxFQ1QgTlVMTDo6amQyIElTIEpTT047CitTRUxFQ1Qg TlVMTDo6amQzIElTIEpTT047CitTRUxFQ1QgTlVMTDo6amQ0IElTIEpTT047CitTRUxFQ1QgTlVM TDo6amQ0IElTIE5PVCBKU09OOworCitTRUxFQ1QgJ3siYSI6IDEsICJhIjogMn0nOjpqZDEgSVMg SlNPTiBXSVRIIFVOSVFVRSBLRVlTOworU0VMRUNUICd7ImEiOiAxLCAiYSI6IDF9Jzo6amQyIElT IEpTT04gV0lUSCBVTklRVUUgS0VZUzsKK1NFTEVDVCAneyJhIjogMSwgImEiOiAyfSc6OmpkMyBJ UyBKU09OIFdJVEggVU5JUVVFIEtFWVM7CitTRUxFQ1QgJ3siYSI6IDEsICJhIjogMn0nOjpqZDQg SVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTOworCitDUkVBVEUgVEVNUCBUQUJMRSB0c19kb21haW4o anMgdGV4dCk7CitJTlNFUlQgSU5UTyB0c19kb21haW4gVkFMVUVTICgneyJhIjozfScpLCAoJ3si YSI6IjEifScpLCAoJ2EnKSwgKCdceDYxJyk7CisKK1NFTEVDVCBqczo6amQxIElTIEpTT04gRlJP TSB0c19kb21haW47CitTRUxFQ1QganM6OmpkMiBJUyBKU09OIEZST00gdHNfZG9tYWluOworU0VM RUNUIGpzOjpqZDMgSVMgSlNPTiBGUk9NIHRzX2RvbWFpbjsKK1NFTEVDVCBqczo6amQ0IElTIEpT T04gRlJPTSB0c19kb21haW47CisKK1NFTEVDVCBqcywKKyAgcGdfdHlwZW9mKGpzKSwKKyAganMg SVMgSlNPTiBPQkpFQ1QgIm9iamVjdD8iLAorICBqcyBJUyBKU09OIEFSUkFZICJhcnJheT8iLAor ICBqcyBJUyBKU09OIEFSUkFZIFdJVEggVU5JUVVFIEtFWVMgImFycmF5IHcuIFVLPyIsCisgIGpz IElTIEpTT04gQVJSQVkgV0lUSE9VVCBVTklRVUUgS0VZUyAiYXJyYXkgdy9vIFVLPyIKK0ZST00g KFZBTFVFUyAoJ1t7ImEiOiIxIn0sIHsiYiI6IjIiLCJiIjoiMyJ9XSc6OmpkMSkpIGZvbyhqcyk7 CisKK1NFTEVDVCBqcywKKyAgcGdfdHlwZW9mKGpzKSwKKyAganMgSVMgSlNPTiBPQkpFQ1QgIm9i amVjdD8iLAorICBqcyBJUyBKU09OIEFSUkFZICJhcnJheT8iLAorICBqcyBJUyBKU09OIEFSUkFZ IFdJVEggVU5JUVVFIEtFWVMgImFycmF5IHcuIFVLPyIsCisgIGpzIElTIEpTT04gQVJSQVkgV0lU SE9VVCBVTklRVUUgS0VZUyAiYXJyYXkgdy9vIFVLPyIKK0ZST00gKFZBTFVFUyAoJ1t7ImEiOiIx In0sIHsiYiI6IjIiLCJiIjoiMyJ9XSc6OmpkMikpIGZvbyhqcyk7CisKK1NFTEVDVCBqcywKKyAg cGdfdHlwZW9mKGpzKSwKKyAganMgSVMgSlNPTiBPQkpFQ1QgIm9iamVjdD8iLAorICBqcyBJUyBK U09OIEFSUkFZICJhcnJheT8iLAorICBqcyBJUyBKU09OIEFSUkFZIFdJVEggVU5JUVVFIEtFWVMg ImFycmF5IHcuIFVLPyIsCisgIGpzIElTIEpTT04gQVJSQVkgV0lUSE9VVCBVTklRVUUgS0VZUyAi YXJyYXkgdy9vIFVLPyIKK0ZST00gKFZBTFVFUyAoJ1t7ImEiOiIxIn0sIHsiYiI6IjIiLCJiIjoi MyJ9XSc6OmpkMykpIGZvbyhqcyk7CisKK1NFTEVDVCBqcywKKyAgcGdfdHlwZW9mKGpzKSwKKyAg anMgSVMgSlNPTiBPQkpFQ1QgIm9iamVjdD8iLAorICBqcyBJUyBKU09OIEFSUkFZICJhcnJheT8i LAorICBqcyBJUyBKU09OIEFSUkFZIFdJVEggVU5JUVVFIEtFWVMgImFycmF5IHcuIFVLPyIsCisg IGpzIElTIEpTT04gQVJSQVkgV0lUSE9VVCBVTklRVUUgS0VZUyAiYXJyYXkgdy9vIFVLPyIKK0ZS T00gKFZBTFVFUyAoJ1t7ImEiOiIxIn0sIHsiYiI6IjIiLCJiIjoiMyJ9XSc6OmpkNCkpIGZvbyhq cyk7CisKIFNFTEVDVCAnJyBJUyBKU09OOwogCiBTRUxFQ1QgYnl0ZWEgJ1x4MDAnIElTIEpTT047 CkBAIC00MzIsNiArNDg5LDE5IEBAIFNFTEVDVAogRlJPTQogCXRlc3RfaXNfanNvbjsKIAorU0VM RUNUCisJanMsCisJanMgSVMgSlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5P VCBKU09OIiwKKwlqcyBJUyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpF Q1QgIklTIE9CSkVDVCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpT T04gU0NBTEFSICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAi V0lUSE9VVCBVTklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklR VUUiCitGUk9NCisJKFNFTEVDVCBqczo6amQzIEZST00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElT IEpTT04pIGZvbyhqcyk7CisKIFNFTEVDVAogCWpzLAogCWpzIElTIEpTT04gIklTIEpTT04iLApA QCAtNDQ1LDYgKzUxNSwzMiBAQCBTRUxFQ1QKIEZST00KIAkoU0VMRUNUIGpzOjpqc29uIEZST00g dGVzdF9pc19qc29uIFdIRVJFIGpzIElTIEpTT04pIGZvbyhqcyk7CiAKK1NFTEVDVAorCWpzLAor CWpzIElTIEpTT04gIklTIEpTT04iLAorCWpzIElTIE5PVCBKU09OICJJUyBOT1QgSlNPTiIsCisJ anMgSVMgSlNPTiBWQUxVRSAiSVMgVkFMVUUiLAorCWpzIElTIEpTT04gT0JKRUNUICJJUyBPQkpF Q1QiLAorCWpzIElTIEpTT04gQVJSQVkgIklTIEFSUkFZIiwKKwlqcyBJUyBKU09OIFNDQUxBUiAi SVMgU0NBTEFSIiwKKwlqcyBJUyBKU09OIFdJVEhPVVQgVU5JUVVFIEtFWVMgIldJVEhPVVQgVU5J UVVFIiwKKwlqcyBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgIldJVEggVU5JUVVFIgorRlJPTQor CShTRUxFQ1QganM6OmpkMSBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28o anMpOworCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlqcyBJUyBOT1Qg SlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJ UyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZICJJUyBBUlJBWSIs CisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNPTiBXSVRIT1VUIFVO SVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlT ICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpzOjpqZDIgRlJPTSB0ZXN0X2lzX2pzb24g V0hFUkUganMgSVMgSlNPTikgZm9vKGpzKTsKKwogU0VMRUNUCiAJanMwLAogCWpzIElTIEpTT04g IklTIEpTT04iLApAQCAtNDU4LDYgKzU1NCwxOSBAQCBTRUxFQ1QKIEZST00KIAkoU0VMRUNUIGpz LCBqczo6Ynl0ZWEgRlJPTSB0ZXN0X2lzX2pzb24gV0hFUkUganMgSVMgSlNPTikgZm9vKGpzMCwg anMpOwogCitTRUxFQ1QKKwlqczAsCisJanMgSVMgSlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9U IEpTT04gIklTIE5PVCBKU09OIiwKKwlqcyBJUyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMg SVMgSlNPTiBPQkpFQ1QgIklTIE9CSkVDVCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVki LAorCWpzIElTIEpTT04gU0NBTEFSICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBV TklRVUUgS0VZUyAiV0lUSE9VVCBVTklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZ UyAiV0lUSCBVTklRVUUiCitGUk9NCisJKFNFTEVDVCBqcywganM6OmpkNCBGUk9NIHRlc3RfaXNf anNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMwLCBqcyk7CisKIFNFTEVDVAogCWpzLAogCWpz IElTIEpTT04gIklTIEpTT04iLAotLSAKMi4zNC4xCgo= --0000000000007acafb0643e05493--