From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 35B7E1FF17E for ; Thu, 13 Nov 2025 13:16:05 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5C3281A5FC; Thu, 13 Nov 2025 13:16:59 +0100 (CET) From: Lukas Wagner To: pdm-devel@lists.proxmox.com Date: Thu, 13 Nov 2025 13:16:37 +0100 Message-ID: <20251113121644.236005-5-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251113121644.236005-1-l.wagner@proxmox.com> References: <20251113121644.236005-1-l.wagner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763036185343 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.030 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pdm-devel] [PATCH datacenter-manager v5 04/11] views: add implementation for view resource filtering X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" VGhpcyBjb21taXQgYWRkcyB0aGUgcmVzb3VyY2UgZmlsdGVyIGltcGxlbWVudGF0aW9uIGZvciB0 aGUgcHJldmlvdXNseQpkZWZpbmVkIFZpZXdDb25maWcgdHlwZS4KClRoZXJlIGFyZSBpbmNsdWRl L2V4Y2x1ZGUgcnVsZXMgZm9yIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAtIChnbG9iYWwp IHJlc291cmNlLWlkCiAgLSByZXNvdXJjZSBwb29sCiAgLSByZXNvdXJjZSB0eXBlCiAgLSByZW1v dGUKICAtIHRhZ3MKClRoZSBydWxlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgZm9sbG93czoKLSBubyBy dWxlczogZXZlcnl0aGluZyBtYXRjaGVzCi0gb25seSBpbmNsdWRlczogaW5jbHVkZWQgcmVzb3Vy Y2VzIG1hdGNoCi0gb25seSBleGNsdWRlZDogZXZlcnl0aGluZyAqYnV0KiB0aGUgZXhjbHVkZWQg cmVzb3VyY2VzIG1hdGNoCi0gaW5jbHVkZSBhbmQgZXhjbHVkZTogZXhjbHVkZXMgYXJlIGFwcGxp ZWQgKmFmdGVyKiBpbmNsdWRlcywgbWVhbmluZyBpZgogIG9uZSBoYXMgYSBgaW5jbHVkZS1yZW1v dGUgZm9vYCBhbmQgYGV4Y2x1ZGUtcmVtb3RlIGZvb2AgYXQgdGhlIHNhbWUKICB0aW1lLCB0aGUg cmVtb3RlIGBmb29gIHdpbGwgbmV2ZXIgbWF0Y2gKClNvbWUgZXhwZXJpbWVudHMgd2VyZSBwZXJm b3JtZWQgd2l0aCBhIGNhY2hlIHRoYXQgd29ya3Mgcm91Z2hseSBhcyBmb2xsb3dpbmc6CiAgLSBI YXNoTWFwPFZpZXdJZCwgSGFzaE1hcDxSZXNvdXJjZUlkLCBib29sPj4gaW4gYSBtdXRleAogIC0g Q2FjaGUgaW52YWxpZGF0ZWQgaWYgdmlldyBjb25maWcgZGlnZXN0IGNoYW5nZWQKICAtIENhY2hl IGludmFsaWRhdGVkIGlmIGNlcnRhaW4gcmVzb3VyY2UgZmllbGRzIHN1Y2ggYXMgdGFncyBvciBy ZXNvdXJjZSBwb29scyBjaGFuZ2UKICAgIGZyb20gdGhlIGxhc3QgdGltZSAoYWxzbyB3aXRoIGEg ZGlnZXN0LWJhc2VkIGltcGxlbWVudGF0aW9uKQoKRXhwZXJpbWVudGVkIHdpdGggdGhlIGBmYWtl LXJlbW90ZWAgZmVhdHVyZSBhbmQgYW5kIDE1MDAwIGd1ZXN0cyBzaG93ZWQKdGhhdCBjYWNoaW5n IHdhcyBvbmx5IGZhc3RlciB0aGFuIGRpcmVjdCBldmFsdWF0aW9uIGlmIHRoZSBudW1iZXIgb2YK cnVsZXMgaW4gdGhlIFZpZXdDb25maWcgaXMgKmh1Z2UqIChlLmcuID4xMDAwIGBpbmNsdWRlLXJl c291cmNlLWlkYAplbnRyaWVzKS4gQnV0IGV2ZW4gZm9yIHRob3NlLCBkaXJlY3QgZXZhbHVhdGlv biB3YXMgYWx3YXlzIHBsZW50eSBmYXN0LAp3aXRoIGV2YWx1YXRpb24gdGltZXMgfjIwbXMgZm9y ICphbGwqIHJlc291cmNlcy4KCi0+IGZvciBhbnkgKnJlYWxpc3RpYyogdmlldyBjb25maWcsIHdl IHNob3VsZCBiZSBnb29kIHdpdGggZGlyZWN0CmV2YWx1YXRpb24sIGFzIGxvbmcgYXMgd2UgZG9u J3QgYWRkIGFueSBmaWx0ZXIgcnVsZXMgd2hpY2ggYXJlIHZlcnkKZXhwZW5zaXZlIHRvIGV2YWx1 YXRlLgoKU2lnbmVkLW9mZi1ieTogTHVrYXMgV2FnbmVyIDxsLndhZ25lckBwcm94bW94LmNvbT4K UmV2aWV3ZWQtYnk6IE1pY2hhZWwgS8O2cHBsIDxtLmtvZXBwbEBwcm94bW94LmNvbT4KLS0tCgpO b3RlczoKICAgIENoYW5nZXMgc2luY2UgdjI6CiAgICAgIC0gYWRkIGlzX3JlbW90ZV9leHBsaWNp dGx5X2luY2x1ZGVkIGhlbHBlcgogICAgICAtIG1lcmdlIGNvbW1pdCB0aGF0IGFkZGVkIHRlc3Rz IGludG8gdGhpcyBvbmUKICAgICAgLSBzaW1wbHkgYGNoZWNrX3J1bGVzYCB1c2luZyAuYW55IG9u IHRoZSBydWxlcyB2ZWMKICAgICAgLSBhZGQgZ2V0X29wdGlvbmFsX3ZpZXcgaGVscGVyCiAgICAg IC0gcmVuYW1lIFZpZXdGaWx0ZXIqIC0+IFZpZXcqCgogc2VydmVyL3NyYy9saWIucnMgICAgICAg ICB8ICAgMSArCiBzZXJ2ZXIvc3JjL3ZpZXdzL21vZC5ycyAgIHwgMjA1ICsrKysrKysrKysrKysK IHNlcnZlci9zcmMvdmlld3MvdGVzdHMucnMgfCA2MTkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgODI1IGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzZXJ2ZXIvc3JjL3ZpZXdzL21vZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNlcnZlci9zcmMvdmlld3MvdGVzdHMucnMKCmRpZmYgLS1naXQgYS9zZXJ2ZXIvc3JjL2xpYi5y cyBiL3NlcnZlci9zcmMvbGliLnJzCmluZGV4IDk2NDgwN2ViLi4wZjI1YWE3MSAxMDA2NDQKLS0t IGEvc2VydmVyL3NyYy9saWIucnMKKysrIGIvc2VydmVyL3NyYy9saWIucnMKQEAgLTEyLDYgKzEy LDcgQEAgcHViIG1vZCByZW1vdGVfdGFza3M7CiBwdWIgbW9kIHJlbW90ZV91cGRhdGVzOwogcHVi IG1vZCByZXNvdXJjZV9jYWNoZTsKIHB1YiBtb2QgdGFza191dGlsczsKK3B1YiBtb2Qgdmlld3M7 CiAKIHB1YiBtb2QgY29ubmVjdGlvbjsKIHB1YiBtb2QgcGJzX2NsaWVudDsKZGlmZiAtLWdpdCBh L3NlcnZlci9zcmMvdmlld3MvbW9kLnJzIGIvc2VydmVyL3NyYy92aWV3cy9tb2QucnMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmI1ZDc5ZTBlCi0tLSAvZGV2L251bGwKKysr IGIvc2VydmVyL3NyYy92aWV3cy9tb2QucnMKQEAgLTAsMCArMSwyMDUgQEAKK3VzZSBhbnlob3c6 Ontmb3JtYXRfZXJyLCBFcnJvcn07CisKK3VzZSBwZG1fYXBpX3R5cGVzOjp7CisgICAgcmVzb3Vy Y2U6OntSZXNvdXJjZSwgUmVzb3VyY2VUeXBlfSwKKyAgICB2aWV3czo6e0ZpbHRlclJ1bGUsIFZp ZXdDb25maWcsIFZpZXdDb25maWdFbnRyeX0sCit9OworCisjW2NmZyh0ZXN0KV0KK21vZCB0ZXN0 czsKKworLy8vIEdldCB2aWV3IHdpdGggYSBnaXZlbiBJRC4KKy8vLworLy8vIFJldHVybnMgYW4g ZXJyb3IgaWYgdGhlIHZpZXcgY29uZmlndXJhdGlvbiBmaWxlIGNvdWxkIG5vdCBiZSByZWFkLCBv cgorLy8vIGlmIHRoZSB2aWV3IHdpdGggdGhlIHByb3ZpZGVkIElEIGRvZXMgbm90IGV4aXN0Lgor cHViIGZuIGdldF92aWV3KHZpZXdfaWQ6ICZzdHIpIC0+IFJlc3VsdDxWaWV3LCBFcnJvcj4gewor ICAgIGxldCBjb25maWcgPSBwZG1fY29uZmlnOjp2aWV3czo6Y29uZmlnKCk/OworCisgICAgbGV0 IGVudHJ5ID0gY29uZmlnCisgICAgICAgIC5nZXQodmlld19pZCkKKyAgICAgICAgLmNsb25lZCgp CisgICAgICAgIC5va19vcl9lbHNlKHx8IGZvcm1hdF9lcnIhKCJ1bmtub3duIHZpZXc6IHt2aWV3 X2lkfSIpKT87CisKKyAgICBtYXRjaCBlbnRyeSB7CisgICAgICAgIFZpZXdDb25maWdFbnRyeTo6 Vmlldyh2aWV3X2NvbmZpZykgPT4gT2soVmlldzo6bmV3KHZpZXdfY29uZmlnKSksCisgICAgfQor fQorCisvLy8gR2V0IChvcHRpb25hbCkgdmlldyB3aXRoIGEgZ2l2ZW4gSUQuCisvLy8KKy8vLyBS ZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB2aWV3IGNvbmZpZ3VyYXRpb24gZmlsZSBjb3VsZCBub3Qg YmUgcmVhZCwgb3IKKy8vLyBpZiB0aGUgdmlldyB3aXRoIHRoZSBwcm92aWRlZCBJRCBkb2VzIG5v dCBleGlzdC4KK3B1YiBmbiBnZXRfb3B0aW9uYWxfdmlldyh2aWV3X2lkOiBPcHRpb248JnN0cj4p IC0+IFJlc3VsdDxPcHRpb248Vmlldz4sIEVycm9yPiB7CisgICAgdmlld19pZC5tYXAoZ2V0X3Zp ZXcpLnRyYW5zcG9zZSgpCit9CisKKy8vLyBWaWV3IGltcGxlbWVudGF0aW9uLgorLy8vCisvLy8g R2l2ZW4gYSBbYFZpZXdDb25maWdgXSwgdGhpcyBzdHJ1Y3QgY2FuIGJlIHVzZWQgdG8gY2hlY2sg aWYgYSByZXNvdXJjZS9yZW1vdGUvbm9kZQorLy8vIG1hdGNoZXMgdGhlIGluY2x1ZGUvZXhjbHVk ZSBydWxlcy4KKyNbZGVyaXZlKENsb25lKV0KK3B1YiBzdHJ1Y3QgVmlldyB7CisgICAgY29uZmln OiBWaWV3Q29uZmlnLAorfQorCitpbXBsIFZpZXcgeworICAgIC8vLyBDcmVhdGUgYSBuZXcgW2BW aWV3YF0uCisgICAgcHViIGZuIG5ldyhjb25maWc6IFZpZXdDb25maWcpIC0+IFNlbGYgeworICAg ICAgICBTZWxmIHsgY29uZmlnIH0KKyAgICB9CisKKyAgICAvLy8gQ2hlY2sgaWYgYSBbYFJlc291 cmNlYF0gbWF0Y2hlcyB0aGUgZmlsdGVyIHJ1bGVzLgorICAgIHB1YiBmbiByZXNvdXJjZV9tYXRj aGVzKCZzZWxmLCByZW1vdGU6ICZzdHIsIHJlc291cmNlOiAmUmVzb3VyY2UpIC0+IGJvb2wgewor ICAgICAgICAvLyBOT1RFOiBFc3RhYmxpc2hpbmcgYSBjYWNoZSBoZXJlIGlzIG5vdCB3b3J0aCB0 aGUgZWZmb3J0IGF0IHRoZSBtb21lbnQsIGV2YWx1YXRpb24gb2YKKyAgICAgICAgLy8gcnVsZXMg aXMgKnZlcnkqIGZhc3QuCisKKyAgICAgICAgbGV0IHJlc291cmNlX2RhdGEgPSByZXNvdXJjZS5p bnRvKCk7CisKKyAgICAgICAgc2VsZi5jaGVja19pZl9pbmNsdWRlZChyZW1vdGUsICZyZXNvdXJj ZV9kYXRhKQorICAgICAgICAgICAgJiYgIXNlbGYuY2hlY2tfaWZfZXhjbHVkZWQocmVtb3RlLCAm cmVzb3VyY2VfZGF0YSkKKyAgICB9CisKKyAgICAvLy8gQ2hlY2sgaWYgYSByZW1vdGUgY2FuIGJl IHNhZmVseSBza2lwcGVkIGJhc2VkIG9uIHRoZSBmaWx0ZXIgcnVsZSBkZWZpbml0aW9uLgorICAg IC8vLworICAgIC8vLyBXaGVuIHRoZXJlIGFyZSBgaW5jbHVkZSByZW1vdGU6PC4uLj5gIG9yIGBl eGNsdWRlIHJlbW90ZTo8Li4uPmAgcnVsZXMsIHdlIGNhbiB1c2UgdGhlc2UgdG8KKyAgICAvLy8g Y2hlY2sgaWYgYSByZW1vdGUgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBhdCBhbGwuCisgICAgcHVi IGZuIGNhbl9za2lwX3JlbW90ZSgmc2VsZiwgcmVtb3RlOiAmc3RyKSAtPiBib29sIHsKKyAgICAg ICAgbGV0IG11dCBoYXNfYW55X2luY2x1ZGVfcmVtb3RlID0gZmFsc2U7CisgICAgICAgIGxldCBt dXQgbWF0Y2hlc19hbnlfaW5jbHVkZV9yZW1vdGUgPSBmYWxzZTsKKworICAgICAgICBsZXQgbXV0 IGFueV9vdGhlciA9IGZhbHNlOworCisgICAgICAgIGZvciBpbmNsdWRlIGluICZzZWxmLmNvbmZp Zy5pbmNsdWRlIHsKKyAgICAgICAgICAgIGlmIGxldCBGaWx0ZXJSdWxlOjpSZW1vdGUocikgPSBp bmNsdWRlIHsKKyAgICAgICAgICAgICAgICBoYXNfYW55X2luY2x1ZGVfcmVtb3RlID0gdHJ1ZTsK KyAgICAgICAgICAgICAgICBpZiByID09IHJlbW90ZSB7CisgICAgICAgICAgICAgICAgICAgIG1h dGNoZXNfYW55X2luY2x1ZGVfcmVtb3RlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICBhbnlfb3RoZXIgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg ICAgbGV0IG1hdGNoZXNfYW55X2V4Y2x1ZGVfcmVtb3RlID0gc2VsZgorICAgICAgICAgICAgLmNv bmZpZworICAgICAgICAgICAgLmV4Y2x1ZGUKKyAgICAgICAgICAgIC5pdGVyKCkKKyAgICAgICAg ICAgIC5hbnkofHJ1bGV8IFNlbGY6Om1hdGNoZXNfcmVtb3RlX3J1bGUocmVtb3RlLCBydWxlKSk7 CisKKyAgICAgICAgKGhhc19hbnlfaW5jbHVkZV9yZW1vdGUgJiYgIW1hdGNoZXNfYW55X2luY2x1 ZGVfcmVtb3RlICYmICFhbnlfb3RoZXIpCisgICAgICAgICAgICB8fCBtYXRjaGVzX2FueV9leGNs dWRlX3JlbW90ZQorICAgIH0KKworICAgIC8vLyBDaGVjayBpZiBhIHJlbW90ZSBpcyAqZXhwbGlj aXRseSogaW5jbHVkZWQgKGFuZCBub3QgZXhjbHVkZWQpLgorICAgIC8vLworICAgIC8vLyBBIHN1 YnNldCBvZiB0aGUgcmVzb3VyY2VzIG9mIGEgcmVtb3RlIG1pZ2h0IHN0aWxsIGJlIHB1bGxlZCBp biBieSBvdGhlciBydWxlcywKKyAgICAvLy8gYnV0IHRoaXMgZnVuY3Rpb24gY2hlY2sgaWYgdGhl IHJlbW90ZSBhcyBhIHdob2xlIGlzIG1hdGNoZWQuCisgICAgcHViIGZuIGlzX3JlbW90ZV9leHBs aWNpdGx5X2luY2x1ZGVkKCZzZWxmLCByZW1vdGU6ICZzdHIpIC0+IGJvb2wgeworICAgICAgICBs ZXQgbWF0Y2hlc19pbmNsdWRlX3JlbW90ZSA9IHNlbGYKKyAgICAgICAgICAgIC5jb25maWcKKyAg ICAgICAgICAgIC5pbmNsdWRlCisgICAgICAgICAgICAuaXRlcigpCisgICAgICAgICAgICAuYW55 KHxydWxlfCBTZWxmOjptYXRjaGVzX3JlbW90ZV9ydWxlKHJlbW90ZSwgcnVsZSkpOworICAgICAg ICBsZXQgbWF0Y2hlc19leGNsdWRlX3JlbW90ZSA9IHNlbGYKKyAgICAgICAgICAgIC5jb25maWcK KyAgICAgICAgICAgIC5leGNsdWRlCisgICAgICAgICAgICAuaXRlcigpCisgICAgICAgICAgICAu YW55KHxydWxlfCBTZWxmOjptYXRjaGVzX3JlbW90ZV9ydWxlKHJlbW90ZSwgcnVsZSkpOworCisg ICAgICAgIG1hdGNoZXNfaW5jbHVkZV9yZW1vdGUgJiYgIW1hdGNoZXNfZXhjbHVkZV9yZW1vdGUK KyAgICB9CisKKyAgICAvLy8gQ2hlY2sgaWYgYSBub2RlIGlzIG1hdGNoZWQgYnkgdGhlIGZpbHRl ciBydWxlcy4KKyAgICAvLy8KKyAgICAvLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNoZWNraW5n IGFuIGFjdHVhbCBub2RlIHJlc291cmNlLgorICAgIHB1YiBmbiBpc19ub2RlX2luY2x1ZGVkKCZz ZWxmLCByZW1vdGU6ICZzdHIsIG5vZGU6ICZzdHIpIC0+IGJvb2wgeworICAgICAgICBsZXQgcmVz b3VyY2VfZGF0YSA9IFJlc291cmNlRGF0YSB7CisgICAgICAgICAgICByZXNvdXJjZV90eXBlOiBS ZXNvdXJjZVR5cGU6Ok5vZGUsCisgICAgICAgICAgICB0YWdzOiBOb25lLAorICAgICAgICAgICAg cmVzb3VyY2VfcG9vbDogTm9uZSwKKyAgICAgICAgICAgIHJlc291cmNlX2lkOiAmZm9ybWF0ISgi cmVtb3RlL3tyZW1vdGV9L25vZGUve25vZGV9IiksCisgICAgICAgIH07CisKKyAgICAgICAgc2Vs Zi5jaGVja19pZl9pbmNsdWRlZChyZW1vdGUsICZyZXNvdXJjZV9kYXRhKQorICAgICAgICAgICAg JiYgIXNlbGYuY2hlY2tfaWZfZXhjbHVkZWQocmVtb3RlLCAmcmVzb3VyY2VfZGF0YSkKKyAgICB9 CisKKyAgICAvLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgdmlldy4KKyAgICBwdWIgZm4gbmFt ZSgmc2VsZikgLT4gJnN0ciB7CisgICAgICAgICZzZWxmLmNvbmZpZy5pZAorICAgIH0KKworICAg IGZuIGNoZWNrX2lmX2luY2x1ZGVkKCZzZWxmLCByZW1vdGU6ICZzdHIsIHJlc291cmNlOiAmUmVz b3VyY2VEYXRhKSAtPiBib29sIHsKKyAgICAgICAgaWYgc2VsZi5jb25maWcuaW5jbHVkZS5pc19l bXB0eSgpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbmNsdWRlIHJ1bGVzLCBh bnkgcmVzb3VyY2UgaXMgaW5jbHVkZWQgKHVubGVzcyBleGNsdWRlZCkKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY2hlY2tfcnVsZXMoJnNlbGYuY29uZmln LmluY2x1ZGUsIHJlbW90ZSwgcmVzb3VyY2UpCisgICAgfQorCisgICAgZm4gY2hlY2tfaWZfZXhj bHVkZWQoJnNlbGYsIHJlbW90ZTogJnN0ciwgcmVzb3VyY2U6ICZSZXNvdXJjZURhdGEpIC0+IGJv b2wgeworICAgICAgICBjaGVja19ydWxlcygmc2VsZi5jb25maWcuZXhjbHVkZSwgcmVtb3RlLCBy ZXNvdXJjZSkKKyAgICB9CisKKyAgICBmbiBtYXRjaGVzX3JlbW90ZV9ydWxlKHJlbW90ZTogJnN0 ciwgcnVsZTogJkZpbHRlclJ1bGUpIC0+IGJvb2wgeworICAgICAgICBpZiBsZXQgRmlsdGVyUnVs ZTo6UmVtb3RlKHIpID0gcnVsZSB7CisgICAgICAgICAgICByID09IHJlbW90ZQorICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgZmFsc2UKKyAgICAgICAgfQorICAgIH0KK30KKworZm4gY2hl Y2tfcnVsZXMocnVsZXM6ICZbRmlsdGVyUnVsZV0sIHJlbW90ZTogJnN0ciwgcmVzb3VyY2U6ICZS ZXNvdXJjZURhdGEpIC0+IGJvb2wgeworICAgIHJ1bGVzLml0ZXIoKS5hbnkofHJ1bGV8IG1hdGNo IHJ1bGUgeworICAgICAgICBGaWx0ZXJSdWxlOjpSZXNvdXJjZVR5cGUocmVzb3VyY2VfdHlwZSkg PT4gcmVzb3VyY2UucmVzb3VyY2VfdHlwZSA9PSAqcmVzb3VyY2VfdHlwZSwKKyAgICAgICAgRmls dGVyUnVsZTo6UmVzb3VyY2VQb29sKHBvb2wpID0+IHJlc291cmNlLnJlc291cmNlX3Bvb2wgPT0g U29tZShwb29sKSwKKyAgICAgICAgRmlsdGVyUnVsZTo6UmVzb3VyY2VJZChyZXNvdXJjZV9pZCkg PT4gcmVzb3VyY2UucmVzb3VyY2VfaWQgPT0gcmVzb3VyY2VfaWQsCisgICAgICAgIEZpbHRlclJ1 bGU6OlRhZyh0YWcpID0+IHsKKyAgICAgICAgICAgIGlmIGxldCBTb21lKHJlc291cmNlX3RhZ3Mp ID0gcmVzb3VyY2UudGFncyB7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VfdGFncy5jb250YWlu cyh0YWcpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZhbHNlCisgICAg ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgRmlsdGVyUnVsZTo6UmVtb3RlKGluY2x1ZGVk X3JlbW90ZSkgPT4gaW5jbHVkZWRfcmVtb3RlID09IHJlbW90ZSwKKyAgICB9KQorfQorCitzdHJ1 Y3QgUmVzb3VyY2VEYXRhPCdhPiB7CisgICAgcmVzb3VyY2VfdHlwZTogUmVzb3VyY2VUeXBlLAor ICAgIHRhZ3M6IE9wdGlvbjwmJ2EgW1N0cmluZ10+LAorICAgIHJlc291cmNlX3Bvb2w6IE9wdGlv bjwmJ2EgU3RyaW5nPiwKKyAgICByZXNvdXJjZV9pZDogJidhIHN0ciwKK30KKworaW1wbDwnYT4g RnJvbTwmJ2EgUmVzb3VyY2U+IGZvciBSZXNvdXJjZURhdGE8J2E+IHsKKyAgICBmbiBmcm9tKHZh bHVlOiAmJ2EgUmVzb3VyY2UpIC0+IFNlbGYgeworICAgICAgICBtYXRjaCB2YWx1ZSB7CisgICAg ICAgICAgICBSZXNvdXJjZTo6UHZlUWVtdShyZXNvdXJjZSkgPT4gUmVzb3VyY2VEYXRhIHsKKyAg ICAgICAgICAgICAgICByZXNvdXJjZV90eXBlOiB2YWx1ZS5yZXNvdXJjZV90eXBlKCksCisgICAg ICAgICAgICAgICAgdGFnczogU29tZSgmcmVzb3VyY2UudGFncyksCisgICAgICAgICAgICAgICAg cmVzb3VyY2VfcG9vbDogU29tZSgmcmVzb3VyY2UucG9vbCksCisgICAgICAgICAgICAgICAgcmVz b3VyY2VfaWQ6IHZhbHVlLmdsb2JhbF9pZCgpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IFJlc291cmNlOjpQdmVMeGMocmVzb3VyY2UpID0+IFJlc291cmNlRGF0YSB7CisgICAgICAgICAg ICAgICAgcmVzb3VyY2VfdHlwZTogdmFsdWUucmVzb3VyY2VfdHlwZSgpLAorICAgICAgICAgICAg ICAgIHRhZ3M6IFNvbWUoJnJlc291cmNlLnRhZ3MpLAorICAgICAgICAgICAgICAgIHJlc291cmNl X3Bvb2w6IFNvbWUoJnJlc291cmNlLnBvb2wpLAorICAgICAgICAgICAgICAgIHJlc291cmNlX2lk OiB2YWx1ZS5nbG9iYWxfaWQoKSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBSZXNvdXJj ZTo6UHZlTm9kZShfKQorICAgICAgICAgICAgfCBSZXNvdXJjZTo6UHZlU2RuKF8pCisgICAgICAg ICAgICB8IFJlc291cmNlOjpQYnNOb2RlKF8pCisgICAgICAgICAgICB8IFJlc291cmNlOjpQYnNE YXRhc3RvcmUoXykKKyAgICAgICAgICAgIHwgUmVzb3VyY2U6OlB2ZVN0b3JhZ2UoXykgPT4gUmVz b3VyY2VEYXRhIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZV90eXBlOiB2YWx1ZS5yZXNvdXJj ZV90eXBlKCksCisgICAgICAgICAgICAgICAgdGFnczogTm9uZSwKKyAgICAgICAgICAgICAgICBy ZXNvdXJjZV9wb29sOiBOb25lLAorICAgICAgICAgICAgICAgIHJlc291cmNlX2lkOiB2YWx1ZS5n bG9iYWxfaWQoKSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1n aXQgYS9zZXJ2ZXIvc3JjL3ZpZXdzL3Rlc3RzLnJzIGIvc2VydmVyL3NyYy92aWV3cy90ZXN0cy5y cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMDMwYjc5OTQKLS0tIC9kZXYv bnVsbAorKysgYi9zZXJ2ZXIvc3JjL3ZpZXdzL3Rlc3RzLnJzCkBAIC0wLDAgKzEsNjE5IEBACit1 c2UgcGRtX2FwaV90eXBlczo6eworICAgIHJlc291cmNlOjp7UHZlTHhjUmVzb3VyY2UsIFB2ZVFl bXVSZXNvdXJjZSwgUHZlU3RvcmFnZVJlc291cmNlLCBSZXNvdXJjZSwgUmVzb3VyY2VUeXBlfSwK KyAgICB2aWV3czo6e0ZpbHRlclJ1bGUsIFZpZXdDb25maWd9LAorfTsKKwordXNlIHN1cGVyOjpW aWV3OworCitmbiBtYWtlX3N0b3JhZ2VfcmVzb3VyY2UocmVtb3RlOiAmc3RyLCBub2RlOiAmc3Ry LCBzdG9yYWdlX25hbWU6ICZzdHIpIC0+IFJlc291cmNlIHsKKyAgICBSZXNvdXJjZTo6UHZlU3Rv cmFnZShQdmVTdG9yYWdlUmVzb3VyY2UgeworICAgICAgICBkaXNrOiAxMDAwLAorICAgICAgICBt YXhkaXNrOiAyMDAwLAorICAgICAgICBpZDogZm9ybWF0ISgicmVtb3RlL3tyZW1vdGV9L3N0b3Jh Z2Uve25vZGV9L3tzdG9yYWdlX25hbWV9IiksCisgICAgICAgIHN0b3JhZ2U6IHN0b3JhZ2VfbmFt ZS5pbnRvKCksCisgICAgICAgIG5vZGU6IG5vZGUuaW50bygpLAorICAgICAgICBzdGF0dXM6ICJh dmFpbGFibGUiLmludG8oKSwKKyAgICB9KQorfQorCitmbiBtYWtlX3FlbXVfcmVzb3VyY2UoCisg ICAgcmVtb3RlOiAmc3RyLAorICAgIG5vZGU6ICZzdHIsCisgICAgdm1pZDogdTMyLAorICAgIHBv b2w6IE9wdGlvbjwmc3RyPiwKKyAgICB0YWdzOiAmWyZzdHJdLAorKSAtPiBSZXNvdXJjZSB7Cisg ICAgUmVzb3VyY2U6OlB2ZVFlbXUoUHZlUWVtdVJlc291cmNlIHsKKyAgICAgICAgZGlzazogMTAw MCwKKyAgICAgICAgbWF4ZGlzazogMjAwMCwKKyAgICAgICAgaWQ6IGZvcm1hdCEoInJlbW90ZS97 cmVtb3RlfS9ndWVzdC97dm1pZH0iKSwKKyAgICAgICAgbm9kZTogbm9kZS5pbnRvKCksCisgICAg ICAgIHN0YXR1czogImF2YWlsYWJsZSIuaW50bygpLAorICAgICAgICBjcHU6IDAuMCwKKyAgICAg ICAgbWF4Y3B1OiAwLjAsCisgICAgICAgIG1heG1lbTogMTAyNCwKKyAgICAgICAgbWVtOiA1MTIs CisgICAgICAgIG5hbWU6IGZvcm1hdCEoInZtLXt2bWlkfSIpLAorICAgICAgICAvLyBUT0RPOiBD aGVjayB0aGUgQVBJIHR5cGUgLSBpIGd1ZXNzIGl0IHNob3VsZCBiZSBhbiBvcHRpb24/CisgICAg ICAgIHBvb2w6IHBvb2wubWFwX29yX2Vsc2UoU3RyaW5nOjpuZXcsIHxhfCBhLmludG8oKSksCisg ICAgICAgIHRhZ3M6IHRhZ3MuaXRlcigpLm1hcCh8dGFnfCBTdHJpbmc6OmZyb20oKnRhZykpLmNv bGxlY3QoKSwKKyAgICAgICAgdGVtcGxhdGU6IGZhbHNlLAorICAgICAgICB1cHRpbWU6IDEzMzcs CisgICAgICAgIHZtaWQsCisgICAgfSkKK30KKworZm4gbWFrZV9seGNfcmVzb3VyY2UoCisgICAg cmVtb3RlOiAmc3RyLAorICAgIG5vZGU6ICZzdHIsCisgICAgdm1pZDogdTMyLAorICAgIHBvb2w6 IE9wdGlvbjwmc3RyPiwKKyAgICB0YWdzOiAmWyZzdHJdLAorKSAtPiBSZXNvdXJjZSB7CisgICAg UmVzb3VyY2U6OlB2ZUx4YyhQdmVMeGNSZXNvdXJjZSB7CisgICAgICAgIGRpc2s6IDEwMDAsCisg ICAgICAgIG1heGRpc2s6IDIwMDAsCisgICAgICAgIGlkOiBmb3JtYXQhKCJyZW1vdGUve3JlbW90 ZX0vZ3Vlc3Qve3ZtaWR9IiksCisgICAgICAgIG5vZGU6IG5vZGUuaW50bygpLAorICAgICAgICBz dGF0dXM6ICJhdmFpbGFibGUiLmludG8oKSwKKyAgICAgICAgY3B1OiAwLjAsCisgICAgICAgIG1h eGNwdTogMC4wLAorICAgICAgICBtYXhtZW06IDEwMjQsCisgICAgICAgIG1lbTogNTEyLAorICAg ICAgICBuYW1lOiBmb3JtYXQhKCJ2bS17dm1pZH0iKSwKKyAgICAgICAgLy8gVE9ETzogQ2hlY2sg dGhlIEFQSSB0eXBlIC0gaSBndWVzcyBpdCBzaG91bGQgYmUgYW4gb3B0aW9uPworICAgICAgICBw b29sOiBwb29sLm1hcF9vcl9lbHNlKFN0cmluZzo6bmV3LCB8YXwgYS5pbnRvKCkpLAorICAgICAg ICB0YWdzOiB0YWdzLml0ZXIoKS5tYXAofHRhZ3wgU3RyaW5nOjpmcm9tKCp0YWcpKS5jb2xsZWN0 KCksCisgICAgICAgIHRlbXBsYXRlOiBmYWxzZSwKKyAgICAgICAgdXB0aW1lOiAxMzM3LAorICAg ICAgICB2bWlkLAorICAgIH0pCit9CisKK2ZuIHJ1bl90ZXN0KGNvbmZpZzogVmlld0NvbmZpZywg dGVzdHM6ICZbKCgmc3RyLCAmUmVzb3VyY2UpLCBib29sKV0pIHsKKyAgICBsZXQgZmlsdGVyID0g Vmlldzo6bmV3KGNvbmZpZyk7CisKKyAgICBmb3IgKChyZW1vdGVfbmFtZSwgcmVzb3VyY2UpLCBl eHBlY3RlZCkgaW4gdGVzdHMgeworICAgICAgICBlcHJpbnRsbiEoInJlbW90ZToge3JlbW90ZV9u YW1lfSwgcmVzb3VyY2U6IHtyZXNvdXJjZTo/fSIpOworICAgICAgICBhc3NlcnRfZXEhKGZpbHRl ci5yZXNvdXJjZV9tYXRjaGVzKHJlbW90ZV9uYW1lLCByZXNvdXJjZSksICpleHBlY3RlZCk7Cisg ICAgfQorfQorCitjb25zdCBOT0RFOiAmc3RyID0gInNvbWVub2RlIjsKK2NvbnN0IFNUT1JBR0U6 ICZzdHIgPSAic29tZXN0b3JhZ2UiOworY29uc3QgUkVNT1RFOiAmc3RyID0gInNvbWVyZW1vdGUi OworCisjW3Rlc3RdCitmbiBpbmNsdWRlX3JlbW90ZXMoKSB7CisgICAgbGV0IGNvbmZpZyA9IFZp ZXdDb25maWcgeworICAgICAgICBpZDogIm9ubHktaW5jbHVkZXMiLmludG8oKSwKKyAgICAgICAg aW5jbHVkZTogdmVjIVsKKyAgICAgICAgICAgIEZpbHRlclJ1bGU6OlJlbW90ZSgicmVtb3RlLWEi LmludG8oKSksCisgICAgICAgICAgICBGaWx0ZXJSdWxlOjpSZW1vdGUoInJlbW90ZS1iIi5pbnRv KCkpLAorICAgICAgICBdLAorICAgICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQorICAgIH07Cisg ICAgcnVuX3Rlc3QoCisgICAgICAgIGNvbmZpZy5jbG9uZSgpLAorICAgICAgICAmWworICAgICAg ICAgICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgInJlbW90ZS1h IiwKKyAgICAgICAgICAgICAgICAgICAgJm1ha2Vfc3RvcmFnZV9yZXNvdXJjZSgicmVtb3RlLWEi LCBOT0RFLCBTVE9SQUdFKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHRy dWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICgKKyAg ICAgICAgICAgICAgICAgICAgInJlbW90ZS1iIiwKKyAgICAgICAgICAgICAgICAgICAgJm1ha2Vf c3RvcmFnZV9yZXNvdXJjZSgicmVtb3RlLWIiLCBOT0RFLCBTVE9SQUdFKSwKKyAgICAgICAgICAg ICAgICApLAorICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICApLAorICAgICAgICAg ICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgInJlbW90ZS1jIiwK KyAgICAgICAgICAgICAgICAgICAgJm1ha2Vfc3RvcmFnZV9yZXNvdXJjZSgicmVtb3RlLWMiLCBO T0RFLCBTVE9SQUdFKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGZhbHNl LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApOworCisgICAgbGV0IHZpZXcgPSBW aWV3OjpuZXcoY29uZmlnKTsKKworICAgIGFzc2VydCEoIXZpZXcuY2FuX3NraXBfcmVtb3RlKCJy ZW1vdGUtYSIpKTsKKyAgICBhc3NlcnQhKCF2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWIi KSk7CisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWMiKSk7Cit9CisK KyNbdGVzdF0KK2ZuIGV4Y2x1ZGVfcmVtb3RlcygpIHsKKyAgICBsZXQgY29uZmlnID0gVmlld0Nv bmZpZyB7CisgICAgICAgIGlkOiAib25seS1leGNsdWRlcyIuaW50bygpLAorICAgICAgICBleGNs dWRlOiB2ZWMhWworICAgICAgICAgICAgRmlsdGVyUnVsZTo6UmVtb3RlKCJyZW1vdGUtYSIuaW50 bygpKSwKKyAgICAgICAgICAgIEZpbHRlclJ1bGU6OlJlbW90ZSgicmVtb3RlLWIiLmludG8oKSks CisgICAgICAgIF0sCisgICAgICAgIC4uRGVmYXVsdDo6ZGVmYXVsdCgpCisgICAgfTsKKworICAg IHJ1bl90ZXN0KAorICAgICAgICBjb25maWcuY2xvbmUoKSwKKyAgICAgICAgJlsKKyAgICAgICAg ICAgICgKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICJyZW1vdGUtYSIs CisgICAgICAgICAgICAgICAgICAgICZtYWtlX3N0b3JhZ2VfcmVzb3VyY2UoInJlbW90ZS1hIiwg Tk9ERSwgU1RPUkFHRSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBmYWxz ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKAorICAg ICAgICAgICAgICAgICAgICAicmVtb3RlLWIiLAorICAgICAgICAgICAgICAgICAgICAmbWFrZV9z dG9yYWdlX3Jlc291cmNlKCJyZW1vdGUtYiIsIE5PREUsIFNUT1JBR0UpLAorICAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICApLAorICAgICAgICAg ICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgInJlbW90ZS1jIiwK KyAgICAgICAgICAgICAgICAgICAgJm1ha2Vfc3RvcmFnZV9yZXNvdXJjZSgicmVtb3RlLWMiLCBO T0RFLCBTVE9SQUdFKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHRydWUs CisgICAgICAgICAgICApLAorICAgICAgICBdLAorICAgICk7CisKKyAgICBsZXQgdmlldyA9IFZp ZXc6Om5ldyhjb25maWcpOworCisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVt b3RlLWEiKSk7CisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWIiKSk7 CisgICAgYXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1jIikpOworfQorCisj W3Rlc3RdCitmbiBpbmNsdWRlX2V4Y2x1ZGVfcmVtb3RlcygpIHsKKyAgICBsZXQgY29uZmlnID0g Vmlld0NvbmZpZyB7CisgICAgICAgIGlkOiAiYm90aCIuaW50bygpLAorICAgICAgICBpbmNsdWRl OiB2ZWMhWworICAgICAgICAgICAgRmlsdGVyUnVsZTo6UmVtb3RlKCJyZW1vdGUtYSIuaW50bygp KSwKKyAgICAgICAgICAgIEZpbHRlclJ1bGU6OlJlbW90ZSgicmVtb3RlLWIiLmludG8oKSksCisg ICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGU6IHZlYyFbCisgICAgICAgICAgICBGaWx0ZXJSdWxl OjpSZW1vdGUoInJlbW90ZS1iIi5pbnRvKCkpLAorICAgICAgICAgICAgRmlsdGVyUnVsZTo6UmVt b3RlKCJyZW1vdGUtYyIuaW50bygpKSwKKyAgICAgICAgXSwKKyAgICB9OworICAgIHJ1bl90ZXN0 KAorICAgICAgICBjb25maWcuY2xvbmUoKSwKKyAgICAgICAgJlsKKyAgICAgICAgICAgICgKKyAg ICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICJyZW1vdGUtYSIsCisgICAgICAg ICAgICAgICAgICAgICZtYWtlX3N0b3JhZ2VfcmVzb3VyY2UoInJlbW90ZS1hIiwgTk9ERSwgU1RP UkFHRSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICB0cnVlLAorICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAg ICAgICAgICJyZW1vdGUtYiIsCisgICAgICAgICAgICAgICAgICAgICZtYWtlX3N0b3JhZ2VfcmVz b3VyY2UoInJlbW90ZS1iIiwgTk9ERSwgU1RPUkFHRSksCisgICAgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAg ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAicmVtb3RlLWMiLAorICAgICAgICAg ICAgICAgICAgICAmbWFrZV9zdG9yYWdlX3Jlc291cmNlKCJyZW1vdGUtYyIsIE5PREUsIFNUT1JB R0UpLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAg ICAgICApLAorICAgICAgICBdLAorICAgICk7CisKKyAgICBsZXQgdmlldyA9IFZpZXc6Om5ldyhj b25maWcpOworCisgICAgYXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1hIikp OworICAgIGFzc2VydCEodmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1iIikpOworICAgIGFz c2VydCEodmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1jIikpOworICAgIGFzc2VydCEodmll dy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1kIikpOworfQorCisjW3Rlc3RdCitmbiBlbXB0eV9j b25maWcoKSB7CisgICAgbGV0IGNvbmZpZyA9IFZpZXdDb25maWcgeworICAgICAgICBpZDogImVt cHR5Ii5pbnRvKCksCisgICAgICAgIC4uRGVmYXVsdDo6ZGVmYXVsdCgpCisgICAgfTsKKyAgICBy dW5fdGVzdCgKKyAgICAgICAgY29uZmlnLmNsb25lKCksCisgICAgICAgICZbCisgICAgICAgICAg ICAoCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAicmVtb3RlLWEiLAor ICAgICAgICAgICAgICAgICAgICAmbWFrZV9zdG9yYWdlX3Jlc291cmNlKCJyZW1vdGUtYSIsIE5P REUsIFNUT1JBR0UpLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgdHJ1ZSwK KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKAorICAgICAg ICAgICAgICAgICAgICAicmVtb3RlLWIiLAorICAgICAgICAgICAgICAgICAgICAmbWFrZV9zdG9y YWdlX3Jlc291cmNlKCJyZW1vdGUtYiIsIE5PREUsIFNUT1JBR0UpLAorICAgICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAo CisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAicmVtb3RlLWMiLAorICAg ICAgICAgICAgICAgICAgICAmbWFrZV9zdG9yYWdlX3Jlc291cmNlKCJyZW1vdGUtYyIsIE5PREUs IFNUT1JBR0UpLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgdHJ1ZSwKKyAg ICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFJFTU9URSwgJm1h a2VfcWVtdV9yZXNvdXJjZShSRU1PVEUsIE5PREUsIDEwMCwgTm9uZSwgJltdKSksCisgICAgICAg ICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0sCisgICAgKTsKKworICAg IGxldCB2aWV3ID0gVmlldzo6bmV3KGNvbmZpZyk7CisKKyAgICBhc3NlcnQhKCF2aWV3LmNhbl9z a2lwX3JlbW90ZSgicmVtb3RlLWEiKSk7CisgICAgYXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1v dGUoInJlbW90ZS1iIikpOworICAgIGFzc2VydCEoIXZpZXcuY2FuX3NraXBfcmVtb3RlKCJyZW1v dGUtYyIpKTsKK30KKworI1t0ZXN0XQorZm4gaW5jbHVkZV90eXBlKCkgeworICAgIHJ1bl90ZXN0 KAorICAgICAgICBWaWV3Q29uZmlnIHsKKyAgICAgICAgICAgIGlkOiAiaW5jbHVkZS1yZXNvdXJj ZS10eXBlIi5pbnRvKCksCisgICAgICAgICAgICBpbmNsdWRlOiB2ZWMhWworICAgICAgICAgICAg ICAgIEZpbHRlclJ1bGU6OlJlc291cmNlVHlwZShSZXNvdXJjZVR5cGU6OlB2ZVN0b3JhZ2UpLAor ICAgICAgICAgICAgICAgIEZpbHRlclJ1bGU6OlJlc291cmNlVHlwZShSZXNvdXJjZVR5cGU6OlB2 ZVFlbXUpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIC4uRGVmYXVsdDo6ZGVmYXVsdCgp CisgICAgICAgIH0sCisgICAgICAgICZbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg KFJFTU9URSwgJm1ha2Vfc3RvcmFnZV9yZXNvdXJjZShSRU1PVEUsIE5PREUsIFNUT1JBR0UpKSwK KyAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAg ICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFrZV9xZW11X3Jlc291cmNlKFJFTU9URSwgTk9ERSwg MTAwLCBOb25lLCAmW10pKSwKKyAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFrZV9seGNfcmVzb3Vy Y2UoUkVNT1RFLCBOT0RFLCAxMDEsIE5vbmUsICZbXSkpLAorICAgICAgICAgICAgICAgIGZhbHNl LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApOworfQorCisjW3Rlc3RdCitmbiBl eGNsdWRlX3R5cGUoKSB7CisgICAgcnVuX3Rlc3QoCisgICAgICAgIFZpZXdDb25maWcgeworICAg ICAgICAgICAgaWQ6ICJleGNsdWRlLXJlc291cmNlLXR5cGUiLmludG8oKSwKKyAgICAgICAgICAg IGV4Y2x1ZGU6IHZlYyFbCisgICAgICAgICAgICAgICAgRmlsdGVyUnVsZTo6UmVzb3VyY2VUeXBl KFJlc291cmNlVHlwZTo6UHZlU3RvcmFnZSksCisgICAgICAgICAgICAgICAgRmlsdGVyUnVsZTo6 UmVzb3VyY2VUeXBlKFJlc291cmNlVHlwZTo6UHZlUWVtdSksCisgICAgICAgICAgICBdLAorICAg ICAgICAgICAgLi5EZWZhdWx0OjpkZWZhdWx0KCkKKyAgICAgICAgfSwKKyAgICAgICAgJlsKKyAg ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFrZV9zdG9yYWdlX3Jlc291 cmNlKFJFTU9URSwgTk9ERSwgU1RPUkFHRSkpLAorICAgICAgICAgICAgICAgIGZhbHNlLAorICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFr ZV9xZW11X3Jlc291cmNlKFJFTU9URSwgTk9ERSwgMTAwLCBOb25lLCAmW10pKSwKKyAgICAgICAg ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAg ICAgICAgKFJFTU9URSwgJm1ha2VfbHhjX3Jlc291cmNlKFJFTU9URSwgTk9ERSwgMTAxLCBOb25l LCAmW10pKSwKKyAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgKSwKKyAgICAgICAg XSwKKyAgICApOworfQorCisjW3Rlc3RdCitmbiBpbmNsdWRlX2V4Y2x1ZGVfdHlwZSgpIHsKKyAg ICBydW5fdGVzdCgKKyAgICAgICAgVmlld0NvbmZpZyB7CisgICAgICAgICAgICBpZDogImV4Y2x1 ZGUtcmVzb3VyY2UtdHlwZSIuaW50bygpLAorICAgICAgICAgICAgaW5jbHVkZTogdmVjIVtGaWx0 ZXJSdWxlOjpSZXNvdXJjZVR5cGUoUmVzb3VyY2VUeXBlOjpQdmVRZW11KV0sCisgICAgICAgICAg ICBleGNsdWRlOiB2ZWMhW0ZpbHRlclJ1bGU6OlJlc291cmNlVHlwZShSZXNvdXJjZVR5cGU6OlB2 ZVN0b3JhZ2UpXSwKKyAgICAgICAgfSwKKyAgICAgICAgJlsKKyAgICAgICAgICAgICgKKyAgICAg ICAgICAgICAgICAoUkVNT1RFLCAmbWFrZV9zdG9yYWdlX3Jlc291cmNlKFJFTU9URSwgTk9ERSwg U1RPUkFHRSkpLAorICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFrZV9xZW11X3Jlc291cmNlKFJF TU9URSwgTk9ERSwgMTAwLCBOb25lLCAmW10pKSwKKyAgICAgICAgICAgICAgICB0cnVlLAorICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFr ZV9seGNfcmVzb3VyY2UoUkVNT1RFLCBOT0RFLCAxMDEsIE5vbmUsICZbXSkpLAorICAgICAgICAg ICAgICAgIGZhbHNlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApOworfQorCisj W3Rlc3RdCitmbiBpbmNsdWRlX2V4Y2x1ZGVfdGFncygpIHsKKyAgICBydW5fdGVzdCgKKyAgICAg ICAgVmlld0NvbmZpZyB7CisgICAgICAgICAgICBpZDogImluY2x1ZGUtdGFncyIuaW50bygpLAor ICAgICAgICAgICAgaW5jbHVkZTogdmVjIVsKKyAgICAgICAgICAgICAgICBGaWx0ZXJSdWxlOjpU YWcoInRhZzEiLnRvX3N0cmluZygpKSwKKyAgICAgICAgICAgICAgICBGaWx0ZXJSdWxlOjpUYWco InRhZzIiLnRvX3N0cmluZygpKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBleGNsdWRl OiB2ZWMhW0ZpbHRlclJ1bGU6OlRhZygidGFnMyIudG9fc3RyaW5nKCkpXSwKKyAgICAgICAgfSwK KyAgICAgICAgJlsKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoUkVNT1RFLCAmbWFr ZV9zdG9yYWdlX3Jlc291cmNlKFJFTU9URSwgTk9ERSwgU1RPUkFHRSkpLAorICAgICAgICAgICAg ICAgIC8vIG9ubHkgcWVtdS9seGMgY2FuIG1hdGNoIHRhZ3MgZm9yIG5vdworICAgICAgICAgICAg ICAgIGZhbHNlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg ICAoCisgICAgICAgICAgICAgICAgICAgIFJFTU9URSwKKyAgICAgICAgICAgICAgICAgICAgJm1h a2VfcWVtdV9yZXNvdXJjZShSRU1PVEUsIE5PREUsIDEwMCwgTm9uZSwgJlsidGFnMSIsICJ0YWcz Il0pLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0YWcz IGlzIGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICApLAorICAg ICAgICAgICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgUkVNT1RF LAorICAgICAgICAgICAgICAgICAgICAmbWFrZV9seGNfcmVzb3VyY2UoUkVNT1RFLCBOT0RFLCAx MDEsIE5vbmUsICZbInRhZzEiXSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg ICAvLyBtYXRjaGVzIHNpbmNlIGl0J3MgaW4gdGhlIGluY2x1ZGVzCisgICAgICAgICAgICAgICAg dHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKAor ICAgICAgICAgICAgICAgICAgICBSRU1PVEUsCisgICAgICAgICAgICAgICAgICAgICZtYWtlX2x4 Y19yZXNvdXJjZShSRU1PVEUsIE5PREUsIDEwMiwgTm9uZSwgJlsidGFnNCJdKSwKKyAgICAgICAg ICAgICAgICApLAorICAgICAgICAgICAgICAgIC8vIE5vdCBpbiBpbmNsdWRlcywgY2FuIG5ldmVy IG1hdGNoCisgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICApLAorICAgICAgICBd LAorICAgICk7Cit9CisKKyNbdGVzdF0KK2ZuIGluY2x1ZGVfZXhjbHVkZV9yZXNvdXJjZV9wb29s KCkgeworICAgIHJ1bl90ZXN0KAorICAgICAgICBWaWV3Q29uZmlnIHsKKyAgICAgICAgICAgIGlk OiAicG9vbHMiLmludG8oKSwKKyAgICAgICAgICAgIGluY2x1ZGU6IHZlYyFbCisgICAgICAgICAg ICAgICAgRmlsdGVyUnVsZTo6UmVzb3VyY2VQb29sKCJwb29sMSIudG9fc3RyaW5nKCkpLAorICAg ICAgICAgICAgICAgIEZpbHRlclJ1bGU6OlJlc291cmNlUG9vbCgicG9vbDIiLnRvX3N0cmluZygp KSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBleGNsdWRlOiB2ZWMhW0ZpbHRlclJ1bGU6 OlJlc291cmNlUG9vbCgicG9vbDIiLnRvX3N0cmluZygpKV0sCisgICAgICAgIH0sCisgICAgICAg ICZbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFJFTU9URSwgJm1ha2Vfc3RvcmFn ZV9yZXNvdXJjZShSRU1PVEUsIE5PREUsIFNUT1JBR0UpKSwKKyAgICAgICAgICAgICAgICAvLyBv bmx5IHFlbXUvbHhjIGNhbiBtYXRjaCBwb29scyBmb3Igbm93CisgICAgICAgICAgICAgICAgZmFs c2UsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICgKKyAg ICAgICAgICAgICAgICAgICAgUkVNT1RFLAorICAgICAgICAgICAgICAgICAgICAmbWFrZV9xZW11 X3Jlc291cmNlKFJFTU9URSwgTk9ERSwgMTAwLCBTb21lKCJwb29sMiIpLCAmW10pLAorICAgICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBwb29sMiBpcyBleGNsdWRl ZCAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIGluY2x1ZGVzKQorICAgICAgICAgICAgICAgIGZhbHNl LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoCisgICAg ICAgICAgICAgICAgICAgIFJFTU9URSwKKyAgICAgICAgICAgICAgICAgICAgJm1ha2VfbHhjX3Jl c291cmNlKFJFTU9URSwgTk9ERSwgMTAxLCBTb21lKCJwb29sMSIpLCAmW10pLAorICAgICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcyBzaW5jZSBpdCdzIGluIHRoZSBp bmNsdWRlcworICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICApLAorICAgICAgICAg ICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgUkVNT1RFLAorICAg ICAgICAgICAgICAgICAgICAmbWFrZV9seGNfcmVzb3VyY2UoUkVNT1RFLCBOT0RFLCAxMDIsIFNv bWUoInBvb2w0IiksICZbXSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAv LyBOb3QgaW4gaW5jbHVkZXMsIGNhbiBuZXZlciBtYXRjaAorICAgICAgICAgICAgICAgIGZhbHNl LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApOworfQorCisjW3Rlc3RdCitmbiBp bmNsdWRlX2V4Y2x1ZGVfcmVzb3VyY2VfaWQoKSB7CisgICAgcnVuX3Rlc3QoCisgICAgICAgIFZp ZXdDb25maWcgeworICAgICAgICAgICAgaWQ6ICJyZXNvdXJjZS1pZCIuaW50bygpLAorICAgICAg ICAgICAgaW5jbHVkZTogdmVjIVsKKyAgICAgICAgICAgICAgICBGaWx0ZXJSdWxlOjpSZXNvdXJj ZUlkKGZvcm1hdCEoInJlbW90ZS97UkVNT1RFfS9ndWVzdC8xMDAiKSksCisgICAgICAgICAgICAg ICAgRmlsdGVyUnVsZTo6UmVzb3VyY2VJZChmb3JtYXQhKCJyZW1vdGUve1JFTU9URX0vc3RvcmFn ZS97Tk9ERX0ve1NUT1JBR0V9IikpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGV4Y2x1 ZGU6IHZlYyFbCisgICAgICAgICAgICAgICAgRmlsdGVyUnVsZTo6UmVzb3VyY2VJZChmb3JtYXQh KCJyZW1vdGUve1JFTU9URX0vZ3Vlc3QvMTAxIikpLAorICAgICAgICAgICAgICAgIEZpbHRlclJ1 bGU6OlJlc291cmNlSWQoInJlbW90ZS9vdGhlcnJlbW90ZS9ndWVzdC8xMDEiLnRvX3N0cmluZygp KSwKKyAgICAgICAgICAgICAgICBGaWx0ZXJSdWxlOjpSZXNvdXJjZUlkKGZvcm1hdCEoInJlbW90 ZS97UkVNT1RFfS9zdG9yYWdlL3tOT0RFfS9vdGhlcnN0b3JhZ2UiKSksCisgICAgICAgICAgICBd LAorICAgICAgICB9LAorICAgICAgICAmWworICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg IChSRU1PVEUsICZtYWtlX3N0b3JhZ2VfcmVzb3VyY2UoUkVNT1RFLCBOT0RFLCBTVE9SQUdFKSks CisgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisg ICAgICAgICAgICAgICAgKFJFTU9URSwgJm1ha2VfcWVtdV9yZXNvdXJjZShSRU1PVEUsIE5PREUs IDEwMCwgTm9uZSwgJltdKSksCisgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICks CisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFJFTU9URSwgJm1ha2VfbHhjX3Jlc291 cmNlKFJFTU9URSwgTk9ERSwgMTAxLCBOb25lLCAmW10pKSwKKyAgICAgICAgICAgICAgICBmYWxz ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFJFTU9U RSwgJm1ha2VfbHhjX3Jlc291cmNlKFJFTU9URSwgTk9ERSwgMTAyLCBOb25lLCAmW10pKSwKKyAg ICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAg ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAib3RoZXJyZW1vdGUiLAorICAgICAg ICAgICAgICAgICAgICAmbWFrZV9seGNfcmVzb3VyY2UoIm90aGVycmVtb3RlIiwgTk9ERSwgMTAx LCBOb25lLCAmW10pLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZmFsc2Us CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICgKKyAgICAg ICAgICAgICAgICAgICAgInlldGFub3RlcnJlbW90ZSIsCisgICAgICAgICAgICAgICAgICAgICZt YWtlX2x4Y19yZXNvdXJjZSgieWV0YW5vdGhlcnJlbW90ZSIsIE5PREUsIDEwNCwgTm9uZSwgJltd KSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg ICAgKSwKKyAgICAgICAgXSwKKyAgICApOworfQorCisjW3Rlc3RdCitmbiBub2RlX2luY2x1ZGVk KCkgeworICAgIGxldCB2aWV3ID0gVmlldzo6bmV3KFZpZXdDb25maWcgeworICAgICAgICBpZDog ImJvdGgiLmludG8oKSwKKworICAgICAgICBpbmNsdWRlOiB2ZWMhWworICAgICAgICAgICAgRmls dGVyUnVsZTo6UmVtb3RlKCJyZW1vdGUtYSIudG9fc3RyaW5nKCkpLAorICAgICAgICAgICAgRmls dGVyUnVsZTo6UmVzb3VyY2VJZCgicmVtb3RlL3NvbWVyZW1vdGUvbm9kZS90ZXN0Ii50b19zdHJp bmcoKSksCisgICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGU6IHZlYyFbRmlsdGVyUnVsZTo6UmVt b3RlKCJyZW1vdGUtYiIudG9fc3RyaW5nKCkpXSwKKyAgICB9KTsKKworICAgIGFzc2VydCEodmll dy5pc19ub2RlX2luY2x1ZGVkKCJyZW1vdGUtYSIsICJzb21lbm9kZSIpKTsKKyAgICBhc3NlcnQh KHZpZXcuaXNfbm9kZV9pbmNsdWRlZCgicmVtb3RlLWEiLCAic29tZW5vZGUyIikpOworICAgIGFz c2VydCEoIXZpZXcuaXNfbm9kZV9pbmNsdWRlZCgicmVtb3RlLWIiLCAic29tZW5vZGUiKSk7Cisg ICAgYXNzZXJ0ISghdmlldy5pc19ub2RlX2luY2x1ZGVkKCJyZW1vdGUtYiIsICJzb21lbm9kZTIi KSk7CisgICAgYXNzZXJ0ISh2aWV3LmlzX25vZGVfaW5jbHVkZWQoInNvbWVyZW1vdGUiLCAidGVz dCIpKTsKKworICAgIGFzc2VydF9lcSEodmlldy5uYW1lKCksICJib3RoIik7Cit9CisKKyNbdGVz dF0KK2ZuIGNhbl9za2lwX3JlbW90ZV9pZl9leGNsdWRlZCgpIHsKKyAgICBsZXQgdmlldyA9IFZp ZXc6Om5ldyhWaWV3Q29uZmlnIHsKKyAgICAgICAgaWQ6ICJhYmMiLmludG8oKSwKKyAgICAgICAg aW5jbHVkZTogdmVjIVtdLAorICAgICAgICBleGNsdWRlOiB2ZWMhW0ZpbHRlclJ1bGU6OlJlbW90 ZSgicmVtb3RlLWIiLnRvX3N0cmluZygpKV0sCisgICAgfSk7CisKKyAgICBhc3NlcnQhKCF2aWV3 LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWEiKSk7CisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lw X3JlbW90ZSgicmVtb3RlLWIiKSk7Cit9CisKKyNbdGVzdF0KK2ZuIGNhbl9za2lwX3JlbW90ZV9p Zl9pbmNsdWRlZCgpIHsKKyAgICBsZXQgdmlldyA9IFZpZXc6Om5ldyhWaWV3Q29uZmlnIHsKKyAg ICAgICAgaWQ6ICJhYmMiLmludG8oKSwKKyAgICAgICAgaW5jbHVkZTogdmVjIVtGaWx0ZXJSdWxl OjpSZW1vdGUoInJlbW90ZS1iIi50b19zdHJpbmcoKSldLAorICAgICAgICBleGNsdWRlOiB2ZWMh W10sCisgICAgfSk7CisKKyAgICBhc3NlcnQhKCF2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3Rl LWIiKSk7CisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWEiKSk7Cit9 CisKKyNbdGVzdF0KK2ZuIGNhbl9za2lwX3JlbW90ZV9jYW5ub3Rfc2tpcF9pZl9hbnlfb3RoZXJf aW5jbHVkZSgpIHsKKyAgICBsZXQgdmlldyA9IFZpZXc6Om5ldyhWaWV3Q29uZmlnIHsKKyAgICAg ICAgaWQ6ICJhYmMiLmludG8oKSwKKyAgICAgICAgaW5jbHVkZTogdmVjIVsKKyAgICAgICAgICAg IEZpbHRlclJ1bGU6OlJlbW90ZSgicmVtb3RlLWIiLnRvX3N0cmluZygpKSwKKyAgICAgICAgICAg IEZpbHRlclJ1bGU6OlJlc291cmNlSWQoInJlc291cmNlL3JlbW90ZS1hL2d1ZXN0LzEwMCIudG9f c3RyaW5nKCkpLAorICAgICAgICBdLAorICAgICAgICBleGNsdWRlOiB2ZWMhW10sCisgICAgfSk7 CisKKyAgICBhc3NlcnQhKCF2aWV3LmNhbl9za2lwX3JlbW90ZSgicmVtb3RlLWIiKSk7CisgICAg YXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1hIikpOworfQorCisjW3Rlc3Rd CitmbiBjYW5fc2tpcF9yZW1vdGVfZXhwbGljaXRfcmVtb3RlX2V4Y2x1ZGUoKSB7CisgICAgbGV0 IHZpZXcgPSBWaWV3OjpuZXcoVmlld0NvbmZpZyB7CisgICAgICAgIGlkOiAiYWJjIi5pbnRvKCks CisgICAgICAgIGluY2x1ZGU6IHZlYyFbRmlsdGVyUnVsZTo6UmVzb3VyY2VJZCgKKyAgICAgICAg ICAgICJyZXNvdXJjZS9yZW1vdGUtYS9ndWVzdC8xMDAiLnRvX3N0cmluZygpLAorICAgICAgICAp XSwKKyAgICAgICAgZXhjbHVkZTogdmVjIVtGaWx0ZXJSdWxlOjpSZW1vdGUoInJlbW90ZS1hIi50 b19zdHJpbmcoKSldLAorICAgIH0pOworCisgICAgYXNzZXJ0ISh2aWV3LmNhbl9za2lwX3JlbW90 ZSgicmVtb3RlLWEiKSk7Cit9CisKKyNbdGVzdF0KK2ZuIGNhbl9za2lwX3JlbW90ZV93aXRoX2Vt cHR5X2NvbmZpZygpIHsKKyAgICBsZXQgdmlldyA9IFZpZXc6Om5ldyhWaWV3Q29uZmlnIHsKKyAg ICAgICAgaWQ6ICJhYmMiLmludG8oKSwKKyAgICAgICAgaW5jbHVkZTogdmVjIVtdLAorICAgICAg ICBleGNsdWRlOiB2ZWMhW10sCisgICAgfSk7CisKKyAgICBhc3NlcnQhKCF2aWV3LmNhbl9za2lw X3JlbW90ZSgicmVtb3RlLWEiKSk7CisgICAgYXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1vdGUo InJlbW90ZS1iIikpOworfQorCisjW3Rlc3RdCitmbiBjYW5fc2tpcF9yZW1vdGVfd2l0aF9ub19y ZW1vdGVfaW5jbHVkZXMoKSB7CisgICAgbGV0IHZpZXcgPSBWaWV3OjpuZXcoVmlld0NvbmZpZyB7 CisgICAgICAgIGlkOiAiYWJjIi5pbnRvKCksCisgICAgICAgIGluY2x1ZGU6IHZlYyFbRmlsdGVy UnVsZTo6UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICJyZXNvdXJjZS9yZW1vdGUtYS9ndWVzdC8x MDAiLnRvX3N0cmluZygpLAorICAgICAgICApXSwKKyAgICAgICAgZXhjbHVkZTogdmVjIVtdLAor ICAgIH0pOworCisgICAgYXNzZXJ0ISghdmlldy5jYW5fc2tpcF9yZW1vdGUoInJlbW90ZS1hIikp OworICAgIGFzc2VydCEoIXZpZXcuY2FuX3NraXBfcmVtb3RlKCJyZW1vdGUtYiIpKTsKK30KKwor I1t0ZXN0XQorZm4gZXhwbGljaXRseV9pbmNsdWRlZF9yZW1vdGUoKSB7CisgICAgbGV0IHZpZXcg PSBWaWV3OjpuZXcoVmlld0NvbmZpZyB7CisgICAgICAgIGlkOiAiYWJjIi5pbnRvKCksCisgICAg ICAgIGluY2x1ZGU6IHZlYyFbRmlsdGVyUnVsZTo6UmVtb3RlKCJyZW1vdGUtYiIudG9fc3RyaW5n KCkpXSwKKyAgICAgICAgZXhjbHVkZTogdmVjIVtdLAorICAgIH0pOworCisgICAgYXNzZXJ0ISh2 aWV3LmlzX3JlbW90ZV9leHBsaWNpdGx5X2luY2x1ZGVkKCJyZW1vdGUtYiIpKTsKK30KKworI1t0 ZXN0XQorZm4gaW5jbHVkZWRfYW5kX2V4Y2x1ZGVkX3NhbWVfcmVtb3RlKCkgeworICAgIGxldCB2 aWV3ID0gVmlldzo6bmV3KFZpZXdDb25maWcgeworICAgICAgICBpZDogImFiYyIuaW50bygpLAor ICAgICAgICBpbmNsdWRlOiB2ZWMhW0ZpbHRlclJ1bGU6OlJlbW90ZSgicmVtb3RlLWIiLnRvX3N0 cmluZygpKV0sCisgICAgICAgIGV4Y2x1ZGU6IHZlYyFbRmlsdGVyUnVsZTo6UmVtb3RlKCJyZW1v dGUtYiIudG9fc3RyaW5nKCkpXSwKKyAgICB9KTsKKworICAgIGFzc2VydCEoIXZpZXcuaXNfcmVt b3RlX2V4cGxpY2l0bHlfaW5jbHVkZWQoInJlbW90ZS1iIikpOworfQorCisjW3Rlc3RdCitmbiBu b3RfZXhwbGljaXRseV9pbmNsdWRlZF9yZW1vdGUoKSB7CisgICAgbGV0IHZpZXcgPSBWaWV3Ojpu ZXcoVmlld0NvbmZpZyB7CisgICAgICAgIGlkOiAiYWJjIi5pbnRvKCksCisgICAgICAgIGluY2x1 ZGU6IHZlYyFbXSwKKyAgICAgICAgZXhjbHVkZTogdmVjIVtdLAorICAgIH0pOworCisgICAgLy8g QXNzZXJ0IHRoYXQgaXMgbm90ICpleHBsaWNpdGx5KiBpbmNsdWRlZAorICAgIGFzc2VydCEoIXZp ZXcuaXNfcmVtb3RlX2V4cGxpY2l0bHlfaW5jbHVkZWQoInJlbW90ZS1iIikpOworfQotLSAKMi40 Ny4zCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBk bS1kZXZlbCBtYWlsaW5nIGxpc3QKcGRtLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3BkbS1kZXZlbAo=