IyBNb3ppbGxhIFVzZXIgUHJlZmVyZW5jZXMKCi8qIERvIG5vdCBlZGl0IHRoaXMgZmlsZS4KICoKICogSWYgeW91IG1ha2UgY2hhbmdlcyB0byB0aGlzIGZpbGUgd2hpbGUgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcsCiAqIHRoZSBjaGFuZ2VzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgYXBwbGljYXRpb24gZXhpdHMuCiAqCiAqIFRvIG1ha2UgYSBtYW51YWwgY2hhbmdlIHRvIHByZWZlcmVuY2VzLCB5b3UgY2FuIHZpc2l0IHRoZSBVUkwgYWJvdXQ6Y29uZmlnCiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy91bml4L2N1c3RvbWl6aW5nLmh0bWwjcHJlZnMKICovCgp1c2VyX3ByZWYoImFjY2Vzc2liaWxpdHkudHlwZWFoZWFkZmluZC5mbGFzaEJhciIsIDApOwp1c2VyX3ByZWYoImFwcC51cGRhdGUubGFzdFVwZGF0ZVRpbWUuYWRkb24tYmFja2dyb3VuZC11cGRhdGUtdGltZXIiLCAxMjcyMDU1Mjk1KTsKdXNlcl9wcmVmKCJhcHAudXBkYXRlLmxhc3RVcGRhdGVUaW1lLmJhY2tncm91bmQtdXBkYXRlLXRpbWVyIiwgMTI3MjA1NTI5NSk7CnVzZXJfcHJlZigiYXBwLnVwZGF0ZS5sYXN0VXBkYXRlVGltZS5ibG9ja2xpc3QtYmFja2dyb3VuZC11cGRhdGUtdGltZXIiLCAxMjcyMDU0Njk1KTsKdXNlcl9wcmVmKCJhcHAudXBkYXRlLmxhc3RVcGRhdGVUaW1lLm1pY3Jvc3VtbWFyeS1nZW5lcmF0b3ItdXBkYXRlLXRpbWVyIiwgMTI3MTc4Njk1OSk7CnVzZXJfcHJlZigiYXBwLnVwZGF0ZS5sYXN0VXBkYXRlVGltZS5wbGFjZXMtbWFpbnRlbmFuY2UtdGltZXIiLCAxMjcyMDU0Njk1KTsKdXNlcl9wcmVmKCJhcHAudXBkYXRlLmxhc3RVcGRhdGVUaW1lLnJlc3RhcnQtbmFnLXRpbWVyIiwgMTI2NDU0NTY5Mik7CnVzZXJfcHJlZigiYXBwLnVwZGF0ZS5sYXN0VXBkYXRlVGltZS5zZWFyY2gtZW5naW5lLXVwZGF0ZS10aW1lciIsIDEyNzIwNDI2OTUpOwp1c2VyX3ByZWYoImFwcC51cGRhdGUubmV2ZXIuMy41LjUiLCB0cnVlKTsKdXNlcl9wcmVmKCJhcHAudXBkYXRlLm5ldmVyLjMuNS43IiwgZmFsc2UpOwp1c2VyX3ByZWYoImFwcC51cGRhdGUubmV2ZXIuMy42IiwgdHJ1ZSk7CnVzZXJfcHJlZigiYnJvd3Nlci5kb3dubG9hZC5kaXIiLCAiQzpcXFVzZXJzXFxUb21cXERvd25sb2FkcyIpOwp1c2VyX3ByZWYoImJyb3dzZXIuZG93bmxvYWQubGFzdERpciIsICJjOlxcdG1wIik7CnVzZXJfcHJlZigiYnJvd3Nlci5kb3dubG9hZC5zYXZlX2NvbnZlcnRlcl9pbmRleCIsIDApOwp1c2VyX3ByZWYoImJyb3dzZXIuZmVlZHMuc2hvd0ZpcnN0UnVuVUkiLCBmYWxzZSk7CnVzZXJfcHJlZigiYnJvd3Nlci5maXh1cC5hbHRlcm5hdGUuZW5hYmxlZCIsIGZhbHNlKTsKdXNlcl9wcmVmKCJicm93c2VyLm1pZ3JhdGlvbi52ZXJzaW9uIiwgMSk7CnVzZXJfcHJlZigiYnJvd3Nlci5vcGVuLmxhc3REaXIiLCAiQzpcXHRtcCIpOwp1c2VyX3ByZWYoImJyb3dzZXIucGxhY2VzLmltcG9ydEJvb2ttYXJrc0hUTUwiLCBmYWxzZSk7CnVzZXJfcHJlZigiYnJvd3Nlci5wbGFjZXMuaW1wb3J0RGVmYXVsdHMiLCBmYWxzZSk7CnVzZXJfcHJlZigiYnJvd3Nlci5wbGFjZXMubGVmdFBhbmVGb2xkZXJJZCIsIC0xKTsKdXNlcl9wcmVmKCJicm93c2VyLnBsYWNlcy5taWdyYXRlUG9zdERhdGFBbm5vdGF0aW9ucyIsIGZhbHNlKTsKdXNlcl9wcmVmKCJicm93c2VyLnBsYWNlcy5zbWFydEJvb2ttYXJrc1ZlcnNpb24iLCAxKTsKdXNlcl9wcmVmKCJicm93c2VyLnBsYWNlcy51cGRhdGVSZWNlbnRUYWdzVXJpIiwgZmFsc2UpOwp1c2VyX3ByZWYoImJyb3dzZXIucHJlZmVyZW5jZXMuYWR2YW5jZWQuc2VsZWN0ZWRUYWJJbmRleCIsIDEpOwp1c2VyX3ByZWYoImJyb3dzZXIucmlnaHRzLjMuc2hvd24iLCB0cnVlKTsKdXNlcl9wcmVmKCJicm93c2VyLnNoZWxsLmNoZWNrRGVmYXVsdEJyb3dzZXIiLCBmYWxzZSk7CnVzZXJfcHJlZigiYnJvd3Nlci5zdGFydHVwLmhvbWVwYWdlX292ZXJyaWRlLm1zdG9uZSIsICJydjoxLjkuMS45Iik7CnVzZXJfcHJlZigiYnJvd3Nlci53YXJuT25SZXN0YXJ0IiwgZmFsc2UpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMuZW5hYmxlZEl0ZW1zIiwgIiIpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMubGFzdEFwcFZlcnNpb24iLCAiMy41LjkiKTsKdXNlcl9wcmVmKCJleHRlbnNpb25zLmxpdmVodHRwaGVhZGVycy5leGNsdWRlIiwgZmFsc2UpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMubGl2ZWh0dHBoZWFkZXJzLmV4Y2x1ZGVSZWdleHAiLCAiLmdpZiR8LmpwZyR8LmljbyR8LmNzcyR8LmpzJCIpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMubGl2ZWh0dHBoZWFkZXJzLmZpbHRlciIsIGZhbHNlKTsKdXNlcl9wcmVmKCJleHRlbnNpb25zLmxpdmVodHRwaGVhZGVycy5maWx0ZXJSZWdleHAiLCAiLyR8Lmh0bWwkIik7CnVzZXJfcHJlZigiZXh0ZW5zaW9ucy5saXZlaHR0cGhlYWRlcnMubW9kZSIsIDEpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMubGl2ZWh0dHBoZWFkZXJzLnN0eWxlIiwgMCk7CnVzZXJfcHJlZigiZXh0ZW5zaW9ucy5saXZlaHR0cGhlYWRlcnMudGFiIiwgZmFsc2UpOwp1c2VyX3ByZWYoImV4dGVuc2lvbnMudXBkYXRlLm5vdGlmeVVzZXIiLCBmYWxzZSk7CnVzZXJfcHJlZigiZ2VuZXJhbC51c2VyYWdlbnQuZXh0cmEubWljcm9zb2Z0ZG90bmV0IiwgIiguTkVUIENMUiAzLjUuMzA3MjkpIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuYXV0b19wYWdlX3RyYW5zbGF0ZS5ydWxlcy5ibGFja2xpc3QiLCAiIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuYXV0b19wYWdlX3RyYW5zbGF0ZS5ydWxlcy53aGl0ZWxpc3QiLCAiIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuYXV0b19wYWdlX3RyYW5zbGF0ZS50YXJnZXRfbGFuZyIsICJmciIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmF1dG9fcGFnZV90cmFuc2xhdGUudXNhZ2UiLCAiZW46LTEsZGU6MSIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmF1dG9maWxsLnByb2ZpbGVzIiwgMCk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuYnV0dG9uX29wdGlvbi5ndGJBdXRvRmlsbCIsIHRydWUpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmJ1dHRvbl9vcHRpb24uZ3RiQXV0b0xpbmsiLCB0cnVlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5idXR0b25fb3B0aW9uLmd0YkJvb2ttYXJrcyIsIHRydWUpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmJ1dHRvbl9vcHRpb24uZ3RiUGFnZVJhbmsiLCBmYWxzZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuYnV0dG9uX29wdGlvbi5ndGJTZWFyY2hCb29rbWFya3MiLCB0cnVlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5idXR0b25fb3B0aW9uLmd0YlNlYXJjaEdvb2dsZSIsIHRydWUpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmJ1dHRvbl9vcHRpb24uZ3RiU3BlbGxDaGVjayIsIGZhbHNlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5idXR0b25fb3B0aW9uLmd0YlRyYW5zbGF0ZSIsIHRydWUpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmNvbXBvbmVudC5idW5kbGVkLmRpY3Rpb25hcmllc19jb25maWcuanNvbiIsICI3LjEuMjAxMDA0MDgiKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5jb21wb25lbnQuYnVuZGxlZC5zaGFyZV9wcm92aWRlcnMuanNvbiIsICI3LjEuMjAxMDA0MDgiKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5jb21wb25lbnQuYnVuZGxlZC5zdWdnZXN0X3dpbmRvdy5odG1sIiwgIjcuMS4yMDEwMDQwOCIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmN1c3RvbWJ1dHRvbnMubWlncmF0ZWQiLCAidHJ1ZSIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmN1c3RvbWJ1dHRvbnMub3JkZXIubWlncmF0ZWQudG8udjYiLCBmYWxzZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuY3VzdG9tYnV0dG9ucy52ZXJzaW9uIiwgMSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuZG9uZV9wYWdlX3Nob3duIiwgIjcuMS4yMDEwMDQwOCIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmVuaGFuY2VkX2ZlYXR1cmVzLndlZWsiLCAtMSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuZmlyc3Rfc2VhcmNoIiwgZmFsc2UpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLmZpcnN0X3NlYXJjaF9waW5nX3JldGlyZXMiLCAyKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5maXJzdHJ1bi5kb25lIiwgdHJ1ZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuZ29vZ2xlX2hvbWUiLCAid3d3Lmdvb2dsZS5jb20iKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5nb29nbGVfaG9tZS5kZWZhdWx0IiwgInd3dy5nb29nbGUuY29tIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuaWQiLCAiT2ozNXhUUmd2TERyMkZ3Y0xrdkN5YXZhcVR3S3JsSUlWeEZrNzgzRUx6TGgiKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5pbnN0YWxsX2lkIiwgIk9qMzV4VFJndkxEcjJGd2NMa3ZDeWF2YXFUd0tybElJVnhGazc4M0VMekxoIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuaW5zdGFsbF9waW5nX2Fja2VkIiwgdHJ1ZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuaW5zdGFsbF9waW5nX3JldGlyZXMiLCAxKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5sYXN0X3BpbmdfYXR0ZW1wdCIsICIxMjcyMDQxNzgyMjY1Iik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIubGlua2RvY3Rvci5iYWNrdXAuYnJvd3Nlci5maXh1cC5hbHRlcm5hdGUuZW5hYmxlZCIsIGZhbHNlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5uZXZlcl9zaG93X2RvbmVfcGFnZSIsIGZhbHNlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5uZXd0YWIiLCBmYWxzZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIubmV3dGFiLWhhc2giLCAic3VBS280cU5pbEwrRks2ZWp3aHp4SWdOdFdRPSIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLm9wdGVkX2ludG9fYWR2YW5jZWRfZmVhdHVyZXNfMSIsIGZhbHNlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5ybHoiLCAiMUIzR0dMTF9lblVTMzYxVVMzNzIiKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5zYWZlYnJvd3Npbmcua2V5dXBkYXRldGltZSIsIDEyNzE4Njc5NjYpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNlYXJjaC1pY29uIiwgImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFFQUVCQUFBQUVBSUFCb0JBQUFGZ0FBQUNnQUFBQVFBQUFBSUFBQUFBRUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN1BUNy8zekY2LzlQdHUvL1JiSHgvMDIyNy8rVHp2Yi85dnY1Lzk3aDBmOUplQnovTkhvQS96OThBdjlBZkFEL1BIc0EvMEY2QVA4QUFBQUEvdno3LzErMzMvOE1wK3ovRnJIdy94V3k4Zjhicy9UL0hxcngvM3pFN3YvLy8vNy90OHFwL3pGMkEvODdnd0gvUDRJRC96NTlBUDgrZWdEL1Eza0EvOTdzOHY4Ym90ai9FTG4zL3d5NThmOFB0ZkwvRDdMdy94dXo5UDh2cStmLzgvbi8vLzc3OXY5S2hSMy9PWVlBLzBHRkF2ODhoZ0QvUUlBQy96MTdBUC8wKy9qL042Yk0vd0MwNy84Q3hmNy9Dc1A3L3dtKzl2OEFxdXIvU3JEYi8vNysvdi8vL1A3L1ZaRWwvelNKQVA4N2pRRC9QWVlBLzBPQkJmOCtmUUgvLy8zLy85RHA4Lzg0c003L0NyRGYvd0MxNC84Q3J1TC9LcW5XLzluczhmLzgvdi8vNE9qWC96K0dEZjg1a0FEL1BJd0QvejJKQXY4K2hRRC9Qb0VBLzlDN3B2Lzk3dXYvLy8vKy85WHcrdit3M2VqL2xzL2UvK3J6OS8vLy8vLy8rL3o2LzIybVNmOHFqUUgvT0pNQS96dVFBUDg1aXdML1BJZ0EvenlGQVArT1NTTC9uVjQ0LzdKK1Z2L0FrRzcvN3RyUC8vNy8vZi85Ly83LzYvTHIvMnVvUnY4dGpRSC9QSllBL3p1VEFQODdrd0QvUFk4QS96MktBUDg5aEFEL29sa24vNlJWSFArZVNnai9tRWdSLy9IbzMvLysvdjcvNU96aC8xR2FKdjh0bEFEL09aY0MvenVYQXY4NGxBRC9PNUlDL3oyUEFmODlpd0wvT0lrQS82aFdGZitjVHhEL3BtOUMvNzZpaFAvOC92Ly8rLy8vLzhuYXYvOGZkd0wvTlpzQS96ZVpBUDgzbWdEL1BKUUIvenlVQWY4NGp3RC9QWXNCL3o2SEFmK2ZYaWYvMXI2cy8vNzkvLy81OHUvLzNyK2cvKzNpMnYvKy8vMy9tYmlGL3l5Q0FQODdtZ1AvT3BnRC96ZVdBUDg1bGdEL09wRUIveitUQVA5Q2h3SC83ZUhiLy8vLy92LzI4ZWovdFd3by83dFVBUCs1WFE3LzVNKzUvLy8vL3YrYnNabi9JSEFkL3plVkFQODlsZ1AvTzVNQS96YUpDZjh0WlRyL0R5dUsvLzMvLy8vOS8vLy8wcW1DLzdsVEFQL0taQVQvdlZnQy84aVFXZi8rLy8zLy8vai8veWdweC84R0djTC9FU2F4L3hFZ3R2OEZFTXovQUFMaC93QUIxZi8vL2Y3Ly8vei8vNzU4Ty8vR1hRTC95R1lDLzhSYUF2L09qbGYvKy8vLy8vLy8vLzlRVTkzL0JBRDAvd0FCLy84REFQMy9BQUh6L3dBQTVmOERBdHIvLy8vLy8vdjcrLysyYkNUL3lHTUEvODltQVAvQldRRC8wcStELy8vKy8vLy8vUDcvUmtiZy93RUErZjhBQS96L0FRSDUvd01BOFA4QUFldi9BQURmLy8vNy9QLy8vLzcvdUlOUS83bFhBUC9NWXdML3ZHSU8vL0xtM1AvOC92Ly8xZFQyL3dvTTUvOEFBUDMvQXdIKy93QUIvZjhBQWZiL0JBRHMvd0FDNFA4QUFBQUEvL3o3LytMYnpQK21YeUQvb1V3RS85R3Nodi84Ly8zLzcvSDUvem8vdy84QUFkWC9BZ0w2L3dBQS9mOENBUDMvQUFIMi93QUE3djhBQUFBQWdBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FFQUFBPT0iKTsKdXNlcl9wcmVmKCJsaWdodHdlaWdodFRoZW1lcy51c2VkVGhlbWVzIiwgIlt7XCJpZFwiOlwiMjYzNVwiLFwibmFtZVwiOlwiTW96aWxsYSBGaXJlZm94XCIsXCJoZWFkZXJVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzMvNS8yNjM1L2ZpcmVmb3hfaGVhZGVyLmpwZz8xMjYwOTI1NjI2XCIsXCJmb290ZXJVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzMvNS8yNjM1L2ZpcmVmb3hfZm9vdGVyLmpwZz8xMjYwOTI1NjI2XCIsXCJ0ZXh0Y29sb3JcIjpcIiNmZmZmZmZcIixcImFjY2VudGNvbG9yXCI6XCIjZmZmZmZmXCIsXCJpY29uVVJMXCI6XCJodHRwOi8vZ2V0cGVyc29uYXMtY2RuLm1vemlsbGEubmV0L3N0YXRpYy8zLzUvMjYzNS9wcmV2aWV3X3NtYWxsLmpwZz8xMjYwOTI1NjI2XCIsXCJwcmV2aWV3VVJMXCI6XCJodHRwOi8vZ2V0cGVyc29uYXMtY2RuLm1vemlsbGEubmV0L3N0YXRpYy8zLzUvMjYzNS9wcmV2aWV3LmpwZz8xMjYwOTI1NjI2XCIsXCJhdXRob3JcIjpcIkNvcmVYRVwiLFwiZGVzY3JpcHRpb25cIjpcIkp1c3QgYSBGaXJlZm94IFBlcnNvbmEuIDpEXCIsXCJ1cGRhdGVVUkxcIjpcImh0dHBzOi8vd3d3LmdldHBlcnNvbmFzLmNvbS9lbi1VUy91cGRhdGVfY2hlY2svMjYzNVwiLFwidmVyc2lvblwiOlwiMTI2MDkyNTYyNlwifSx7XCJpZFwiOlwiMzEyMDlcIixcIm5hbWVcIjpcIkJ1YmJsZSBCYXkgYnkgRGF2aWQgTGFuaGFtXCIsXCJhY2NlbnRjb2xvclwiOlwiIzZmYjhlNlwiLFwidGV4dGNvbG9yXCI6XCIjMDAwMDAwXCIsXCJkZXNjcmlwdGlvblwiOlwiRGF2aWQgTGFuaGFtXFx1MDAxOXMgZGF5IGpvYiBpcyB3b3JraW5nIGF0IHRoZSBJY29uZmFjdG9yeSBjcmVhdGluZyBjb21wdXRlciBpY29ucyBsaWtlIEFtb3JhIGZvciBPU1ggd2hpY2ggd2FzIGluc3BpcmVkIGJ5IENocmlzIEN1bm5pbmdoYW1cXHUwMDE5cyBhbmRyb2lkLWVzcXVlIG11c2ljIHZpZGVvIGZvciBCavZyay4gQnV0IGV2ZW4gaW4gaGlzIGRvd250aW1lIGhlIGNhblxcdTAwMTl0IHN0b3AgY3JlYXRpbmcgYXJ0OiB3aGVuIGhlIGhlYWRzIGhvbWUgaW4gdGhlIGV2ZW5pbmcgaGUgY3JlYXRlcyBwaWVjZXMgb2YgYXJ0d29yayB0aGF0IGxvb2sgYXMgaWYgdGhleSBoYXZlIGJlZW4gY3VsbGVkIHN0cmFpZ2h0IG91dCBvZiBoaXMgb3duIG1hbmdhIG1vdmllLiBEYXZpZCBhbHNvIGhhcyBhIGNoYXJhY3RlciBjYWxsZWQgWm9nIHdobyBoYXMgYmVlbiBtYWRlIGludG8gYSB2aW55bCB0b3kgYnkgU3RyYW5nZUtpc3MuXCIsXCJhdXRob3JcIjpcIkluZmVjdGlvdXNcIixcImhlYWRlclVSTFwiOlwiaHR0cDovL2dldHBlcnNvbmFzLWNkbi5tb3ppbGxhLm5ldC9zdGF0aWMvMC85LzMxMjA5L3BlcnNvbmFfRGF2aWRMYW5oYW1faGVhZGVyX3JldmlzZWQucG5nPzEyNjA5MjU2MjZcIixcImZvb3RlclVSTFwiOlwiaHR0cDovL2dldHBlcnNvbmFzLWNkbi5tb3ppbGxhLm5ldC9zdGF0aWMvMC85LzMxMjA5L3BlcnNvbmFfRGF2aWRMYW5oYW1fZm9vdGVyX3JldmlzZWQucG5nPzEyNjA5MjU2MjZcIixcInByZXZpZXdVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzAvOS8zMTIwOS9wcmV2aWV3LmpwZz8xMjYwOTI1NjI2XCIsXCJpY29uVVJMXCI6XCJodHRwOi8vZ2V0cGVyc29uYXMtY2RuLm1vemlsbGEubmV0L3N0YXRpYy8wLzkvMzEyMDkvcHJldmlld19zbWFsbC5qcGc/MTI2MDkyNTYyNlwiLFwidXBkYXRlVVJMXCI6XCJodHRwczovL3d3dy5nZXRwZXJzb25hcy5jb20vZW4tVVMvdXBkYXRlX2NoZWNrLzMxMjA5XCJ9LHtcImlkXCI6XCIzMDk4N1wiLFwibmFtZVwiOlwiRW5kbGVzcyBQb3NzaWJpbGl0aWVzIGJ5IEV0c3VcIixcImFjY2VudGNvbG9yXCI6XCIjZmZmZmZmXCIsXCJ0ZXh0Y29sb3JcIjpcIiMwMDAwMDBcIixcImRlc2NyaXB0aW9uXCI6XCJFdHN1IE1ldXN5XFx1MDAxOXMgd29yayBoYXMgYmVlbiBkZXNjcmliZWQgYXMgXFx1MDAxY3N1bm55IGFuZCBjbGVhblxcdTAwMWQgYnkgR2lhbnQgUm9ib3QgYW5kIFxcdTAwMWNub3N0YWxnaWEtdGluZ2VkIDcwcyBhbmQgODBzIHBvcCBjdWx0dXJhbCBwYXN0aWNoZXNcXHUwMDFkIGJ5IENvb2xodW50aW5nLiBFdHN1IGJsZW5kcyB0b2dldGhlciBwYWludCwgaGFuZCBkcmF3biB0eXBvZ3JhcGh5IGFuZCB0aGUgb2RkIGd1ZXN0IGFwcGVhcmFuY2UgZnJvbSA4MHMgaWNvbnMgbGlrZSBBeGwgUm9zZSBhbmQgdGhlIFNtdXJmcyB0byBjcmVhdGUgZHJlYW15IHJhaW5ib3cgY29sb3JlZCBsYW5kc2NhcGVzLiBIZXIgYXJ0d29yayBoYXMgYmVlbiBmZWF0dXJlZCBpbiBOeWxvbiBtYWdhemluZSBhbmQgYXJ0IGJvb2tzIGJ5IERpZSBHZXN0YWx0ZW4uXCIsXCJhdXRob3JcIjpcIkluZmVjdGlvdXNcIixcImhlYWRlclVSTFwiOlwiaHR0cDovL2dldHBlcnNvbmFzLWNkbi5tb3ppbGxhLm5ldC9zdGF0aWMvOC83LzMwOTg3L2V0c3VfdjJfaGVhZGVyLmpwZz8xMjYwOTI1NjI2XCIsXCJmb290ZXJVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzgvNy8zMDk4Ny9ldHN1X3YyX2Zvb3Rlci5qcGc/MTI2MDkyNTYyNlwiLFwicHJldmlld1VSTFwiOlwiaHR0cDovL2dldHBlcnNvbmFzLWNkbi5tb3ppbGxhLm5ldC9zdGF0aWMvOC83LzMwOTg3L3ByZXZpZXcuanBnPzEyNjA5MjU2MjZcIixcImljb25VUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzgvNy8zMDk4Ny9wcmV2aWV3X3NtYWxsLmpwZz8xMjYwOTI1NjI2XCIsXCJ1cGRhdGVVUkxcIjpcImh0dHBzOi8vd3d3LmdldHBlcnNvbmFzLmNvbS9lbi1VUy91cGRhdGVfY2hlY2svMzA5ODdcIn0se1wiaWRcIjpcIjc2MTBcIixcIm5hbWVcIjpcIkphcGFuZXNlIFRhdHRvb1wiLFwiYXV0aG9yXCI6XCJlbmd1eWVuXCIsXCJoZWFkZXJVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzEvMC83NjEwL3BlcnNvbmFqcGcuanBnPzEyNjA5MjU2MjZcIixcImZvb3RlclVSTFwiOlwiaHR0cDovL2dldHBlcnNvbmFzLWNkbi5tb3ppbGxhLm5ldC9zdGF0aWMvMS8wLzc2MTAvcGVyc29uYTJqcGcuanBnPzEyNjA5MjU2MjZcIixcInByZXZpZXdVUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzEvMC83NjEwL3ByZXZpZXcuanBnPzEyNjA5MjU2MjZcIixcImljb25VUkxcIjpcImh0dHA6Ly9nZXRwZXJzb25hcy1jZG4ubW96aWxsYS5uZXQvc3RhdGljLzEvMC83NjEwL3ByZXZpZXdfc21hbGwuanBnPzEyNjA5MjU2MjZcIixcImFjY2VudGNvbG9yXCI6XCIjMDAwMDAwXCIsXCJ0ZXh0Y29sb3JcIjpcIiMwMDAwMDBcIixcInVwZGF0ZVVSTFwiOlwiaHR0cHM6Ly93d3cuZ2V0cGVyc29uYXMuY29tL2VuLVVTL3VwZGF0ZV9jaGVjay83NjEwXCIsXCJ2ZXJzaW9uXCI6XCIxMjYwOTI1NjI2XCJ9XSIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNlYXJjaGRvbWFpbmNoZWNrLmRvbmUiLCB0cnVlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5zZWVuSW5zdGFsbGVyIiwgZmFsc2UpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNlbnQiLCAiMSIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNlbnRmcyIsICIxIik7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuc2hhcmluZy5idXR0b24tcHJvbW90aW9uLXNob3duIiwgMyk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuc2hhcmluZy51c2FnZS5GYWNlYm9vayIsIDEpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNpZGV3aWtpLmVuYWJsZWQiLCBmYWxzZSk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIuc2lkZXdpa2kuZmlyc3QucnVuIiwgZmFsc2UpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNwZWxsX2NoZWNrLmRpY3Rpb25hcnkud29yZHMyIiwgIiIpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnNwZWxsX2NoZWNrLmxhbmciLCAiZW4iKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci5zcGVsbF9jaGVjay5sYXN0X2xhbmciLCAiZW4iKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci50YnN5bmMuYmFja3VwX3NhdmVkIiwgZmFsc2UpOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnRic3luYy5wcm9tb3Rpb25zIiwgMCk7CnVzZXJfcHJlZigiZ29vZ2xlLnRvb2xiYXIudGh1bWJuYWlsLmNsZWFuLWNvdW50ZXIiLCAwKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci50aHVtYm5haWwuY2xlYXJpbmciLCA2ODApOwp1c2VyX3ByZWYoImdvb2dsZS50b29sYmFyLnRyYW5zbGF0ZS5ob3ZlciIsIGZhbHNlKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci50cmFuc2xhdGUudGFyZ2V0X2xhbmciLCAiZXMiKTsKdXNlcl9wcmVmKCJnb29nbGUudG9vbGJhci51c2FnZV9zdGF0cy5kZWZhdWx0IiwgdHJ1ZSk7CnVzZXJfcHJlZigiaWRsZS5sYXN0RGFpbHlOb3RpZmljYXRpb24iLCAxMjcxOTg3NDUzKTsKdXNlcl9wcmVmKCJpbnRsLmNoYXJzZXRtZW51LmJyb3dzZXIuY2FjaGUiLCAid2luZG93cy0xMjUyLCB1cy1hc2NpaSwgSVNPLTg4NTktMSwgVVRGLTgiKTsKdXNlcl9wcmVmKCJtZXRyaWNzLmV2ZW50LWNvdW50IiwgMCk7CnVzZXJfcHJlZigibWV0cmljcy5sYXN0LXNlc3Npb24taWQiLCAxNyk7CnVzZXJfcHJlZigibWV0cmljcy51cGxvYWQuZW5hYmxlIiwgdHJ1ZSk7CnVzZXJfcHJlZigibWV0cmljcy51cGxvYWQubmV4dC1waW5nIiwgMTI3MTk2OTE5OSk7CnVzZXJfcHJlZigibWljcm9zb2Z0LkNMUi5hdXRvX2luc3RhbGwiLCBmYWxzZSk7CnVzZXJfcHJlZigibmV0d29yay5jb29raWUucHJlZnNNaWdyYXRlZCIsIHRydWUpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuZnRwIiwgImZ0cF9wcm94eSIpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuZnRwX3BvcnQiLCAzMzMzKTsKdXNlcl9wcmVmKCJuZXR3b3JrLnByb3h5LmdvcGhlciIsICJnb3BoZXJfcHJveHkiKTsKdXNlcl9wcmVmKCJuZXR3b3JrLnByb3h5LmdvcGhlcl9wb3J0IiwgNDQ0NCk7CnVzZXJfcHJlZigibmV0d29yay5wcm94eS5odHRwIiwgImh0dHBfcHJveHkiKTsKdXNlcl9wcmVmKCJuZXR3b3JrLnByb3h5Lmh0dHBfcG9ydCIsIDExMTEpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkubm9fcHJveGllc19vbiIsICJsb2NhbGhvc3QsIDEyNy4wLjAuMSxub3Byb3h5LmNvbSIpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuc29ja3MiLCAic29ja3NfaG9zdCIpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuc29ja3NfcG9ydCIsIDU1NTUpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuc29ja3NfdmVyc2lvbiIsIDQpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuc3NsIiwgInNzbF9wcm94eSIpOwp1c2VyX3ByZWYoIm5ldHdvcmsucHJveHkuc3NsX3BvcnQiLCAyMjIyKTsKdXNlcl9wcmVmKCJuZXR3b3JrLnByb3h5LnR5cGUiLCAxKTsKdXNlcl9wcmVmKCJwcml2YWN5LnNhbml0aXplLm1pZ3JhdGVGeDNQcmVmcyIsIHRydWUpOwp1c2VyX3ByZWYoInByaXZhY3kuc2FuaXRpemUudGltZVNwYW4iLCAwKTsKdXNlcl9wcmVmKCJzZWN1cml0eS53YXJuX3ZpZXdpbmdfbWl4ZWQiLCBmYWxzZSk7CnVzZXJfcHJlZigic3BlbGxjaGVja2VyLmRpY3Rpb25hcnkiLCAiZW4tVVMiKTsKdXNlcl9wcmVmKCJ1cmxjbGFzc2lmaWVyLmtleXVwZGF0ZXRpbWUuaHR0cHM6Ly9zYi1zc2wuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvbmV3a2V5IiwgMTI3MzM0MTQ3Nyk7CnVzZXJfcHJlZigieHBpbnN0YWxsLndoaXRlbGlzdC5hZGQiLCAiIik7CnVzZXJfcHJlZigieHBpbnN0YWxsLndoaXRlbGlzdC5hZGQuMTAzIiwgIiIpOwo=