import groovy.json.JsonSlurper
def jsonData = """{
"_embedded": {
"categories": [
{
"name": "Allergen",
"value": "Allergen",
"options": [
{
"name": "Antibiotic allergy",
"value": "Antibiotic allergy"
},
{
"name": "Antihypertensive allergy",
"value": "Antihypertensive allergy"
},
{
"name": "Aspirin allergy",
"value": "Aspirin allergy"
},
{
"name": "Corn",
"value": "Corn"
},
{
"name": "Egg",
"value": "Egg"
},
{
"name": "Eggs",
"value": "Eggs"
},
{
"name": "Fish",
"value": "Fish"
},
{
"name": "Gluten",
"value": "Gluten"
},
{
"name": "Ibuprofen allergy",
"value": "Ibuprofen allergy"
},
{
"name": "Insulin allergy",
"value": "Insulin allergy"
},
{
"name": "Kosher",
"value": "Kosher"
},
{
"name": "Milk",
"value": "Milk"
},
{
"name": "Nonsteroidal allergy",
"value": "Nonsteroidal allergy"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Peanut",
"value": "Peanut"
},
{
"name": "Penicillin allergy",
"value": "Penicillin allergy"
},
{
"name": "ShellFish",
"value": "ShellFish"
},
{
"name": "Soy",
"value": "Soy"
},
{
"name": "Tree Nut",
"value": "Tree Nut"
},
{
"name": "Tree Nuts",
"value": "Tree Nuts"
},
{
"name": "Vegan",
"value": "Vegan"
},
{
"name": "Vegetarian",
"value": "Vegetarian"
},
{
"name": "Wheat",
"value": "Wheat"
}
]
},
{
"name": "Colour",
"value": "Colour",
"options": [
{
"name": "Blue",
"value": "Blue"
},
{
"name": "Green",
"value": "Green"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Red",
"value": "Red"
}
]
},
{
"name": "Drinks",
"value": "Drinks",
"options": [
{
"name": "Absinthe",
"value": "Absinthe"
},
{
"name": "Apple",
"value": "Apple"
},
{
"name": "Ballantines",
"value": "Ballantines"
},
{
"name": "Bud light",
"value": "Bud light"
},
{
"name": "Carlsberg",
"value": "Carlsberg"
},
{
"name": "Chardonnay",
"value": "Chardonnay"
},
{
"name": "Corona",
"value": "Corona"
},
{
"name": "Gin & Tonic",
"value": "Gin & Tonic"
},
{
"name": "Glenfiddich",
"value": "Glenfiddich"
},
{
"name": "Heineken",
"value": "Heineken"
},
{
"name": "Johnnie Walker",
"value": "Johnnie Walker"
},
{
"name": "Lemon Drop Martini",
"value": "Lemon Drop Martini"
},
{
"name": "McCallan",
"value": "McCallan"
},
{
"name": "Miller",
"value": "Miller"
},
{
"name": "Mint Julep",
"value": "Mint Julep"
},
{
"name": "Mixed Fruit",
"value": "Mixed Fruit"
},
{
"name": "Mojito",
"value": "Mojito"
},
{
"name": "Old Fashioned",
"value": "Old Fashioned"
},
{
"name": "Orange",
"value": "Orange"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Red Wine",
"value": "Red Wine"
},
{
"name": "Strawberry Daiquiri",
"value": "Strawberry Daiquiri"
},
{
"name": "Tequila",
"value": "Tequila"
},
{
"name": "White Wine",
"value": "White Wine"
}
]
},
{
"name": "Food",
"value": "Food",
"options": [
{
"name": "Caviar",
"value": "Caviar"
},
{
"name": "Chim Chum",
"value": "Chim Chum"
},
{
"name": "Chowmein",
"value": "Chowmein"
},
{
"name": "Fajitas",
"value": "Fajitas"
},
{
"name": "Garlic Prawn Risotto",
"value": "Garlic Prawn Risotto"
},
{
"name": "Indian Cury",
"value": "Indian Cury"
},
{
"name": "Noodle Soup",
"value": "Noodle Soup"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Pasta",
"value": "Pasta"
},
{
"name": "Pizza",
"value": "Pizza"
},
{
"name": "Seafood",
"value": "Seafood"
},
{
"name": "Suki",
"value": "Suki"
},
{
"name": "Tortillas",
"value": "Tortillas"
},
{
"name": "Vegetable Au Gratin",
"value": "Vegetable Au Gratin"
},
{
"name": "Yam Chin Kai",
"value": "Yam Chin Kai"
}
]
},
{
"name": "Leisure",
"value": "Leisure",
"options": [
{
"name": "Cinema",
"value": "Cinema"
},
{
"name": "Cosplay",
"value": "Cosplay"
},
{
"name": "Exercise",
"value": "Exercise"
},
{
"name": "Fishing",
"value": "Fishing"
},
{
"name": "Luxury Vacation Style",
"value": "Luxury Vacation Style"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Reading",
"value": "Reading"
},
{
"name": "Story Telling",
"value": "Story Telling"
}
]
},
{
"name": "Music",
"value": "Music",
"options": [
{
"name": "Blues",
"value": "Blues"
},
{
"name": "Classic Rock",
"value": "Classic Rock"
},
{
"name": "Jazz",
"value": "Jazz"
},
{
"name": "Opera",
"value": "Opera"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Pop",
"value": "Pop"
},
{
"name": "Rock",
"value": "Rock"
}
]
},
{
"name": "Spa",
"value": "Spa",
"options": [
{
"name": "Ayurvedic Spa",
"value": "Ayurvedic Spa"
},
{
"name": "Cruise Ship Spa",
"value": "Cruise Ship Spa"
},
{
"name": "Hot Tub",
"value": "Hot Tub"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
}
]
},
{
"name": "Sports",
"value": "Sports",
"options": [
{
"name": "Air Hockey",
"value": "Air Hockey"
},
{
"name": "Baseball",
"value": "Baseball"
},
{
"name": "BasketBall",
"value": "BasketBall"
},
{
"name": "Carrom",
"value": "Carrom"
},
{
"name": "Chess",
"value": "Chess"
},
{
"name": "Football",
"value": "Football"
},
{
"name": "Golf",
"value": "Golf"
},
{
"name": "Ice Polo",
"value": "Ice Polo"
},
{
"name": "Jet Skiing",
"value": "Jet Skiing"
},
{
"name": "Others(Specify)",
"value": "Others(Specify)"
},
{
"name": "Para-Sailing",
"value": "Para-Sailing"
},
{
"name": "Rock",
"value": "Rock"
},
{
"name": "Scuba-Diving",
"value": "Scuba-Diving"
},
{
"name": "Skurfing",
"value": "Skurfing"
},
{
"name": "Table Tennis",
"value": "Table Tennis"
},
{
"name": "VolleyBall",
"value": "VolleyBall"
}
]
}
]
}
}"""
def expectedMap = ['Allergen': 22, 'Colour': 4]
def resultMap = [:]
def json = new JsonSlurper().parseText(jsonData)
expectedMap.collect{ key, value ->
def result = json.'_embedded'.categories.find{it.name == key}.options?.size()
println "Count of $key: $result"
resultMap[key] = result == value ? true : false
}
assert resultMap.
values().
every{it
}
aW1wb3J0IGdyb292eS5qc29uLkpzb25TbHVycGVyCgpkZWYganNvbkRhdGEgPSAiIiJ7CiAgIl9lbWJlZGRlZCI6IHsKICAgICJjYXRlZ29yaWVzIjogWwogICAgICB7CiAgICAgICAgIm5hbWUiOiAiQWxsZXJnZW4iLAogICAgICAgICJ2YWx1ZSI6ICJBbGxlcmdlbiIsCiAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkFudGliaW90aWMgYWxsZXJneSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJBbnRpYmlvdGljIGFsbGVyZ3kiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJBbnRpaHlwZXJ0ZW5zaXZlIGFsbGVyZ3kiLAogICAgICAgICAgICAidmFsdWUiOiAiQW50aWh5cGVydGVuc2l2ZSBhbGxlcmd5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQXNwaXJpbiBhbGxlcmd5IiwKICAgICAgICAgICAgInZhbHVlIjogIkFzcGlyaW4gYWxsZXJneSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkNvcm4iLAogICAgICAgICAgICAidmFsdWUiOiAiQ29ybiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkVnZyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJFZ2ciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJFZ2dzIiwKICAgICAgICAgICAgInZhbHVlIjogIkVnZ3MiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGaXNoIiwKICAgICAgICAgICAgInZhbHVlIjogIkZpc2giCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHbHV0ZW4iLAogICAgICAgICAgICAidmFsdWUiOiAiR2x1dGVuIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSWJ1cHJvZmVuIGFsbGVyZ3kiLAogICAgICAgICAgICAidmFsdWUiOiAiSWJ1cHJvZmVuIGFsbGVyZ3kiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJJbnN1bGluIGFsbGVyZ3kiLAogICAgICAgICAgICAidmFsdWUiOiAiSW5zdWxpbiBhbGxlcmd5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiS29zaGVyIiwKICAgICAgICAgICAgInZhbHVlIjogIktvc2hlciIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pbGsiLAogICAgICAgICAgICAidmFsdWUiOiAiTWlsayIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk5vbnN0ZXJvaWRhbCBhbGxlcmd5IiwKICAgICAgICAgICAgInZhbHVlIjogIk5vbnN0ZXJvaWRhbCBhbGxlcmd5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT3RoZXJzKFNwZWNpZnkpIiwKICAgICAgICAgICAgInZhbHVlIjogIk90aGVycyhTcGVjaWZ5KSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBlYW51dCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJQZWFudXQiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJQZW5pY2lsbGluIGFsbGVyZ3kiLAogICAgICAgICAgICAidmFsdWUiOiAiUGVuaWNpbGxpbiBhbGxlcmd5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU2hlbGxGaXNoIiwKICAgICAgICAgICAgInZhbHVlIjogIlNoZWxsRmlzaCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlNveSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJTb3kiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJUcmVlIE51dCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJUcmVlIE51dCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRyZWUgTnV0cyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJUcmVlIE51dHMiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJWZWdhbiIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJWZWdhbiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlZlZ2V0YXJpYW4iLAogICAgICAgICAgICAidmFsdWUiOiAiVmVnZXRhcmlhbiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIldoZWF0IiwKICAgICAgICAgICAgInZhbHVlIjogIldoZWF0IgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogIkNvbG91ciIsCiAgICAgICAgInZhbHVlIjogIkNvbG91ciIsCiAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkJsdWUiLAogICAgICAgICAgICAidmFsdWUiOiAiQmx1ZSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdyZWVuIiwKICAgICAgICAgICAgInZhbHVlIjogIkdyZWVuIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT3RoZXJzKFNwZWNpZnkpIiwKICAgICAgICAgICAgInZhbHVlIjogIk90aGVycyhTcGVjaWZ5KSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlJlZCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJSZWQiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiRHJpbmtzIiwKICAgICAgICAidmFsdWUiOiAiRHJpbmtzIiwKICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQWJzaW50aGUiLAogICAgICAgICAgICAidmFsdWUiOiAiQWJzaW50aGUiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJBcHBsZSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJBcHBsZSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkJhbGxhbnRpbmVzIiwKICAgICAgICAgICAgInZhbHVlIjogIkJhbGxhbnRpbmVzIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQnVkIGxpZ2h0IiwKICAgICAgICAgICAgInZhbHVlIjogIkJ1ZCBsaWdodCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkNhcmxzYmVyZyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJDYXJsc2JlcmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDaGFyZG9ubmF5IiwKICAgICAgICAgICAgInZhbHVlIjogIkNoYXJkb25uYXkiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDb3JvbmEiLAogICAgICAgICAgICAidmFsdWUiOiAiQ29yb25hIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiR2luICYgVG9uaWMiLAogICAgICAgICAgICAidmFsdWUiOiAiR2luICYgVG9uaWMiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHbGVuZmlkZGljaCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJHbGVuZmlkZGljaCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkhlaW5la2VuIiwKICAgICAgICAgICAgInZhbHVlIjogIkhlaW5la2VuIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSm9obm5pZSBXYWxrZXIiLAogICAgICAgICAgICAidmFsdWUiOiAiSm9obm5pZSBXYWxrZXIiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJMZW1vbiBEcm9wIE1hcnRpbmkiLAogICAgICAgICAgICAidmFsdWUiOiAiTGVtb24gRHJvcCBNYXJ0aW5pIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWNDYWxsYW4iLAogICAgICAgICAgICAidmFsdWUiOiAiTWNDYWxsYW4iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJNaWxsZXIiLAogICAgICAgICAgICAidmFsdWUiOiAiTWlsbGVyIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWludCBKdWxlcCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJNaW50IEp1bGVwIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWl4ZWQgRnJ1aXQiLAogICAgICAgICAgICAidmFsdWUiOiAiTWl4ZWQgRnJ1aXQiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJNb2ppdG8iLAogICAgICAgICAgICAidmFsdWUiOiAiTW9qaXRvIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT2xkIEZhc2hpb25lZCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJPbGQgRmFzaGlvbmVkIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT3JhbmdlIiwKICAgICAgICAgICAgInZhbHVlIjogIk9yYW5nZSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk90aGVycyhTcGVjaWZ5KSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJPdGhlcnMoU3BlY2lmeSkiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJSZWQgV2luZSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJSZWQgV2luZSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlN0cmF3YmVycnkgRGFpcXVpcmkiLAogICAgICAgICAgICAidmFsdWUiOiAiU3RyYXdiZXJyeSBEYWlxdWlyaSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRlcXVpbGEiLAogICAgICAgICAgICAidmFsdWUiOiAiVGVxdWlsYSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIldoaXRlIFdpbmUiLAogICAgICAgICAgICAidmFsdWUiOiAiV2hpdGUgV2luZSIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJGb29kIiwKICAgICAgICAidmFsdWUiOiAiRm9vZCIsCiAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkNhdmlhciIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJDYXZpYXIiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDaGltIENodW0iLAogICAgICAgICAgICAidmFsdWUiOiAiQ2hpbSBDaHVtIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ2hvd21laW4iLAogICAgICAgICAgICAidmFsdWUiOiAiQ2hvd21laW4iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGYWppdGFzIiwKICAgICAgICAgICAgInZhbHVlIjogIkZhaml0YXMiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHYXJsaWMgUHJhd24gUmlzb3R0byIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJHYXJsaWMgUHJhd24gUmlzb3R0byIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkluZGlhbiBDdXJ5IiwKICAgICAgICAgICAgInZhbHVlIjogIkluZGlhbiBDdXJ5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTm9vZGxlIFNvdXAiLAogICAgICAgICAgICAidmFsdWUiOiAiTm9vZGxlIFNvdXAiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJPdGhlcnMoU3BlY2lmeSkiLAogICAgICAgICAgICAidmFsdWUiOiAiT3RoZXJzKFNwZWNpZnkpIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiUGFzdGEiLAogICAgICAgICAgICAidmFsdWUiOiAiUGFzdGEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJQaXp6YSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJQaXp6YSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlNlYWZvb2QiLAogICAgICAgICAgICAidmFsdWUiOiAiU2VhZm9vZCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlN1a2kiLAogICAgICAgICAgICAidmFsdWUiOiAiU3VraSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvcnRpbGxhcyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJUb3J0aWxsYXMiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJWZWdldGFibGUgQXUgR3JhdGluIiwKICAgICAgICAgICAgInZhbHVlIjogIlZlZ2V0YWJsZSBBdSBHcmF0aW4iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJZYW0gQ2hpbiBLYWkiLAogICAgICAgICAgICAidmFsdWUiOiAiWWFtIENoaW4gS2FpIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogIkxlaXN1cmUiLAogICAgICAgICJ2YWx1ZSI6ICJMZWlzdXJlIiwKICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ2luZW1hIiwKICAgICAgICAgICAgInZhbHVlIjogIkNpbmVtYSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkNvc3BsYXkiLAogICAgICAgICAgICAidmFsdWUiOiAiQ29zcGxheSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkV4ZXJjaXNlIiwKICAgICAgICAgICAgInZhbHVlIjogIkV4ZXJjaXNlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmlzaGluZyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJGaXNoaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTHV4dXJ5IFZhY2F0aW9uIFN0eWxlIiwKICAgICAgICAgICAgInZhbHVlIjogIkx1eHVyeSBWYWNhdGlvbiBTdHlsZSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk90aGVycyhTcGVjaWZ5KSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJPdGhlcnMoU3BlY2lmeSkiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJSZWFkaW5nIiwKICAgICAgICAgICAgInZhbHVlIjogIlJlYWRpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTdG9yeSBUZWxsaW5nIiwKICAgICAgICAgICAgInZhbHVlIjogIlN0b3J5IFRlbGxpbmciCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiTXVzaWMiLAogICAgICAgICJ2YWx1ZSI6ICJNdXNpYyIsCiAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkJsdWVzIiwKICAgICAgICAgICAgInZhbHVlIjogIkJsdWVzIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ2xhc3NpYyBSb2NrIiwKICAgICAgICAgICAgInZhbHVlIjogIkNsYXNzaWMgUm9jayIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkphenoiLAogICAgICAgICAgICAidmFsdWUiOiAiSmF6eiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk9wZXJhIiwKICAgICAgICAgICAgInZhbHVlIjogIk9wZXJhIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT3RoZXJzKFNwZWNpZnkpIiwKICAgICAgICAgICAgInZhbHVlIjogIk90aGVycyhTcGVjaWZ5KSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBvcCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJQb3AiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJSb2NrIiwKICAgICAgICAgICAgInZhbHVlIjogIlJvY2siCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiU3BhIiwKICAgICAgICAidmFsdWUiOiAiU3BhIiwKICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQXl1cnZlZGljIFNwYSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJBeXVydmVkaWMgU3BhIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ3J1aXNlIFNoaXAgU3BhIiwKICAgICAgICAgICAgInZhbHVlIjogIkNydWlzZSBTaGlwIFNwYSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkhvdCBUdWIiLAogICAgICAgICAgICAidmFsdWUiOiAiSG90IFR1YiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk90aGVycyhTcGVjaWZ5KSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJPdGhlcnMoU3BlY2lmeSkiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiU3BvcnRzIiwKICAgICAgICAidmFsdWUiOiAiU3BvcnRzIiwKICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQWlyIEhvY2tleSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJBaXIgSG9ja2V5IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQmFzZWJhbGwiLAogICAgICAgICAgICAidmFsdWUiOiAiQmFzZWJhbGwiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJCYXNrZXRCYWxsIiwKICAgICAgICAgICAgInZhbHVlIjogIkJhc2tldEJhbGwiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDYXJyb20iLAogICAgICAgICAgICAidmFsdWUiOiAiQ2Fycm9tIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ2hlc3MiLAogICAgICAgICAgICAidmFsdWUiOiAiQ2hlc3MiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGb290YmFsbCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJGb290YmFsbCIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdvbGYiLAogICAgICAgICAgICAidmFsdWUiOiAiR29sZiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkljZSBQb2xvIiwKICAgICAgICAgICAgInZhbHVlIjogIkljZSBQb2xvIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSmV0IFNraWluZyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJKZXQgU2tpaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT3RoZXJzKFNwZWNpZnkpIiwKICAgICAgICAgICAgInZhbHVlIjogIk90aGVycyhTcGVjaWZ5KSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBhcmEtU2FpbGluZyIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJQYXJhLVNhaWxpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJSb2NrIiwKICAgICAgICAgICAgInZhbHVlIjogIlJvY2siCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTY3ViYS1EaXZpbmciLAogICAgICAgICAgICAidmFsdWUiOiAiU2N1YmEtRGl2aW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU2t1cmZpbmciLAogICAgICAgICAgICAidmFsdWUiOiAiU2t1cmZpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJUYWJsZSBUZW5uaXMiLAogICAgICAgICAgICAidmFsdWUiOiAiVGFibGUgVGVubmlzIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVm9sbGV5QmFsbCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJWb2xsZXlCYWxsIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXQogIH0KfSIiIgpkZWYgZXhwZWN0ZWRNYXAgPSBbJ0FsbGVyZ2VuJzogMjIsICdDb2xvdXInOiA0XQpkZWYgcmVzdWx0TWFwID0gWzpdCmRlZiBqc29uID0gbmV3IEpzb25TbHVycGVyKCkucGFyc2VUZXh0KGpzb25EYXRhKQpleHBlY3RlZE1hcC5jb2xsZWN0eyBrZXksIHZhbHVlIC0+CglkZWYgcmVzdWx0ID0ganNvbi4nX2VtYmVkZGVkJy5jYXRlZ29yaWVzLmZpbmR7aXQubmFtZSA9PSBrZXl9Lm9wdGlvbnM/LnNpemUoKQoJcHJpbnRsbiAiQ291bnQgb2YgJGtleTogJHJlc3VsdCIKCXJlc3VsdE1hcFtrZXldID0gcmVzdWx0ID09IHZhbHVlID8gdHJ1ZSA6IGZhbHNlCgkKfQphc3NlcnQgcmVzdWx0TWFwLnZhbHVlcygpLmV2ZXJ5e2l0fQo=