Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4N1H-00030r-9Q for pgadmin-support@arkaria.postgresql.org; Wed, 31 May 2023 14:41:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q4N1G-0005FU-4b for pgadmin-support@arkaria.postgresql.org; Wed, 31 May 2023 14:41:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4DFe-0007My-Mj for pgadmin-support@lists.postgresql.org; Wed, 31 May 2023 04:15:59 +0000 Received: from inblrg02.tcs.com ([121.242.48.116]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1q4DFT-003CCk-Hd for pgadmin-support@postgresql.org; Wed, 31 May 2023 04:15:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcs.com; i=@tcs.com; q=dns/txt; s=default2048; t=1685506549; x=1717042549; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=b99K5B+RaWMf2lJRpc/Ro42oyfw23CwjIC4S/A6d+PM=; b=gI0NIgNjB+muy5aFJpWbGmVXfAB7zNtCc1lbeldFPHk/3rw1e9j+O9/V jjAbXvBMRPam8EHpK2sGwQ7FDzz5DqiMwRJGs2xeZUfA2dWPRp5WM873k fIbpS91henmyifWpiPdmtEfs+ue5LK/+EkuMdk0BbuJV9oNEk936C37vq Ls6pviKirQnPCyzSZm0nISR3A4pO7fmIJjekYjTUb2HjlopSP5wy9Y3ZA cFBuWjRqWJXyS4f86DyLVP7DozxK26rWqmZtC5KTCr8VHCWmcULN6GBpc R9CJAbFDYZUqEmwVGN2chioxeWVQfFOqhevqpzrG+Zh3DpNJVxiSOPiNT A==; X-IronPort-AV: E=Sophos;i="6.00,205,1681151400"; d="log'?png'150?scan'150,208,217,150";a="243401233" X-DISCLAIMER: FALSE ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MqsGG/TvKwG+neErsEOPIIIRZFBihWhp2eSQbJ90d9JjRxV/CYdwaJLjvu575DJkbxo3HUJWTzSO41SmCI4R6e1vW9vdpkptEa1g2gHANO3BxnbbJJYSKR0NEtoDBNWvworoA6anI6+9QhRbsXBjPEIlz09WRcgcFY+LfnL0Yt9nmkU4qZf0k7tJXL/vCck9dVkakBZZVEFgmGm9kj5Gtf/WboLxgBZKK+lEaxJfCGrhsOI5YR88LTzLwXKVNkOchefWjZvJ0t1n5Hljuk02p0H/r8KeyfE5xgBTxtnBdDAQL4Hy6xe7mwuCZ/4jZIjgwbWVZs9dal2RoW3mAafCvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b99K5B+RaWMf2lJRpc/Ro42oyfw23CwjIC4S/A6d+PM=; b=WrF1R63L297R2A+TklgHIbJ/JGS5uLudoFCLx7eGHvYC8MOTgTbJyouM2ij6JQyrNNRL45CH3+u+Y8q249ZBUD8PGRu4PJ/Qc7eIMURJEPn+3/S8vtvgieVR7ukx7Hr8YAEfNoZyBMhLWuPuVhBCEoMXqJe7QuEBbbwthn8DEbhv23AYCBMAizkYj6u9Sy/3dfUOR/fDT/xPdRSuZOsO3mCDUvtsl046j4jrs/gRy3v+kp5AvpZ+Xo9Ssvylzj9K7BaY69pJcbeGumkArL+maInFOxq+UI6Qz224dH62u0sN8fPiKSlj/ljZUc46iHOJkIdoSJHBQPnbAUSsYWJo8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tcs.com; dmarc=pass action=none header.from=tcs.com; dkim=pass header.d=tcs.com; arc=none From: Vijayaraj N To: Yogesh Mahajan CC: "pgadmin-support@postgresql.org" Subject: Re: Unable to open pgadmin4 Thread-Topic: Unable to open pgadmin4 Thread-Index: AQHZkuI2067+wXaNp0K8tLpJhVAML69zspwAgAAUGBA= Date: Wed, 31 May 2023 04:15:18 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=tcs.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MAXPR01MB3390:EE_|PN3PR01MB7334:EE_ x-ms-office365-filtering-correlation-id: 67d7e770-33a4-447f-4c4e-08db618da4ff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vKXBkE3YswmecAoDAMZmTVdiIu+E4Zzf291+kiM9Sm2Xm/DLf8bkLvSLt05FaAteGsZu5TlRNE7N3moKnR7boxYVp2+TMh8VTZ1fruuunLPG715tSY+fnaYQ/hrF6bzEuaKx3lbcnSVz5mMSutQoYXQ/HJWpC2UXc21huDwes5cNgXHNehigCUIjs8HNtKC8Tdv0qi1wMrjLtUeTKbBWAxXqULXpPC9E/t0E9yDblbdwMZSDR6YXqfAmJRYN4GNHhd0LZ/0MOv8Xkk49HgqB6Yx+ORJDg2+ljjRuldfFZ9QhrI13l9HsYsEojuNVWZpTkJ6ePN59SyjFubgxqjLXSfupjZu9zt0sUlfoOPZr604pkHFtlASspZ/WydnQCYdM90++hkDvjQBIZyGruX2Aw+6z9m4H4DYu38sH5vUA7WfFcJgbScAuGGDpQ3oWATUkRI0gyug/2LMVcKtc6KbJ0QKG5G5ZUQqFfh/qoV9e8UKO8PbQpY3LL4E6Tr7rxKbw9n7Om0gOxPTQ+d9pcU8ea00KrMTKEClLiLL1eMbmj/HIiz13RrLS8OCE6pnaD/WhOTySVvg+UHw4lipkGGHHVXcZAV8m1dL+FwLQkM7xhYI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MAXPR01MB3390.INDPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230028)(396003)(39860400002)(346002)(366004)(376002)(136003)(451199021)(55016003)(33656002)(66476007)(66556008)(66446008)(6916009)(64756008)(76116006)(478600001)(4326008)(66946007)(316002)(7696005)(8936002)(8676002)(38070700005)(2906002)(71200400001)(52536014)(99936003)(26005)(5660300002)(41300700001)(86362001)(166002)(122000001)(83380400001)(38100700002)(82960400001)(9686003)(6506007)(53546011)(186003)(66574015)(19627405001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dmIzYnFIQ1B6WFZMWFdmTlQvTXQwZVp3ZHVQblZ4T1JBZ1l5WnFLejhCNzdE?= =?utf-8?B?OWxydElSR2VYcmNFV0xSWURnYlJ0ME4wWlVKYVI1VnplNnREbklpdG5KL1lD?= =?utf-8?B?SmcyTUxEL0VSTWJEV0FPaDA3NmNZbHV6OE1EdTJCbXZGQ1hKczBLUU80Y0hN?= =?utf-8?B?Wm5DN21CMHZqVHp1NWdkQjNvTlNJQ2IzVmQ2anAwLy9Vdi9ML093dStjMXVo?= =?utf-8?B?M1pDWXUxTXBURHpUdHBTMUp1KzY5b0lCQjVDYkxwRVRTTGcxZWZybG4waVpY?= =?utf-8?B?Y1RkaWxsVkk0ZWpHaG1DcUs5YzQzYng2SmkvY1BSRkp3MWk1VHVWdUI3b3Vm?= =?utf-8?B?dW4xUXo5a2JyYWs3bnNuVzJPcjFvWGJXQU9yYVV1SFVFOHJoaEI1SmRiaFYw?= =?utf-8?B?ZW10MDNGeWMzazIyWHVZcXJyWE05K3VZZnJHL1N2bnZudlV1cjBzMEhTSHli?= =?utf-8?B?L3F5RnFIOTI1R2tqZUFtbGxZanJtWlRuRWZpVzJIOHo2VG4yTzZSTTArcWdO?= =?utf-8?B?MjNzRnVrNGRaQTJjZVVVS01lR0tzVnBKZG1PVTBOUWR4SjFGUGRPbkdXRWZ1?= =?utf-8?B?SysrVGFJdVlhMEdhWFczc2VSbUtNeDBGc0VIODA2aEtMVnVIai90L2ptRmpJ?= =?utf-8?B?TlFEVGdUamJiNGZHTUxSWWhnZFBGLzZ3M29vTXk2RmVBTXU0VlRjbUl4RzV2?= =?utf-8?B?SWxTU0tpUmlkT3A2MFN2RmlCb3JKQTR6ZSt3K0xhcUFQZVNzazViQXljNVJs?= =?utf-8?B?eENRYzF3RlNMaUNKUXU1bnBkREVnSU1MV0V0N2h2ZGVUZzdJT1NUZG85VXlt?= =?utf-8?B?aEphNmNNZ1R4SGxESUVaT1JxYWY2blhkKzhPVXVuMzQrdHVsSWZQeWRibm9Q?= =?utf-8?B?MWEzWGl1UGRpWk1Tc1QrUDhqaXlEN3JlUm9OVjRucUh6WCtSQ2JBWUs5TXBN?= =?utf-8?B?aVhUc2c1MXZ0VFBaa3ArZUJQYXd5Z2ZMZ3VyZGFxa2U1KzNCTTA2WlpBYmhH?= =?utf-8?B?SzRVWDgxK2NSMWRFUkduNFF4R0lISUJWa0FHaU9kQVNOcXorbkQ5SnNOODFZ?= =?utf-8?B?TU5jQ3ZOS2VnY2doTkcyNGNMTmNZVUw0NlY0REQvS014eC9sVmNEQkFQdWp1?= =?utf-8?B?NG1QdUFQWk9mMkF1Nk5LVUROV1NNbVNWMnd2Skg5WUNuSFZ4a1hUNEt6L1hX?= =?utf-8?B?RHJoNjJOajlIdEhjbGZPY0VkZXlRTXRwMzBweFRKbEoxVHorMkJLbjFRU1lk?= =?utf-8?B?djR0YzE4cU43YVFjU25KUmRCaUVsSUtqczJQZjFPak9pdVNhVjltcWNZa1Nn?= =?utf-8?B?RGJFUDJuclVWZGVBNVRtVllrK3RMMkRwMUlYOHZOS2xHanhlc0haK3JXeEQr?= =?utf-8?B?NjJXUHVqb01oOHRBTHpDcWtvYUpZZmRTVkhyZmJLM3gxS2NzbVgxZzgyNitQ?= =?utf-8?B?RWp0WTVSREpqMWZCR1psNWRlVnFRZGZGUS93VWltS2lrcmY0VXZZRk96U3Nv?= =?utf-8?B?RmNEQ3kzcmZncG1admRKdCtyaGRjR2NnR0hhcmcwYTBBZVV1V1hLVklQRFVz?= =?utf-8?B?a0lEdlh4RWhFajJXcG1ScVZoVlNDRE0rZ2pJbFllUE5zWFF6Z1A4SUY4Mnpw?= =?utf-8?B?eEcybE9UKy9IaVBzSi85TEh6YzNPNjZ3YnlwMzJBRjFQZ2p3UUhhdTd3VlFT?= =?utf-8?B?NGprck9US0V2RkZlSkMvREI3dEluOHNBYm1OdFJwUkYraVlhTTg0Ym0vWG0v?= =?utf-8?B?N05sMUFoTlZ4RTFCRUFmZ3hzTHZWb0o1bHkxbXVNT1hVRm13dXhvdExCT2hh?= =?utf-8?B?dUxjUjBYVHlQZ3FtZkNyVy9qRG1YemRkU2kwYkRPSXNXdzBFZzFvWkx4aUMw?= =?utf-8?B?RzdPZ0YvaUJnL2pPd2pkSFlkOVdXVFlHc3J6NnFJTGpBMkJHYnNReGFVY1lI?= =?utf-8?B?dk0ySFVJcmZWWEJPcG5SNzVOY05ldXJpTHRQQ1JxSkdzdmMyLzFCc2EyUHgz?= =?utf-8?B?YmhCdDNKUzdqcWROYXpMdHNUMDY5SG5XaVczaytiVXMzc25CNjZMNTFxMUpN?= =?utf-8?B?Y0RQbGZRK1JTYldZQ3Bjc0srSXFoSWIzdTVqSFFiVUo3b09QUEZzM1g1dHZq?= =?utf-8?Q?drXg=3D?= Content-Type: multipart/mixed; boundary="_006_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZNeGrEU3vQFerMleYqPyusS3iiihOET7PfJzjH5jzMJP4KajD13taCCHs1tk4MQgmTqvXNn1r/JuMnfD3F+iBrYwtlK2iyeAmlfBL0abRuKj+6Bg24t57hKDI+aMqtVSwfYUifS/A6tOwdLKdcDFoJpiGP0hecaMPn4FQD4PJ6hq0QVn9KxeTyXi98lLR7jJBhyuv8HrQ75G0jVZpdg1wIEWTM3z6P4aAk4mS4BE/55RifQgusdy4jU1kkKGxulWl3Zn1IBCHRRyEbDRp2xcLQSbEIHBkWFOCX5M5LgnnkZdCD9mTyd4vLFxObW006iKMVVWNPNDvU0mkxucqg+xkVoewpeQ1+rXhdf5aUlUWTW56qArlavefyvrvAZLZgWGobWC/baaOlb5vy+nLvu4MIq5RwTrWic3p2ONd73SBlkF6/61m5Ifelu1z37Qwge3B9Lt6rxhd62QJ2QGQPR2IMmVX/2FIFqxHzaeRWlLx1wCxRtU7R3qqvIlbrtdyZcK698UPud/bT4eYrjHoJtmPtzLrVJ8Nesh5PCPt4b7dGcLPmp9JIkbUontOQqJVXPrsYIFZlnW7DYRRqUFvWCXB7Cp/wZA7Gsb9HlW6kV83bXROfXdCKZKP9basd260LSuCPsiXRwWpR/n8nMaeBqZMFrRxMhX6AI1N+Wikp6RVHgYfJNKf3XkiWEXCyB/zKEDWFWNwirQ3LniCDyBioXidL+vu5w9/EUtt8RJmYsqbRTT/hLhl3z/QzqNeZ+zdA5lO4sPZZTNZRJHfJTS3JLP7FELXiv9PxXpFSp6kqNyOuyb6NnyRqd+0ZF8mFaUWLLUPYl1l86EANgDsx1iek0u8Q== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MAXPR01MB3390.INDPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 67d7e770-33a4-447f-4c4e-08db618da4ff X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2023 04:15:18.9118 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 404b1967-6507-45ab-8a6d-7374a3f478be X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6jKPagXzNpil5KWunI3Id2ipocN43uotLoRIQX9yH6r4Lg2wFb8/pgexqgzEMBQ5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN3PR01MB7334 X-TM-AS-Product-Ver: SMEX-14.0.0.3092-9.0.1002-27662.004 X-TM-AS-Result: No-10--49.555200-8.000000 X-TMASE-MatchedRID: SS40Yi+NStc7iuZ/mdYYtq4MGlgE49M6KIlRihGnsVUXgY1qVZGIIGIe oogfffdBFDf/GgM78iUcGzeKG+gwiCi8MubmxmAUDO+DX+rUwfbv5tG5qQwjQDCokNvqo0GId02 he/pQmb4uQDIHw3AXDFWeeIqHthMLpPMmjQJmXyF3V+A1H+zCiLc5742wb/kAy4gwpC9pqV8J3D 9eD2hRO6goXj9BWHh3NZ6vvoHRFmxXecKH15/60jTMxkf5m9EZWgquzg1Psc7aTGrLP3nCulgFf paHUMwuJ9dgBhH1liU3vTBeEjQNfpcE9F6aLBE1iysFp6bvlmzzTu35URal5lehZ8JDMoGXH9QH S1Mhu50+7tB1aLRLglICmG2RRehovO61PPXizykHg31vZvY63vcwyVYGZr7IjQO5NdQoousUHne kcDRDlgJDJLxM8GWkD31hKrmrVKlvQ1w4VLB58iGbzft4i3vNi0fZJ0FbG/JErLcQxxIWgJliea Onx9Zi/3Swbr5QDY+4u3nS+3EEDsBL+Zlb6ILuBZmvwokiD3i4uWDAfkBMoV1bBFlamKmoBfDtz 6DKa8Ihlf8RDoxNxcS0rIvRSgE9Vw+GLlfVhAHvjbJ1hbZO0dftCrF2sVs+rdZLelE6wFs9l7H+ TFQgdTqe9n/pbQGH5tHwb6x0QAgwfvhkYxvfAIVH0dq7wY7up8Odl1VwpCSUTGVAhB5EbQ== X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--49.555200-8.000000 X-TMASE-Version: SMEX-14.0.0.3092-9.0.1002-27662.004 X-TM-SNTS-SMTP: 7CFC693692E8EC95AD3C80A727F1D7CA5B8C96A0F12C29CE67C644513EE0023B2000:8 X-OriginatorOrg: TCS.COM List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: multipart/related; boundary="_005_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_"; type="multipart/alternative" --_005_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: multipart/alternative; boundary="_000_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_" --_000_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNCk9TIDogV2luZG93cyAxMA0KDQoNCg0KDQoNClRoYW5rcyAmIFJlZ2FyZHMNClZpamF5 YXJhaiBODQpGcmVzY29QbGF5DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJv bTogWW9nZXNoIE1haGFqYW4gPHlvZ2VzaC5tYWhhamFuQGVudGVycHJpc2VkYi5jb20+DQpTZW50 OiBXZWRuZXNkYXksIE1heSAzMSwgMjAyMyA4OjMxIEFNDQpUbzogVmlqYXlhcmFqIE4gPHZpamF5 YXJhai5uQHRjcy5jb20+DQpDYzogcGdhZG1pbi1zdXBwb3J0QHBvc3RncmVzcWwub3JnIDxwZ2Fk bWluLXN1cHBvcnRAcG9zdGdyZXNxbC5vcmc+DQpTdWJqZWN0OiBSZTogVW5hYmxlIHRvIG9wZW4g cGdhZG1pbjQNCg0KIkV4dGVybmFsIGVtYWlsLiBPcGVuIHdpdGggQ2F1dGlvbiINCkhpIFZpamF5 YXJhaiwNCg0KQ291bGQgeW91IHBsZWFzZSBwcm92aWRlIE9TIHZlcnNpb25zIGFuZCBwZ0FkbWlu IGxvZ3M/IFBsZWFzZSByZWZlciB0byB0aGlzPGh0dHBzOi8vd3d3LnBnYWRtaW4ub3JnL2ZhcS8+ IGxpbmsgZm9yIGVuYWJsaW5nIGxvZ2dpbmcuDQoNClRoYW5rcywNCllvZ2VzaCBNYWhhamFuDQpF bnRlcnByaXNlREINCg0KDQpPbiBUdWUsIE1heSAzMCwgMjAyMyBhdCA3OjQ54oCvUE0gVmlqYXlh cmFqIE4gPHZpamF5YXJhai5uQHRjcy5jb208bWFpbHRvOnZpamF5YXJhai5uQHRjcy5jb20+PiB3 cm90ZToNCg0KVENTIENvbmZpZGVudGlhbA0KDQpEZWFyIFRlYW0sDQoNClBnYWRtaW40IHZlciA3 IGluc3RhbGxlZCAsIGJ1dCB1bmFibGUgdG8gb3BlbiAuIEl0cyBsb2FkaW5nIG9uIG1vcmUgdGlt ZSBhbmQgbm90IGdldHRpbmcgbGF1bmNoZWQgLg0KDQpwbGVhc2UgZmluZCB0aGUgc2NyZWVuc2hv dA0KDQpbY2lkOjE4ODZmYmY3M2Y1Y2I5NzFmMTYxXQ0KDQoNCg0KVGhhbmtzICYgUmVnYXJkcw0K VmlqYXlhcmFqIE4NCkZyZXNjb1BsYXkNCg0KDQpUQ1MgQ29uZmlkZW50aWFsDQoNCj09PT09LS0t LS09PT09PS0tLS0tPT09PT0NCk5vdGljZTogVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0 aGlzIGUtbWFpbA0KbWVzc2FnZSBhbmQvb3IgYXR0YWNobWVudHMgdG8gaXQgbWF5IGNvbnRhaW4N CmNvbmZpZGVudGlhbCBvciBwcml2aWxlZ2VkIGluZm9ybWF0aW9uLiBJZiB5b3UgYXJlDQpub3Qg dGhlIGludGVuZGVkIHJlY2lwaWVudCwgYW55IGRpc3NlbWluYXRpb24sIHVzZSwNCnJldmlldywg ZGlzdHJpYnV0aW9uLCBwcmludGluZyBvciBjb3B5aW5nIG9mIHRoZQ0KaW5mb3JtYXRpb24gY29u dGFpbmVkIGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UNCmFuZC9vciBhdHRhY2htZW50cyB0byBpdCBh cmUgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYNCnlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgY29tbXVu aWNhdGlvbiBpbiBlcnJvciwNCnBsZWFzZSBub3RpZnkgdXMgYnkgcmVwbHkgZS1tYWlsIG9yIHRl bGVwaG9uZSBhbmQNCmltbWVkaWF0ZWx5IGFuZCBwZXJtYW5lbnRseSBkZWxldGUgdGhlIG1lc3Nh Z2UNCmFuZCBhbnkgYXR0YWNobWVudHMuIFRoYW5rIHlvdQ0K --_000_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQpIaSwmbmJzcDs8L2Rpdj4NCjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQpPUyA6IFdpbmRvd3MgMTAmbmJzcDs8L2Rpdj4NCjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJy Pg0KPC9kaXY+DQo8ZGl2IGlkPSJTaWduYXR1cmUiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpUaGFua3MgJmFtcDsgUmVn YXJkczwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0KVmlqYXlhcmFqIE48L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBB cmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7Ij4NCkZyZXNjb1BsYXk8YnI+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rp dj4NCjxkaXYgaWQ9ImFwcGVuZG9uc2VuZCI+PC9kaXY+DQo8aHIgc3R5bGU9ImRpc3BsYXk6aW5s aW5lLWJsb2NrO3dpZHRoOjk4JSIgdGFiaW5kZXg9Ii0xIj4NCjxkaXYgaWQ9ImRpdlJwbHlGd2RN c2ciIGRpcj0ibHRyIj48Zm9udCBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0iZm9u dC1zaXplOjExcHQiIGNvbG9yPSIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gWW9nZXNoIE1haGFqYW4g Jmx0O3lvZ2VzaC5tYWhhamFuQGVudGVycHJpc2VkYi5jb20mZ3Q7PGJyPg0KPGI+U2VudDo8L2I+ IFdlZG5lc2RheSwgTWF5IDMxLCAyMDIzIDg6MzEgQU08YnI+DQo8Yj5Ubzo8L2I+IFZpamF5YXJh aiBOICZsdDt2aWpheWFyYWoubkB0Y3MuY29tJmd0Ozxicj4NCjxiPkNjOjwvYj4gcGdhZG1pbi1z dXBwb3J0QHBvc3RncmVzcWwub3JnICZsdDtwZ2FkbWluLXN1cHBvcnRAcG9zdGdyZXNxbC5vcmcm Z3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBVbmFibGUgdG8gb3BlbiBwZ2FkbWluNDwvZm9u dD4NCjxkaXY+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8aDU+PGZvbnQgY29sb3I9IiNm ZjYzNDciPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NDAwIj4mcXVv dDtFeHRlcm5hbCBlbWFpbC4gT3BlbiB3aXRoIENhdXRpb24mcXVvdDs8L3NwYW4+PC9mb250Pjxi cj4NCjwvaDU+DQo8ZGl2IGRpcj0ibHRyIj4NCjxkaXYgY2xhc3M9InhfZ21haWxfZGVmYXVsdCIg c3R5bGU9ImZvbnQtZmFtaWx5OnZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOnNtYWxsIj4N CkhpJm5ic3A7VmlqYXlhcmFqLDwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9nbWFpbF9kZWZhdWx0IiBz dHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6c21hbGwiPg0K PGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJ4X2dtYWlsX2RlZmF1bHQiIHN0eWxlPSJmb250LWZh bWlseTp2ZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTpzbWFsbCI+DQpDb3VsZCB5b3UgcGxl YXNlIHByb3ZpZGUmbmJzcDtPUyB2ZXJzaW9ucyBhbmQgcGdBZG1pbiBsb2dzPyBQbGVhc2UgcmVm ZXIgdG8gPGEgaHJlZj0iaHR0cHM6Ly93d3cucGdhZG1pbi5vcmcvZmFxLyI+DQp0aGlzPC9hPiBs aW5rIGZvciBlbmFibGluZyBsb2dnaW5nLjwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9nbWFpbF9kZWZh dWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6c21h bGwiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdiBkaXI9Imx0ciIgY2xhc3M9InhfZ21haWxf c2lnbmF0dXJlIiBkYXRhLXNtYXJ0bWFpbD0iZ21haWxfc2lnbmF0dXJlIj4NCjxkaXYgZGlyPSJs dHIiPjxmb250IGZhY2U9InZlcmRhbmEsIHNhbnMtc2VyaWYiPlRoYW5rcyw8L2ZvbnQ+DQo8ZGl2 Pjxmb250IGZhY2U9InZlcmRhbmEsIHNhbnMtc2VyaWYiPllvZ2VzaCBNYWhhamFuPC9mb250Pjwv ZGl2Pg0KPGRpdj48Zm9udCBmYWNlPSJ2ZXJkYW5hLCBzYW5zLXNlcmlmIj5FbnRlcnByaXNlREI8 YnI+DQo8L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8YnI+DQo8L2Rpdj4N Cjxicj4NCjxkaXYgY2xhc3M9InhfZ21haWxfcXVvdGUiPg0KPGRpdiBkaXI9Imx0ciIgY2xhc3M9 InhfZ21haWxfYXR0ciI+T24gVHVlLCBNYXkgMzAsIDIwMjMgYXQgNzo0OeKAr1BNIFZpamF5YXJh aiBOICZsdDs8YSBocmVmPSJtYWlsdG86dmlqYXlhcmFqLm5AdGNzLmNvbSI+dmlqYXlhcmFqLm5A dGNzLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4NCjwvZGl2Pg0KPGJsb2NrcXVvdGUgY2xhc3M9Inhf Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7IGJvcmRlci1sZWZ0 LXdpZHRoOjFweDsgYm9yZGVyLWxlZnQtc3R5bGU6c29saWQ7IGJvcmRlci1sZWZ0LWNvbG9yOnJn YigyMDQsMjA0LDIwNCk7IHBhZGRpbmctbGVmdDoxZXgiPg0KPGRpdiBjbGFzcz0ieF9tc2ctODkx NDMxOTY4NzQxNTQyMjE0NSI+DQo8ZGl2IGRpcj0ibHRyIj4NCjxwIGFsaWduPSJMZWZ0IiBzdHls ZT0iZm9udC1mYW1pbHk6Q2FsaWJyaTsgZm9udC1zaXplOjEwcHQ7IGNvbG9yOnJnYigwLDAsMCk7 IG1hcmdpbjo1cHQiPg0KVENTIENvbmZpZGVudGlhbDxicj4NCjwvcD4NCjxicj4NCjxkaXY+DQo8 ZGl2IHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250 LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQpEZWFyIFRlYW0sJm5ic3A7PC9kaXY+DQo8 ZGl2IHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250 LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9 ImZvbnQtZmFtaWx5OkNhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB0 OyBjb2xvcjpyZ2IoMCwwLDApIj4NClBnYWRtaW40IHZlciA3IGluc3RhbGxlZCAsIGJ1dCB1bmFi bGUgdG8gb3BlbiAuIEl0cyBsb2FkaW5nIG9uIG1vcmUgdGltZSBhbmQgbm90IGdldHRpbmcgbGF1 bmNoZWQgLiZuYnNwOzwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSxIZWx2 ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHQ7IGNvbG9yOnJnYigwLDAsMCkiPg0KPGJy Pg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEhlbHZldGljYSxzYW5z LXNlcmlmOyBmb250LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQpwbGVhc2UgZmluZCB0 aGUgc2NyZWVuc2hvdCZuYnNwOzwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJy aSxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHQ7IGNvbG9yOnJnYigwLDAsMCki Pg0KPGJyPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEhlbHZldGlj YSxzYW5zLXNlcmlmOyBmb250LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQo8aW1nIHNp emU9IjgxNjciIHN0eWxlPSJtYXgtd2lkdGg6MTAwJSIgZGF0YS1vdXRsb29rLXRyYWNlPSJGOjF8 VDoxIiBzcmM9ImNpZDoxODg2ZmJmNzNmNWNiOTcxZjE2MSI+PGJyPg0KPC9kaXY+DQo8ZGl2Pg0K PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9u dC1zaXplOjEycHQ7IGNvbG9yOnJnYigwLDAsMCkiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGlkPSJ4 X21fLTg5MTQzMTk2ODc0MTU0MjIxNDVTaWduYXR1cmUiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImZv bnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTox MnB0OyBjb2xvcjpyZ2IoMCwwLDApIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1m YW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHQ7 IGNvbG9yOnJnYigwLDAsMCkiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWls eTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250LXNpemU6MTJwdDsgY29s b3I6cmdiKDAsMCwwKSI+DQpUaGFua3MgJmFtcDsgUmVnYXJkczwvZGl2Pg0KPGRpdiBzdHlsZT0i Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXpl OjEycHQ7IGNvbG9yOnJnYigwLDAsMCkiPg0KVmlqYXlhcmFqIE48L2Rpdj4NCjxkaXYgc3R5bGU9 ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZToxMnB0OyBjb2xvcjpyZ2IoMCwwLDApIj4NCkZyZXNjb1BsYXk8YnI+DQo8L2Rpdj4NCjwvZGl2 Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGJyPg0KPHAgYWxpZ249IkxlZnQiIHN0eWxlPSJm b250LWZhbWlseTpDYWxpYnJpOyBmb250LXNpemU6MTBwdDsgY29sb3I6cmdiKDAsMCwwKTsgbWFy Z2luOjVwdCI+DQpUQ1MgQ29uZmlkZW50aWFsPGJyPg0KPC9wPg0KPHA+PT09PT0tLS0tLT09PT09 LS0tLS09PT09PTxicj4NCk5vdGljZTogVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlz IGUtbWFpbDxicj4NCm1lc3NhZ2UgYW5kL29yIGF0dGFjaG1lbnRzIHRvIGl0IG1heSBjb250YWlu IDxicj4NCmNvbmZpZGVudGlhbCBvciBwcml2aWxlZ2VkIGluZm9ybWF0aW9uLiBJZiB5b3UgYXJl IDxicj4NCm5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBhbnkgZGlzc2VtaW5hdGlvbiwgdXNl LCA8YnI+DQpyZXZpZXcsIGRpc3RyaWJ1dGlvbiwgcHJpbnRpbmcgb3IgY29weWluZyBvZiB0aGUg PGJyPg0KaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UgPGJyPg0K YW5kL29yIGF0dGFjaG1lbnRzIHRvIGl0IGFyZSBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiA8YnI+ DQp5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGNvbW11bmljYXRpb24gaW4gZXJyb3IsIDxicj4NCnBs ZWFzZSBub3RpZnkgdXMgYnkgcmVwbHkgZS1tYWlsIG9yIHRlbGVwaG9uZSBhbmQgPGJyPg0KaW1t ZWRpYXRlbHkgYW5kIHBlcm1hbmVudGx5IGRlbGV0ZSB0aGUgbWVzc2FnZSA8YnI+DQphbmQgYW55 IGF0dGFjaG1lbnRzLiBUaGFuayB5b3U8L3A+DQo8cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9i bG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_-- --_005_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: image/png; name="image.png" Content-Description: image.png Content-Disposition: inline; filename="image.png"; size=8167; creation-date="Wed, 31 May 2023 03:02:53 GMT"; modification-date="Wed, 31 May 2023 04:13:21 GMT" Content-ID: <1886fbf73f5cb971f161> Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAA/8AAAJ4CAYAAAAzwFOCAAAfrklEQVR4nO3da3Cld33Y8d85Orrs xbe9mF2bWLJLwDWemMwQqmVjWK5NpqXS4AnWugOzxgGcNh3gRROp4A7hMtLwhtLSsTExbMMEHTKN u2KaUsxNxhiJJMU2sV07zMCaOujEtnzB3qt0ztMXuh3tStpdr3a1/vH5eDSW9pzzPP/n2X3zfZ7/ /1Hpp4/9oggAAAAglU8PfTJufO/vR1tra5TXejAAAADAmdGo16PeaIh/AAAAyKreqEdD/AMAAEBe 9Xo9GvW6+AcAAICsGo0iGoU7/wAAAJBW0WgsTPtvb22JQ0VLPPwPz8RjkwdiKkpx/sb18fPJA/Gj nz0ZTx+cjvYN6+N//PAn8b/veyymypVob1nrQwAAAABW0igaUTSKqLS3RHzzx4/HHXc9EIcPH4rD U/X44HXXxhPPvBB/MXp/lCKiva01fuPyi+Pqzovj9r/6YXzl7ofi37zjt+KNV74sjkw11vpYAAAA gCUUjSIaRRHlF6ZL8ZW7H4pnn30mjh49Gp1bz4tfPv/LuHXf96KtHFEpFzF19Eh8+//8fYw9/Fi8 71/8Vvzjk5Pxp9+4P549LPwBAADgXNUoGlEUjSj/4unn4/kDB2N9R1scOnI0XnHJpnis9my8fOsF MTU9HY1GEeVSKS7c0BE//mktKuVyvOGaK+Lw4SMxNV1f6+MAAADgV8wVnZec1Ne55tqdr4uHH3pw 2dcffujBuHbn61Z3p0VEURRRbm+tRKWlJYqiiKKI2HLBhnj9qzvj37/rjbHnd14bh49OxVS9Hudv 7Ig/2fO2uHTrBXH++va4YOO6eNkFG1Z3UE1uuvE9MbLvzhXfMzk5GTfd+J4zsu2VXNF5STz66CMv +vMAAACcnp8+9osVv85Fn7/9i/GB9793yQsADz/0YHzg/e+Nz9/+xVXdZ6Mxs+a//LILN8am8zfE dL0R5XIp6vVG7Lv3ofjPd94bG9e1x/ZN58XzB4/Er1+6Jf7mkcfjf/3wkZj85cH4J9suiJg+vKqD mjM5ORmdnZ3xtZF9Z2T7d3zpz6Kn950v6rOnc9EAAACAX11XvfrqJS8ANIf/Va++elX3Wcz+V97Y Xo7tF22II1PTUS6Xo14UUYqIR/7fE/H4k8/GeRs6oqVcjp8/8Vxs6GiNeqOI8zZujJ1XvTwOH5la 1UHN+f49d8db3vb26OzsPKfusE9OTsYD998Xe268aa2HAgAAwEvQsRcAzmT4R8TsLP8iykcPHYwr X74pGlGOcqkU69tb44XDR+P89R1x4cZ1ceDQ0djQ0Rb7JyajiIjOiy+M17yqM173ykujXq4su4Mr Oi+Je++9Z36txRduv3X+tWP//KYb3xOTk5Pzr39tZF9ceeVV8Za3vT2+d/d3F213ZN+d85/9/j13 r7jPiJkp/ld0XhIf/9gt8+/7+Mdumb+o8PGP3bLsOI/1X//Lf4p/++8+dOKzCwAAAMtovgBwJsO/ WWWqUY7XvvLS+O8/+Ek888wzMTH5y7jy8kvj2YPTcejIVPz8iWfjvHXt0dHeGt/60U9i6APviK0b 26PUmI5SqbTixh9+6MH5tRZXdF4Sb3jjm2LLlq3x7huuj7/50d/F5s2b495774nBT31i/jOPPvpI dHZ2xubNm2Pnzmvj3TdcH+97/x9ExMxFg6+N7Jvf5lKhPrfPL9x+a1zRecn8fm668T3x6KOPxKte deVxn/nin35h0Tjfed27YvPmzYveM7LvzrjmNb953J8DAAC8VJ3sQ/HO1TX0nLxylMvx69svjKsv 3xYHDx+JH+9/Km54w1Vx2wffEZdsvTA6WitRFEW0VVriqecOxuNPPR+bNnZEqaUS69d3rLjxuWiP iPjMZz8Xj/zfh+ORRx6OgY/cMh/RO3deG29681vn3/e9u78bb3nb2+d/HvjIzJ35iJmwf+/vv2/+ tXde965l93nVq69etJ/uHTviqaeeXHKcf9T/H+a/33PjTce979FHH4kH7r/vRT8nAAAA4Fx0oofm ncsPz3spa57qv9JDAFdTOSLi0IEDcV33FXHVq14Z/bvfGJ2bN8TDjz0R6zecF6+/ujNeOHw0jk43 4rKtF0R7uRH/7Tt/F7880oiWE9z5P9aWrVsjIuLii1+27HsGP/WJePcN189Pwx/81Cfi29+8a2Eb W7a+mOM8LV8d/vPY+6U75se090t3xO++/c3zFyUAAADgZBy7xn+5hwCutnJERKPUEldeclF8/g/e Er9x6fnxjy8ciel6PV7/ii3RiNLM9P6iiIsuujB++6rL4vrXvyLOb5mO5w8cWnHjc3E8OTkZH/7g H8aVV14VW7ZsjQ9/8A8Xvee73/nW/Pd7brzpuKtMe790R0xOTsbFF78svjr85/OfvfMv/2LVT8hS /uPHPrFoPHtuvCm+ftd3YufOa8/K/gEAAHjpW+7hfmfjAsD8E/umpusR0zMx3xYR/6zzwoipw9Ha 2hYt5XJMNxqx+fz1MXX0SBydqkeUyifc+MMPPRjvvuH6iIj48le+Gps3b47NmzfHZz77ufm1JQMf uWV+2v+3v3nXoin/cwY+ckt8/567o6f3nfHA/ffNf/Yzn/3c6R09AAAAL0kn+7yCc8lKD/drvgBw z71/ver7Lv30sV8Ucz8UEVGKmV8FUCqVYl1bSwz+5V/Hd3/0k5iq1+MdO66KD/3L18SR+omn+1/R eclJrw05lfcCAAAAJ/bpoU/GO/5VT7S3t8ei2/dzST/3FP/pqan4ta3nxXMHD0fHuvXx2ldeGlPT jVUdzBduvzX23HjTqm4TAAAAWFBZ6cWpohTX7fynsWFdR1y+bVP8ZteWOHjo8GnvtHl6xpve/Na4 40t/dtrbBAAAAJa2YvxHlCLq9fiday6LiDil8F9pGr8p/gAAAHD2nPipfQAAAMBLmvgHAACA5MQ/ AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBylcsv277WYwAAAADOIHf+AQAAIDnxDwAAAMlV 1noAAAAAwOrraG+LTReeHx0dHe78AwAAQHbiHwAAAJIT/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAg OfEPAAAAyR0T/7Wo9paiVGr66q1G7SwMpFbtXbyvWjV6S71RPRs7XwXjQ6UoDY2f9PuPO95TNvN3 1btKJ6hW7T2l8S83nkX/dkqlKJWGYuWtjsdQ6dTOHQAAAKfmmPjfFn37iijGBiOiJ4Yniij29cW2 MzyIWrU3tu8eOWYofbGv2Bd9Z3rnq6FWjaGBiBgYOqmLFUse7ymb+bvatxonqFaNm093PLXRiP4i iqLpa2wwYnBXdK+w397Sjhg4vT0DAABwAitM+++OrrMU3tv69sXEcM/Z2dkZUButRgwORk+MRHX0 xPV/bh1vLap7I/oGT3c7u2LXMZU/PjoQg8f+YbNtfbGvKGLstPcNAADASqz5P23jsXd3d/T374m+ noiR6uhZWSaxWmrVvRF7+qLrdDe0bdsxM0TGY3Rg8LgLAgAAAJx9pxn/s+u1l3k+wPjQ4vXfi5d1 N60R763G/uM2PbRovXit2jv7c9M+j1knfuz+VlxzPrf9WjV6T2d746MxMLgrumNb9PUPRoxUY+mb /ysd7+xrQ+Oz42o6X03jW7y+f+Y8LAx55ufeam32XJWidKJnJtSqsTf2nMTSisV/z3P7nD8/S63X nz8vAAAArLXTiP/xGCrtiBibW+M9FoMju2P73AWA8aHYMTAYY7Prv8cGIwaGFi4OjA9tj93dYzOf vS1itNq86aEo7VhYCb6wRn4gdpRGY9fcevKmNfa1am/T/iZiuCcieoZjoug/LkBr1d7Z7Q/Ejpsj bpvf3o75wD657dWiOjQew3tm/6R7VwzGSOzee3wML3+8taj2bo+Zw9sRpdFdC+drRylKTeMb2b13 9sLDzLlfOEMLP4/s3h43x22zY156LPP73Rux56SeGdAd/bNj6hmeiP65w+2fiLGxiSj6j0/8E075 BwAA4Kx50fFfqw7FQM9w7Jnvu+7oH2u6893dH0XRH92zd7V3DCz6cAwNDMbYXDRu64td3U0PnOvu n33o4NzLc2vkB2NsLr67uqJ51fz+/SNND5fbFrv6eiJG9h8/o+DY7c090LC7P2aGPzNt/6S2VxuN avTFrvl+7o5dgxExMLp4dsCKx7st+vbNXlwYHJsP6a6unpmLDYseuDge+2uz57oYi4UztPBzz/DE 7EMAt0XXSu09Phqx59Qe5ti9ZziieVlDbX8s/WAIU/4BAADOJS86/vfvX+Lp8F1d0RMjsX+2kGem hd8ccVux6AF3tdFqHPvprq7TewBe957h6GmaCbA43k9O8xhOZnvje3fHyMju2N40JX7mIsdAjDbV /5k43tNTi+rQ7ti9/ZhxD+xYeanAtl3RF7tjbjLB+Oj+pdu/tj/GTfkHAAA4Z5xy/I8Pzax57+rq WWZ9e090dc1Omx8fjoklfl3ftq7uWLiLvUq29UX/4Mh80O4YH46JJaajr2T//pGI7q6Zu+En3N7M 3e2x4phfbze7RGCgqf7PyPGeltlf6dg07rHBmJl5sOKvV5yZATEwVI1arRr7u5aeOVAbrUa32/4A AADnjBXi//hYrVV7Y0fM3NHd1tc/s7795qZ1/Ht3x8hg/0I8zk+Tr8VotXla/65jPjsee3ePRDQ/ M2CZMSynVu2Noa6JhaDddzJT2pvu0NeqMTTQM79+/0TbGx/aEePDe5a4uz374L+BHQsP4zvp4z11 42f5isK2vv4YHNkdN98cyywrqMVotfsUpvzXYv9yjyUAAABgdRSLTBTDPVFELP81ONb8/rFisPn1 5hcnhoue+dd6isHBntnvB4ux414fLIaHe4roGS4miqIoxgab9tlT3HprT9PPg8XYos/OjmnRZxa+ eoYniqVMDPcUEYPF4OAyx7bs9h5YfI4Wn5DZ7S7x+rLHO3Hc9hZvY7AYO+Z8DE8sPu89w//zmJ8n irGm45o/rysYGzz+WF7UeyeGi54lX5sd87L/Rpr+bSz5/hP9DAAAQLMPfehDxdjYWHHfffcVpaIo itW+oLAWatWhGN3Vf9yU9Vq1Gvv7+pZ84v/23d0LDxA8ze0BAADAueTDH/5wXH/99dHR0XE6v+rv HFKrxs27l5g7XqvG3ngRD55b7e0BAADAGsoR/9v64rbhWPT0+lKpFKWbl/499jN3/UciYiB2lIbi uMw/xe0BAADAuSzNtH8AAABgQb5p/wAAAMCyxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASE78AwAA QHLiHwAAAJIT/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASK6y1gMAAAAAVt8L L7wQj//DL6K9vU38AwAAQEZ3/f2BqD47EVFpNe0fAAAAshP/AAAAkJz4BwAAgOTEPwAAACQn/gEA ACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8A AADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8A AABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwD AABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIf AAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABIrrLWAwAAAABWX+9rtsbv /d410dHR4c4/AAAAZCf+AQAAIDnxDwAAAMlZ8w8AAABJPXf3p+OGz9/vzj8AAADk9rviHwAAAHJr E/8AAACQnfgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAKkdFf8AAACQ29ejstZDAAAAAM6MC974R3Hn P+9w5x8AAACyE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEjob7/+tzH69Mz3 4h8AAAAS2rh14XvxDwAAAAltbPpe/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAA IDnxDwAAAAm9/LWvjV2bZr4X/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAiRVFIf4BAAAg o6Iool6vR71eF/8AAACQUUtLS7S3t0dHR4f4BwAAgOzEPwAAACQn/gEAACA58Q8AAADJiX8AAABI TvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABA Yk8drEdlrQcBAAAAnBlPHJiOj37nKXf+AQAAIKODU434yDeeiH99zYXiHwAAADJ6/kgjNrSVY2fX etP+AQAAIKMnX6jH4+um4k++9aQ7/wAAAJDRs4frccd1l8YVm1rFPwAAAGS0eUNLbGgtx/ted5H4 BwAAgIyeOlCP4Qeei4gQ/wAAAJBR96+tix/XDseX73tO/AMAAEBGrS2l+NhbL44HJg6LfwAAAMhq Q2spPvX2i8U/AAAAZLahrSz+AQAAIDvxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgH AACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQXGWtBwAAAACs vgMHDsTExES0tbW58w8AAAAZlcvlaG1tFf8AAACQVUtLS7S1tYl/AAAAyGruzn9ra6v4BwAAgIxK pVK0tLREpVIR/wAAAJBRqVSKcrk88/+1HgwAAABw5oh/AAAA+BUg/gEAACA58Q8AAAAJlcvlqFQq HvgHAAAAvwrEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAA gOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcpW1HgAAAABwhjz9s/jolw+LfwAAAEhr 0+XxyT/uMO0fAAAAsnPnHwAAALJ6+mfx0S974B8AAACk9HTT9+IfAAAAEnri2YXvxT8AAAAkJ/4B AAAgoQ0dC9+LfwAAAEhoq/gHAACA3Jra36/6AwAAgLQ2XR6f/OMOd/4BAAAgO/EPAAAAyYl/AAAA SE78AwAAQHLiHwAAAJIT/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASE78AwAA QHLiHwAAAJIT/wAAAJBcZa0HAAAAAKy+RqMRU1NTUS6X3fkHAACAjBqNRtTr9ajX6+IfAAAAMiqX y1GpVKK1tVX8AwAAQEZz8V+pVMQ/AAAAZCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACS E/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQ nPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA 5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAA JCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAA IDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJNRoNGJ6ejqmp6fF PwAAAGRUFEXU6/Wo1+viHwAAADJqaWmJ9vb2aG9vF/8AAACQnfgHAACA5MQ/AAAAJCf+AQAAIDnx DwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJ fwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO /AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy 4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACS E/8AAACQnPgHAACAhIqiiEajEY1GQ/wDAABARkVRRL1ej+npafEPAAAAGZXL5WhtbY22tjbxDwAA ANmJfwAAAEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAA AEhO/AMAAEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMA AEBy4h8AAACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8A AACSE/8AAACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMmJfwAAAEhO/AMAAEBy4h8AAACSE/8A AACQnPgHAACA5MQ/AAAAJCf+AQAAIDnxDwAAAMlV1noAAAAAwOqbnp6OQ4cORaPREP8AAACQUaVS iXXr1kVHR4dp/wAAAJCd+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASE78AwAAQHLiHwAA AJIT/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASE78AwAAQHLiHwAAAJIT/wAA AJCc+AcAAIDkxD8AAAAkJ/4BAAAgscl7vyL+AQAAIK2nfhDfeOwy8Q8AAABpbbkyLouHxD8AAADk tSl++4YPiH8AAADIrrLWAwAAAADOkKd+EF/5q5+IfwAAAEhry+vjhg+82bR/AAAAyE78AwAAQHLi HwAAAJIT/wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyYl/AAAASE78AwAAQHLiHwAAAJIT /wAAAJCc+AcAAIDkxD8AAAAkJ/4BAAAgOfEPAAAAyVXWegAAAADA6pueno6DBw9Go9EQ/wAAAJBR pVKJ9evXR0dHh2n/AAAAkJ34BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIf AAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/ AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4 BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTE PwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn /gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA5 8Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJ iX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABI TvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABA cuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAA khP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAA kJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAA gOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAA ACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEA ACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8A AADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8A AABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwD AABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIf AAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/ AAAAkJz4BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4 BwAAgOTEPwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTE PwAAACQn/gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACQn /gEAACA58Q8AAADJiX8AAABITvwDAABAcuIfAAAAkhP/AAAAkJz4BwAAgOTEPwAAACT3/wE0yaDl mjQrkgAAAABJRU5ErkJggg== --_005_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_-- --_006_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_ Content-Type: application/octet-stream; name="pgadmin4.log" Content-Description: pgadmin4.log Content-Disposition: attachment; filename="pgadmin4.log"; size=161237; creation-date="Wed, 31 May 2023 04:15:15 GMT"; modification-date="Wed, 31 May 2023 04:15:18 GMT" Content-Transfer-Encoding: base64 MjAyMy0wNS0zMCAxMToyNToyMiw0NTI6IFdBUk5JTkcJd2Vya3pldWc6CVdlYlNvY2tldCB0cmFu c3BvcnQgbm90IGF2YWlsYWJsZS4gSW5zdGFsbCBzaW1wbGUtd2Vic29ja2V0IGZvciBpbXByb3Zl ZCBwZXJmb3JtYW5jZS4NCjIwMjMtMDUtMzAgMTE6MjU6MjIsNDU0OiBXQVJOSU5HCXdlcmt6ZXVn OglXZXJremV1ZyBhcHBlYXJzIHRvIGJlIHVzZWQgaW4gYSBwcm9kdWN0aW9uIGRlcGxveW1lbnQu IENvbnNpZGVyIHN3aXRjaGluZyB0byBhIHByb2R1Y3Rpb24gd2ViIHNlcnZlciBpbnN0ZWFkLg0K MjAyMy0wNS0zMCAxMToyNTo0OSwyMjE6IEVSUk9SCXBnYWRtaW46CUV4Y2VwdGlvbiB3aGVuIGNo ZWNraW5nIGZvciB1cGRhdGUNClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAg RmlsZSAidXJsbGliXHJlcXVlc3QucHkiLCBsaW5lIDEzNDgsIGluIGRvX29wZW4NCiAgRmlsZSAi aHR0cFxjbGllbnQucHkiLCBsaW5lIDEyODMsIGluIHJlcXVlc3QNCiAgRmlsZSAiaHR0cFxjbGll bnQucHkiLCBsaW5lIDEzMjksIGluIF9zZW5kX3JlcXVlc3QNCiAgRmlsZSAiaHR0cFxjbGllbnQu cHkiLCBsaW5lIDEyNzgsIGluIGVuZGhlYWRlcnMNCiAgRmlsZSAiaHR0cFxjbGllbnQucHkiLCBs aW5lIDEwMzgsIGluIF9zZW5kX291dHB1dA0KICBGaWxlICJodHRwXGNsaWVudC5weSIsIGxpbmUg OTc2LCBpbiBzZW5kDQogIEZpbGUgImh0dHBcY2xpZW50LnB5IiwgbGluZSAxNDU1LCBpbiBjb25u ZWN0DQogIEZpbGUgInNzbC5weSIsIGxpbmUgNTEzLCBpbiB3cmFwX3NvY2tldA0KICBGaWxlICJz c2wucHkiLCBsaW5lIDEwNzEsIGluIF9jcmVhdGUNCiAgRmlsZSAic3NsLnB5IiwgbGluZSAxMzQy LCBpbiBkb19oYW5kc2hha2UNCnNzbC5TU0xDZXJ0VmVyaWZpY2F0aW9uRXJyb3I6IFtTU0w6IENF UlRJRklDQVRFX1ZFUklGWV9GQUlMRURdIGNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQ6IGludmFs aWQgQ0EgY2VydGlmaWNhdGUgKF9zc2wuYzoxMDA3KQ0KDQpEdXJpbmcgaGFuZGxpbmcgb2YgdGhl IGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6DQoNClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFx3ZWJccGdhZG1pblxicm93c2VyXF9faW5pdF9fLnB5IiwgbGlu ZSA0MjgsIGluIGNoZWNrX2Jyb3dzZXJfdXBncmFkZQ0KICAgIHJlc3BvbnNlID0gdXJsb3Blbih1 cmwsIGRhdGEsIDUpDQogIEZpbGUgInVybGxpYlxyZXF1ZXN0LnB5IiwgbGluZSAyMTYsIGluIHVy bG9wZW4NCiAgRmlsZSAidXJsbGliXHJlcXVlc3QucHkiLCBsaW5lIDUxOSwgaW4gb3Blbg0KICBG aWxlICJ1cmxsaWJccmVxdWVzdC5weSIsIGxpbmUgNTM2LCBpbiBfb3Blbg0KICBGaWxlICJ1cmxs aWJccmVxdWVzdC5weSIsIGxpbmUgNDk2LCBpbiBfY2FsbF9jaGFpbg0KICBGaWxlICJ1cmxsaWJc cmVxdWVzdC5weSIsIGxpbmUgMTM5MSwgaW4gaHR0cHNfb3Blbg0KICBGaWxlICJ1cmxsaWJccmVx dWVzdC5weSIsIGxpbmUgMTM1MSwgaW4gZG9fb3Blbg0KdXJsbGliLmVycm9yLlVSTEVycm9yOiA8 dXJsb3BlbiBlcnJvciBbU1NMOiBDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEXSBjZXJ0aWZpY2F0 ZSB2ZXJpZnkgZmFpbGVkOiBpbnZhbGlkIENBIGNlcnRpZmljYXRlIChfc3NsLmM6MTAwNyk+DQoy MDIzLTA1LTMwIDExOjI1OjQ5LDQyNTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhl IHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJl ZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdh aW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAg cnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1 cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQog ICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKipr dyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc c2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBz ZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5Iiwg bGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRp bHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9t X2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90 Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24g dGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sg eW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxMToyNTo0OSw0Mjg6IEVS Uk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91 bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2Ug Y2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMs IGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0 KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRj aF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9u c1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzog c2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3Fh OiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGlu IHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGly ZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAj IHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0 aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RG b3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUg cmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVk IHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fp bi4NCjIwMjMtMDUtMzAgMTE6MjU6NDksNDI4OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5k OiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBl bnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRy eSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QN CiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxm LmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19h cmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJk YT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmls ZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0 dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMu cHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1 Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVl XQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5k X2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9u cy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3Vu ZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBj aGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDExOjI1OjQ5LDQy OTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5v dCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBs ZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3Qg cmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUg MTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3Jl cXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRp c3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVu Y3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAq Kmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAj IG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMz MSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJv bV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9y eSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pl dWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNl IE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6 IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVu dGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5 IGFnYWluLg0KMjAyMy0wNS0zMCAxMToyNTo0OSw0NTU6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3Qg Rm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYg eW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBh bmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVx dWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJu IHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2 aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8 bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRp Y19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAg ICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVs cGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdl cmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4t dmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGlu IHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNl cHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90 IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxl YXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTE6MjU6 NDksNDYwOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3 YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFs bHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5Iiwg bGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0 Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwg aW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmll d19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFt YmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdu b3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxp bmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3Rv cnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2Vu ZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGly ZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3 ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAg cmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBG b3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5 b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFu ZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDExOjI1OjQ5LDcyNTogRVJST1IJcGdhZG1pbjoJNDA0 IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVy LiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxs aW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRj aF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICBy ZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRd KSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMs IGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRf c3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmls ZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1 cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3Jl dHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4 NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVn LmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdh cyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxs eSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAx MToyNTo0OSw3NDE6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQg VVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBt YW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5k aXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAx Nzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2Vs Zi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVu Yz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBl OiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5 IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2Rp cmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBp biBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJv bV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkN CiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQg Tm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIu IElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxp bmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTE6MjU6NDksNzU5OiBFUlJPUglwZ2FkbWlu Ogk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBz ZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIg c3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rp c3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0K ICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRw b2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCku c2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRp Y19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAg IHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25v cmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxp bmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vy a3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBV Ukwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1h bnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1 LTMwIDExOjI1OjQ5LDgwNjogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVl c3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUg VVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBz ZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3lu YyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmll d19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAj IHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZv bGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zy b21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1 OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2Vu ZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVj dG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6 IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNl cnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBz cGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxMToyNTo0OSw4MTE6IEVSUk9SCXBn YWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24g dGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sg eW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1 bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1 ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxl LmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIs IGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9y ZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUw DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRf c3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5 DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6 IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5 IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgp DQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVz dGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBV UkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIw MjMtMDUtMzAgMTE6MjU6NDksODEzOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUg cmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVk IHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fp bi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBy diA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3Vy ZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAg ICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3 KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xz Y2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNl bmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBs aW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGls cy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21f ZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RG b3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0 aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5 b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE0OjUyOjIzLDI1NzogV0FS TklORwl3ZXJremV1ZzoJV2ViU29ja2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0YWxs IHNpbXBsZS13ZWJzb2NrZXQgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0zMCAx NDo1MjoyMywyNTg6IFdBUk5JTkcJd2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUgdXNl ZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEgcHJv ZHVjdGlvbiB3ZWIgc2VydmVyIGluc3RlYWQuDQoyMDIzLTA1LTMwIDE0OjUyOjI0LDA0NDogRVJS T1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3Vu ZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBj aGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywg aW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3Qo KQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNo X3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25z W3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBw LnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBz ZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6 IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4g c2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJl Y3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMg dHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRp bHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZv dW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSBy ZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQg dGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWlu Lg0KMjAyMy0wNS0zMCAxNDo1MjoyNCwwNDY6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6 IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVu dGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5 IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0K ICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYu ZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2Fy Z3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRh Pg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxl KCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1 cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5w eSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVn LnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVd DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRf ZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25z Lk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5k IG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNo ZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTQ6NTI6MjQsMDQ5 OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90 IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxl YXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAx ODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVx dWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlz cGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5j dGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoq a3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMg bm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMx LCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9t X2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5 KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1 Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2Ug Tm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDog VGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50 ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkg YWdhaW4uDQoyMDIzLTA1LTMwIDE0OjUyOjI0LDA1MjogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBG b3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5 b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFu ZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1 ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4g c2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZp ZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxs YW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGlj X2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAg IHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxw ZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vy a3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12 YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4g c2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2Vw dGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3Qg Zm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVh c2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNDo1Mjoy NCwwNTg6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdh cyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxs eSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRj aF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBp biBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3 X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1i ZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25v cmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGlu ZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9y eSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5k X2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJl Y3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdl cmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICBy YWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZv dW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlv dSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5k IHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTQ6NTI6MjQsMDY2OiBFUlJPUglwZ2FkbWluOgk0MDQg Tm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIu IElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxp bmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNo X3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJl dHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0p KCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywg aW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9z dGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxl DQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVy biB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0 dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3 LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcu ZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2Fz IG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5 IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE0 OjUyOjI0LDE4NTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBV Ukwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1h bnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRp c3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3 OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxm LnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5j PWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6 IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHki LCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGly ZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGlu IHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9t X2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0K ICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBO b3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4g SWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGlu ZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNDo1MjoyNCwxOTI6IEVSUk9SCXBnYWRtaW46 CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNl cnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBz cGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp Og0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlz cGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQog ICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBv aW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUg NzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5z ZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGlj X2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAg cmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9y ZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGlu ZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJr emV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVS TCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFu dWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUt MzAgMTQ6NTI6MjQsMjAwOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVz dGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBV UkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNl bGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5j KHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3 X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMg dHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9s ZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJv bV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5 MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5k X2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0 b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDog NDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2Vy dmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNw ZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE0OjUyOjI0LDIyNzogRVJST1IJcGdh ZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0 aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5 b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVs bF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVl c3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUu ZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5Iiwg bGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3Jl ZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTAN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9z dGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkN CiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTog aWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHki LCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkN Cndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0 ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVS TCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAy My0wNS0zMCAxNDo1MjoyNCwyMjg6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSBy ZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQg dGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWlu Lg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2 ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJl X3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAg IHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cp LCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNj YWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2Vu ZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxp bmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxz LnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9k aXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZv dW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRo ZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlv dXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTQ6NTI6MjQsMjI5OiBFUlJP UglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5k IG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNo ZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBp biBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgp DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hf cmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNb cnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNl bGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTog Qjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBz ZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVj dG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0 eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGls cy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91 bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJl cXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0 aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4u DQoyMDIzLTA1LTMwIDE1OjAyOjQyLDI1NzogV0FSTklORwl3ZXJremV1ZzoJV2ViU29ja2V0IHRy YW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9yIGltcHJv dmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0zMCAxNTowMjo0MiwyNTk6IFdBUk5JTkcJd2Vya3pl dWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95bWVu dC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVyIGluc3RlYWQu DQoyMDIzLTA1LTMwIDE1OjAyOjQzLDM2MzogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDog VGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50 ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkg YWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQog ICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5l bnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJn cykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+ DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUo KiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVy biBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5 IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcu dXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0N CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9m cm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMu Tm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQg b24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hl Y2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTowMjo0MywzNzE6 IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3Qg Zm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVh c2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4 MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1 ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNw YXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0 aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKipr dzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBu b3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEs IGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21f ZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3Rvcnko ICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVn XHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBO b3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBU aGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRl cmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBh Z2Fpbi4NCjIwMjMtMDUtMzAgMTU6MDI6NDMsMzg0OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZv dW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlv dSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5k IHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVl c3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBz ZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmll d19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxh bWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNf ZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAg cmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBl cnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJr emV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZh bHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBz ZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0 aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBm b3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFz ZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjAyOjQz LDQwMTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2Fz IG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5 IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNo X3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGlu IGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdf ZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJk YSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9y ZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5l IDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5 KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRf ZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVj dG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vy a3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJh aXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91 bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91 IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQg dHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTowMjo0Myw0Mjc6IEVSUk9SCXBnYWRtaW46CTQwNCBO b3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4g SWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGlu ZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hf cmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0 dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSko Kip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBp biA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0 YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUN CiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc aGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJu IHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1 cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcs IGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5l eGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMg bm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkg cGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6 MDI6NDMsNDM1OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVS TCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFu dWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlz cGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5 OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYu dmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9 bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTog aWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIs IGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJl Y3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4g c2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21f ZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQog ICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5v dCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJ ZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5n IGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjAyOjQzLDczNDogRVJST1IJcGdhZG1pbjoJ NDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2Vy dmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNw ZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNw YXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAg ICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9p bnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3 MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNl bmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNf ZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICBy ZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3Jl W3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5l IDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6 ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJM IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51 YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0z MCAxNTowMjo0Myw3NDk6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0 ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVS TCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2Vs Zi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGlu ZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMo c2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdf ZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0 eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xk LnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9t X2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkw LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRf ZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3Rv cnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0 MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2 ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3Bl bGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MDI6NDMsNzY0OiBFUlJPUglwZ2Fk bWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRo ZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlv dXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxs X2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVz dA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5l bmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVm KCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0 YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0K ICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBp Z25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIs IGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0K d2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3Rl ZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJM IG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIz LTA1LTMwIDE1OjAyOjQzLDgzNDogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJl cXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0 aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4u DQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYg PSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHki LCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVf c3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAg dmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyks ICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2Nh ZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5k X2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGlu ZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMu c2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2Rp cmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91 bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhl IHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91 ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTowMjo0Myw4NDU6IEVSUk9S CXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQg b24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hl Y2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGlu IGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9y ZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1ty dWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2Vs Zl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBC OTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNl bmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0 b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5 cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxz LnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3Vu ZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVx dWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRo ZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4N CjIwMjMtMDUtMzAgMTU6MDI6NDMsODUwOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBU aGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRl cmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBh Z2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAg ICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVu c3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdz KQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4N CiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgq Kmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJu IHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHki LCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51 dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zy b21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5O b3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBv biB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVj ayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjMwOjM3LDE0Mzog V0FSTklORwl3ZXJremV1ZzoJV2ViU29ja2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0 YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0z MCAxNTozMDozNywxNDU6IFdBUk5JTkcJd2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUg dXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEg cHJvZHVjdGlvbiB3ZWIgc2VydmVyIGluc3RlYWQuDQoyMDIzLTA1LTMwIDE1OjMwOjM4LDIzOTog RVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBm b3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFz ZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgy MywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVl c3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3Bh dGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rp b25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3 OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5v cWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwg aW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9k aXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSgg ICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdc dXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5v dEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRo ZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVy ZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFn YWluLg0KMjAyMy0wNS0zMCAxNTozMDozOCwyNDE6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91 bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91 IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQg dHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVz dA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNl bGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3 X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFt YmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19m aWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICBy ZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVy cy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6 ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFs dWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNl bmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRp b25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZv dW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNl IGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MzA6Mzgs MjQ0OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMg bm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkg cGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGlu ZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hf cmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4g ZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19m dW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRh ICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3Jl ICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUg MzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3Rvcnko DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9m cm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0 b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJr emV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFp c2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3Vu ZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3Ug ZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0 cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjMwOjM4LDI1NDogRVJST1IJcGdhZG1pbjoJNDA0IE5v dCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJ ZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5n IGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9y ZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1 cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgq KnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGlu IDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3Rh dGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0K ICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xo ZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4g d2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVy bi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4Nywg aW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4 Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBu b3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBw bGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNToz MDozOCwyNjI6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJM IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51 YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHki LCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNw YXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5 LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52 aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1s YW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBp Z25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5Iiwg bGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVj dG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBz ZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9k aXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAg ICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90 IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElm IHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcg YW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MzA6MzgsMjc1OiBFUlJPUglwZ2FkbWluOgk0 MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2 ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3Bl bGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3Bh dGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAg IHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2lu dF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcx MywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2Vu ZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19m aWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJl dHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVb cmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUg NTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pl dWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwg d2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVh bGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMw IDE1OjMwOjM4LDYzMTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3Rl ZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJM IG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxm LmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhz ZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19m dW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5 cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQu cHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21f ZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAs IGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9m cm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9y eQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQw NCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZl ci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVs bGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTozMDozOCw2NDY6IEVSUk9SCXBnYWRt aW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhl IHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91 ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxf ZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0 DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVu ZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYo KS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3Rh dGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQog ICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGln bm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5Iiwg bGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3 ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVk IFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwg bWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMt MDUtMzAgMTU6MzA6MzgsNjYzOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVx dWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRo ZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4N ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9 IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIs IGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9z eW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2 aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwg ICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2Fm Zm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRf ZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5l IDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5z ZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGly ZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3Vu ZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUg c2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3Vy IHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjMwOjM4LDcxNjogRVJST1IJ cGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBv biB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVj ayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4g ZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3Jl cXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1 bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxm X3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5 NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2Vu ZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3Rv cnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlw ZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMu cHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5k KCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1 ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhl IFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0K MjAyMy0wNS0zMCAxNTozMDozOCw3MTY6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRo ZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVy ZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFn YWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAg IHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBw LnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5z dXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3Mp DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0K ICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoq a3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4g c2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIs IGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0 aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJv bV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5v dEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9u IHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNr IHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MzA6MzgsNzE5OiBF UlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZv dW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNl IGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIz LCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVz dCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0 Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlv bnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6 IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9x YTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBp biBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2Rp cmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAg IyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1 dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90 Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhl IHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJl ZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdh aW4uDQoyMDIzLTA1LTMwIDE1OjM0OjM5LDYwNjogV0FSTklORwl3ZXJremV1ZzoJV2ViU29ja2V0 IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9yIGlt cHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0zMCAxNTozNDozOSw2MDc6IFdBUk5JTkcJd2Vy a3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95 bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVyIGluc3Rl YWQuDQoyMDIzLTA1LTMwIDE1OjM0OjQwLDQwOTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3Vu ZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3Ug ZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0 cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0 DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2Vs Zi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdf YXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1i ZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2Zp bGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJl dHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJz LnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pl dWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1 ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2Vu ZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlv bnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91 bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2Ug Y2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTozNDo0MCw0 MjI6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBu b3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBw bGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9y ZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBk aXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1 bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEg Kiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUg IyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAz MzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zy b21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3Rv cnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6 ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlz ZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5k OiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBl bnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRy eSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MzQ6NDAsNDI0OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90 IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElm IHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcg YW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3Jl cXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVy biBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoq dmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4g PGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0 aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQog ICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhl bHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3 ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJu LXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBp biBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhj ZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5v dCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBs ZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjM0 OjQwLDQyNDogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwg d2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVh bGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIs IGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3Bh dGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTks IGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZp ZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxh bWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGln bm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBs aW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0 b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNl bmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2Rp cmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc d2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAg IHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3Qg Rm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYg eW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBh bmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTozNDo0MCw0NDk6IEVSUk9SCXBnYWRtaW46CTQw NCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZl ci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVs bGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0 Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAg cmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50 XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEz LCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5k X3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2Zp bGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0 dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVty ZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1 ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1 Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3 YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFs bHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAg MTU6MzQ6NDAsNDU3OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVk IFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwg bWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBw LnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYu ZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUg MTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNl bGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1 bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlw ZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5w eSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9k aXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwg aW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zy b21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5 DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0 IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVy LiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxs aW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjM0OjQwLDY3MjogRVJST1IJcGdhZG1p bjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUg c2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3Vy IHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9k aXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QN CiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5k cG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGlu ZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigp LnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0 aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAg ICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdu b3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBs aW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndl cmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQg VVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBt YW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0w NS0zMCAxNTozNDo0MCw2ODg6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1 ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhl IFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0g c2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5Iiwg bGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5 bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZp ZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAg IyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZm b2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9m cm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUg NTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNl bmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJl Y3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5k OiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBz ZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIg c3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6MzQ6NDAsNzAzOiBFUlJPUglw Z2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9u IHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNr IHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBm dWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVx dWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVs ZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHki LCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZf cmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1 MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5k X3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9y eQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBl OiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5w eSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQo KQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVl c3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUg VVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoy MDIzLTA1LTMwIDE1OjM0OjQwLDc2ODogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhl IHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJl ZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdh aW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAg cnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1 cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQog ICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKipr dyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc c2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBz ZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5Iiwg bGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRp bHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9t X2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90 Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24g dGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sg eW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTozNDo0MCw3Nzk6IEVS Uk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91 bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2Ug Y2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMs IGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0 KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRj aF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9u c1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzog c2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3Fh OiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGlu IHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGly ZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAj IHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0 aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RG b3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUg cmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVk IHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fp bi4NCjIwMjMtMDUtMzAgMTU6MzQ6NDAsNzgwOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5k OiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBl bnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRy eSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QN CiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxm LmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19h cmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJk YT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmls ZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0 dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMu cHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1 Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVl XQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5k X2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9u cy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3Vu ZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBj aGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjU2OjI2LDgz NzogV0FSTklORwl3ZXJremV1ZzoJV2ViU29ja2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJ bnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0w NS0zMCAxNTo1NjoyNiw4Mzk6IFdBUk5JTkcJd2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8g YmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRv IGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVyIGluc3RlYWQuDQoyMDIzLTA1LTMwIDE1OjU2OjI4LDA0 MzogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5v dCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBs ZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3Qg cmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUg MTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3Jl cXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRp c3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVu Y3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAq Kmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAj IG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMz MSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJv bV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9y eSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pl dWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNl IE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6 IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVu dGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5 IGFnYWluLg0KMjAyMy0wNS0zMCAxNTo1NjoyOCwwNDY6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3Qg Rm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYg eW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBh bmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVx dWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJu IHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2 aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8 bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRp Y19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAg ICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVs cGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdl cmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4t dmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGlu IHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNl cHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90 IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxl YXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6NTY6 MjgsMDU5OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3 YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFs bHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5Iiwg bGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0 Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwg aW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmll d19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFt YmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdu b3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxp bmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3Rv cnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2Vu ZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGly ZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3 ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAg cmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBG b3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5 b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFu ZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjU2OjI4LDA2NDogRVJST1IJcGdhZG1pbjoJNDA0 IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVy LiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxs aW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRj aF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICBy ZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRd KSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMs IGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRf c3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmls ZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1 cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3Jl dHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4 NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVn LmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdh cyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxs eSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAx NTo1NjoyOCwwNzY6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQg VVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBt YW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5k aXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAx Nzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2Vs Zi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVu Yz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBl OiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5 IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2Rp cmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBp biBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJv bV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkN CiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQg Tm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIu IElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxp bmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6NTY6MjgsMDg4OiBFUlJPUglwZ2FkbWlu Ogk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBz ZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIg c3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rp c3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0K ICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRw b2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCku c2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRp Y19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAg IHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25v cmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxp bmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vy a3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBV Ukwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1h bnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1 LTMwIDE1OjU2OjI4LDI4MzogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVl c3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUg VVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBz ZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3lu YyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmll d19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAj IHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZv bGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zy b21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1 OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2Vu ZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVj dG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6 IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNl cnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBz cGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNTo1NjoyOCwyOTQ6IEVSUk9SCXBn YWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24g dGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sg eW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1 bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1 ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxl LmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIs IGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9y ZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUw DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRf c3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5 DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6 IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5 IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgp DQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVz dGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBV UkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIw MjMtMDUtMzAgMTU6NTY6MjgsMzExOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUg cmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVk IHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fp bi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBy diA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3Vy ZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAg ICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3 KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xz Y2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNl bmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBs aW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGls cy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21f ZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RG b3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0 aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5 b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE1OjU2OjI4LDM2NzogRVJS T1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3Vu ZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBj aGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywg aW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3Qo KQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNo X3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25z W3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBw LnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBz ZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6 IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4g c2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJl Y3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMg dHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRp bHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZv dW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSBy ZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQg dGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWlu Lg0KMjAyMy0wNS0zMCAxNTo1NjoyOCwzNzA6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6 IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVu dGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5 IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0K ICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYu ZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2Fy Z3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRh Pg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxl KCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1 cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5w eSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVn LnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVd DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRf ZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25z Lk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5k IG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNo ZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTU6NTY6MjgsMzc5 OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90 IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxl YXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAx ODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVx dWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlz cGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5j dGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoq a3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMg bm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMx LCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9t X2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5 KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1 Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2Ug Tm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDog VGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50 ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkg YWdhaW4uDQoyMDIzLTA1LTMwIDE2OjAyOjQ4LDU3OTogV0FSTklORwl3ZXJremV1ZzoJV2ViU29j a2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9y IGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0zMCAxNjowMjo0OCw1ODA6IFdBUk5JTkcJ d2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVw bG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVyIGlu c3RlYWQuDQoyMDIzLTA1LTMwIDE2OjAyOjQ5LDcwNTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBG b3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5 b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFu ZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1 ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4g c2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZp ZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxs YW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGlj X2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAg IHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxw ZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vy a3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12 YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4g c2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2Vw dGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3Qg Zm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVh c2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNjowMjo0 OSw3MDY6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdh cyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxs eSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRj aF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBp biBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3 X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1i ZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25v cmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGlu ZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9y eSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5k X2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJl Y3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdl cmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICBy YWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZv dW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlv dSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5k IHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTY6MDI6NDksNzA3OiBFUlJPUglwZ2FkbWluOgk0MDQg Tm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIu IElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxp bmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNo X3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJl dHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0p KCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywg aW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9z dGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxl DQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVy biB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0 dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3 LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcu ZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2Fz IG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5 IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE2 OjAyOjQ5LDcwODogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBV Ukwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1h bnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRp c3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3 OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxm LnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5j PWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6 IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHki LCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGly ZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGlu IHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9t X2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0K ICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBO b3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4g SWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGlu ZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNjowMjo0OSw3MTc6IEVSUk9SCXBnYWRtaW46 CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNl cnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBz cGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp Og0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlz cGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQog ICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBv aW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUg NzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5z ZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGlj X2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAg cmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9y ZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGlu ZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJr emV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVS TCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFu dWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUt MzAgMTY6MDI6NDksNzI5OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVz dGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBV UkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNl bGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5j KHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3 X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMg dHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9s ZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJv bV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5 MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5k X2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0 b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDog NDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2Vy dmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNw ZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE2OjAyOjQ5LDg1NDogRVJST1IJcGdh ZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0 aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5 b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVs bF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVl c3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUu ZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5Iiwg bGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3Jl ZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTAN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9z dGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkN CiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTog aWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHki LCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkN Cndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0 ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVS TCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAy My0wNS0zMCAxNjowMjo0OSw4NjI6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSBy ZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQg dGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWlu Lg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2 ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJl X3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAg IHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cp LCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNj YWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2Vu ZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxp bmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxz LnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9k aXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZv dW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRo ZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlv dXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTY6MDI6NDksODcxOiBFUlJP UglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5k IG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNo ZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBp biBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgp DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hf cmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNb cnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAu cHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNl bGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTog Qjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBz ZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVj dG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0 eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGls cy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91 bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJl cXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0 aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4u DQoyMDIzLTA1LTMwIDE2OjAyOjQ5LDg5OTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDog VGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50 ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkg YWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQog ICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5l bnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJn cykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+ DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUo KiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVy biBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5 IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcu dXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0N CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9m cm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMu Tm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQg b24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hl Y2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNjowMjo0OSw4OTk6 IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3Qg Zm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVh c2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4 MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1 ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNw YXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0 aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKipr dzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBu b3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEs IGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21f ZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3Rvcnko ICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVn XHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBO b3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBU aGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRl cmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBh Z2Fpbi4NCjIwMjMtMDUtMzAgMTY6MDI6NDksOTAyOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZv dW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlv dSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5k IHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVl c3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBz ZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmll d19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxh bWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNf ZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAg cmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBl cnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJr emV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZh bHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBz ZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0 aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBm b3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFz ZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE2OjI5OjQx LDU3NDogV0FSTklORwl3ZXJremV1ZzoJV2ViU29ja2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxl LiBJbnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAy My0wNS0zMCAxNjoyOTo0MSw1NzU6IFdBUk5JTkcJd2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMg dG8gYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZGVwbG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5n IHRvIGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVyIGluc3RlYWQuDQoyMDIzLTA1LTMwIDE2OjI5OjQy LDE5NTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2Fz IG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5 IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNo X3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGlu IGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdf ZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJk YSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9y ZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5l IDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5 KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRf ZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVj dG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vy a3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJh aXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91 bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91 IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQg dHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNjoyOTo0MiwxOTk6IEVSUk9SCXBnYWRtaW46CTQwNCBO b3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4g SWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGlu ZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hf cmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0 dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSko Kip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBp biA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0 YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUN CiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc aGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJu IHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1 cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcs IGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5l eGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMg bm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkg cGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTY6 Mjk6NDIsMjAwOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVS TCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFu dWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlz cGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5 OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYu dmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9 bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTog aWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIs IGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJl Y3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4g c2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21f ZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQog ICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5v dCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJ ZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5n IGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE2OjI5OjQyLDIwOTogRVJST1IJcGdhZG1pbjoJ NDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2Vy dmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNw ZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNw YXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAg ICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9p bnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDEx XHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3 MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNl bmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNf ZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICBy ZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3Jl W3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5l IDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6 ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJM IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51 YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0z MCAxNjoyOTo0MiwyMjM6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0 ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVS TCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2Vs Zi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGlu ZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMo c2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUg IkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRl LXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdf ZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0 eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xk LnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9t X2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkw LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRf ZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3Rv cnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0 MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2 ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3Bl bGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTY6Mjk6NDIsMjI3OiBFUlJPUglwZ2Fk bWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRo ZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlv dXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxs X2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVz dA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5l bmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVT UUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBs aW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVm KCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0 YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0K ICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBp Z25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIs IGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0K d2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3Rl ZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJM IG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIz LTA1LTMwIDE2OjI5OjQyLDM4NDogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJl cXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0 aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4u DQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYg PSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHki LCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVf c3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAg RmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGli XHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAg dmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyks ICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2Nh ZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5k X2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGlu ZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMu c2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2Rp cmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91 bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhl IHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91 ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNjoyOTo0MiwzOTQ6IEVSUk9S CXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQg b24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hl Y2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGlu IGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9y ZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1ty dWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9z dGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5w eSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2Vs Zl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBC OTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNl bmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0 b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5 cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxz LnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3Vu ZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVx dWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRo ZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4N CjIwMjMtMDUtMzAgMTY6Mjk6NDIsNDA1OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBU aGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRl cmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBh Z2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAg ICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVu c3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdz KQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhv blxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4N CiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgq Kmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJu IHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHki LCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51 dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zy b21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5O b3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBv biB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVj ayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE2OjI5OjQyLDQzNzog RVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBm b3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFz ZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgy MywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVl c3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3Bh dGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rp b25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxl c1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tc YXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3 OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5v cWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwg aW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9k aXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSgg ICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdc dXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5v dEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRo ZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVy ZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFn YWluLg0KMjAyMy0wNS0zMCAxNjoyOTo0Miw0NDE6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91 bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91 IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQg dHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVz dA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNl bGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3 X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRc cHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFt YmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19m aWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICBy ZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVy cy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6 ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFs dWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNl bmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRp b25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZv dW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNl IGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTY6Mjk6NDIs NDQxOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMg bm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkg cGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGlu ZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hf cmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4g ZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19m dW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFt IEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xm bGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRh ICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3Jl ICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUg MzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3Rvcnko DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9m cm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0 b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJr emV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFp c2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3Vu ZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3Ug ZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0 cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE3OjAwOjA0LDczMTogV0FSTklORwl3ZXJremV1ZzoJV2Vi U29ja2V0IHRyYW5zcG9ydCBub3QgYXZhaWxhYmxlLiBJbnN0YWxsIHNpbXBsZS13ZWJzb2NrZXQg Zm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KMjAyMy0wNS0zMCAxNzowMDowNCw3MzE6IFdBUk5J TkcJd2Vya3pldWc6CVdlcmt6ZXVnIGFwcGVhcnMgdG8gYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24g ZGVwbG95bWVudC4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIGEgcHJvZHVjdGlvbiB3ZWIgc2VydmVy IGluc3RlYWQuDQoyMDIzLTA1LTMwIDE3OjAwOjA1LDYzOTogRVJST1IJcGdhZG1pbjoJNDA0IE5v dCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJ ZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5n IGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9y ZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1 cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgq KnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRt aW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGlu IDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3Rh dGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0K ICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xo ZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4g d2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVy bi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4Nywg aW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4 Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBu b3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBw bGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNzow MDowNSw2NTE6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJM IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51 YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHki LCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNw YXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5 LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52 aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFBy b2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2th Z2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1s YW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBp Z25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5Iiwg bGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVj dG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBz ZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9k aXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAg ICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90 IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElm IHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcg YW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTc6MDA6MDUsNjYwOiBFUlJPUglwZ2FkbWluOgk0 MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2 ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3Bl bGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3Bh dGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAg IHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2lu dF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFc cGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcx MywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2Vu ZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19m aWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJl dHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVb cmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdB ZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUg NTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pl dWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwg d2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVh bGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMw IDE3OjAwOjA1LDY2NTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3Rl ZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJM IG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFw cC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxm LmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhz ZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAi QzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUt cGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19m dW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5 cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQu cHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21f ZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAs IGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9m cm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpc UHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFj a2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9y eQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQw NCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZl ci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVs bGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNzowMDowNSw2NzA6IEVSUk9SCXBnYWRt aW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhl IHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91 ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5 dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxf ZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0 DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVu ZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNR TFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxp bmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYo KS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3Rh dGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJv Z3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2Fn ZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQog ICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGln bm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwx MVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5Iiwg bGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3 ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVk IFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwg bWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMt MDUtMzAgMTc6MDA6MDUsNjc0OiBFUlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVx dWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRo ZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4N ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBG aWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxh c2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9 IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdy ZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIs IGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9z eW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBG aWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJc c2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2 aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwg ICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2Fm Zm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRf ZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxw Z0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5l IDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5z ZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxl ICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0 ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGly ZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3Vu ZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUg c2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3Vy IHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQoyMDIzLTA1LTMwIDE3OjAwOjA1LDg2MjogRVJST1IJ cGdhZG1pbjoJNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBv biB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVj ayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWlu IDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4g ZnVsbF9kaXNwYXRjaF9yZXF1ZXN0DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0K ICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxs aWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3Jl cXVlc3QNCiAgICByZXR1cm4gc2VsZi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1 bGUuZW5kcG9pbnRdKSgqKnZpZXdfYXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0 Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5 IiwgbGluZSA3MTMsIGluIDxsYW1iZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxm X3JlZigpLnNlbmRfc3RhdGljX2ZpbGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5 NTANCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2Vu ZF9zdGF0aWNfZmlsZQ0KICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJD OlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1w YWNrYWdlc1xmbGFza1xoZWxwZXJzLnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3Rv cnkNCiAgICByZXR1cm4gd2Vya3pldWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlw ZTogaWdub3JlW3JldHVybi12YWx1ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3Jl U1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMu cHkiLCBsaW5lIDU4NywgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5k KCkNCndlcmt6ZXVnLmV4Y2VwdGlvbnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1 ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhl IFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0K MjAyMy0wNS0zMCAxNzowMDowNSw4NzI6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRo ZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVy ZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFn YWluLg0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9n cmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdl c1xmbGFza1xhcHAucHkiLCBsaW5lIDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAg IHJ2ID0gc2VsZi5kaXNwYXRjaF9yZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQ b3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBw LnB5IiwgbGluZSAxNzk5LCBpbiBkaXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5z dXJlX3N5bmMoc2VsZi52aWV3X2Z1bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3Mp DQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9u XGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0K ICAgIHZpZXdfZnVuYz1sYW1iZGEgKiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoq a3cpLCAgIyB0eXBlOiBpZ25vcmUgIyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNr XHNjYWZmb2xkLnB5IiwgbGluZSAzMzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4g c2VuZF9mcm9tX2RpcmVjdG9yeSgNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FM XDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIs IGxpbmUgNTkwLCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0 aWxzLnNlbmRfZnJvbV9kaXJlY3RvcnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQog IEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxp YlxzaXRlLXBhY2thZ2VzXHdlcmt6ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJv bV9kaXJlY3RvcnkNCiAgICByYWlzZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5v dEZvdW5kOiA0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9u IHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNr IHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTc6MDA6MDUsOTA1OiBF UlJPUglwZ2FkbWluOgk0MDQgTm90IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZv dW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNl IGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBn QWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIz LCBpbiBmdWxsX2Rpc3BhdGNoX3JlcXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVz dCgpDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0 aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0 Y2hfcmVxdWVzdA0KICAgIHJldHVybiBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlv bnNbcnVsZS5lbmRwb2ludF0pKCoqdmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVz XFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xh cHAucHkiLCBsaW5lIDcxMywgaW4gPGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6 IHNlbGZfcmVmKCkuc2VuZF9zdGF0aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9x YTogQjk1MA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBp biBzZW5kX3N0YXRpY19maWxlDQogICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZp bGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxz aXRlLXBhY2thZ2VzXGZsYXNrXGhlbHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2Rp cmVjdG9yeQ0KICAgIHJldHVybiB3ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAg IyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBv c3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1 dGlscy5weSIsIGxpbmUgNTg3LCBpbiBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90 Rm91bmQoKQ0Kd2Vya3pldWcuZXhjZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhl IHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJl ZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdh aW4uDQoyMDIzLTA1LTMwIDE3OjAwOjA1LDk2MTogRVJST1IJcGdhZG1pbjoJNDA0IE5vdCBGb3Vu ZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3Ug ZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0 cnkgYWdhaW4uDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIkM6 XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBh Y2thZ2VzXGZsYXNrXGFwcC5weSIsIGxpbmUgMTgyMywgaW4gZnVsbF9kaXNwYXRjaF9yZXF1ZXN0 DQogICAgcnYgPSBzZWxmLmRpc3BhdGNoX3JlcXVlc3QoKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZp bGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFz a1xhcHAucHkiLCBsaW5lIDE3OTksIGluIGRpc3BhdGNoX3JlcXVlc3QNCiAgICByZXR1cm4gc2Vs Zi5lbnN1cmVfc3luYyhzZWxmLnZpZXdfZnVuY3Rpb25zW3J1bGUuZW5kcG9pbnRdKSgqKnZpZXdf YXJncykNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxw eXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSA3MTMsIGluIDxsYW1i ZGE+DQogICAgdmlld19mdW5jPWxhbWJkYSAqKmt3OiBzZWxmX3JlZigpLnNlbmRfc3RhdGljX2Zp bGUoKiprdyksICAjIHR5cGU6IGlnbm9yZSAjIG5vcWE6IEI5NTANCiAgRmlsZSAiQzpcUHJvZ3Jh bSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNpdGUtcGFja2FnZXNc Zmxhc2tcc2NhZmZvbGQucHkiLCBsaW5lIDMzMSwgaW4gc2VuZF9zdGF0aWNfZmlsZQ0KICAgIHJl dHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KA0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3Rn cmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xoZWxwZXJz LnB5IiwgbGluZSA1OTAsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByZXR1cm4gd2Vya3pl dWcudXRpbHMuc2VuZF9mcm9tX2RpcmVjdG9yeSggICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1 ZV0NCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRo b25cbGliXHNpdGUtcGFja2FnZXNcd2Vya3pldWdcdXRpbHMucHkiLCBsaW5lIDU4NywgaW4gc2Vu ZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJhaXNlIE5vdEZvdW5kKCkNCndlcmt6ZXVnLmV4Y2VwdGlv bnMuTm90Rm91bmQ6IDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91 bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2Ug Y2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KMjAyMy0wNS0zMCAxNzowMDowNSw5 Njc6IEVSUk9SCXBnYWRtaW46CTQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBu b3QgZm91bmQgb24gdGhlIHNlcnZlci4gSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBw bGVhc2UgY2hlY2sgeW91ciBzcGVsbGluZyBhbmQgdHJ5IGFnYWluLg0KVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOg0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxc MTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5l IDE4MjMsIGluIGZ1bGxfZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJ2ID0gc2VsZi5kaXNwYXRjaF9y ZXF1ZXN0KCkNCiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4g NFxweXRob25cbGliXHNpdGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxNzk5LCBpbiBk aXNwYXRjaF9yZXF1ZXN0DQogICAgcmV0dXJuIHNlbGYuZW5zdXJlX3N5bmMoc2VsZi52aWV3X2Z1 bmN0aW9uc1tydWxlLmVuZHBvaW50XSkoKip2aWV3X2FyZ3MpDQogIEZpbGUgIkM6XFByb2dyYW0g RmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZs YXNrXGFwcC5weSIsIGxpbmUgNzEzLCBpbiA8bGFtYmRhPg0KICAgIHZpZXdfZnVuYz1sYW1iZGEg Kiprdzogc2VsZl9yZWYoKS5zZW5kX3N0YXRpY19maWxlKCoqa3cpLCAgIyB0eXBlOiBpZ25vcmUg IyBub3FhOiBCOTUwDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0Fk bWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXHNjYWZmb2xkLnB5IiwgbGluZSAz MzEsIGluIHNlbmRfc3RhdGljX2ZpbGUNCiAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeSgN CiAgRmlsZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25c bGliXHNpdGUtcGFja2FnZXNcZmxhc2tcaGVscGVycy5weSIsIGxpbmUgNTkwLCBpbiBzZW5kX2Zy b21fZGlyZWN0b3J5DQogICAgcmV0dXJuIHdlcmt6ZXVnLnV0aWxzLnNlbmRfZnJvbV9kaXJlY3Rv cnkoICAjIHR5cGU6IGlnbm9yZVtyZXR1cm4tdmFsdWVdDQogIEZpbGUgIkM6XFByb2dyYW0gRmls ZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXHdlcmt6 ZXVnXHV0aWxzLnB5IiwgbGluZSA1ODcsIGluIHNlbmRfZnJvbV9kaXJlY3RvcnkNCiAgICByYWlz ZSBOb3RGb3VuZCgpDQp3ZXJremV1Zy5leGNlcHRpb25zLk5vdEZvdW5kOiA0MDQgTm90IEZvdW5k OiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBl bnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRy eSBhZ2Fpbi4NCjIwMjMtMDUtMzAgMTc6MDA6MDUsOTgzOiBFUlJPUglwZ2FkbWluOgk0MDQgTm90 IEZvdW5kOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElm IHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcg YW5kIHRyeSBhZ2Fpbi4NClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCiAgRmls ZSAiQzpcUHJvZ3JhbSBGaWxlc1xQb3N0Z3JlU1FMXDExXHBnQWRtaW4gNFxweXRob25cbGliXHNp dGUtcGFja2FnZXNcZmxhc2tcYXBwLnB5IiwgbGluZSAxODIzLCBpbiBmdWxsX2Rpc3BhdGNoX3Jl cXVlc3QNCiAgICBydiA9IHNlbGYuZGlzcGF0Y2hfcmVxdWVzdCgpDQogIEZpbGUgIkM6XFByb2dy YW0gRmlsZXNcUG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2Vz XGZsYXNrXGFwcC5weSIsIGxpbmUgMTc5OSwgaW4gZGlzcGF0Y2hfcmVxdWVzdA0KICAgIHJldHVy biBzZWxmLmVuc3VyZV9zeW5jKHNlbGYudmlld19mdW5jdGlvbnNbcnVsZS5lbmRwb2ludF0pKCoq dmlld19hcmdzKQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1p biA0XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1xmbGFza1xhcHAucHkiLCBsaW5lIDcxMywgaW4g PGxhbWJkYT4NCiAgICB2aWV3X2Z1bmM9bGFtYmRhICoqa3c6IHNlbGZfcmVmKCkuc2VuZF9zdGF0 aWNfZmlsZSgqKmt3KSwgICMgdHlwZTogaWdub3JlICMgbm9xYTogQjk1MA0KICBGaWxlICJDOlxQ cm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0XHB5dGhvblxsaWJcc2l0ZS1wYWNr YWdlc1xmbGFza1xzY2FmZm9sZC5weSIsIGxpbmUgMzMxLCBpbiBzZW5kX3N0YXRpY19maWxlDQog ICAgcmV0dXJuIHNlbmRfZnJvbV9kaXJlY3RvcnkoDQogIEZpbGUgIkM6XFByb2dyYW0gRmlsZXNc UG9zdGdyZVNRTFwxMVxwZ0FkbWluIDRccHl0aG9uXGxpYlxzaXRlLXBhY2thZ2VzXGZsYXNrXGhl bHBlcnMucHkiLCBsaW5lIDU5MCwgaW4gc2VuZF9mcm9tX2RpcmVjdG9yeQ0KICAgIHJldHVybiB3 ZXJremV1Zy51dGlscy5zZW5kX2Zyb21fZGlyZWN0b3J5KCAgIyB0eXBlOiBpZ25vcmVbcmV0dXJu LXZhbHVlXQ0KICBGaWxlICJDOlxQcm9ncmFtIEZpbGVzXFBvc3RncmVTUUxcMTFccGdBZG1pbiA0 XHB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlc1x3ZXJremV1Z1x1dGlscy5weSIsIGxpbmUgNTg3LCBp biBzZW5kX2Zyb21fZGlyZWN0b3J5DQogICAgcmFpc2UgTm90Rm91bmQoKQ0Kd2Vya3pldWcuZXhj ZXB0aW9ucy5Ob3RGb3VuZDogNDA0IE5vdCBGb3VuZDogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5v dCBmb3VuZCBvbiB0aGUgc2VydmVyLiBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBs ZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uDQo= --_006_MAXPR01MB33903804ACB43AD0393611AEE4489MAXPR01MB3390INDP_--