```

LS0tDQp0aXRsZTogIkdyYWZpY28gUmVzZXJ2YXMiDQphdXRob3I6ICJKb8OjbyBQZWRybyBHb2RpbmhvIGUgR2l1bGlhIENhcmRvc28iDQpkYXRlOiAiMjAyNi0wMi0xMiINCm91dHB1dDogDQogaHRtbF9kb2N1bWVudDoNCiAgdG9jOiB0cnVlDQogIHRoZW1lOiBsdW1lbg0KICBoaWdobGlnaHQ6IHRhbmdvDQogIGNvZGVfZm9sZGluZzogc2hvdw0KICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UpDQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNpZHJhcikNCmxpYnJhcnkoaXBlYWRhdGFyKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkod3JpdGV4bCkNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGZyZWRyKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQoNCmNvZmVyX2hpc3QgPC0gZGF0YS5mcmFtZSgNCiAgQW5vID0gMTk5OToyMDI1LA0KICBVU0QgPSBjKDcxLjAsNzEuMSw3MS41LDY3LjEsNjUuOSw2NS45LDY2LjksNjUuNSw2My45LDY0LjIsDQogICAgICAgICAgNjIuMSw2Mi4xLDYyLjYsNjEuNSw2MS4yLDY1LjEsNjUuNyw2NS40LDYyLjcsNjEuNywNCiAgICAgICAgICA2MC45LDU4LjksNTguOCw1OC40LDU4LjQsNTcuOCw1Ni44KSwNCiAgRVVSID0gYygxNy45LDE4LjMsMTkuMiwyMy44LDI1LjIsMjQuOSwyNC4xLDI1LjIsMjYuMywyNi40LA0KICAgICAgICAgIDI3LjcsMjYuMCwyNC40LDI0LjAsMjQuMiwyMS4yLDE5LjksMTkuMSwyMC4yLDIwLjcsDQogICAgICAgICAgMjAuNiwyMS4zLDIwLjYsMjAuNiwyMC4wLDE5LjgsMjAuMyksDQogIEpQWSA9IGMoNi40LDYuMSw1LjEsNC41LDQuMSwzLjksMy43LDMuMiwyLjksMy4xLA0KICAgICAgICAgIDIuOSwzLjcsMy42LDQuMSwzLjgsMy42LDQuMCw0LjAsNC45LDUuMiwNCiAgICAgICAgICA1LjksNi4wLDUuNiw1LjMsNS43LDUuOCw1LjgpLA0KICBHQlAgPSBjKDIuOSwyLjgsMi43LDIuOSwyLjgsMy40LDMuNiw0LjQsNC43LDQuMCwNCiAgICAgICAgICA0LjMsMy45LDMuOCw0LjAsNC4wLDMuOCw0LjcsNC40LDQuNSw0LjQsDQogICAgICAgICAgNC42LDQuNyw0LjgsNC45LDQuOSw0LjcsNC40KSwNCiAgQ05ZID0gYygwLjAsMC4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsDQogICAgICAgICAgMC4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsMS4xLDEuMSwxLjIsMS45LA0KICAgICAgICAgIDIuMCwyLjMsMi44LDIuNywyLjQsMi4yLDIuMCkNCikNCg0KYXR1YWwgIDwtIGNvZmVyX2hpc3QgfD4gZmlsdGVyKEFubyA9PSAyMDI1KQ0KbW9lZGFzIDwtIGMoIlVTRCIsICJFVVIiLCAiSlBZIiwgIkdCUCIsICJDTlkiKQ0Kbm9tZXMgIDwtIGMoIlVTRCDigJQgRMOzbGFyIiwgIkVVUiDigJQgRXVybyIsICJKUFkg4oCUIEllbmUiLCAiR0JQIOKAlCBMaWJyYSIsICJDTlkg4oCUIFl1YW4iKQ0KY29yZXMgIDwtIGMoIiNmZWI3MTIiLCAiIzAyMDIzYyIsICIjNDZiMWUxIiwgIiM4MDgwODAiLCAiI2U2Mzk0NiIpDQojIOKUgOKUgCBTw6lyaWUgcHJpbmNpcGFsIOKAlCBjb2x1bmFzIHZlcnRpY2FpcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCnNlcmllX2F0dWFsIDwtIGxpc3QoDQogIGxpc3QoDQogICAgbmFtZSAgICAgICAgID0gIlBhcnRpY2lwYcOnw6NvIGVtIDIwMjUiLA0KICAgIHR5cGUgICAgICAgICA9ICJjb2x1bW4iLA0KICAgIGNvbG9yQnlQb2ludCA9IFRSVUUsDQogICAgY29sb3JzICAgICAgID0gY29yZXMsDQogICAgZGF0YUxhYmVscyAgID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgZm9ybWF0ICA9ICJ7eX0lIiwNCiAgICAgIHN0eWxlICAgPSBsaXN0KGZvbnRTaXplID0gIjExcHgiLCBmb250V2VpZ2h0ID0gImJvbGQiLCB0ZXh0T3V0bGluZSA9ICJub25lIikNCiAgICApLA0KICAgIGRhdGEgPSBsYXBwbHkoc2VxX2Fsb25nKG1vZWRhcyksIGZ1bmN0aW9uKGkpIHsNCiAgICAgIGxpc3QoDQogICAgICAgIG5hbWUgICAgICA9IG5vbWVzW2ldLA0KICAgICAgICB5ICAgICAgICAgPSBhcy5udW1lcmljKGF0dWFsW1ttb2VkYXNbaV1dXSksDQogICAgICAgIGRyaWxsZG93biA9IHBhc3RlMCgiaGlzdF8iLCBtb2VkYXNbaV0pDQogICAgICApDQogICAgfSkNCiAgKQ0KKQ0KDQojIOKUgOKUgCBEcmlsbGRvd24g4oCUIGxpbmhhIGhpc3TDs3JpY2EgMTk5OeKAkzIwMjUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpkcmlsbGRvd25fbGlzdCA8LSBsYXBwbHkoc2VxX2Fsb25nKG1vZWRhcyksIGZ1bmN0aW9uKGkpIHsNCiAgbGlzdCgNCiAgICBpZCAgICAgICAgPSBwYXN0ZTAoImhpc3RfIiwgbW9lZGFzW2ldKSwNCiAgICBuYW1lICAgICAgPSBwYXN0ZTAobm9tZXNbaV0sICIg4oCUIEV2b2x1w6fDo28gMTk5OeKAkzIwMjUiKSwNCiAgICB0eXBlICAgICAgPSAibGluZSIsDQogICAgY29sb3IgICAgID0gY29yZXNbaV0sDQogICAgbGluZVdpZHRoID0gMi41LA0KICAgIG1hcmtlciAgICA9IGxpc3QocmFkaXVzID0gMyksDQogICAgZGF0YUxhYmVscyA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICBkYXRhID0gbGFwcGx5KHNlcV9sZW4obnJvdyhjb2Zlcl9oaXN0KSksIGZ1bmN0aW9uKGopIHsNCiAgICAgIGxpc3QoYXMuY2hhcmFjdGVyKGNvZmVyX2hpc3QkQW5vW2pdKSwgY29mZXJfaGlzdFtbbW9lZGFzW2ldXV1bal0pDQogICAgfSkNCiAgKQ0KfSkNCg0KIyDilIDilIAgR3LDoWZpY28g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpoaWdoY2hhcnQoKSB8Pg0KICBoY19jaGFydCgNCiAgICB0eXBlICAgICAgICAgICAgPSAiY29sdW1uIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgZXZlbnRzID0gbGlzdCgNCiAgICAgIGRyaWxsZG93biA9IEpTKCJmdW5jdGlvbihlKSB7DQogICAgICAgIHRoaXMuc2V0VGl0bGUoew0KICAgICAgICAgIHRleHQ6IGUucG9pbnQubmFtZSArICcg4oCUIEV2b2x1w6fDo28gbmFzIFJlc2VydmFzIEdsb2JhaXMgKDE5OTnigJMyMDI1KScNCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMuc2V0U3VidGl0bGUoew0KICAgICAgICAgIHRleHQ6ICdDbGlxdWUgZW0gVm9sdGFyIHBhcmEgcmV0b3JuYXIgw6Agdmlzw6NvIGdlcmFsJw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy54QXhpc1swXS51cGRhdGUoeyB0aXRsZTogeyB0ZXh0OiAnQW5vJyB9IH0pOw0KICAgICAgICB0aGlzLnlBeGlzWzBdLnVwZGF0ZSh7IG1heDogbnVsbCB9KTsNCiAgICAgIH0iKSwNCiAgICAgIGRyaWxsdXAgPSBKUygiZnVuY3Rpb24oKSB7DQogICAgICAgIHRoaXMuc2V0VGl0bGUoew0KICAgICAgICAgIHRleHQ6ICdSZXNlcnZhcyBDYW1iaWFpcyBHbG9iYWlzIHBvciBNb2VkYSAoMjAyNSknDQogICAgICAgIH0pOw0KICAgICAgICB0aGlzLnNldFN1YnRpdGxlKHsNCiAgICAgICAgICB0ZXh0OiAnJSBzb2JyZSByZXNlcnZhcyBnbG9iYWlzIGRpdnVsZ2FkYXMgwrcgQ2xpcXVlIG51bWEgbW9lZGEgcGFyYSB2ZXIgYSBldm9sdcOnw6NvIGhpc3TDs3JpY2EgfCBGb250ZTogSU1GIENPRkVSJw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy54QXhpc1swXS51cGRhdGUoeyB0aXRsZTogeyB0ZXh0OiAnTW9lZGEnIH0gfSk7DQogICAgICAgIHRoaXMueUF4aXNbMF0udXBkYXRlKHsgbWF4OiA3MCB9KTsNCiAgICAgIH0iKQ0KICAgICkNCiAgKSB8Pg0KDQogIGhjX3RpdGxlKA0KICAgIHRleHQgID0gIlJlc2VydmFzIENhbWJpYWlzIEdsb2JhaXMgcG9yIE1vZWRhICgyMDI1KSIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjE3cHgiLCBmb250V2VpZ2h0ID0gImJvbGQiLCBjb2xvciA9ICIjMWExYTJlIikNCiAgKSB8Pg0KDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgID0gIiUgc29icmUgcmVzZXJ2YXMgZ2xvYmFpcyBkaXZ1bGdhZGFzIMK3IENsaXF1ZSBudW1hIG1vZWRhIHBhcmEgdmVyIGEgZXZvbHXDp8OjbyBoaXN0w7NyaWNhIHwgRm9udGU6IEZNSSBDT0ZFUiIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjExcHgiLCBjb2xvciA9ICIjN2Y4YzhkIikNCiAgKSB8Pg0KDQogIGhjX3hBeGlzKA0KICAgIHR5cGUgICAgICAgICAgPSAiY2F0ZWdvcnkiLA0KICAgIHRpdGxlICAgICAgICAgPSBsaXN0KHRleHQgPSAiTW9lZGEiKSwNCiAgICBncmlkTGluZVdpZHRoID0gMA0KICApIHw+DQoNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgICAgICAgICA9IGxpc3QodGV4dCA9ICIlIGRhcyBSZXNlcnZhcyBHbG9iYWlzIiksDQogICAgbGFiZWxzICAgICAgICA9IGxpc3QoZm9ybWF0ID0gInt2YWx1ZX0lIiksDQogICAgbWF4ICAgICAgICAgICA9IDcwLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI2YwZjBmMCINCiAgKSB8Pg0KDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGNvbHVtbiA9IGxpc3QoDQogICAgICBib3JkZXJSYWRpdXMgPSA0LA0KICAgICAgc2hvd0luTGVnZW5kID0gRkFMU0UNCiAgICApLA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgYW5pbWF0aW9uID0gbGlzdChkdXJhdGlvbiA9IDEwMDApLA0KICAgICAgc3RhdGVzICAgID0gbGlzdChob3ZlciA9IGxpc3QobGluZVdpZHRoID0gMy41KSkNCiAgICApDQogICkgfD4NCg0KICBoY19hZGRfc2VyaWVzX2xpc3Qoc2VyaWVfYXR1YWwpIHw+DQoNCiAgaGNfZHJpbGxkb3duKA0KICAgIGFsbG93UG9pbnREcmlsbGRvd24gPSBUUlVFLA0KICAgIHNlcmllcyAgICAgICAgICAgICAgPSBkcmlsbGRvd25fbGlzdCwNCiAgICBhY3RpdmVBeGlzTGFiZWxTdHlsZSA9IGxpc3QodGV4dERlY29yYXRpb24gPSAibm9uZSIsIGNvbG9yID0gIiMxYTFhMmUiKSwNCiAgICBicmVhZGNydW1icyA9IGxpc3QoDQogICAgICBidXR0b25UaGVtZSA9IGxpc3QoDQogICAgICAgIGZpbGwgICAgPSAiI2YwZjBmMCIsDQogICAgICAgIHBhZGRpbmcgPSA4LA0KICAgICAgICBzdHlsZSAgID0gbGlzdChjb2xvciA9ICIjMWExYTJlIiwgZm9udFdlaWdodCA9ICJib2xkIikNCiAgICAgICkNCiAgICApDQogICkgfD4NCg0KICBoY190b29sdGlwKA0KICAgIHZhbHVlRGVjaW1hbHMgPSAxLA0KICAgIHBvaW50Rm9ybWF0ICAgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPuKXjzwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnl9JTwvYj4nDQogICkgfD4NCg0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSB8Pg0KDQogIGhjX2V4cG9ydGluZygNCiAgICBlbmFibGVkICA9IFRSVUUsDQogICAgZmlsZW5hbWUgPSAiY29mZXJfaGlzdG9yaWNvIiwNCiAgICBidXR0b25zICA9IGxpc3QoY29udGV4dEJ1dHRvbiA9IGxpc3QoDQogICAgICBtZW51SXRlbXMgPSBjKCJkb3dubG9hZFBORyIsICJkb3dubG9hZFBERiIsICJkb3dubG9hZENTViIpDQogICAgKSkNCiAgKSB8Pg0KDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCAgICA9ICJHcsOhZmljbyBkZSBjb25mZWPDp8OjbyBwcsOzcHJpYTogSWJNYWNybyBCSCIsDQogICAgaHJlZiAgICA9ICJodHRwczovL2RhdGEuaW1mLm9yZyIsDQogICAgc3R5bGUgICA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIpDQogICkNCmBgYA0KYGBgDQoNCg==