diff --git a/docs/docs-packr.go b/docs/docs-packr.go index 2754ed5..5029a76 100644 --- a/docs/docs-packr.go +++ b/docs/docs-packr.go @@ -12,4 +12,5 @@ func init() { packr.PackJSONBytes("./", "package.go", "\"Ly8gUGFja2FnZSBkb2NzIEdvdGlmeSBSRVNULUFQSS4KLy8KLy8gVGhpcyBpcyB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgR290aWZ5IFJFU1QtQVBJLgovLwovLyAjIEF1dGhlbnRpY2F0aW9uCi8vIEluIEdvdGlmeSB0aGVyZSBhcmUgdHdvIHRva2VuIHR5cGVzOgovLyBfX2NsaWVudFRva2VuX186IGEgY2xpZW50IGlzIHNvbWV0aGluZyB0aGF0IHJlY2VpdmVzIG1lc3NhZ2UgYW5kIG1hbmFnZXMgc3R1ZmYgbGlrZSBjcmVhdGluZyBuZXcgdG9rZW5zIG9yIGRlbGV0ZSBtZXNzYWdlcy4gKGYuZXggdGhpcyB0b2tlbiBzaG91bGQgYmUgdXNlZCBmb3IgYW4gYW5kcm9pZCBhcHApCi8vIF9fYXBwVG9rZW5fXzogYW4gYXBwbGljYXRpb24gaXMgc29tZXRoaW5nIHRoYXQgc2VuZHMgbWVzc2FnZXMgKGYuZXguIHRoaXMgdG9rZW4gc2hvdWxkIGJlIHVzZWQgZm9yIGEgc2hlbGwgc2NyaXB0KQovLwovLyBUaGUgdG9rZW4gY2FuIGJlIGVpdGhlciB0cmFuc21pdHRlZCB0aHJvdWdoIGEgaGVhZGVyIG5hbWVkIGBYLUdvdGlmeS1LZXlgIG9yIGEgcXVlcnkgcGFyYW1ldGVyIG5hbWVkIGB0b2tlbmAuCi8vIFRoZXJlIGlzIGFsc28gdGhlIHBvc3NpYmlsaXR5IHRvIGF1dGhlbnRpY2F0ZSB0aHJvdWdoIGJhc2ljIGF1dGgsIHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBjbGllbnRUb2tlbi4KLy8KLy8gXC0tLQovLwovLyBGb3VuZCBhIGJ1ZyBvciBoYXZlIHNvbWUgcXVlc3Rpb25zPyBbQ3JlYXRlIGFuIGlzc3VlIG9uIEdpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2dvdGlmeS9zZXJ2ZXIvaXNzdWVzKQovLwovLyAgICAgU2NoZW1lczogaHR0cCwgaHR0cHMKLy8gICAgIEhvc3Q6IGxvY2FsaG9zdAovLyAgICAgVmVyc2lvbjogMS4wLjEKLy8gICAgIExpY2Vuc2U6IE1JVCBodHRwczovL2dpdGh1Yi5jb20vZ290aWZ5L3NlcnZlci9ibG9iL21hc3Rlci9MSUNFTlNFCi8vCi8vICAgICBDb25zdW1lczoKLy8gICAgIC0gYXBwbGljYXRpb24vanNvbgovLwovLyAgICAgUHJvZHVjZXM6Ci8vICAgICAtIGFwcGxpY2F0aW9uL2pzb24KLy8KLy8gICAgIFNlY3VyaXR5RGVmaW5pdGlvbnM6Ci8vICAgICAgICBhcHBUb2tlblF1ZXJ5OgovLyAgICAgICAgICAgdHlwZTogYXBpS2V5Ci8vICAgICAgICAgICBuYW1lOiB0b2tlbgovLyAgICAgICAgICAgaW46IHF1ZXJ5Ci8vICAgICAgICBjbGllbnRUb2tlblF1ZXJ5OgovLyAgICAgICAgICAgdHlwZTogYXBpS2V5Ci8vICAgICAgICAgICBuYW1lOiB0b2tlbgovLyAgICAgICAgICAgaW46IHF1ZXJ5Ci8vIAkgICAgICBhcHBUb2tlbkhlYWRlcjoKLy8gICAgICAgICAgIHR5cGU6IGFwaUtleQovLyAgICAgICAgICAgbmFtZTogWC1Hb3RpZnktS2V5Ci8vICAgICAgICAgICBpbjogaGVhZGVyCi8vIAkgICAgICBjbGllbnRUb2tlbkhlYWRlcjoKLy8gICAgICAgICAgIHR5cGU6IGFwaUtleQovLyAgICAgICAgICAgbmFtZTogWC1Hb3RpZnktS2V5Ci8vICAgICAgICAgICBpbjogaGVhZGVyCi8vICAgICAgICBiYXNpY0F1dGg6Ci8vICAgICAgICAgICB0eXBlOiBiYXNpYwovLwovLyBzd2FnZ2VyOm1ldGEKcGFja2FnZSBkb2NzCg==\"") packr.PackJSONBytes("./", "spec.json", "\"ewogICJjb25zdW1lcyI6IFsKICAgICJhcHBsaWNhdGlvbi9qc29uIgogIF0sCiAgInByb2R1Y2VzIjogWwogICAgImFwcGxpY2F0aW9uL2pzb24iCiAgXSwKICAic2NoZW1lcyI6IFsKICAgICJodHRwIiwKICAgICJodHRwcyIKICBdLAogICJzd2FnZ2VyIjogIjIuMCIsCiAgImluZm8iOiB7CiAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgR290aWZ5IFJFU1QtQVBJLlxuXG4jIEF1dGhlbnRpY2F0aW9uXG5JbiBHb3RpZnkgdGhlcmUgYXJlIHR3byB0b2tlbiB0eXBlczpcbl9fY2xpZW50VG9rZW5fXzogYSBjbGllbnQgaXMgc29tZXRoaW5nIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZSBhbmQgbWFuYWdlcyBzdHVmZiBsaWtlIGNyZWF0aW5nIG5ldyB0b2tlbnMgb3IgZGVsZXRlIG1lc3NhZ2VzLiAoZi5leCB0aGlzIHRva2VuIHNob3VsZCBiZSB1c2VkIGZvciBhbiBhbmRyb2lkIGFwcClcbl9fYXBwVG9rZW5fXzogYW4gYXBwbGljYXRpb24gaXMgc29tZXRoaW5nIHRoYXQgc2VuZHMgbWVzc2FnZXMgKGYuZXguIHRoaXMgdG9rZW4gc2hvdWxkIGJlIHVzZWQgZm9yIGEgc2hlbGwgc2NyaXB0KVxuXG5UaGUgdG9rZW4gY2FuIGJlIGVpdGhlciB0cmFuc21pdHRlZCB0aHJvdWdoIGEgaGVhZGVyIG5hbWVkIGBYLUdvdGlmeS1LZXlgIG9yIGEgcXVlcnkgcGFyYW1ldGVyIG5hbWVkIGB0b2tlbmAuXG5UaGVyZSBpcyBhbHNvIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRoZW50aWNhdGUgdGhyb3VnaCBiYXNpYyBhdXRoLCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgY2xpZW50VG9rZW4uXG5cblxcLS0tXG5cbkZvdW5kIGEgYnVnIG9yIGhhdmUgc29tZSBxdWVzdGlvbnM/IFtDcmVhdGUgYW4gaXNzdWUgb24gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vZ290aWZ5L3NlcnZlci9pc3N1ZXMpIiwKICAgICJ0aXRsZSI6ICJHb3RpZnkgUkVTVC1BUEkuIiwKICAgICJsaWNlbnNlIjogewogICAgICAibmFtZSI6ICJNSVQiLAogICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nb3RpZnkvc2VydmVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UiCiAgICB9LAogICAgInZlcnNpb24iOiAiMS4wLjEiCiAgfSwKICAiaG9zdCI6ICJsb2NhbGhvc3QiLAogICJwYXRocyI6IHsKICAgICIvYXBwbGljYXRpb24iOiB7CiAgICAgICJnZXQiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiY29uc3VtZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidG9rZW4iCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJSZXR1cm4gYWxsIGFwcGxpY2F0aW9ucy4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRBcHBzIiwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9BcHBsaWNhdGlvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAxIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5hdXRob3JpemVkIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMyI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvcmJpZGRlbiIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInBvc3QiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiY29uc3VtZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidG9rZW4iCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJDcmVhdGUgYW4gYXBwbGljYXRpb24uIiwKICAgICAgICAib3BlcmF0aW9uSWQiOiAiY3JlYXRlQXBwIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSBhcHBsaWNhdGlvbiB0byBhZGQiLAogICAgICAgICAgICAibmFtZSI6ICJib2R5IiwKICAgICAgICAgICAgImluIjogImJvZHkiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvQXBwbGljYXRpb24iCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvQXBwbGljYXRpb24iCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAxIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5hdXRob3JpemVkIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMyI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvcmJpZGRlbiIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICIvYXBwbGljYXRpb24ve2lkfSI6IHsKICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJjb25zdW1lcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIkRlbGV0ZSBhbiBhcHBsaWNhdGlvbi4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJkZWxldGVBcHAiLAogICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAidGhlIGFwcGxpY2F0aW9uIGlkIiwKICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siCiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL2FwcGxpY2F0aW9uL3tpZH0vbWVzc2FnZSI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAibWVzc2FnZSIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIlJldHVybiBhbGwgbWVzc2FnZXMgZnJvbSBhIHNwZWNpZmljIGFwcGxpY2F0aW9uLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImdldEFwcE1lc3NhZ2VzIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSBhcHBsaWNhdGlvbiBpZCIsCiAgICAgICAgICAgICJuYW1lIjogImlkIiwKICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9NZXNzYWdlIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yYmlkZGVuIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICAiZGVsZXRlIjogewogICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuSGVhZGVyIjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlblF1ZXJ5IjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJiYXNpY0F1dGgiOiBbXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJtZXNzYWdlIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiRGVsZXRlIGFsbCBtZXNzYWdlcyBmcm9tIGEgc3BlY2lmaWMgYXBwbGljYXRpb24uIiwKICAgICAgICAib3BlcmF0aW9uSWQiOiAiZGVsZXRlQXBwTWVzc2FnZXMiLAogICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAidGhlIGFwcGxpY2F0aW9uIGlkIiwKICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siCiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL2NsaWVudCI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJjb25zdW1lcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIlJldHVybiBhbGwgY2xpZW50cy4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRDbGllbnRzIiwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9DbGllbnQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJwb3N0IjogewogICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuSGVhZGVyIjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlblF1ZXJ5IjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJiYXNpY0F1dGgiOiBbXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImNvbnN1bWVzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgInRva2VuIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiQ3JlYXRlIGEgY2xpZW50LiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImNyZWF0ZUNsaWVudCIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0aGUgY2xpZW50IHRvIGFkZCIsCiAgICAgICAgICAgICJuYW1lIjogImJvZHkiLAogICAgICAgICAgICAiaW4iOiAiYm9keSIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9DbGllbnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvQ2xpZW50IgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL2NsaWVudC97aWR9IjogewogICAgICAiZGVsZXRlIjogewogICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuSGVhZGVyIjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlblF1ZXJ5IjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJiYXNpY0F1dGgiOiBbXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImNvbnN1bWVzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgInRva2VuIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiRGVsZXRlIGEgY2xpZW50LiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImRlbGV0ZUNsaWVudCIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0aGUgY2xpZW50IGlkIiwKICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siCiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL2N1cnJlbnQvdXNlciI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidXNlciIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIlJldHVybiB0aGUgY3VycmVudCB1c2VyLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImN1cnJlbnRVc2VyIiwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1VzZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAxIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5hdXRob3JpemVkIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMyI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvcmJpZGRlbiIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICIvY3VycmVudC91c2VyL3Bhc3N3b3JkIjogewogICAgICAicG9zdCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJjb25zdW1lcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJ1c2VyIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiVXBkYXRlIHRoZSBwYXNzd29yZCBvZiB0aGUgY3VycmVudCB1c2VyLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogInVwZGF0ZUN1cnJlbnRVc2VyIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSB1c2VyIiwKICAgICAgICAgICAgIm5hbWUiOiAiYm9keSIsCiAgICAgICAgICAgICJpbiI6ICJib2R5IiwKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1VzZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siCiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL21lc3NhZ2UiOiB7CiAgICAgICJnZXQiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgIm1lc3NhZ2UiCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJSZXR1cm4gYWxsIG1lc3NhZ2VzLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImdldE1lc3NhZ2VzIiwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9NZXNzYWdlIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yYmlkZGVuIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICAicG9zdCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJhcHBUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYXBwVG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiX19OT1RFX186IFRoaXMgQVBJIE9OTFkgYWNjZXB0cyBhbiBhcHBsaWNhdGlvbiB0b2tlbiBhcyBhdXRoZW50aWNhdGlvbi4iLAogICAgICAgICJjb25zdW1lcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJtZXNzYWdlIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiQ3JlYXRlIGEgbWVzc2FnZS4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJjcmVhdGVNZXNzYWdlIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSBtZXNzYWdlIHRvIGFkZCIsCiAgICAgICAgICAgICJuYW1lIjogImJvZHkiLAogICAgICAgICAgICAiaW4iOiAiYm9keSIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9NZXNzYWdlIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9NZXNzYWdlIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWxldGUiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgIm1lc3NhZ2UiCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJEZWxldGUgYWxsIG1lc3NhZ2VzLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImRlbGV0ZU1lc3NhZ2VzIiwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIgogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yYmlkZGVuIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIi9tZXNzYWdlL3tpZH0iOiB7CiAgICAgICJkZWxldGUiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgIm1lc3NhZ2UiCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJEZWxldGVzIGEgbWVzc2FnZSB3aXRoIGFuIGlkLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImRlbGV0ZU1lc3NhZ2UiLAogICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSBtZXNzYWdlIGlkIiwKICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siCiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL3N0cmVhbSI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAibWVzc2FnZSIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIldlYnNvY2tldCwgcmV0dXJuIG5ld2x5IGNyZWF0ZWQgbWVzc2FnZXMuIiwKICAgICAgICAib3BlcmF0aW9uSWQiOiAic3RyZWFtTWVzc2FnZXMiLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvTWVzc2FnZSIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yYmlkZGVuIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIi91c2VyIjogewogICAgICAiZ2V0IjogewogICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuSGVhZGVyIjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlblF1ZXJ5IjogW10KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJiYXNpY0F1dGgiOiBbXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJ1c2VyIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiUmV0dXJuIGFsbCB1c2Vycy4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRVc2VycyIsCiAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJPayIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAogICAgICAgICAgICAgICJpdGVtcyI6IHsKICAgICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAxIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5hdXRob3JpemVkIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMyI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvcmJpZGRlbiIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInBvc3QiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiY29uc3VtZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidXNlciIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIkNyZWF0ZSBhIHVzZXIuIiwKICAgICAgICAib3BlcmF0aW9uSWQiOiAiY3JlYXRlVXNlciIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0aGUgdXNlciB0byBhZGQiLAogICAgICAgICAgICAibmFtZSI6ICJib2R5IiwKICAgICAgICAgICAgImluIjogImJvZHkiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJPayIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9Vc2VyIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiL3VzZXIve2lkfSI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjbGllbnRUb2tlbkhlYWRlciI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5RdWVyeSI6IFtdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiYmFzaWNBdXRoIjogW10KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJjb25zdW1lcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInByb2R1Y2VzIjogWwogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgXSwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJ1c2VyIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiR2V0IGEgdXNlci4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRVc2VyIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0aGUgdXNlciBpZCIsCiAgICAgICAgICAgICJuYW1lIjogImlkIiwKICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1VzZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAxIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5hdXRob3JpemVkIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMyI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvcmJpZGRlbiIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInBvc3QiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiY29uc3VtZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidXNlciIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIlVwZGF0ZSBhIHVzZXIuIiwKICAgICAgICAib3BlcmF0aW9uSWQiOiAidXBkYXRlVXNlciIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAidGhlIHVzZXIgaWQiLAogICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRoZSB1cGRhdGVkIHVzZXIiLAogICAgICAgICAgICAibmFtZSI6ICJib2R5IiwKICAgICAgICAgICAgImluIjogImJvZHkiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJPayIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9Vc2VyIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIjQwMSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuYXV0aG9yaXplZCIsCiAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9FcnJvciIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDMiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JiaWRkZW4iLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWxldGUiOiB7CiAgICAgICAgInNlY3VyaXR5IjogWwogICAgICAgICAgewogICAgICAgICAgICAiY2xpZW50VG9rZW5IZWFkZXIiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNsaWVudFRva2VuUXVlcnkiOiBbXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImJhc2ljQXV0aCI6IFtdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJvZHVjZXMiOiBbCiAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBdLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgInVzZXIiCiAgICAgICAgXSwKICAgICAgICAic3VtbWFyeSI6ICJEZWxldGVzIGEgdXNlci4iLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJkZWxldGVVc2VyIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0aGUgdXNlciBpZCIsCiAgICAgICAgICAgICJuYW1lIjogImlkIiwKICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9rIgogICAgICAgICAgfSwKICAgICAgICAgICI0MDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmF1dGhvcml6ZWQiLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRXJyb3IiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDAzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yYmlkZGVuIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0Vycm9yIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIi92ZXJzaW9uIjogewogICAgICAiZ2V0IjogewogICAgICAgICJwcm9kdWNlcyI6IFsKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIF0sCiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAidmVyc2lvbiIKICAgICAgICBdLAogICAgICAgICJzdW1tYXJ5IjogIkdldCB2ZXJzaW9uIGluZm9ybWF0aW9uLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogImdldFZlcnNpb24iLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT2siLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVmVyc2lvbkluZm8iCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJkZWZpbml0aW9ucyI6IHsKICAgICJBcHBsaWNhdGlvbiI6IHsKICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBBcHBsaWNhdGlvbiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBhcHAgd2hpY2ggY2FuIHNlbmQgbm90aWZpY2F0aW9ucy4iLAogICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAidGl0bGUiOiAiQXBwbGljYXRpb24gTW9kZWwiLAogICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgImlkIiwKICAgICAgICAibmFtZSIsCiAgICAgICAgImRlc2NyaXB0aW9uIgogICAgICBdLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiZGVzY3JpcHRpb24iOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbi4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiRGVzY3JpcHRpb24iLAogICAgICAgICAgImV4YW1wbGUiOiAiQmFja3VwIHNlcnZlciBmb3IgdGhlIGludGVyd2VicyIKICAgICAgICB9LAogICAgICAgICJpZCI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgYXBwbGljYXRpb24gaWQuIENhbiBiZSB1c2VkIGFzIGBhcHBUb2tlbmAuIFNlZSBBdXRoZW50aWNhdGlvbi4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiSUQiLAogICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZSwKICAgICAgICAgICJleGFtcGxlIjogIkFXSDB3WjVyME1iYWMuciIKICAgICAgICB9LAogICAgICAgICJuYW1lIjogewogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBhcHBsaWNhdGlvbiBuYW1lLiBUaGlzIGlzIGhvdyB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiTmFtZSIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJCYWNrdXAgU2VydmVyIgogICAgICAgIH0KICAgICAgfSwKICAgICAgIngtZ28tcGFja2FnZSI6ICJnaXRodWIuY29tL2dvdGlmeS9zZXJ2ZXIvbW9kZWwiCiAgICB9LAogICAgIkNsaWVudCI6IHsKICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBDbGllbnQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgYSBkZXZpY2Ugd2hpY2ggY2FuIHJlY2VpdmUgbm90aWZpY2F0aW9ucyAoYW5kIG90aGVyIHN0dWZmKS4iLAogICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAidGl0bGUiOiAiQ2xpZW50IE1vZGVsIiwKICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICJpZCIsCiAgICAgICAgIm5hbWUiCiAgICAgIF0sCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJpZCI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgY2xpZW50IGlkLiBDYW4gYmUgdXNlZCBhcyBgY2xpZW50VG9rZW5gLiBTZWUgQXV0aGVudGljYXRpb24uIiwKICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAieC1nby1uYW1lIjogIklEIiwKICAgICAgICAgICJyZWFkT25seSI6IHRydWUsCiAgICAgICAgICAiZXhhbXBsZSI6ICJDV0gwd1o1cjBNYmFjLnIiCiAgICAgICAgfSwKICAgICAgICAibmFtZSI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgY2xpZW50IG5hbWUuIFRoaXMgaXMgaG93IHRoZSBjbGllbnQgc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiTmFtZSIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJBbmRyb2lkIFBob25lIgogICAgICAgIH0KICAgICAgfSwKICAgICAgIngtZ28tcGFja2FnZSI6ICJnaXRodWIuY29tL2dvdGlmeS9zZXJ2ZXIvbW9kZWwiCiAgICB9LAogICAgIkVycm9yIjogewogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIEVycm9yIGNvbnRhaW5zIGVycm9yIHJlbGV2YW50IGluZm9ybWF0aW9uLiIsCiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJ0aXRsZSI6ICJFcnJvciBNb2RlbCIsCiAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAiZXJyb3IiLAogICAgICAgICJlcnJvckNvZGUiLAogICAgICAgICJlcnJvckRlc2NyaXB0aW9uIgogICAgICBdLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiZXJyb3IiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGdlbmVyYWwgZXJyb3IgbWVzc2FnZSIsCiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJFcnJvciIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJVbmF1dGhvcml6ZWQiCiAgICAgICAgfSwKICAgICAgICAiZXJyb3JDb2RlIjogewogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBodHRwIGVycm9yIGNvZGUuIiwKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgImZvcm1hdCI6ICJpbnQ2NCIsCiAgICAgICAgICAieC1nby1uYW1lIjogIkVycm9yQ29kZSIsCiAgICAgICAgICAiZXhhbXBsZSI6IDQwMQogICAgICAgIH0sCiAgICAgICAgImVycm9yRGVzY3JpcHRpb24iOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGh0dHAgZXJyb3IgY29kZS4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiRXJyb3JEZXNjcmlwdGlvbiIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJ5b3UgbmVlZCB0byBwcm92aWRlIGEgdmFsaWQgYWNjZXNzIHRva2VuIG9yIHVzZXIgY3JlZGVudGlhbHMgdG8gYWNjZXNzIHRoaXMgYXBpIgogICAgICAgIH0KICAgICAgfSwKICAgICAgIngtZ28tcGFja2FnZSI6ICJnaXRodWIuY29tL2dvdGlmeS9zZXJ2ZXIvbW9kZWwiCiAgICB9LAogICAgIk1lc3NhZ2UiOiB7CiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgTWVzc2FnZSBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIG1lc3NhZ2Ugd2hpY2ggd2FzIHNlbnQgYnkgYW4gQXBwbGljYXRpb24uIiwKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInRpdGxlIjogIk1lc3NhZ2UgTW9kZWwiLAogICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgImlkIiwKICAgICAgICAiYXBwaWQiLAogICAgICAgICJtZXNzYWdlIiwKICAgICAgICAidGl0bGUiLAogICAgICAgICJkYXRlIgogICAgICBdLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiYXBwaWQiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGFwcGxpY2F0aW9uIGlkIHRoYXQgc2VuZCB0aGlzIG1lc3NhZ2UuIiwKICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAieC1nby1uYW1lIjogIkFwcGxpY2F0aW9uSUQiLAogICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZSwKICAgICAgICAgICJleGFtcGxlIjogIkFXSDB3WjVyME1iYWMuciIKICAgICAgICB9LAogICAgICAgICJkYXRlIjogewogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBkYXRlIHRoZSBtZXNzYWdlIHdhcyBjcmVhdGVkLiIsCiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImZvcm1hdCI6ICJkYXRlLXRpbWUiLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJEYXRlIiwKICAgICAgICAgICJyZWFkT25seSI6IHRydWUsCiAgICAgICAgICAiZXhhbXBsZSI6ICIyMDE4LTAyLTI3VDE5OjM2OjEwLjUwNDUwNDQrMDE6MDAiCiAgICAgICAgfSwKICAgICAgICAiaWQiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIG1lc3NhZ2UgaWQuIiwKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgImZvcm1hdCI6ICJ1aW50NjQiLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJJRCIsCiAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlLAogICAgICAgICAgImV4YW1wbGUiOiAyNQogICAgICAgIH0sCiAgICAgICAgIm1lc3NhZ2UiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGFjdHVhbCBtZXNzYWdlLiIsCiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJNZXNzYWdlIiwKICAgICAgICAgICJleGFtcGxlIjogIkJhY2t1cCB3YXMgc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLiIKICAgICAgICB9LAogICAgICAgICJwcmlvcml0eSI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgcHJpb3JpdHkgb2YgdGhlIG1lc3NhZ2UuIiwKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgImZvcm1hdCI6ICJpbnQ2NCIsCiAgICAgICAgICAieC1nby1uYW1lIjogIlByaW9yaXR5IiwKICAgICAgICAgICJleGFtcGxlIjogMgogICAgICAgIH0sCiAgICAgICAgInRpdGxlIjogewogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0aXRsZSBvZiB0aGUgbWVzc2FnZS4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiVGl0bGUiLAogICAgICAgICAgImV4YW1wbGUiOiAiQmFja3VwIgogICAgICAgIH0KICAgICAgfSwKICAgICAgIngtZ28tcGFja2FnZSI6ICJnaXRodWIuY29tL2dvdGlmeS9zZXJ2ZXIvbW9kZWwiCiAgICB9LAogICAgIlVzZXIiOiB7CiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgVXNlciBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3JlZGVudGlhbHMgYW5kIG90aGVyIHN0dWZmLiIsCiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJ0aXRsZSI6ICJVc2VyRXh0ZXJuYWwgTW9kZWwiLAogICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgImlkIiwKICAgICAgICAibmFtZSIsCiAgICAgICAgInBhc3MiCiAgICAgIF0sCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJhZG1pbiI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZiB0aGUgdXNlciBpcyBhbiBhZG1pbmlzdHJhdG9yLiIsCiAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiQWRtaW4iLAogICAgICAgICAgImV4YW1wbGUiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaWQiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHVzZXIgaWQuIiwKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgImZvcm1hdCI6ICJ1aW50NjQiLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJJRCIsCiAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlLAogICAgICAgICAgImV4YW1wbGUiOiAyNQogICAgICAgIH0sCiAgICAgICAgIm5hbWUiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHVzZXIgbmFtZS4gRm9yIGxvZ2luLiIsCiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgIngtZ28tbmFtZSI6ICJOYW1lIiwKICAgICAgICAgICJleGFtcGxlIjogInVuaWNvcm4iCiAgICAgICAgfSwKICAgICAgICAicGFzcyI6IHsKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdXNlciBwYXNzd29yZC4gRm9yIGxvZ2luLiAoV2lsbCBub3QgYmUgcmV0dXJuZWQgYnkgYW55IEFQSSkiLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiUGFzcyIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJteXBhc3N3b3JkOyAhd2lsbCBub3QgYmUgcmV0dXJuZWQgYnkgYW55IEFQSSEiCiAgICAgICAgfQogICAgICB9LAogICAgICAieC1nby1uYW1lIjogIlVzZXJFeHRlcm5hbCIsCiAgICAgICJ4LWdvLXBhY2thZ2UiOiAiZ2l0aHViLmNvbS9nb3RpZnkvc2VydmVyL21vZGVsIgogICAgfSwKICAgICJWZXJzaW9uSW5mbyI6IHsKICAgICAgImRlc2NyaXB0aW9uIjogIlZlcnNpb25JbmZvIE1vZGVsIiwKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICJ2ZXJzaW9uIiwKICAgICAgICAiY29tbWl0IiwKICAgICAgICAiYnVpbGREYXRlIgogICAgICBdLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiYnVpbGREYXRlIjogewogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBkYXRlIG9uIHdoaWNoIHRoaXMgYmluYXJ5IHdhcyBidWlsdC4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiQnVpbGREYXRlIiwKICAgICAgICAgICJleGFtcGxlIjogIjIwMTgtMDItMjdUMTk6MzY6MTAuNTA0NTA0NCswMTowMCIKICAgICAgICB9LAogICAgICAgICJjb21taXQiOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGdpdCBjb21taXQgaGFzaCBvbiB3aGljaCB0aGlzIGJpbmFyeSB3YXMgYnVpbHQuIiwKICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAieC1nby1uYW1lIjogIkNvbW1pdCIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJhZTk1MTJiNmI2ZmVlYTU2YTExMGQ1OWEzMzUzZWEzYjljMjkzODY0IgogICAgICAgIH0sCiAgICAgICAgInZlcnNpb24iOiB7CiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgdmVyc2lvbi4iLAogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ4LWdvLW5hbWUiOiAiVmVyc2lvbiIsCiAgICAgICAgICAiZXhhbXBsZSI6ICI1LjIuNiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJ4LWdvLXBhY2thZ2UiOiAiZ2l0aHViLmNvbS9nb3RpZnkvc2VydmVyL21vZGVsIgogICAgfQogIH0sCiAgInNlY3VyaXR5RGVmaW5pdGlvbnMiOiB7CiAgICAiYXBwVG9rZW5IZWFkZXIiOiB7CiAgICAgICJ0eXBlIjogImFwaUtleSIsCiAgICAgICJuYW1lIjogIlgtR290aWZ5LUtleSIsCiAgICAgICJpbiI6ICJoZWFkZXIiCiAgICB9LAogICAgImFwcFRva2VuUXVlcnkiOiB7CiAgICAgICJ0eXBlIjogImFwaUtleSIsCiAgICAgICJuYW1lIjogInRva2VuIiwKICAgICAgImluIjogInF1ZXJ5IgogICAgfSwKICAgICJiYXNpY0F1dGgiOiB7CiAgICAgICJ0eXBlIjogImJhc2ljIgogICAgfSwKICAgICJjbGllbnRUb2tlbkhlYWRlciI6IHsKICAgICAgInR5cGUiOiAiYXBpS2V5IiwKICAgICAgIm5hbWUiOiAiWC1Hb3RpZnktS2V5IiwKICAgICAgImluIjogImhlYWRlciIKICAgIH0sCiAgICAiY2xpZW50VG9rZW5RdWVyeSI6IHsKICAgICAgInR5cGUiOiAiYXBpS2V5IiwKICAgICAgIm5hbWUiOiAidG9rZW4iLAogICAgICAiaW4iOiAicXVlcnkiCiAgICB9CiAgfQp9\"") packr.PackJSONBytes("./", "swagger.go", "\"cGFja2FnZSBkb2NzDQoNCmltcG9ydCAoDQoJImdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbiINCgkiZ2l0aHViLmNvbS9nb2J1ZmZhbG8vcGFja3IiDQoJInN0cmluZ3MiDQopDQoNCi8vIFNlcnZlIHNlcnZlcyB0aGUgZG9jdW1lbnRhdGlvbi4NCmZ1bmMgU2VydmUoY3R4ICpnaW4uQ29udGV4dCkgew0KCWN0eC5Xcml0ZXIuV3JpdGVTdHJpbmcoZ2V0KGN0eC5SZXF1ZXN0LlVSTC5Ib3N0KSkNCn0NCg0KZnVuYyBnZXQoaG9zdCBzdHJpbmcpIHN0cmluZyB7DQoJYm94IDo9IHBhY2tyLk5ld0JveCgiLi8iKQ0KCXJldHVybiBzdHJpbmdzLlJlcGxhY2UoYm94LlN0cmluZygic3BlYy5qc29uIiksICJsb2NhbGhvc3QiLCBob3N0LCAxKQ0KfQ0K\"") + packr.PackJSONBytes("./", "swagger_test.go", "\"cGFja2FnZSBkb2NzCgppbXBvcnQgKAoJInRlc3RpbmciCgkiZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luIgoJImdpdGh1Yi5jb20vc3RyZXRjaHIvdGVzdGlmeS9hc3NlcnQiCgkibmV0L2h0dHAvaHR0cHRlc3QiCgkiaW8vaW91dGlsIgopCgpmdW5jIFRlc3RTZXJ2ZSh0ICp0ZXN0aW5nLlQpIHsKCWdpbi5TZXRNb2RlKGdpbi5UZXN0TW9kZSkKCXJlY29yZGVyIDo9IGh0dHB0ZXN0Lk5ld1JlY29yZGVyKCkKCWN0eCwgXyA6PSBnaW4uQ3JlYXRlVGVzdENvbnRleHQocmVjb3JkZXIpCgljdHguUmVxdWVzdCA9IGh0dHB0ZXN0Lk5ld1JlcXVlc3QoIkdFVCIsICIvc3dhZ2dlciIsIG5pbCkKCWN0eC5SZXF1ZXN0LlVSTC5Ib3N0ID0gImxvY2FsaG9zdCIKCglTZXJ2ZShjdHgpCgoJYWN0dWFsRmlsZUNvbnRlbnQgOj0gZ2V0QWN0dWFsU3BlY0ZpbGVDb250ZW50KHQpCglwYWNrckZpbGVDb250ZW50IDo9IHJlY29yZGVyLkJvZHkuU3RyaW5nKCkKCWFzc2VydC5KU09ORXEodCwgcGFja3JGaWxlQ29udGVudCwgYWN0dWFsRmlsZUNvbnRlbnQsICJwYWNrciBhbmQgc3BlYyBmaWxlIGFyZSBvdXQgb2Ygc3luYyIpCn0KCmZ1bmMgZ2V0QWN0dWFsU3BlY0ZpbGVDb250ZW50KHQgKnRlc3RpbmcuVCkgc3RyaW5nIHsKCWJ5dGVzLCBlcnIgOj0gaW91dGlsLlJlYWRGaWxlKCJzcGVjLmpzb24iKQoJYXNzZXJ0Lk5pbCh0LCBlcnIpCglyZXR1cm4gc3RyaW5nKGJ5dGVzKQp9\"") } diff --git a/docs/swagger_test.go b/docs/swagger_test.go new file mode 100644 index 0000000..0fdffbf --- /dev/null +++ b/docs/swagger_test.go @@ -0,0 +1,29 @@ +package docs + +import ( + "testing" + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + "net/http/httptest" + "io/ioutil" +) + +func TestServe(t *testing.T) { + gin.SetMode(gin.TestMode) + recorder := httptest.NewRecorder() + ctx, _ := gin.CreateTestContext(recorder) + ctx.Request = httptest.NewRequest("GET", "/swagger", nil) + ctx.Request.URL.Host = "localhost" + + Serve(ctx) + + actualFileContent := getActualSpecFileContent(t) + packrFileContent := recorder.Body.String() + assert.JSONEq(t, packrFileContent, actualFileContent, "packr and spec file are out of sync") +} + +func getActualSpecFileContent(t *testing.T) string { + bytes, err := ioutil.ReadFile("spec.json") + assert.Nil(t, err) + return string(bytes) +} \ No newline at end of file