From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 29 Jul 2026 11:04:05 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ed1-f58.google.com (mail-ed1-f58.google.com [209.85.208.58]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 66T943G1016472 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 29 Jul 2026 11:04:04 +0200 Received: by mail-ed1-f58.google.com with SMTP id 4fb4d7f45d1cf-6983e384c66sf584604a12.1 for ; Wed, 29 Jul 2026 02:04:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1785315838; cv=pass; d=google.com; s=arc-20260327; b=EsxbpkyQHGxHVl7O/6W/qFeeTuRqYqq3eNoApHwPiOV22zqIem49nHF+XmSD/tE0hw TT+RnbB5nZyU55pWIRjWr7EwxIO+Y8OJ84zhnQUulGrahw7dWkcZneN6ZviHY+9Vem5J G82wuGsFJ0Q2eT9AVDd4fuvKU/K2/RD3m7WPoVZVMF5sykA2693DlFvZ9fh64q0hUR0L AkayVkBR5TTgQgai0z6GV2ERrASthKmI6Hml1K1K4jxCb193L4NapUERpTdl2MRG4kGN mi1GCXCvgJqmy5LG1qTQpzdNXAVwIGWcSGdabRCBtlUYnZj7wFOedj2hzR9seRAOzt9X Fvxw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:content-transfer-encoding :in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:sender:dkim-signature; bh=cnQpTZVV8Bn84oQaKHH6yCR2dRCmVz4Yvu67oTTZCmo=; fh=CVhpCnuoay0JPOsQgKfgsBL8FcGoxyOWv3JUD2cMDc8=; b=qywWCjGqsR5YjqcAWMVlDtCWVLQNYUgMXR0hnk0L9pfFj4UZbMCOcxDLc115PRpTDW mndRnYcDuo/3IQBoSCQ2lrnpHh7rgxkwpyZJfam/M7cTpSHzXsDLQOsh4+eqrLDBrx03 ZM/s/GGLMXgOohwpulo7nGYs2ZbksOk3yMwRQBqoN1BH2fuXWpuNAKhQBD91bI1eQkDo 19Kd3qQfYSAzi0iMyel2q+zIO+6JHaKHtCbgQDd+E1TkuiI0rQ0jFZEyqCGkWqYJi0FY L6HdwA3TQ2bRzVUhsCxaZ7LkKCuU3Ln4xBbktLm9jDWR+1zd66TcgUBPA4haDWLz5mcH KUTA==; darn=ilbers.de ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1785315838; x=1785920638; darn=ilbers.de; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:content-transfer-encoding:content-type :in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:sender:from:to:cc:subject :date:message-id:reply-to:content-type; bh=cnQpTZVV8Bn84oQaKHH6yCR2dRCmVz4Yvu67oTTZCmo=; b=px4vAAHFkN20ysVE94WNH3bAZMenAJkSZX1uE/Pb86ZEm4pm9jiEBsSa4mf4AGoaPa vPu+/MnpLiwgQ7fuIDYa3HX6vAT4jYcuVArX+h18W5hxVsrCTORkhVooYzNpHSbY/EKd +/fPtaOpygZ/bLZUTICM07ym5Q8RR+wVGQGXdK98Ygrr8I5VyWDB/r+MONfDqJS8tuXy eko+nd6XOJaSXt7imnIqChVWFeNTA5H1RD9ynBtC/OHjPHf/HtUiTg+4OeoJoCzV2Awb BOiPgBn9ESi59SonTWbDEK+W4wF2X0yzNH19C/dv8UvgOs0HiHa7X6udOoHjJtpoUSUv OoCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785315838; x=1785920638; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-beenthere:x-gm-message-state:sender:from:to:cc :subject:date:message-id:reply-to:content-type; bh=cnQpTZVV8Bn84oQaKHH6yCR2dRCmVz4Yvu67oTTZCmo=; b=UKku1o4lhu2fpuLcj8yYgs4XccZwaOn2KO6F2vZexePHakbqO/7VGUGvBe6Wp5tmzo wVOMjlgXYAgqba8lIzQq1Vg10zDv4LY0AW7k7Mnj+dgy1DDEM4zzT0RHPoQrqt6r2qRy TIExDjILBpw9en8a8dMtpE3tY+oTJqdytmJN76TaINovLza6U66Bn51eLlZzf6uqNZVY ZZGlvrWpOQ2XbypZE8Rt+z6J2Td4qqy2jFnzSXHP41AWBQftMOO0X4JPFg6uPcWyAdV+ mMaXUQbjfuEyqn5Eiup5AlecU/ubtJmhQ7T6n1vPGUGBArb3NX6rjdFRD22uoeW87Sez KqDw== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AHgh+RrQNrOdG3BYALURshCYjPNGRkNKGDYzg1alVjsEr7GYHxagysj5Fu2GxFd6SKgOGqoDeqm/@ilbers.de X-Gm-Message-State: AOJu0Yx6bjYI1P0gbLKKNy7fVbechRKhDO98FaCMcTmELRPnSliz8hQO OymxU0tX6qZf1tpNTo16oO9Uhqu8UJKI8dZlpImnAx6pQKQ4FJi7Iwa0 X-Received: by 2002:a05:6402:52cb:b0:69a:56e1:c51e with SMTP id 4fb4d7f45d1cf-6a034ab9436mr2680068a12.25.1785315838525; Wed, 29 Jul 2026 02:03:58 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="Aa7YSPSkKNV1rcUonzqJsptgo19HSDsOid3YMDUGtI1wgCJYtQ==" Received: by 2002:a05:6402:74c:b0:69f:919a:70d5 with SMTP id 4fb4d7f45d1cf-69f91a9b924ls5496076a12.2.-pod-prod-07-eu; Wed, 29 Jul 2026 02:03:56 -0700 (PDT) X-Forwarded-Encrypted: i=2; AHgh+Ro87m+5ibn487D9eZriH5YF/6bhLno1pvocXC11iUVfwAv9zfmEmjhY+0icHiKkeZB6WYP9Yh1P7eTq@googlegroups.com X-Received: by 2002:a17:907:848:b0:c1c:3705:dde9 with SMTP id a640c23a62f3a-c1f727d2ac0mr286395066b.64.1785315836101; Wed, 29 Jul 2026 02:03:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1785315836; cv=none; d=google.com; s=arc-20260327; b=NJGJDTt2fdnImTPI4Upu5IxYD5Qo/oYS3HyQmXA6ZZD8PB9oQEjvD8rT8GDaR6bbXk o6mf2P1t/kVcABJUZC2QGfCzG9Ffu1pECYNpgSXn/wG0MHpLdJE3TajFY4Lyb5QI1QvH LMLqNaDWlxP13nDPdvwQTCy4/iYe66AayBYAKZ9xcXUDFHjbwbgAPSRfsBIMQop5tABy sFVaoOLjbL3H70CokipMUB2RgtORZ+6Rgi6aLlXw4qreOR0MjAuEJ4QdWIgp1l028l+L 9hToHxweOelKnS6t7Kd79uxr81k+CHuUVumTDgQNO7xn0uITUSWyuWAIU20eT/TFLqW1 tdtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=dlAbOSUu/v9QoyNeWdzDT0vZn6uLKe7+XpQZ850M3WI=; fh=0ZX9VRCehNNgEusdskzxV3cjcnnCSx0DqBJsrVBIffY=; b=RdpMrQ8zyBg1sz0Ba27Eg8BggUMrWlyTwd1LW9VX0DaYHuBw3k50Uv4b0zAxHPNxe5 DCqZA+N4NulKObZ1L7VvH4+ehjhobfonnDV5pzpEL3VST//XDPhw7GVbav+WG+J4+CUQ c4ZHM7Sw1ZiA63x/mTbX5KTxJf3LDk5EJJ/M3NnSgoVb1L8T0PXasl3LHDstvgtC+QGy t/5gTx7NSVsvvsepPgSaVv1i2O7ED21jz7dtieTaZ5gXnHuq7Y4+bZLgDoZoIUXLTgdZ NnfuAzGW9C22tlKN3UGyFGU0XPDTfzUk/p7pIwJszbsgQTlKNvq8U0Viafh3QQuVEdah ATTA==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id a640c23a62f3a-c1f83e26f5asi3445766b.2.2026.07.29.02.03.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 29 Jul 2026 02:03:56 -0700 (PDT) Received-SPF: pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from [10.54.4.147] (62.122.174.6.serverel.net [62.122.174.6] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 66T93sWx016463 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 29 Jul 2026 11:03:54 +0200 Message-ID: <6fe406cf-38fe-4db1-b5e2-28c71039830e@ilbers.de> Date: Wed, 29 Jul 2026 12:03:54 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [v8 01/14] scripts: Add debrepo python script handling base-apt To: Quirin Gylstorff , isar-users@googlegroups.com Cc: Uladzimir Bely References: <20260727112812.2255297-1-akarpovich@ilbers.de> <20260727112812.2255297-2-akarpovich@ilbers.de> <0bb0f167-54b7-4f11-abde-ec3ee6c44c8f@siemens.com> Content-Language: en-US From: Aliaksei Karpovich In-Reply-To: <0bb0f167-54b7-4f11-abde-ec3ee6c44c8f@siemens.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: akarpovich@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-TUID: RjLpCHMi6wE/ DQpPbiA3LzI3LzI2IDE1OjM2LCBRdWlyaW4gR3lsc3RvcmZmIHdyb3RlOg0KPg0KPg0KPiBPbiA3 LzI3LzI2IDE6MjYgUE0sIEFsaWFrc2VpIEthcnBvdmljaCB3cm90ZToNCj4+IEZyb206IFVsYWR6 aW1pciBCZWx5IDx1YmVseUBpbGJlcnMuZGU+DQo+Pg0KPj4gVGhpcyBpcyB0aGUgbWFpbiB1dGls aXR5IHJlc3BvbnNpYmxlIGZvciBwcmVmZXRjaGluZyBwYWNrYWdlcw0KPj4gaW50byBsb2NhbCBg YmFzZS1hcHRgIHJlcG8gZnJvbSBleHRlcm5hbCBEZWJpYW4gbWlycm9ycy4gSXQgdXNlcw0KPj4g cHl0aG9uLWFwdCBtb2R1bGUgYW5kIHJlcXVpcmVzIHNvbWUga2luZCBvZiBtaW5pbWFsIGByb290 ZnNgIHRvIHdvcmsNCj4+IChsZXQncyBjYWxsIGl0ICJkZWJyZXBvIGNvbnRleHQiKS4NCj4NCj4g VGhpcyBoYXMgYSBuYW1pbmcgY2xhc2ggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vZmlsaXByb2pl ay9kZWJyZXBvLiBJIA0KPiB3b3VsZCBzdWdnZXN0IGFub3RoZXIgbmFtZS4NCldoYXQgYWJvdXQg ImRlYl9yZXBvIiA/DQo+IERvZXMgdGhpcyB3b3JrIHdpdGggbmV3ZXIgcmVsZWFzZXMgb2YgYXB0 wqAgYXMgaXQgdXNlcyB0aGUgaG9zdCBhcHQ/DQo+DQo+Pg0KPj4gT25jZSBpbml0aWFsaXplZCB3 aXRoIGAtLWluaXQgLS13b3JrZGlyPTxwYXRoPmAsIGl0IHN0b3JlcyB0aGUgaW5pdGlhbA0KPj4g Y29uZmlndXJhdGlvbiBpbiBgcmVwby5vcHRzYCBmaWxlIGluc2lkZSB0aGUgY29udGV4dCBhbmQg dXNlcyBpdCBhdA0KPj4gZnV0aGVyIGNhbGxzLg0KPj4NCj4+IEluIGZ1dHVyZSwgdGhlIGxvZ2lj IGBkZWJyZXBvYCBzY3JpcHQgaW1wbGVtZW50cyBjb3VsZCBiZSBkaXJlY3RseQ0KPj4gaW1wbGVt ZW50ZWQgaW5zaWRlIGJpdGJha2UgY2xhc3Nlcy4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBVbGFk emltaXIgQmVseSA8dWJlbHlAaWxiZXJzLmRlPg0KPj4gLS0tDQo+PiDCoCBzY3JpcHRzL2RlYnJl cG8gfCA1ODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgNTg5IGluc2VydGlvbnMoKykNCj4+IMKgIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL2RlYnJlcG8NCj4+DQo+PiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9k ZWJyZXBvIGIvc2NyaXB0cy9kZWJyZXBvDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPj4gaW5k ZXggMDAwMDAwMDAuLjgxMDU2YzNhDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9zY3JpcHRz L2RlYnJlcG8NCj4+IEBAIC0wLDAgKzEsNTg5IEBADQo+PiArIyEvdXNyL2Jpbi9lbnYgcHl0aG9u Mw0KPj4gKw0KPj4gKyIiIg0KPj4gKyMgVGhpcyBzb2Z0d2FyZSBpcyBhIHBhcnQgb2YgSXNhci4N Cj4+ICsjIENvcHlyaWdodCAoQykgMjAyNiBpbGJlcnMgR21iSA0KPj4gKw0KPj4gKyMgZGVicmVw bzogYnVpbGQgRGViaWFuLWxpa2UgcmVwbyB1c2luZyAicHl0aG9uMy1hcHQiIGxpYnJhcnkuDQo+ PiArDQo+PiArV2hlbiBidWlsZGluZyB0aGUgaW1hZ2UsIElzYXIgZG93bmxvYWRzIHJlcXVpcmVk IERlYmlhbiBwYWNrYWdlcyANCj4+IGZyb20gZXh0ZXJuYWwNCj4+ICttaXJyb3JzLiBBZnRlciBi dWlsZCBjb21wbGV0ZWQsIGl0IGNhbiBwaWNrIGFsbCBkb3dubG9hZGVkIHBhY2thZ2VzIA0KPj4g ZnJvbSBETF9ESVINCj4+ICthbmQgYnVpbGQgbG9jYWwgJ2Jhc2UtYXB0JyBEZWJpYW4tbGlrZSBy ZXBvIGZyb20gdGhlbS4NCj4+ICsNCj4+ICtUaGlzIHRvb2wgYWxsb3dzIHRvIGRvd25sb2FkIHBh Y2thZ2VzIGFuZCBjcmVhdGUgbG9jYWwgcmVwbyBpbiANCj4+IGFkdmFuY2UuIFNvLA0KPj4gK0lz YXIganVzdCB1c2VzIHRoaXMgbG9jYWwgcmVwb3NpdG9yeSBhbmQgZG9lcyBub3QgaW50ZXJhY3Qg d2l0aCANCj4+IGV4dGVybmFsDQo+PiArbWlycm9ycy4gU3VjaCBhcHByb2FjaCBtYWtlcyBkZWIt ZGwgaW1wb3J0L2V4cG9ydCBmdW5jdGlvbmFsaXR5IA0KPj4gcmVkdW5kYW50Lg0KPj4gKw0KPj4g K1NjcmlwdCBgZGVicmVwb2Agd29ya3MgaW4gc28tY2FsbGVkICJjb250ZXh0IiBkaXJlY3Rvcnku IEl0IG1lYW5zIHNvbWUNCj4+ICtyb290ZnMtbGlrZSBkaXJlY3Rvcnkgd2l0aCBiYXJlIG1pbmlt dW0gb2YgZGlyZWN0b3JpZXMvZmlsZXMgDQo+PiByZXF1aXJlZCBmb3INCj4+ICtweXRob24zLWFw dCB0byB3b3JrLg0KPj4gKw0KPj4gK0NvbnRleHQgZGlyZWN0b3J5IHBhdGggaXMgcGFzc2VkIHdp dGggIi0td29ya2RpciA8ZGlyPiIgY29tbWFuZC1saW5lIA0KPj4gb3B0aW9uLg0KPj4gK09uIGNv bnRleHQgY3JlYXRpbmcsIGFsbCBwYXNzZWQgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGluIHRoZSBj b250ZXh0IA0KPj4gZGlyZWN0b3J5DQo+PiArYW5kIHBpY2tlZCBldmVyeSB0aW1lIHRoZSBjb250 ZXh0IGlzIHVzZWQgYWdhaW4uDQo+PiArDQo+PiArMS4gUmVwbyBmb3IgYnVpbGRpbmcgRGViaWFu IHN5c3RlbQ0KPj4gK2BgYA0KPj4gK2RlYnJlcG8gLS13b3JrZGlyPWQxMiAtLWluaXQgbG9jYWxl cyBnbnVwZw0KPj4gK2BgYA0KPj4gK0luaXRpYWxpemUgdGhlIGNvbnRleHQgaW4gImQxMiIgZGly ZWN0b3J5IGFuZCBjcmVhdGUgYSByZXBvc2l0b3J5IGluDQo+PiArImQxMi9yZXBvL2FwdCIgZGly ZWN0b3J5IHN1ZmZpY2llbnQgdG8gZGVib290c3RyYXAgZGVmYXVsdCBzeXN0ZW0NCj4+ICsoZS5n LiwgZGViaWFuLWJvb2t3b3JtLWFtZDY0KS4gQWRkaXRpb25hbGx5LCBwYWNrYWdlcyAibG9jYWxl cyIgYW5kIA0KPj4gImdudXBnIg0KPj4gK3dpdGggYWxsIHRoZWlyIGRlcGVuZGVuY2llcyB3aWxs IGJlIGF2YWlsYWJsZSBpbiB0aGlzIHJlcG8uDQo+PiArDQo+PiArYGBgDQo+PiArZGVicmVwbyAt LXdvcmtkaXI9ZDEyIGRvY2Jvb2stdG8tbWFuDQo+PiArYGBgDQo+PiArQWRkcyAiZG9jYm9vay10 by1tYW4iIHBhY2thZ2VzIHdpdGggaXRzIGRlcGVuZGVuY2llcyB0byBlYXJsaWVyIA0KPj4gY3Jl YXRlZCByZXBvLg0KPj4gKw0KPj4gK2BgYA0KPj4gK2RlYnJlcG8gLS13b3JrZGlyPWQxMiAtLXNy Y21vZGUgZG9jYm9vay10by1tYW4NCj4+ICtgYGANCj4+ICtEb3dubG9hZHMgc291cmNlIHBhY2th Z2UgZm9yICJkb2Nib29rLXRvLW1hbiIgYW5kIGFkZHMgaXQgdG8gdGhlIHJlcG8NCj4+ICsNCj4+ ICsyLiBSZXBvIGZvciBidWlsZGluZyBVYnVudHUgc3lzdGVtDQo+PiArYGBgDQo+PiArZGVicmVw byAtLWluaXQgLS13b3JrZGlyPXVmIFwNCj4+ICstLWRpc3Rybz11YnVudHUgLS1jb2RlbmFtZT1m b2NhbCAtLWFyY2g9YXJtNjQgXA0KPj4gKy0tYXB0c3Jjc2ZpbGU9L3dvcmsvaXNhci9tZXRhLWlz YXIvY29uZi9kaXN0cm8vdWJ1bnR1LWZvY2FsLXBvcnRzLmxpc3QgDQo+PiBcDQo+PiArLS1yZXBv ZGlyPXJlcG8vYXB0IC0tcmVwb2RiZGlyPXJlcG8vZGIgXA0KPj4gKy0tbWlycm9yPWh0dHA6Ly9w b3J0cy51YnVudHUuY29tL3VidW50dS1wb3J0cyBcDQo+PiArbG9jYWxlcyBnbnVwZw0KPj4gK2Bg YA0KPj4gK0luaXRpYWxpemUgdGhlIGNvbnRleHQgaW4gInVmIiBkaXJlY3RvcnkgYW5kIGNyZWF0 ZSBhIHJlcG9zaXRvcnkgaW4gDQo+PiAicmVwby9hcHQiDQo+PiArZGlyZWN0b3J5IHN1ZmZpY2ll bnQgZGVib29zdHJhdXAgdWJ1bnR1LWZvY2FsIGFybTY0IHN5c3RlbS4gTWlycm9yIA0KPj4gdG8g dXNlIGFuZA0KPj4gK3NvdXJjZSBsaXN0IGFyZSBzcGVjaWZpZWQgYnkgY29ycmVzcG9uZGluZyBh cmd1bWVudHMuIFBhY2thZ2VzIA0KPj4gImxvY2FsZXMiIGFuZA0KPj4gKyIgZ251cGciIHdpdGgg dGhlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGFsc28gcGxhY2VkIHRvIHRoZSByZXBvLg0KPj4gKw0K Pj4gK2BgYA0KPj4gK2RlYnJlcG8gLS13b3JrZGlyPXVmIGdudXBnLGxvY2FsZXMNCj4+ICtgYGAN Cj4+ICtBZGQgImdudXBnIiBhbmQgImxvY2FsZXMiIHBhY2thZ2VzIHdpdGggdGhlaXIgZGVwZW5k ZW5jaWVzIHRvIA0KPj4gZWFybGllciBjcmVhdGVkDQo+PiArdWJ1bnR1IHJlcG8uIE90aGVyIHBh cmFtZXRlcnMgKGRpc3RybywgY29kZW5hbWUsIGFyY2gpIGFyZSBvbW1pdGVkIA0KPj4gc2luY2Ug dGhleQ0KPj4gK2FyZSBwaWNrZWQgZnJvbSB0aGUgY29udGV4dC4NCj4+ICsNCj4+ICszLiBSZXBv IGZvciBjcm9zcy1idWlsZGluZyBEZWJpYW4gc3lzdGVtDQo+PiArYGBgDQo+PiArZGVicmVwb8Kg IC0taW5pdCAtLXdvcmtkaXI9ZDExIC0tY29kZW5hbWU9YnVsbHNleWUtLWFyY2g9YW1kNjQgDQo+ PiAtLWNyb3NzYXJjaD1hcm1oZg0KPj4gK2BgYA0KPj4gK0luaXRpYWxpemUgdGhlIGNvbnRleHQg aW4gImQxMSIgZGlyZWN0b3J5IHN1ZmZpY2llbnQgdG8gZGVib29zdHJhcCANCj4+IERlYmlhbg0K Pj4gK0J1bGxzZXllIChhbWQ2NCkgd2l0aCBmb3JlaWduICJhcm1oZiIgYXJjaGl0ZWN0dXJlIHN1 cHBvcnQNCj4+ICsNCj4+ICtgYGANCj4+ICtkZWJyZXBvIC0td29ya2Rpcj1kMTEgZ2NjDQo+PiAr YGBgDQo+PiArQWRkICJnY2MiIHBhY2thZ2UgKGFtZDY0IHZlcnNpb24pIHRvIGVhcmxpZXIgY3Jl YXRlZCByZXBvLg0KPj4gKw0KPj4gK2BgYA0KPj4gK2RlYnJlcG8gLS13b3JrZGlyPWQxMSAtLWNy b3NzYnVpbGQgZ2NjDQo+PiArYGBgDQo+PiArQWRkICJnY2MiIHBhY2thZ2UgKGFybWhmIHZlcnNp b24pIHRvIGVhcmxpZXIgY3JlYXRlZCByZXBvLg0KPj4gKyIiIg0KPj4gKw0KPj4gK2ltcG9ydCBv cw0KPj4gK2ltcG9ydCBzeXMNCj4+ICtpbXBvcnQgZmNudGwNCj4+ICsNCj4+ICtpbXBvcnQgYXJn cGFyc2UNCj4+ICtpbXBvcnQgc2h1dGlsDQo+PiAraW1wb3J0IHN1YnByb2Nlc3MNCj4+ICtpbXBv cnQgcGlja2xlDQo+PiAraW1wb3J0IHVybGxpYi5wYXJzZQ0KPj4gKw0KPj4gK2ltcG9ydCBhcHRf cGtnDQo+PiAraW1wb3J0IGFwdC5wcm9ncmVzcy5iYXNlDQo+PiArDQo+PiArDQo+PiArUkVQUkVQ Uk9fVElNRU9VVCA9IDEyMDANCj4+ICsNCj4+ICsNCj4+ICtjbGFzcyBEZWJSZXBvKG9iamVjdCk6 DQo+PiArwqDCoMKgIGNsYXNzIERlYlJlcG9DdHgob2JqZWN0KToNCj4+ICvCoMKgwqDCoMKgwqDC oCBkZWYgX19pbml0X18oc2VsZiwgd29ya2Rpcik6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzZWxmLmRpc3RybyA9ICJkZWJpYW4iDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxm LmNvZGVuYW1lID0gImJ1bGxzZXllIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5h cmNoID0gImFtZDY0Ig0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5taXJyb3IgPSAi aHR0cDovL2RlYi5kZWJpYW4ub3JnL2RlYmlhbiINCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNlbGYucmVwb2RpciA9IGYie3dvcmtkaXJ9L3JlcG8vYXB0Ig0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc2VsZi5yZXBvZGJkaXIgPSBmInt3b3JrZGlyfS9yZXBvL2RiIg0KPj4g Kw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5jcm9zc2FyY2ggPSBzZWxmLmFyY2gN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuY29tcGF0YXJjaCA9IE5vbmUNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYua2V5ZGlyID0gIi9ldGMvYXB0L3RydXN0ZWQuZ3Bn LmQiDQo+PiArDQo+PiArwqDCoMKgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToNCj4+ICvCoMKg wqDCoMKgwqDCoCBzZWxmLndvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgoYXJncy53b3JrZGlyKQ0K Pj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYuY3R4ID0gc2VsZi5EZWJSZXBvQ3R4KHNlbGYud29ya2Rp cikNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLmNhY2hlID0gTm9uZQ0KPj4gK8KgwqDC oMKgwqDCoMKgIHNlbGYuZGVwY2FjaGUgPSBOb25lDQo+PiArwqDCoMKgwqDCoMKgwqAgc2VsZi5z ciA9IE5vbmUNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLmV4dHJhcmVwbyA9IE5vbmUNCj4+ICsN Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLmN0eF9sb2FkKCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBz ZWxmLmN0eF91cGRhdGUoYXJncykNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLmN0eF9zYXZlKCkN Cj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBwcmludCgNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGYiY3R4IHdvcmtkaXI6wqDCoCB7c2VsZi53b3JrZGlyfVxuIg0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZiLCoCBkaXN0cm86wqDCoMKgwqDCoCB7c2VsZi5jdHguZGlzdHJvfVxuIg0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZiLCoCBjb2RlbmFtZTrCoMKgwqAge3NlbGYuY3R4 LmNvZGVuYW1lfVxuIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZiLCoCBhcmNoOsKgwqDC oMKgwqDCoMKgIHtzZWxmLmN0eC5hcmNofVxuIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZiLCoCBtaXJyb3I6wqDCoMKgwqDCoCB7c2VsZi5jdHgubWlycm9yfVxuIg0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZiLCoCByZXBvZGlyOsKgwqDCoMKgIHtzZWxmLmN0eC5yZXBvZGlyfVxu Ig0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZiLCoCByZXBvZGJkaXI6wqDCoCB7c2VsZi5j dHgucmVwb2RiZGlyfVxuIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZiLCoCBjcm9zc2Fy Y2g6wqDCoCB7c2VsZi5jdHguY3Jvc3NhcmNofVxuIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZiLCoCBjb21wYXRhcmNoOsKgIHtzZWxmLmN0eC5jb21wYXRhcmNofVxuIg0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZiLCoCBrZXlkaXI6wqDCoMKgwqDCoCB7c2VsZi5jdHgua2V5ZGly fSINCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICkNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDC oCBpZiBhcmdzLmV4dHJhcmVwbzoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuZXh0 cmFyZXBvID0gb3MucGF0aC5hYnNwYXRoKGFyZ3MuZXh0cmFyZXBvKQ0KPj4gKw0KPj4gK8KgwqDC oCBkZWYgY3R4X2xvYWQoc2VsZik6DQo+PiArwqDCoMKgwqDCoMKgwqAgY3R4ZmlsZSA9IGYie3Nl bGYud29ya2Rpcn0vZGVicmVwby5jdHgiDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgb3Mu cGF0aC5pc2ZpbGUoY3R4ZmlsZSk6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aXRoIG9w ZW4oY3R4ZmlsZSwgJ3JiJykgYXMgZjoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc2VsZi5jdHggPSBwaWNrbGUubG9hZChmKQ0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgY3R4X3Nh dmUoc2VsZik6DQo+PiArwqDCoMKgwqDCoMKgwqAgY3R4ZmlsZSA9IGYie3NlbGYud29ya2Rpcn0v ZGVicmVwby5jdHgiDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgd2l0aCBvcGVuKGN0eGZpbGUs ICd3YicpIGFzIGY6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaWNrbGUuZHVtcChzZWxm LmN0eCwgZikNCj4+ICsNCj4+ICvCoMKgwqAgZGVmIGN0eF91cGRhdGUoc2VsZiwgYXJncyk6DQo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgYXJncy5kaXN0cm86DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzZWxmLmN0eC5kaXN0cm8gPSBhcmdzLmRpc3Rybw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlm IGFyZ3MuY29kZW5hbWU6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmN0eC5jb2Rl bmFtZSA9IGFyZ3MuY29kZW5hbWUNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBhcmdzLmFyY2g6DQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmN0eC5hcmNoID0gYXJncy5hcmNoDQo+PiAr wqDCoMKgwqDCoMKgwqAgaWYgYXJncy5taXJyb3I6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzZWxmLmN0eC5taXJyb3IgPSBhcmdzLm1pcnJvcg0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKg IGlmIGFyZ3MucmVwb2RpcjoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuY3R4LnJl cG9kaXIgPSBvcy5wYXRoLmFic3BhdGgoYXJncy5yZXBvZGlyKQ0KPj4gK8KgwqDCoMKgwqDCoMKg IGlmIGFyZ3MucmVwb2RiZGlyOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5jdHgu cmVwb2RiZGlyID0gb3MucGF0aC5hYnNwYXRoKGFyZ3MucmVwb2RiZGlyKQ0KPj4gKw0KPj4gK8Kg wqDCoMKgwqDCoMKgIGlmIGFyZ3MuY3Jvc3NhcmNoOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc2VsZi5jdHguY3Jvc3NhcmNoID0gYXJncy5jcm9zc2FyY2gNCj4+ICvCoMKgwqDCoMKgwqDC oCBpZiBhcmdzLmNvbXBhdGFyY2g6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmN0 eC5jb21wYXRhcmNoID0gYXJncy5jb21wYXRhcmNoDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgYXJn cy5rZXlkaXI6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmN0eC5rZXlkaXIgPSBh cmdzLmtleWRpcg0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgY3JlYXRlX3Jvb3RmcyhzZWxmLCBhcHRz cmNzZmlsZSk6DQo+DQo+IEkgd291bGQgY2FsbCBpdCBjcmVhdGVfY29udGV4dF9yb290ZnMgbGlr ZSBpbiB0aGUgZGVzY3JpcHRpb24uDQo+DQo+PiArIG9zLm1ha2VkaXJzKGYie3NlbGYud29ya2Rp cn0vdmFyL2xpYi9kcGtnIiwgZXhpc3Rfb2s9VHJ1ZSkNCj4+ICvCoMKgwqDCoMKgwqDCoCB3aXRo IG9wZW4oZiJ7c2VsZi53b3JrZGlyfS92YXIvbGliL2Rwa2cvc3RhdHVzIiwgInciKToNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhc3MNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBvcy5t YWtlZGlycyhmIntzZWxmLndvcmtkaXJ9L2V0Yy9hcHQvc291cmNlcy5saXN0LmQiLCANCj4+IGV4 aXN0X29rPVRydWUpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgc3JjZmlsZSA9IA0KPj4gZiJ7 c2VsZi53b3JrZGlyfS9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2Jvb3RzdHJhcC5saXN0Ig0KPj4g K8KgwqDCoMKgwqDCoMKgIGlmIGFwdHNyY3NmaWxlIGFuZCBvcy5wYXRoLmV4aXN0cyhhcHRzcmNz ZmlsZSk6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaHV0aWwuY29weShhcHRzcmNzZmls ZSwgc3JjZmlsZSkNCj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlOg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgd2l0aCBvcGVuKHNyY2ZpbGUsICJ3IikgYXMgZjoNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmVwbyA9IGYie3NlbGYuY3R4Lm1pcnJvcn0ge3NlbGYuY3R4LmNv ZGVuYW1lfSBtYWluIg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmLndyaXRl KGYiZGViIHtyZXBvfVxuIikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZi53 cml0ZShmImRlYi1zcmMge3JlcG99XG4iKQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIGRpcl9j YWNoZSA9IA0KPj4gZiIuLi9hcHRfY2FjaGUve3NlbGYuY3R4LmRpc3Ryb30te3NlbGYuY3R4LmNv ZGVuYW1lfSINCj4+ICsgb3MubWFrZWRpcnMoZiJ7c2VsZi53b3JrZGlyfS97ZGlyX2NhY2hlfS9h cmNoaXZlcy9wYXJ0aWFsIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBleGlzdF9vaz1UcnVlKQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIG9zLm1ha2VkaXJz KGYie3NlbGYud29ya2Rpcn0vdG1wIiwgZXhpc3Rfb2s9VHJ1ZSkNCj4+ICsNCj4+ICvCoMKgwqAg ZGVmIGNyZWF0ZV9yZXBvX2Rpc3Qoc2VsZik6DQo+PiArwqDCoMKgwqDCoMKgwqAgY29uZl9kaXIg PSBmIntzZWxmLmN0eC5yZXBvZGlyfS97c2VsZi5jdHguZGlzdHJvfS9jb25mIg0KPj4gK8KgwqDC oMKgwqDCoMKgIG9zLm1ha2VkaXJzKGNvbmZfZGlyLCBleGlzdF9vaz1UcnVlKQ0KPj4gK8KgwqDC oMKgwqDCoMKgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmIntjb25mX2Rpcn0vZGlzdHJpYnV0aW9u cyIpOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2l0aCBvcGVuKGYie2NvbmZfZGlyfS9k aXN0cmlidXRpb25zIiwgInciKSBhcyBmOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmLndyaXRlKGYiQ29kZW5hbWU6IHtzZWxmLmN0eC5jb2RlbmFtZX1cbiIpDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYud3JpdGUoDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkFyY2hpdGVjdHVyZXM6ICINCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiaTM4NiBhcm1oZiBhcm02NCBhbWQ2NCBtaXBz ZWwgcmlzY3Y2NCBzb3VyY2VcbiIpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGYud3JpdGUoIkNvbXBvbmVudHM6IG1haW5cbiIpDQo+PiArDQo+PiArwqDCoMKgIGRlZiBhcHRf Y29uZmlnKHNlbGYsIGluaXQsIGNyb3NzYnVpbGQpOg0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIG5v dCBpbml0IGFuZCBzZWxmLmN0eC5jb21wYXRhcmNoOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXB0X3BrZy5jb25maWdbIkFQVDo6QXJjaGl0ZWN0dXJlczo6Il0gPSANCj4+IHNlbGYuY3R4 LmNvbXBhdGFyY2gNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBub3QgaW5pdCBhbmQgc2Vs Zi5jdHguYXJjaCAhPSBzZWxmLmN0eC5jcm9zc2FyY2g6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhcHRfcGtnLmNvbmZpZ1siQVBUOjpBcmNoaXRlY3R1cmVzOjoiXSA9IHNlbGYuY3R4LmNy b3NzYXJjaA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXB0X3BrZy5jb25maWdbIkFQVDo6 QXJjaGl0ZWN0dXJlczo6Il0gPSBzZWxmLmN0eC5hcmNoDQo+PiArDQo+PiArwqDCoMKgwqDCoMKg wqAgYXB0X3BrZy5jb25maWcuc2V0KCJBUFQ6OkFyY2hpdGVjdHVyZSIsIHNlbGYuY3R4LmFyY2gp DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgYXB0X3BrZy5jb25maWcuc2V0KCJEaXIiLCBzZWxm LndvcmtkaXIpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgZGlyX2NhY2hlID0gDQo+PiBmIi4u L2FwdF9jYWNoZS97c2VsZi5jdHguZGlzdHJvfS17c2VsZi5jdHguY29kZW5hbWV9Ig0KPj4gK8Kg wqDCoMKgwqDCoMKgIGFwdF9wa2cuY29uZmlnLnNldCgiRGlyOjpDYWNoZSIsIGYie3NlbGYud29y a2Rpcn0ve2Rpcl9jYWNoZX0iKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGFwdF9wa2cuY29uZmlnLnNl dCgiRGlyOjpTdGF0ZTo6c3RhdHVzIiwNCj4+ICsgZiJ7c2VsZi53b3JrZGlyfS92YXIvbGliL2Rw a2cvc3RhdHVzIikNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBhcHRfcGtnLmNvbmZpZy5zZXQo IkFQVDo6SW5zdGFsbC1SZWNvbW1lbmRzIiwgIjAiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGFwdF9w a2cuY29uZmlnLnNldCgiQVBUOjpJbnN0YWxsLVN1Z2dlc3RzIiwgIjAiKQ0KPj4gKw0KPj4gK8Kg wqDCoMKgwqDCoMKgICMgVXNlIGhvc3Qga2V5cyBmb3IgYXV0aGVudGlmaWNhdGlvbg0KPj4gK8Kg wqDCoMKgwqDCoMKgIGFwdF9wa2cuY29uZmlnLnNldCgiRGlyOjpFdGM6OlRydXN0ZWRQYXJ0cyIs IHNlbGYuY3R4LmtleWRpcikNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCAjIEFsbG93IHVzaW5n IHJlcG9zaXRvcmllcyB3aXRob3V0IGtleXMNCj4+ICsgYXB0X3BrZy5jb25maWcuc2V0KCJBY3F1 aXJlOjpBbGxvd0luc2VjdXJlUmVwb3NpdG9yaWVzIiwgIjEiKQ0KPj4gKw0KPj4gK8KgwqDCoCBk ZWYgbWFya19lc3NlbnRpYWwoc2VsZik6DQo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIHBrZyBpbiBz ZWxmLmNhY2hlLnBhY2thZ2VzOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgcGtnLmFy Y2hpdGVjdHVyZSA9PSBzZWxmLmN0eC5hcmNoOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiBwa2cuZXNzZW50aWFsOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNlbGYuZGVwY2FjaGUubWFya19pbnN0YWxsKHBrZykNCj4+ICsNCj4+ICvC oMKgwqAgZGVmIG1hcmtfYnlfcHJpbyhzZWxmLCBwcmlvcml0eSk6DQo+PiArwqDCoMKgwqDCoMKg wqAgZm9yIHBrZyBpbiBzZWxmLmNhY2hlLnBhY2thZ2VzOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgcGtnLmFyY2hpdGVjdHVyZSA9PSBzZWxmLmN0eC5hcmNoOg0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2ZXIgPSBzZWxmLmRlcGNhY2hlLmdldF9jYW5kaWRhdGVf dmVyKHBrZykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgdmVyIGFuZCB2 ZXIucHJpb3JpdHkgPD0gcHJpb3JpdHk6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2VsZi5kZXBjYWNoZS5tYXJrX2luc3RhbGwocGtnKQ0KPj4gKw0KPj4gK8Kg wqDCoCBkZWYgbWFya19wa2coc2VsZiwgbmFtZSwgY3Jvc3NidWlsZCk6DQo+PiArwqDCoMKgwqDC oMKgwqAgcGtnbmFtZSA9IG5hbWUNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBwa2duYW1l IGFuZCAocGtnbmFtZSBub3QgaW4gc2VsZi5jYWNoZSk6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAjIFRyeSBmb3IgY3Jvc3MgYXJjaA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KHBrZ25hbWUsIHNlbGYuY3R4LmNyb3NzYXJjaCkgaW4gc2VsZi5jYWNoZToNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGtnbmFtZSArPSBmIjp7c2VsZi5jdHguY3Jvc3NhcmNo fSINCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBwa2duYW1lIG5vdCBpbiBzZWxmLmNhY2hl Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpbnQoZiJFcnJvcjogcGFja2FnZSAne25h bWV9JyBub3QgZm91bmQiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEZhbHNl DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcGtnID0gc2VsZi5jYWNoZVtwa2duYW1lXQ0KPj4g Kw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChub3QgY3Jvc3NidWlsZCkgb3IgKCc6JyBpbiBwa2du YW1lKSBvciAobm90IA0KPj4gcGtnLmhhc192ZXJzaW9ucyk6DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAocGtnLmhhc19wcm92aWRlcykgYW5kIChub3QgcGtnLmhhc192ZXJzaW9ucyk6 DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50KCJwa2duYW1lIGlzIHZp cnR1YWwgcGFja2FnZSwgc2VsZWN0aW5nIGJlc3QgDQo+PiBwcm92aWRlIikNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIyBTZWxlY3QgZmlyc3QgcHJvdmlkZQ0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwa2dfcHJvdmlkZSA9IHBrZy5wcm92aWRlc19saXN0 WzBdWzJdDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMgRmluZCBiZXR0ZXIg cHJvdmlkZSB3aXRoIGhpZ2hlciB2ZXJzaW9uDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGZvciBwcm92aWRlIGluIHBrZy5wcm92aWRlc19saXN0Og0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIGFwdF9wa2cudmVyc2lvbl9jb21wYXJlKHBy b3ZpZGVbMl0udmVyX3N0ciwNCj4+ICsgcGtnX3Byb3ZpZGUudmVyX3N0cikgPiAwOg0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGtnX3Byb3ZpZGUg PSBwcm92aWRlWzJdDQo+PiArIHNlbGYuZGVwY2FjaGUubWFya19pbnN0YWxsKHBrZ19wcm92aWRl LnBhcmVudF9wa2cpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlOg0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmRlcGNhY2hlLm1hcmtfaW5zdGFsbChwa2cp DQo+PiArwqDCoMKgwqDCoMKgwqAgZWxzZToNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZl cnNpb24gPSBwa2cudmVyc2lvbl9saXN0WzBdDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiB2ZXJzaW9uLmFyY2ggPT0gImFsbCI6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNlbGYuZGVwY2FjaGUubWFya19pbnN0YWxsKHBrZykNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGVsc2U6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHZlcnNp b24ubXVsdGlfYXJjaCA9PSB2ZXJzaW9uLk1VTFRJX0FSQ0hfRk9SRUlHTjoNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocGtnbmFtZSwgc2VsZi5jdHguYXJj aCkgaW4gc2VsZi5jYWNoZToNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG5hdGl2ZXBrZyA9IHNlbGYuY2FjaGVbcGtnbmFtZSwgc2VsZi5jdHguYXJj aF0NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNl bGYuZGVwY2FjaGUubWFya19pbnN0YWxsKG5hdGl2ZXBrZykNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEZhbHNlDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGVsc2U6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKHBrZ25hbWUsIHNlbGYuY3R4LmNyb3NzYXJjaCkgaW4gc2VsZi5jYWNoZToN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyb3Nz cGtnID0gc2VsZi5jYWNoZVtwa2duYW1lLCANCj4+IHNlbGYuY3R4LmNyb3NzYXJjaF0NCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuZGVwY2Fj aGUubWFya19pbnN0YWxsKGNyb3NzcGtnKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGVsc2U6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gRmFsc2UNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gVHJ1ZQ0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgbWFya19saXN0KHNlbGYsIHBrZ2xpc3QsIGNy b3NzYnVpbGQpOg0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IFRydWUNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiBwa2dsaXN0Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIHBrZ25hbWUg aW4gcGtnbGlzdDoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmV0 IGFuZCBzZWxmLm1hcmtfcGtnKHBrZ25hbWUsIGNyb3NzYnVpbGQpDQo+PiArDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldA0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgaGFuZGxlX2RlYihzZWxm LCBpdGVtKToNCj4+ICvCoMKgwqDCoMKgwqDCoCBmZCA9IG9wZW4oZiJ7c2VsZi5jdHgucmVwb2Rp cn0vcmVwby5sb2NrIiwgJ3cnKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGZjbnRsLmZsb2NrKGZkLCBm Y250bC5MT0NLX0VYKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHN1YnByb2Nlc3MucnVuKFsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJyZXByZXBybyIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiLS1kYmRpciIsIGYie3NlbGYuY3R4LnJlcG9kYmRpcn0ve3NlbGYuY3R4LmRpc3Ryb30i LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi0tb3V0ZGlyIiwgZiJ7c2VsZi5jdHgucmVw b2Rpcn0ve3NlbGYuY3R4LmRpc3Ryb30iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi0t Y29uZmRpciIsIGYie3NlbGYuY3R4LnJlcG9kaXJ9L3tzZWxmLmN0eC5kaXN0cm99L2NvbmYiLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi1DIiwgIm1haW4iLA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgImluY2x1ZGVkZWIiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2Vs Zi5jdHguY29kZW5hbWUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpdGVtLmRlc3RmaWxl DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBdLCB0aW1lb3V0PVJFUFJFUFJPX1RJTUVPVVQp DQo+PiArwqDCoMKgwqDCoMKgwqAgZmQuY2xvc2UoKQ0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgaGFu ZGxlX3JlcG8oc2VsZiwgZmV0Y2hlcik6DQo+PiArwqDCoMKgwqDCoMKgwqAgZGlyX2NhY2hlID0g DQo+PiBmIi4uL2FwdF9jYWNoZS97c2VsZi5jdHguZGlzdHJvfS17c2VsZi5jdHguY29kZW5hbWV9 Ig0KPj4gK8KgwqDCoMKgwqDCoMKgIGZkID0gb3BlbihmIntzZWxmLndvcmtkaXJ9L3tkaXJfY2Fj aGV9LmxvY2siLCAidyIpDQo+PiArwqDCoMKgwqDCoMKgwqAgZmNudGwuZmxvY2soZmQsIGZjbnRs LkxPQ0tfRVgpDQo+PiArwqDCoMKgwqDCoMKgwqAgZmV0Y2hlci5ydW4oKQ0KPj4gK8KgwqDCoMKg wqDCoMKgIGZkLmNsb3NlKCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgaXRlbSBpbiBmZXRjaGVy Lml0ZW1zOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgaXRlbS5zdGF0dXMgPT0gaXRl bS5TVEFUX0VSUk9SOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludCgi U29tZSBlcnJvciBvY3VyZWQ6ICclcyciICUgaXRlbS5lcnJvcl90ZXh0KQ0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXNzDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bHNlOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmhhbmRsZV9kZWIo aXRlbSkNCj4+ICsNCj4+ICvCoMKgwqAgZGVmIGdldF9maWxlbmFtZShzZWxmLCB1cmkpOg0KPj4g K8KgwqDCoMKgwqDCoMKgIHBhdGggPSB1cmxsaWIucGFyc2UudXJscGFyc2UodXJpKS5wYXRoDQo+ PiArwqDCoMKgwqDCoMKgwqAgdW5xdW90ZWRfcGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBh dGgpDQo+PiArwqDCoMKgwqDCoMKgwqAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHVucXVv dGVkX3BhdGgpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGJhc2VuYW1lDQo+PiArDQo+PiAr wqDCoMKgIGRlZiBmZXRjaF9maWxlKHNlbGYsIHVyaSk6DQo+PiArwqDCoMKgwqDCoMKgwqAgZmls ZW5hbWUgPSBzZWxmLmdldF9maWxlbmFtZSh1cmkpDQo+PiArwqDCoMKgwqDCoMKgwqAgc3VicHJv Y2Vzcy5ydW4oWw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIndnZXQiLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIi1IIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItLXRp bWVvdXQ9MzAiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi0tdHJpZXM9MyIsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiLW52IiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVyaSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItTyIsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmIntzZWxmLndvcmtkaXJ9L3RtcC97ZmlsZW5hbWV9Ig0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0ZG91dD1zdWJw cm9jZXNzLlBJUEUpDQo+DQo+IFRoaXMgYWRkcyB0aGUgbmV3IGRlcGVuZGVuY3kgd2dldC4NCj4N Cj4gUGxlYXNlIGFkZCB0byB0aGUgdXNlcl9tYW51YWwubWQNCj4gUXVpcmluDQo+DQo+PiArDQo+ PiArwqDCoMKgIGRlZiBoYW5kbGVfZHNjKHNlbGYsIHVyaSk6DQo+PiArwqDCoMKgwqDCoMKgwqAg ZmlsZW5hbWUgPSBzZWxmLmdldF9maWxlbmFtZSh1cmkpDQo+PiArwqDCoMKgwqDCoMKgwqAgZmQg PSBvcGVuKGYie3NlbGYuY3R4LnJlcG9kaXJ9L3JlcG8ubG9jayIsICd3JykNCj4+ICvCoMKgwqDC oMKgwqDCoCBmY250bC5mbG9jayhmZCwgZmNudGwuTE9DS19FWCkNCj4+ICvCoMKgwqDCoMKgwqDC oCBzdWJwcm9jZXNzLnJ1bihbDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAicmVwcmVwcm8i LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi0tZGJkaXIiLCBmIntzZWxmLmN0eC5yZXBv ZGJkaXJ9L3tzZWxmLmN0eC5kaXN0cm99IiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIt LW91dGRpciIsIGYie3NlbGYuY3R4LnJlcG9kaXJ9L3tzZWxmLmN0eC5kaXN0cm99IiwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICItLWNvbmZkaXIiLCBmIntzZWxmLmN0eC5yZXBvZGlyfS97 c2VsZi5jdHguZGlzdHJvfS9jb25mIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItQyIs ICJtYWluIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItUyIsICItIiwgIi1QIiAic291 cmNlIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItLWRlbGV0ZSIsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiaW5jbHVkZWRzYyIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzZWxmLmN0eC5jb2RlbmFtZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9zLnBhdGgu cmVhbHBhdGgoZiJ7c2VsZi53b3JrZGlyfS90bXAve2ZpbGVuYW1lfSIpDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBdLCB0aW1lb3V0PVJFUFJFUFJPX1RJTUVPVVQpDQo+PiArwqDCoMKgwqDC oMKgwqAgZmQuY2xvc2UoKQ0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgaGFuZGxlX3NyY19saXN0KHNl bGYsIHBrZ3MpOg0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIHBrZ3M6DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmZXRjaGVkX2ZpbGVzID0gW10NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciBwa2cgaW4gcGtnczoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGtn bmFtZSA9IHBrZw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwa2d2ZXIgPSAi Ig0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAnPScgaW4gcGtnOg0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBrZ25hbWUgPSBwa2cuc3Bs aXQoIj0iKVswXQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBr Z3ZlciA9IHBrZy5zcGxpdCgiPSIpWzFdDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNlbGYuc3IucmVzdGFydCgpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHdoaWxlIHNlbGYuc3IubG9va3VwKHBrZ25hbWUpOg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHBrZ3ZlciBhbmQgcGtndmVyICE9IHNlbGYuc3Iu dmVyc2lvbjoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnRpbnVlDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZm9yIHNyX2ZpbGUgaW4gc2VsZi5zci5maWxlczoNCj4+ICsgcHJpbnQoc2VsZi5zci5p bmRleC5hcmNoaXZlX3VyaShzcl9maWxlWzJdKSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzcl9m aWxlLnBhdGgpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiBmaWxlbmFtZSBub3QgaW4gZmV0Y2hlZF9maWxlczoNCj4+ICsgc2VsZi5mZXRjaF9m aWxlKHNlbGYuc3IuaW5kZXguYXJjaGl2ZV91cmkoc3JfZmlsZVsyXSkpDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZldGNoZWRfZmls ZXMuYXBwZW5kKGZpbGVuYW1lKQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRzY191cmkgPSANCj4+IHNlbGYuc3IuaW5kZXguYXJjaGl2ZV91cmkoc2Vs Zi5zci5maWxlc1swXVsyXSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzZWxmLmhhbmRsZV9kc2MoZHNjX3VyaSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhaw0KPj4gKw0KPj4gK8KgwqDCoCBkZWYgYXB0X3J1bihzZWxm LCBpbml0LCBzcmNtb2RlLCBwa2dzLCBkc2NmaWxlLCBjcm9zc2J1aWxkKToNCj4+ICvCoMKgwqDC oMKgwqDCoCBhcHRfcGtnLmluaXQoKQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIGV4dHJhcmVw b19saXN0ID0gDQo+PiBmIntzZWxmLndvcmtkaXJ9L2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZXh0 cmFyZXBvLmxpc3QiIA0KPg0KPiBXaGF0IGhhcHBlbiBpZiBkZWI4MjIgaXMgbWFuZGF0b3J5Pw0K Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIHNlbGYuZXh0cmFyZXBvOg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZXh0cmFyZXBvX2xpc3QgPSANCj4+IGYie3NlbGYud29ya2Rpcn0vZXRjL2FwdC9z b3VyY2VzLmxpc3QuZC9leHRyYXJlcG8ubGlzdCINCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHdpdGggb3BlbihleHRyYXJlcG9fbGlzdCwgInciKSBhcyBmOg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkaXN0ZGlyPW9zLnBhdGguam9pbihzZWxmLmV4dHJhcmVwbywgImRp c3RzIikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgb3MucGF0aC5pc2Rp cihkaXN0ZGlyKToNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm b3IgZGlzdCBpbiBvcy5saXN0ZGlyKGRpc3RkaXIpOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVwb2RpciA9IG9zLnBhdGguam9pbihkaXN0ZGly LGRpc3QpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiBvcy5wYXRoLmlzZGlyKHJlcG9kaXIpOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgcmVwbyBpbiBvcy5saXN0ZGlyKHJl cG9kaXIpOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIA0KPj4gb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocmVw b2RpciwgcmVwbykpOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZi53cml0ZShmImRlYiANCj4+IGZpbGU6 Ly97c2VsZi5leHRyYXJlcG99ICINCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm IntkaXN0fSB7cmVwb31cbiIpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgc291cmNlcyA9IGFw dF9wa2cuU291cmNlTGlzdCgpDQo+PiArwqDCoMKgwqDCoMKgwqAgc291cmNlcy5yZWFkX21haW5f bGlzdCgpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcHJvZ3Jlc3MgPSBhcHQucHJvZ3Jlc3Mu dGV4dC5BY3F1aXJlUHJvZ3Jlc3MoKQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYuY2Fj aGUgPSBhcHRfcGtnLkNhY2hlKCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBpbml0Og0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5jYWNoZS51cGRhdGUocHJvZ3Jlc3MsIHNvdXJjZXMp DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWxmLmNhY2hlID0gYXB0X3BrZy5DYWNoZSgp DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgc2VsZi5leHRyYXJlcG86DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhcHRfcGtnLmNvbmZpZy5zZXQoIkRpcjo6RXRjOjpTb3VyY2VMaXN0 IiwgZXh0cmFyZXBvX2xpc3QpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcHRfcGtnLmNv bmZpZy5zZXQoIkFQVDo6R2V0OjpMaXN0LUNsZWFudXAiLCAiMCIpDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzZWxmLmNhY2hlLnVwZGF0ZShwcm9ncmVzcywgc291cmNlcykNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuY2FjaGUgPSBhcHRfcGtnLkNhY2hlKCkNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG9zLnJlbW92ZShleHRyYXJlcG9fbGlzdCkNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoCBzZWxmLmRlcGNhY2hlID0gYXB0X3BrZy5EZXBDYWNoZShzZWxmLmNhY2hl KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYuc3IgPSBhcHRfcGtnLlNvdXJjZVJlY29yZHMoKQ0K Pj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IFRydWUNCj4+ICsNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiBpbml0Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5tYXJrX2Vzc2Vu dGlhbCgpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjIDEocmVxdWlyZWQpLCAyKGltcG9y dGFudCksIDMoc3RhbmRhcmQpLCA0KG9wdGlvbmFsKSwgDQo+PiA1KGV4dHJhKQ0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5tYXJrX2J5X3ByaW8oMSkNCj4+ICsNCj4+ICvCoMKgwqDC oMKgwqDCoCBwa2dzID0gbGlzdChmaWx0ZXIoTm9uZSwgJywnLmpvaW4ocGtncykuc3BsaXQoJywn KSkpDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgc3JjbW9kZToNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNlbGYuaGFuZGxlX3NyY19saXN0KHNldChwa2dzKSkNCj4+ICvCoMKgwqDCoMKgwqDC oCBlbHNlOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gc2VsZi5tYXJrX2xpc3Qo cGtncywgY3Jvc3NidWlsZCkNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBkc2NmaWxlOg0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9iaiA9IG9wZW4oZHNjZmlsZSwgInIiKQ0KPj4g Kw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHJ5Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB0YWdmaWxlID0gYXB0X3BrZy5UYWdGaWxlKGZvYmopDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlIHRhZ2ZpbGUuc3RlcCgpID09IDE6DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVwcyA9IHRhZ2ZpbGUuc2Vj dGlvbi5nZXQoIkJ1aWxkLURlcGVuZHMiLCAiIikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAjIFJlbW92ZSBleHRyYSBjb21tYXMgYW5kIHNwYWNlcyAtIA0KPj4g YXB0X3BrZy5wYXJzZV9zcmNfZGVwZW5kcw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICMgZG9lc250IGxpa2UgbGluZXMgbGlrZSAiLCBkZXZpY2UtdHJlZS1jb21w aWxlciINCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXBzID0g JywgJy5qb2luKA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgW3Muc3RyaXAoKSBmb3IgcyBpbiBkZXBzLnNwbGl0KCcsJykgaWYgDQo+PiBzLnN0cmlw KCldDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAp DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpbnQoZiJwYXJz ZWQgZGVwczoge2RlcHN9IikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmb3IgaXRlbSBpbiBhcHRfcGtnLnBhcnNlX3NyY19kZXBlbmRzKGRlcHMsIEZhbHNlKToN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBrZ25h bWUgPSBpdGVtWzBdWzBdDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzZWxmLm1hcmtfcGtnKHBrZ25hbWUsIGNyb3NzYnVpbGQpDQo+PiArDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmaW5hbGx5Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmb2JqLmNsb3NlKCkNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBub3Qg cmV0Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3lzLmV4aXQoIlNvbWUgb2YgcmVxdWVz dGVkIHBhY2thZ2VzIG5vdCBmb3VuZCIpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgaW5p dCBvciBub3Qgc3JjbW9kZToNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZldGNoZXIgPSBh cHRfcGtnLkFjcXVpcmUocHJvZ3Jlc3MpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbSA9 IGFwdF9wa2cuUGFja2FnZU1hbmFnZXIoc2VsZi5kZXBjYWNoZSkNCj4+ICsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlY3MgPSBhcHRfcGtnLlBhY2thZ2VSZWNvcmRzKHNlbGYuY2FjaGUp DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbS5nZXRfYXJjaGl2ZXMoZmV0Y2hlciwgc291 cmNlcywgcmVjcykNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuaGFuZGxl X3JlcG8oZmV0Y2hlcikNCj4+ICsNCj4+ICsNCj4+ICtkZWYgcGFyc2VfYXJndW1lbnRzKCk6DQo+ PiArwqDCoMKgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkNCj4+ICvCoMKgwqAg cGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKgwqDCoCAiLS1pbml0IiwNCj4+ICvC oMKgwqDCoMKgwqDCoCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLA0KPj4gK8Kg wqDCoMKgwqDCoMKgIGhlbHA9ImluaXRpYWxpemUgY29udGV4dCBpbiBXT1JLRElSIikNCj4+ICvC oMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKgwqDCoCAiLS13b3JrZGly IiwNCj4+ICvCoMKgwqDCoMKgwqDCoCB0eXBlPXN0ciwgcmVxdWlyZWQ9VHJ1ZSwNCj4+ICvCoMKg wqDCoMKgwqDCoCBoZWxwPSJ3b3JrIGRpcmVjdG9yeSBzdG9yaW5nIGRlYnJlcG8gY29udGV4dCIp DQo+PiArwqDCoMKgIHBhcnNlci5hZGRfYXJndW1lbnQoDQo+PiArwqDCoMKgwqDCoMKgwqAgIi0t YXB0c3Jjc2ZpbGUiLA0KPj4gK8KgwqDCoMKgwqDCoMKgIHR5cGU9c3RyLCBtZXRhdmFyPSJQQVRI IiwNCj4+ICvCoMKgwqDCoMKgwqDCoCBoZWxwPSJzb3VyY2VzLmxpc3QgZmlsZSB0byB1c2Ugd2hl biBpbml0IikNCj4+ICvCoMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKg wqDCoCAiLS1zcmNtb2RlIiwNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZWZhdWx0PUZhbHNlLCBhY3Rp b249InN0b3JlX3RydWUiLA0KPj4gK8KgwqDCoMKgwqDCoMKgIGhlbHA9ImFkZCBzb3VyY2UgcGFj a2FnZXMgaW5zdGVhZCBvZiBkZWJzIikNCj4+ICvCoMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgN Cj4+ICvCoMKgwqDCoMKgwqDCoCAiLS1yZXBvZGlyIiwNCj4+ICvCoMKgwqDCoMKgwqDCoCB0eXBl PXN0ciwgbWV0YXZhcj0iUkVQTyIsDQo+PiArwqDCoMKgwqDCoMKgwqAgaGVscD0icmVwb3NpdG9y eSBkaXJlY3RvcnkiKQ0KPj4gK8KgwqDCoCBwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPj4gK8KgwqDC oMKgwqDCoMKgICItLXJlcG9kYmRpciIsDQo+PiArwqDCoMKgwqDCoMKgwqAgdHlwZT1zdHIsIG1l dGF2YXI9IlJFUE9EQiIsDQo+PiArwqDCoMKgwqDCoMKgwqAgaGVscD0icmVwb3NpdG9yeSBkYXRh YmFzZSBkaXJlY3RvcnkiKQ0KPj4gK8KgwqDCoCBwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPj4gK8Kg wqDCoMKgwqDCoMKgICItLWV4dHJhcmVwbyIsDQo+PiArwqDCoMKgwqDCoMKgwqAgdHlwZT1zdHIs IG1ldGF2YXI9IlJFUE8iLA0KPj4gK8KgwqDCoMKgwqDCoMKgIGhlbHA9ImV4dHJhIHJlcG9zaXRv cnkgdG8gY29uc2lkZXIiKQ0KPj4gK8KgwqDCoCBwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPj4gK8Kg wqDCoMKgwqDCoMKgICItLW1pcnJvciIsDQo+PiArwqDCoMKgwqDCoMKgwqAgdHlwZT1zdHIsDQo+ PiArwqDCoMKgwqDCoMKgwqAgaGVscD0idXNlIGN1c3RvbSBkaXN0cm8gbWlycm9yIikNCj4+ICvC oMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKgwqDCoCAiLS1kaXN0cm8i LA0KPj4gK8KgwqDCoMKgwqDCoMKgIHR5cGU9c3RyLA0KPj4gK8KgwqDCoMKgwqDCoMKgIGhlbHA9 InNlbGVjdCBkaXN0cm8gdG8gdXNlIikNCj4+ICvCoMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgN Cj4+ICvCoMKgwqDCoMKgwqDCoCAiLS1jb2RlbmFtZSIsDQo+PiArwqDCoMKgwqDCoMKgwqAgdHlw ZT1zdHIsDQo+PiArwqDCoMKgwqDCoMKgwqAgaGVscD0iZGlzdHJvIGNvZGVuYW1lIikNCj4+ICvC oMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKgwqDCoCAiLS1hcmNoIiwN Cj4+ICvCoMKgwqDCoMKgwqDCoCB0eXBlPXN0ciwNCj4+ICvCoMKgwqDCoMKgwqDCoCBoZWxwPSJk aXN0cm8gYXJjaCIpDQo+PiArwqDCoMKgIHBhcnNlci5hZGRfYXJndW1lbnQoDQo+PiArwqDCoMKg wqDCoMKgwqAgIi0tY29tcGF0YXJjaCIsDQo+PiArwqDCoMKgwqDCoMKgwqAgdHlwZT1zdHIsIG1l dGF2YXI9IkFSQ0giLA0KPj4gK8KgwqDCoMKgwqDCoMKgIGhlbHA9ImNvbXBhdCBhcmNoIHRvIHVz ZSIpDQo+PiArwqDCoMKgIHBhcnNlci5hZGRfYXJndW1lbnQoDQo+PiArwqDCoMKgwqDCoMKgwqAg Ii0tY3Jvc3NhcmNoIiwNCj4+ICvCoMKgwqDCoMKgwqDCoCB0eXBlPXN0ciwgbWV0YXZhcj0iQVJD SCIsDQo+PiArwqDCoMKgwqDCoMKgwqAgaGVscD0iY3Jvc3MtYnVpbGQgYXJjaCIpDQo+PiArwqDC oMKgIHBhcnNlci5hZGRfYXJndW1lbnQoDQo+PiArwqDCoMKgwqDCoMKgwqAgIi0ta2V5ZGlyIiwN Cj4+ICvCoMKgwqDCoMKgwqDCoCB0eXBlPXN0ciwNCj4+ICvCoMKgwqDCoMKgwqDCoCBoZWxwPSJk aXJlY3Rvcnkgd2l0aCBkaXN0cm8ga2V5cyIpDQo+PiArwqDCoMKgIHBhcnNlci5hZGRfYXJndW1l bnQoDQo+PiArwqDCoMKgwqDCoMKgwqAgIi0tbm8tY2hlY2stZ3BnIiwNCj4+ICvCoMKgwqDCoMKg wqDCoCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLA0KPj4gK8KgwqDCoMKgwqDC oMKgIGhlbHA9ImFsbG93IGluc2VjdXJlIHJlcG9zaXRvcmllcyIpDQo+PiArwqDCoMKgIHBhcnNl ci5hZGRfYXJndW1lbnQoDQo+PiArwqDCoMKgwqDCoMKgwqAgIi0tZHNjZmlsZSIsDQo+PiArwqDC oMKgwqDCoMKgwqAgdHlwZT1zdHIsIG1ldGF2YXI9IlBBVEgiLA0KPj4gK8KgwqDCoMKgwqDCoMKg IGhlbHA9IkRlYmlhbiBzb3VyY2UgZmlsZSB0byBwYXJzZSIpDQo+PiArwqDCoMKgIHBhcnNlci5h ZGRfYXJndW1lbnQoDQo+PiArwqDCoMKgwqDCoMKgwqAgIi0tY3Jvc3NidWlsZCIsDQo+PiArwqDC oMKgwqDCoMKgwqAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSJzdG9yZV90cnVlIiwNCj4+ICvCoMKg wqDCoMKgwqDCoCBoZWxwPSJhZGQgcGFja2FnZXMgd2l0aCBjcm9zcyBhcmNoIikNCj4+ICsNCj4+ ICvCoMKgwqAgcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4+ICvCoMKgwqDCoMKgwqDCoCAicGFja2Fn ZXMiLA0KPj4gK8KgwqDCoMKgwqDCoMKgIG5hcmdzPScqJywgdHlwZT1zdHIsDQo+PiArwqDCoMKg wqDCoMKgwqAgaGVscD0ic3BhY2UtIG9yIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHBhY2thZ2Vz IHRvIGFkZCIpDQo+PiArDQo+PiArwqDCoMKgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpDQo+ PiArDQo+PiArwqDCoMKgIHJldHVybiBhcmdzDQo+PiArDQo+PiArDQo+PiArZGVmIG1haW4oKToN Cj4+ICvCoMKgwqAgYXJncyA9IHBhcnNlX2FyZ3VtZW50cygpDQo+PiArDQo+PiArwqDCoMKgIGlm IG5vdCAoYXJncy5pbml0IG9yIGFyZ3MucGFja2FnZXMgb3IgYXJncy5kc2NmaWxlKToNCj4+ICvC oMKgwqDCoMKgwqDCoCBzeXMuZXhpdCgiTm90aGluZyB0byBkbyIpDQo+PiArDQo+PiArwqDCoMKg IHdvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgoYXJncy53b3JrZGlyKQ0KPj4gK8KgwqDCoCBvcy5t YWtlZGlycyh3b3JrZGlyLCBleGlzdF9vaz1UcnVlKQ0KPj4gKw0KPj4gK8KgwqDCoCB3aXRoIG9w ZW4oZiJ7d29ya2Rpcn0vZGVicmVwby5sb2NrIiwgImEiKSBhcyBmaWxlOg0KPj4gK8KgwqDCoMKg wqDCoMKgIGZjbnRsLmZsb2NrKGZpbGUuZmlsZW5vKCksIGZjbnRsLkxPQ0tfRVgpDQo+PiArDQo+ PiArwqDCoMKgwqDCoMKgwqAgZGVicmVwbyA9IERlYlJlcG8oYXJncykNCj4+ICsNCj4+ICvCoMKg wqDCoMKgwqDCoCBpZiBhcmdzLmluaXQ6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWJy ZXBvLmNyZWF0ZV9yb290ZnMoYXJncy5hcHRzcmNzZmlsZSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRlYnJlcG8uY3JlYXRlX3JlcG9fZGlzdCgpDQo+PiArDQo+PiArwqDCoMKgwqDCoMKg wqAgZGVicmVwby5hcHRfY29uZmlnKGFyZ3MuaW5pdCwgYXJncy5jcm9zc2J1aWxkKQ0KPj4gK8Kg wqDCoMKgwqDCoMKgIGRlYnJlcG8uYXB0X3J1bihhcmdzLmluaXQsIGFyZ3Muc3JjbW9kZSwgYXJn cy5wYWNrYWdlcywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGFyZ3MuZHNjZmlsZSwgYXJncy5jcm9zc2J1aWxkKQ0KPj4gKw0KPj4gK8KgwqDCoMKg wqDCoMKgICNVbmxvY2sgZGVicmVwbyBjb250ZXh0DQo+PiArwqDCoMKgwqDCoMKgwqAgZmNudGwu ZmxvY2soZmlsZS5maWxlbm8oKSwgZmNudGwuTE9DS19VTikNCj4+ICsNCj4+ICsNCj4+ICtpZiBf X25hbWVfXyA9PSAiX19tYWluX18iOg0KPj4gK8KgwqDCoCBtYWluKCkNCj4NCg0KLS0gCllvdSBy ZWNlaXZlZCB0aGlzIG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIEdv b2dsZSBHcm91cHMgImlzYXItdXNlcnMiIGdyb3VwLgpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMg Z3JvdXAgYW5kIHN0b3AgcmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVtYWlsIHRv IGlzYXItdXNlcnMrdW5zdWJzY3JpYmVAZ29vZ2xlZ3JvdXBzLmNvbS4KVG8gdmlldyB0aGlzIGRp c2N1c3Npb24gdmlzaXQgaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL21zZ2lkL2lzYXItdXNl cnMvNmZlNDA2Y2YtMzhmZS00ZGIxLWI1ZTItMjhjNzEwMzk4MzBlJTQwaWxiZXJzLmRlLgo=