commit/galaxy-central: guerler: Charts: Reduce number of available chart types
MSBuZXcgY29tbWl0IGluIGdhbGF4eS1jZW50cmFsOgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2MxMTM3NzFkYjZiMi8KQ2hhbmdlc2V0OiAgIGMx MTM3NzFkYjZiMgpVc2VyOiAgICAgICAgZ3VlcmxlcgpEYXRlOiAgICAgICAgMjAxNC0wNi0wNiAy MTozNDo0MApTdW1tYXJ5OiAgICAgQ2hhcnRzOiBSZWR1Y2UgbnVtYmVyIG9mIGF2YWlsYWJsZSBj aGFydCB0eXBlcwpBZmZlY3RlZCAjOiAgMzMgZmlsZXMKCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIx YjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3 NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRp Yy9idWlsZC1hcHAuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRz L3N0YXRpYy9idWlsZC1hcHAuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv Y2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKQEAgLTMsNCArMyw0IEBACiAvLyAgICAgKGMpIDIw MDktMjAxMyBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgSW5jLgogLy8gICAgIFVuZGVy c2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCj0y MAotZGVmaW5lKCJtdmMvdWkvdWktbW9kYWwiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9M0RCYWNrYm9u ZS5WaWV3LmV4dGVuZCh7ZWxNYWk9Cm46ImJvZHkiLG9wdGlvbnNEZWZhdWx0Ont0aXRsZToidWkt bW9kYWwiLGJvZHk6IiIsYmFja2Ryb3A6ITAsaGVpZ2h0Om51bGwsdz0KaWR0aDpudWxsLGNsb3Np bmdfZXZlbnRzOiExLGNsb3NpbmdfY2FsbGJhY2s6bnVsbH0sYnV0dG9uTGlzdDp7fSxpbml0aWFs aXplPQo6ZnVuY3Rpb24oZSl7ZSYmdGhpcy5fY3JlYXRlKGUpfSxzaG93OmZ1bmN0aW9uKGUpe3Ro aXMuaW5pdGlhbGl6ZShlKSx0aGlzLm89CnB0aW9ucy5oZWlnaHQ/KHRoaXMuJGJvZHkuY3NzKCJo ZWlnaHQiLHRoaXMub3B0aW9ucy5oZWlnaHQpLHRoaXMuJGJvZHkuY3NzKD0KIm92ZXJmbG93Iiwi aGlkZGVuIikpOnRoaXMuJGJvZHkuY3NzKCJtYXgtaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCkv MiksdGhpPQpzLm9wdGlvbnMud2lkdGgmJnRoaXMuJGRpYWxvZy5jc3MoIndpZHRoIix0aGlzLm9w dGlvbnMud2lkdGgpLHRoaXMudmlzaWJsZT89CnRoaXMuJGVsLnNob3coKTp0aGlzLiRlbC5mYWRl SW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMH0saGlkZTpmdW5jdGlvbigpez0KdGhpcy52aXNp YmxlPTNEITEsdGhpcy4kZWwuZmFkZU91dCgiZmFzdCIpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2Nh bGxiYWNrJiZ0PQpoaXMub3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrKCl9LGVuYWJsZUJ1dHRvbjpm dW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG89Cm5MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmlu ZCgiIyIrdCkucHJvcCgiZGlzYWJsZWQiLCExKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdD0KaW9uKGUp e3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCkucHJv cCgiZGlzYWJsZWQiPQosITApfSxzaG93QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5i dXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCg9CiIjIit0KS5zaG93KCl9LGhpZGVCdXR0 b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1dHRvbkxpc3RbZV07dGhpcy4kYnV0dD0Kb25z LmZpbmQoIiMiK3QpLmhpZGUoKX0sZ2V0QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5i dXR0b25MaXN0W2VdO3JlPQp0dXJuIHRoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCl9LHNjcm9sbFRv cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRib2R5LnNjcm89CmxsVG9wKCl9LF9jcmVhdGU6ZnVu Y3Rpb24oZSl7dmFyIHQ9M0R0aGlzO3RoaXMub3B0aW9ucz0zRF8uZGVmYXVsdHMoZSx0aGlzLj0K b3B0aW9uc0RlZmF1bHQpLHRoaXMub3B0aW9ucy5ib2R5PTNEPTNEInByb2dyZXNzIiYmKHRoaXMu b3B0aW9ucy5ib2R5PTNEJCgnPQo8ZGl2IGNsYXNzPTNEInByb2dyZXNzIHByb2dyZXNzLXN0cmlw ZWQgYWN0aXZlIj48ZGl2IGNsYXNzPTNEInByb2dyZXNzLWJhciA9CnByb2dyZXNzLWJhci1pbmZv IiBzdHlsZT0zRCJ3aWR0aDoxMDAlIj48L2Rpdj48L2Rpdj4nKSksdGhpcy4kZWwmJih0aGlzLiRl bD0KLnJlbW92ZSgpLCQoZG9jdW1lbnQpLm9mZigia2V5dXAudWktbW9kYWwiKSksdGhpcy5zZXRF bGVtZW50KHRoaXMuX3RlbXBsYXRlPQoodGhpcy5vcHRpb25zLnRpdGxlKSksdGhpcy4kZGlhbG9n PTNEdGhpcy4kZWwuZmluZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGI9Cm9keT0zRHRoaXMuJGVs LmZpbmQoIi5tb2RhbC1ib2R5IiksdGhpcy4kZm9vdGVyPTNEdGhpcy4kZWwuZmluZCgiLm1vZGFs LWZvbz0KdGVyIiksdGhpcy4kYnV0dG9ucz0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b25zIiksdGhp cy4kYmFja2Ryb3A9M0R0aGlzLiRlbC5mPQppbmQoIi5tb2RhbC1iYWNrZHJvcCIpLHRoaXMuJGJv ZHkuaHRtbCh0aGlzLm9wdGlvbnMuYm9keSksdGhpcy5vcHRpb25zLmJhY2s9CmRyb3B8fHRoaXMu JGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO2lmKHRoaXMub3B0aW9ucy5idXR0b25zKXt0aGlz LmJ1dHRvbj0KTGlzdD0zRHt9O3ZhciBuPTNEMDskLmVhY2godGhpcy5vcHRpb25zLmJ1dHRvbnMs ZnVuY3Rpb24oZSxyKXt2YXIgaT0zRCJidXR0PQpvbi0iK24rKzt0LiRidXR0b25zLmFwcGVuZCgk KCc8YnV0dG9uIGlkPTNEIicraSsnIj48L2J1dHRvbj4nKS50ZXh0KGUpLmNsaWM9CmsocikpLmFw cGVuZCgiICIpLHQuYnV0dG9uTGlzdFtlXT0zRGl9KX1lbHNlIHRoaXMuJGZvb3Rlci5oaWRlKCk7 JCh0aGlzLmVsTT0KYWluKS5hcHBlbmQoJCh0aGlzLmVsKSksdGhpcy5vcHRpb25zLmNsb3Npbmdf ZXZlbnRzJiYoJChkb2N1bWVudCkub24oImtleXVwPQoudWktbW9kYWwiLGZ1bmN0aW9uKGUpe2Uu a2V5Q29kZT0zRD0zRDI3JiZ0LmhpZGUoKX0pLHRoaXMuJGVsLmZpbmQoIi5tb2RhbC09CmJhY2tk cm9wIikub24oImNsaWNrIixmdW5jdGlvbigpe3QuaGlkZSgpfSkpfSxfdGVtcGxhdGU6ZnVuY3Rp b24oZSl7cmV0dXJuJz0KPGRpdiBjbGFzcz0zRCJtb2RhbCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1i YWNrZHJvcCBmYWRlIGluIiBzdHlsZT0zRCJ6LWluZGV4PQo6IC0xOyI+PC9kaXY+PGRpdiBjbGFz cz0zRCJtb2RhbC1kaWFsb2ciPjxkaXYgY2xhc3M9M0QibW9kYWwtY29udGVudCI+PGRpdiA9CmNs YXNzPTNEIm1vZGFsLWhlYWRlciI+PGJ1dHRvbiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0QiY2xv c2UiIHN0eWxlPTNEImRpcz0KcGxheTogbm9uZTsiPiZ0aW1lczs8L2J1dHRvbj48aDQgY2xhc3M9 M0QidGl0bGUiPicrZSsiPC9oND4iKyI8L2Rpdj4iKyc8ZGl2PQogY2xhc3M9M0QibW9kYWwtYm9k eSIgc3R5bGU9M0QicG9zaXRpb246IHN0YXRpYzsiPjwvZGl2PicrJzxkaXYgY2xhc3M9M0QibW89 CmRhbC1mb290ZXIiPicrJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJp Z2h0OyI+PC9kaXY+JysiPC9kaT0Kdj4iKyI8L2RpdiIrIjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0 dXJue1ZpZXc6ZX19KSxmdW5jdGlvbigpe3ZhciBlPTNEdGhpcyx0PQo9M0RlLl8sbj0zRHt9LHI9 M0RBcnJheS5wcm90b3R5cGUsaT0zRE9iamVjdC5wcm90b3R5cGUscz0zREZ1bmN0aW9uLnByb3Rv dHk9CnBlLG89M0RyLnB1c2gsdT0zRHIuc2xpY2UsYT0zRHIuY29uY2F0LGY9M0RpLnRvU3RyaW5n LGw9M0RpLmhhc093blByb3BlcnR5LD0KYz0zRHIuZm9yRWFjaCxoPTNEci5tYXAscD0zRHIucmVk dWNlLGQ9M0RyLnJlZHVjZVJpZ2h0LHY9M0RyLmZpbHRlcixtPTNEci5lPQp2ZXJ5LGc9M0RyLnNv bWUseT0zRHIuaW5kZXhPZixiPTNEci5sYXN0SW5kZXhPZix3PTNEQXJyYXkuaXNBcnJheSxFPTNE T2JqZWM9CnQua2V5cyxTPTNEcy5iaW5kLHg9M0RmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2Yg eClyZXR1cm4gZTtpZighKHRoaXMgaW5zdD0KYW5jZW9mIHgpKXJldHVybiBuZXcgeChlKTt0aGlz Ll93cmFwcGVkPTNEZX07dHlwZW9mIGV4cG9ydHMhPTNEInVuZGVmaW5lZCI/PQoodHlwZW9mIG1v ZHVsZSE9M0QidW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHMmJihleHBvcnRzPTNEbW9kdWxlLmV4 cG9ydHM9M0Q9CngpLGV4cG9ydHMuXz0zRHgpOmUuXz0zRHgseC5WRVJTSU9OPTNEIjEuNC40Ijt2 YXIgVD0zRHguZWFjaD0zRHguZm9yRWFjaD0zRD0KZnVuY3Rpb24oZSx0LHIpe2lmKGU9M0Q9M0Ru dWxsKXJldHVybjtpZihjJiZlLmZvckVhY2g9M0Q9M0Q9M0RjKWUuZm9yRWFjaCh0PQoscik7ZWxz ZSBpZihlLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aCl7Zm9yKHZhciBpPTNEMCxzPTNEZS5sZW5n dGg7aTxzO2krKyk9CmlmKHQuY2FsbChyLGVbaV0saSxlKT0zRD0zRD0zRG4pcmV0dXJufWVsc2Ug Zm9yKHZhciBvIGluIGUpaWYoeC5oYXMoZSxvKSYmdD0KLmNhbGwocixlW29dLG8sZSk9M0Q9M0Q9 M0RuKXJldHVybn07eC5tYXA9M0R4LmNvbGxlY3Q9M0RmdW5jdGlvbihlLHQsbil7dmFyPQogcj0z RFtdO3JldHVybiBlPTNEPTNEbnVsbD9yOmgmJmUubWFwPTNEPTNEPTNEaD9lLm1hcCh0LG4pOihU KGUsZnVuY3Rpb24oZSw9Cmkscyl7ci5wdXNoKHQuY2FsbChuLGUsaSxzKSl9KSxyKX07dmFyIE49 M0QiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaT0Kbml0aWFsIHZhbHVlIjt4LnJlZHVj ZT0zRHguZm9sZGw9M0R4LmluamVjdD0zRGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPTNEYXJnPQp1 bWVudHMubGVuZ3RoPjI7ZT0zRD0zRG51bGwmJihlPTNEW10pO2lmKHAmJmUucmVkdWNlPTNEPTNE PTNEcClyZXR1cm4gciYmKHQ9Cj0zRHguYmluZCh0LHIpKSxpP2UucmVkdWNlKHQsbik6ZS5yZWR1 Y2UodCk7VChlLGZ1bmN0aW9uKGUscyxvKXtpP249M0R0LmNhbD0KbChyLG4sZSxzLG8pOihuPTNE ZSxpPTNEITApfSk7aWYoIWkpdGhyb3cgbmV3IFR5cGVFcnJvcihOKTtyZXR1cm4gbn0seC5yZWR1 PQpjZVJpZ2h0PTNEeC5mb2xkcj0zRGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPTNEYXJndW1lbnRz Lmxlbmd0aD4yO2U9M0Q9M0RudWw9CmwmJihlPTNEW10pO2lmKGQmJmUucmVkdWNlUmlnaHQ9M0Q9 M0Q9M0RkKXJldHVybiByJiYodD0zRHguYmluZCh0LHIpKSxpP2Uucj0KZWR1Y2VSaWdodCh0LG4p OmUucmVkdWNlUmlnaHQodCk7dmFyIHM9M0RlLmxlbmd0aDtpZihzIT0zRD0zRCtzKXt2YXIgbz0z RHguPQprZXlzKGUpO3M9M0RvLmxlbmd0aH1UKGUsZnVuY3Rpb24odSxhLGYpe2E9M0RvP29bLS1z XTotLXMsaT9uPTNEdC5jYWxsKHIsbiw9CmVbYV0sYSxmKToobj0zRGVbYV0saT0zRCEwKX0pO2lm KCFpKXRocm93IG5ldyBUeXBlRXJyb3IoTik7cmV0dXJuIG59LHguZmluZD0KPTNEeC5kZXRlY3Q9 M0RmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIEMoZSxmdW5jdGlvbihlLGkscyl7aWYodC5j YWxsKG4sPQplLGkscykpcmV0dXJuIHI9M0RlLCEwfSkscn0seC5maWx0ZXI9M0R4LnNlbGVjdD0z RGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRFs9Cl07cmV0dXJuIGU9M0Q9M0RudWxsP3I6diYmZS5m aWx0ZXI9M0Q9M0Q9M0R2P2UuZmlsdGVyKHQsbik6KFQoZSxmdW5jdGlvbihlLD0KaSxzKXt0LmNh bGwobixlLGkscykmJnIucHVzaChlKX0pLHIpfSx4LnJlamVjdD0zRGZ1bmN0aW9uKGUsdCxuKXty ZXR1cm4geC5mPQppbHRlcihlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm4hdC5jYWxsKG4sZSxyLGkp fSxuKX0seC5ldmVyeT0zRHguYWxsPTNEZnVuY3Q9CmlvbihlLHQscil7dHx8KHQ9M0R4LmlkZW50 aXR5KTt2YXIgaT0zRCEwO3JldHVybiBlPTNEPTNEbnVsbD9pOm0mJmUuZXZlcnk9Cj0zRD0zRD0z RG0/ZS5ldmVyeSh0LHIpOihUKGUsZnVuY3Rpb24oZSxzLG8pe2lmKCEoaT0zRGkmJnQuY2FsbChy LGUscyxvKSkpcj0KZXR1cm4gbn0pLCEhaSl9O3ZhciBDPTNEeC5zb21lPTNEeC5hbnk9M0RmdW5j dGlvbihlLHQscil7dHx8KHQ9M0R4LmlkZW50aXR5PQopO3ZhciBpPTNEITE7cmV0dXJuIGU9M0Q9 M0RudWxsP2k6ZyYmZS5zb21lPTNEPTNEPTNEZz9lLnNvbWUodCxyKTooVChlLGZ1bmM9CnRpb24o ZSxzLG8pe2lmKGl8fChpPTNEdC5jYWxsKHIsZSxzLG8pKSlyZXR1cm4gbn0pLCEhaSl9O3guY29u dGFpbnM9M0R4LmluYz0KbHVkZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9M0Q9M0RudWxsPyEx OnkmJmUuaW5kZXhPZj0zRD0zRD0zRHk/ZS5pbmRleE9mPQoodCkhPTNELTE6QyhlLGZ1bmN0aW9u KGUpe3JldHVybiBlPTNEPTNEPTNEdH0pfSx4Lmludm9rZT0zRGZ1bmN0aW9uKGUsdCl7dmE9CnIg bj0zRHUuY2FsbChhcmd1bWVudHMsMikscj0zRHguaXNGdW5jdGlvbih0KTtyZXR1cm4geC5tYXAo ZSxmdW5jdGlvbihlKXtyZT0KdHVybihyP3Q6ZVt0XSkuYXBwbHkoZSxuKX0pfSx4LnBsdWNrPTNE ZnVuY3Rpb24oZSx0KXtyZXR1cm4geC5tYXAoZSxmdW5jdGlvPQpuKGUpe3JldHVybiBlW3RdfSl9 LHgud2hlcmU9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIHguaXNFbXB0eSh0KT9uP3ZvaWQgMDo9 CltdOnhbbj8iZmluZCI6ImZpbHRlciJdKGUsZnVuY3Rpb24oZSl7Zm9yKHZhciBuIGluIHQpaWYo dFtuXSE9M0Q9M0RlW25dKXJldD0KdXJuITE7cmV0dXJuITB9KX0seC5maW5kV2hlcmU9M0RmdW5j dGlvbihlLHQpe3JldHVybiB4LndoZXJlKGUsdCwhMCl9LHgubWF4PQo9M0RmdW5jdGlvbihlLHQs bil7aWYoIXQmJnguaXNBcnJheShlKSYmZVswXT0zRD0zRD0zRCtlWzBdJiZlLmxlbmd0aDw2NTUz NSk9CnJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLGUpO2lmKCF0JiZ4LmlzRW1wdHkoZSkpcmV0 dXJuLUluZmluaXR5O3ZhciByPTNEez0KY29tcHV0ZWQ6LUluZmluaXR5LHZhbHVlOi1JbmZpbml0 eX07cmV0dXJuIFQoZSxmdW5jdGlvbihlLGkscyl7dmFyIG89M0R0P3QuPQpjYWxsKG4sZSxpLHMp OmU7bz49M0RyLmNvbXB1dGVkJiYocj0zRHt2YWx1ZTplLGNvbXB1dGVkOm99KX0pLHIudmFsdWV9 LHgubWk9Cm49M0RmdW5jdGlvbihlLHQsbil7aWYoIXQmJnguaXNBcnJheShlKSYmZVswXT0zRD0z RD0zRCtlWzBdJiZlLmxlbmd0aDw2NTUzNT0KKXJldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLGUp O2lmKCF0JiZ4LmlzRW1wdHkoZSkpcmV0dXJuIEluZmluaXR5O3ZhciByPTNEPQp7Y29tcHV0ZWQ6 SW5maW5pdHksdmFsdWU6SW5maW5pdHl9O3JldHVybiBUKGUsZnVuY3Rpb24oZSxpLHMpe3ZhciBv PTNEdD90LmM9CmFsbChuLGUsaSxzKTplO288ci5jb21wdXRlZCYmKHI9M0R7dmFsdWU6ZSxjb21w dXRlZDpvfSl9KSxyLnZhbHVlfSx4LnNodWZmbD0KZT0zRGZ1bmN0aW9uKGUpe3ZhciB0LG49M0Qw LHI9M0RbXTtyZXR1cm4gVChlLGZ1bmN0aW9uKGUpe3Q9M0R4LnJhbmRvbShuKyspPQoscltuLTFd PTNEclt0XSxyW3RdPTNEZX0pLHJ9O3ZhciBrPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHguaXNGdW5j dGlvbihlKT9lOmY9CnVuY3Rpb24odCl7cmV0dXJuIHRbZV19fTt4LnNvcnRCeT0zRGZ1bmN0aW9u KGUsdCxuKXt2YXIgcj0zRGsodCk7cmV0dXJuIHgucD0KbHVjayh4Lm1hcChlLGZ1bmN0aW9uKGUs dCxpKXtyZXR1cm57dmFsdWU6ZSxpbmRleDp0LGNyaXRlcmlhOnIuY2FsbChuLGUsdCxpPQopfX0p LnNvcnQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGUuY3JpdGVyaWEscj0zRHQuY3JpdGVyaWE7aWYo biE9M0Q9M0RyKXtpZig9Cm4+cnx8bj0zRD0zRD0zRHZvaWQgMClyZXR1cm4gMTtpZihuPHJ8fHI9 M0Q9M0Q9M0R2b2lkIDApcmV0dXJuLTF9cmV0dXJuIGUuaT0KbmRleDx0LmluZGV4Py0xOjF9KSwi dmFsdWUiKX07dmFyIEw9M0RmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRHt9LHM9M0RrKHQ9Cj0z RD0zRG51bGw/eC5pZGVudGl0eTp0KTtyZXR1cm4gVChlLGZ1bmN0aW9uKHQsbyl7dmFyIHU9M0Rz LmNhbGwobix0LG8sZSk7cj0KKGksdSx0KX0pLGl9O3guZ3JvdXBCeT0zRGZ1bmN0aW9uKGUsdCxu KXtyZXR1cm4gTChlLHQsbixmdW5jdGlvbihlLHQsbil7KHguPQpoYXMoZSx0KT9lW3RdOmVbdF09 M0RbXSkucHVzaChuKX0pfSx4LmNvdW50Qnk9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIEwoZSw9 CnQsbixmdW5jdGlvbihlLHQpe3guaGFzKGUsdCl8fChlW3RdPTNEMCksZVt0XSsrfSl9LHguc29y dGVkSW5kZXg9M0RmdW5jdGlvbj0KKGUsdCxuLHIpe249M0RuPTNEPTNEbnVsbD94LmlkZW50aXR5 Omsobik7dmFyIGk9M0RuLmNhbGwocix0KSxzPTNEMCxvPTNEZS5sPQplbmd0aDt3aGlsZShzPG8p e3ZhciB1PTNEcytvPj4+MTtuLmNhbGwocixlW3VdKTxpP3M9M0R1KzE6bz0zRHV9cmV0dXJuIHN9 LHg9Ci50b0FycmF5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU/eC5pc0FycmF5KGUpP3UuY2FsbChl KTplLmxlbmd0aD0zRD0zRD0zRCtlLj0KbGVuZ3RoP3gubWFwKGUseC5pZGVudGl0eSk6eC52YWx1 ZXMoZSk6W119LHguc2l6ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPQo9M0RudWxsPzA6ZS5s ZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZS5sZW5ndGg6eC5rZXlzKGUpLmxlbmd0aH0seC5maXJz dD0zRHg9Ci5oZWFkPTNEeC50YWtlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNEPTNEbnVs bD92b2lkIDA6dCE9M0RudWxsJiYhbj91Lj0KY2FsbChlLDAsdCk6ZVswXX0seC5pbml0aWFsPTNE ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB1LmNhbGwoZSwwLGUubGVuZ3RoLSh0PQo9M0Q9M0RudWxs fHxuPzE6dCkpfSx4Lmxhc3Q9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9M0Q9M0RudWxsP3Zv aWQgMDp0IT0KPTNEbnVsbCYmIW4/dS5jYWxsKGUsTWF0aC5tYXgoZS5sZW5ndGgtdCwwKSk6ZVtl Lmxlbmd0aC0xXX0seC5yZXN0PTNEeC50YWlsPQo9M0R4LmRyb3A9M0RmdW5jdGlvbihlLHQsbil7 cmV0dXJuIHUuY2FsbChlLHQ9M0Q9M0RudWxsfHxuPzE6dCl9LHguY29tcGFjdD0KPTNEZnVuY3Rp b24oZSl7cmV0dXJuIHguZmlsdGVyKGUseC5pZGVudGl0eSl9O3ZhciBBPTNEZnVuY3Rpb24oZSx0 LG4pe3JldHVyPQpuIFQoZSxmdW5jdGlvbihlKXt4LmlzQXJyYXkoZSk/dD9vLmFwcGx5KG4sZSk6 QShlLHQsbik6bi5wdXNoKGUpfSksbn07eC5mbGE9CnR0ZW49M0RmdW5jdGlvbihlLHQpe3JldHVy biBBKGUsdCxbXSl9LHgud2l0aG91dD0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmRpZj0KZmVyZW5j ZShlLHUuY2FsbChhcmd1bWVudHMsMSkpfSx4LnVuaXE9M0R4LnVuaXF1ZT0zRGZ1bmN0aW9uKGUs dCxuLHIpe3guaXNGPQp1bmN0aW9uKHQpJiYocj0zRG4sbj0zRHQsdD0zRCExKTt2YXIgaT0zRG4/ eC5tYXAoZSxuLHIpOmUscz0zRFtdLG89M0RbXTtyZXQ9CnVybiBUKGksZnVuY3Rpb24obixyKXtp Zih0PyFyfHxvW28ubGVuZ3RoLTFdIT0zRD0zRG46IXguY29udGFpbnMobyxuKSlvLnB1cz0KaChu KSxzLnB1c2goZVtyXSl9KSxzfSx4LnVuaW9uPTNEZnVuY3Rpb24oKXtyZXR1cm4geC51bmlxKGEu YXBwbHkocixhcmd1bWVuPQp0cykpfSx4LmludGVyc2VjdGlvbj0zRGZ1bmN0aW9uKGUpe3ZhciB0 PTNEdS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4geC5maWw9CnRlcih4LnVuaXEoZSksZnVuY3Rp b24oZSl7cmV0dXJuIHguZXZlcnkodCxmdW5jdGlvbih0KXtyZXR1cm4geC5pbmRleE9mKHQsZT0K KT49M0QwfSl9KX0seC5kaWZmZXJlbmNlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RhLmFwcGx5KHIs dS5jYWxsKGFyZ3VtZW50cywxPQopKTtyZXR1cm4geC5maWx0ZXIoZSxmdW5jdGlvbihlKXtyZXR1 cm4heC5jb250YWlucyh0LGUpfSl9LHguemlwPTNEZnVuY3Rpb249Cigpe3ZhciBlPTNEdS5jYWxs KGFyZ3VtZW50cyksdD0zRHgubWF4KHgucGx1Y2soZSwibGVuZ3RoIikpLG49M0RuZXcgQXJyYXko dD0KKTtmb3IodmFyIHI9M0QwO3I8dDtyKyspbltyXT0zRHgucGx1Y2soZSwiIityKTtyZXR1cm4g bn0seC51bnppcD0zRGZ1bmN0aW9uPQooZSl7dmFyIHQ9M0RbXTtyZXR1cm4geC5lYWNoKGUsZnVu Y3Rpb24oZSxuKXt4LmVhY2goZSxmdW5jdGlvbihlLHIpe3QubGVuZ3Q9Cmg8PTNEciYmKHRbcl09 M0RbXSksdFtyXVtuXT0zRGV9KX0pLHR9LHgub2JqZWN0PTNEZnVuY3Rpb24oZSx0KXtpZihlPTNE PTNEbj0KdWxsKXJldHVybnt9O3ZhciBuPTNEe307Zm9yKHZhciByPTNEMCxpPTNEZS5sZW5ndGg7 cjxpO3IrKyl0P25bZVtyXV09M0R0W3JdPQo6bltlW3JdWzBdXT0zRGVbcl1bMV07cmV0dXJuIG59 LHguaW5kZXhPZj0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbCk9CnJldHVybi0xO3Zh ciByPTNEMCxpPTNEZS5sZW5ndGg7aWYobil7aWYodHlwZW9mIG4hPTNEIm51bWJlciIpcmV0dXJu IHI9M0R4Lj0Kc29ydGVkSW5kZXgoZSx0KSxlW3JdPTNEPTNEPTNEdD9yOi0xO3I9M0RuPDA/TWF0 aC5tYXgoMCxpK24pOm59aWYoeSYmZS5pbmRlPQp4T2Y9M0Q9M0Q9M0R5KXJldHVybiBlLmluZGV4 T2YodCxuKTtmb3IoO3I8aTtyKyspaWYoZVtyXT0zRD0zRD0zRHQpcmV0dXJuIHI9CjtyZXR1cm4t MX0seC5sYXN0SW5kZXhPZj0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4t MTt2YXIgcj0zRD0KbiE9M0RudWxsO2lmKGImJmUubGFzdEluZGV4T2Y9M0Q9M0Q9M0RiKXJldHVy biByP2UubGFzdEluZGV4T2YodCxuKTplLmxhc3RJPQpuZGV4T2YodCk7dmFyIGk9M0RyP246ZS5s ZW5ndGg7d2hpbGUoaS0tKWlmKGVbaV09M0Q9M0Q9M0R0KXJldHVybiBpO3JldHVybi09CjF9LHgu cmFuZ2U9M0RmdW5jdGlvbihlLHQsbil7YXJndW1lbnRzLmxlbmd0aDw9M0QxJiYodD0zRGV8fDAs ZT0zRDApLG49M0Rhcj0KZ3VtZW50c1syXXx8MTt2YXIgcj0zRE1hdGgubWF4KE1hdGguY2VpbCgo dC1lKS9uKSwwKSxpPTNEMCxzPTNEbmV3IEFycmF5KHIpPQo7d2hpbGUoaTxyKXNbaSsrXT0zRGUs ZSs9M0RuO3JldHVybiBzfTt2YXIgTz0zRGZ1bmN0aW9uKCl7fTt4LmJpbmQ9M0RmdW5jdGk9Cm9u KGUsdCl7dmFyIG4scjtpZihlLmJpbmQ9M0Q9M0Q9M0RTJiZTKXJldHVybiBTLmFwcGx5KGUsdS5j YWxsKGFyZ3VtZW50cywxKT0KKTtpZigheC5pc0Z1bmN0aW9uKGUpKXRocm93IG5ldyBUeXBlRXJy b3I7cmV0dXJuIG49M0R1LmNhbGwoYXJndW1lbnRzLDIpLHI9Cj0zRGZ1bmN0aW9uKCl7aWYodGhp cyBpbnN0YW5jZW9mIHIpe08ucHJvdG90eXBlPTNEZS5wcm90b3R5cGU7dmFyIGk9M0RuZXcgTz0K O08ucHJvdG90eXBlPTNEbnVsbDt2YXIgcz0zRGUuYXBwbHkoaSxuLmNvbmNhdCh1LmNhbGwoYXJn dW1lbnRzKSkpO3JldHVybiBPPQpiamVjdChzKT0zRD0zRD0zRHM/czppfXJldHVybiBlLmFwcGx5 KHQsbi5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX19LHgucGE9CnJ0aWFsPTNEZnVuY3Rpb24o ZSl7dmFyIHQ9M0R1LmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBl Lj0KYXBwbHkodGhpcyx0LmNvbmNhdCh1LmNhbGwoYXJndW1lbnRzKSkpfX0seC5iaW5kQWxsPTNE ZnVuY3Rpb24oZSl7dmFyIHQ9M0R1PQouY2FsbChhcmd1bWVudHMsMSk7aWYodC5sZW5ndGg9M0Q9 M0Q9M0QwKXRocm93IG5ldyBFcnJvcigiYmluZEFsbCBtdXN0IGJlIHA9CmFzc2VkIGZ1bmN0aW9u IG5hbWVzIik7cmV0dXJuIFQodCxmdW5jdGlvbih0KXtlW3RdPTNEeC5iaW5kKGVbdF0sZSl9KSxl fSx4Lj0KbWVtb2l6ZT0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R7fTtyZXR1cm4gdHx8KHQ9M0R4 LmlkZW50aXR5KSxmdW5jdGlvbigpe3ZhPQpyIHI9M0R0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTty ZXR1cm4geC5oYXMobixyKT9uW3JdOm5bcl09M0RlLmFwcGx5KHRoaXMsYXI9Cmd1bWVudHMpfX0s eC5kZWxheT0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R1LmNhbGwoYXJndW1lbnRzLDIpO3JldHVy biBzZXRUaT0KbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLG4pfSx0KX0seC5k ZWZlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiB4PQouZGVsYXkuYXBwbHkoeCxbZSwxXS5jb25jYXQo dS5jYWxsKGFyZ3VtZW50cywxKSkpfSx4LnRocm90dGxlPTNEZnVuY3Rpb24oZSw9CnQsbil7dmFy IHIsaSxzLG8sdT0zRDAsYT0zRGZ1bmN0aW9uKCl7dT0zRG5ldyBEYXRlLHM9M0RudWxsLG89M0Rl LmFwcGx5KHIsaT0KKX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGY9M0RuZXcgRGF0ZTshdSYmbj0z RD0zRD0zRCExJiYodT0zRGYpO3ZhciBsPTNEdC0oPQpmLXUpO3JldHVybiByPTNEdGhpcyxpPTNE YXJndW1lbnRzLGw8PTNEMD8oY2xlYXJUaW1lb3V0KHMpLHM9M0RudWxsLHU9M0RmLG89Cj0zRGUu YXBwbHkocixpKSk6c3x8KHM9M0RzZXRUaW1lb3V0KGEsbCkpLG99fSx4LmRlYm91bmNlPTNEZnVu Y3Rpb24oZSx0LG4pez0KdmFyIHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcz0zRHRoaXMsbz0z RGFyZ3VtZW50cyx1PTNEZnVuY3Rpb24oKXtyPTNEbnVsPQpsLG58fChpPTNEZS5hcHBseShzLG8p KX0sYT0zRG4mJiFyO3JldHVybiBjbGVhclRpbWVvdXQocikscj0zRHNldFRpbWVvdXQodSw9CnQp LGEmJihpPTNEZS5hcHBseShzLG8pKSxpfX0seC5vbmNlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0Qh MSxuO3JldHVybiBmdW5jdD0KaW9uKCl7cmV0dXJuIHQ/bjoodD0zRCEwLG49M0RlLmFwcGx5KHRo aXMsYXJndW1lbnRzKSxlPTNEbnVsbCxuKX19LHgud3JhcD0KPTNEZnVuY3Rpb24oZSx0KXtyZXR1 cm4gZnVuY3Rpb24oKXt2YXIgbj0zRFtlXTtyZXR1cm4gby5hcHBseShuLGFyZ3VtZW50cyksPQp0 LmFwcGx5KHRoaXMsbil9fSx4LmNvbXBvc2U9M0RmdW5jdGlvbigpe3ZhciBlPTNEYXJndW1lbnRz O3JldHVybiBmdW5jdGlvbig9Cil7dmFyIHQ9M0Rhcmd1bWVudHM7Zm9yKHZhciBuPTNEZS5sZW5n dGgtMTtuPj0zRDA7bi0tKXQ9M0RbZVtuXS5hcHBseSh0aGlzLD0KdCldO3JldHVybiB0WzBdfX0s eC5hZnRlcj0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PTNEMD90KCk6ZnVuY3Rpb24oKXtpZigt PQotZTwxKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHgua2V5cz0zREV8fGZ1bmN0 aW9uKGUpe2lmKGUhPTNEPTNET2I9CmplY3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp ZCBvYmplY3QiKTt2YXIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXguaD0KYXMoZSxuKSYmdC5wdXNo KG4pO3JldHVybiB0fSx4LnZhbHVlcz0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEW107Zm9yKHZhciBu IGluPQogZSl4LmhhcyhlLG4pJiZ0LnB1c2goZVtuXSk7cmV0dXJuIHR9LHgucGFpcnM9M0RmdW5j dGlvbihlKXt2YXIgdD0zRFtdO2Zvcig9CnZhciBuIGluIGUpeC5oYXMoZSxuKSYmdC5wdXNoKFtu LGVbbl1dKTtyZXR1cm4gdH0seC5pbnZlcnQ9M0RmdW5jdGlvbihlKXt2YT0KciB0PTNEe307Zm9y KHZhciBuIGluIGUpeC5oYXMoZSxuKSYmKHRbZVtuXV09M0RuKTtyZXR1cm4gdH0seC5mdW5jdGlv bnM9M0R4PQoubWV0aG9kcz0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEW107Zm9yKHZhciBuIGluIGUp eC5pc0Z1bmN0aW9uKGVbbl0pJiZ0LnB1c2g9CihuKTtyZXR1cm4gdC5zb3J0KCl9LHguZXh0ZW5k PTNEZnVuY3Rpb24oZSl7cmV0dXJuIFQodS5jYWxsKGFyZ3VtZW50cywxKSxmdT0KbmN0aW9uKHQp e2lmKHQpZm9yKHZhciBuIGluIHQpZVtuXT0zRHRbbl19KSxlfSx4LnBpY2s9M0RmdW5jdGlvbihl KXt2YXIgdD0KPTNEe30sbj0zRGEuYXBwbHkocix1LmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4g VChuLGZ1bmN0aW9uKG4pe24gaW4gZSYmKHRbPQpuXT0zRGVbbl0pfSksdH0seC5vbWl0PTNEZnVu Y3Rpb24oZSl7dmFyIHQ9M0R7fSxuPTNEYS5hcHBseShyLHUuY2FsbChhcmd1bWU9Cm50cywxKSk7 Zm9yKHZhciBpIGluIGUpeC5jb250YWlucyhuLGkpfHwodFtpXT0zRGVbaV0pO3JldHVybiB0fSx4 LmRlZmF1bHRzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gVCh1LmNhbGwoYXJndW1lbnRzLDEpLGZ1 bmN0aW9uKHQpe2lmKHQpZm9yKHZhciBuIGluIHQ9CillW25dPTNEPTNEPTNEdm9pZCAwJiYoZVtu XT0zRHRbbl0pfSksZX0seC5jbG9uZT0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmlzTz0KYmplY3Qo ZSk/eC5pc0FycmF5KGUpP2Uuc2xpY2UoKTp4LmV4dGVuZCh7fSxlKTplfSx4LnRhcD0zRGZ1bmN0 aW9uKGUsdCl7cmV0PQp1cm4gdChlKSxlfTt2YXIgTT0zRGZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9 M0Q9M0Q9M0R0KXJldHVybiBlIT0zRD0zRDB8fDEvZT0KPTNEPTNEMS90O2lmKGU9M0Q9M0RudWxs fHx0PTNEPTNEbnVsbClyZXR1cm4gZT0zRD0zRD0zRHQ7ZSBpbnN0YW5jZW9mIHgmJihlPQo9M0Rl Ll93cmFwcGVkKSx0IGluc3RhbmNlb2YgeCYmKHQ9M0R0Ll93cmFwcGVkKTt2YXIgaT0zRGYuY2Fs bChlKTtpZihpIT0zRGY9Ci5jYWxsKHQpKXJldHVybiExO3N3aXRjaChpKXtjYXNlIltvYmplY3Qg U3RyaW5nXSI6cmV0dXJuIGU9M0Q9M0RTdHJpbmcodCk7Yz0KYXNlIltvYmplY3QgTnVtYmVyXSI6 cmV0dXJuIGUhPTNEK2U/dCE9M0QrdDplPTNEPTNEMD8xL2U9M0Q9M0QxL3Q6ZT0zRD0zRCt0PQo7 Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybitlPTNEPTNE K3Q7Y2FzZSJbb2JqZWN0IFI9CmVnRXhwXSI6cmV0dXJuIGUuc291cmNlPTNEPTNEdC5zb3VyY2Um JmUuZ2xvYmFsPTNEPTNEdC5nbG9iYWwmJmUubXVsdGlsaW5lPQo9M0Q9M0R0Lm11bHRpbGluZSYm ZS5pZ25vcmVDYXNlPTNEPTNEdC5pZ25vcmVDYXNlfWlmKHR5cGVvZiBlIT0zRCJvYmplY3QifHw9 CnR5cGVvZiB0IT0zRCJvYmplY3QiKXJldHVybiExO3ZhciBzPTNEbi5sZW5ndGg7d2hpbGUocy0t KWlmKG5bc109M0Q9M0RlKXJldD0KdXJuIHJbc109M0Q9M0R0O24ucHVzaChlKSxyLnB1c2godCk7 dmFyIG89M0QwLHU9M0QhMDtpZihpPTNEPTNEIltvYmplY3QgQXJyPQpheV0iKXtvPTNEZS5sZW5n dGgsdT0zRG89M0Q9M0R0Lmxlbmd0aDtpZih1KXdoaWxlKG8tLSlpZighKHU9M0RNKGVbb10sdFtv XSw9Cm4scikpKWJyZWFrfWVsc2V7dmFyIGE9M0RlLmNvbnN0cnVjdG9yLGw9M0R0LmNvbnN0cnVj dG9yO2lmKGEhPTNEPTNEbCYmISh4Lj0KaXNGdW5jdGlvbihhKSYmYSBpbnN0YW5jZW9mIGEmJngu aXNGdW5jdGlvbihsKSYmbCBpbnN0YW5jZW9mIGwpKXJldHVybiExO2ZvPQpyKHZhciBjIGluIGUp aWYoeC5oYXMoZSxjKSl7bysrO2lmKCEodT0zRHguaGFzKHQsYykmJk0oZVtjXSx0W2NdLG4scikp KWJyZWE9Cmt9aWYodSl7Zm9yKGMgaW4gdClpZih4Lmhhcyh0LGMpJiYhKG8tLSkpYnJlYWs7dT0z RCFvfX1yZXR1cm4gbi5wb3AoKSxyLnBvcD0KKCksdX07eC5pc0VxdWFsPTNEZnVuY3Rpb24oZSx0 KXtyZXR1cm4gTShlLHQsW10sW10pfSx4LmlzRW1wdHk9M0RmdW5jdGlvbihlPQope2lmKGU9M0Q9 M0RudWxsKXJldHVybiEwO2lmKHguaXNBcnJheShlKXx8eC5pc1N0cmluZyhlKSlyZXR1cm4gZS5s ZW5ndGg9M0Q9Cj0zRD0zRDA7Zm9yKHZhciB0IGluIGUpaWYoeC5oYXMoZSx0KSlyZXR1cm4hMTty ZXR1cm4hMH0seC5pc0VsZW1lbnQ9M0RmdW5jdD0KaW9uKGUpe3JldHVybiEhZSYmZS5ub2RlVHlw ZT0zRD0zRD0zRDF9LHguaXNBcnJheT0zRHd8fGZ1bmN0aW9uKGUpe3JldHVybiBmPQouY2FsbChl KT0zRD0zRCJbb2JqZWN0IEFycmF5XSJ9LHguaXNPYmplY3Q9M0RmdW5jdGlvbihlKXtyZXR1cm4g ZT0zRD0zRD0zRE89CmJqZWN0KGUpfSxUKFsiQXJndW1lbnRzIiwiRnVuY3Rpb24iLCJTdHJpbmci LCJOdW1iZXIiLCJEYXRlIiwiUmVnRXhwIl0sZnVuYz0KdGlvbihlKXt4WyJpcyIrZV09M0RmdW5j dGlvbih0KXtyZXR1cm4gZi5jYWxsKHQpPTNEPTNEIltvYmplY3QgIitlKyJdIn19KSx4PQouaXNB cmd1bWVudHMoYXJndW1lbnRzKXx8KHguaXNBcmd1bWVudHM9M0RmdW5jdGlvbihlKXtyZXR1cm4h IWUmJiEheC5oYXMoZSw9CiJjYWxsZWUiKX0pLHR5cGVvZiAvLi8hPTNEImZ1bmN0aW9uIiYmKHgu aXNGdW5jdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiB0eT0KcGVvZiBlPTNEPTNEImZ1bmN0aW9u In0pLHguaXNGaW5pdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gaXNGaW5pdGUoZSkmJiFpc05hPQpO KHBhcnNlRmxvYXQoZSkpfSx4LmlzTmFOPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHguaXNOdW1iZXIo ZSkmJmUhPTNEK2V9LHguaXM9CkJvb2xlYW49M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0zRD0zRD0z RCEwfHxlPTNEPTNEPTNEITF8fGYuY2FsbChlKT0zRD0zRCJbbz0KYmplY3QgQm9vbGVhbl0ifSx4 LmlzTnVsbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEPTNEbnVsbH0seC5pc1VuZGVmaW5l PQpkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0Q9M0Q9M0R2b2lkIDB9LHguaGFzPTNEZnVuY3Rp b24oZSx0KXtyZXR1cm4gbC5jYWw9CmwoZSx0KX0seC5ub0NvbmZsaWN0PTNEZnVuY3Rpb24oKXty ZXR1cm4gZS5fPTNEdCx0aGlzfSx4LmlkZW50aXR5PTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gZX0s eC50aW1lcz0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zREFycmF5KGUpO2Zvcih2YXIgaT0zRDA7 aTxlPQo7aSsrKXJbaV09M0R0LmNhbGwobixpKTtyZXR1cm4gcn0seC5yYW5kb209M0RmdW5jdGlv bihlLHQpe3JldHVybiB0PTNEPTNEbnU9CmxsJiYodD0zRGUsZT0zRDApLGUrTWF0aC5mbG9vcihN YXRoLnJhbmRvbSgpKih0LWUrMSkpfTt2YXIgXz0zRHtlc2NhcGU6eyImIj0KOiImYW1wOyIsIjwi OiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsIi8iOiImI3gyRjsi fX07Xy51PQpuZXNjYXBlPTNEeC5pbnZlcnQoXy5lc2NhcGUpO3ZhciBEPTNEe2VzY2FwZTpuZXcg UmVnRXhwKCJbIit4LmtleXMoXy5lc2NhcGU9Cikuam9pbigiIikrIl0iLCJnIiksdW5lc2NhcGU6 bmV3IFJlZ0V4cCgiKCIreC5rZXlzKF8udW5lc2NhcGUpLmpvaW4oInwiKSsiKT0KIiwiZyIpfTt4 LmVhY2goWyJlc2NhcGUiLCJ1bmVzY2FwZSJdLGZ1bmN0aW9uKGUpe3hbZV09M0RmdW5jdGlvbih0 KXtyZXR1cm4gPQp0PTNEPTNEbnVsbD8iIjooIiIrdCkucmVwbGFjZShEW2VdLGZ1bmN0aW9uKHQp e3JldHVybiBfW2VdW3RdfSl9fSkseC5yZXN1bHQ9Cj0zRGZ1bmN0aW9uKGUsdCl7aWYoZT0zRD0z RG51bGwpcmV0dXJuIHZvaWQgMDt2YXIgbj0zRGVbdF07cmV0dXJuIHguaXNGdW5jdD0KaW9uKG4p P24uY2FsbChlKTpufSx4Lm1peGluPTNEZnVuY3Rpb24oZSl7VCh4LmZ1bmN0aW9ucyhlKSxmdW5j dGlvbih0KXt2YXIgPQpuPTNEeFt0XT0zRGVbdF07eC5wcm90b3R5cGVbdF09M0RmdW5jdGlvbigp e3ZhciBlPTNEW3RoaXMuX3dyYXBwZWRdO3JldHVybiA9Cm8uYXBwbHkoZSxhcmd1bWVudHMpLEYu Y2FsbCh0aGlzLG4uYXBwbHkoeCxlKSl9fSl9O3ZhciBQPTNEMDt4LnVuaXF1ZUlkPTNEZj0KdW5j dGlvbihlKXt2YXIgdD0zRCsrUCsiIjtyZXR1cm4gZT9lK3Q6dH0seC50ZW1wbGF0ZVNldHRpbmdz PTNEe2V2YWx1YXRlOi88PQolKFtcc1xTXSs/KSU+L2csaW50ZXJwb2xhdGU6LzwlPTNEKFtcc1xT XSs/KSU+L2csZXNjYXBlOi88JS0oW1xzXFNdKz8pJT4vZ309Cjt2YXIgSD0zRC8oLileLyxCPTNE eyInIjoiJyIsIlxcIjoiXFwiLCJcciI6InIiLCJcbiI6Im4iLCIJIjoidCIsIlx1MjAyOCI6Ij0K dTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LGo9M0QvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5 L2c7eC50ZW1wbGF0ZT0zRGZ1PQpuY3Rpb24oZSx0LG4pe3ZhciByO249M0R4LmRlZmF1bHRzKHt9 LG4seC50ZW1wbGF0ZVNldHRpbmdzKTt2YXIgaT0zRG5ldyBSZWc9CkV4cChbKG4uZXNjYXBlfHxI KS5zb3VyY2UsKG4uaW50ZXJwb2xhdGV8fEgpLnNvdXJjZSwobi5ldmFsdWF0ZXx8SCkuc291cmNl XT0KLmpvaW4oInwiKSsifCQiLCJnIikscz0zRDAsbz0zRCJfX3ArPTNEJyI7ZS5yZXBsYWNlKGks ZnVuY3Rpb24odCxuLHIsaSx1KXtyPQpldHVybiBvKz0zRGUuc2xpY2Uocyx1KS5yZXBsYWNlKGos ZnVuY3Rpb24oZSl7cmV0dXJuIlxcIitCW2VdfSksbiYmKG8rPTNEIic9CitcbigoX190PTNEKCIr bisiKSk9M0Q9M0RudWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyIpLHImJihvKz0zRCInK1xuKChf X3Q9Cj0zRCgiK3IrIikpPTNEPTNEbnVsbD8nJzpfX3QpK1xuJyIpLGkmJihvKz0zRCInO1xuIitp KyJcbl9fcCs9M0QnIikscz0zRHUrdD0KLmxlbmd0aCx0fSksbys9M0QiJztcbiIsbi52YXJpYWJs ZXx8KG89M0Qid2l0aChvYmp8fHt9KXtcbiIrbysifVxuIiksbz0zRCJ2PQphciBfX3QsX19wPTNE JycsX19qPTNEQXJyYXkucHJvdG90eXBlLmpvaW4scHJpbnQ9M0RmdW5jdGlvbigpe19fcCs9M0Rf X2ouY2E9CmxsKGFyZ3VtZW50cywnJyk7fTtcbiIrbysicmV0dXJuIF9fcDtcbiI7dHJ5e3I9M0Ru ZXcgRnVuY3Rpb24obi52YXJpYWJsZXx8Ij0Kb2JqIiwiXyIsbyl9Y2F0Y2godSl7dGhyb3cgdS5z b3VyY2U9M0RvLHV9aWYodClyZXR1cm4gcih0LHgpO3ZhciBhPTNEZnVuY3RpPQpvbihlKXtyZXR1 cm4gci5jYWxsKHRoaXMsZSx4KX07cmV0dXJuIGEuc291cmNlPTNEImZ1bmN0aW9uKCIrKG4udmFy aWFibGV8fCI9Cm9iaiIpKyIpe1xuIitvKyJ9IixhfSx4LmNoYWluPTNEZnVuY3Rpb24oZSl7cmV0 dXJuIHgoZSkuY2hhaW4oKX07dmFyIEY9M0RmdT0KbmN0aW9uKGUpe3JldHVybiB0aGlzLl9jaGFp bj94KGUpLmNoYWluKCk6ZX07eC5taXhpbih4KSxUKFsicG9wIiwicHVzaCIsInJlPQp2ZXJzZSIs InNoaWZ0Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiXSxmdW5jdGlvbihlKXt2YXIgdD0zRHJb ZV07eC5wcm90b3Q9CnlwZVtlXT0zRGZ1bmN0aW9uKCl7dmFyIG49M0R0aGlzLl93cmFwcGVkO3Jl dHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKSwoZT0zRD0KPTNEInNoaWZ0Inx8ZT0zRD0zRCJzcGxp Y2UiKSYmbi5sZW5ndGg9M0Q9M0Q9M0QwJiZkZWxldGUgblswXSxGLmNhbGwodGhpcyxuPQopfX0p LFQoWyJjb25jYXQiLCJqb2luIiwic2xpY2UiXSxmdW5jdGlvbihlKXt2YXIgdD0zRHJbZV07eC5w cm90b3R5cGVbZV09M0Q9CmZ1bmN0aW9uKCl7cmV0dXJuIEYuY2FsbCh0aGlzLHQuYXBwbHkodGhp cy5fd3JhcHBlZCxhcmd1bWVudHMpKX19KSx4LmV4dGVuZD0KKHgucHJvdG90eXBlLHtjaGFpbjpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGFpbj0zRCEwLHRoaXN9LHZhbHVlOmZ1bmN0aW9uPQoo KXtyZXR1cm4gdGhpcy5fd3JhcHBlZH19KX0uY2FsbCh0aGlzKSxkZWZpbmUoImxpYnMvdW5kZXJz Y29yZSIsZnVuY3Rpb24oZSk9CntyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdCxuO3JldHVybiB0fHxl Ll99fSh0aGlzKSksZGVmaW5lKCJ1dGlscy91dGlscyIsWyJsaT0KYnMvdW5kZXJzY29yZSJdLGZ1 bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LHIpe24oIkdFVCIsZSx7fSx0LHIpfWZ1bmN0aW9uIG4o PQplLHQsbixyLGkpe2lmKGU9M0Q9M0QiR0VUInx8ZT0zRD0zRCJERUxFVEUiKXQuaW5kZXhPZigi PyIpPTNEPTNELTE/dCs9M0QiPyI9Cjp0Kz0zRCImIix0Kz0zRCQucGFyYW0obik7dmFyIHM9M0Ru ZXcgWE1MSHR0cFJlcXVlc3Q7cy5vcGVuKGUsdCwhMCkscy5zZXRSZT0KcXVlc3RIZWFkZXIoIkFj Y2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxzLnNldFJlcXVlc3RIZWFkZXIoIkNhY2hlLUNvbnRy b2wiPQosIm5vLWNhY2hlIikscy5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwi WE1MSHR0cFJlcXVlc3QiKSxzLnNldFI9CmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBw bGljYXRpb24vanNvbiIpLHMub25sb2FkZW5kPTNEZnVuY3Rpb24oKXt2YT0KciBlPTNEcy5zdGF0 dXM7dHJ5e3Jlc3BvbnNlPTNEalF1ZXJ5LnBhcnNlSlNPTihzLnJlc3BvbnNlVGV4dCl9Y2F0Y2go dCl7cmVzPQpwb25zZT0zRHMucmVzcG9uc2VUZXh0fWU9M0Q9M0QyMDA/ciYmcihyZXNwb25zZSk6 aSYmaShyZXNwb25zZSl9LGU9M0Q9M0QiR0U9ClQifHxlPTNEPTNEIkRFTEVURSI/cy5zZW5kKCk6 cy5zZW5kKEpTT04uc3RyaW5naWZ5KG4pKX1mdW5jdGlvbiByKGUsdCl7dmFyID0Kbj0zRCQoJzxk aXYgY2xhc3M9M0QiJytlKyciPjwvZGl2PicpO24uYXBwZW5kVG8oIjplcSgwKSIpO3ZhciByPTNE bi5jc3ModCk7PQpyZXR1cm4gbi5yZW1vdmUoKSxyfWZ1bmN0aW9uIGkoZSl7JCgnbGlua1tocmVm Xj0zRCInK2UrJyJdJykubGVuZ3RofHwkKCc8bGk9Cm5rIGhyZWY9M0QiJytnYWxheHlfY29uZmln LnJvb3QrZSsnIiByZWw9M0Qic3R5bGVzaGVldCI+JykuYXBwZW5kVG8oImhlYWQiKT0KfWZ1bmN0 aW9uIHModCxuKXtyZXR1cm4gdD9lLmRlZmF1bHRzKHQsbik6bn1mdW5jdGlvbiBvKGUsdCl7dmFy IG49M0QiIjtpZihlPQo+PTNEMWUxMSllLz0zRDFlMTEsbj0zRCJUQiI7ZWxzZSBpZihlPj0zRDFl OCllLz0zRDFlOCxuPTNEIkdCIjtlbHNlIGlmKGU+PQo9M0QxZTUpZS89M0QxZTUsbj0zRCJNQiI7 ZWxzZSBpZihlPj0zRDEwMCllLz0zRDEwMCxuPTNEIktCIjtlbHNle2lmKCEoZT4wKSk9CnJldHVy biI8c3Ryb25nPi08L3N0cm9uZz4iO2UqPTNEMTAsbj0zRCJiIn12YXIgcj0zRE1hdGgucm91bmQo ZSkvMTA7cmV0dXJuID0KdD9yKyIgIituOiI8c3Ryb25nPiIrcisiPC9zdHJvbmc+ICIrbn1mdW5j dGlvbiB1KCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lPQooKS50b1N0cmluZygzNil9ZnVuY3Rp b24gYShlKXt2YXIgdD0zRCQoIjxwPjwvcD4iKTtyZXR1cm4gdC5hcHBlbmQoZSksdH1mdW49CmN0 aW9uIGYoKXt2YXIgZT0zRG5ldyBEYXRlLHQ9M0QoZS5nZXRIb3VycygpPDEwPyIwIjoiIikrZS5n ZXRIb3VycygpLG49M0QoZT0KLmdldE1pbnV0ZXMoKTwxMD8iMCI6IiIpK2UuZ2V0TWludXRlcygp LHI9M0RlLmdldERhdGUoKSsiLyIrKGUuZ2V0TW9udGgoKSsxPQopKyIvIitlLmdldEZ1bGxZZWFy KCkrIiwgIit0KyI6IituO3JldHVybiByfXJldHVybntjc3NMb2FkRmlsZTppLGNzc0dldEF0dHI9 CmlidXRlOnIsZ2V0OnQsbWVyZ2U6cyxieXRlc1RvU3RyaW5nOm8sdXVpZDp1LHRpbWU6Zix3cmFw OmEscmVxdWVzdDpufX0pLGRlZj0KaW5lKCJtdmMvdWkvdWktcG9ydGxldCIsWyJ1dGlscy91dGls cyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5lPQp4dGVuZCh7dmlzaWJsZToh MSxvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsaWNvbjoiIixidXR0b25zOm51bGwsYm9keTpudWxs LHM9CmNyb2xsYWJsZTohMCxub3BhZGRpbmc6ITEsb3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoi Ym90dG9tIn0sJHRpdGxlOm51bGwsJD0KY29udGVudDpudWxsLCRidXR0b25zOm51bGwsJG9wZXJh dGlvbnM6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0PQppb25zPTNEZS5tZXJn ZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0 aGlzLm89CnB0aW9ucykpLHRoaXMuJGNvbnRlbnQ9M0R0aGlzLiRlbC5maW5kKCIjY29udGVudCIp LHRoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZj0KaW5kKCIjcG9ydGxldC1oZWFkZXItdGV4dCIpLHRo aXMub3B0aW9ucy5zY3JvbGxhYmxlfHwodGhpcy5vcHRpb25zLnRpdGxlP3RoPQppcy4kZWwuZmlu ZCgiI3BvcnRsZXQtY29udGVudCIpLmFkZENsYXNzKCJuby1zY3JvbGwiKTp0aGlzLiRlbC5maW5k KCIjcG9ydGw9CmV0LWNvbnRlbnQiKS5jc3MoImhlaWdodCIsIjEwMCUiKSksdGhpcy5vcHRpb25z Lm5vcGFkZGluZyYmKHRoaXMuJGVsLmZpbmQoIj0KI3BvcnRsZXQtY29udGVudCIpLmNzcygicGFk ZGluZyIsIjBweCIpLHRoaXMuJGVsLmZpbmQoIiNjb250ZW50IikuY3NzKCJwYWRkPQppbmciLCIw cHgiKSksdGhpcy4kYnV0dG9ucz0zRCQodGhpcy5lbCkuZmluZCgiI2J1dHRvbnMiKTtpZih0aGlz Lm9wdGlvbnMuYnU9CnR0b25zKXt2YXIgbj0zRHRoaXM7JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0 b25zLGZ1bmN0aW9uKGUsdCl7dC4kZWwucHJvcCgiaT0KZCIsZSksbi4kYnV0dG9ucy5hcHBlbmQo dC4kZWwpfSl9ZWxzZSB0aGlzLiRidXR0b25zLnJlbW92ZSgpO3RoaXMuJG9wZXJhdGlvPQpucz0z RCQodGhpcy5lbCkuZmluZCgiI29wZXJhdGlvbnMiKTtpZih0aGlzLm9wdGlvbnMub3BlcmF0aW9u cyl7dmFyIG49M0R0aGk9CnM7JC5lYWNoKHRoaXMub3B0aW9ucy5vcGVyYXRpb25zLGZ1bmN0aW9u KGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLG4uJG9wZXJhdD0KaW9ucy5hcHBlbmQodC4kZWwpfSl9 dGhpcy5vcHRpb25zLmJvZHkmJnRoaXMuYXBwZW5kKHRoaXMub3B0aW9ucy5ib2R5KX0sYXBwPQpl bmQ6ZnVuY3Rpb24odCl7dGhpcy4kY29udGVudC5hcHBlbmQoZS53cmFwKHQpKX0sY29udGVudDpm dW5jdGlvbigpe3JldHVybiA9CnRoaXMuJGNvbnRlbnR9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLiRl bC5mYWRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMH0saD0KaWRlOmZ1bmN0aW9uKCl7dGhp cy4kZWwuZmFkZU91dCgiZmFzdCIpLHRoaXMudmlzaWJsZT0zRCExfSxlbmFibGVCdXR0b246ZnVu PQpjdGlvbihlKXt0aGlzLiRidXR0b25zLmZpbmQoIiMiK2UpLnByb3AoImRpc2FibGVkIiwhMSl9 LGRpc2FibGVCdXR0b246ZnVuY3Q9CmlvbihlKXt0aGlzLiRidXR0b25zLmZpbmQoIiMiK2UpLnBy b3AoImRpc2FibGVkIiwhMCl9LGhpZGVPcGVyYXRpb246ZnVuY3Rpbz0KbihlKXt0aGlzLiRvcGVy YXRpb25zLmZpbmQoIiMiK2UpLmhpZGUoKX0sc2hvd09wZXJhdGlvbjpmdW5jdGlvbihlKXt0aGlz LiRvPQpwZXJhdGlvbnMuZmluZCgiIyIrZSkuc2hvdygpfSxzZXRPcGVyYXRpb246ZnVuY3Rpb24o ZSx0KXt2YXIgbj0zRHRoaXMuJG9wZXI9CmF0aW9ucy5maW5kKCIjIitlKTtuLm9mZigiY2xpY2si KSxuLm9uKCJjbGljayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUpe3ZhciB0PQo9M0R0aGlzLiR0aXRs ZTtyZXR1cm4gZSYmdC5odG1sKGUpLHQuaHRtbCgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFy IHQ9M0Q9Cic8ZGl2IGNsYXNzPTNEInVpLXBvcnRsZXQiPic7cmV0dXJuIGUudGl0bGUmJih0Kz0z RCc8ZGl2IGlkPTNEInBvcnRsZXQtaGVhZD0KZXIiIGNsYXNzPTNEInBvcnRsZXQtaGVhZGVyIj48 ZGl2IGlkPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsiPQo+PC9kaXY+PGgz PicsZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIj4mbmJzcDs8 L2k+JyksdCs9Cj0zRCc8c3BhbiBpZD0zRCJwb3J0bGV0LWhlYWRlci10ZXh0Ij4nK2UudGl0bGUr Ijwvc3Bhbj4iKyI8L2gzPiIrIjwvZGl2PiIpLD0KdCs9M0QnPGRpdiBpZD0zRCJwb3J0bGV0LWNv bnRlbnQiIGNsYXNzPTNEInBvcnRsZXQtY29udGVudCI+JyxlLnBsYWNlbWVudD0KPTNEPTNEInRv cCImJih0Kz0zRCc8ZGl2IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Picp LHQrPTNEJzxkPQppdiBpZD0zRCJjb250ZW50IiBjbGFzcz0zRCJjb250ZW50Ij48L2Rpdj4nLGUu cGxhY2VtZW50PTNEPTNEImJvdHRvbSImJih0Kz0KPTNEJzxkaXYgaWQ9M0QiYnV0dG9ucyIgY2xh c3M9M0QiYnV0dG9ucyI+PC9kaXY+JyksdCs9M0QiPC9kaXY+PC9kaXY+Iix0fX0pPQo7cmV0dXJu e1ZpZXc6dH19KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3VpLXNlbGVjdCIsWyJ1dGlscy91dGls cyJdLGZ1bmN0aW89Cm4oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0Rl ZmF1bHQ6e2lkOiIiLGNsczoiIixlbXB0eToiTm8gZD0KYXRhIGF2YWlsYWJsZSIsdmlzaWJsZToh MCx3YWl0OiExfSxzZWxlY3RlZDpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpPQpzLm9w dGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZWxlY3RlZD0zRHRo aXMub3B0aW9ucy52YWw9CnVlLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9w dGlvbnMpKSx0aGlzLiRzZWxlY3Q9M0R0aGlzLiRlbC5maT0KbmQoIiNzZWxlY3QiKSx0aGlzLiRp Y29uPTNEdGhpcy4kZWwuZmluZCgiI2ljb24iKTt2YXIgbj0zRHRoaXM7dGhpcy4kc2VsZWN0PQou b24oImNoYW5nZSIsZnVuY3Rpb24oKXtuLnZhbHVlKG4uJHNlbGVjdC52YWwoKSl9KSx0aGlzLm9u KCJjaGFuZ2UiLGZ1bmN0aW89Cm4oKXtuLm9wdGlvbnMub25jaGFuZ2UmJm4ub3B0aW9ucy5vbmNo YW5nZShuLnZhbHVlKCkpfSksdGhpcy5fcmVmcmVzaCgpLHRoaT0Kcy5vcHRpb25zLnZpc2libGV8 fHRoaXMuaGlkZSgpLHRoaXMub3B0aW9ucy53YWl0P3RoaXMud2FpdCgpOnRoaXMuc2hvdygpfSx2 PQphbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5zZWxlY3RlZDtlIT0zRD0zRHVuZGVmaW5l ZCYmKHRoaXMuc2VsZWN0ZWQ9M0Q9CmUsdGhpcy4kc2VsZWN0LnZhbChlKSk7dmFyIG49M0R0aGlz LnNlbGVjdGVkO3JldHVybiBuJiZuIT0zRHQmJnRoaXMub3B0aW9ucz0KLm9uY2hhbmdlJiZ0aGlz Lm9wdGlvbnMub25jaGFuZ2Uobiksbn0sZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJHNl bGVjPQp0LmZpbmQoIm9wdGlvbiIpO3JldHVybiBlLmxlbmd0aD4wP2UudmFsKCk6dW5kZWZpbmVk fSx0ZXh0OmZ1bmN0aW9uKCl7cmV0dXI9Cm4gdGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvbjpzZWxl Y3RlZCIpLnRleHQoKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJGljb24ucj0KZW1vdmVDbGFzcygp LHRoaXMuJGljb24uYWRkQ2xhc3MoImZhIGZhLWNhcmV0LWRvd24iKSx0aGlzLiRzZWxlY3Quc2hv dygpLHRoPQppcy4kZWwuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSx3 YWl0OmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi49CnJlbW92ZUNsYXNzKCksdGhpcy4kaWNvbi5hZGRD bGFzcygiZmEgZmEtc3Bpbm5lciBmYS1zcGluIiksdGhpcy4kc2VsZWN0LmhpZD0KZSgpfSxkaXNh YmxlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzZWxlY3QuaXMoIjpkaXNhYmxlZCIpfSxlbmFi bGU6ZnVuY3RpPQpvbigpe3RoaXMuJHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxl OmZ1bmN0aW9uKCl7dGhpcy4kc2VsZWN0LnByb3A9CigiZGlzYWJsZWQiLCEwKX0sYWRkOmZ1bmN0 aW9uKGUpe3RoaXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb24oZT0KKSksdGhp cy5fcmVmcmVzaCgpfSxkZWw6ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvblt2 YWx1ZT0zRCIrZSsiPQpdIikucmVtb3ZlKCksdGhpcy4kc2VsZWN0LnRyaWdnZXIoImNoYW5nZSIp LHRoaXMuX3JlZnJlc2goKX0sdXBkYXRlOmZ1bmN0aW89Cm4oZSl7dGhpcy4kc2VsZWN0LmZpbmQo Im9wdGlvbiIpLnJlbW92ZSgpO2Zvcih2YXIgdCBpbiBlKXRoaXMuJHNlbGVjdC5hcHBlbj0KZCh0 aGlzLl90ZW1wbGF0ZU9wdGlvbihlW3RdKSk7dGhpcy5fcmVmcmVzaCgpfSxzZXRPbkNoYW5nZTpm dW5jdGlvbihlKXt0aGlzPQoub3B0aW9ucy5vbmNoYW5nZT0zRGV9LGV4aXN0czpmdW5jdGlvbihl KXtyZXR1cm4gdGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvbls9CnZhbHVlPTNEIitlKyJdIikubGVu Z3RoPjB9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvblt2YT0K bHVlPTNEbnVsbF0iKS5yZW1vdmUoKTt2YXIgZT0zRHRoaXMuJHNlbGVjdC5maW5kKCJvcHRpb24i KS5sZW5ndGg7ZT0zRD0zRDA/PQoodGhpcy5kaXNhYmxlKCksdGhpcy4kc2VsZWN0LmFwcGVuZCh0 aGlzLl90ZW1wbGF0ZU9wdGlvbih7dmFsdWU6Im51bGwiLGxhYmU9Cmw6dGhpcy5vcHRpb25zLmVt cHR5fSkpKTp0aGlzLmVuYWJsZSgpLHRoaXMuc2VsZWN0ZWQmJnRoaXMuJHNlbGVjdC52YWwodGhp cz0KLnNlbGVjdGVkKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUpe3JldHVybic8b3B0aW9u IHZhbHVlPTNEIicrZS52YWx1ZSsnPQoiPicrZS5sYWJlbCsiPC9vcHRpb24+In0sX3RlbXBsYXRl OmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyc9CiIgY2xhc3M9M0QidWkt c2VsZWN0Ij4nKyc8ZGl2IGNsYXNzPTNEImJ1dHRvbiI+JysnPGkgaWQ9M0QiaWNvbiIvPicrIjwv ZGl2Pj0KIisnPHNlbGVjdCBpZD0zRCJzZWxlY3QiIGNsYXNzPTNEInNlbGVjdCAnK2UuY2xzKyIg IitlLmlkKyciPic7Zm9yKGtleSBpbiBlPQouZGF0YSl7dmFyIG49M0RlLmRhdGFba2V5XSxyPTNE IiI7aWYobi52YWx1ZT0zRD0zRGUudmFsdWV8fG4udmFsdWU9M0Q9M0QiIik9CnI9M0Qic2VsZWN0 ZWQiO3QrPTNEJzxvcHRpb24gdmFsdWU9M0QiJytuLnZhbHVlKyciICcrcisiPiIrbi5sYWJlbCsi PC9vcHRpbz0Kbj4ifXJldHVybiB0Kz0zRCI8L3NlbGVjdD48L2Rpdj4iLHR9fSk7cmV0dXJue1Zp ZXc6dH19KSxkZWZpbmUoInBsdWdpbi9saWJyPQphcnkvdWkiLFsidXRpbHMvdXRpbHMiLCJwbHVn aW4vbGlicmFyeS91aS1zZWxlY3QiLCJtdmMvdWkvdWktbW9kYWwiXSxmdW5jdGk9Cm9uKGUsdCxu KXt2YXIgcj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dXJsOiIiLGNs czoiIn0saW5pdD0KaWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0 aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsPQplbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlz Lm9wdGlvbnMpKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8aW1nIGNsYXM9CnM9M0Qi dWktaW1hZ2UgJytlLmNscysnIiBzcmM9M0QiJytlLnVybCsnIi8+J319KSxpPTNEQmFja2JvbmUu Vmlldy5leHRlbmQoez0Kb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGNsczoiIn0saW5pdGlhbGl6 ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lPQpyZ2UodCx0aGlzLm9wdGlvbnNEZWZh dWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSl9LHQ9Cml0 bGU6ZnVuY3Rpb24oZSl7dGhpcy4kZWwuaHRtbChlKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3Jl dHVybic8bGFiZWwgY2xhcz0Kcz0zRCJ1aS1sYWJlbCAnK2UuY2xzKyciPicrZS50aXRsZSsiPC9s YWJlbD4ifSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBvcHRpPQpvbnMudGl0bGV9fSkscz0zREJh Y2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7aWQ6bnVsbCx0aXRsZToiIiwiZmw9 Cm9hdCI6InJpZ2h0IixjbHM6ImJ0biBidG4tZGVmYXVsdCIsaWNvbjoiIn0saW5pdGlhbGl6ZTpm dW5jdGlvbih0KXt0aGlzLm9wdD0KaW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0 KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vPQpwdGlvbnMpKSwkKHRoaXMu ZWwpLm9uKCJjbGljayIsdC5vbmNsaWNrKSwkKHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnQudG9v bHQ9CmlwLHBsYWNlbWVudDoiYm90dG9tIn0pfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9 M0QnPGJ1dHRvbiBpZD0zRCInK2UuaT0KZCsnIiB0eXBlPTNEInN1Ym1pdCIgc3R5bGU9M0QiZmxv YXQ6ICcrZS5mbG9hdCsnOyIgdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEPQoidWktYnV0dG9uICcr ZS5jbHMrJyI+JztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2Uu aWNvbis9CiciPjwvaT4mbmJzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxvPTNE QmFja2JvbmUuVmlldy5leHRlbmQoe29wdD0KaW9uc0RlZmF1bHQ6eyJmbG9hdCI6InJpZ2h0Iixp Y29uOiIiLHRvb2x0aXA6IiIscGxhY2VtZW50OiJib3R0b20iLHRpdGxlOiIiPQosY2xzOiIifSxp bml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlv bnNEZWZhdWw9CnQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMp KSwkKHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOj0KdC50b29sdGlwLHBsYWNlbWVudDoiYm90dG9t In0pfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXY+PHNwYW4gY2xhPQpzcz0zRCJm YSAnK2UuaWNvbisnIiBjbGFzcz0zRCJ1aS1pY29uIi8+Jm5ic3A7JytlLnRpdGxlKyI8L2Rpdj4i fX0pLHU9M0RCYWM9Cmtib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIs aWQ6bnVsbCwiZmxvYXQiOiJyaWdodCIsY2xzOiJpYz0Kb24tYnRuIixpY29uOiIiLHRvb2x0aXA6 IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0PQosdGhp cy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0 aW9ucykpLCQodGhpcy49CmVsKS5vbigiY2xpY2siLHQub25jbGljayksJCh0aGlzLmVsKS50b29s dGlwKHt0aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJibz0KdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1 bmN0aW9uKGUpe3ZhciB0PTNEIiI7ZS50aXRsZSYmKHQ9M0Qid2lkdGg6IGF1dG87Iik7dmFyPQog bj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdHlsZT0zRCJmbG9hdDogJytlLmZsb2F0KyI7ICIr dCsnIiBjbGFzcz0zRCJ1aS09CmJ1dHRvbi1pY29uICcrZS5jbHMrJyI+JztyZXR1cm4gZS50aXRs ZT9uKz0zRCc8ZGl2IGNsYXNzPTNEImJ1dHRvbiI+PGkgY2xhcz0Kcz0zRCJpY29uIGZhICcrZS5p Y29uKyciLz4mbmJzcDsnKyc8c3BhbiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8L3NwYW4+ PQoiKyI8L2Rpdj4iOm4rPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyIvPicsbis9 M0QiPC9kaXY+IixufX0pLGE9M0Q9CkJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVs dDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKD0KdCl7dGhpcy5vcHRpb25z PTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90 ZW1wPQpsYXRlKHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkub24oImNsaWNrIix0Lm9uY2xpY2sp fSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSk9CntyZXR1cm4nPGRpdj48YSBocmVmPTNEImphdmFzY3Jp cHQ6dm9pZCgwKSIgY2xhc3M9M0QidWktYW5jaG9yICcrZS5jbHMrJyI+Jz0KK2UudGl0bGUrIjwv YT48L2Rpdj4ifX0pLGY9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e21l c3NhZ2U6PQoiIixzdGF0dXM6ImluZm8iLHBlcnNpc3RlbnQ6ITF9LGluaXRpYWxpemU6ZnVuY3Rp b24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXI9CmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhp cy5zZXRFbGVtZW50KCI8ZGl2PjwvZGl2PiIpfSx1cGRhdGU6ZnVuY3Rpb24odD0KKXt0aGlzLm9w dGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCk7aWYodC5tZXNzYWdlIT0zRCIi KXt0aGlzLiRlPQpsLmh0bWwodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy4kZWwu ZmluZCgiLmFsZXJ0IikuYXBwZW5kKHQubWVzc2E9CmdlKSx0aGlzLiRlbC5mYWRlSW4oKTtpZigh dC5wZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7d2luZG93LnNldFRpbWVvdXQoZnVuYz0KdGlvbigp e24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZhZGVPdXQoKTpuLiRlbC5oaWRlKCl9LDNlMyl9 fWVsc2UgdGhpcy4kPQplbC5mYWRlT3V0KCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4n PGRpdiBjbGFzcz0zRCJ1aS1tZXNzYWdlIGFsZXJ0IGE9CmxlcnQtJytlLnN0YXR1cysnIi8+J319 KSxsPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntvbmNsaWNrOj0KbnVs bCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUu bWVyZ2UodCx0aGlzLm9wPQp0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1w bGF0ZSh0aGlzLm9wdGlvbnMpKTt2YXIgbj0zRHRoaXM7dGg9CmlzLm9wdGlvbnMub25jbGljayYm dGhpcy4kZWwub24oInN1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIHQ9M0RuLiRlbC5maW5kKCIjcz0K ZWFyY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0pfSxfdGVtcGxhdGU6ZnVuY3Rpb24o ZSl7cmV0dXJuJzxkaXYgY2xhPQpzcz0zRCJ1aS1zZWFyY2giPjxmb3JtIG9uc3VibWl0PTNEInJl dHVybiBmYWxzZTsiPjxpbnB1dCBpZD0zRCJzZWFyY2giIGNsYXM9CnM9M0QiZm9ybS1jb250cm9s IGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbWU9M0Qic2VhcmNoIiBwbGFjZWhvbGRlcj0zRCJT ZT0KYXJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJjaHdvcmQrJyI+JysnPGJ1dHRvbiB0eXBlPTNE InN1Ym1pdCIgY2xhc3M9M0QiYnRuPQogc2VhcmNoLWJ0biI+JysnPGkgY2xhc3M9M0QiZmEgZmEt c2VhcmNoIj48L2k+JysiPC9idXR0b24+IisiPC9mb3JtPiIrIjwvZGk9CnY+In19KSxjPTNEQmFj a2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDoiIix0aXRsZToiIix0YXJnZXQ6 IiIsaD0KcmVmOiIiLG9udW5sb2FkOm51bGwsb25jbGljazpudWxsLHZpc2libGU6ITAsaWNvbjpu dWxsLHRhZzoiIn0sJG1lbnU6bnVsbCxpPQpuaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRp b25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2U9CnRFbGVtZW50KCQo dGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSkpO3ZhciBuPTNEJCh0aGlzLmVsKS5maW5kKCIu cm9vdCIpLD0Kcj0zRHRoaXM7bi5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1 bHQoKSxyLm9wdGlvbnMub25jbGljayYmci5vPQpwdGlvbnMub25jbGljaygpfSksdGhpcy5vcHRp b25zLnZpc2libGV8fHRoaXMuaGlkZSgpfSxzaG93OmZ1bmN0aW9uKCl7JCh0aGk9CnMuZWwpLnNo b3coKX0saGlkZTpmdW5jdGlvbigpeyQodGhpcy5lbCkuaGlkZSgpfSxhZGRNZW51OmZ1bmN0aW9u KHQpe3ZhciBuPQo9M0R7dGl0bGU6IiIsdGFyZ2V0OiIiLGhyZWY6IiIsb25jbGljazpudWxsLGRp dmlkZXI6ITEsaWNvbjpudWxsLGNsczoiYnV0dG89Cm4tbWVudSBidG4tZ3JvdXAifTtuPTNEZS5t ZXJnZSh0LG4pLHRoaXMuJG1lbnV8fCgkKHRoaXMuZWwpLmFwcGVuZCh0aGlzLl90ZT0KbXBsYXRl TWVudSgpKSx0aGlzLiRtZW51PTNEJCh0aGlzLmVsKS5maW5kKCIubWVudSIpKTt2YXIgcj0zRCQo dGhpcy5fdGVtcGxhPQp0ZU1lbnVJdGVtKG4pKTtyLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5w cmV2ZW50RGVmYXVsdCgpLG4ub25jbGljayYmbi5vbmM9CmxpY2soKX0pLHRoaXMuJG1lbnUuYXBw ZW5kKHIpLG4uZGl2aWRlciYmdGhpcy4kbWVudS5hcHBlbmQoJCh0aGlzLl90ZW1wbGF0ZT0KRGl2 aWRlcigpKSl9LF90ZW1wbGF0ZU1lbnVJdGVtOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxsaT48YSBo cmVmPTNEIicrZS5ocmVmPQorJyIgdGFyZ2V0PTNEIicrZS50YXJnZXQrJyI+JztyZXR1cm4gZS5p Y29uJiYodCs9M0QnPGkgY2xhc3M9M0QiZmEgJytlLmljb249CisnIj48L2k+JyksdCs9M0QiICIr ZS50aXRsZSsiPC9hPiIrIjwvbGk+Iix0fSxfdGVtcGxhdGVNZW51OmZ1bmN0aW9uKCl7cmV0dT0K cm4nPHVsIGNsYXNzPTNEIm1lbnUgZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IiByb2xlPTNEIm1l bnUiPjwvdWw+J30sX3RlbXBsPQphdGVEaXZpZGVyOmZ1bmN0aW9uKCl7cmV0dXJuJzxsaSBjbGFz cz0zRCJkaXZpZGVyIj48L2xpPid9LF90ZW1wbGF0ZTpmdW5jdGk9Cm9uKGUpe3ZhciB0PTNEJzxk aXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEInVpLWJ1dHRvbi1tZW51ICcrZS5jbHMrJyI+Jysn PD0KYnV0dG9uIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCJyb290IGJ0biBidG4tZGVmYXVsdCBk cm9wZG93bi10b2dnbGUiIGRhdGEtPQp0b2dnbGU9M0QiZHJvcGRvd24iPic7cmV0dXJuIGUuaWNv biYmKHQrPTNEJzxpIGNsYXNzPTNEImZhICcrZS5pY29uKyciPjwvaT49CicpLCI8L2J1dHRvbj48 L2Rpdj4iLHR9fSksaD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dmFs dWU6Ij0KIix0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoiIixkaXNhYmxlZDohMSx2aXNpYmxlOiEw LGNsczoiZm9ybS1jb250cm9sIn0saW5pPQp0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9u cz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEU9CmxlbWVudCh0aGlz Ll90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuJGVs LnByb3AoIj0KZGlzYWJsZWQiLCEwKSx0aGlzLm9wdGlvbnMudmlzaWJsZXx8dGhpcy4kZWwuaGlk ZSgpO3ZhciBuPTNEdGhpczt0aGlzLiRlbC5vPQpuKCJpbnB1dCIsZnVuY3Rpb24oKXtuLm9wdGlv bnMub25jaGFuZ2UmJm4ub3B0aW9ucy5vbmNoYW5nZShuLiRlbC52YWwoKSl9KX09Cix2YWx1ZTpm dW5jdGlvbihlKXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXMuJGVsLnZhbChlKSx0aGlz LiRlbC52YWwoKT0KfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxpbnB1dCBpZD0zRCIn K2UuaWQrJyIgdHlwZT0zRCInK2UudHlwZSsnIiB2PQphbHVlPTNEIicrZS52YWx1ZSsnIiBwbGFj ZWhvbGRlcj0zRCInK2UucGxhY2Vob2xkZXIrJyIgY2xhc3M9M0QidWktaW5wdXQgJys9CmUuY2xz KyciPid9fSkscD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dmFsdWU6 IiIsdHlwZToidGV4dD0KIixwbGFjZWhvbGRlcjoiIixkaXNhYmxlZDohMSx2aXNpYmxlOiEwLGNs czoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzPQoub3B0aW9ucz0zRGUubWVyZ2UodCx0 aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGg9Cmlz Lm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuJGVsLnByb3AoImRpc2FibGVk IiwhMCksdGhpcy5vcHRpbz0KbnMudmlzaWJsZXx8dGhpcy4kZWwuaGlkZSgpO3ZhciBuPTNEdGhp czt0aGlzLiRlbC5vbigiaW5wdXQiLGZ1bmN0aW9uKCl7bi5vPQpwdGlvbnMub25jaGFuZ2UmJm4u b3B0aW9ucy5vbmNoYW5nZShuLiRlbC52YWwoKSl9KX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXI9 Cm4gZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXMuJGVsLnZhbChlKSx0aGlzLiRlbC52YWwoKX0sX3Rl bXBsYXRlOmZ1bmN0aW9uKGUpez0KcmV0dXJuJzx0ZXh0YXJlYSBpZD0zRCInK2UuaWQrJyIgY2xh c3M9M0QidWktdGV4dGFyZWEgJytlLmNscysnIiByb3dzPTNEIjUiPQo+PC90ZXh0YXJlYT4nfX0p O3JldHVybntMYWJlbDppLEJ1dHRvbjpzLEljb246byxCdXR0b25JY29uOnUsSW5wdXQ6aCxBbmNo b3I9CjphLE1lc3NhZ2U6ZixTZWFyY2hib3g6bCxTZWxlY3Q6dCxCdXR0b25NZW51OmMsTW9kYWw6 bixUZXh0YXJlYTpwLEltYWdlOnJ9fT0KKSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L2pvYnMiLFsi dXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuPQpNb2RlbC5leHRlbmQo e2luaXRpYWxpemU6ZnVuY3Rpb24odCxuKXt0aGlzLmFwcD0zRHQsdGhpcy5vcHRpb25zPTNEZS5t ZXJnZSg9Cm4sdGhpcy5vcHRpb25zRGVmYXVsdCl9LHJlcXVlc3Q6ZnVuY3Rpb24oZSx0LG4scixp KXt2YXIgcz0zRHRoaXM7ZS5zdGF0ZSgidz0KYWl0IiwiUmVxdWVzdGluZyBqb2IgcmVzdWx0cy4u LiIpO3ZhciBvPTNEZS5nZXQoImRhdGFzZXRfaWRfam9iIik7byE9M0QiIj9zPQouX3dhaXQoZSxy LGkpOnMuX3N1Ym1pdChlLHQsbixyLGkpfSxjbGVhbnVwOmZ1bmN0aW9uKHQpe3ZhciBuPTNEdGhp cyxyPTNEdC49CmdldCgiZGF0YXNldF9pZF9qb2IiKTtyIT0zRCIiJiYoZS5yZXF1ZXN0KCJQVVQi LGNvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzLz0Kbm9uZS9jb250ZW50cy8iK3Ise2RlbGV0ZWQ6 ITB9LGZ1bmN0aW9uKCl7bi5fcmVmcmVzaEhkYXMoKX0pLHQuc2V0KCJkYXRhc2V0PQpfaWRfam9i IiwiIikpfSxfc3VibWl0OmZ1bmN0aW9uKHQsbixyLGkscyl7dmFyIG89M0R0aGlzLHU9M0R0Lmlk LGE9M0R0LmdldCg9CiJ0eXBlIiksZj0zRHRoaXMuYXBwLnR5cGVzLmdldChhKTtkYXRhPTNEe3Rv b2xfaWQ6ImNoYXJ0cyIsaW5wdXRzOntpbnB1dDp7aT0KZDp0LmdldCgiZGF0YXNldF9pZCIpLHNy YzoiaGRhIn0sbW9kdWxlOmYuZXhlY3V0ZSxjb2x1bW5zOnIsc2V0dGluZ3M6bn19LHQuPQpzdGF0 ZSgid2FpdCIsIlNlbmRpbmcgam9iIHJlcXVlc3QuLi4iKSxlLnJlcXVlc3QoIlBPU1QiLGNvbmZp Zy5yb290KyJhcGkvdG89Cm9scyIsZGF0YSxmdW5jdGlvbihlKXtpZighZS5vdXRwdXRzfHxlLm91 dHB1dHMubGVuZ3RoPTNEPTNEMCl0LnN0YXRlKCJmYWlsZT0KZCIsIkpvYiBzdWJtaXNzaW9uIGZh aWxlZC4gTm8gcmVzcG9uc2UuIikscyYmcygpO2Vsc2V7by5fcmVmcmVzaEhkYXMoKTt2YXIgPQpu PTNEZS5vdXRwdXRzWzBdO3Quc3RhdGUoIndhaXQiLCJZb3VyIGpvYiBoYXMgYmVlbiBxdWV1ZWQu IFlvdSBtYXkgY2xvc2UgdGg9CmUgYnJvd3NlciB3aW5kb3cuIFRoZSBqb2Igd2lsbCBydW4gaW4g dGhlIGJhY2tncm91bmQuIiksdC5zZXQoImRhdGFzZXRfaWRfaj0Kb2IiLG4uaWQpLHRoaXMuYXBw LnN0b3JhZ2Uuc2F2ZSgpLG8uX3dhaXQodCxpLHMpfX0sZnVuY3Rpb24oZSl7dmFyIG49M0QiIjtl PQomJmUubWVzc2FnZSYmZS5tZXNzYWdlLmRhdGEmJmUubWVzc2FnZS5kYXRhLmlucHV0JiYobj0z RGUubWVzc2FnZS5kYXRhLmlucHU9CnQrIi4iKSx0LnN0YXRlKCJmYWlsZWQiLCJUaGlzIHZpc3Vh bGl6YXRpb24gcmVxdWlyZXMgdGhlICdjaGFydHMnIHRvb2wuIFBsZT0KYXNlIG1ha2Ugc3VyZSBp dCBpcyBpbnN0YWxsZWQuICIrbikscyYmcygpfSl9LF93YWl0OmZ1bmN0aW9uKHQsbixyKXt2YXIg aT0KPTNEdGhpcztlLnJlcXVlc3QoIkdFVCIsY29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3Qu Z2V0KCJkYXRhc2V0X2lkX2pvYiIpPQose30sZnVuY3Rpb24oZSl7dmFyIHM9M0QhMTtzd2l0Y2go ZS5zdGF0ZSl7Y2FzZSJvayI6dC5zdGF0ZSgid2FpdCIsIkpvYiBjb209CnBsZXRlZCBzdWNjZXNz ZnVsbHkuLi4iKSxuJiZuKGUpLHM9M0QhMDticmVhaztjYXNlImVycm9yIjp0LnN0YXRlKCJmYWls ZWQiLD0KIkpvYiBoYXMgZmFpbGVkLiBQbGVhc2UgY2hlY2sgdGhlIGhpc3RvcnkgZm9yIGRldGFp bHMuIiksciYmcihlKSxzPTNEITA7YnJlPQphaztjYXNlInJ1bm5pbmciOnQuc3RhdGUoIndhaXQi LCJZb3VyIGpvYiBpcyBydW5uaW5nLiBZb3UgbWF5IGNsb3NlIHRoZSBicm89CndzZXIgd2luZG93 LiBUaGUgam9iIHdpbGwgY29udGludWUgaW4gdGhlIGJhY2tncm91bmQuIil9c3x8c2V0VGltZW91 dChmdW5jdD0KaW9uKCl7aS5fd2FpdCh0LG4scil9LGkuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X3Rp bWVvdXQiKSl9KX0sX3JlZnJlc2hIZGFzOmZ1PQpuY3Rpb24oKXtHYWxheHkmJkdhbGF4eS5jdXJy SGlzdG9yeVBhbmVsJiZHYWxheHkuY3Vyckhpc3RvcnlQYW5lbC5yZWZyZXNoQ289Cm50ZW50cygp fX0pfSksZGVmaW5lKCJwbHVnaW4vbGlicmFyeS9kYXRhc2V0cyIsWyJ1dGlscy91dGlscyJdLGZ1 bmN0aW9uKGUpez0KcmV0dXJuIEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHtsaXN0Ont9LGNh Y2hlOnt9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxuPQope3RoaXMuYXBwPTNEdCx0aGlzLm9wdGlv bnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGVmYXVsdCl9LHJlcXVlc3Q6ZnVuY3Q9Cmlvbihl LHQsbil7dmFyIHI9M0R0aGlzO2UuZ3JvdXBzP3RoaXMuX2dldF9kYXRhc2V0KGUuaWQsZnVuY3Rp b24oKXtyLl9nZXQoZT0KLHQpfSk6dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCx0LG4pfSxfZ2V0X2Rh dGFzZXQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhpPQpzLmxpc3RbdF07aWYoaSl7bihpKTty ZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCgiR0VUIixjb25maWcucm9vdCsiYXBpL2Q9CmF0 YXNldHMvIit0LHt9LGZ1bmN0aW9uKGUpe3N3aXRjaChlLnN0YXRlKXtjYXNlImVycm9yIjpyJiZy KGUpO2JyZWFrO2RlZmF1bD0KdDpzLmxpc3RbdF09M0RlLG4oZSl9fSl9LF9ibG9ja19pZDpmdW5j dGlvbihlLHQpe3JldHVybiBlLmlkKyJfIitlLnN0YXJ0KyJfPQoiK2UuZW5kKyJfIit0fSxfZ2V0 OmZ1bmN0aW9uKGUsdCl7ZS5zdGFydHx8KGUuc3RhcnQ9M0QwKSxlLmVuZHx8KGUuZW5kPTNEdGg9 CmlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCIpKTt2YXIgbj0zRFtdLHI9M0R7fSxpPTNE MDtmb3IodmFyIHMgaW4gZS5ncj0Kb3Vwcyl7dmFyIG89M0RlLmdyb3Vwc1tzXTtmb3IodmFyIHUg aW4gby5jb2x1bW5zKXt2YXIgYT0zRG8uY29sdW1uc1t1XS5pbmRlPQp4LGY9M0R0aGlzLl9ibG9j a19pZChlLGEpO2lmKHRoaXMuY2FjaGVbZl18fGE9M0Q9M0Q9M0QiYXV0byIpY29udGludWU7IXJb YV09CiYmYSE9M0Q9M0R1bmRlZmluZWQmJihyW2FdPTNEaSxuLnB1c2goYSksaSsrKX19aWYobi5s ZW5ndGg9M0Q9M0QwKXt0aGlzLl9maT0KbGxfZnJvbV9jYWNoZShlKSx0KGUpO3JldHVybn12YXIg bD0zRHtkYXRhc2V0X2lkOmUuaWQsc3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lPQpuZCxjb2x1bW5zOm59 LGM9M0R0aGlzO3RoaXMuX2ZldGNoKGwsZnVuY3Rpb24ocil7Zm9yKHZhciBpIGluIHIpe3ZhciBz PTNEbls9CmldLG89M0RjLl9ibG9ja19pZChlLHMpO2MuY2FjaGVbb109M0RyW2ldfWMuX2ZpbGxf ZnJvbV9jYWNoZShlKSx0KGUpfSl9LF9maT0KbGxfZnJvbV9jYWNoZTpmdW5jdGlvbihlKXtjb25z b2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZpbGxfZnJvbV9jYWNoZSgpIC0gRmlsPQpsaW5nIHJlcXVl c3QgZnJvbSBjYWNoZS4iKTt2YXIgdD0zRGUuc3RhcnQsbj0zRDA7Zm9yKHZhciByIGluIGUuZ3Jv dXBzKXt2YXI9CiBpPTNEZS5ncm91cHNbcl07Zm9yKHZhciBzIGluIGkuY29sdW1ucyl7dmFyIG89 M0RpLmNvbHVtbnNbc10sdT0zRHRoaXMuX2Jsbz0KY2tfaWQoZSxvLmluZGV4KSxhPTNEdGhpcy5j YWNoZVt1XTthJiYobj0zRE1hdGgubWF4KG4sYS5sZW5ndGgpKX19bj0zRD0zRDAmPQomY29uc29s ZS5kZWJ1ZygiRkFJTEVEIC0gRGF0YXNldHM6Ol9maWxsX2Zyb21fY2FjaGUoKSAtIEludmFsaWQg cmFuZ2UuIik7Zm89CnIodmFyIHIgaW4gZS5ncm91cHMpe3ZhciBpPTNEZS5ncm91cHNbcl07aS52 YWx1ZXM9M0RbXTtmb3IodmFyIGY9M0QwO2Y8bjtmKz0KKylpLnZhbHVlc1tmXT0zRHt4OnBhcnNl SW50KGYpK3R9fWZvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyPQpdO2Zv cih2YXIgcyBpbiBpLmNvbHVtbnMpe3ZhciBvPTNEaS5jb2x1bW5zW3NdO2lmKG8uaW5kZXg9M0Q9 M0QiYXV0byIpZm9yKHY9CmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52YWx1ZXNbZl07bFtz XT0zRHBhcnNlSW50KGYpK3R9ZWxzZXt2YXIgdT0zRHRoaT0Kcy5fYmxvY2tfaWQoZSxvLmluZGV4 KSxhPTNEdGhpcy5jYWNoZVt1XTtmb3IodmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52PQph bHVlc1tmXSxjPTNEYVtmXTtpc05hTihjKSYmIW8uaXNfbGFiZWwmJihjPTNEMCksbFtzXT0zRGN9 fX19fSxfZmV0Y2g6ZnVuY3Q9Cmlvbih0LG4pe3ZhciByPTNEdC5zdGFydD90LnN0YXJ0OjAsaT0z RE1hdGguYWJzKHQuZW5kLXQuc3RhcnQpLHM9M0R0aGlzLmFwcD0KLmNvbmZpZy5nZXQoInF1ZXJ5 X2xpbWl0Iik7aWYoIWl8fGk+cylpPTNEczt2YXIgbz0zRDA7dC5jb2x1bW5zJiYobz0zRHQuY29s PQp1bW5zLmxlbmd0aCxjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRjaGlu ZyAiK28rIiBjb2x1bW4ocykiKSk9CixvPTNEPTNEMCYmY29uc29sZS5kZWJ1ZygiRGF0YXNldHM6 Ol9mZXRjaCgpIC0gTm8gY29sdW1ucyByZXF1ZXN0ZWQiKTt2YXIgdT0KPTNEIiI7Zm9yKHZhciBh IGluIHQuY29sdW1ucyl1Kz0zRHQuY29sdW1uc1thXSsiLCI7dT0zRHUuc3Vic3RyaW5nKDAsdS5s ZW5nPQp0aC0xKTt2YXIgZj0zRHRoaXM7ZS5yZXF1ZXN0KCJHRVQiLGNvbmZpZy5yb290KyJhcGkv ZGF0YXNldHMvIit0LmRhdGFzZXRfaWQ9Cix7ZGF0YV90eXBlOiJyYXdfZGF0YSIscHJvdmlkZXI6 ImRhdGFzZXQtY29sdW1uIixsaW1pdDppLG9mZnNldDpyLGluZGVjZXM6dT0KfSxmdW5jdGlvbihl KXt2YXIgdD0zRG5ldyBBcnJheShvKTtmb3IodmFyIHI9M0QwO3I8bztyKyspdFtyXT0zRFtdO2Zv cih2YXIgPQpyIGluIGUuZGF0YSl7dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBzIGluIGkpe3Zh ciB1PTNEaVtzXTt1IT0zRD0zRHVuZGVmaW49CmVkJiZ1IT0zRDIxNDc0ODM2NDcmJnRbc10ucHVz aCh1KX19Y29uc29sZS5kZWJ1ZygiRGF0YXNldHM6Ol9mZXRjaCgpIC0gRmV0Yz0KaGluZyBjb21w bGV0ZS4iKSxuKHQpfSl9fSl9KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvZ3JvdXAiLFtdLGZ1bmN0 aW9uKCl7cmV0PQp1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7a2V5OiJEYXRh IGxhYmVsIixkYXRlOiIifSxyZXNldDpmdW5jdGk9Cm9uKCl7dGhpcy5jbGVhcih7c2lsZW50OiEw fSkuc2V0KHRoaXMuZGVmYXVsdHMpLHRoaXMudHJpZ2dlcigicmVzZXQiLHRoaXMpfT0KfSl9KSxk ZWZpbmUoInBsdWdpbi9tb2RlbHMvZ3JvdXBzIixbInBsdWdpbi9tb2RlbHMvZ3JvdXAiXSxmdW5j dGlvbihlKXtyZXR1PQpybiBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7bW9kZWw6ZX0pfSks ZGVmaW5lKCJwbHVnaW4vbGlicmFyeS9kZWZlcnJlZCI9CixbInV0aWxzL3V0aWxzIl0sZnVuY3Rp b24oZSl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7cXVldWU6W10scHJvY2Vzcz0KOnt9 LGNvdW50ZXI6MCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5vbigicmVmcmVzaCIsZnVuY3Rp b24oKXtmb3IodmFyIGUgPQppbiB0aGlzLnF1ZXVlKWlmKHRoaXMuY291bnRlcj0zRD0zRDApe3Zh ciB0PTNEdGhpcy5xdWV1ZVtlXTt0aGlzLnF1ZXVlLnNwbGk9CmNlKGUsMSksdCgpfX0pfSxleGVj dXRlOmZ1bmN0aW9uKGUpe3RoaXMucXVldWUucHVzaChlKSx0aGlzLnRyaWdnZXIoInJlZnJlcz0K aCIpfSxyZWdpc3RlcjpmdW5jdGlvbigpe3ZhciB0PTNEZS51dWlkKCk7cmV0dXJuIHRoaXMucHJv Y2Vzc1t0XT0zRCEwLHRoaXMuPQpjb3VudGVyKyssY29uc29sZS5kZWJ1ZygiRGVmZXJyZWQ6cmVn aXN0ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW49CmN0aW9uKGUpe3RoaXMucHJv Y2Vzc1tlXSYmKGRlbGV0ZSB0aGlzLnByb2Nlc3NbZV0sdGhpcy5jb3VudGVyLS0sY29uc29sZS5k ZT0KYnVnKCJEZWZlcnJlZDpkb25lKCkgLSBVbnJlZ2lzdGVyaW5nICIrZSksdGhpcy50cmlnZ2Vy KCJyZWZyZXNoIikpfSxyZWFkeTpmPQp1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnRlcj0zRD0z RDB9fSl9KTt2YXIgVmlzdWFsaXphdGlvbj0zREJhY2tib25lLk1vZGU9CmwuZXh0ZW5kKHtkZWZh dWx0czp7Y29uZmlnOnt9fSx1cmxSb290OmZ1bmN0aW9uKCl7dmFyIGU9M0QiL2FwaS92aXN1YWxp emF0aT0Kb25zIjtyZXR1cm4gd2luZG93LmdhbGF4eV9jb25maWcmJmdhbGF4eV9jb25maWcucm9v dD9nYWxheHlfY29uZmlnLnJvb3QrZTplPQp9LGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7Xy5pc09i amVjdChlLmNvbmZpZykmJl8uaXNPYmplY3QodGhpcy5kZWZhdWx0cy5jb249CmZpZykmJl8uZGVm YXVsdHMoZS5jb25maWcsdGhpcy5kZWZhdWx0cy5jb25maWcpLHRoaXMuX3NldFVwTGlzdGVuZXJz KCl9LF9zZT0KdFVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7fSxzZXQ6ZnVuY3Rpb24oZSx0KXtpZihl PTNEPTNEPTNEImNvbmZpZyIpe3ZhciBuPTNEPQp0aGlzLmdldCgiY29uZmlnIik7Xy5pc09iamVj dChuKSYmKHQ9M0RfLmV4dGVuZChfLmNsb25lKG4pLHQpKX1yZXR1cm4gQmFja2I9Cm9uZS5Nb2Rl bC5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxlLHQpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7 dmFyIGU9M0R0aD0KaXMuZ2V0KCJpZCIpfHwiIjtyZXR1cm4gdGhpcy5nZXQoInRpdGxlIikmJihl Kz0zRCI6Iit0aGlzLmdldCgidGl0bGUiKSksIlZpPQpzdWFsaXphdGlvbigiK2UrIikifX0pLFZp c3VhbGl6YXRpb25Db2xsZWN0aW9uPTNEQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQ9Cih7bW9k ZWw6VmlzdWFsaXphdGlvbix1cmw6ZnVuY3Rpb24oKXtyZXR1cm4gZ2FsYXh5X2NvbmZpZy5yb290 KyJhcGkvdmlzdWFsaT0KemF0aW9ucyJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oZSx0KXt0PTNEdHx8 e319LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuPTNEdGhpPQpzO2U9M0RfLm1hcChlLGZ1bmN0aW9u KGUpe3ZhciB0PTNEbi5nZXQoZS5pZCk7aWYoIXQpcmV0dXJuIGU7dmFyIHI9M0R0LnRvSlM9Ck9O KCk7cmV0dXJuIF8uZXh0ZW5kKHIsZSkscn0pLEJhY2tib25lLkNvbGxlY3Rpb24ucHJvdG90eXBl LnNldC5jYWxsKHRoaXMsZT0KLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblsiVmlzdWFs aXphdGlvbkNvbGxlY3Rpb24oIixbdGhpcy5oaXN0b3J5SWQsPQp0aGlzLmxlbmd0aF0uam9pbigp LCIpIl0uam9pbigiIil9fSk7ZGVmaW5lKCJtdmMvdmlzdWFsaXphdGlvbi92aXN1YWxpemF0aW89 Cm4tbW9kZWwiLGZ1bmN0aW9uKCl7fSksZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2NoYXJ0IixbInBs dWdpbi9tb2RlbHMvZ3JvdXBzIj0KLCJwbHVnaW4vbGlicmFyeS9kZWZlcnJlZCIsIm12Yy92aXN1 YWxpemF0aW9uL3Zpc3VhbGl6YXRpb24tbW9kZWwiXSxmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIEJh Y2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2lkOm51bGwsdGl0bGU6IiIsdHlwZToiIixk YXQ9CmU6bnVsbCxzdGF0ZToiIixzdGF0ZV9pbmZvOiIiLG1vZGlmaWVkOiExLGRhdGFzZXRfaWQ6 IiIsZGF0YXNldF9pZF9qb2I6IiJ9LD0KaW5pdGlhbGl6ZTpmdW5jdGlvbihuKXt0aGlzLmdyb3Vw cz0zRG5ldyBlLHRoaXMuc2V0dGluZ3M9M0RuZXcgQmFja2JvbmUuTW9kPQplbCx0aGlzLmRlZmVy cmVkPTNEbmV3IHR9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jbGVhcih7c2lsZW50OiEwfSkuc2V0 KHRoaXM9Ci5kZWZhdWx0cyksdGhpcy5ncm91cHMucmVzZXQoKSx0aGlzLnNldHRpbmdzLmNsZWFy KCksdGhpcy50cmlnZ2VyKCJyZXNldCIsdD0KaGlzKX0sY29weTpmdW5jdGlvbihlKXt2YXIgdD0z RHRoaXM7dC5jbGVhcih7c2lsZW50OiEwfSkuc2V0KHRoaXMuZGVmYXVsdHMpPQosdC5zZXQoZS5h dHRyaWJ1dGVzKSx0LnNldHRpbmdzPTNEZS5zZXR0aW5ncy5jbG9uZSgpLHQuZ3JvdXBzLnJlc2V0 KCksZS5ncm89CnVwcy5lYWNoKGZ1bmN0aW9uKGUpe3QuZ3JvdXBzLmFkZChlLmNsb25lKCkpfSks dC50cmlnZ2VyKCJjaGFuZ2UiLHQpfSxzdGF0ZT0KOmZ1bmN0aW9uKGUsdCl7dGhpcy5zZXQoInN0 YXRlIixlKSx0aGlzLnNldCgic3RhdGVfaW5mbyIsdCksdGhpcy50cmlnZ2VyKCJzPQpldDpzdGF0 ZSIpLGNvbnNvbGUuZGVidWcoIkNoYXJ0OnN0YXRlKCkgLSAiK3QrIiAoIitlKyIpIil9fSl9KSxk ZWZpbmUoInBsdWc9CmluL2xpYnJhcnkvc3RvcmFnZSIsWyJ1dGlscy91dGlscyIsInBsdWdpbi9t b2RlbHMvY2hhcnQiLCJwbHVnaW4vbW9kZWxzL2dybz0KdXAiXSxmdW5jdGlvbihlLHQsbil7cmV0 dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7dmlzOm51bGwsaW5pdGlhbGl6ZTpmdW5jPQp0aW9u KGUpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRpb25z PTNEdGhpcy5hcHAub3A9CnRpb25zLHRoaXMuaWQ9M0R0aGlzLm9wdGlvbnMuaWQsdGhpcy52aXM9 M0RuZXcgVmlzdWFsaXphdGlvbih7dHlwZToiY2hhcnRzIj0KLGNvbmZpZzp7ZGF0YXNldF9pZDp0 aGlzLm9wdGlvbnMuY29uZmlnLmRhdGFzZXRfaWQsY2hhcnRfZGljdDp7fX19KSx0aGlzLmlkPQom Jih0aGlzLnZpcy5pZD0zRHRoaXMuaWQpO3ZhciB0PTNEdGhpcy5vcHRpb25zLmNvbmZpZy5jaGFy dF9kaWN0O3QmJih0aGlzLnY9CmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdD0zRHQpfSxzYXZl OmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmFwcC5jaGFydDt0aD0KaXMudmlzLmdldCgiY29uZmln IikuY2hhcnRfZGljdD0zRHt9O3ZhciB0PTNEZS5nZXQoInRpdGxlIik7dCE9M0QiIiYmdGhpcy52 PQppcy5zZXQoInRpdGxlIix0KTt2YXIgbj0zRHthdHRyaWJ1dGVzOmUuYXR0cmlidXRlcyxzZXR0 aW5nczplLnNldHRpbmdzLmF0dHI9CmlidXRlcyxncm91cHM6W119O2UuZ3JvdXBzLmVhY2goZnVu Y3Rpb24oZSl7bi5ncm91cHMucHVzaChlLmF0dHJpYnV0ZXMpfSksdD0KaGlzLnZpcy5nZXQoImNv bmZpZyIpLmNoYXJ0X2RpY3Q9M0RuO3ZhciByPTNEdGhpczt0aGlzLnZpcy5zYXZlKCkuZmFpbChm dW5jPQp0aW9uKGUsdCxuKXtjb25zb2xlLmVycm9yKGUsdCxuKX0pLnRoZW4oZnVuY3Rpb24oZSl7 ZSYmZS5pZCYmKHIuaWQ9M0RlLmlkKX09Cil9LGxvYWQ6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMu dmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdDtpZighZS5hdHRyaWJ1dD0KZXMpcmV0dXJuITE7 dmFyIHQ9M0RlLmF0dHJpYnV0ZXMudHlwZTtpZighdClyZXR1cm4gY29uc29sZS5kZWJ1ZygiU3Rv cmFnZTo6PQpsb2FkKCkgLSBDaGFydCB0eXBlIG5vdCBwcm92aWRlZC4gSW52YWxpZCBmb3JtYXQu IiksITE7dmFyIHI9M0R0aGlzLmFwcC50eXA9CmVzLmdldCh0KTtpZighcilyZXR1cm4gY29uc29s ZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hhcnQgdHlwZSBub3Qgc3VwcD0Kb3J0ZWQuIFBs ZWFzZSByZS1jb25maWd1cmUgdGhlIGNoYXJ0LiBSZXNldHRpbmcgY2hhcnQuIiksITE7Y29uc29s ZS5kZWJ1ZygiPQpTdG9yYWdlOjpsb2FkKCkgLSBMb2FkaW5nIGNoYXJ0IHR5cGUgIit0KyIuIiks dGhpcy5jaGFydC5zZXQoZS5hdHRyaWJ1dGVzKSw9CnRoaXMuY2hhcnQuc3RhdGUoIm9rIiwiTG9h ZGluZyBzYXZlZCB2aXN1YWxpemF0aW9uLi4uIiksdGhpcy5jaGFydC5zZXR0aW5ncz0KLnNldChl LnNldHRpbmdzKTtmb3IodmFyIGkgaW4gZS5ncm91cHMpdGhpcy5jaGFydC5ncm91cHMuYWRkKG5l dyBuKGUuZ3JvdXBzPQpbaV0pKTtyZXR1cm4gdGhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMSks ITB9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3M9CmNyZWVuc2hvdCIsWyJsaWJzL3VuZGVy c2NvcmUiXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxpKXt2YXIgcz0zRG5ldyBYTT0KTFNl cmlhbGl6ZXIsbz0zRCIiLHU9M0R0aGlzLGE9M0QwLGY9M0QwO3JldHVybiBlLmZpbmQoInN2ZyIp LmVhY2goZnVuY3Rpb24oPQope3ZhciBlPTNEJCh0aGlzKTtuKGUpLGE9M0RwYXJzZUludChlLmNz cygiaGVpZ2h0IikpLGY9M0RwYXJzZUludChlLmNzcygid2k9CmR0aCIpKSxlLmF0dHIoe3ZlcnNp b246IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpmLGhlaT0K Z2h0OmF9KSxvKz0zRHMuc2VyaWFsaXplVG9TdHJpbmcodGhpcyl9KSxyKGUsdCx7ZmlsZW5hbWU6 aXx8ImNoYXJ0Iix0eXBlOiJhPQpwcGxpY2F0aW9uL3BkZiIsaGVpZ2h0OmEsd2lkdGg6ZixzY2Fs ZToyLHN2ZzpvfSksb31mdW5jdGlvbiBuKGUpe2Zvcih2YXIgdCA9CmluIGRvY3VtZW50LnN0eWxl U2hlZXRzKXt2YXIgbj0zRGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdLHI9M0RuLmNzc1J1bGVzO2lm KD0Kcilmb3IodmFyIGk9M0QwLHM9M0RyLmxlbmd0aDtpPHM7aSsrKXRyeXtlLmZpbmQocltpXS5z ZWxlY3RvclRleHQpLmVhY2goZnVuPQpjdGlvbihlLHQpe3Quc3R5bGUuY3NzVGV4dCs9M0RyW2ld LnN0eWxlLmNzc1RleHR9KX1jYXRjaChvKXt9fX1mdW5jdGlvbiByKGU9Cix0LG4pe3ZhciByPTNE ZS5maW5kKCIjdmlld3BvcnQtZm9ybSIpO3IubGVuZ3RoPTNEPTNEPTNEMCYmKHI9M0QkKCI8Zm9y bT4iLD0Ke2lkOiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q6InBvc3QiLGFjdGlvbjp0LGRpc3BsYXk6 Im5vbmUifSksZS5hcHBlbmQocikpLHIuPQplbXB0eSgpO2ZvcihuYW1lIGluIG4pe3ZhciBpPTNE JCgiPGlucHV0Lz4iLHt0eXBlOiJoaWRkZW4iLG5hbWU6bmFtZSx2YWx1ZTo9Cm5bbmFtZV19KTty LmFwcGVuZChpKX10cnl7ci5zdWJtaXQoKX1jYXRjaChzKXtjb25zb2xlLmxvZyhzKX19cmV0dXJu e2NyZWF0ZT0KOnR9fSksZGVmaW5lKCJwbHVnaW4vdmlld3Mvdmlld3BvcnQiLFsibXZjL3VpL3Vp LXBvcnRsZXQiLCJwbHVnaW4vbGlicmFyeS91PQppIiwicGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hv dCIsInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEJhY2s9CmJvbmUuVmll dy5leHRlbmQoe2NvbnRhaW5lcl9saXN0OltdLGNhbnZhc19saXN0OltdLGluaXRpYWxpemU6ZnVu Y3Rpb24oZSx0KT0Ke3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhp cy5vcHRpb25zPTNEci5tZXJnZSh0LHRoaXMub3B0PQppb25zRGVmYXVsdCksdGhpcy5zZXRFbGVt ZW50KCQodGhpcy5fdGVtcGxhdGUoKSkpLHRoaXMuX2Z1bGxzY3JlZW4odGhpcy4kZWw9CiwxMDAp LHRoaXMuX2NyZWF0ZUNvbnRhaW5lcigiZGl2Iik7dmFyIG49M0R0aGlzO3RoaXMuY2hhcnQub24o InJlZHJhdyIsZnVuYz0KdGlvbigpe24uX2RyYXcobi5jaGFydCl9KSx0aGlzLmNoYXJ0Lm9uKCJz ZXQ6c3RhdGUiLGZ1bmN0aW9uKCl7dmFyIGU9M0RuLiRlPQpsLmZpbmQoIiNpbmZvIiksdD0zRG4u JGVsLmZpbmQoImNvbnRhaW5lciIpLHI9M0RlLmZpbmQoIiNpY29uIik7ci5yZW1vdmVDbGE9CnNz KCksZS5zaG93KCksZS5maW5kKCIjdGV4dCIpLmh0bWwobi5jaGFydC5nZXQoInN0YXRlX2luZm8i KSksdC5oaWRlKCk7dmFyID0KaT0zRG4uY2hhcnQuZ2V0KCJzdGF0ZSIpO3N3aXRjaChpKXtjYXNl Im9rIjplLmhpZGUoKSx0LnNob3coKTticmVhaztjYXNlImZhPQppbGVkIjpyLmFkZENsYXNzKCJp Y29uIGZhIGZhLXdhcm5pbmciKTticmVhaztkZWZhdWx0OnIuYWRkQ2xhc3MoImljb24gZmEgZmE9 Ci1zcGlubmVyIGZhLXNwaW4iKX19KX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJGVsLnNob3coKX0s aGlkZTpmdW5jdGlvbigpe3RoaT0Kcy4kZWwuaGlkZSgpfSxfZnVsbHNjcmVlbjpmdW5jdGlvbihl LHQpe2UuY3NzKCJoZWlnaHQiLCQod2luZG93KS5oZWlnaHQoKS10PQopLCQod2luZG93KS5yZXNp emUoZnVuY3Rpb24oKXtlLmNzcygiaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCktdCl9KX0sX2Ny ZWE9CnRlQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCl7dD0zRHR8fDE7Zm9yKHZhciBuIGluIHRoaXMu Y29udGFpbmVyX2xpc3QpdGhpcy5jbz0KbnRhaW5lcl9saXN0W25dLnJlbW92ZSgpO3RoaXMuY29u dGFpbmVyX2xpc3Q9M0RbXSx0aGlzLmNhbnZhc19saXN0PTNEW107Zm9yPQoodmFyIG49M0QwO248 dDtuKyspe3ZhciByPTNEJCh0aGlzLl90ZW1wbGF0ZUNvbnRhaW5lcihlLHBhcnNlSW50KDEwMC90 KSkpO3Q9Cmhpcy4kZWwuYXBwZW5kKHIpLHRoaXMuY29udGFpbmVyX2xpc3Rbbl09M0RyLGU9M0Q9 M0Qic3ZnIj90aGlzLmNhbnZhc19saXN0Wz0Kbl09M0RkMy5zZWxlY3Qoci5maW5kKCIjY2FudmFz IilbMF0pOnRoaXMuY2FudmFzX2xpc3Rbbl09M0RyLmZpbmQoIiNjYW52YXMiPQopfX0sX2RyYXc6 ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0RlLmRlZmVycmVkLnJlZ2lzdGVyKCkscj0zRGUu Z2V0KCJ0eXA9CmUiKTt0aGlzLmNoYXJ0X3NldHRpbmdzPTNEdGhpcy5hcHAudHlwZXMuZ2V0KHIp O3ZhciBpPTNEdGhpcy5jaGFydF9zZXR0aW5ncz0KLnVzZV9wYW5lbHMscz0zRDE7aSYmKHM9M0Rl Lmdyb3Vwcy5sZW5ndGgpLHRoaXMuX2NyZWF0ZUNvbnRhaW5lcih0aGlzLmNoYXJ0PQpfc2V0dGlu Z3MudGFnLHMpLGUuc3RhdGUoIndhaXQiLCJQbGVhc2Ugd2FpdC4uLiIpO2lmKCF0aGlzLmNoYXJ0 X3NldHRpbmdzLmU9CnhlY3V0ZXx8dGhpcy5jaGFydF9zZXR0aW5ncy5leGVjdXRlJiZlLmdldCgi bW9kaWZpZWQiKSl0aGlzLmFwcC5qb2JzLmNsZWFudT0KcChlKSxlLnNldCgibW9kaWZpZWQiLCEx KTt2YXIgdD0zRHRoaXM7cmVxdWlyZShbInBsdWdpbi9jaGFydHMvIit0aGlzLmFwcC5jPQpoYXJ0 UGF0aChyKSsiL3dyYXBwZXIiXSxmdW5jdGlvbihyKXt2YXIgaT0zRG5ldyByKHQuYXBwLHtjYW52 YXM6dC5jYW52YXNfbGk9CnN0fSk7dC5jaGFydF9zZXR0aW5ncy5leGVjdXRlP3QuYXBwLmpvYnMu cmVxdWVzdChlLHQuX2RlZmF1bHRTZXR0aW5nc1N0cmluZz0KKGUpLHQuX2RlZmF1bHRSZXF1ZXN0 U3RyaW5nKGUpLGZ1bmN0aW9uKCl7aS5kcmF3KG4sZSx0Ll9kZWZhdWx0UmVxdWVzdERpY3RpPQpv bmFyeShlKSl9LGZ1bmN0aW9uKCl7ZS5kZWZlcnJlZC5kb25lKG4pfSk6aS5kcmF3KG4sZSx0Ll9k ZWZhdWx0UmVxdWVzdERpY3Q9CmlvbmFyeShlKSl9KX0sX2RlZmF1bHRSZXF1ZXN0U3RyaW5nOmZ1 bmN0aW9uKGUpe3ZhciB0PTNEIiIsbj0zRDAscj0zRHRoaXM7cj0KZXR1cm4gZS5ncm91cHMuZWFj aChmdW5jdGlvbihlKXtuKys7Zm9yKHZhciBpIGluIHIuY2hhcnRfc2V0dGluZ3MuY29sdW1ucyl0 PQorPTNEaSsiXyIrbisiOiIrKHBhcnNlSW50KGUuZ2V0KGkpKSsxKSsiLCAifSksdC5zdWJzdHJp bmcoMCx0Lmxlbmd0aC0yKX0sX2Q9CmVmYXVsdFNldHRpbmdzU3RyaW5nOmZ1bmN0aW9uKGUpe3Zh ciB0PTNEIiI7Zm9yKGtleSBpbiBlLnNldHRpbmdzLmF0dHJpYnV0ZT0Kcyl0Kz0zRGtleSsiOiIr ZS5zZXR0aW5ncy5nZXQoa2V5KSsiLCAiO3JldHVybiB0LnN1YnN0cmluZygwLHQubGVuZ3RoLTIp fSxfPQpkZWZhdWx0UmVxdWVzdERpY3Rpb25hcnk6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R7Z3JvdXBz OltdfTt0aGlzLmNoYXJ0X3NldHRpbmc9CnMuZXhlY3V0ZT90LmlkPTNEZS5nZXQoImRhdGFzZXRf aWRfam9iIik6dC5pZD0zRGUuZ2V0KCJkYXRhc2V0X2lkIik7dmFyIG49Cj0zRDAscj0zRHRoaXM7 cmV0dXJuIGUuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9M0R7fTtmb3IodmFyIHMgaW4g ci5jaD0KYXJ0X3NldHRpbmdzLmNvbHVtbnMpe3ZhciBvPTNEci5jaGFydF9zZXR0aW5ncy5jb2x1 bW5zW3NdO2lbc109M0R7aW5kZXg6ZS5nPQpldChzKSxpc19sYWJlbDpvLmlzX2xhYmVsfX10Lmdy b3Vwcy5wdXNoKHtrZXk6KytuKyI6IitlLmdldCgia2V5IiksY29sdW1uczo9Cml9KX0pLHR9LF90 ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydCI+ PGRpdiBpZD0KPTNEImluZm8iIGNsYXNzPTNEImluZm8iPjxzcGFuIGlkPTNEImljb24iIGNsYXNz PTNEImljb24iIC8+PHNwYW4gaWQ9M0QidGV4PQp0IiBjbGFzcz0zRCJ0ZXh0IiAvPjwvZGl2Pjwv ZGl2Pid9LF90ZW1wbGF0ZUNvbnRhaW5lcjpmdW5jdGlvbihlLHQpe3JldHVybic9CjxkaXYgY2xh c3M9M0QiY2hhcnRzLXZpZXdwb3J0LWNvbnRhaW5lciIgc3R5bGU9M0Qid2lkdGg6Jyt0KyclOyI+ JysnPGRpdiBpZD0KPTNEIm1lbnUiLz4nKyI8IitlKycgaWQ9M0QiY2FudmFzIiBjbGFzcz0zRCJj aGFydHMtdmlld3BvcnQtY2FudmFzIj4nKyI8L2RpPQp2PiJ9fSl9KSxkZWZpbmUoInBsdWdpbi92 aWV3cy92aWV3ZXIiLFsidXRpbHMvdXRpbHMiLCJwbHVnaW4vbGlicmFyeS91aSIsIm09CnZjL3Vp L3VpLXBvcnRsZXQiLCJwbHVnaW4vbW9kZWxzL2dyb3VwIiwicGx1Z2luL3ZpZXdzL3ZpZXdwb3J0 IiwicGx1Z2luL2xpYj0KcmFyeS9zY3JlZW5zaG90Il0sZnVuY3Rpb24oZSx0LG4scixpLHMpe3Jl dHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhPQpsaXplOmZ1bmN0aW9uKGUscil7dGhp cy5hcHA9M0RlLHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLnZpZXdwb3J0X3Y9Cmll dz0zRG5ldyBpKGUpO3ZhciBvPTNEdGhpczt0aGlzLnBvcnRsZXQ9M0RuZXcgbi5WaWV3KHtpY29u OiJmYS1iYXItY2hhcnQtbz0KIix0aXRsZToiVmlld3BvcnQiLHNjcm9sbGFibGU6ITEsb3BlcmF0 aW9uczp7ZWRpdF9idXR0b246bmV3IHQuQnV0dG9uSWNvbih7PQppY29uOiJmYS1lZGl0Iix0b29s dGlwOiJDdXN0b21pemUgdGhpcyBjaGFydCIsdGl0bGU6IkVkaXRvciIsb25jbGljazpmdW5jdGk9 Cm9uKCl7by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7by5hcHAuZ28oImVkaXRvciIpfSl9fSks cGljdHVyZV9idXR0b246bmV3ID0KdC5CdXR0b25JY29uKHtpY29uOiJmYS1jYW1lcmEiLHRvb2x0 aXA6IkRvd25sb2FkIFBERi1maWxlICgiK28uYXBwLmNvbmZpZy5nPQpldCgic2NyZWVuc2hvdF91 cmwiKSsiKSIsdGl0bGU6IlNjcmVlbnNob3QiLG9uY2xpY2s6ZnVuY3Rpb24oKXtvLl93YWl0KG8u Y2g9CmFydCxmdW5jdGlvbigpe3MuY3JlYXRlKG8udmlld3BvcnRfdmlldy4kZWwsby5hcHAuY29u ZmlnLmdldCgic2NyZWVuc2hvdF91cj0KbCIpLG8uY2hhcnQuZ2V0KCJ0aXRsZSIpKX0pfX0pfX0p LHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy52aWV3cG9ydF92aWV3LiRlPQpsKSx0aGlzLnNldEVs ZW1lbnQodGhpcy5wb3J0bGV0LiRlbCk7dmFyIG89M0R0aGlzO3RoaXMuY2hhcnQub24oImNoYW5n ZTp0aXQ9CmxlIixmdW5jdGlvbigpe28uX3JlZnJlc2hUaXRsZSgpfSl9LHNob3c6ZnVuY3Rpb24o KXt0aGlzLiRlbC5zaG93KCksJCh3aW5kbz0KdykudHJpZ2dlcigicmVzaXplIil9LGhpZGU6ZnVu Y3Rpb24oKXt0aGlzLiRlbC5oaWRlKCl9LF9yZWZyZXNoVGl0bGU6ZnVuY3RpPQpvbigpe3ZhciBl PTNEdGhpcy5jaGFydC5nZXQoInRpdGxlIik7dGhpcy5wb3J0bGV0LnRpdGxlKGUpfSxfd2FpdDpm dW5jdGlvbig9CmUsdCl7aWYoZS5kZWZlcnJlZC5yZWFkeSgpKXQoKTtlbHNle3ZhciBuPTNEdGhp czt0aGlzLmFwcC5tb2RhbC5zaG93KHt0aXRsZT0KOiJQbGVhc2Ugd2FpdCEiLGJvZHk6IllvdXIg Y2hhcnQgaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gUGxlYXNlIHdhaXQgPQphbmQgdHJ5 IGFnYWluLiIsYnV0dG9uczp7Q2xvc2U6ZnVuY3Rpb24oKXtuLmFwcC5tb2RhbC5oaWRlKCl9LFJl dHJ5OmZ1bmN0aW89Cm4oKXtuLmFwcC5tb2RhbC5oaWRlKCksc2V0VGltZW91dChmdW5jdGlvbigp e24uX3dhaXQoZSx0KX0sbi5hcHAuY29uZmlnLmdldD0KKCJxdWVyeV90aW1lb3V0IikpfX19KX19 fSl9KSxkZWZpbmUoIm12Yy91aS91aS10YWJzIixbInV0aWxzL3V0aWxzIl0sZnVuY3RpPQpvbihl KXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGVfbmV3 OiIiLG9wZXJhdGlvbnM9CjpudWxsLG9ubmV3Om51bGx9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7 dGhpcy52aXNpYmxlPTNEITEsdGhpcy4kbmF2PTNEbnVsbD0KLHRoaXMuJGNvbnRlbnQ9M0RudWxs LHRoaXMuZmlyc3RfdGFiPTNEbnVsbCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vPQpw dGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhp cy4kbmF2PTNEbi5maW5kKCI9Ci50YWItbmF2aWdhdGlvbiIpLHRoaXMuJGNvbnRlbnQ9M0RuLmZp bmQoIi50YWItY29udGVudCIpLHRoaXMuc2V0RWxlbWVudChuKT0KLHRoaXMubGlzdD0zRHt9O3Zh ciByPTNEdGhpczt0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyYmJC5lYWNoKHRoaXMub3B0aW9ucy5v PQpwZXJhdGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksci4kbmF2LmZpbmQo Ii5vcGVyYXRpb25zIikuYXBwZW49CmQodC4kZWwpfSk7aWYodGhpcy5vcHRpb25zLm9ubmV3KXt2 YXIgaT0zRCQodGhpcy5fdGVtcGxhdGVfdGFiX25ldyh0aGlzLm9wdD0KaW9ucykpO3RoaXMuJG5h di5hcHBlbmQoaSksaS50b29sdGlwKHt0aXRsZToiQWRkIGEgbmV3IHRhYiIscGxhY2VtZW50OiJi b3R0PQpvbSIsY29udGFpbmVyOnIuJGVsfSksaS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2kudG9v bHRpcCgiaGlkZSIpLHIub3B0aW9ucy49Cm9ubmV3KCl9KX19LGFkZDpmdW5jdGlvbihlKXt2YXIg dD0zRHRoaXMsbj0zRGUuaWQscj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKD0KZSkpLGk9M0QkKHRo aXMuX3RlbXBsYXRlX3RhYl9jb250ZW50KGUpKTt0aGlzLmxpc3Rbbl09M0RlLm9uZGVsPyEwOiEx LHRoaXMuPQpvcHRpb25zLm9ubmV3P3RoaXMuJG5hdi5maW5kKCIjbmV3LXRhYiIpLmJlZm9yZShy KTp0aGlzLiRuYXYuYXBwZW5kKHIpLGkuYXA9CnBlbmQoZS4kZWwpLHRoaXMuJGNvbnRlbnQuYXBw ZW5kKGkpLF8uc2l6ZSh0aGlzLmxpc3QpPTNEPTNEMSYmKHIuYWRkQ2xhc3MoIj0KYWN0aXZlIiks aS5hZGRDbGFzcygiYWN0aXZlIiksdGhpcy5maXJzdF90YWI9M0RuKTtpZihlLm9uZGVsKXt2YXIg cz0zRHIuZmluPQpkKCIjZGVsZXRlIik7cy50b29sdGlwKHt0aXRsZToiRGVsZXRlIHRoaXMgdGFi IixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmU9CnI6dC4kZWx9KSxzLm9uKCJjbGljayIsZnVu Y3Rpb24oKXtyZXR1cm4gcy50b29sdGlwKCJkZXN0cm95IiksdC4kZWwuZmluZCgiLj0KdG9vbHRp cCIpLnJlbW92ZSgpLGUub25kZWwoKSwhMX0pfXIub24oImNsaWNrIixmdW5jdGlvbihyKXtyLnBy ZXZlbnREZWZhdWx0PQooKSxlLm9uY2xpY2s/ZS5vbmNsaWNrKCk6dC5zaG93KG4pfSl9LGRlbDpm dW5jdGlvbihlKXt0aGlzLiRlbC5maW5kKCIjdGFiLSI9CitlKS5yZW1vdmUoKSx0aGlzLiRlbC5m aW5kKCIjdGFiLWNvbnRlbnQtIitlKS5yZW1vdmUoKSx0aGlzLmZpcnN0X3RhYj0zRD0zRD0KZSYm KHRoaXMuZmlyc3RfdGFiPTNEbnVsbCksdGhpcy5maXJzdF90YWIhPTNEbnVsbCYmdGhpcy5zaG93 KHRoaXMuZmlyc3RfdGFiPQopfSxkZWxSZW1vdmFibGU6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4g dGhpcy5saXN0KXRoaXMubGlzdFtlXSYmdGhpcy5kZWwoZSk9Cn0sc2hvdzpmdW5jdGlvbihlKXt0 aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMCxlJiYodGhpcy4kZWwuZj0K aW5kKCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoIiN0YWIt IitlKS5hZGRDbGFzcygiYWN0PQppdmUiKSx0aGlzLiRlbC5maW5kKCIjdGFiLWNvbnRlbnQtIitl KS5hZGRDbGFzcygiYWN0aXZlIikpfSxoaWRlOmZ1bmN0aW9uKCk9Cnt0aGlzLiRlbC5mYWRlT3V0 KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGhpZGVPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhp cz0KLiRuYXYuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3Ro aXMuJG5hdi5maW5kKCIjIitlKS5zPQpob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7 dmFyIG49M0R0aGlzLiRuYXYuZmluZCgiIyIrZSk7bi5vZmYoImNsaWM9CmsiKSxuLm9uKCJjbGlj ayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIjdGFiLXRp dGxlLT0KdGV4dC0iK2UpO3JldHVybiB0JiZuLmh0bWwodCksbi5odG1sKCl9LF90ZW1wbGF0ZTpm dW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjPQpsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFicy1s ZWZ0Ij48dWwgaWQ9M0QidGFiLW5hdmlnYXRpb24iIGNsYXNzPTNEInRhYi09Cm5hdmlnYXRpb24g bmF2IG5hdi10YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0OiBy aWdodDsgbT0KYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0QidGFiLWNv bnRlbnQiIGNsYXNzPTNEInRhYi1jb250ZW50PQoiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFiX25l dzpmdW5jdGlvbihlKXtyZXR1cm4nPGxpIGlkPTNEIm5ldy10YWIiPjxhIGhyZWY9Cj0zRCJqYXZh c2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBmYSBmYS1wbHVzLWNpcmNs ZSIvPicrZS50aT0KdGxlX25ldysiPC9hPiIrIjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5jdGlv bihlKXt2YXIgdD0zRCc8bGkgaWQ9M0QidGFiLScrPQplLmlkKyciPicrJzxhIGlkPTNEInRhYi10 aXRsZS1saW5rLScrZS5pZCsnIiB0aXRsZT0zRCIiIGhyZWY9M0QiI3RhYi1jb250ZW49CnQtJytl LmlkKyciIGRhdGEtb3JpZ2luYWwtdGl0bGU9M0QiIj4nKyc8c3BhbiBpZD0zRCJ0YWItdGl0bGUt dGV4dC0nK2UuaWQrJz0KIj4nK2UudGl0bGUrIjwvc3Bhbj4iO3JldHVybiBlLm9uZGVsJiYodCs9 M0QnPGkgaWQ9M0QiZGVsZXRlIiBjbGFzcz0zRCJ1aS10PQphYnMtZGVsZXRlIGZhIGZhLW1pbnVz LWNpcmNsZSIvPicpLHQrPTNEIjwvYT48L2xpPiIsdH0sX3RlbXBsYXRlX3RhYl9jb250ZW49CnQ6 ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgaWQ9M0QidGFiLWNvbnRlbnQtJytlLmlkKyciIGNsYXNz PTNEInRhYi1wYW5lIi8+Jz0KfX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJwbHVnaW4vbGli cmFyeS91aS10YWJsZSIsWyJ1dGlscy91dGlscyJdLGZ1bmN0PQppb24oZSl7dmFyIHQ9M0RCYWNr Ym9uZS5WaWV3LmV4dGVuZCh7cm93Om51bGwscm93X2NvdW50OjAsb3B0aW9uc0RlZmF1bHQ6e2M9 Cm9udGVudDoiTm8gY29udGVudCBhdmFpbGFibGUuIixvbmNoYW5nZTpudWxsLG9uZGJsY2xpY2s6 bnVsbCxvbmNvbmZpcm06bnVsbD0KLGNsczoiZ3JpZCJ9LGV2ZW50czp7Y2xpY2s6Il9vbmNsaWNr IixkYmxjbGljazoiX29uZGJsY2xpY2sifSxpbml0aWFsaXplOmZ1PQpuY3Rpb24odCl7dGhpcy5v cHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpO3ZhciBuPTNEJCh0aGlzLl90 ZW09CnBsYXRlKHQpKTt0aGlzLiR0aGVhZD0zRG4uZmluZCgidGhlYWQiKSx0aGlzLiR0Ym9keT0z RG4uZmluZCgidGJvZHkiKSx0aGlzLj0KJHRtZXNzYWdlPTNEbi5maW5kKCJ0bWVzc2FnZSIpLHRo aXMuc2V0RWxlbWVudChuKSx0aGlzLnJvdz0zRCQoIjx0cj48L3RyPiIpPQp9LGFkZEhlYWRlcjpm dW5jdGlvbihlKXt2YXIgdD0zRCQoIjx0aD48L3RoPiIpO3QuYXBwZW5kKGUpLHRoaXMucm93LmFw cGVuZCg9CnQpfSxhcHBlbmRIZWFkZXI6ZnVuY3Rpb24oKXt0aGlzLiR0aGVhZC5hcHBlbmQodGhp cy5yb3cpLHRoaXMucm93PTNEJCgiPHRyPj0KPC90cj4iKX0sYWRkOmZ1bmN0aW9uKGUsdCxuKXt2 YXIgcj0zRCQoIjx0ZD48L3RkPiIpO3QmJnIuY3NzKCJ3aWR0aCIsdCksbiYmPQpyLmNzcygidGV4 dC1hbGlnbiIsbiksci5hcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHIpfSxhcHBlbmQ6ZnVuY3Rp b24oZSl7dGg9CmlzLl9jb21taXQoZSl9LHByZXBlbmQ6ZnVuY3Rpb24oZSl7dGhpcy5fY29tbWl0 KGUsITApfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dT0Kcm4gdGhpcy4kZWwuZmluZCgiIyIrZSl9LGRl bDpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuJHRib2R5LmZpbmQoIiMiK2UpO3QuPQpsZW5ndGg+ MCYmKHQucmVtb3ZlKCksdGhpcy5yb3dfY291bnQtLSx0aGlzLl9yZWZyZXNoKCkpfSxkZWxBbGw6 ZnVuY3Rpb24oKXs9CnRoaXMuJHRib2R5Lmh0bWwoIiIpLHRoaXMucm93X2NvdW50PTNEMCx0aGlz Ll9yZWZyZXNoKCl9LHZhbHVlOmZ1bmN0aW9uKGUpez0KdGhpcy5iZWZvcmU9M0R0aGlzLiR0Ym9k eS5maW5kKCIuY3VycmVudCIpLmF0dHIoImlkIiksZSE9M0Q9M0R1bmRlZmluZWQmJih0PQpoaXMu JHRib2R5LmZpbmQoInRyIikucmVtb3ZlQ2xhc3MoImN1cnJlbnQiKSxlJiZ0aGlzLiR0Ym9keS5m aW5kKCIjIitlKS5hZGQ9CkNsYXNzKCJjdXJyZW50IikpO3ZhciB0PTNEdGhpcy4kdGJvZHkuZmlu ZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpO3JldHVybiB0PQo9M0Q9M0Q9M0R1bmRlZmluZWQ/bnVs bDoodCE9M0R0aGlzLmJlZm9yZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGk9Cm9u cy5vbmNoYW5nZShlKSx0KX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR0Ym9keS5maW5k KCJ0ciIpLmxlbmd0aH0sXz0KY29tbWl0OmZ1bmN0aW9uKGUsdCl7dGhpcy5kZWwoZSksdGhpcy5y b3cuYXR0cigiaWQiLGUpLHQ/dGhpcy4kdGJvZHkucHJlcGVuPQpkKHRoaXMucm93KTp0aGlzLiR0 Ym9keS5hcHBlbmQodGhpcy5yb3cpLHRoaXMucm93PTNEJCgiPHRyPjwvdHI+IiksdGhpcy5yb3c9 Cl9jb3VudCsrLHRoaXMuX3JlZnJlc2goKX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0 aGlzLnZhbHVlKCksbj0zRCQoZT0KLnRhcmdldCkuY2xvc2VzdCgidHIiKS5hdHRyKCJpZCIpO24h PTNEIiImJm4mJnQhPTNEbiYmKHRoaXMub3B0aW9ucy5vbmNvbmZpPQpybT90aGlzLm9wdGlvbnMu b25jb25maXJtKG4pOnRoaXMudmFsdWUobikpfSxfb25kYmxjbGljazpmdW5jdGlvbihlKXt2YXIg dD0KPTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0aW9ucy5vbmRibGNsaWNrJiZ0aGlzLm9wdGlv bnMub25kYmxjbGljayh0KX0sX3JlPQpmcmVzaDpmdW5jdGlvbigpe3RoaXMucm93X2NvdW50PTNE PTNEMD90aGlzLiR0bWVzc2FnZS5zaG93KCk6dGhpcy4kdG1lc3NhZ2U9Ci5oaWRlKCl9LF90ZW1w bGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48dGFibGUgY2xhc3M9M0QiJytlLmNscysnIj4n KyI8dD0KaGVhZD48L3RoZWFkPiIrJzx0Ym9keSBzdHlsZT0zRCJjdXJzb3I6IHBvaW50ZXI7Ij48 L3Rib2R5PicrIjwvdGFibGU+IisiPHRtPQplc3NhZ2U+IitlLmNvbnRlbnQrIjwvdG1lc3NhZ2U+ IisiPGRpdj4ifX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJwbHVnaW49Ci92aWV3cy9ncm91 cCIsWyJwbHVnaW4vbGlicmFyeS91aS10YWJsZSIsInBsdWdpbi9saWJyYXJ5L3VpIiwidXRpbHMv dXRpbHMiXT0KLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2lu aXRpYWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzPQouYXBwPTNEcjt2YXIgcz0zRHRoaXM7dGhpcy5j aGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuZ3JvdXA9M0RpLmdyb3VwLHRoaXM9Ci5ncm91cF9r ZXk9M0RuZXcgdC5JbnB1dCh7cGxhY2Vob2xkZXI6IkRhdGEgbGFiZWwiLG9uY2hhbmdlOmZ1bmN0 aW9uKGUpe3MuZz0Kcm91cC5zZXQoImtleSIsZSl9fSksdGhpcy50YWJsZT0zRG5ldyBlLlZpZXco e2NvbnRlbnQ6Ik5vIGRhdGEgY29sdW1uLiJ9KTt2PQphciBvPTNEJCgiPGRpdi8+Iik7by5hcHBl bmQobi53cmFwKChuZXcgdC5MYWJlbCh7dGl0bGU6IlByb3ZpZGUgYSBsYWJlbDoifSk9CikuJGVs KSksby5hcHBlbmQobi53cmFwKHRoaXMuZ3JvdXBfa2V5LiRlbCkpLG8uYXBwZW5kKG4ud3JhcCgo bmV3IHQuTGFiZWwoez0KdGl0bGU6IlNlbGVjdCBjb2x1bW5zOiJ9KSkuJGVsKSksby5hcHBlbmQo bi53cmFwKHRoaXMudGFibGUuJGVsKSksdGhpcy5zZXRFPQpsZW1lbnQobyk7dmFyIHM9M0R0aGlz O3RoaXMuY2hhcnQub24oImNoYW5nZTpkYXRhc2V0X2lkIixmdW5jdGlvbigpe3MuX3JlZnI9CmVz aFRhYmxlKCl9KSx0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6dHlwZSIsZnVuY3Rpb24oKXtzLl9yZWZy ZXNoVGFibGUoKX0pLHRoaT0Kcy5ncm91cC5vbigiY2hhbmdlOmtleSIsZnVuY3Rpb24oKXtzLl9y ZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuZ3JvdXAub24oImNoPQphbmdlIixmdW5jdGlvbigpe3Mu X3JlZnJlc2hHcm91cCgpfSksdGhpcy5fcmVmcmVzaFRhYmxlKCksdGhpcy5fcmVmcmVzaEdyb3U9 CnBLZXkoKSx0aGlzLl9yZWZyZXNoR3JvdXAoKX0sX3JlZnJlc2hUYWJsZTpmdW5jdGlvbigpe3Zh ciBlPTNEdGhpcy5jaGFydC5nZT0KdCgiZGF0YXNldF9pZCIpLG49M0R0aGlzLmNoYXJ0LmdldCgi dHlwZSIpO2lmKCFlfHwhbilyZXR1cm47dmFyIHI9M0R0aGlzLGk9Cj0zRHRoaXMuYXBwLnR5cGVz LmdldChuKTt0aGlzLnRhYmxlLmRlbEFsbCgpO3ZhciBzPTNEe307Zm9yKHZhciBvIGluIGkuY29s dT0KbW5zKXt2YXIgdT0zRGkuY29sdW1uc1tvXTtpZighdSl7Y29uc29sZS5kZWJ1ZygiR3JvdXA6 Ol9yZWZyZXNoVGFibGUoKSAtIFNrPQppcHBpbmcgY29sdW1uIGRlZmluaXRpb24uIik7Y29udGlu dWV9dmFyIGE9M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6InNlbGVjdF89CiIrbyx3YWl0OiEwfSk7 dGhpcy50YWJsZS5hZGQodS50aXRsZSwiMjUlIiksdGhpcy50YWJsZS5hZGQoYS4kZWwpLHRoaXMu dGFibD0KZS5hcHBlbmQobyksc1tvXT0zRGF9dGhpcy5jaGFydC5zdGF0ZSgid2FpdCIsIkxvYWRp bmcgbWV0YWRhdGEuLi4iKTt2YXIgZj0KPTNEdGhpcy5jaGFydC5kZWZlcnJlZC5yZWdpc3Rlcigp O3RoaXMuYXBwLmRhdGFzZXRzLnJlcXVlc3Qoe2lkOmV9LGZ1bmN0aW9uPQooZSl7Zm9yKHZhciB0 IGluIHMpci5fYWRkUm93KHQsZSxzLGkuY29sdW1uc1t0XSk7ci5jaGFydC5zdGF0ZSgib2siLCJN ZXRhZGE9CnRhIGluaXRpYWxpemVkLi4uIiksci5jaGFydC5kZWZlcnJlZC5kb25lKGYpfSl9LF9h ZGRSb3c6ZnVuY3Rpb24oZSx0LG4scil7dj0KYXIgaT0zRHRoaXMscz0zRHIuaXNfbGFiZWwsbz0z RHIuaXNfYXV0byx1PTNEci5pc19udW1lcmljLGE9M0RyLmlzX3VuaXF1ZSxmPQo9M0RbXSxsPTNE bltlXTtvJiZmLnB1c2goe2xhYmVsOiJDb2x1bW46IFJvdyBOdW1iZXIiLHZhbHVlOiJhdXRvIn0p O3ZhciBjPQo9M0R0Lm1ldGFkYXRhX2NvbHVtbl90eXBlcztmb3IodmFyIGggaW4gYyl7dmFyIHA9 M0QhMTtjW2hdPTNEPTNEImludCJ8fGNbaF09Cj0zRD0zRCJmbG9hdCI/cD0zRHU6cD0zRHMscCYm Zi5wdXNoKHtsYWJlbDoiQ29sdW1uOiAiKyhwYXJzZUludChoKSsxKSsiIFsiKz0KY1toXSsiXSIs dmFsdWU6aH0pfWwudXBkYXRlKGYpO2lmKCFsLmV4aXN0cyh0aGlzLmdyb3VwLmdldChlKSkpe3Zh ciBkPTNEbC5mPQppcnN0KCk7Y29uc29sZS5kZWJ1ZygnR3JvdXAoKTo6X2FkZFJvdygpIC0gU3dp dGNoaW5nIG1vZGVsIHZhbHVlIGZyb20gIicrdGg9CmlzLmdyb3VwLmdldChlKSsnIiB0byAiJytk KyciLicpLHRoaXMuZ3JvdXAuc2V0KGUsZCl9bC52YWx1ZSh0aGlzLmdyb3VwLmdldD0KKGUpKSxs LnNldE9uQ2hhbmdlKGZ1bmN0aW9uKHQpe2kuZ3JvdXAuc2V0KGUsdCksaS5jaGFydC5zZXQoIm1v ZGlmaWVkIiwhMCl9PQopLGwuc2hvdygpfSxfcmVmcmVzaEdyb3VwOmZ1bmN0aW9uKCl7dGhpcy5n cm91cC5zZXQoImRhdGUiLG4udGltZSgpKX0sX3JlZnI9CmVzaEdyb3VwS2V5OmZ1bmN0aW9uKCl7 dmFyIGU9M0R0aGlzLmdyb3VwLmdldCgia2V5Iik7ZT0zRD0zRD0zRHVuZGVmaW5lZCYmKD0KZT0z RCIiKSx0aGlzLmdyb3VwX2tleS52YWx1ZShlKX19KX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkv dWktdGFibGUtZm9ybSIsPQpbInBsdWdpbi9saWJyYXJ5L3VpLXRhYmxlIiwicGx1Z2luL2xpYnJh cnkvdWkiLCJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUsdCw9Cm4pe3ZhciByPTNEQmFja2JvbmUu Vmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixjb250ZW50OiIiLG1vZGU6Ij0K In0sbGlzdDpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKHIpe3RoaXMudGFibGVfdGl0bGU9M0RuZXcg dC5MYWJlbCh7dGl0bGU6ci50PQppdGxlfSksdGhpcy50YWJsZT0zRG5ldyBlLlZpZXcoe2NvbnRl bnQ6ci5jb250ZW50fSk7dmFyIGk9M0QkKCI8ZGl2Lz4iKTtpLmE9CnBwZW5kKG4ud3JhcCh0aGlz LnRhYmxlX3RpdGxlLiRlbCkpLGkuYXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlLiRlbCkpLHRoaXMu cz0KZXRFbGVtZW50KGkpfSx0aXRsZTpmdW5jdGlvbihlKXt0aGlzLnRhYmxlX3RpdGxlLnRpdGxl KGUpfSx1cGRhdGU6ZnVuY3Rpb24oPQplLHQpe3RoaXMudGFibGUuZGVsQWxsKCksdGhpcy5saXN0 PTNEW107Zm9yKHZhciBuIGluIGUpdGhpcy5fYWRkKG4sZVtuXSx0KTs9CmZvcih2YXIgbiBpbiB0 aGlzLmxpc3QpdGhpcy5saXN0W25dLnRyaWdnZXIoImNoYW5nZSIpfSxfYWRkOmZ1bmN0aW9uKGUs bixyKT0Ke3ZhciBpPTNEdGhpcyxzPTNEbnVsbCxvPTNEbi50eXBlO3N3aXRjaChvKXtjYXNlInRl eHQiOnM9M0RuZXcgdC5JbnB1dCh7aWQ6PQoiZmllbGRfIitlLHBsYWNlaG9sZGVyOm4ucGxhY2Vo b2xkZXIsdmFsdWU6ci5nZXQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci49CnNldChlLHQpfX0p O2JyZWFrO2Nhc2Uic2VsZWN0IjpzPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJmaWVsZF8iK2Us ZGF0YTpuLj0KZGF0YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChl LHQpO3ZhciBzPTNEXy5maW5kV2hlcmUobi5kPQphdGEse3ZhbHVlOnR9KTtpZihzKXtmb3IodmFy IG8gaW4gcy5zaG93KXt2YXIgdT0zRHMuc2hvd1tvXTtpLnRhYmxlLmdldCh1KS49CnNob3coKX1m b3IodmFyIG8gaW4gcy5oaWRlKXt2YXIgdT0zRHMuaGlkZVtvXTtpLnRhYmxlLmdldCh1KS5oaWRl KCl9fX19KTticj0KZWFrO2Nhc2Uic2VwYXJhdG9yIjpzPTNEJCgiPGRpdi8+Iik7YnJlYWs7ZGVm YXVsdDpjb25zb2xlLmxvZygidWktdGFibGUtZm9yPQptOl9hZGQiLCJVbmtub3duIHNldHRpbmcg dHlwZSAoIituLnR5cGUrIikiKTtyZXR1cm59aWYobyE9M0Qic2VwYXJhdG9yIil7ci49CmdldChl KXx8ci5zZXQoZSxuLmluaXQpLHMudmFsdWUoci5nZXQoZSkpLHRoaXMubGlzdFtlXT0zRHM7dmFy IHU9M0QkKCI8ZGl2Lz0KPiIpO3UuYXBwZW5kKHMuJGVsKSx1LmFwcGVuZCgnPGRpdiBjbGFzcz0z RCJ0b29sUGFyYW1IZWxwIiAgc3R5bGU9M0QiZm9udC1zPQppemU6IDAuOWVtOyI+JytuLmluZm8r IjwvZGl2PiIpLHRoaXMudGFibGUuYWRkKCc8c3BhbiBzdHlsZT0zRCJ3aGl0ZS1zcGFjZTo9CiBu b3dyYXA7Ij4nK24udGl0bGUrIjwvc3Bhbj4iLCIyNSUiKSx0aGlzLnRhYmxlLmFkZCh1KX1lbHNl IHRoaXMudGFibGUuYWRkKD0KJzxoNiBzdHlsZT0zRCJ3aGl0ZS1zcGFjZTogbm93cmFwOyI+Jytu LnRpdGxlKyI6PGg2Lz4iKSx0aGlzLnRhYmxlLmFkZCgkKCI8PQpkaXYvPiIpKTt0aGlzLnRhYmxl LmFwcGVuZChlKX19KTtyZXR1cm57VmlldzpyfX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL3NldHQ9 CmluZ3MiLFsicGx1Z2luL2xpYnJhcnkvdWkiLCJwbHVnaW4vbGlicmFyeS91aS10YWJsZS1mb3Jt IiwidXRpbHMvdXRpbHMiXSxmdT0KbmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuVmlldy5l eHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSxuKXt0aGlzLmFwPQpwPTNEZTt2YXIgcj0zRHRo aXM7dGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuZm9ybT0zRG5ldyB0LlZpZXcoe3Rp dGw9CmU6IkNoYXJ0IG9wdGlvbnM6Iixjb250ZW50OiJUaGlzIGNoYXJ0IHR5cGUgZG9lcyBub3Qg cHJvdmlkZSBhbnkgb3B0aW9ucy4ifT0KKSx0aGlzLnNldEVsZW1lbnQodGhpcy5mb3JtLiRlbCk7 dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQub24oImNoYW5nZSIsZnVuY3RpPQpvbigpe3IuX3JlZnJl c2goKX0pfSxfcmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFydC5nZXQoInR5cGUi KTtpZig9CiFlKXJldHVybjt2YXIgdD0zRHRoaXMuYXBwLnR5cGVzLmdldChlKTt0aGlzLmZvcm0u dGl0bGUodC5jYXRlZ29yeSsiIC0gIit0Lj0KdGl0bGUrIjoiKSx0aGlzLmZvcm0udXBkYXRlKHQu c2V0dGluZ3MsdGhpcy5jaGFydC5zZXR0aW5ncyl9fSl9KSxkZWZpbmUoInBsPQp1Z2luL3ZpZXdz L3R5cGVzIixbInV0aWxzL3V0aWxzIiwicGx1Z2luL2xpYnJhcnkvdWkiXSxmdW5jdGlvbihlLHQp e3JldHVybiA9CkJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7b25jaGFuZ2U6 bnVsbCxvbmRibGNsaWNrOm51bGx9LGV2ZW50cz0KOntjbGljazoiX29uY2xpY2siLGRibGNsaWNr OiJfb25kYmxjbGljayJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxuKXt2YXIgcj0KPTNEdGhpczt0 aGlzLmFwcD0zRHQsdGhpcy5vcHRpb25zPTNEZS5tZXJnZShuLHRoaXMub3B0aW9uc0RlZmF1bHQp O3ZhciBpPTNEPQokKCc8ZGl2IGNsYXNzPTNEImNoYXJ0cy1ncmlkIi8+Jyk7dGhpcy5zZXRFbGVt ZW50KGkpO3ZhciBzPTNEe30sbz0zRHQudHlwZXM9Ci5hdHRyaWJ1dGVzO2Zvcih2YXIgdSBpbiBv KXt2YXIgYT0zRG9bdV0sZj0zRGEuY2F0ZWdvcnk7c1tmXXx8KHNbZl09M0R7fSkscz0KW2ZdW3Vd PTNEYX1mb3IodmFyIGYgaW4gcyl7dmFyIGk9M0QkKCc8ZGl2IHN0eWxlPTNEImNsZWFyOiBib3Ro OyIvPicpO2kuYXBwPQplbmQoZS53cmFwKHRoaXMuX3RlbXBsYXRlX2hlYWRlcih7dGl0bGU6Zn0p KSk7Zm9yKHZhciB1IGluIHNbZl0pe3ZhciBhPTNEc1s9CmZdW3VdO2kuYXBwZW5kKGUud3JhcCh0 aGlzLl90ZW1wbGF0ZV9pdGVtKHtpZDp1LHRpdGxlOmEudGl0bGUsdXJsOmNvbmZpZy5hcD0KcF9y b290KyJjaGFydHMvIityLmFwcC5jaGFydFBhdGgodSkrIi9sb2dvLnBuZyJ9KSkpfXRoaXMuJGVs LmFwcGVuZChlLndyYXAoPQppKSl9fSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuJGVs LmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtlIT0zRD0KPTNEdW5kZWZpbmVkJiYodGhpcy4k ZWwuZmluZCgiLmN1cnJlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudCIpLHRoaXMuJGVsLmZpPQpu ZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnJlbnQiKSk7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIuY3Vy cmVudCIpLmF0dHIoImlkIik9CjtyZXR1cm4gbj0zRD0zRD0zRHVuZGVmaW5lZD9udWxsOihuIT0z RHQmJnRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpbz0KbnMub25jaGFuZ2UoZSksbil9 LF9vbmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpLG49M0QkKGUudGFyZ2V0 PQopLmNsb3Nlc3QoIi5pdGVtIikuYXR0cigiaWQiKTtuIT0zRCIiJiZuJiZ0IT0zRG4mJnRoaXMu dmFsdWUobil9LF9vbmRibGNsaWM9Cms6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLnZhbHVlKCk7 dCYmdGhpcy5vcHRpb25zLm9uZGJsY2xpY2smJnRoaXMub3B0aW9ucz0KLm9uZGJsY2xpY2sodCl9 LF90ZW1wbGF0ZV9oZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgY2xhc3M9M0QiaGVhZGVy Ij4mPQpidWxsOyAnK2UudGl0bGUrIjxkaXY+In0sX3RlbXBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7 cmV0dXJuJzxkaXYgaWQ9M0QiJytlLmk9CmQrJyIgY2xhc3M9M0QiaXRlbSI+JysnPGltZyBjbGFz cz0zRCJpbWFnZSIgc3JjPTNEIicrZS51cmwrJyI+JysnPGRpdiBjbGFzcz0KPTNEInRpdGxlIj4n K2UudGl0bGUrIjwvZGl2PiIrIjxkaXY+In19KX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL2VkaXRv ciIsWyJtPQp2Yy91aS91aS10YWJzIiwicGx1Z2luL2xpYnJhcnkvdWkiLCJtdmMvdWkvdWktcG9y dGxldCIsInV0aWxzL3V0aWxzIiwicGx1Z2k9Cm4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luL21vZGVs cy9ncm91cCIsInBsdWdpbi92aWV3cy9ncm91cCIsInBsdWdpbi92aWV3cy9zZT0KdHRpbmdzIiwi cGx1Z2luL3ZpZXdzL3R5cGVzIl0sZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGEpe3JldHVybiBC YWNrYm9uZS5WPQppZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7aGVhZGVyOiEwLGNvbnRlbnQ6 Ik5vIGNvbnRlbnQgYXZhaWxhYmxlLiJ9LGluaXQ9CmlhbGl6ZTpmdW5jdGlvbihpLHMpe3ZhciBv PTNEdGhpczt0aGlzLmFwcD0zRGksdGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LD0KdGhpcy5v cHRpb25zPTNEci5tZXJnZShzLHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMucG9ydGxldD0zRG5l dyBuLlZpZXcoe2ljPQpvbjoiZmEtYmFyLWNoYXJ0LW8iLHRpdGxlOiJFZGl0b3IiLG9wZXJhdGlv bnM6e3NhdmU6bmV3IHQuQnV0dG9uSWNvbih7aWNvbjo9CiJmYS1zYXZlIix0b29sdGlwOiJEcmF3 IENoYXJ0Iix0aXRsZToiRHJhdyIsb25jbGljazpmdW5jdGlvbigpe28uYXBwLmdvKCJ2aT0KZXdl ciIpLG8uX3NhdmVDaGFydCgpfX0pLGJhY2s6bmV3IHQuQnV0dG9uSWNvbih7aWNvbjoiZmEtY2Fy ZXQtbGVmdCIsdG9vbHRpPQpwOiJSZXR1cm4gdG8gVmlld2VyIix0aXRsZToiUmV0dXJuIixvbmNs aWNrOmZ1bmN0aW9uKCl7by5hcHAuZ28oInZpZXdlciIpLG89Ci5hcHAuc3RvcmFnZS5sb2FkKCl9 fSl9fSksdGhpcy50eXBlcz0zRG5ldyBhKGkse29uY2hhbmdlOmZ1bmN0aW9uKGUpe28uY2hhcj0K dC5zZXR0aW5ncy5jbGVhcigpLG8uY2hhcnQuc2V0KHt0eXBlOmV9KSxvLmNoYXJ0LnNldCgibW9k aWZpZWQiLCEwKX0sb25kYmxjPQpsaWNrOmZ1bmN0aW9uKGUpe28uYXBwLmdvKCJ2aWV3ZXIiKSxv Ll9zYXZlQ2hhcnQoKX19KSx0aGlzLnRhYnM9M0RuZXcgZS5WaWU9Cncoe3RpdGxlX25ldzoiQWRk IERhdGEiLG9ubmV3OmZ1bmN0aW9uKCl7dmFyIGU9M0RvLl9hZGRHcm91cE1vZGVsKCk7by50YWJz Lj0Kc2hvdyhlLmlkKX19KSx0aGlzLnRpdGxlPTNEbmV3IHQuSW5wdXQoe3BsYWNlaG9sZGVyOiJD aGFydCB0aXRsZSIsb25jaGFuZ2U6PQpmdW5jdGlvbigpe28uY2hhcnQuc2V0KCJ0aXRsZSIsby50 aXRsZS52YWx1ZSgpKX19KTt2YXIgZj0zRCQoIjxkaXYvPiIpO2YuYXA9CnBlbmQoci53cmFwKChu ZXcgdC5MYWJlbCh7dGl0bGU6IlByb3ZpZGUgYSBjaGFydCB0aXRsZToifSkpLiRlbCkpLGYuYXBw ZW5kKD0Kci53cmFwKHRoaXMudGl0bGUuJGVsKSksZi5hcHBlbmQoci53cmFwKChuZXcgdC5MYWJl bCh7dGl0bGU6IlNlbGVjdCBhIGNoYXJ0PQogdHlwZToifSkpLiRlbCkpLGYuYXBwZW5kKHIud3Jh cCh0aGlzLnR5cGVzLiRlbCkpLHRoaXMudGFicy5hZGQoe2lkOiJtYWluIiw9CnRpdGxlOiJTdGFy dCIsJGVsOmZ9KSx0aGlzLnNldHRpbmdzPTNEbmV3IHUodGhpcy5hcHApLHRoaXMudGFicy5hZGQo e2lkOiJzZT0KdHRpbmdzIix0aXRsZToiQ29uZmlndXJhdGlvbiIsJGVsOnRoaXMuc2V0dGluZ3Mu JGVsfSksdGhpcy5wb3J0bGV0LmFwcGVuZCh0PQpoaXMudGFicy4kZWwpLHRoaXMuc2V0RWxlbWVu dCh0aGlzLnBvcnRsZXQuJGVsKSx0aGlzLnRhYnMuaGlkZU9wZXJhdGlvbigiYmE9CmNrIik7dmFy IG89M0R0aGlzO3RoaXMuY2hhcnQub24oImNoYW5nZTp0aXRsZSIsZnVuY3Rpb24oZSl7by5fcmVm cmVzaFRpdGxlKD0KKX0pLHRoaXMuY2hhcnQub24oImNoYW5nZTp0eXBlIixmdW5jdGlvbihlKXtv LnR5cGVzLnZhbHVlKGUuZ2V0KCJ0eXBlIikpfSksPQp0aGlzLmNoYXJ0Lm9uKCJyZXNldCIsZnVu Y3Rpb24oZSl7by5fcmVzZXRDaGFydCgpfSksdGhpcy5hcHAuY2hhcnQub24oInJlZHI9CmF3Iixm dW5jdGlvbihlKXtvLnBvcnRsZXQuc2hvd09wZXJhdGlvbigiYmFjayIpfSksdGhpcy5hcHAuY2hh cnQuZ3JvdXBzLm9uKD0KImFkZCIsZnVuY3Rpb24oZSl7by5fYWRkR3JvdXAoZSl9KSx0aGlzLmFw cC5jaGFydC5ncm91cHMub24oInJlbW92ZSIsZnVuY3RpPQpvbihlKXtvLl9yZW1vdmVHcm91cChl KX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigicmVzZXQiLGZ1bmN0aW9uKGUpe28uX3I9CmVt b3ZlQWxsR3JvdXBzKCl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24oImNoYW5nZTprZXkiLGZ1 bmN0aW9uKGUpe28uX3JlZj0KcmVzaEdyb3VwS2V5KCl9KSx0aGlzLl9yZXNldENoYXJ0KCl9LHNo b3c6ZnVuY3Rpb24oKXt0aGlzLiRlbC5zaG93KCl9LGhpZGU6PQpmdW5jdGlvbigpe3RoaXMuJGVs LmhpZGUoKX0sX3JlZnJlc2hUaXRsZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFydC5nZXQ9 CigidGl0bGUiKTt0aGlzLnBvcnRsZXQudGl0bGUoZSksdGhpcy50aXRsZS52YWx1ZShlKX0sX3Jl ZnJlc2hHcm91cEtleTpmdW5jdD0KaW9uKCl7dmFyIGU9M0R0aGlzLHQ9M0QwO3RoaXMuY2hhcnQu Z3JvdXBzLmVhY2goZnVuY3Rpb24obil7dmFyIHI9M0RuLmdldCgiPQprZXkiLCIiKTtyPTNEPTNE IiImJihyPTNEIkNoYXJ0IGRhdGEiKSxlLnRhYnMudGl0bGUobi5pZCwrK3QrIjogIityKX0pfSxf YWQ9CmRHcm91cE1vZGVsOmZ1bmN0aW9uKCl7dmFyIGU9M0RuZXcgcyh7aWQ6ci51dWlkKCl9KTty ZXR1cm4gdGhpcy5jaGFydC5ncm91cD0Kcy5hZGQoZSksZX0sX2FkZEdyb3VwOmZ1bmN0aW9uKGUp e3ZhciB0PTNEdGhpcyxuPTNEbmV3IG8odGhpcy5hcHAse2dyb3VwOmV9PQopO3RoaXMudGFicy5h ZGQoe2lkOmUuaWQsJGVsOm4uJGVsLG9uZGVsOmZ1bmN0aW9uKCl7dC5jaGFydC5ncm91cHMucmVt b3ZlKGU9Ci5pZCl9fSksdGhpcy5fcmVmcmVzaEdyb3VwS2V5KCl9LF9yZW1vdmVHcm91cDpmdW5j dGlvbihlKXt0aGlzLnRhYnMuZGVsKGUuaT0KZCksdGhpcy5fcmVmcmVzaEdyb3VwS2V5KCksdGhp cy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMCl9LF9yZW1vdmVBbGxHcm91cHM6PQpmdW5jdGlvbihl KXt0aGlzLnRhYnMuZGVsUmVtb3ZhYmxlKCl9LF9yZXNldENoYXJ0OmZ1bmN0aW9uKCl7dGhpcy5j aGFydC5zZXQ9CigiaWQiLHIudXVpZCgpKSx0aGlzLmNoYXJ0LnNldCgidHlwZSIsIm52ZDNfYmFy IiksdGhpcy5jaGFydC5zZXQoImRhdGFzZXRfaT0KZCIsdGhpcy5hcHAub3B0aW9ucy5jb25maWcu ZGF0YXNldF9pZCksdGhpcy5jaGFydC5zZXQoInRpdGxlIiwiTmV3IENoYXJ0IiksPQp0aGlzLnBv cnRsZXQuaGlkZU9wZXJhdGlvbigiYmFjayIpfSxfc2F2ZUNoYXJ0OmZ1bmN0aW9uKCl7dGhpcy5j aGFydC5zZXQoe3Q9CnlwZTp0aGlzLnR5cGVzLnZhbHVlKCksdGl0bGU6dGhpcy50aXRsZS52YWx1 ZSgpLGRhdGU6ci50aW1lKCl9KSx0aGlzLmNoYXJ0Lj0KZ3JvdXBzLmxlbmd0aD0zRD0zRDAmJnRo aXMuX2FkZEdyb3VwTW9kZWwoKTt2YXIgZT0zRHRoaXM7dGhpcy5jaGFydC5kZWZlcnJlPQpkLmV4 ZWN1dGUoZnVuY3Rpb24oKXtlLmFwcC5zdG9yYWdlLnNhdmUoKSxlLmNoYXJ0LnRyaWdnZXIoInJl ZHJhdyIpfSl9fSl9KSw9CmRlZmluZSgicGx1Z2luL21vZGVscy9jb25maWciLFtdLGZ1bmN0aW9u KCl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZD0KZWZhdWx0czp7cXVlcnlfbGltaXQ6 MWUzLHF1ZXJ5X3RpbWVvdXQ6MTAwLHNjcmVlbnNob3RfdXJsOiJodHRwOi8vZXhwb3J0LmhpPQpn aGNoYXJ0cy5jb20vIn19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m aWciLFtdLGZ1bmN0aW9uKCk9CntyZXR1cm57dGl0bGU6IiIsY2F0ZWdvcnk6IiIsbGlicmFyeToi bnZkMy5qcyIsdGFnOiJzdmciLHNldHRpbmdzOntzZXBhcmF0bz0Kcl9sYWJlbDp7dGl0bGU6Ilgg YXhpcyIsdHlwZToic2VwYXJhdG9yIn0seF9heGlzX2xhYmVsOnt0aXRsZToiQXhpcyBsYWJlbCIs PQppbmZvOiJQcm92aWRlIGEgbGFiZWwgZm9yIHRoZSBheGlzLiIsdHlwZToidGV4dCIsaW5pdDoi WC1heGlzIixwbGFjZWhvbGRlcjo9CiJBeGlzIGxhYmVsIn0seF9heGlzX3R5cGU6e3RpdGxlOiJB eGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0aGUgdmFsdWUgdD0KeXBlIG9mIHRoZSBheGlz LiIsdHlwZToic2VsZWN0Iixpbml0OiJhdXRvIixkYXRhOlt7bGFiZWw6Ii0tIERvIG5vdCBzaG93 IHZhPQpsdWVzIC0tIix2YWx1ZToiaGlkZSIsaGlkZTpbInhfYXhpc190aWNrIl19LHtsYWJlbDoi QXV0byIsdmFsdWU6ImF1dG8iLGhpZGU9CjpbInhfYXhpc190aWNrIl19LHtsYWJlbDoiRmxvYXQi LHZhbHVlOiJmIixzaG93OlsieF9heGlzX3RpY2siXX0se2xhYmVsOiJFeD0KcG9uZW50Iix2YWx1 ZToiZSIsc2hvdzpbInhfYXhpc190aWNrIl19LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6ImQiLGhp ZGU6WyJ4PQpfYXhpc190aWNrIl19LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLHNob3c6 WyJ4X2F4aXNfdGljayJdfSx7bGFiZWw6IlI9Cm91bmRlZCIsdmFsdWU6InIiLHNob3c6WyJ4X2F4 aXNfdGljayJdfSx7bGFiZWw6IlNJLXByZWZpeCIsdmFsdWU6InMiLHNob3c6Wz0KInhfYXhpc190 aWNrIl19XX0seF9heGlzX3RpY2s6e3RpdGxlOiJBeGlzIHRpY2sgZm9ybWF0IixpbmZvOiJTZWxl Y3QgdGhlIHRpPQpjayBmb3JtYXQgZm9yIHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiIu MSIsZGF0YTpbe2xhYmVsOiIwLjAwMDAxIix2YWw9CnVlOiIuNSJ9LHtsYWJlbDoiMC4wMDAxIix2 YWx1ZToiLjQifSx7bGFiZWw6IjAuMDAxIix2YWx1ZToiLjMifSx7bGFiZWw6IjAuMD0KMSIsdmFs dWU6Ii4yIn0se2xhYmVsOiIwLjEiLHZhbHVlOiIuMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjEifV19 LHNlcGFyYXRvcl90PQppY2s6e3RpdGxlOiJZIGF4aXMiLHR5cGU6InNlcGFyYXRvciJ9LHlfYXhp c19sYWJlbDp7dGl0bGU6IkF4aXMgbGFiZWwiLGluZm89CjoiUHJvdmlkZSBhIGxhYmVsIGZvciB0 aGUgYXhpcy4iLHR5cGU6InRleHQiLGluaXQ6IlktYXhpcyIscGxhY2Vob2xkZXI6IkF4aT0KcyBs YWJlbCJ9LHlfYXhpc190eXBlOnt0aXRsZToiQXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3Qg dGhlIHZhbHVlIHR5cGUgPQpvZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiYXV0byIs ZGF0YTpbe2xhYmVsOiItLSBEbyBub3Qgc2hvdyB2YWx1ZXM9CiAtLSIsdmFsdWU6ImhpZGUiLGhp ZGU6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IkF1dG8iLHZhbHVlOiJhdXRvIixoaWRlOlsieT0K X2F4aXNfdGljayJdfSx7bGFiZWw6IkZsb2F0Iix2YWx1ZToiZiIsc2hvdzpbInlfYXhpc190aWNr Il19LHtsYWJlbDoiRXhwb25lPQpudCIsdmFsdWU6ImUiLHNob3c6WyJ5X2F4aXNfdGljayJdfSx7 bGFiZWw6IkludGVnZXIiLHZhbHVlOiJkIixoaWRlOlsieV9heGk9CnNfdGljayJdfSx7bGFiZWw6 IlBlcmNlbnRhZ2UiLHZhbHVlOiJwIixzaG93OlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJSb3Vu ZD0KZWQiLHZhbHVlOiJyIixzaG93OlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJTSS1wcmVmaXgi LHZhbHVlOiJzIixzaG93OlsieV9hPQp4aXNfdGljayJdfV19LHlfYXhpc190aWNrOnt0aXRsZToi QXhpcyB0aWNrIGZvcm1hdCIsaW5mbzoiU2VsZWN0IHRoZSB0aWNrIGY9Cm9ybWF0IGZvciB0aGUg YXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiLjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAwMSIsdmFs dWU6Ij0KLjUifSx7bGFiZWw6IjAuMDAwMSIsdmFsdWU6Ii40In0se2xhYmVsOiIwLjAwMSIsdmFs dWU6Ii4zIn0se2xhYmVsOiIwLjAxIix2PQphbHVlOiIuMiJ9LHtsYWJlbDoiMC4xIix2YWx1ZToi LjEifSx7bGFiZWw6IjEiLHZhbHVlOiIxIn1dfSxzZXBhcmF0b3JfbGVnZW49CmQ6e3RpdGxlOiJP dGhlcnMiLHR5cGU6InNlcGFyYXRvciJ9LHNob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQi LGluZm86Ij0KV291bGQgeW91IGxpa2UgdG8gYWRkIGEgbGVnZW5kPyIsdHlwZToic2VsZWN0Iixp bml0OiJ0cnVlIixkYXRhOlt7bGFiZWw6IlllPQpzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8i LHZhbHVlOiJmYWxzZSJ9XX19fX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQ9CjMvYmFyL2Nv bmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl dHVybiAkLmV4dD0KZW5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIixjYXRlZ29yeToiQmFyIGRp YWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsPQp1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6 ITAsaXNfYXV0bzohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW09CmVyaWM6 ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0YWNrZWQvY29uZmlnIixb InBsdWdpbi9jaGFydD0Kcy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4g JC5leHRlbmQoITAse30sZSx7dGl0bGU6IlN0YWNrZWQiPQosY2F0ZWdvcnk6IkJhciBkaWFncmFt cyIsY29sdW1uczp7eTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiE9CjB9 fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIixb InBsdWdpbi9jaGFydHMvbj0KdmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4g JC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikhvcml6b250YWwiPQosY2F0ZWdvcnk6IkJhciBkaWFn cmFtcyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCw9 CmlzX2F1dG86ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19 LHNldHRpbmdzOnt4X2F4aXNfdD0KeXBlOntpbml0OiJoaWRlIn19fSl9KSxkZWZpbmUoInBsdWdp bi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2NvPQpuZmlnIixbInBsdWdpbi9j aGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEw LHs9Cn0sZSx7dGl0bGU6IlN0YWNrZWQgaG9yaXpvbnRhbCIsY2F0ZWdvcnk6IkJhciBkaWFncmFt cyIsc2V0dGluZ3M6e3hfYXhpc190eT0KcGU6e2luaXQ6ImhpZGUifX0sY29sdW1uczp7eTp7dGl0 bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pPQosZGVmaW5lKCJwbHVn aW4vY2hhcnRzL252ZDMvbGluZV9mb2N1cy9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2Nv bW1vbi89CmNvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRs ZToiTGluZSB3aXRoIGZvY3VzIixjYXRlZz0Kb3J5OiJPdGhlcnMiLGNvbHVtbnM6e3k6e3RpdGxl OiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpPQpuZSgicGx1Z2lu L2NoYXJ0cy9udmQzL3BpZS9jb25maWciLFtdLGZ1bmN0aW9uKCl7cmV0dXJuICQuZXh0ZW5kKCEw LHt9LHt0aXQ9CmxlOiJQaWUgY2hhcnQiLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsdGFnOiJzdmci LHVzZV9wYW5lbHM6ITAsY29sdW1uczp7bGFiZT0KbDp7dGl0bGU6IkxhYmVscyIsaXNfbGFiZWw6 ITAsaXNfYXV0bzohMH0seTp7dGl0bGU6IlZhbHVlcyIsaXNfbnVtZXJpYzohMH19PQosc2V0dGlu Z3M6e3Nob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQiLGluZm86IldvdWxkIHlvdSBsaWtl IHRvIGFkZCBhIGw9CmVnZW5kPyIsdHlwZToic2VsZWN0Iixpbml0OiJmYWxzZSIsZGF0YTpbe2xh YmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOj0KIk5vIix2YWx1ZToiZmFsc2UifV19LGRv bnV0X3JhdGlvOnt0aXRsZToiRG9udXQgcmF0aW8iLGluZm86IkRldGVybWluZSBob3cgPQpsYXJn ZSB0aGUgZG9udXQgaG9sZSB3aWxsIGJlLiIsdHlwZToic2VsZWN0Iixpbml0OiIwLjUiLGRhdGE6 W3tsYWJlbDoiNTAlIiw9CnZhbHVlOiIwLjUifSx7bGFiZWw6IjI1JSIsdmFsdWU6IjAuMjUifSx7 bGFiZWw6IjEwJSIsdmFsdWU6IjAuMTAifSx7bGFiZWw6Ij0KMCUiLHZhbHVlOiIwIn1dfSxsYWJl bF9zZXBhcmF0b3I6e3R5cGU6InNlcGFyYXRvciIsdGl0bGU6IkxhYmVsIHNldHRpbmdzIn0sPQps YWJlbF90eXBlOnt0aXRsZToiRG9udXQgbGFiZWwiLGluZm86IldoYXQgd291bGQgeW91IGxpa2Ug dG8gc2hvdyBmb3IgZWFjaCA9CnNsaWNlPyIsdHlwZToic2VsZWN0Iixpbml0OiJwZXJjZW50Iixk YXRhOlt7bGFiZWw6Ii0tIE5vdGhpbmcgLS0iLHZhbHVlOiJoaT0KZGUiLGhpZGU6ImxhYmVsX291 dHNpZGUifSx7bGFiZWw6IkxhYmVsIGNvbHVtbiIsdmFsdWU6ImtleSIsc2hvdzoibGFiZWxfb3V0 PQpzaWRlIn0se2xhYmVsOiJWYWx1ZSBjb2x1bW4iLHZhbHVlOiJ2YWx1ZSIsc2hvdzoibGFiZWxf b3V0c2lkZSJ9LHtsYWJlbDoiUGU9CnJjZW50YWdlIix2YWx1ZToicGVyY2VudCIsc2hvdzoibGFi ZWxfb3V0c2lkZSJ9XX0sbGFiZWxfb3V0c2lkZTp7dGl0bGU6IlNobz0KdyBvdXRzaWRlIixpbmZv OiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGxhYmVscyBvdXRzaWRlIHRoZSBkb251dD8iLHR5cGU6 InNlPQpsZWN0Iixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0s e2xhYmVsOiJObyIsdmFsdWU6ImZhbHM9CmUifV19fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRz L252ZDMvc3RhY2tlZGFyZWFfZnVsbC9jb25maWciLFsicGx1Z2luL2NoYT0KcnRzL252ZDMvY29t bW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToi RXhwYW5kPQplZCIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixjb2x1bW5zOnt5Ont0aXRsZToiVmFs dWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM9CjohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFy dHMvbnZkMy9zdGFja2VkYXJlYV9zdHJlYW0vY29uZmlnIixbInBsdWdpbi9jaD0KYXJ0cy9udmQz L2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0 bGU6IlN0cmVhPQptIixjYXRlZ29yeToiQXJlYSBjaGFydHMiLGNvbHVtbnM6e3k6e3RpdGxlOiJW YWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzo9CiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2No YXJ0cy9udmQzL2hpc3RvZ3JhbS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzLz0KY29tbW9u L2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGlz dG9ncmFtIixjYXRlPQpnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRv b2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6Imhpc3Q9Cm9ncmFtIixjb2x1bW5zOnt5Ont0aXRs ZToiT2JzZXJ2YXRpb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19sYT0KYmVs Ontpbml0OiJCcmVha3MifSx5X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4aXNfdHlw ZTp7aW5pdDoiZiJ9LHlfPQpheGlzX3RpY2s6e2luaXQ6Ii4yIn19fSl9KSxkZWZpbmUoInBsdWdp bi9jaGFydHMvbnZkMy9oaXN0b2dyYW1fZGlzY3JldGUvY289Cm5maWciLFsicGx1Z2luL2NoYXJ0 cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAsez0K fSxlLHt0aXRsZToiSGlzdG9ncmFtIChkaXNjcmV0ZSkiLGNhdGVnb3J5OiJEYXRhIHByb2Nlc3Np bmcgKHJlcXVpcmVzICdjaGFyPQp0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiaGlz dG9ncmFtZGlzY3JldGUiLGNvbHVtbnM6e3g6e3RpdGxlOiJPYnM9CmVydmF0aW9ucyIsaXNfbGFi ZWw6ITB9fSxzZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJCcmVha3MifSx5X2F4aXNfbGFi ZT0KbDp7aW5pdDoiRGVuc2l0eSJ9LHlfYXhpc190eXBlOntpbml0OiJmIn0seV9heGlzX3RpY2s6 e2luaXQ6Ii4yIn19fSl9KSxkZWZpPQpuZSgicGx1Z2luL2NoYXJ0cy9udmQzL2xpbmUvY29uZmln IixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnU9Cm5jdGlvbihlKXtyZXR1 cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkxpbmUgY2hhcnQiLGNhdGVnb3J5OiJPdGhlcnMi LGNvbD0KdW1uczp7eTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19 KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0PQpzL252ZDMvc2NhdHRlci9jb25maWciLFsicGx1Z2lu L2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXQ9CnVybiAkLmV4dGVu ZCghMCx7fSxlLHt0aXRsZToiU2NhdHRlciBwbG90IixjYXRlZ29yeToiT3RoZXJzIixjb2x1bW5z Ont4Ont0aT0KdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbnVtZXJpYzohMH0seTp7dGl0bGU6 IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lPQpyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4v Y2hhcnRzL252ZDMvc3RhY2tlZGFyZWEvY29uZmlnIixbInBsdWdpbi9jaGFydHM9Ci9udmQzL2Nv bW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6 IlJlZ3VsYXIiLD0KY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixjb2x1bW5zOnt5Ont0aXRsZToiVmFs dWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9PQp9fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFy dHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnIixbXSxmdW5jdGlvbigpe3JldHVybns9CnRpdGxl OiIiLGNhdGVnb3J5OiIiLGxpYnJhcnk6ImhpZ2hjaGFydHMiLHRhZzoiZGl2IixzZXR0aW5nczp7 c2VwYXJhdG9yX2xhYj0KZWw6e3RpdGxlOiJYIGF4aXMiLHR5cGU6InNlcGFyYXRvciJ9LHhfYXhp c19sYWJlbDp7dGl0bGU6IkF4aXMgbGFiZWwiLGluZm86PQoiUHJvdmlkZSBhIGxhYmVsIGZvciB0 aGUgYXhpcy4iLHR5cGU6InRleHQiLGluaXQ6IlgtYXhpcyIscGxhY2Vob2xkZXI6IkF4aXM9CiBs YWJlbCJ9LHhfYXhpc190eXBlOnt0aXRsZToiQXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3Qg dGhlIHZhbHVlIHR5cGUgbz0KZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiYXV0byIs ZGF0YTpbe2xhYmVsOiItLSBEbyBub3Qgc2hvdyB2YWx1ZXMgPQotLSIsdmFsdWU6ImhpZGUiLGhp ZGU6WyJ4X2F4aXNfdGljayJdfSx7bGFiZWw6IkF1dG8iLHZhbHVlOiJhdXRvIixoaWRlOlsieF89 CmF4aXNfdGljayJdfSx7bGFiZWw6IkZsb2F0Iix2YWx1ZToiZiIsc2hvdzpbInhfYXhpc190aWNr Il19LHtsYWJlbDoiRXhwb25lbj0KdCIsdmFsdWU6ImUiLHNob3c6WyJ4X2F4aXNfdGljayJdfSx7 bGFiZWw6IkludGVnZXIiLHZhbHVlOiJkIixoaWRlOlsieF9heGlzPQpfdGljayJdfSx7bGFiZWw6 IlBlcmNlbnRhZ2UiLHZhbHVlOiJwIixzaG93OlsieF9heGlzX3RpY2siXX0se2xhYmVsOiJSb3Vu ZGU9CmQiLHZhbHVlOiJyIixzaG93OlsieF9heGlzX3RpY2siXX0se2xhYmVsOiJTSS1wcmVmaXgi LHZhbHVlOiJzIixzaG93OlsieF9heD0KaXNfdGljayJdfV19LHhfYXhpc190aWNrOnt0aXRsZToi QXhpcyB0aWNrIGZvcm1hdCIsaW5mbzoiU2VsZWN0IHRoZSB0aWNrIGZvPQpybWF0IGZvciB0aGUg YXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiLjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAwMSIsdmFs dWU6Ii49CjUifSx7bGFiZWw6IjAuMDAwMSIsdmFsdWU6Ii40In0se2xhYmVsOiIwLjAwMSIsdmFs dWU6Ii4zIn0se2xhYmVsOiIwLjAxIix2YT0KbHVlOiIuMiJ9LHtsYWJlbDoiMC4xIix2YWx1ZToi LjEifSx7bGFiZWw6IjEiLHZhbHVlOiIxIn1dfSxzZXBhcmF0b3JfdGljazp7PQp0aXRsZToiWSBh eGlzIix0eXBlOiJzZXBhcmF0b3IifSx5X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVsIixp bmZvOiJQcm89CnZpZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlOiJ0ZXh0Iixpbml0OiJZ LWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlzIGxhYj0KZWwifSx5X2F4aXNfdHlwZTp7dGl0bGU6IkF4 aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2VsZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoPQplIGF4aXMu Iix0eXBlOiJzZWxlY3QiLGluaXQ6ImF1dG8iLGRhdGE6W3tsYWJlbDoiLS0gRG8gbm90IHNob3cg dmFsdWVzIC0tIiw9CnZhbHVlOiJoaWRlIixoaWRlOlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJB dXRvIix2YWx1ZToiYXV0byIsaGlkZTpbInlfYXhpcz0KX3RpY2siXX0se2xhYmVsOiJGbG9hdCIs dmFsdWU6ImYiLHNob3c6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IkV4cG9uZW50Iix2PQphbHVl OiJlIixzaG93OlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJJbnRlZ2VyIix2YWx1ZToiZCIsaGlk ZTpbInlfYXhpc190aWM9CmsiXX0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicCIsc2hvdzpb InlfYXhpc190aWNrIl19LHtsYWJlbDoiUm91bmRlZCIsdj0KYWx1ZToiciIsc2hvdzpbInlfYXhp c190aWNrIl19LHtsYWJlbDoiU0ktcHJlZml4Iix2YWx1ZToicyIsc2hvdzpbInlfYXhpc190PQpp Y2siXX1dfSx5X2F4aXNfdGljazp7dGl0bGU6IkF4aXMgdGljayBmb3JtYXQiLGluZm86IlNlbGVj dCB0aGUgdGljayBmb3JtYXQ9CiBmb3IgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6Ii4x IixkYXRhOlt7bGFiZWw6IjAuMDAwMDEiLHZhbHVlOiIuNSJ9LD0Ke2xhYmVsOiIwLjAwMDEiLHZh bHVlOiIuNCJ9LHtsYWJlbDoiMC4wMDEiLHZhbHVlOiIuMyJ9LHtsYWJlbDoiMC4wMSIsdmFsdWU6 PQoiLjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6Ii4xIn0se2xhYmVsOiIxIix2YWx1ZToiMSJ9XX0s c2VwYXJhdG9yX2xlZ2VuZDp7dGk9CnRsZToiT3RoZXJzIix0eXBlOiJzZXBhcmF0b3IifSxsZWdl bmRfZW5hYmxlZDp7dGl0bGU6IlNob3cgbGVnZW5kIixpbmZvOiJXbz0KdWxkIHlvdSBsaWtlIHRv IGFkZCBhIGxlZ2VuZD8iLHR5cGU6InNlbGVjdCIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJZ ZXMiPQosdmFsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19fX19KSxkZWZp bmUoInBsdWdpbi9jaGFydHMvaGlnaGM9CmhhcnRzL2Jhci9jb25maWciLFsicGx1Z2luL2NoYXJ0 cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZT0KdHVybiAkLmV4dGVu ZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIsY2F0ZWdvcnk6IkJhciBkaWFncmFtcyIsY29sdW1u czp7eDp7PQp0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAs aXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmE9Cmx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzoh MH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9iYXJfcz0KdGFja2VkL2Nv bmZpZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9u KGUpe3JldHVyPQpuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTdGFja2VkIixjYXRlZ29yeToi QmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXQ9CmxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNf bGFiZWw6ITAsaXNfYXV0bzohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIj0KLGlzX251 bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvYmFyX2hvcml6 b250YWwvY29uZmlnPQoiLFsicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWci XSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITA9Cix7fSxlLHt0aXRsZToiSG9yaXpvbnRh bCIsY2F0ZWdvcnk6IkJhciBkaWFncmFtcyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcz0KIGZv ciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHkt YXhpcyIsaXNfbnVtZXJpPQpjOiEwfX0sc2V0dGluZ3M6e3hfYXhpc190eXBlOntpbml0OiJoaWRl In19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvaGlnaGM9CmhhcnRzL2Jhcl9ob3Jpem9udGFs X3N0YWNrZWQvY29uZmlnIixbInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZj0K aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlN0YWNrZWQg aG9yaXpvbnRhbCIsY2F0ZWdvPQpyeToiQmFyIGRpYWdyYW1zIixzZXR0aW5nczp7eF9heGlzX3R5 cGU6e2luaXQ6ImhpZGUifX0sY29sdW1uczp7eDp7dGl0bGU6IlY9CmFsdWVzIGZvciB4LWF4aXMi LGlzX2xhYmVsOiEwLGlzX2F1dG86ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNf bj0KdW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2hpc3Rv Z3JhbS9jb25maWciLFsicGx1Z2luPQovY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uL2NvbmZpZyJd LGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXQ9CmxlOiJIaXN0b2dyYW0i LGNhdGVnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBU b29scz0KaGVkKSIsZXhlY3V0ZToiaGlzdG9ncmFtIixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2 YXRpb25zIixpc19udW1lcmljOiEwfX0sPQpzZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJC cmVha3MifSx5X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4aXM9Cl90eXBlOntpbml0 OiJmIn0seV9heGlzX3RpY2s6e2luaXQ6Ii4yIn19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMv aGlnaGNoYT0KcnRzL2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9o aWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxmPQp1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh MCx7fSxlLHt0aXRsZToiSGlzdG9ncmFtIChEaXNjcmV0ZSkiLGNhdGVnb3J5OiI9CkRhdGEgcHJv Y2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToi aGlzdG9ncmFtZD0KaXNjcmV0ZSIsY29sdW1uczp7eTp7dGl0bGU6Ik9ic2VydmF0aW9ucyIsaXNf bGFiZWw6ITB9fSxzZXR0aW5nczp7eF9heGlzX2xhPQpiZWw6e2luaXQ6IkJyZWFrcyJ9LHlfYXhp c19sYWJlbDp7aW5pdDoiRGVuc2l0eSJ9LHlfYXhpc190eXBlOntpbml0OiJmIn0seV89CmF4aXNf dGljazp7aW5pdDoiLjIifX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2xp bmUvY29uZmlnIixbIj0KcGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxm dW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sPQplLHt0aXRsZToiTGluZSIsY2F0ZWdv cnk6Ik90aGVycyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc189Cmxh YmVsOiEwLGlzX2F1dG86ITAsaXNfbnVtZXJpYzohMX0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1h eGlzIixpc19udW1lcmljOj0KITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFy dHMvcGllL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjPQpoYXJ0cy9jb21tb24vY29uZmln Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJQaWUgY2hhcnQ9 CiIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIix1c2VfcGFuZWxzOiEwLGNvbHVtbnM6e2xhYmVsOnt0 aXRsZToiTGFiZWxzIixpc19sYT0KYmVsOiEwLGlzX2F1dG86ITB9LHk6e3RpdGxlOiJWYWx1ZXMi LGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7c2hvd19sZWdlbmQ6PQp7dGl0bGU6IlNob3cgbGVn ZW5kIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJzZWxlY3Qi LGk9Cm5pdDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoi Tm8iLHZhbHVlOiJmYWxzZSJ9XX0sZD0Kb251dF9yYXRpbzp7dGl0bGU6IkRvbnV0IHJhdGlvIixp bmZvOiJEZXRlcm1pbmUgaG93IGxhcmdlIHRoZSBkb251dCBob2xlIHdpPQpsbCBiZS4iLHR5cGU6 InNlbGVjdCIsaW5pdDoiMC41IixkYXRhOlt7bGFiZWw6IjUwJSIsdmFsdWU6IjAuNSJ9LHtsYWJl bDoiMjU9CiUiLHZhbHVlOiIwLjI1In0se2xhYmVsOiIxMCUiLHZhbHVlOiIwLjEwIn0se2xhYmVs OiIwJSIsdmFsdWU6IjAifV19LGxhYmVsXz0Kc2VwYXJhdG9yOnt0eXBlOiJzZXBhcmF0b3IiLHRp dGxlOiJMYWJlbCBzZXR0aW5ncyJ9LGxhYmVsX3R5cGU6e3RpdGxlOiJEb251PQp0IGxhYmVsIixp bmZvOiJXaGF0IHdvdWxkIHlvdSBsaWtlIHRvIHNob3cgZm9yIGVhY2ggc2xpY2U/Iix0eXBlOiJz ZWxlY3QiLGk9Cm5pdDoicGVyY2VudCIsZGF0YTpbe2xhYmVsOiItLSBOb3RoaW5nIC0tIix2YWx1 ZToiaGlkZSIsaGlkZToibGFiZWxfb3V0c2lkZT0KIn0se2xhYmVsOiJMYWJlbCBjb2x1bW4iLHZh bHVlOiJrZXkiLHNob3c6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IlZhbHVlIGNvPQpsdW1uIix2 YWx1ZToidmFsdWUiLHNob3c6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IlBlcmNlbnRhZ2UiLHZh bHVlOiJwZXJjZW49CnQiLHNob3c6ImxhYmVsX291dHNpZGUifV19LGxhYmVsX291dHNpZGU6e3Rp dGxlOiJTaG93IG91dHNpZGUiLGluZm86IldvdWxkID0KeW91IGxpa2UgdG8gc2hvdyBsYWJlbHMg b3V0c2lkZSB0aGUgZG9udXQ/Iix0eXBlOiJzZWxlY3QiLGluaXQ6ImZhbHNlIixkYXRhPQo6W3ts YWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX19fSl9 KSxkZWZpbmUoInBsdWc9CmluL2NoYXJ0cy9oaWdoY2hhcnRzL3NjYXR0ZXIvY29uZmlnIixbInBs dWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZj0KaWciXSxmdW5jdGlvbihlKXtyZXR1 cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90PQpo ZXJzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9 LHk6e3RpdGxlOiJWYWx1ZXM9CiBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmlu ZSgicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL3N0YWNrZWRhcj0KZWEvY29uZmlnIixbInBsdWdp bi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQu PQpleHRlbmQoITAse30sZSx7dGl0bGU6IlJlZ3VsYXIiLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIs Y29sdW1uczp7eDp7dGl0bGU6IlY9CmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1 dG86ITAsaXNfbnVtZXJpYzohMX0seTp7dGl0bGU6IlZhbHVlcyBmbz0KciB5LWF4aXMiLGlzX251 bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvYm94cGxvdC9j b25mPQppZyIsW10sZnVuY3Rpb24oKXtyZXR1cm4gJC5leHRlbmQoITAse30se3RpdGxlOiJCb3gg cGxvdCIsY2F0ZWdvcnk6IkRhdGEgcHI9Cm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29s IGZyb20gVG9vbHNoZWQpIixsaWJyYXJ5OiJoaWdoY2hhcnRzLmpzIix0YT0KZzoiZGl2IixleGVj dXRlOiJib3hwbG90Iixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2YXRpb25zIixpc19udW1lcmlj OiEwfX0sPQpzZXR0aW5nczp7c2VwYXJhdG9yX2xhYmVsOnt0aXRsZToiWCBheGlzIix0eXBlOiJz ZXBhcmF0b3IifSx4X2F4aXNfbGFiZWw6e3Q9Cml0bGU6IkF4aXMgbGFiZWwiLGluZm86IlByb3Zp ZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlOiJ0ZXh0Iixpbml0OiJYLT0KYXhpcyIscGxh Y2Vob2xkZXI6IkF4aXMgbGFiZWwifSxzZXBhcmF0b3JfdGljazp7dGl0bGU6IlkgYXhpcyIsdHlw ZToic2VwYXJhPQp0b3IifSx5X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVsIixpbmZvOiJQ cm92aWRlIGEgbGFiZWwgZm9yIHRoZSBheGlzLiI9Cix0eXBlOiJ0ZXh0Iixpbml0OiJZLWF4aXMi LHBsYWNlaG9sZGVyOiJBeGlzIGxhYmVsIn19fSl9KSxkZWZpbmUoInBsdWdpbi9jaD0KYXJ0cy9o aWdoY2hhcnRzL2hlYXRtYXAvY29uZmlnIixbInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21t b24vY29uZmlnIl0sPQpmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6 IkhlYXRtYXAiLGNhdGVnb3J5OiJEYXRhIHByb2Nlc3M9CmluZyAocmVxdWlyZXMgJ2NoYXJ0cycg dG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiaGVhdG1hcCIsdXNlX3BhbmVsczohMD0KLGNv bHVtbnM6e3Jvd19sYWJlbDp7dGl0bGU6IlJvdyBsYWJlbHMiLGlzX2xhYmVsOiEwfSxjb2xfbGFi ZWw6e3RpdGxlOiJDb2x1PQptbiBsYWJlbHMiLGlzX2xhYmVsOiEwfSx2YWx1ZTp7dGl0bGU6Ik9i c2VydmF0aW9ucyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWY9CmluZSgicGx1Z2luL2NoYXJ0cy90 eXBlcyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvYmFyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbj0K dmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRh bC9jb25maWciLCJwbHVnaW4vPQpjaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2Nv bmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9saW5lX2ZvY3VzL2M9Cm9uZmlnIiwicGx1Z2luL2No YXJ0cy9udmQzL3BpZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZGFyZWFfZnVs bD0KL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9zdHJlYW0vY29uZmln IiwicGx1Z2luL2NoYXJ0cy9udmQzPQovaGlzdG9ncmFtL2NvbmZpZyIsInBsdWdpbi9jaGFydHMv bnZkMy9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnIiwicGx1Z2luL2M9CmhhcnRzL252ZDMvbGlu ZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvc2NhdHRlci9jb25maWciLCJwbHVnaW4vY2hh cnRzLz0KbnZkMy9zdGFja2VkYXJlYS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMv YmFyL2NvbmZpZyIsInBsdWdpbi9jaGFyPQp0cy9oaWdoY2hhcnRzL2Jhcl9zdGFja2VkL2NvbmZp ZyIsInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9iYXJfaG9yaXpvbnRhbC89CmNvbmZpZyIsInBs dWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2NvbmZpZyIsInBs dWdpbi9jaD0KYXJ0cy9oaWdoY2hhcnRzL2hpc3RvZ3JhbS9jb25maWciLCJwbHVnaW4vY2hhcnRz L2hpZ2hjaGFydHMvaGlzdG9ncmFtX2Rpc2NyPQpldGUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9o aWdoY2hhcnRzL2xpbmUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnQ9CnMvcGllL2Nv bmZpZyIsInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9j aGFydHMvaGlnaD0KY2hhcnRzL3N0YWNrZWRhcmVhL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvaGln aGNoYXJ0cy9ib3hwbG90L2NvbmZpZyIsInBsdWdpPQpuL2NoYXJ0cy9oaWdoY2hhcnRzL2hlYXRt YXAvY29uZmlnIl0sZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQ9Cix2LG0s Zyx5LGIsdyxFLFMseCxUKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7 bnZkM19iYXI6ZSxudj0KZDNfYmFyX3N0YWNrZWQ6dCxudmQzX2Jhcl9ob3Jpem9udGFsOm4sbnZk M19iYXJfaG9yaXpvbnRhbF9zdGFja2VkOnIsbnZkM19sPQppbmVfZm9jdXM6aSxudmQzX3N0YWNr ZWRhcmVhX2Z1bGw6byxudmQzX3N0YWNrZWRhcmVhX3N0cmVhbTp1LG52ZDNfcGllOnMsbnY9CmQz X3N0YWNrZWRhcmVhOmgsbnZkM19saW5lOmwsbnZkM19zY2F0dGVyOmMsbnZkM19oaXN0b2dyYW06 YSxudmQzX2hpc3RvZ3JhbT0KX2Rpc2NyZXRlOmYsaGlnaGNoYXJ0c19ib3hwbG90Onh9fSl9KSxk ZWZpbmUoInBsdWdpbi9hcHAiLFsibXZjL3VpL3VpLW1vZGFsPQoiLCJtdmMvdWkvdWktcG9ydGxl dCIsInBsdWdpbi9saWJyYXJ5L3VpIiwidXRpbHMvdXRpbHMiLCJwbHVnaW4vbGlicmFyeS9qb2I9 CnMiLCJwbHVnaW4vbGlicmFyeS9kYXRhc2V0cyIsInBsdWdpbi9saWJyYXJ5L3N0b3JhZ2UiLCJw bHVnaW4vdmlld3Mvdmlld2VyIj0KLCJwbHVnaW4vdmlld3MvZWRpdG9yIiwicGx1Z2luL21vZGVs cy9jb25maWciLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luPQovY2hhcnRzL3R5cGVzIl0s ZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGEsZixsLGMpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4 dGU9Cm5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRHQsR2FsYXh5JiZH YWxheHkubW9kYWw/dGhpcy5tb2RhbD0KPTNER2FsYXh5Lm1vZGFsOnRoaXMubW9kYWw9M0RuZXcg ZS5WaWV3LHRoaXMuY29uZmlnPTNEbmV3IGYsdGhpcy50eXBlcz0zRG5lPQp3IGMsdGhpcy5jaGFy dD0zRG5ldyBsLHRoaXMuam9icz0zRG5ldyBpKHRoaXMpLHRoaXMuZGF0YXNldHM9M0RuZXcgcyh0 aGlzKSw9CnRoaXMuc3RvcmFnZT0zRG5ldyBvKHRoaXMpLHRoaXMudmlld2VyX3ZpZXc9M0RuZXcg dSh0aGlzKSx0aGlzLmVkaXRvcl92aWV3PQo9M0RuZXcgYSh0aGlzKSx0aGlzLiRlbC5hcHBlbmQo dGhpcy52aWV3ZXJfdmlldy4kZWwpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLmU9CmRpdG9yX3ZpZXcu JGVsKTtpZighdGhpcy5zdG9yYWdlLmxvYWQoKSl0aGlzLmdvKCJlZGl0b3IiKTtlbHNle3RoaXMu Z28oInZpZT0Kd2VyIik7dmFyIG49M0R0aGlzO3RoaXMuY2hhcnQuZGVmZXJyZWQuZXhlY3V0ZShm dW5jdGlvbigpe24uY2hhcnQudHJpZ2dlcigiPQpyZWRyYXciKX0pfX0sZ286ZnVuY3Rpb24oZSl7 JCgiLnRvb2x0aXAiKS5oaWRlKCk7c3dpdGNoKGUpe2Nhc2UiZWRpdG9yIjp0aGk9CnMuZWRpdG9y X3ZpZXcuc2hvdygpLHRoaXMudmlld2VyX3ZpZXcuaGlkZSgpO2JyZWFrO2Nhc2Uidmlld2VyIjp0 aGlzLmVkaXRvcj0KX3ZpZXcuaGlkZSgpLHRoaXMudmlld2VyX3ZpZXcuc2hvdygpfX0sY2hhcnRQ YXRoOmZ1bmN0aW9uKGUpe3ZhciB0PTNEZS5zcGxpPQp0KC9fKC4rKS8pO3JldHVybiB0Lmxlbmd0 aD49M0QyP3RbMF0rIi8iK3RbMV06KGNvbnNvbGUuZGVidWcoIkZBSUxFRCBBcHA6Y2g9CmFydFBh dGgoKSAtIEludmFsaWQgZm9ybWF0OiAiK2UpLHVuZGVmaW5lZCl9LGV4ZWN1dGU6ZnVuY3Rpb24o ZSl7fSxvbnVubG9hZD0KOmZ1bmN0aW9uKCl7fSxsb2c6ZnVuY3Rpb24oZSx0KXtjb25zb2xlLmxv ZyhlKyIgIit0KX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZSgibXZj L3VpL3VpLW1vZGFsIixbXSxmdW5jdGlvbigpe3ZhciBlPTNEQmFja2JvbmUuVmlldy5leHRlbmQo e2VsTWFpPQpuOiJib2R5IixvcHRpb25zRGVmYXVsdDp7dGl0bGU6InVpLW1vZGFsIixib2R5OiIi LGJhY2tkcm9wOiEwLGhlaWdodDpudWxsLHc9CmlkdGg6bnVsbCxjbG9zaW5nX2V2ZW50czohMSxj bG9zaW5nX2NhbGxiYWNrOm51bGx9LGJ1dHRvbkxpc3Q6e30saW5pdGlhbGl6ZT0KOmZ1bmN0aW9u KGUpe2UmJnRoaXMuX2NyZWF0ZShlKX0sc2hvdzpmdW5jdGlvbihlKXt0aGlzLmluaXRpYWxpemUo ZSksdGhpcy5vPQpwdGlvbnMuaGVpZ2h0Pyh0aGlzLiRib2R5LmNzcygiaGVpZ2h0Iix0aGlzLm9w dGlvbnMuaGVpZ2h0KSx0aGlzLiRib2R5LmNzcyg9CiJvdmVyZmxvdyIsImhpZGRlbiIpKTp0aGlz LiRib2R5LmNzcygibWF4LWhlaWdodCIsJCh3aW5kb3cpLmhlaWdodCgpLzIpLHRoaT0Kcy5vcHRp b25zLndpZHRoJiZ0aGlzLiRkaWFsb2cuY3NzKCJ3aWR0aCIsdGhpcy5vcHRpb25zLndpZHRoKSx0 aGlzLnZpc2libGU/PQp0aGlzLiRlbC5zaG93KCk6dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhp cy52aXNpYmxlPTNEITB9LGhpZGU6ZnVuY3Rpb24oKXs9CnRoaXMudmlzaWJsZT0zRCExLHRoaXMu JGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjayYmdD0KaGlz Lm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjaygpfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oZSl7dmFy IHQ9M0R0aGlzLmJ1dHRvPQpuTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3Ao ImRpc2FibGVkIiwhMSl9LGRpc2FibGVCdXR0b246ZnVuY3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMu YnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIj0K LCEwKX0sc2hvd0J1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0 aGlzLiRidXR0b25zLmZpbmQoPQoiIyIrdCkuc2hvdygpfSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGUp e3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHQ9Cm9ucy5maW5kKCIjIit0KS5o aWRlKCl9LGdldEJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTty ZT0KdHVybiB0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpfSxzY3JvbGxUb3A6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy4kYm9keS5zY3JvPQpsbFRvcCgpfSxfY3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0 PTNEdGhpczt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRzKGUsdGhpcy49Cm9wdGlvbnNEZWZhdWx0 KSx0aGlzLm9wdGlvbnMuYm9keT0zRD0zRCJwcm9ncmVzcyImJih0aGlzLm9wdGlvbnMuYm9keT0z RCQoJz0KPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRp diBjbGFzcz0zRCJwcm9ncmVzcy1iYXIgPQpwcm9ncmVzcy1iYXItaW5mbyIgc3R5bGU9M0Qid2lk dGg6MTAwJSI+PC9kaXY+PC9kaXY+JykpLHRoaXMuJGVsJiYodGhpcy4kZWw9Ci5yZW1vdmUoKSwk KGRvY3VtZW50KS5vZmYoImtleXVwLnVpLW1vZGFsIikpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90 ZW1wbGF0ZT0KKHRoaXMub3B0aW9ucy50aXRsZSkpLHRoaXMuJGRpYWxvZz0zRHRoaXMuJGVsLmZp bmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiPQpvZHk9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwt Ym9keSIpLHRoaXMuJGZvb3Rlcj0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1mb289CnRlciIpLHRo aXMuJGJ1dHRvbnM9M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9ucyIpLHRoaXMuJGJhY2tkcm9wPTNE dGhpcy4kZWwuZj0KaW5kKCIubW9kYWwtYmFja2Ryb3AiKSx0aGlzLiRib2R5Lmh0bWwodGhpcy5v cHRpb25zLmJvZHkpLHRoaXMub3B0aW9ucy5iYWNrPQpkcm9wfHx0aGlzLiRiYWNrZHJvcC5yZW1v dmVDbGFzcygiaW4iKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dGhpcy5idXR0b249Ckxpc3Q9 M0R7fTt2YXIgbj0zRDA7JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUscil7 dmFyIGk9M0QiYnV0dD0Kb24tIituKys7dC4kYnV0dG9ucy5hcHBlbmQoJCgnPGJ1dHRvbiBpZD0z RCInK2krJyI+PC9idXR0b24+JykudGV4dChlKS5jbGljPQprKHIpKS5hcHBlbmQoIiAiKSx0LmJ1 dHRvbkxpc3RbZV09M0RpfSl9ZWxzZSB0aGlzLiRmb290ZXIuaGlkZSgpOyQodGhpcy5lbE09CmFp bikuYXBwZW5kKCQodGhpcy5lbCkpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2V2ZW50cyYmKCQoZG9j dW1lbnQpLm9uKCJrZXl1cD0KLnVpLW1vZGFsIixmdW5jdGlvbihlKXtlLmtleUNvZGU9M0Q9M0Qy NyYmdC5oaWRlKCl9KSx0aGlzLiRlbC5maW5kKCIubW9kYWwtPQpiYWNrZHJvcCIpLm9uKCJjbGlj ayIsZnVuY3Rpb24oKXt0LmhpZGUoKX0pKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic9 CjxkaXYgY2xhc3M9M0QidWktbW9kYWwgbW9kYWwiPjxkaXYgY2xhc3M9M0QibW9kYWwtYmFja2Ry b3AgZmFkZSBpbiIgc3R5bGU9Cj0zRCJ6LWluZGV4OiAtMTsiPjwvZGl2PjxkaXYgY2xhc3M9M0Qi bW9kYWwtZGlhbG9nIj48ZGl2IGNsYXNzPTNEIm1vZGFsLWNvbj0KdGVudCI+PGRpdiBjbGFzcz0z RCJtb2RhbC1oZWFkZXIiPjxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImNsb3NlIiBz PQp0eWxlPTNEImRpc3BsYXk6IG5vbmU7Ij4mdGltZXM7PC9idXR0b24+PGg0IGNsYXNzPTNEInRp dGxlIj4nK2UrIjwvaDQ+IisiPC89CmRpdj4iKyc8ZGl2IGNsYXNzPTNEIm1vZGFsLWJvZHkiIHN0 eWxlPTNEInBvc2l0aW9uOiBzdGF0aWM7Ij48L2Rpdj4nKyc8ZGl2ID0KY2xhc3M9M0QibW9kYWwt Zm9vdGVyIj4nKyc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsi PjwvPQpkaXY+JysiPC9kaXY+IisiPC9kaXYiKyI8L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntW aWV3OmV9fSksZnVuY3Rpb24oKXt2YXI9CiBlPTNEdGhpcyx0PTNEZS5fLG49M0R7fSxyPTNEQXJy YXkucHJvdG90eXBlLGk9M0RPYmplY3QucHJvdG90eXBlLHM9M0RGdW5jdD0KaW9uLnByb3RvdHlw ZSxvPTNEci5wdXNoLHU9M0RyLnNsaWNlLGE9M0RyLmNvbmNhdCxmPTNEaS50b1N0cmluZyxsPTNE aS5oYXNPPQp3blByb3BlcnR5LGM9M0RyLmZvckVhY2gsaD0zRHIubWFwLHA9M0RyLnJlZHVjZSxk PTNEci5yZWR1Y2VSaWdodCx2PTNEci5maWw9CnRlcixtPTNEci5ldmVyeSxnPTNEci5zb21lLHk9 M0RyLmluZGV4T2YsYj0zRHIubGFzdEluZGV4T2Ysdz0zREFycmF5LmlzQXJyYT0KeSxFPTNET2Jq ZWN0LmtleXMsUz0zRHMuYmluZCx4PTNEZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHgpcmV0 dXJuIGU7aWYoPQohKHRoaXMgaW5zdGFuY2VvZiB4KSlyZXR1cm4gbmV3IHgoZSk7dGhpcy5fd3Jh cHBlZD0zRGV9O3R5cGVvZiBleHBvcnRzIT0zRCI9CnVuZGVmaW5lZCI/KHR5cGVvZiBtb2R1bGUh PTNEInVuZGVmaW5lZCImJm1vZHVsZS5leHBvcnRzJiYoZXhwb3J0cz0zRG1vZHVsZT0KLmV4cG9y dHM9M0R4KSxleHBvcnRzLl89M0R4KTplLl89M0R4LHguVkVSU0lPTj0zRCIxLjQuNCI7dmFyIFQ9 M0R4LmVhY2g9M0R4PQouZm9yRWFjaD0zRGZ1bmN0aW9uKGUsdCxyKXtpZihlPTNEPTNEbnVsbCly ZXR1cm47aWYoYyYmZS5mb3JFYWNoPTNEPTNEPTNEYyk9CmUuZm9yRWFjaCh0LHIpO2Vsc2UgaWYo ZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGgpe2Zvcih2YXIgaT0zRDAscz0zRGUubGVuZz0KdGg7 aTxzO2krKylpZih0LmNhbGwocixlW2ldLGksZSk9M0Q9M0Q9M0RuKXJldHVybn1lbHNlIGZvcih2 YXIgbyBpbiBlKWlmKHguPQpoYXMoZSxvKSYmdC5jYWxsKHIsZVtvXSxvLGUpPTNEPTNEPTNEbily ZXR1cm59O3gubWFwPTNEeC5jb2xsZWN0PTNEZnVuY3Rpb249CihlLHQsbil7dmFyIHI9M0RbXTty ZXR1cm4gZT0zRD0zRG51bGw/cjpoJiZlLm1hcD0zRD0zRD0zRGg/ZS5tYXAodCxuKTooVChlLD0K ZnVuY3Rpb24oZSxpLHMpe3IucHVzaCh0LmNhbGwobixlLGkscykpfSkscil9O3ZhciBOPTNEIlJl ZHVjZSBvZiBlbXB0eSBhcnJhPQp5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSI7eC5yZWR1Y2U9M0R4 LmZvbGRsPTNEeC5pbmplY3Q9M0RmdW5jdGlvbihlLHQsbixyKXs9CnZhciBpPTNEYXJndW1lbnRz Lmxlbmd0aD4yO2U9M0Q9M0RudWxsJiYoZT0zRFtdKTtpZihwJiZlLnJlZHVjZT0zRD0zRD0zRHAp cj0KZXR1cm4gciYmKHQ9M0R4LmJpbmQodCxyKSksaT9lLnJlZHVjZSh0LG4pOmUucmVkdWNlKHQp O1QoZSxmdW5jdGlvbihlLHMsbyl7PQppP249M0R0LmNhbGwocixuLGUscyxvKToobj0zRGUsaT0z RCEwKX0pO2lmKCFpKXRocm93IG5ldyBUeXBlRXJyb3IoTik7cmV0dXI9Cm4gbn0seC5yZWR1Y2VS aWdodD0zRHguZm9sZHI9M0RmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRGFyZ3VtZW50cy5sZW5n dGg+Mj0KO2U9M0Q9M0RudWxsJiYoZT0zRFtdKTtpZihkJiZlLnJlZHVjZVJpZ2h0PTNEPTNEPTNE ZClyZXR1cm4gciYmKHQ9M0R4LmJpbmQoPQp0LHIpKSxpP2UucmVkdWNlUmlnaHQodCxuKTplLnJl ZHVjZVJpZ2h0KHQpO3ZhciBzPTNEZS5sZW5ndGg7aWYocyE9M0Q9M0Qrcyk9Cnt2YXIgbz0zRHgu a2V5cyhlKTtzPTNEby5sZW5ndGh9VChlLGZ1bmN0aW9uKHUsYSxmKXthPTNEbz9vWy0tc106LS1z LGk/bj0zRD0KdC5jYWxsKHIsbixlW2FdLGEsZik6KG49M0RlW2FdLGk9M0QhMCl9KTtpZighaSl0 aHJvdyBuZXcgVHlwZUVycm9yKE4pO3JldHVyPQpuIG59LHguZmluZD0zRHguZGV0ZWN0PTNEZnVu Y3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBDKGUsZnVuY3Rpb24oZSxpLHMpe2k9CmYodC5jYWxs KG4sZSxpLHMpKXJldHVybiByPTNEZSwhMH0pLHJ9LHguZmlsdGVyPTNEeC5zZWxlY3Q9M0RmdW5j dGlvbihlLHQsbj0KKXt2YXIgcj0zRFtdO3JldHVybiBlPTNEPTNEbnVsbD9yOnYmJmUuZmlsdGVy PTNEPTNEPTNEdj9lLmZpbHRlcih0LG4pOihUKGUsPQpmdW5jdGlvbihlLGkscyl7dC5jYWxsKG4s ZSxpLHMpJiZyLnB1c2goZSl9KSxyKX0seC5yZWplY3Q9M0RmdW5jdGlvbihlLHQsbik9CntyZXR1 cm4geC5maWx0ZXIoZSxmdW5jdGlvbihlLHIsaSl7cmV0dXJuIXQuY2FsbChuLGUscixpKX0sbil9 LHguZXZlcnk9M0R4Lj0KYWxsPTNEZnVuY3Rpb24oZSx0LHIpe3R8fCh0PTNEeC5pZGVudGl0eSk7 dmFyIGk9M0QhMDtyZXR1cm4gZT0zRD0zRG51bGw/aTptPQomJmUuZXZlcnk9M0Q9M0Q9M0RtP2Uu ZXZlcnkodCxyKTooVChlLGZ1bmN0aW9uKGUscyxvKXtpZighKGk9M0RpJiZ0LmNhbGwociw9CmUs cyxvKSkpcmV0dXJuIG59KSwhIWkpfTt2YXIgQz0zRHguc29tZT0zRHguYW55PTNEZnVuY3Rpb24o ZSx0LHIpe3R8fCh0PTNEeD0KLmlkZW50aXR5KTt2YXIgaT0zRCExO3JldHVybiBlPTNEPTNEbnVs bD9pOmcmJmUuc29tZT0zRD0zRD0zRGc/ZS5zb21lKHQscik6PQooVChlLGZ1bmN0aW9uKGUscyxv KXtpZihpfHwoaT0zRHQuY2FsbChyLGUscyxvKSkpcmV0dXJuIG59KSwhIWkpfTt4LmNvbnRhaW49 CnM9M0R4LmluY2x1ZGU9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlPTNEPTNEbnVsbD8hMTp5JiZl LmluZGV4T2Y9M0Q9M0Q9M0R5Pz0KZS5pbmRleE9mKHQpIT0zRC0xOkMoZSxmdW5jdGlvbihlKXty ZXR1cm4gZT0zRD0zRD0zRHR9KX0seC5pbnZva2U9M0RmdW5jdGlvPQpuKGUsdCl7dmFyIG49M0R1 LmNhbGwoYXJndW1lbnRzLDIpLHI9M0R4LmlzRnVuY3Rpb24odCk7cmV0dXJuIHgubWFwKGUsZnVu Y3Q9CmlvbihlKXtyZXR1cm4ocj90OmVbdF0pLmFwcGx5KGUsbil9KX0seC5wbHVjaz0zRGZ1bmN0 aW9uKGUsdCl7cmV0dXJuIHgubWFwKD0KZSxmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pfSx4Lndo ZXJlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiB4LmlzRW1wdHkodCk/PQpuP3ZvaWQgMDpbXTp4 W24/ImZpbmQiOiJmaWx0ZXIiXShlLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbiBpbiB0KWlmKHRbbl0h PTNEPQo9M0RlW25dKXJldHVybiExO3JldHVybiEwfSl9LHguZmluZFdoZXJlPTNEZnVuY3Rpb24o ZSx0KXtyZXR1cm4geC53aGVyZShlLHQ9CiwhMCl9LHgubWF4PTNEZnVuY3Rpb24oZSx0LG4pe2lm KCF0JiZ4LmlzQXJyYXkoZSkmJmVbMF09M0Q9M0Q9M0QrZVswXSYmZS5sZT0Kbmd0aDw2NTUzNSly ZXR1cm4gTWF0aC5tYXguYXBwbHkoTWF0aCxlKTtpZighdCYmeC5pc0VtcHR5KGUpKXJldHVybi1J bmZpbml0PQp5O3ZhciByPTNEe2NvbXB1dGVkOi1JbmZpbml0eSx2YWx1ZTotSW5maW5pdHl9O3Jl dHVybiBUKGUsZnVuY3Rpb24oZSxpLHMpe3Y9CmFyIG89M0R0P3QuY2FsbChuLGUsaSxzKTplO28+ PTNEci5jb21wdXRlZCYmKHI9M0R7dmFsdWU6ZSxjb21wdXRlZDpvfSl9KSxyLj0KdmFsdWV9LHgu bWluPTNEZnVuY3Rpb24oZSx0LG4pe2lmKCF0JiZ4LmlzQXJyYXkoZSkmJmVbMF09M0Q9M0Q9M0Qr ZVswXSYmZS5sPQplbmd0aDw2NTUzNSlyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxlKTtpZigh dCYmeC5pc0VtcHR5KGUpKXJldHVybiBJbmZpbmk9CnR5O3ZhciByPTNEe2NvbXB1dGVkOkluZmlu aXR5LHZhbHVlOkluZmluaXR5fTtyZXR1cm4gVChlLGZ1bmN0aW9uKGUsaSxzKXt2YT0KciBvPTNE dD90LmNhbGwobixlLGkscyk6ZTtvPHIuY29tcHV0ZWQmJihyPTNEe3ZhbHVlOmUsY29tcHV0ZWQ6 b30pfSksci52YWx1PQplfSx4LnNodWZmbGU9M0RmdW5jdGlvbihlKXt2YXIgdCxuPTNEMCxyPTNE W107cmV0dXJuIFQoZSxmdW5jdGlvbihlKXt0PTNEeC49CnJhbmRvbShuKyspLHJbbi0xXT0zRHJb dF0sclt0XT0zRGV9KSxyfTt2YXIgaz0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmlzRnVuYz0KdGlv bihlKT9lOmZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfX07eC5zb3J0Qnk9M0RmdW5jdGlvbihlLHQs bil7dmFyIHI9M0RrKHQpPQo7cmV0dXJuIHgucGx1Y2soeC5tYXAoZSxmdW5jdGlvbihlLHQsaSl7 cmV0dXJue3ZhbHVlOmUsaW5kZXg6dCxjcml0ZXJpYTpyLmM9CmFsbChuLGUsdCxpKX19KS5zb3J0 KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RlLmNyaXRlcmlhLHI9M0R0LmNyaXRlcmlhO2lmKG4hPQo9 M0Q9M0RyKXtpZihuPnJ8fG49M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIDE7aWYobjxyfHxyPTNEPTNE PTNEdm9pZCAwKXJldHVybi09CjF9cmV0dXJuIGUuaW5kZXg8dC5pbmRleD8tMToxfSksInZhbHVl Iil9O3ZhciBMPTNEZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Cj0zRHt9LHM9M0RrKHQ9M0Q9M0Ru dWxsP3guaWRlbnRpdHk6dCk7cmV0dXJuIFQoZSxmdW5jdGlvbih0LG8pe3ZhciB1PTNEcy5jYT0K bGwobix0LG8sZSk7cihpLHUsdCl9KSxpfTt4Lmdyb3VwQnk9M0RmdW5jdGlvbihlLHQsbil7cmV0 dXJuIEwoZSx0LG4sZnVuY3RpPQpvbihlLHQsbil7KHguaGFzKGUsdCk/ZVt0XTplW3RdPTNEW10p LnB1c2gobil9KX0seC5jb3VudEJ5PTNEZnVuY3Rpb24oZSx0LG49Cil7cmV0dXJuIEwoZSx0LG4s ZnVuY3Rpb24oZSx0KXt4LmhhcyhlLHQpfHwoZVt0XT0zRDApLGVbdF0rK30pfSx4LnNvcnRlZElu ZD0KZXg9M0RmdW5jdGlvbihlLHQsbixyKXtuPTNEbj0zRD0zRG51bGw/eC5pZGVudGl0eTprKG4p O3ZhciBpPTNEbi5jYWxsKHIsdCksPQpzPTNEMCxvPTNEZS5sZW5ndGg7d2hpbGUoczxvKXt2YXIg dT0zRHMrbz4+PjE7bi5jYWxsKHIsZVt1XSk8aT9zPTNEdSsxOm89M0Q9CnV9cmV0dXJuIHN9LHgu dG9BcnJheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlP3guaXNBcnJheShlKT91LmNhbGwoZSk6ZS5s ZW5ndD0KaD0zRD0zRD0zRCtlLmxlbmd0aD94Lm1hcChlLHguaWRlbnRpdHkpOngudmFsdWVzKGUp OltdfSx4LnNpemU9M0RmdW5jdGlvbihlPQope3JldHVybiBlPTNEPTNEbnVsbD8wOmUubGVuZ3Ro PTNEPTNEPTNEK2UubGVuZ3RoP2UubGVuZ3RoOngua2V5cyhlKS5sZW5ndGg9Cn0seC5maXJzdD0z RHguaGVhZD0zRHgudGFrZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0zRD0zRG51bGw/dm9p ZCAwOnQhPQo9M0RudWxsJiYhbj91LmNhbGwoZSwwLHQpOmVbMF19LHguaW5pdGlhbD0zRGZ1bmN0 aW9uKGUsdCxuKXtyZXR1cm4gdS5jYWxsKGU9CiwwLGUubGVuZ3RoLSh0PTNEPTNEbnVsbHx8bj8x OnQpKX0seC5sYXN0PTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNEPTNEbj0KdWxsP3ZvaWQg MDp0IT0zRG51bGwmJiFuP3UuY2FsbChlLE1hdGgubWF4KGUubGVuZ3RoLXQsMCkpOmVbZS5sZW5n dGgtMV19LHguPQpyZXN0PTNEeC50YWlsPTNEeC5kcm9wPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVy biB1LmNhbGwoZSx0PTNEPTNEbnVsbHx8bj8xOnQ9Cil9LHguY29tcGFjdD0zRGZ1bmN0aW9uKGUp e3JldHVybiB4LmZpbHRlcihlLHguaWRlbnRpdHkpfTt2YXIgQT0zRGZ1bmN0aW9uKD0KZSx0LG4p e3JldHVybiBUKGUsZnVuY3Rpb24oZSl7eC5pc0FycmF5KGUpP3Q/by5hcHBseShuLGUpOkEoZSx0 LG4pOm4ucHVzaChlPQopfSksbn07eC5mbGF0dGVuPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gQShl LHQsW10pfSx4LndpdGhvdXQ9M0RmdW5jdGlvbihlKXs9CnJldHVybiB4LmRpZmZlcmVuY2UoZSx1 LmNhbGwoYXJndW1lbnRzLDEpKX0seC51bmlxPTNEeC51bmlxdWU9M0RmdW5jdGlvbihlLD0KdCxu LHIpe3guaXNGdW5jdGlvbih0KSYmKHI9M0RuLG49M0R0LHQ9M0QhMSk7dmFyIGk9M0RuP3gubWFw KGUsbixyKTplLHM9M0RbPQpdLG89M0RbXTtyZXR1cm4gVChpLGZ1bmN0aW9uKG4scil7aWYodD8h cnx8b1tvLmxlbmd0aC0xXSE9M0Q9M0RuOiF4LmNvbnRhaW49CnMobyxuKSlvLnB1c2gobikscy5w dXNoKGVbcl0pfSksc30seC51bmlvbj0zRGZ1bmN0aW9uKCl7cmV0dXJuIHgudW5pcShhLmFwcD0K bHkocixhcmd1bWVudHMpKX0seC5pbnRlcnNlY3Rpb249M0RmdW5jdGlvbihlKXt2YXIgdD0zRHUu Y2FsbChhcmd1bWVudHMsMSk7PQpyZXR1cm4geC5maWx0ZXIoeC51bmlxKGUpLGZ1bmN0aW9uKGUp e3JldHVybiB4LmV2ZXJ5KHQsZnVuY3Rpb24odCl7cmV0dXJuIHg9Ci5pbmRleE9mKHQsZSk+PTNE MH0pfSl9LHguZGlmZmVyZW5jZT0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEYS5hcHBseShyLHUuY2Fs bD0KKGFyZ3VtZW50cywxKSk7cmV0dXJuIHguZmlsdGVyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIXgu Y29udGFpbnModCxlKX0pfSx4LnppPQpwPTNEZnVuY3Rpb24oKXt2YXIgZT0zRHUuY2FsbChhcmd1 bWVudHMpLHQ9M0R4Lm1heCh4LnBsdWNrKGUsImxlbmd0aCIpKSxuPQo9M0RuZXcgQXJyYXkodCk7 Zm9yKHZhciByPTNEMDtyPHQ7cisrKW5bcl09M0R4LnBsdWNrKGUsIiIrcik7cmV0dXJuIG59LHgu dW49CnppcD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEW107cmV0dXJuIHguZWFjaChlLGZ1bmN0aW9u KGUsbil7eC5lYWNoKGUsZnVuY3Rpbz0KbihlLHIpe3QubGVuZ3RoPD0zRHImJih0W3JdPTNEW10p LHRbcl1bbl09M0RlfSl9KSx0fSx4Lm9iamVjdD0zRGZ1bmN0aW9uKGUsPQp0KXtpZihlPTNEPTNE bnVsbClyZXR1cm57fTt2YXIgbj0zRHt9O2Zvcih2YXIgcj0zRDAsaT0zRGUubGVuZ3RoO3I8aTty KyspdD89Cm5bZVtyXV09M0R0W3JdOm5bZVtyXVswXV09M0RlW3JdWzFdO3JldHVybiBufSx4Lmlu ZGV4T2Y9M0RmdW5jdGlvbihlLHQsbil7aT0KZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0z RDAsaT0zRGUubGVuZ3RoO2lmKG4pe2lmKHR5cGVvZiBuIT0zRCJudW1iZXIiPQopcmV0dXJuIHI9 M0R4LnNvcnRlZEluZGV4KGUsdCksZVtyXT0zRD0zRD0zRHQ/cjotMTtyPTNEbjwwP01hdGgubWF4 KDAsaStuKTo9Cm59aWYoeSYmZS5pbmRleE9mPTNEPTNEPTNEeSlyZXR1cm4gZS5pbmRleE9mKHQs bik7Zm9yKDtyPGk7cisrKWlmKGVbcl09M0Q9Cj0zRD0zRHQpcmV0dXJuIHI7cmV0dXJuLTF9LHgu bGFzdEluZGV4T2Y9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcj0KZXR1cm4tMTt2 YXIgcj0zRG4hPTNEbnVsbDtpZihiJiZlLmxhc3RJbmRleE9mPTNEPTNEPTNEYilyZXR1cm4gcj9l Lmxhc3RJbmRlPQp4T2YodCxuKTplLmxhc3RJbmRleE9mKHQpO3ZhciBpPTNEcj9uOmUubGVuZ3Ro O3doaWxlKGktLSlpZihlW2ldPTNEPTNEPTNEdCk9CnJldHVybiBpO3JldHVybi0xfSx4LnJhbmdl PTNEZnVuY3Rpb24oZSx0LG4pe2FyZ3VtZW50cy5sZW5ndGg8PTNEMSYmKHQ9M0RlfD0KfDAsZT0z RDApLG49M0Rhcmd1bWVudHNbMl18fDE7dmFyIHI9M0RNYXRoLm1heChNYXRoLmNlaWwoKHQtZSkv biksMCksaT0zRDAsPQpzPTNEbmV3IEFycmF5KHIpO3doaWxlKGk8cilzW2krK109M0RlLGUrPTNE bjtyZXR1cm4gc307dmFyIE89M0RmdW5jdGlvbigpe309Cjt4LmJpbmQ9M0RmdW5jdGlvbihlLHQp e3ZhciBuLHI7aWYoZS5iaW5kPTNEPTNEPTNEUyYmUylyZXR1cm4gUy5hcHBseShlLHUuYz0KYWxs KGFyZ3VtZW50cywxKSk7aWYoIXguaXNGdW5jdGlvbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yO3Jl dHVybiBuPTNEdS5jYWxsPQooYXJndW1lbnRzLDIpLHI9M0RmdW5jdGlvbigpe2lmKHRoaXMgaW5z dGFuY2VvZiByKXtPLnByb3RvdHlwZT0zRGUucHJvdG90eXA9CmU7dmFyIGk9M0RuZXcgTztPLnBy b3RvdHlwZT0zRG51bGw7dmFyIHM9M0RlLmFwcGx5KGksbi5jb25jYXQodS5jYWxsKGFyZ3VtZT0K bnRzKSkpO3JldHVybiBPYmplY3Qocyk9M0Q9M0Q9M0RzP3M6aX1yZXR1cm4gZS5hcHBseSh0LG4u Y29uY2F0KHUuY2FsbChhcmd1PQptZW50cykpKX19LHgucGFydGlhbD0zRGZ1bmN0aW9uKGUpe3Zh ciB0PTNEdS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Q9Cmlvbigpe3JldHVybiBlLmFw cGx5KHRoaXMsdC5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX19LHguYmluZEFsbD0zRGZ1bmN0 aT0Kb24oZSl7dmFyIHQ9M0R1LmNhbGwoYXJndW1lbnRzLDEpO2lmKHQubGVuZ3RoPTNEPTNEPTNE MCl0aHJvdyBuZXcgRXJyb3IoImJpPQpuZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1l cyIpO3JldHVybiBUKHQsZnVuY3Rpb24odCl7ZVt0XT0zRHguYmluZCg9CmVbdF0sZSl9KSxlfSx4 Lm1lbW9pemU9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEe307cmV0dXJuIHR8fCh0PTNEeC5pZGVu dGl0eT0KKSxmdW5jdGlvbigpe3ZhciByPTNEdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJu IHguaGFzKG4scik/bltyXTpuW3JdPTNEPQplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHguZGVs YXk9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEdS5jYWxsKGFyZ3VtZW50cyw9CjIpO3JldHVybiBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxuKX0sdCl9LHguZGVmZXI9 M0RmdW5jdD0KaW9uKGUpe3JldHVybiB4LmRlbGF5LmFwcGx5KHgsW2UsMV0uY29uY2F0KHUuY2Fs bChhcmd1bWVudHMsMSkpKX0seC50aHJvdHRsPQplPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGks cyxvLHU9M0QwLGE9M0RmdW5jdGlvbigpe3U9M0RuZXcgRGF0ZSxzPTNEbnVsbCw9Cm89M0RlLmFw cGx5KHIsaSl9O3JldHVybiBmdW5jdGlvbigpe3ZhciBmPTNEbmV3IERhdGU7IXUmJm49M0Q9M0Q9 M0QhMSYmKHU9Cj0zRGYpO3ZhciBsPTNEdC0oZi11KTtyZXR1cm4gcj0zRHRoaXMsaT0zRGFyZ3Vt ZW50cyxsPD0zRDA/KGNsZWFyVGltZW91dChzKT0KLHM9M0RudWxsLHU9M0RmLG89M0RlLmFwcGx5 KHIsaSkpOnN8fChzPTNEc2V0VGltZW91dChhLGwpKSxvfX0seC5kZWJvdW5jZT0KPTNEZnVuY3Rp b24oZSx0LG4pe3ZhciByLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9M0R0aGlzLG89M0Rhcmd1 bWVudHMsdT0KPTNEZnVuY3Rpb24oKXtyPTNEbnVsbCxufHwoaT0zRGUuYXBwbHkocyxvKSl9LGE9 M0RuJiYhcjtyZXR1cm4gY2xlYXJUaW1lb3V0PQoocikscj0zRHNldFRpbWVvdXQodSx0KSxhJiYo aT0zRGUuYXBwbHkocyxvKSksaX19LHgub25jZT0zRGZ1bmN0aW9uKGUpe3ZhciA9CnQ9M0QhMSxu O3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0P246KHQ9M0QhMCxuPTNEZS5hcHBseSh0aGlzLGFy Z3VtZW50cyksZT0KPTNEbnVsbCxuKX19LHgud3JhcD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1 bmN0aW9uKCl7dmFyIG49M0RbZV07cmV0dXJuIG8uPQphcHBseShuLGFyZ3VtZW50cyksdC5hcHBs eSh0aGlzLG4pfX0seC5jb21wb3NlPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGFyZ3VtZW49CnRzO3Jl dHVybiBmdW5jdGlvbigpe3ZhciB0PTNEYXJndW1lbnRzO2Zvcih2YXIgbj0zRGUubGVuZ3RoLTE7 bj49M0QwO24tLSl0PQo9M0RbZVtuXS5hcHBseSh0aGlzLHQpXTtyZXR1cm4gdFswXX19LHguYWZ0 ZXI9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlPD0zRDA9Cj90KCk6ZnVuY3Rpb24oKXtpZigtLWU8 MSlyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx4LmtleXM9M0RFfHxmdW5jdD0KaW9u KGUpe2lmKGUhPTNEPTNET2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgb2Jq ZWN0Iik7dmFyIHQ9M0RbPQpdO2Zvcih2YXIgbiBpbiBlKXguaGFzKGUsbikmJnQucHVzaChuKTty ZXR1cm4gdH0seC52YWx1ZXM9M0RmdW5jdGlvbihlKXt2YXI9CiB0PTNEW107Zm9yKHZhciBuIGlu IGUpeC5oYXMoZSxuKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fSx4LnBhaXJzPTNEZnVuY3Rpbz0K bihlKXt2YXIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXguaGFzKGUsbikmJnQucHVzaChbbixlW25d XSk7cmV0dXJuIHR9LHguaW52PQplcnQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHt9O2Zvcih2YXIg biBpbiBlKXguaGFzKGUsbikmJih0W2Vbbl1dPTNEbik7cmV0dXI9Cm4gdH0seC5mdW5jdGlvbnM9 M0R4Lm1ldGhvZHM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXguaXNG dT0KbmN0aW9uKGVbbl0pJiZ0LnB1c2gobik7cmV0dXJuIHQuc29ydCgpfSx4LmV4dGVuZD0zRGZ1 bmN0aW9uKGUpe3JldHVybiBUKHUuPQpjYWxsKGFyZ3VtZW50cywxKSxmdW5jdGlvbih0KXtpZih0 KWZvcih2YXIgbiBpbiB0KWVbbl09M0R0W25dfSksZX0seC5waWNrPQo9M0RmdW5jdGlvbihlKXt2 YXIgdD0zRHt9LG49M0RhLmFwcGx5KHIsdS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIFQobixm dW49CmN0aW9uKG4pe24gaW4gZSYmKHRbbl09M0RlW25dKX0pLHR9LHgub21pdD0zRGZ1bmN0aW9u KGUpe3ZhciB0PTNEe30sbj0zRGEuYT0KcHBseShyLHUuY2FsbChhcmd1bWVudHMsMSkpO2Zvcih2 YXIgaSBpbiBlKXguY29udGFpbnMobixpKXx8KHRbaV09M0RlW2ldKTtyPQpldHVybiB0fSx4LmRl ZmF1bHRzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIFQodS5jYWxsKGFyZ3VtZW50cywxKSxmdW5jdGlv bih0KXs9CmlmKHQpZm9yKHZhciBuIGluIHQpZVtuXT0zRD0zRD0zRHZvaWQgMCYmKGVbbl09M0R0 W25dKX0pLGV9LHguY2xvbmU9M0RmdW5jdD0KaW9uKGUpe3JldHVybiB4LmlzT2JqZWN0KGUpP3gu aXNBcnJheShlKT9lLnNsaWNlKCk6eC5leHRlbmQoe30sZSk6ZX0seC50YXA9Cj0zRGZ1bmN0aW9u KGUsdCl7cmV0dXJuIHQoZSksZX07dmFyIE09M0RmdW5jdGlvbihlLHQsbixyKXtpZihlPTNEPTNE PTNEdClyZT0KdHVybiBlIT0zRD0zRDB8fDEvZT0zRD0zRDEvdDtpZihlPTNEPTNEbnVsbHx8dD0z RD0zRG51bGwpcmV0dXJuIGU9M0Q9M0Q9M0R0PQo7ZSBpbnN0YW5jZW9mIHgmJihlPTNEZS5fd3Jh cHBlZCksdCBpbnN0YW5jZW9mIHgmJih0PTNEdC5fd3JhcHBlZCk7dmFyIGk9M0Q9CmYuY2FsbChl KTtpZihpIT0zRGYuY2FsbCh0KSlyZXR1cm4hMTtzd2l0Y2goaSl7Y2FzZSJbb2JqZWN0IFN0cmlu Z10iOnJldHVybj0KIGU9M0Q9M0RTdHJpbmcodCk7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVy biBlIT0zRCtlP3QhPTNEK3Q6ZT0zRD0zRDA/MS9lPQo9M0Q9M0QxL3Q6ZT0zRD0zRCt0O2Nhc2Ui W29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpyZXR1cm4rZT0zRD0KPTNEK3Q7 Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBlLnNvdXJjZT0zRD0zRHQuc291cmNlJiZlLmds b2JhbD0zRD0zRHQuPQpnbG9iYWwmJmUubXVsdGlsaW5lPTNEPTNEdC5tdWx0aWxpbmUmJmUuaWdu b3JlQ2FzZT0zRD0zRHQuaWdub3JlQ2FzZX1pZih0eXA9CmVvZiBlIT0zRCJvYmplY3QifHx0eXBl b2YgdCE9M0Qib2JqZWN0IilyZXR1cm4hMTt2YXIgcz0zRG4ubGVuZ3RoO3doaWxlKHMtLT0KKWlm KG5bc109M0Q9M0RlKXJldHVybiByW3NdPTNEPTNEdDtuLnB1c2goZSksci5wdXNoKHQpO3ZhciBv PTNEMCx1PTNEITA7aWYoPQppPTNEPTNEIltvYmplY3QgQXJyYXldIil7bz0zRGUubGVuZ3RoLHU9 M0RvPTNEPTNEdC5sZW5ndGg7aWYodSl3aGlsZShvLS0paWY9CighKHU9M0RNKGVbb10sdFtvXSxu LHIpKSlicmVha31lbHNle3ZhciBhPTNEZS5jb25zdHJ1Y3RvcixsPTNEdC5jb25zdHJ1Y3Rvcj0K O2lmKGEhPTNEPTNEbCYmISh4LmlzRnVuY3Rpb24oYSkmJmEgaW5zdGFuY2VvZiBhJiZ4LmlzRnVu Y3Rpb24obCkmJmwgaW5zdGFuPQpjZW9mIGwpKXJldHVybiExO2Zvcih2YXIgYyBpbiBlKWlmKHgu aGFzKGUsYykpe28rKztpZighKHU9M0R4Lmhhcyh0LGMpJiZNKGU9CltjXSx0W2NdLG4scikpKWJy ZWFrfWlmKHUpe2ZvcihjIGluIHQpaWYoeC5oYXModCxjKSYmIShvLS0pKWJyZWFrO3U9M0Qhb319 cj0KZXR1cm4gbi5wb3AoKSxyLnBvcCgpLHV9O3guaXNFcXVhbD0zRGZ1bmN0aW9uKGUsdCl7cmV0 dXJuIE0oZSx0LFtdLFtdKX0seC5pPQpzRW1wdHk9M0RmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVs bClyZXR1cm4hMDtpZih4LmlzQXJyYXkoZSl8fHguaXNTdHJpbmcoZSk9CilyZXR1cm4gZS5sZW5n dGg9M0Q9M0Q9M0QwO2Zvcih2YXIgdCBpbiBlKWlmKHguaGFzKGUsdCkpcmV0dXJuITE7cmV0dXJu ITB9LD0KeC5pc0VsZW1lbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4hIWUmJmUubm9kZVR5cGU9M0Q9 M0Q9M0QxfSx4LmlzQXJyYXk9M0R3fHxmPQp1bmN0aW9uKGUpe3JldHVybiBmLmNhbGwoZSk9M0Q9 M0QiW29iamVjdCBBcnJheV0ifSx4LmlzT2JqZWN0PTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gZT0z RD0zRD0zRE9iamVjdChlKX0sVChbIkFyZ3VtZW50cyIsIkZ1bmN0aW9uIiwiU3RyaW5nIiwiTnVt YmVyIiwiRD0KYXRlIiwiUmVnRXhwIl0sZnVuY3Rpb24oZSl7eFsiaXMiK2VdPTNEZnVuY3Rpb24o dCl7cmV0dXJuIGYuY2FsbCh0KT0zRD0zRCJbPQpvYmplY3QgIitlKyJdIn19KSx4LmlzQXJndW1l bnRzKGFyZ3VtZW50cyl8fCh4LmlzQXJndW1lbnRzPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4hIWUm JiEheC5oYXMoZSwiY2FsbGVlIil9KSx0eXBlb2YgLy4vIT0zRCJmdW5jdGlvbiImJih4LmlzRnVu Y3Rpb249M0RmdT0KbmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiJ9KSx4 LmlzRmluaXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogaXNGaW5pdGUoZSkmJiFpc05hTihwYXJz ZUZsb2F0KGUpKX0seC5pc05hTj0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmlzTnVtYmU9CnIoZSkm JmUhPTNEK2V9LHguaXNCb29sZWFuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0Q9M0Q9M0QhMHx8 ZT0zRD0zRD0zRCExfD0KfGYuY2FsbChlKT0zRD0zRCJbb2JqZWN0IEJvb2xlYW5dIn0seC5pc051 bGw9M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0zRD0zRD0KPTNEbnVsbH0seC5pc1VuZGVmaW5lZD0z RGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEPTNEdm9pZCAwfSx4Lmhhcz0zRGZ1bmN0PQppb24o ZSx0KXtyZXR1cm4gbC5jYWxsKGUsdCl9LHgubm9Db25mbGljdD0zRGZ1bmN0aW9uKCl7cmV0dXJu IGUuXz0zRHQsdGhpc309Cix4LmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHgudGlt ZXM9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RBcnJheT0KKGUpO2Zvcih2YXIgaT0zRDA7aTxl O2krKylyW2ldPTNEdC5jYWxsKG4saSk7cmV0dXJuIHJ9LHgucmFuZG9tPTNEZnVuY3Rpb24oPQpl LHQpe3JldHVybiB0PTNEPTNEbnVsbCYmKHQ9M0RlLGU9M0QwKSxlK01hdGguZmxvb3IoTWF0aC5y YW5kb20oKSoodC1lKzEpKX09Cjt2YXIgXz0zRHtlc2NhcGU6eyImIjoiJmFtcDsiLCI8IjoiJmx0 OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNz0KOyIsIi8iOiImI3gyRjsifX07 Xy51bmVzY2FwZT0zRHguaW52ZXJ0KF8uZXNjYXBlKTt2YXIgRD0zRHtlc2NhcGU6bmV3IFJlZ0V4 PQpwKCJbIit4LmtleXMoXy5lc2NhcGUpLmpvaW4oIiIpKyJdIiwiZyIpLHVuZXNjYXBlOm5ldyBS ZWdFeHAoIigiK3gua2V5cyhfLnU9Cm5lc2NhcGUpLmpvaW4oInwiKSsiKSIsImciKX07eC5lYWNo KFsiZXNjYXBlIiwidW5lc2NhcGUiXSxmdW5jdGlvbihlKXt4W2VdPQo9M0RmdW5jdGlvbih0KXty ZXR1cm4gdD0zRD0zRG51bGw/IiI6KCIiK3QpLnJlcGxhY2UoRFtlXSxmdW5jdGlvbih0KXtyZXR1 cm49CiBfW2VdW3RdfSl9fSkseC5yZXN1bHQ9M0RmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0RudWxs KXJldHVybiB2b2lkIDA7dmFyIG49Cj0zRGVbdF07cmV0dXJuIHguaXNGdW5jdGlvbihuKT9uLmNh bGwoZSk6bn0seC5taXhpbj0zRGZ1bmN0aW9uKGUpe1QoeC5mdW5jdD0KaW9ucyhlKSxmdW5jdGlv bih0KXt2YXIgbj0zRHhbdF09M0RlW3RdO3gucHJvdG90eXBlW3RdPTNEZnVuY3Rpb24oKXt2YXIg ZT0KPTNEW3RoaXMuX3dyYXBwZWRdO3JldHVybiBvLmFwcGx5KGUsYXJndW1lbnRzKSxGLmNhbGwo dGhpcyxuLmFwcGx5KHgsZSkpfX0pPQp9O3ZhciBQPTNEMDt4LnVuaXF1ZUlkPTNEZnVuY3Rpb24o ZSl7dmFyIHQ9M0QrK1ArIiI7cmV0dXJuIGU/ZSt0OnR9LHgudGVtcGw9CmF0ZVNldHRpbmdzPTNE e2V2YWx1YXRlOi88JShbXHNcU10rPyklPi9nLGludGVycG9sYXRlOi88JT0zRChbXHNcU10rPykl Pi9nLD0KZXNjYXBlOi88JS0oW1xzXFNdKz8pJT4vZ307dmFyIEg9M0QvKC4pXi8sQj0zRHsiJyI6 IiciLCJcXCI6IlxcIiwiXHIiOiJyIiwiPQpcbiI6Im4iLCIJIjoidCIsIlx1MjAyOCI6InUyMDI4 IiwiXHUyMDI5IjoidTIwMjkifSxqPTNEL1xcfCd8XHJ8XG58XHR8XHUyMDI9Cjh8XHUyMDI5L2c7 eC50ZW1wbGF0ZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtuPTNEeC5kZWZhdWx0cyh7fSxuLHgu dGVtcGxhdD0KZVNldHRpbmdzKTt2YXIgaT0zRG5ldyBSZWdFeHAoWyhuLmVzY2FwZXx8SCkuc291 cmNlLChuLmludGVycG9sYXRlfHxIKS5zb3VyPQpjZSwobi5ldmFsdWF0ZXx8SCkuc291cmNlXS5q b2luKCJ8IikrInwkIiwiZyIpLHM9M0QwLG89M0QiX19wKz0zRCciO2UucmVwbGE9CmNlKGksZnVu Y3Rpb24odCxuLHIsaSx1KXtyZXR1cm4gbys9M0RlLnNsaWNlKHMsdSkucmVwbGFjZShqLGZ1bmN0 aW9uKGUpe3JldD0KdXJuIlxcIitCW2VdfSksbiYmKG8rPTNEIicrXG4oKF9fdD0zRCgiK24rIikp PTNEPTNEbnVsbD8nJzpfLmVzY2FwZShfX3QpKStcPQpuJyIpLHImJihvKz0zRCInK1xuKChfX3Q9 M0QoIityKyIpKT0zRD0zRG51bGw/Jyc6X190KStcbiciKSxpJiYobys9M0QiJztcbiI9CitpKyJc bl9fcCs9M0QnIikscz0zRHUrdC5sZW5ndGgsdH0pLG8rPTNEIic7XG4iLG4udmFyaWFibGV8fChv PTNEIndpdGgob2JqfD0KfHt9KXtcbiIrbysifVxuIiksbz0zRCJ2YXIgX190LF9fcD0zRCcnLF9f aj0zREFycmF5LnByb3RvdHlwZS5qb2luLHByaW50PTNEPQpmdW5jdGlvbigpe19fcCs9M0RfX2ou Y2FsbChhcmd1bWVudHMsJycpO307XG4iK28rInJldHVybiBfX3A7XG4iO3RyeXtyPTNEbmU9Cncg RnVuY3Rpb24obi52YXJpYWJsZXx8Im9iaiIsIl8iLG8pfWNhdGNoKHUpe3Rocm93IHUuc291cmNl PTNEbyx1fWlmKHQpcmV0dT0Kcm4gcih0LHgpO3ZhciBhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHIu Y2FsbCh0aGlzLGUseCl9O3JldHVybiBhLnNvdXJjZT0zRCJmPQp1bmN0aW9uKCIrKG4udmFyaWFi bGV8fCJvYmoiKSsiKXtcbiIrbysifSIsYX0seC5jaGFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiA9 CngoZSkuY2hhaW4oKX07dmFyIEY9M0RmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2hhaW4/eChl KS5jaGFpbigpOmV9O3gubWl4aT0Kbih4KSxUKFsicG9wIiwicHVzaCIsInJldmVyc2UiLCJzaGlm dCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24oPQplKXt2YXIgdD0zRHJbZV07 eC5wcm90b3R5cGVbZV09M0RmdW5jdGlvbigpe3ZhciBuPTNEdGhpcy5fd3JhcHBlZDtyZXR1cm4g dC49CmFwcGx5KG4sYXJndW1lbnRzKSwoZT0zRD0zRCJzaGlmdCJ8fGU9M0Q9M0Qic3BsaWNlIikm Jm4ubGVuZ3RoPTNEPTNEPTNEMCYmZD0KZWxldGUgblswXSxGLmNhbGwodGhpcyxuKX19KSxUKFsi Y29uY2F0Iiwiam9pbiIsInNsaWNlIl0sZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRHJbZV07eC5wcm90 b3R5cGVbZV09M0RmdW5jdGlvbigpe3JldHVybiBGLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMuX3dy YXBwZT0KZCxhcmd1bWVudHMpKX19KSx4LmV4dGVuZCh4LnByb3RvdHlwZSx7Y2hhaW46ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fY2hhaW49Cj0zRCEwLHRoaXN9LHZhbHVlOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3dyYXBwZWR9fSl9LmNhbGwodGhpcyksZGVmaW5lKCJsaT0KYnMvdW5kZXJzY29y ZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsbjtyZXR1cm4gdHx8ZS5ffX0o dGhpcykpPQosZGVmaW5lKCJ1dGlscy91dGlscyIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlv bihlKXtmdW5jdGlvbiB0KGUsdCxyKXtuKCI9CkdFVCIsZSx7fSx0LHIpfWZ1bmN0aW9uIG4oZSx0 LG4scixpKXtpZihlPTNEPTNEIkdFVCJ8fGU9M0Q9M0QiREVMRVRFIil0LmluZD0KZXhPZigiPyIp PTNEPTNELTE/dCs9M0QiPyI6dCs9M0QiJiIsdCs9M0QkLnBhcmFtKG4pO3ZhciBzPTNEbmV3IFhN TEh0dHBSZXF1PQplc3Q7cy5vcGVuKGUsdCwhMCkscy5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQi LCJhcHBsaWNhdGlvbi9qc29uIikscy5zZXRSZXE9CnVlc3RIZWFkZXIoIkNhY2hlLUNvbnRyb2wi LCJuby1jYWNoZSIpLHMuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aD0KIiwiWE1M SHR0cFJlcXVlc3QiKSxzLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0 aW9uL2pzb24iKSxzPQoub25sb2FkZW5kPTNEZnVuY3Rpb24oKXt2YXIgZT0zRHMuc3RhdHVzO3Ry eXtyZXNwb25zZT0zRGpRdWVyeS5wYXJzZUpTT04ocy49CnJlc3BvbnNlVGV4dCl9Y2F0Y2godCl7 cmVzcG9uc2U9M0RzLnJlc3BvbnNlVGV4dH1lPTNEPTNEMjAwP3ImJnIocmVzcG9uc2UpOj0KaSYm aShyZXNwb25zZSl9LGU9M0Q9M0QiR0VUInx8ZT0zRD0zRCJERUxFVEUiP3Muc2VuZCgpOnMuc2Vu ZChKU09OLnN0cmluZ2lmPQp5KG4pKX1mdW5jdGlvbiByKGUsdCl7dmFyIG49M0QkKCc8ZGl2IGNs YXNzPTNEIicrZSsnIj48L2Rpdj4nKTtuLmFwcGVuZFRvKCI9CjplcSgwKSIpO3ZhciByPTNEbi5j c3ModCk7cmV0dXJuIG4ucmVtb3ZlKCkscn1mdW5jdGlvbiBpKGUpeyQoJ2xpbmtbaHJlZl49Cj0z RCInK2UrJyJdJykubGVuZ3RofHwkKCc8bGluayBocmVmPTNEIicrZ2FsYXh5X2NvbmZpZy5yb290 K2UrJyIgcmVsPTNEInN0eT0KbGVzaGVldCI+JykuYXBwZW5kVG8oImhlYWQiKX1mdW5jdGlvbiBz KHQsbil7cmV0dXJuIHQ/ZS5kZWZhdWx0cyh0LG4pOm59ZnVuPQpjdGlvbiBvKGUsdCl7dmFyIG49 M0QiIjtpZihlPj0zRDFlMTEpZS89M0QxZTExLG49M0QiVEIiO2Vsc2UgaWYoZT49M0QxZTgpZS89 Cj0zRDFlOCxuPTNEIkdCIjtlbHNlIGlmKGU+PTNEMWU1KWUvPTNEMWU1LG49M0QiTUIiO2Vsc2Ug aWYoZT49M0QxMDApZS89M0QxMD0KMCxuPTNEIktCIjtlbHNle2lmKCEoZT4wKSlyZXR1cm4iPHN0 cm9uZz4tPC9zdHJvbmc+IjtlKj0zRDEwLG49M0QiYiJ9dmFyIHI9Cj0zRE1hdGgucm91bmQoZSkv MTA7cmV0dXJuIHQ/cisiICIrbjoiPHN0cm9uZz4iK3IrIjwvc3Ryb25nPiAiK259ZnVuY3Rpb24g dT0KKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIGEo ZSl7dmFyIHQ9M0QkKCI8cD48L3A+PQoiKTtyZXR1cm4gdC5hcHBlbmQoZSksdH1mdW5jdGlvbiBm KCl7dmFyIGU9M0RuZXcgRGF0ZSx0PTNEKGUuZ2V0SG91cnMoKTwxMD89CiIwIjoiIikrZS5nZXRI b3VycygpLG49M0QoZS5nZXRNaW51dGVzKCk8MTA/IjAiOiIiKStlLmdldE1pbnV0ZXMoKSxyPTNE ZS5nZT0KdERhdGUoKSsiLyIrKGUuZ2V0TW9udGgoKSsxKSsiLyIrZS5nZXRGdWxsWWVhcigpKyIs ICIrdCsiOiIrbjtyZXR1cm4gcn1yZXR1PQpybntjc3NMb2FkRmlsZTppLGNzc0dldEF0dHJpYnV0 ZTpyLGdldDp0LG1lcmdlOnMsYnl0ZXNUb1N0cmluZzpvLHV1aWQ6dSx0aW09CmU6Zix3cmFwOmEs cmVxdWVzdDpufX0pLGRlZmluZSgibXZjL3VpL3VpLXBvcnRsZXQiLFsidXRpbHMvdXRpbHMiXSxm dW5jdGlvbj0KKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe3Zpc2libGU6ITEsb3B0 aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGljb246PQoiIixidXR0b25zOm51bGwsYm9keTpudWxsLHNj cm9sbGFibGU6ITAsbm9wYWRkaW5nOiExLG9wZXJhdGlvbnM6bnVsbCxwbGFjZW09CmVudDoiYm90 dG9tIn0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6bnVsbCwkYnV0dG9uczpudWxsLCRvcGVyYXRpb25z Om51bGwsaW5pdD0KaWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0 aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsPQplbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlz Lm9wdGlvbnMpKSx0aGlzLiRjb250ZW50PTNEdGhpcy4kZWwuZmluZCgiI2NvbnRlbnQ9CiIpLHRo aXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZCgiI3BvcnRsZXQtaGVhZGVyLXRleHQiKTt2YXIgbj0z RHRoaXMuJGVsLmZpbj0KZCgiI3BvcnRsZXQtY29udGVudCIpO3RoaXMub3B0aW9ucy5zY3JvbGxh YmxlP24uYWRkQ2xhc3MoInNjcm9sbCIpOnRoaXMub3B0PQppb25zLnRpdGxlP24uYWRkQ2xhc3Mo Im5vLXNjcm9sbCIpOm4uYWRkQ2xhc3MoIm5vLXNjcm9sbC1uby10aXRsZSIpLHRoaXMub3A9CnRp b25zLm5vcGFkZGluZyYmKG4uY3NzKCJwYWRkaW5nIiwiMHB4IiksdGhpcy4kY29udGVudC5jc3Mo InBhZGRpbmciLCIwcHgiKT0KKSx0aGlzLiRidXR0b25zPTNEJCh0aGlzLmVsKS5maW5kKCIjYnV0 dG9ucyIpO2lmKHRoaXMub3B0aW9ucy5idXR0b25zKXt2YXIgPQpyPTNEdGhpczskLmVhY2godGhp cy5vcHRpb25zLmJ1dHRvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksci4kYnU9 CnR0b25zLmFwcGVuZCh0LiRlbCl9KX1lbHNlIHRoaXMuJGJ1dHRvbnMucmVtb3ZlKCk7dGhpcy4k b3BlcmF0aW9ucz0zRCQodGhpcz0KLmVsKS5maW5kKCIjb3BlcmF0aW9ucyIpO2lmKHRoaXMub3B0 aW9ucy5vcGVyYXRpb25zKXt2YXIgcj0zRHRoaXM7JC5lYWNoKHRoPQppcy5vcHRpb25zLm9wZXJh dGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksci4kb3BlcmF0aW9ucy5hcHBl bmQ9Cih0LiRlbCl9KX10aGlzLm9wdGlvbnMuYm9keSYmdGhpcy5hcHBlbmQodGhpcy5vcHRpb25z LmJvZHkpfSxhcHBlbmQ6ZnVuY3Rpbz0Kbih0KXt0aGlzLiRjb250ZW50LmFwcGVuZChlLndyYXAo dCkpfSxjb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRlPQpudH0sc2hvdzpmdW5j dGlvbigpe3RoaXMuJGVsLmZhZGVJbigiZmFzdCIpLHRoaXMudmlzaWJsZT0zRCEwfSxoaWRlOmZ1 bmN0aW89Cm4oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGVu YWJsZUJ1dHRvbjpmdW5jdGlvbihlKXt0aD0KaXMuJGJ1dHRvbnMuZmluZCgiIyIrZSkucHJvcCgi ZGlzYWJsZWQiLCExKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdGlvbihlKXt0aGlzPQouJGJ1dHRvbnMu ZmluZCgiIyIrZSkucHJvcCgiZGlzYWJsZWQiLCEwKX0saGlkZU9wZXJhdGlvbjpmdW5jdGlvbihl KXt0aGlzLiQ9Cm9wZXJhdGlvbnMuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1 bmN0aW9uKGUpe3RoaXMuJG9wZXJhdGlvbnMuZj0KaW5kKCIjIitlKS5zaG93KCl9LHNldE9wZXJh dGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPTNEdGhpcy4kb3BlcmF0aW9ucy5maW5kPQooIiMiK2Up O24ub2ZmKCJjbGljayIpLG4ub24oImNsaWNrIix0KX0sdGl0bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9 M0R0aGlzLiR0aXQ9CmxlO3JldHVybiBlJiZ0Lmh0bWwoZSksdC5odG1sKCl9LF90ZW1wbGF0ZTpm dW5jdGlvbihlKXt2YXIgdD0zRCc8ZGl2IGNsYXNzPQo9M0QidWktcG9ydGxldCI+JztyZXR1cm4g ZS50aXRsZSYmKHQrPTNEJzxkaXYgaWQ9M0QicG9ydGxldC1oZWFkZXIiIGNsYXNzPQo9M0QicG9y dGxldC1oZWFkZXIiPjxkaXYgaWQ9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJpZ2h0 OyI+PC9kaXY+PGg9CjM+JyxlLmljb24mJih0Kz0zRCc8aSBjbGFzcz0zRCJpY29uIGZhICcrZS5p Y29uKyciPiZuYnNwOzwvaT4nKSx0Kz0zRCc8c3Bhbj0KIGlkPTNEInBvcnRsZXQtaGVhZGVyLXRl eHQiPicrZS50aXRsZSsiPC9zcGFuPiIrIjwvaDM+IisiPC9kaXY+IiksdCs9M0QnPGRpPQp2IGlk PTNEInBvcnRsZXQtY29udGVudCIgY2xhc3M9M0QicG9ydGxldC1jb250ZW50Ij4nLGUucGxhY2Vt ZW50PTNEPTNEInRvcCI9CiYmKHQrPTNEJzxkaXYgaWQ9M0QiYnV0dG9ucyIgY2xhc3M9M0QiYnV0 dG9ucyI+PC9kaXY+JyksdCs9M0QnPGRpdiBpZD0zRCJjbz0KbnRlbnQiIGNsYXNzPTNEImNvbnRl bnQiPjwvZGl2PicsZS5wbGFjZW1lbnQ9M0Q9M0QiYm90dG9tIiYmKHQrPTNEJzxkaXYgaWQ9Cj0z RCJidXR0b25zIiBjbGFzcz0zRCJidXR0b25zIj48L2Rpdj4nKSx0Kz0zRCI8L2Rpdj48L2Rpdj4i LHR9fSk7cmV0dXJue1ZpZT0Kdzp0fX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvdWktc2VsZWN0 IixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zREJhY2tib25lLlZpZXcuZXh0 ZW5kKHtvcHRpb25zRGVmYXVsdDp7aWQ6IiIsY2xzOiIiLGVtcHR5OiJObyBkYXRhIGF2YWlsYT0K YmxlIix2aXNpYmxlOiEwLHdhaXQ6ITF9LHNlbGVjdGVkOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlv bih0KXt0aGlzLm9wdGlvbnM9Cj0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlz LnNlbGVjdGVkPTNEdGhpcy5vcHRpb25zLnZhbHVlLHRoaXMucz0KZXRFbGVtZW50KHRoaXMuX3Rl bXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMuJHNlbGVjdD0zRHRoaXMuJGVsLmZpbmQoIiNzZWxl PQpjdCIpLHRoaXMuJGljb249M0R0aGlzLiRlbC5maW5kKCIjaWNvbiIpO3ZhciBuPTNEdGhpczt0 aGlzLiRzZWxlY3Qub24oImNoYW49CmdlIixmdW5jdGlvbigpe24udmFsdWUobi4kc2VsZWN0LnZh bCgpKX0pLHRoaXMub24oImNoYW5nZSIsZnVuY3Rpb24oKXtuLm9wdD0KaW9ucy5vbmNoYW5nZSYm bi5vcHRpb25zLm9uY2hhbmdlKG4udmFsdWUoKSl9KSx0aGlzLl9yZWZyZXNoKCksdGhpcy5vcHRp b25zPQoudmlzaWJsZXx8dGhpcy5oaWRlKCksdGhpcy5vcHRpb25zLndhaXQ/dGhpcy53YWl0KCk6 dGhpcy5zaG93KCl9LHZhbHVlOmZ1bmM9CnRpb24oZSl7dmFyIHQ9M0R0aGlzLnNlbGVjdGVkO2Uh PTNEPTNEdW5kZWZpbmVkJiYodGhpcy5zZWxlY3RlZD0zRGUsdGhpcy4kcz0KZWxlY3QudmFsKGUp KTt2YXIgbj0zRHRoaXMuc2VsZWN0ZWQ7cmV0dXJuIG4mJm4hPTNEdCYmdGhpcy5vcHRpb25zLm9u Y2hhbmdlPQomJnRoaXMub3B0aW9ucy5vbmNoYW5nZShuKSxufSxmaXJzdDpmdW5jdGlvbigpe3Zh ciBlPTNEdGhpcy4kc2VsZWN0LmZpbmQoIm89CnB0aW9uIik7cmV0dXJuIGUubGVuZ3RoPjA/ZS52 YWwoKTp1bmRlZmluZWR9LHRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcz0KZWxlY3QuZmlu ZCgib3B0aW9uOnNlbGVjdGVkIikudGV4dCgpfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi5y ZW1vdmVDbGFzPQpzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmEgZmEtY2FyZXQtZG93biIpLHRo aXMuJHNlbGVjdC5zaG93KCksdGhpcy4kZWwuc2g9Cm93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlz LiRlbC5oaWRlKCl9LHdhaXQ6ZnVuY3Rpb24oKXt0aGlzLiRpY29uLnJlbW92ZUNsYT0Kc3MoKSx0 aGlzLiRpY29uLmFkZENsYXNzKCJmYSBmYS1zcGlubmVyIGZhLXNwaW4iKSx0aGlzLiRzZWxlY3Qu aGlkZSgpfSxkaXNhPQpibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNlbGVjdC5pcygiOmRp c2FibGVkIil9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXM9Ci4kc2VsZWN0LnByb3AoImRpc2FibGVk IiwhMSl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLiRzZWxlY3QucHJvcCgiZGlzYWJsZT0KZCIs ITApfSxhZGQ6ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0LmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9w dGlvbihlKSksdGhpcy5fPQpyZWZyZXNoKCl9LGRlbDpmdW5jdGlvbihlKXt0aGlzLiRzZWxlY3Qu ZmluZCgib3B0aW9uW3ZhbHVlPTNEIitlKyJdIikucmVtb3Y9CmUoKSx0aGlzLiRzZWxlY3QudHJp Z2dlcigiY2hhbmdlIiksdGhpcy5fcmVmcmVzaCgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dGhpcz0K LiRzZWxlY3QuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7Zm9yKHZhciB0IGluIGUpdGhpcy4kc2Vs ZWN0LmFwcGVuZCh0aGlzLl90PQplbXBsYXRlT3B0aW9uKGVbdF0pKTt0aGlzLl9yZWZyZXNoKCl9 LHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy49Cm9uY2hhbmdlPTNEZX0sZXhp c3RzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uW3ZhbHVlPTNE Ij0KK2UrIl0iKS5sZW5ndGg+MH0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLiRzZWxlY3QuZmlu ZCgib3B0aW9uW3ZhbHVlPTNEbnVsPQpsXSIpLnJlbW92ZSgpO3ZhciBlPTNEdGhpcy4kc2VsZWN0 LmZpbmQoIm9wdGlvbiIpLmxlbmd0aDtlPTNEPTNEMD8odGhpcy5kaXM9CmFibGUoKSx0aGlzLiRz ZWxlY3QuYXBwZW5kKHRoaXMuX3RlbXBsYXRlT3B0aW9uKHt2YWx1ZToibnVsbCIsbGFiZWw6dGhp cy5vcD0KdGlvbnMuZW1wdHl9KSkpOnRoaXMuZW5hYmxlKCksdGhpcy5zZWxlY3RlZCYmdGhpcy4k c2VsZWN0LnZhbCh0aGlzLnNlbGVjdGVkPQopfSxfdGVtcGxhdGVPcHRpb246ZnVuY3Rpb24oZSl7 cmV0dXJuJzxvcHRpb24gdmFsdWU9M0QiJytlLnZhbHVlKyciPicrZS5sYWI9CmVsKyI8L29wdGlv bj4ifSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QnPGRpdiBpZD0zRCInK2UuaWQrJyIg Y2xhc3M9Cj0zRCJ1aS1zZWxlY3QiPicrJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj4nKyc8aSBpZD0z RCJpY29uIi8+JysiPC9kaXY+IisnPHNlbD0KZWN0IGlkPTNEInNlbGVjdCIgY2xhc3M9M0Qic2Vs ZWN0ICcrZS5jbHMrIiAiK2UuaWQrJyI+Jztmb3Ioa2V5IGluIGUuZGF0YSl7PQp2YXIgbj0zRGUu ZGF0YVtrZXldLHI9M0QiIjtpZihuLnZhbHVlPTNEPTNEZS52YWx1ZXx8bi52YWx1ZT0zRD0zRCIi KXI9M0Qic2U9CmxlY3RlZCI7dCs9M0QnPG9wdGlvbiB2YWx1ZT0zRCInK24udmFsdWUrJyIgJyty KyI+IituLmxhYmVsKyI8L29wdGlvbj4ifXJldD0KdXJuIHQrPTNEIjwvc2VsZWN0PjwvZGl2PiIs dH19KTtyZXR1cm57Vmlldzp0fX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvdWkiPQosWyJ1dGls cy91dGlscyIsInBsdWdpbi9saWJyYXJ5L3VpLXNlbGVjdCIsIm12Yy91aS91aS1tb2RhbCJdLGZ1 bmN0aW9uKGUsdCw9Cm4pe3ZhciByPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZh dWx0Ont1cmw6IiIsY2xzOiIifSxpbml0aWFsaXplOj0KZnVuY3Rpb24odCl7dGhpcy5vcHRpb25z PTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0PQpoaXMu X3RlbXBsYXRlKHRoaXMub3B0aW9ucykpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxp bWcgY2xhc3M9M0QidWk9Ci1pbWFnZSAnK2UuY2xzKyciIHNyYz0zRCInK2UudXJsKyciLz4nfX0p LGk9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9ucz0KRGVmYXVsdDp7dGl0bGU6IiIsY2xz OiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0PQpo aXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9w dGlvbnMpKX0sdGl0bGU6ZnU9Cm5jdGlvbihlKXt0aGlzLiRlbC5odG1sKGUpfSxfdGVtcGxhdGU6 ZnVuY3Rpb24oZSl7cmV0dXJuJzxsYWJlbCBjbGFzcz0zRCJ1aT0KLWxhYmVsICcrZS5jbHMrJyI+ JytlLnRpdGxlKyI8L2xhYmVsPiJ9LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG9wdGlvbnMudGl0 PQpsZX19KSxzPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDpudWxs LHRpdGxlOiIiLCJmbG9hdCI6InI9CmlnaHQiLGNsczoiYnRuIGJ0bi1kZWZhdWx0IixpY29uOiIi fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRD0KZS5tZXJnZSh0LHRoaXMu b3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlv bnMpPQopLCQodGhpcy5lbCkub24oImNsaWNrIix0Lm9uY2xpY2spLCQodGhpcy5lbCkudG9vbHRp cCh7dGl0bGU6dC50b29sdGlwLHBsYWM9CmVtZW50OiJib3R0b20ifSl9LF90ZW1wbGF0ZTpmdW5j dGlvbihlKXt2YXIgdD0zRCc8YnV0dG9uIGlkPTNEIicrZS5pZCsnIiB0eT0KcGU9M0Qic3VibWl0 IiBzdHlsZT0zRCJmbG9hdDogJytlLmZsb2F0Kyc7IiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0Qi dWktYnV0PQp0b24gJytlLmNscysnIj4nO3JldHVybiBlLmljb24mJih0Kz0zRCc8aSBjbGFzcz0z RCJpY29uIGZhICcrZS5pY29uKyciPjwvaT49CiZuYnNwOycpLHQrPTNEZS50aXRsZSsiPC9idXR0 b24+Iix0fX0pLG89M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZj0KYXVsdDp7ImZs b2F0IjoicmlnaHQiLGljb246IiIsdG9vbHRpcDoiIixwbGFjZW1lbnQ6ImJvdHRvbSIsdGl0bGU6 IiIsY2xzOiIiPQp9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJn ZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXM9Ci5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRl KHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkudG9vbHRpcCh7dGl0bGU6dC50b29sdD0KaXAscGxh Y2VtZW50OiJib3R0b20ifSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48c3Bh biBjbGFzcz0zRCJmPQphICcrZS5pY29uKyciIGNsYXNzPTNEInVpLWljb24iLz4mbmJzcDsnK2Uu dGl0bGUrIjwvZGl2PiJ9fSksdT0zREJhY2tib25lLlY9Cmlldy5leHRlbmQoe29wdGlvbnNEZWZh dWx0Ont0aXRsZToiIixpZDpudWxsLCJmbG9hdCI6InJpZ2h0IixjbHM6Imljb24tYnRuIj0KLGlj b246IiIsdG9vbHRpcDoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0Rl Lm1lcmdlKHQsdGhpcy5vPQpwdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVt cGxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbig9CiJjbGljayIsdC5vbmNsaWNrKSwk KHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KT0K fSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QiIjtlLnRpdGxlJiYodD0zRCJ3aWR0aDog YXV0bzsiKTt2YXIgbj0zRCc8PQpkaXYgaWQ9M0QiJytlLmlkKyciIHN0eWxlPTNEImZsb2F0OiAn K2UuZmxvYXQrIjsgIit0KyciIGNsYXNzPTNEInVpLWJ1dHRvbi09Cmljb24gJytlLmNscysnIj4n O3JldHVybiBlLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48aSBjbGFzcz0zRCJp Yz0Kb24gZmEgJytlLmljb24rJyIvPiZuYnNwOycrJzxzcGFuIGNsYXNzPTNEInRpdGxlIj4nK2Uu dGl0bGUrIjwvc3Bhbj4iKyI8L2RpPQp2PiI6bis9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2Uu aWNvbisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksYT0zREJhY2tib249CmUuVmlldy5leHRlbmQo e29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7 dGhpcz0KLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRF bGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoPQppcy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbigiY2xp Y2siLHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm49Cic8ZGl2PjxhIGhy ZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0zRCJ1aS1hbmNob3IgJytlLmNscysnIj4n K2UudGl0bD0KZSsiPC9hPjwvZGl2PiJ9fSksZj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRp b25zRGVmYXVsdDp7bWVzc2FnZToiIixzdGF0PQp1czoiaW5mbyIscGVyc2lzdGVudDohMX0saW5p dGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGg9CmlzLm9wdGlv bnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQoIjxkaXY+PC9kaXY+Iil9LHVwZGF0ZTpmdW5jdGlv bih0KXt0aGlzLj0Kb3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTtpZih0 Lm1lc3NhZ2UhPTNEIiIpe3RoaXMuJGVsLmh0bWwoPQp0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlv bnMpKSx0aGlzLiRlbC5maW5kKCIuYWxlcnQiKS5hcHBlbmQodC5tZXNzYWdlKSx0aGk9CnMuJGVs LmZhZGVJbigpO2lmKCF0LnBlcnNpc3RlbnQpe3ZhciBuPTNEdGhpczt3aW5kb3cuc2V0VGltZW91 dChmdW5jdGlvbigpez0Kbi4kZWwuaXMoIjp2aXNpYmxlIik/bi4kZWwuZmFkZU91dCgpOm4uJGVs LmhpZGUoKX0sM2UzKX19ZWxzZSB0aGlzLiRlbC5mYWRlPQpPdXQoKX0sX3RlbXBsYXRlOmZ1bmN0 aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtJys9CmUu c3RhdHVzKyciLz4nfX0pLGw9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6 e29uY2xpY2s6bnVsbCxzZT0KYXJjaHdvcmQ6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhp cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlPQpmYXVsdCksdGhpcy5zZXRFbGVt ZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpO3ZhciBuPTNEdGhpczt0aGlzLm9wdGk9 Cm9ucy5vbmNsaWNrJiZ0aGlzLiRlbC5vbigic3VibWl0IixmdW5jdGlvbihlKXt2YXIgdD0zRG4u JGVsLmZpbmQoIiNzZWFyY2giKT0KO24ub3B0aW9ucy5vbmNsaWNrKHQudmFsKCkpfSl9LF90ZW1w bGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1PQppLXNlYXJjaCI+PGZvcm0g b25zdWJtaXQ9M0QicmV0dXJuIGZhbHNlOyI+PGlucHV0IGlkPTNEInNlYXJjaCIgY2xhc3M9M0Qi Zm89CnJtLWNvbnRyb2wgaW5wdXQtc20iIHR5cGU9M0QidGV4dCIgbmFtZT0zRCJzZWFyY2giIHBs YWNlaG9sZGVyPTNEIlNlYXJjaC4uLj0KIiB2YWx1ZT0zRCInK2Uuc2VhcmNod29yZCsnIj4nKyc8 YnV0dG9uIHR5cGU9M0Qic3VibWl0IiBjbGFzcz0zRCJidG4gc2VhcmNoPQotYnRuIj4nKyc8aSBj bGFzcz0zRCJmYSBmYS1zZWFyY2giPjwvaT4nKyI8L2J1dHRvbj4iKyI8L2Zvcm0+IisiPC9kaXY+ In19KSw9CmM9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOiIiLHRp dGxlOiIiLHRhcmdldDoiIixocmVmOiIiLD0Kb251bmxvYWQ6bnVsbCxvbmNsaWNrOm51bGwsdmlz aWJsZTohMCxpY29uOm51bGwsdGFnOiIifSwkbWVudTpudWxsLGluaXRpYWxpPQp6ZTpmdW5jdGlv bih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5z ZXRFbGVtZW49CnQoJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSk7dmFyIG49M0QkKHRo aXMuZWwpLmZpbmQoIi5yb290Iikscj0zRHRoaT0KcztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7 ZS5wcmV2ZW50RGVmYXVsdCgpLHIub3B0aW9ucy5vbmNsaWNrJiZyLm9wdGlvbnMuPQpvbmNsaWNr KCl9KSx0aGlzLm9wdGlvbnMudmlzaWJsZXx8dGhpcy5oaWRlKCl9LHNob3c6ZnVuY3Rpb24oKXsk KHRoaXMuZWwpLnM9CmhvdygpfSxoaWRlOmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5oaWRlKCl9LGFk ZE1lbnU6ZnVuY3Rpb24odCl7dmFyIG49M0R7dGl0bD0KZToiIix0YXJnZXQ6IiIsaHJlZjoiIixv bmNsaWNrOm51bGwsZGl2aWRlcjohMSxpY29uOm51bGwsY2xzOiJidXR0b24tbWVudSBiPQp0bi1n cm91cCJ9O249M0RlLm1lcmdlKHQsbiksdGhpcy4kbWVudXx8KCQodGhpcy5lbCkuYXBwZW5kKHRo aXMuX3RlbXBsYXRlTWU9Cm51KCkpLHRoaXMuJG1lbnU9M0QkKHRoaXMuZWwpLmZpbmQoIi5tZW51 IikpO3ZhciByPTNEJCh0aGlzLl90ZW1wbGF0ZU1lbnVJdD0KZW0obikpO3Iub24oImNsaWNrIixm dW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksbi5vbmNsaWNrJiZuLm9uY2xpY2soKX0pPQos dGhpcy4kbWVudS5hcHBlbmQociksbi5kaXZpZGVyJiZ0aGlzLiRtZW51LmFwcGVuZCgkKHRoaXMu X3RlbXBsYXRlRGl2aWRlcig9CikpKX0sX3RlbXBsYXRlTWVudUl0ZW06ZnVuY3Rpb24oZSl7dmFy IHQ9M0QnPGxpPjxhIGhyZWY9M0QiJytlLmhyZWYrJyIgdGFyZz0KZXQ9M0QiJytlLnRhcmdldCsn Ij4nO3JldHVybiBlLmljb24mJih0Kz0zRCc8aSBjbGFzcz0zRCJmYSAnK2UuaWNvbisnIj48L2k+ PQonKSx0Kz0zRCIgIitlLnRpdGxlKyI8L2E+IisiPC9saT4iLHR9LF90ZW1wbGF0ZU1lbnU6ZnVu Y3Rpb24oKXtyZXR1cm4nPHVsIGM9Cmxhc3M9M0QibWVudSBkcm9wZG93bi1tZW51IHB1bGwtcmln aHQiIHJvbGU9M0QibWVudSI+PC91bD4nfSxfdGVtcGxhdGVEaXZpZD0KZXI6ZnVuY3Rpb24oKXty ZXR1cm4nPGxpIGNsYXNzPTNEImRpdmlkZXIiPjwvbGk+J30sX3RlbXBsYXRlOmZ1bmN0aW9uKGUp e3ZhPQpyIHQ9M0QnPGRpdiBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QidWktYnV0dG9uLW1lbnUg JytlLmNscysnIj4nKyc8YnV0dG9uIHQ9CnlwZT0zRCJidXR0b24iIGNsYXNzPTNEInJvb3QgYnRu IGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9Cj0zRCJkcm9wZG93biI+ JztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiZmEgJytlLmljb24rJyI+PC9pPicp LCI8Lz0KYnV0dG9uPjwvZGl2PiIsdH19KSxoPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlv bnNEZWZhdWx0Ont2YWx1ZToiIix0eXBlPQo6InRleHQiLHBsYWNlaG9sZGVyOiIiLGRpc2FibGVk OiExLHZpc2libGU6ITAsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQ9Cil7dGhpcy5vcHRp b25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlz Ll90ZW1wbD0KYXRlKHRoaXMub3B0aW9ucykpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy4k ZWwucHJvcCgiZGlzYWJsZWQiLCEwKSx0aGlzPQoub3B0aW9ucy52aXNpYmxlfHx0aGlzLiRlbC5o aWRlKCk7dmFyIG49M0R0aGlzO3RoaXMuJGVsLm9uKCJpbnB1dCIsZnVuY3Rpb249Cigpe24ub3B0 aW9ucy5vbmNoYW5nZSYmbi5vcHRpb25zLm9uY2hhbmdlKG4uJGVsLnZhbCgpKX0pfSx2YWx1ZTpm dW5jdGlvbihlKT0Ke3JldHVybiBlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy4kZWwudmFsKGUpLHRo aXMuJGVsLnZhbCgpfSxfdGVtcGxhdGU6ZnVuY3RpPQpvbihlKXtyZXR1cm4nPGlucHV0IGlkPTNE IicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBlKyciIHZhbHVlPTNEIicrZS52YWx1ZSs9CiciIHBs YWNlaG9sZGVyPTNEIicrZS5wbGFjZWhvbGRlcisnIiBjbGFzcz0zRCJ1aS1pbnB1dCAnK2UuY2xz KyciPid9fSkscD0zRD0KQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont2YWx1 ZToiIix0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoiIixkPQppc2FibGVkOiExLHZpc2libGU6ITAs Y2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2U9Cih0 LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlz Lm9wdGlvbnMpKSx0aGlzLj0Kb3B0aW9ucy5kaXNhYmxlZCYmdGhpcy4kZWwucHJvcCgiZGlzYWJs ZWQiLCEwKSx0aGlzLm9wdGlvbnMudmlzaWJsZXx8dGhpcy4kPQplbC5oaWRlKCk7dmFyIG49M0R0 aGlzO3RoaXMuJGVsLm9uKCJpbnB1dCIsZnVuY3Rpb24oKXtuLm9wdGlvbnMub25jaGFuZ2UmJm49 Ci5vcHRpb25zLm9uY2hhbmdlKG4uJGVsLnZhbCgpKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1 cm4gZSE9M0Q9M0R1bmRlZmluZT0KZCYmdGhpcy4kZWwudmFsKGUpLHRoaXMuJGVsLnZhbCgpfSxf dGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzx0ZXh0YXJlYSBpPQpkPTNEIicrZS5pZCsnIiBj bGFzcz0zRCJ1aS10ZXh0YXJlYSAnK2UuY2xzKyciIHJvd3M9M0QiNSI+PC90ZXh0YXJlYT4nfX0p LGQ9Cj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dmFsdWU6IiIsdmlz aWJsZTohMCxjbHM6IiIsZGF0YTpbXT0KLGlkOmUudXVpZCgpfSxpbml0aWFsaXplOmZ1bmN0aW9u KHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEPQplZmF1bHQpLHRoaXMu c2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmlz aWJsZXw9Cnx0aGlzLiRlbC5oaWRlKCksdGhpcy5vcHRpb25zLnZhbHVlJiZ0aGlzLnZhbHVlKHRo aXMub3B0aW9ucy52YWx1ZSksdGhpcy5jdT0KcnJlbnQ9M0R0aGlzLm9wdGlvbnMudmFsdWU7dmFy IG49M0R0aGlzO3RoaXMuJGVsLmZpbmQoImlucHV0Iikub24oImNoYW5nZSIsPQpmdW5jdGlvbigp e24udmFsdWUobi5fZ2V0VmFsdWUoKSl9KX0sdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlz LmN1cnJlbnQ9CjtlIT0zRD0zRHVuZGVmaW5lZCYmKHRoaXMuJGVsLmZpbmQoImxhYmVsIikucmVt b3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLj0KZmluZCgnW3ZhbHVlPTNEIicrZSsnIl0nKS5j bG9zZXN0KCJsYWJlbCIpLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLmN1cnJlbnQ9Cj0zRGUpO3Zh ciBuPTNEdGhpcy5jdXJyZW50O3JldHVybiBuIT0zRHQmJnRoaXMub3B0aW9ucy5vbmNoYW5nZSYm dGhpcy5vcHRpbz0KbnMub25jaGFuZ2UodGhpcy5jdXJyZW50KSx0aGlzLmN1cnJlbnR9LF9nZXRW YWx1ZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy4kPQplbC5maW5kKCI6Y2hlY2tlZCIpLHQ9M0Ru dWxsO3JldHVybiBlLmxlbmd0aD4wJiYodD0zRGUudmFsKCkpLHR9LF90ZW1wbGF0ZTo9CmZ1bmN0 aW9uKGUpe3ZhciB0PTNEJzxkaXYgY2xhc3M9M0QiYnRuLWdyb3VwIHVpLXJhZGlvYnV0dG9uIiBk YXRhLXRvZ2dsZT0zRD0KImJ1dHRvbnMiPic7Zm9yKGtleSBpbiBlLmRhdGEpe3ZhciBuPTNEZS5k YXRhW2tleV07dCs9M0QnPGxhYmVsIGNsYXNzPTNEImJ0PQpuIGJ0bi1kZWZhdWx0Ij48aW5wdXQg dHlwZT0zRCJyYWRpbyIgbmFtZT0zRCInK2UuaWQrJyIgdmFsdWU9M0QiJytuLnZhbHVlKyc9CiIg c2VsZWN0ZWQ+JytuLmxhYmVsKyI8L2xhYmVsPiJ9cmV0dXJuIHQrPTNEIjwvZGl2PiIsdH19KTty ZXR1cm57TGFiZWw6aSxCdT0KdHRvbjpzLEljb246byxCdXR0b25JY29uOnUsSW5wdXQ6aCxBbmNo b3I6YSxNZXNzYWdlOmYsU2VhcmNoYm94OmwsU2VsZWN0OnQsPQpCdXR0b25NZW51OmMsTW9kYWw6 bixUZXh0YXJlYTpwLEltYWdlOnIsUmFkaW9CdXR0b246ZH19KSxkZWZpbmUoInBsdWdpbi9saWI9 CnJhcnkvam9icyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5N b2RlbC5leHRlbmQoe2luaXRpYT0KbGl6ZTpmdW5jdGlvbih0LG4pe3RoaXMuYXBwPTNEdCx0aGlz Lm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGVmYXVsPQp0KX0scmVxdWVzdDpmdW5j dGlvbihlLHQsbixyLGkpe3ZhciBzPTNEdGhpcztlLnN0YXRlKCJ3YWl0IiwiUmVxdWVzdGluZyBq b2I9CiByZXN1bHRzLi4uIik7dmFyIG89M0RlLmdldCgiZGF0YXNldF9pZF9qb2IiKTtvIT0zRCIi P3MuX3dhaXQoZSxyLGkpOnMuX3N1Yj0KbWl0KGUsdCxuLHIsaSl9LGNsZWFudXA6ZnVuY3Rpb24o dCl7dmFyIG49M0R0aGlzLHI9M0R0LmdldCgiZGF0YXNldF9pZF9qb2IiPQopO3IhPTNEIiImJihl LnJlcXVlc3QoIlBVVCIsY29uZmlnLnJvb3QrImFwaS9oaXN0b3JpZXMvbm9uZS9jb250ZW50cy8i K3Ise2Q9CmVsZXRlZDohMH0sZnVuY3Rpb24oKXtuLl9yZWZyZXNoSGRhcygpfSksdC5zZXQoImRh dGFzZXRfaWRfam9iIiwiIikpfSxfc3VibT0KaXQ6ZnVuY3Rpb24odCxuLHIsaSxzKXt2YXIgbz0z RHRoaXMsdT0zRHQuaWQsYT0zRHQuZ2V0KCJ0eXBlIiksZj0zRHQuZGVmaW5pPQp0aW9uO2RhdGE9 M0R7dG9vbF9pZDoiY2hhcnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCgiZGF0YXNldF9pZCIp LHNyYzoiaGQ9CmEifSxtb2R1bGU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpufX0sdC5z dGF0ZSgid2FpdCIsIlNlbmRpbmcgam9iIHJlcT0KdWVzdC4uLiIpLGUucmVxdWVzdCgiUE9TVCIs Y29uZmlnLnJvb3QrImFwaS90b29scyIsZGF0YSxmdW5jdGlvbihlKXtpZighZS5vPQp1dHB1dHN8 fGUub3V0cHV0cy5sZW5ndGg9M0Q9M0QwKXQuc3RhdGUoImZhaWxlZCIsIkpvYiBzdWJtaXNzaW9u IGZhaWxlZC4gTm89CiByZXNwb25zZS4iKSxzJiZzKCk7ZWxzZXtvLl9yZWZyZXNoSGRhcygpO3Zh ciBuPTNEZS5vdXRwdXRzWzBdO3Quc3RhdGUoIndhaT0KdCIsIllvdXIgam9iIGhhcyBiZWVuIHF1 ZXVlZC4gWW91IG1heSBjbG9zZSB0aGUgYnJvd3NlciB3aW5kb3cuIFRoZSBqb2Igd2lsPQpsIHJ1 biBpbiB0aGUgYmFja2dyb3VuZC4iKSx0LnNldCgiZGF0YXNldF9pZF9qb2IiLG4uaWQpLHRoaXMu YXBwLnN0b3JhZ2Uuc2E9CnZlKCksby5fd2FpdCh0LGkscyl9fSxmdW5jdGlvbihlKXt2YXIgbj0z RCIiO2UmJmUubWVzc2FnZSYmZS5tZXNzYWdlLmRhdGEmJj0KZS5tZXNzYWdlLmRhdGEuaW5wdXQm JihuPTNEZS5tZXNzYWdlLmRhdGEuaW5wdXQrIi4iKSx0LnN0YXRlKCJmYWlsZWQiLCJUaGlzPQog dmlzdWFsaXphdGlvbiByZXF1aXJlcyB0aGUgJ2NoYXJ0cycgdG9vbC4gUGxlYXNlIG1ha2Ugc3Vy ZSBpdCBpcyBpbnN0YWxsZWQ9Ci4gIituKSxzJiZzKCl9KX0sX3dhaXQ6ZnVuY3Rpb24odCxuLHIp e3ZhciBpPTNEdGhpcztlLnJlcXVlc3QoIkdFVCIsY29uZmlnLj0Kcm9vdCsiYXBpL2RhdGFzZXRz LyIrdC5nZXQoImRhdGFzZXRfaWRfam9iIikse30sZnVuY3Rpb24oZSl7dmFyIHM9M0QhMTtzd2l0 PQpjaChlLnN0YXRlKXtjYXNlIm9rIjp0LnN0YXRlKCJ3YWl0IiwiSm9iIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkuLi4iKSxuJiZuKGU9Cikscz0zRCEwO2JyZWFrO2Nhc2UiZXJyb3IiOnQuc3RhdGUo ImZhaWxlZCIsIkpvYiBoYXMgZmFpbGVkLiBQbGVhc2UgY2hlY2sgdD0KaGUgaGlzdG9yeSBmb3Ig ZGV0YWlscy4iKSxyJiZyKGUpLHM9M0QhMDticmVhaztjYXNlInJ1bm5pbmciOnQuc3RhdGUoIndh aXQiPQosIllvdXIgam9iIGlzIHJ1bm5pbmcuIFlvdSBtYXkgY2xvc2UgdGhlIGJyb3dzZXIgd2lu ZG93LiBUaGUgam9iIHdpbGwgY29udGk9Cm51ZSBpbiB0aGUgYmFja2dyb3VuZC4iKX1zfHxzZXRU aW1lb3V0KGZ1bmN0aW9uKCl7aS5fd2FpdCh0LG4scil9LGkuYXBwLmNvbj0KZmlnLmdldCgicXVl cnlfdGltZW91dCIpKX0pfSxfcmVmcmVzaEhkYXM6ZnVuY3Rpb24oKXtHYWxheHkmJkdhbGF4eS5j dXJySGlzPQp0b3J5UGFuZWwmJkdhbGF4eS5jdXJySGlzdG9yeVBhbmVsLnJlZnJlc2hDb250ZW50 cygpfX0pfSksZGVmaW5lKCJwbHVnaW4vbGk9CmJyYXJ5L2RhdGFzZXRzIixbInV0aWxzL3V0aWxz Il0sZnVuY3Rpb24oZSl7cmV0dXJuIEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZT0KbmQoe2xpc3Q6 e30sY2FjaGU6e30saW5pdGlhbGl6ZTpmdW5jdGlvbih0LG4pe3RoaXMuYXBwPTNEdCx0aGlzLm9w dGlvbnM9M0RlPQoubWVyZ2Uobix0aGlzLm9wdGlvbnNEZWZhdWx0KX0scmVxdWVzdDpmdW5jdGlv bihlLHQsbil7dmFyIHI9M0R0aGlzO2UuZ3JvdXA9CnM/dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCxm dW5jdGlvbigpe3IuX2dldChlLHQpfSk6dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCx0LD0Kbil9LF9n ZXRfZGF0YXNldDpmdW5jdGlvbih0LG4scil7dmFyIGk9M0R0aGlzLmxpc3RbdF07aWYoaSl7bihp KTtyZXR1cm59dmFyPQogcz0zRHRoaXM7ZS5yZXF1ZXN0KCJHRVQiLGNvbmZpZy5yb290KyJhcGkv ZGF0YXNldHMvIit0LHt9LGZ1bmN0aW9uKGUpe3N3aXQ9CmNoKGUuc3RhdGUpe2Nhc2UiZXJyb3Ii OnImJnIoZSk7YnJlYWs7ZGVmYXVsdDpzLmxpc3RbdF09M0RlLG4oZSl9fSl9LF9ibG9jaz0KX2lk OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQrIl8iK2Uuc3RhcnQrIl8iK2UuZW5kKyJfIit0fSxf Z2V0OmZ1bmN0aW9uKGUsPQp0KXtlLnN0YXJ0fHwoZS5zdGFydD0zRDApLGUuZW5kfHwoZS5lbmQ9 M0R0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCI9CikpO3ZhciBuPTNEW10scj0zRHt9 LGk9M0QwO2Zvcih2YXIgcyBpbiBlLmdyb3Vwcyl7dmFyIG89M0RlLmdyb3Vwc1tzXTtmb3Iodj0K YXIgdSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jb2x1bW5zW3VdLmluZGV4LGY9M0R0aGlzLl9i bG9ja19pZChlLGEpO2lmKHRoPQppcy5jYWNoZVtmXXx8YT0zRD0zRD0zRCJhdXRvIiljb250aW51 ZTshclthXSYmYSE9M0Q9M0R1bmRlZmluZWQmJihyW2FdPTNEaSw9Cm4ucHVzaChhKSxpKyspfX1p ZihuLmxlbmd0aD0zRD0zRDApe3RoaXMuX2ZpbGxfZnJvbV9jYWNoZShlKSx0KGUpO3JldHVybn12 YT0KciBsPTNEe2RhdGFzZXRfaWQ6ZS5pZCxzdGFydDplLnN0YXJ0LGVuZDplLmVuZCxjb2x1bW5z Om59LGM9M0R0aGlzO3RoaXMuX2ZlPQp0Y2gobCxmdW5jdGlvbihyKXtmb3IodmFyIGkgaW4gcil7 dmFyIHM9M0RuW2ldLG89M0RjLl9ibG9ja19pZChlLHMpO2MuY2FjaGU9CltvXT0zRHJbaV19Yy5f ZmlsbF9mcm9tX2NhY2hlKGUpLHQoZSl9KX0sX2ZpbGxfZnJvbV9jYWNoZTpmdW5jdGlvbihlKXtj b25zbz0KbGUuZGVidWcoIkRhdGFzZXRzOjpfZmlsbF9mcm9tX2NhY2hlKCkgLSBGaWxsaW5nIHJl cXVlc3QgZnJvbSBjYWNoZS4iKTt2YXIgPQp0PTNEZS5zdGFydCxuPTNEMDtmb3IodmFyIHIgaW4g ZS5ncm91cHMpe3ZhciBpPTNEZS5ncm91cHNbcl07Zm9yKHZhciBzIGluIGk9Ci5jb2x1bW5zKXt2 YXIgbz0zRGkuY29sdW1uc1tzXSx1PTNEdGhpcy5fYmxvY2tfaWQoZSxvLmluZGV4KSxhPTNEdGhp cy5jYWNoZT0KW3VdO2EmJihuPTNETWF0aC5tYXgobixhLmxlbmd0aCkpfX1uPTNEPTNEMCYmY29u c29sZS5kZWJ1ZygiRkFJTEVEIC0gRGF0YXNlPQp0czo6X2ZpbGxfZnJvbV9jYWNoZSgpIC0gSW52 YWxpZCByYW5nZS4iKTtmb3IodmFyIHIgaW4gZS5ncm91cHMpe3ZhciBpPTNEZS49Cmdyb3Vwc1ty XTtpLnZhbHVlcz0zRFtdO2Zvcih2YXIgZj0zRDA7ZjxuO2YrKylpLnZhbHVlc1tmXT0zRHt4OnBh cnNlSW50KGYpKz0KdH19Zm9yKHZhciByIGluIGUuZ3JvdXBzKXt2YXIgaT0zRGUuZ3JvdXBzW3Jd O2Zvcih2YXIgcyBpbiBpLmNvbHVtbnMpe3ZhciBvPQo9M0RpLmNvbHVtbnNbc107aWYoby5pbmRl eD0zRD0zRCJhdXRvIilmb3IodmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52YWw9CnVlc1tm XTtsW3NdPTNEcGFyc2VJbnQoZikrdH1lbHNle3ZhciB1PTNEdGhpcy5fYmxvY2tfaWQoZSxvLmlu ZGV4KSxhPTNEdGhpcz0KLmNhY2hlW3VdO2Zvcih2YXIgZj0zRDA7ZjxuO2YrKyl7dmFyIGw9M0Rp LnZhbHVlc1tmXSxjPTNEYVtmXTtpc05hTihjKSYmIW8uPQppc19sYWJlbCYmKGM9M0QwKSxsW3Nd PTNEY319fX19LF9mZXRjaDpmdW5jdGlvbih0LG4pe3ZhciByPTNEdC5zdGFydD90LnN0YXI9CnQ6 MCxpPTNETWF0aC5hYnModC5lbmQtdC5zdGFydCkscz0zRHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1 ZXJ5X2xpbWl0Iik7aWYoIT0KaXx8aT5zKWk9M0RzO3ZhciBvPTNEMDt0LmNvbHVtbnMmJihvPTNE dC5jb2x1bW5zLmxlbmd0aCxjb25zb2xlLmRlYnVnKCJEYXRhPQpzZXRzOjpfZmV0Y2goKSAtIEZl dGNoaW5nICIrbysiIGNvbHVtbihzKSIpKSxvPTNEPTNEMCYmY29uc29sZS5kZWJ1ZygiRGF0YXM9 CmV0czo6X2ZldGNoKCkgLSBObyBjb2x1bW5zIHJlcXVlc3RlZCIpO3ZhciB1PTNEIiI7Zm9yKHZh ciBhIGluIHQuY29sdW1ucyl1Kz0KPTNEdC5jb2x1bW5zW2FdKyIsIjt1PTNEdS5zdWJzdHJpbmco MCx1Lmxlbmd0aC0xKTt2YXIgZj0zRHRoaXM7ZS5yZXF1ZXN0KCJHPQpFVCIsY29uZmlnLnJvb3Qr ImFwaS9kYXRhc2V0cy8iK3QuZGF0YXNldF9pZCx7ZGF0YV90eXBlOiJyYXdfZGF0YSIscHJvdmlk ZXI9CjoiZGF0YXNldC1jb2x1bW4iLGxpbWl0Omksb2Zmc2V0OnIsaW5kZWNlczp1fSxmdW5jdGlv bihlKXt2YXIgdD0zRG5ldyBBcnJheT0KKG8pO2Zvcih2YXIgcj0zRDA7cjxvO3IrKyl0W3JdPTNE W107Zm9yKHZhciByIGluIGUuZGF0YSl7dmFyIGk9M0RlLmRhdGFbcl07PQpmb3IodmFyIHMgaW4g aSl7dmFyIHU9M0RpW3NdO3UhPTNEPTNEdW5kZWZpbmVkJiZ1IT0zRDIxNDc0ODM2NDcmJnRbc10u cHVzaCg9CnUpfX1jb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRjaGluZyBj b21wbGV0ZS4iKSxuKHQpfSl9fSl9KSxkZT0KZmluZSgicGx1Z2luL21vZGVscy9ncm91cCIsW10s ZnVuY3Rpb24oKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhPQp1bHRzOntrZXk6 IkRhdGEgbGFiZWwiLGRhdGU6IiJ9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jbGVhcih7c2lsZW50 OiEwfSkuc2U9CnQodGhpcy5kZWZhdWx0cyksdGhpcy50cmlnZ2VyKCJyZXNldCIsdGhpcyl9fSl9 KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvZ3JvdT0KcHMiLFsicGx1Z2luL21vZGVscy9ncm91cCJd LGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7PQptb2RlbDpl fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L2RlZmVycmVkIixbInV0aWxzL3V0aWxzIl0sZnVu Y3Rpb24oZSl7cmU9CnR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtxdWV1ZTpbXSxwcm9jZXNz Ont9LGNvdW50ZXI6MCxpbml0aWFsaXplOmZ1bmN0aT0Kb24oKXt0aGlzLm9uKCJyZWZyZXNoIixm dW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLnF1ZXVlKWlmKHRoaXMuY291bnRlcj0KPTNEPTNE MCl7dmFyIHQ9M0R0aGlzLnF1ZXVlW2VdO3RoaXMucXVldWUuc3BsaWNlKGUsMSksdCgpfX0pfSxl eGVjdXRlOmZ1bmN0PQppb24oZSl7dGhpcy5xdWV1ZS5wdXNoKGUpLHRoaXMudHJpZ2dlcigicmVm cmVzaCIpfSxyZWdpc3RlcjpmdW5jdGlvbigpe3ZhciA9CnQ9M0RlLnV1aWQoKTtyZXR1cm4gdGhp cy5wcm9jZXNzW3RdPTNEITAsdGhpcy5jb3VudGVyKyssY29uc29sZS5kZWJ1ZygiRGVmZT0KcnJl ZDpyZWdpc3RlcigpIC0gUmVnaXN0ZXJpbmcgIit0KSx0fSxkb25lOmZ1bmN0aW9uKGUpe3RoaXMu cHJvY2Vzc1tlXSYmKGRlPQpsZXRlIHRoaXMucHJvY2Vzc1tlXSx0aGlzLmNvdW50ZXItLSxjb25z b2xlLmRlYnVnKCJEZWZlcnJlZDpkb25lKCkgLSBVbnJlZ2k9CnN0ZXJpbmcgIitlKSx0aGlzLnRy aWdnZXIoInJlZnJlc2giKSl9LHJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnRlcj0K PTNEPTNEMH19KX0pO3ZhciBWaXN1YWxpemF0aW9uPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtk ZWZhdWx0czp7Y29uZmlnOnt9PQp9LHVybFJvb3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRCIvYXBpL3Zp c3VhbGl6YXRpb25zIjtyZXR1cm4gd2luZG93LmdhbGF4eV9jb249CmZpZyYmZ2FsYXh5X2NvbmZp Zy5yb290P2dhbGF4eV9jb25maWcucm9vdCtlOmV9LGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7Xy5p cz0KT2JqZWN0KGUuY29uZmlnKSYmXy5pc09iamVjdCh0aGlzLmRlZmF1bHRzLmNvbmZpZykmJl8u ZGVmYXVsdHMoZS5jb25maWcsdGhpPQpzLmRlZmF1bHRzLmNvbmZpZyksdGhpcy5fc2V0VXBMaXN0 ZW5lcnMoKX0sX3NldFVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7fSxzZXQ9CjpmdW5jdGlvbihlLHQp e2lmKGU9M0Q9M0Q9M0QiY29uZmlnIil7dmFyIG49M0R0aGlzLmdldCgiY29uZmlnIik7Xy5pc09i amVjdD0KKG4pJiYodD0zRF8uZXh0ZW5kKF8uY2xvbmUobiksdCkpfXJldHVybiBCYWNrYm9uZS5N b2RlbC5wcm90b3R5cGUuc2V0LmNhbGwoPQp0aGlzLGUsdCksdGhpc30sdG9TdHJpbmc6ZnVuY3Rp b24oKXt2YXIgZT0zRHRoaXMuZ2V0KCJpZCIpfHwiIjtyZXR1cm4gdGhpcy49CmdldCgidGl0bGUi KSYmKGUrPTNEIjoiK3RoaXMuZ2V0KCJ0aXRsZSIpKSwiVmlzdWFsaXphdGlvbigiK2UrIikifX0p LFZpc3VhbD0KaXphdGlvbkNvbGxlY3Rpb249M0RCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7 bW9kZWw6VmlzdWFsaXphdGlvbix1cmw6ZnVuPQpjdGlvbigpe3JldHVybiBnYWxheHlfY29uZmln LnJvb3QrImFwaS92aXN1YWxpemF0aW9ucyJ9LGluaXRpYWxpemU6ZnVuY3Rpb249CihlLHQpe3Q9 M0R0fHx7fX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzO2U9M0RfLm1hcChlLGZ1bmN0 aW9uKGUpe3Zhcj0KIHQ9M0RuLmdldChlLmlkKTtpZighdClyZXR1cm4gZTt2YXIgcj0zRHQudG9K U09OKCk7cmV0dXJuIF8uZXh0ZW5kKHIsZSkscn0pPQosQmFja2JvbmUuQ29sbGVjdGlvbi5wcm90 b3R5cGUuc2V0LmNhbGwodGhpcyxlLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHU9CnJuWyJW aXN1YWxpemF0aW9uQ29sbGVjdGlvbigiLFt0aGlzLmhpc3RvcnlJZCx0aGlzLmxlbmd0aF0uam9p bigpLCIpIl0uam9pbj0KKCIiKX19KTtkZWZpbmUoIm12Yy92aXN1YWxpemF0aW9uL3Zpc3VhbGl6 YXRpb24tbW9kZWwiLGZ1bmN0aW9uKCl7fSksZGVmaW5lPQooInBsdWdpbi9tb2RlbHMvY2hhcnQi LFsicGx1Z2luL21vZGVscy9ncm91cHMiLCJwbHVnaW4vbGlicmFyeS9kZWZlcnJlZCIsIm09CnZj L3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCJdLGZ1bmN0aW9uKGUsdCl7cmV0dXJu IEJhY2tib25lLk1vZGVsLj0KZXh0ZW5kKHtkZWZhdWx0czp7aWQ6bnVsbCx0aXRsZToiIix0eXBl OiIiLGRhdGU6bnVsbCxzdGF0ZToiIixzdGF0ZV9pbmZvOiIiPQosbW9kaWZpZWQ6ITEsZGF0YXNl dF9pZDoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihuKXt0aGlzLmc9 CnJvdXBzPTNEbmV3IGUsdGhpcy5zZXR0aW5ncz0zRG5ldyBCYWNrYm9uZS5Nb2RlbCx0aGlzLmRl ZmVycmVkPTNEbmV3IHR9LHJlcz0KZXQ6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKHtzaWxlbnQ6ITB9 KS5zZXQodGhpcy5kZWZhdWx0cyksdGhpcy5ncm91cHMucmVzZXQoPQopLHRoaXMuc2V0dGluZ3Mu Y2xlYXIoKSx0aGlzLnRyaWdnZXIoInJlc2V0Iix0aGlzKX0sY29weTpmdW5jdGlvbihlKXt2YXIg dD0KPTNEdGhpczt0LmNsZWFyKHtzaWxlbnQ6ITB9KS5zZXQodGhpcy5kZWZhdWx0cyksdC5zZXQo ZS5hdHRyaWJ1dGVzKSx0LnNldHRpPQpuZ3M9M0RlLnNldHRpbmdzLmNsb25lKCksdC5ncm91cHMu cmVzZXQoKSxlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe3QuZ3JvdXA9CnMuYWRkKGUuY2xvbmUo KSl9KSx0LnRyaWdnZXIoImNoYW5nZSIsdCl9LHN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy5zZXQo InN0YT0KdGUiLGUpLHRoaXMuc2V0KCJzdGF0ZV9pbmZvIix0KSx0aGlzLnRyaWdnZXIoInNldDpz dGF0ZSIpLGNvbnNvbGUuZGVidWcoIkNoPQphcnQ6c3RhdGUoKSAtICIrdCsiICgiK2UrIikiKX19 KX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvc3RvcmFnZSIsWyJ1dGlscy89CnV0aWxzIiwicGx1 Z2luL21vZGVscy9jaGFydCIsInBsdWdpbi9tb2RlbHMvZ3JvdXAiXSxmdW5jdGlvbihlLHQsbil7 cmV0dXJuID0KQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHt2aXM6bnVsbCxpbml0aWFsaXplOmZ1bmN0 aW9uKGUpe3RoaXMuYXBwPTNEZSx0aGlzLmNoPQphcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLm9w dGlvbnM9M0R0aGlzLmFwcC5vcHRpb25zLHRoaXMuaWQ9M0R0aGlzLm9wdGlvbnM9Ci5pZCx0aGlz LnZpcz0zRG5ldyBWaXN1YWxpemF0aW9uKHt0eXBlOiJjaGFydHMiLGNvbmZpZzp7ZGF0YXNldF9p ZDp0aGlzLm9wdD0KaW9ucy5jb25maWcuZGF0YXNldF9pZCxjaGFydF9kaWN0Ont9fX0pLHRoaXMu aWQmJih0aGlzLnZpcy5pZD0zRHRoaXMuaWQpO3ZhPQpyIHQ9M0R0aGlzLm9wdGlvbnMuY29uZmln LmNoYXJ0X2RpY3Q7dCYmKHRoaXMudmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdD0KPTNEdCl9 LHNhdmU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuYXBwLmNoYXJ0O3RoaXMudmlzLmdldCgiY29u ZmlnIikuY2hhcnRfPQpkaWN0PTNEe307dmFyIHQ9M0RlLmdldCgidGl0bGUiKTt0IT0zRCIiJiZ0 aGlzLnZpcy5zZXQoInRpdGxlIix0KTt2YXIgbj0zRHs9CmF0dHJpYnV0ZXM6ZS5hdHRyaWJ1dGVz LHNldHRpbmdzOmUuc2V0dGluZ3MuYXR0cmlidXRlcyxncm91cHM6W119O2UuZ3JvdXBzLj0KZWFj aChmdW5jdGlvbihlKXtuLmdyb3Vwcy5wdXNoKGUuYXR0cmlidXRlcyl9KSx0aGlzLnZpcy5nZXQo ImNvbmZpZyIpLmNoYXJ0PQpfZGljdD0zRG47dmFyIHI9M0R0aGlzO3RoaXMudmlzLnNhdmUoKS5m YWlsKGZ1bmN0aW9uKGUsdCxuKXtjb25zb2xlLmVycm9yKGU9Cix0LG4pfSkudGhlbihmdW5jdGlv bihlKXtlJiZlLmlkJiYoci5pZD0zRGUuaWQpfSl9LGxvYWQ6ZnVuY3Rpb24oKXt2YXIgZT0zRD0K dGhpcy52aXMuZ2V0KCJjb25maWciKS5jaGFydF9kaWN0O2lmKCFlLmF0dHJpYnV0ZXMpcmV0dXJu ITE7dmFyIHQ9M0RlLmF0dHJpPQpidXRlcy50eXBlO2lmKCF0KXJldHVybiBjb25zb2xlLmRlYnVn KCJTdG9yYWdlOjpsb2FkKCkgLSBDaGFydCB0eXBlIG5vdCBwcm89CnZpZGVkLiBJbnZhbGlkIGZv cm1hdC4iKSwhMTt2YXIgcj0zRHRoaXMuYXBwLnR5cGVzLmdldCh0KTtpZighcilyZXR1cm4gY29u cz0Kb2xlLmRlYnVnKCJTdG9yYWdlOjpsb2FkKCkgLSBDaGFydCB0eXBlIG5vdCBzdXBwb3J0ZWQu IFBsZWFzZSByZS1jb25maWd1cmUgPQp0aGUgY2hhcnQuIFJlc2V0dGluZyBjaGFydC4iKSwhMTtj b25zb2xlLmRlYnVnKCJTdG9yYWdlOjpsb2FkKCkgLSBMb2FkaW5nIGM9CmhhcnQgdHlwZSAiK3Qr Ii4iKSx0aGlzLmNoYXJ0LmRlZmluaXRpb249M0RyLHRoaXMuY2hhcnQuc2V0KGUuYXR0cmlidXRl cyksdD0KaGlzLmNoYXJ0LnN0YXRlKCJvayIsIkxvYWRpbmcgc2F2ZWQgdmlzdWFsaXphdGlvbi4u LiIpLHRoaXMuY2hhcnQuc2V0dGluZ3MuPQpzZXQoZS5zZXR0aW5ncyk7Zm9yKHZhciBpIGluIGUu Z3JvdXBzKXRoaXMuY2hhcnQuZ3JvdXBzLmFkZChuZXcgbihlLmdyb3Vwc1s9CmldKSk7cmV0dXJu IHRoaXMuY2hhcnQuc2V0KCJtb2RpZmllZCIsITEpLCEwfX0pfSksZGVmaW5lKCJwbHVnaW4vbGli cmFyeS9zYz0KcmVlbnNob3QiLFsibGlicy91bmRlcnNjb3JlIl0sZnVuY3Rpb24oZSl7ZnVuY3Rp b24gdChlLHQsaSl7dmFyIHM9M0RuZXcgWE1MPQpTZXJpYWxpemVyLG89M0QiIix1PTNEdGhpcyxh PTNEMCxmPTNEMDtyZXR1cm4gZS5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCk9Cnt2YXIgZT0z RCQodGhpcyk7bihlKSxhPTNEcGFyc2VJbnQoZS5jc3MoImhlaWdodCIpKSxmPTNEcGFyc2VJbnQo ZS5jc3MoIndpZD0KdGgiKSksZS5hdHRyKHt2ZXJzaW9uOiIxLjEiLHhtbG5zOiJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6ZixoZWlnPQpodDphfSksZS5maW5kKCIuaGlnaGNoYXJ0 cy1idXR0b24iKS5oaWRlKCksbys9M0RzLnNlcmlhbGl6ZVRvU3RyaW5nKHRoaXMpLGU9Ci5maW5k KCIuaGlnaGNoYXJ0cy1idXR0b24iKS5zaG93KCl9KSxyKGUsdCx7ZmlsZW5hbWU6aXx8ImNoYXJ0 Iix0eXBlOiJhcHBsaT0KY2F0aW9uL3BkZiIsaGVpZ2h0OmEsd2lkdGg6ZixzY2FsZToyLHN2Zzpv fSksb31mdW5jdGlvbiBuKGUpe2Zvcih2YXIgdCBpbiBkPQpvY3VtZW50LnN0eWxlU2hlZXRzKXt2 YXIgbj0zRGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdLHI9M0RuLmNzc1J1bGVzO2lmKHIpZm89CnIo dmFyIGk9M0QwLHM9M0RyLmxlbmd0aDtpPHM7aSsrKXRyeXtlLmZpbmQocltpXS5zZWxlY3RvclRl eHQpLmVhY2goZnVuY3Rpbz0KbihlLHQpe3Quc3R5bGUuY3NzVGV4dCs9M0RyW2ldLnN0eWxlLmNz c1RleHR9KX1jYXRjaChvKXt9fX1mdW5jdGlvbiByKGUsdCxuPQope3ZhciByPTNEZS5maW5kKCIj dmlld3BvcnQtZm9ybSIpO3IubGVuZ3RoPTNEPTNEPTNEMCYmKHI9M0QkKCI8Zm9ybT4iLHtpZDo9 CiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q6InBvc3QiLGFjdGlvbjp0LGRpc3BsYXk6Im5vbmUifSks ZS5hcHBlbmQocikpLHIuZW1wdD0KeSgpO2ZvcihuYW1lIGluIG4pe3ZhciBpPTNEJCgiPGlucHV0 Lz4iLHt0eXBlOiJoaWRkZW4iLG5hbWU6bmFtZSx2YWx1ZTpuW25hPQptZV19KTtyLmFwcGVuZChp KX10cnl7ci5zdWJtaXQoKX1jYXRjaChzKXtjb25zb2xlLmxvZyhzKX19cmV0dXJue2NyZWF0ZTp0 fX09CiksZGVmaW5lKCJwbHVnaW4vdmlld3Mvdmlld3BvcnQiLFsibXZjL3VpL3VpLXBvcnRsZXQi LCJwbHVnaW4vbGlicmFyeS91aSIsIj0KcGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsInV0aWxz L3V0aWxzIl0sZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEJhY2tib25lPQouVmlldy5leHRlbmQo e2NvbnRhaW5lcl9saXN0OltdLGNhbnZhc19saXN0OltdLGluaXRpYWxpemU6ZnVuY3Rpb24oZSx0 KXt0aGk9CnMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRpb25z PTNEci5tZXJnZSh0LHRoaXMub3B0aW9ucz0KRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KCQodGhp cy5fdGVtcGxhdGUoKSkpLHRoaXMuX2Z1bGxzY3JlZW4odGhpcy4kZWwsMTAwPQopLHRoaXMuX2Ny ZWF0ZUNvbnRhaW5lcigiZGl2Iik7dmFyIG49M0R0aGlzO3RoaXMuY2hhcnQub24oInJlZHJhdyIs ZnVuY3Rpb249Cigpe24uX2RyYXcobi5jaGFydCl9KSx0aGlzLmNoYXJ0Lm9uKCJzZXQ6c3RhdGUi LGZ1bmN0aW9uKCl7dmFyIGU9M0RuLiRlbC5maT0KbmQoIiNpbmZvIiksdD0zRG4uJGVsLmZpbmQo Ii5jaGFydHMtdmlld3BvcnQtY29udGFpbmVyIikscj0zRGUuZmluZCgiI2ljb24iPQopO3IucmVt b3ZlQ2xhc3MoKSxlLnNob3coKSxlLmZpbmQoIiN0ZXh0IikuaHRtbChuLmNoYXJ0LmdldCgic3Rh dGVfaW5mbyIpKTs9CnZhciBpPTNEbi5jaGFydC5nZXQoInN0YXRlIik7c3dpdGNoKGkpe2Nhc2Ui b2siOmUuaGlkZSgpLHQuc2hvdygpO2JyZWFrO2Nhcz0KZSJmYWlsZWQiOnIuYWRkQ2xhc3MoImlj b24gZmEgZmEtd2FybmluZyIpLHQuaGlkZSgpO2JyZWFrO2RlZmF1bHQ6ci5hZGRDbGFzPQpzKCJp Y29uIGZhIGZhLXNwaW5uZXIgZmEtc3BpbiIpLHQuc2hvdygpfX0pfSxzaG93OmZ1bmN0aW9uKCl7 dGhpcy4kZWwuc2hvdyg9Cil9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5oaWRlKCl9LF9mdWxs c2NyZWVuOmZ1bmN0aW9uKGUsdCl7ZS5jc3MoImhlaWdodD0KIiwkKHdpbmRvdykuaGVpZ2h0KCkt dCksJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe2UuY3NzKCJoZWlnaHQiLCQod2luZG93PQop LmhlaWdodCgpLXQpfSl9LF9jcmVhdGVDb250YWluZXI6ZnVuY3Rpb24oZSx0KXt0PTNEdHx8MTtm b3IodmFyIG4gaW4gdGhpcy49CmNvbnRhaW5lcl9saXN0KXRoaXMuY29udGFpbmVyX2xpc3Rbbl0u cmVtb3ZlKCk7dGhpcy5jb250YWluZXJfbGlzdD0zRFtdLHRoaT0Kcy5jYW52YXNfbGlzdD0zRFtd O2Zvcih2YXIgbj0zRDA7bjx0O24rKyl7dmFyIHI9M0QkKHRoaXMuX3RlbXBsYXRlQ29udGFpbmVy PQooZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzLiRlbC5hcHBlbmQociksdGhpcy5jb250YWluZXJf bGlzdFtuXT0zRHIsZT0zRD0zRCI9CnN2ZyI/dGhpcy5jYW52YXNfbGlzdFtuXT0zRGQzLnNlbGVj dChyLmZpbmQoIiNjYW52YXMiKVswXSk6dGhpcy5jYW52YXNfbGlzdD0KW25dPTNEci5maW5kKCIj Y2FudmFzIil9fSxfZHJhdzpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMsbj0zRGUuZGVmZXJyZWQu cmVnPQppc3RlcigpLHI9M0RlLmdldCgidHlwZSIpO3RoaXMuY2hhcnRfZGVmaW5pdGlvbj0zRGUu ZGVmaW5pdGlvbjt2YXIgaT0zRHRoaXM9Ci5jaGFydF9kZWZpbml0aW9uLnVzZV9wYW5lbHMscz0z RDE7aSYmKHM9M0RlLmdyb3Vwcy5sZW5ndGgpLHRoaXMuX2NyZWF0ZUNvbj0KdGFpbmVyKHRoaXMu Y2hhcnRfZGVmaW5pdGlvbi50YWcscyksZS5zdGF0ZSgid2FpdCIsIlBsZWFzZSB3YWl0Li4uIik7 aWYoIXRoPQppcy5jaGFydF9kZWZpbml0aW9uLmV4ZWN1dGV8fHRoaXMuY2hhcnRfZGVmaW5pdGlv bi5leGVjdXRlJiZlLmdldCgibW9kaWZpZWQ9CiIpKXRoaXMuYXBwLmpvYnMuY2xlYW51cChlKSxl LnNldCgibW9kaWZpZWQiLCExKTt2YXIgdD0zRHRoaXM7cmVxdWlyZShbInBsdT0KZ2luL2NoYXJ0 cy8iK3RoaXMuYXBwLmNoYXJ0UGF0aChyKSsiL3dyYXBwZXIiXSxmdW5jdGlvbihyKXt2YXIgaT0z RG5ldyByKHQuPQphcHAse2NhbnZhczp0LmNhbnZhc19saXN0fSk7dC5jaGFydF9kZWZpbml0aW9u LmV4ZWN1dGU/dC5hcHAuam9icy5yZXF1ZXN0KGU9Cix0Ll9kZWZhdWx0U2V0dGluZ3NTdHJpbmco ZSksdC5fZGVmYXVsdFJlcXVlc3RTdHJpbmcoZSksZnVuY3Rpb24oKXtpLmRyYXcobj0KLGUsdC5f ZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5KGUpKX0sZnVuY3Rpb24oKXtlLmRlZmVycmVkLmRvbmUo bil9KTppLmRyYXcoPQpuLGUsdC5fZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5KGUpKX0pfSxfZGVm YXVsdFJlcXVlc3RTdHJpbmc6ZnVuY3Rpb24oZSl7dmE9CnIgdD0zRCIiLG49M0QwLHI9M0R0aGlz O3JldHVybiBlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe24rKztmb3IodmFyIGkgaW4gcj0KLmNo YXJ0X2RlZmluaXRpb24uY29sdW1ucyl0Kz0zRGkrIl8iK24rIjoiKyhwYXJzZUludChlLmdldChp KSkrMSkrIiwgIn0pLHQuPQpzdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKX0sX2RlZmF1bHRTZXR0aW5n c1N0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0zRCIiO2Zvcig9CmtleSBpbiBlLnNldHRpbmdzLmF0 dHJpYnV0ZXMpdCs9M0RrZXkrIjoiK2Uuc2V0dGluZ3MuZ2V0KGtleSkrIiwgIjtyZXR1cm4gdD0K LnN1YnN0cmluZygwLHQubGVuZ3RoLTIpfSxfZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5OmZ1bmN0 aW9uKGUpe3ZhciB0PTNEe2dyPQpvdXBzOltdfTt0aGlzLmNoYXJ0X2RlZmluaXRpb24uZXhlY3V0 ZT90LmlkPTNEZS5nZXQoImRhdGFzZXRfaWRfam9iIik6dC5pZD0KPTNEZS5nZXQoImRhdGFzZXRf aWQiKTt2YXIgbj0zRDAsaT0zRHRoaXM7cmV0dXJuIGUuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7 PQp2YXIgcz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNoYXJ0X2RlZmluaXRpb24uY29sdW1ucyl7dmFy IHU9M0RpLmNoYXJ0X2RlZmluaXQ9Cmlvbi5jb2x1bW5zW29dO3Nbb109M0RyLm1lcmdlKHtpbmRl eDplLmdldChvKX0sdSl9dC5ncm91cHMucHVzaCh7a2V5OisrbisiOj0KIitlLmdldCgia2V5Iiks Y29sdW1uczpzfSl9KSx0fSxfdGVtcGxhdGU6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0z RCJjPQpoYXJ0cy12aWV3cG9ydCI+PGRpdiBpZD0zRCJpbmZvIiBjbGFzcz0zRCJpbmZvIj48c3Bh biBpZD0zRCJpY29uIiBjbGFzcz0zRCI9Cmljb24iIC8+PHNwYW4gaWQ9M0QidGV4dCIgY2xhc3M9 M0QidGV4dCIgLz48L2Rpdj48L2Rpdj4nfSxfdGVtcGxhdGVDb250YWluZT0KcjpmdW5jdGlvbihl LHQpe3JldHVybic8ZGl2IGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydC1jb250YWluZXIiIHN0eWxl PTNEIndpPQpkdGg6Jyt0KyclOyI+JysnPGRpdiBpZD0zRCJtZW51Ii8+JysiPCIrZSsnIGlkPTNE ImNhbnZhcyIgY2xhc3M9M0QiY2hhcnRzLXY9Cmlld3BvcnQtY2FudmFzIj4nKyI8L2Rpdj4ifX0p fSksZGVmaW5lKCJwbHVnaW4vdmlld3Mvdmlld2VyIixbInV0aWxzL3V0aWxzIj0KLCJwbHVnaW4v bGlicmFyeS91aSIsIm12Yy91aS91aS1wb3J0bGV0IiwicGx1Z2luL21vZGVscy9ncm91cCIsInBs dWdpbi92aWV3PQpzL3ZpZXdwb3J0IiwicGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCJdLGZ1bmN0 aW9uKGUsdCxuLHIsaSxzKXtyZXR1cm4gQmFja2I9Cm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6 ZTpmdW5jdGlvbihlLHIpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcD0KcC5jaGFy dCx0aGlzLnZpZXdwb3J0X3ZpZXc9M0RuZXcgaShlKTt2YXIgbz0zRHRoaXM7dGhpcy5tZXNzYWdl PTNEbmV3IHQuTWVzPQpzYWdlLHRoaXMucG9ydGxldD0zRG5ldyBuLlZpZXcoe2ljb246ImZhLWJh ci1jaGFydC1vIix0aXRsZToiVmlld3BvcnQiLHNjcm89CmxsYWJsZTohMSxvcGVyYXRpb25zOntl ZGl0X2J1dHRvbjpuZXcgdC5CdXR0b25JY29uKHtpY29uOiJmYS1lZGl0Iix0b29sdGlwOj0KIkN1 c3RvbWl6ZSB0aGlzIGNoYXJ0Iix0aXRsZToiRWRpdG9yIixvbmNsaWNrOmZ1bmN0aW9uKCl7by5f d2FpdChvLmNoYXJ0LGZ1PQpuY3Rpb24oKXtvLmFwcC5nbygiZWRpdG9yIil9KX19KSxwaWN0dXJl X2J1dHRvbjpuZXcgdC5CdXR0b25JY29uKHtpY29uOiJmYS09CmNhbWVyYSIsdG9vbHRpcDoiRG93 bmxvYWQgUERGLWZpbGUgKCIrby5hcHAuY29uZmlnLmdldCgic2NyZWVuc2hvdF91cmwiKSsiKT0K Iix0aXRsZToiU2NyZWVuc2hvdCIsb25jbGljazpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCxm dW5jdGlvbigpe3MuY3JlYXRlPQooby52aWV3cG9ydF92aWV3LiRlbCxvLmFwcC5jb25maWcuZ2V0 KCJzY3JlZW5zaG90X3VybCIpLG8uY2hhcnQuZ2V0KCJ0aXRsZSI9CikpfSl9fSl9fSksdGhpcy5w b3J0bGV0LmFwcGVuZCh0aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMu dj0KaWV3cG9ydF92aWV3LiRlbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4kZWwpO3Zh ciBvPTNEdGhpczt0aGlzLmNoYXJ0PQoub24oImNoYW5nZTp0aXRsZSIsZnVuY3Rpb24oKXtvLl9y ZWZyZXNoVGl0bGUoKX0pfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWw9Ci5zaG93KCksJCh3aW5k b3cpLnRyaWdnZXIoInJlc2l6ZSIpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxf cmVmcj0KZXNoVGl0bGU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJ0aXRsZSIp O3RoaXMucG9ydGxldC50aXRsZShlKX0sPQpfd2FpdDpmdW5jdGlvbihlLHQpe2UuZGVmZXJyZWQu cmVhZHkoKT90KCk6dGhpcy5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnZToiWW89CnVyIGNoYXJ0IGlz IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuIFBsZWFzZSB3YWl0IGFuZCB0cnkgYWdhaW4uIn0p fX0pfSksZD0KZWZpbmUoIm12Yy91aS91aS10YWJzIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24o ZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4PQp0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGVf bmV3OiIiLG9wZXJhdGlvbnM6bnVsbCxvbm5ldzpudWxsfSxpbml0aWFsaXplOmY9CnVuY3Rpb24o dCl7dGhpcy52aXNpYmxlPTNEITEsdGhpcy4kbmF2PTNEbnVsbCx0aGlzLiRjb250ZW50PTNEbnVs bCx0aGlzLmZpcj0Kc3RfdGFiPTNEbnVsbCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v cHRpb25zRGVmYXVsdCk7dmFyIG49M0QkKHRoaXMuPQpfdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7 dGhpcy4kbmF2PTNEbi5maW5kKCIudGFiLW5hdmlnYXRpb24iKSx0aGlzLiRjb250ZW49CnQ9M0Ru LmZpbmQoIi50YWItY29udGVudCIpLHRoaXMuc2V0RWxlbWVudChuKSx0aGlzLmxpc3Q9M0R7fTt2 YXIgcj0zRHRoaXM7dD0KaGlzLm9wdGlvbnMub3BlcmF0aW9ucyYmJC5lYWNoKHRoaXMub3B0aW9u cy5vcGVyYXRpb25zLGZ1bmN0aW9uKGUsdCl7dC4kZWwuPQpwcm9wKCJpZCIsZSksci4kbmF2LmZp bmQoIi5vcGVyYXRpb25zIikuYXBwZW5kKHQuJGVsKX0pO2lmKHRoaXMub3B0aW9ucy5vbm49CmV3 KXt2YXIgaT0zRCQodGhpcy5fdGVtcGxhdGVfdGFiX25ldyh0aGlzLm9wdGlvbnMpKTt0aGlzLiRu YXYuYXBwZW5kKGkpLGkudD0Kb29sdGlwKHt0aXRsZToiQWRkIGEgbmV3IHRhYiIscGxhY2VtZW50 OiJib3R0b20iLGNvbnRhaW5lcjpyLiRlbH0pLGkub24oImNsPQppY2siLGZ1bmN0aW9uKGUpe2ku dG9vbHRpcCgiaGlkZSIpLHIub3B0aW9ucy5vbm5ldygpfSl9fSxhZGQ6ZnVuY3Rpb24oZSl7dmE9 CnIgdD0zRHRoaXMsbj0zRGUuaWQscj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKGUpKSxpPTNEJCh0 aGlzLl90ZW1wbGF0ZV90YWJfYz0Kb250ZW50KGUpKTt0aGlzLmxpc3Rbbl09M0RlLm9uZGVsPyEw OiExLHRoaXMub3B0aW9ucy5vbm5ldz90aGlzLiRuYXYuZmluZCgiPQojbmV3LXRhYiIpLmJlZm9y ZShyKTp0aGlzLiRuYXYuYXBwZW5kKHIpLGkuYXBwZW5kKGUuJGVsKSx0aGlzLiRjb250ZW50LmFw cGU9Cm5kKGkpLF8uc2l6ZSh0aGlzLmxpc3QpPTNEPTNEMSYmKHIuYWRkQ2xhc3MoImFjdGl2ZSIp LGkuYWRkQ2xhc3MoImFjdGl2ZSIpLD0KdGhpcy5maXJzdF90YWI9M0RuKTtpZihlLm9uZGVsKXt2 YXIgcz0zRHIuZmluZCgiI2RlbGV0ZSIpO3MudG9vbHRpcCh7dGl0bGU6PQoiRGVsZXRlIHRoaXMg dGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOnQuJGVsfSkscy5vbigiY2xpY2siLGZ1 bmN0aW89Cm4oKXtyZXR1cm4gcy50b29sdGlwKCJkZXN0cm95IiksdC4kZWwuZmluZCgiLnRvb2x0 aXAiKS5yZW1vdmUoKSxlLm9uZGVsKCksIT0KMX0pfXIub24oImNsaWNrIixmdW5jdGlvbihyKXty LnByZXZlbnREZWZhdWx0KCksZS5vbmNsaWNrP2Uub25jbGljaygpOnQuc2hvPQp3KG4pfSl9LGRl bDpmdW5jdGlvbihlKXt0aGlzLiRlbC5maW5kKCIjdGFiLSIrZSkucmVtb3ZlKCksdGhpcy4kZWwu ZmluZCgiI3Q9CmFiLWNvbnRlbnQtIitlKS5yZW1vdmUoKSx0aGlzLmZpcnN0X3RhYj0zRD0zRGUm Jih0aGlzLmZpcnN0X3RhYj0zRG51bGwpLHRoaT0Kcy5maXJzdF90YWIhPTNEbnVsbCYmdGhpcy5z aG93KHRoaXMuZmlyc3RfdGFiKX0sZGVsUmVtb3ZhYmxlOmZ1bmN0aW9uKCl7Zm9yPQoodmFyIGUg aW4gdGhpcy5saXN0KXRoaXMubGlzdFtlXSYmdGhpcy5kZWwoZSl9LHNob3c6ZnVuY3Rpb24oZSl7 dGhpcy4kZWwuZmE9CmRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMCxlJiYodGhpcy4kZWwu ZmluZCgiLnRhYi1lbGVtZW50IikucmVtb3ZlQ2xhcz0KcygiYWN0aXZlIiksdGhpcy4kZWwuZmlu ZCgiLnRhYi1wYW5lIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoPQoiI3Rh Yi0iK2UpLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCIjdGFiLWNvbnRlbnQtIitl KS5hZGRDbGFzcygiYWM9CnRpdmUiKSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0 KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGhpZGVPcD0KZXJhdGlvbjpmdW5jdGlvbihlKXt0 aGlzLiRuYXYuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGUpPQp7 dGhpcy4kbmF2LmZpbmQoIiMiK2UpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7 dmFyIG49M0R0aGlzLiRuYXY9Ci5maW5kKCIjIitlKTtuLm9mZigiY2xpY2siKSxuLm9uKCJjbGlj ayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aD0KaXMuJGVsLmZpbmQoIiN0YWIt dGl0bGUtdGV4dC0iK2UpO3JldHVybiB0JiZuLmh0bWwodCksbi5odG1sKCl9LF90ZW1wbGF0ZTpm PQp1bmN0aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFicy1s ZWZ0Ij48dWwgaWQ9M0QidGFiLW49CmF2aWdhdGlvbiIgY2xhc3M9M0QidGFiLW5hdmlnYXRpb24g bmF2IG5hdi10YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiID0Kc3R5bGU9M0QiZmxvYXQ6 IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0QidGFiLWNv bnRlPQpudCIgY2xhc3M9M0QidGFiLWNvbnRlbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFiX25l dzpmdW5jdGlvbihlKXtyZXR1cm4nPGw9CmkgaWQ9M0QibmV3LXRhYiI+PGEgaHJlZj0zRCJqYXZh c2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBmYT0KIGZhLXBsdXMtY2ly Y2xlIi8+JytlLnRpdGxlX25ldysiPC9hPiIrIjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5jdGlv bihlKXt2PQphciB0PTNEJzxsaSBpZD0zRCJ0YWItJytlLmlkKyciIGNsYXNzPTNEInRhYi1lbGVt ZW50Ij4nKyc8YSBpZD0zRCJ0YWItdGl0bGU9Ci1saW5rLScrZS5pZCsnIiB0aXRsZT0zRCIiIGhy ZWY9M0QiI3RhYi1jb250ZW50LScrZS5pZCsnIiBkYXRhLW9yaWdpbmFsLXRpdD0KbGU9M0QiIj4n Kyc8c3BhbiBpZD0zRCJ0YWItdGl0bGUtdGV4dC0nK2UuaWQrJyI+JytlLnRpdGxlKyI8L3NwYW4+ IjtyZXR1cm4gPQplLm9uZGVsJiYodCs9M0QnPGkgaWQ9M0QiZGVsZXRlIiBjbGFzcz0zRCJ1aS10 YWJzLWRlbGV0ZSBmYSBmYS1taW51cy1jaXJjbGU9CiIvPicpLHQrPTNEIjwvYT48L2xpPiIsdH0s X3RlbXBsYXRlX3RhYl9jb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGlkPQo9M0QidGFi LWNvbnRlbnQtJytlLmlkKyciIGNsYXNzPTNEInRhYi1wYW5lIi8+J319KTtyZXR1cm57Vmlldzp0 fX0pLGRlZmluZSg9CiJwbHVnaW4vbGlicmFyeS91aS10YWJsZSIsWyJ1dGlscy91dGlscyJdLGZ1 bmN0aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldz0KLmV4dGVuZCh7cm93Om51bGwscm93X2Nv dW50OjAsb3B0aW9uc0RlZmF1bHQ6e2NvbnRlbnQ6Ik5vIGNvbnRlbnQgYXZhaWxhYmxlPQouIixv bmNoYW5nZTpudWxsLG9uZGJsY2xpY2s6bnVsbCxvbmNvbmZpcm06bnVsbCxjbHM6IiJ9LGV2ZW50 czp7Y2xpY2s6Il9vbmM9CmxpY2siLGRibGNsaWNrOiJfb25kYmxjbGljayJ9LGluaXRpYWxpemU6 ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZT0KKHQsdGhpcy5vcHRpb25zRGVmYXVs dCk7dmFyIG49M0QkKHRoaXMuX3RlbXBsYXRlKHQpKTt0aGlzLiR0aGVhZD0zRG4uZmluZCgiPQp0 aGVhZCIpLHRoaXMuJHRib2R5PTNEbi5maW5kKCJ0Ym9keSIpLHRoaXMuJHRtZXNzYWdlPTNEbi5m aW5kKCJ0bWVzc2FnZSIpLHQ9Cmhpcy5zZXRFbGVtZW50KG4pLHRoaXMucm93PTNEJCgiPHRyPjwv dHI+Iil9LGFkZEhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdD0zRD0KJCgiPHRoPjwvdGg+Iik7dC5h cHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHQpfSxhcHBlbmRIZWFkZXI6ZnVuY3Rpb24oKXt0aGlz PQouJHRoZWFkLmFwcGVuZCh0aGlzLnJvdyksdGhpcy5yb3c9M0QkKCI8dHI+PC90cj4iKX0sYWRk OmZ1bmN0aW9uKGUsdCxuKXt2YXI9CiByPTNEJCgiPHRkPjwvdGQ+Iik7dCYmci5jc3MoIndpZHRo Iix0KSxuJiZyLmNzcygidGV4dC1hbGlnbiIsbiksci5hcHBlbmQoZT0KKSx0aGlzLnJvdy5hcHBl bmQocil9LGFwcGVuZDpmdW5jdGlvbihlKXt0aGlzLl9jb21taXQoZSl9LHByZXBlbmQ6ZnVuY3Rp b24oPQplKXt0aGlzLl9jb21taXQoZSwhMCl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4k ZWwuZmluZCgiIyIrZSl9LGRlbDpmdW49CmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4kdGJvZHkuZmlu ZCgiIyIrZSk7dC5sZW5ndGg+MCYmKHQucmVtb3ZlKCksdGhpcy5yb3dfYz0Kb3VudC0tLHRoaXMu X3JlZnJlc2goKSl9LGRlbEFsbDpmdW5jdGlvbigpe3RoaXMuJHRib2R5Lmh0bWwoIiIpLHRoaXMu cm93X2NvPQp1bnQ9M0QwLHRoaXMuX3JlZnJlc2goKX0sdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5i ZWZvcmU9M0R0aGlzLiR0Ym9keS5maW5kKCI9Ci5jdXJyZW50IikuYXR0cigiaWQiKSxlIT0zRD0z RHVuZGVmaW5lZCYmKHRoaXMuJHRib2R5LmZpbmQoInRyIikucmVtb3ZlQ2xhcz0KcygiY3VycmVu dCIpLGUmJnRoaXMuJHRib2R5LmZpbmQoIiMiK2UpLmFkZENsYXNzKCJjdXJyZW50IikpO3ZhciB0 PTNEdGhpcy4kPQp0Ym9keS5maW5kKCIuY3VycmVudCIpLmF0dHIoImlkIik7cmV0dXJuIHQ9M0Q9 M0Q9M0R1bmRlZmluZWQ/bnVsbDoodCE9M0R0aGk9CnMuYmVmb3JlJiZ0aGlzLm9wdGlvbnMub25j aGFuZ2UmJnRoaXMub3B0aW9ucy5vbmNoYW5nZShlKSx0KX0sc2l6ZTpmdW5jdGlvbj0KKCl7cmV0 dXJuIHRoaXMuJHRib2R5LmZpbmQoInRyIikubGVuZ3RofSxfY29tbWl0OmZ1bmN0aW9uKGUsdCl7 dGhpcy5kZWwoZSksPQp0aGlzLnJvdy5hdHRyKCJpZCIsZSksdD90aGlzLiR0Ym9keS5wcmVwZW5k KHRoaXMucm93KTp0aGlzLiR0Ym9keS5hcHBlbmQodGg9CmlzLnJvdyksdGhpcy5yb3c9M0QkKCI8 dHI+PC90cj4iKSx0aGlzLnJvd19jb3VudCsrLHRoaXMuX3JlZnJlc2goKX0sX29uY2xpYz0Kazpm dW5jdGlvbihlKXt2YXIgdD0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcmdldCkuY2xvc2VzdCgi dHIiKS5hdHRyKCJpZCIpPQo7biE9M0QiIiYmbiYmdCE9M0RuJiYodGhpcy5vcHRpb25zLm9uY29u ZmlybT90aGlzLm9wdGlvbnMub25jb25maXJtKG4pOnRoaXM9Ci52YWx1ZShuKSl9LF9vbmRibGNs aWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0aW9ucy5vbj0K ZGJsY2xpY2smJnRoaXMub3B0aW9ucy5vbmRibGNsaWNrKHQpfSxfcmVmcmVzaDpmdW5jdGlvbigp e3RoaXMucm93X2NvdW50PTNEPQo9M0QwP3RoaXMuJHRtZXNzYWdlLnNob3coKTp0aGlzLiR0bWVz c2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXQ9CnVybic8ZGl2Pjx0YWJsZSBj bGFzcz0zRCJ1aS10YWJsZSAnK2UuY2xzKyciPicrIjx0aGVhZD48L3RoZWFkPiIrJzx0Ym9keSBz dD0KeWxlPTNEImN1cnNvcjogcG9pbnRlcjsiPjwvdGJvZHk+JysiPC90YWJsZT4iKyI8dG1lc3Nh Z2U+IitlLmNvbnRlbnQrIjwvdG1lPQpzc2FnZT4iKyI8ZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19 KSxkZWZpbmUoInBsdWdpbi92aWV3cy9ncm91cCIsWyJwbHVnaW4vbGk9CmJyYXJ5L3VpLXRhYmxl IiwicGx1Z2luL2xpYnJhcnkvdWkiLCJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUsdCxuKXtyZXR1 cm4gQj0KYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihyLGkpe3RoaXMu YXBwPTNEcjt2YXIgcz0zRHRoaXM7dGhpPQpzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5n cm91cD0zRGkuZ3JvdXAsdGhpcy5ncm91cF9rZXk9M0RuZXcgdC5JbnB1dCg9CntwbGFjZWhvbGRl cjoiRGF0YSBsYWJlbCIsb25jaGFuZ2U6ZnVuY3Rpb24oZSl7cy5ncm91cC5zZXQoImtleSIsZSl9 fSksdGhpcz0KLnRhYmxlPTNEbmV3IGUuVmlldyh7Y29udGVudDoiTm8gZGF0YSBjb2x1bW4uIn0p O3ZhciBvPTNEJCgiPGRpdi8+Iik7by5hcHBlPQpuZChuLndyYXAoKG5ldyB0LkxhYmVsKHt0aXRs ZToiUHJvdmlkZSBhIGxhYmVsOiJ9KSkuJGVsKSksby5hcHBlbmQobi53cmFwKHQ9Cmhpcy5ncm91 cF9rZXkuJGVsKSksby5hcHBlbmQobi53cmFwKChuZXcgdC5MYWJlbCh7dGl0bGU6IlNlbGVjdCBj b2x1bW5zOiJ9KT0KKS4kZWwpKSxvLmFwcGVuZChuLndyYXAodGhpcy50YWJsZS4kZWwpKSx0aGlz LnNldEVsZW1lbnQobyk7dmFyIHM9M0R0aGlzO3RoPQppcy5jaGFydC5vbigiY2hhbmdlOmRhdGFz ZXRfaWQiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaFRhYmxlKCl9KSx0aGlzLmNoYXJ0Lm89Cm4oImNo YW5nZTp0eXBlIixmdW5jdGlvbigpe3MuX3JlZnJlc2hUYWJsZSgpfSksdGhpcy5ncm91cC5vbigi Y2hhbmdlOmtleSIsZj0KdW5jdGlvbigpe3MuX3JlZnJlc2hHcm91cEtleSgpfSksdGhpcy5ncm91 cC5vbigiY2hhbmdlIixmdW5jdGlvbigpe3MuX3JlZnJlPQpzaEdyb3VwKCl9KSx0aGlzLl9yZWZy ZXNoVGFibGUoKSx0aGlzLl9yZWZyZXNoR3JvdXBLZXkoKSx0aGlzLl9yZWZyZXNoR3JvdXA9Cigp fSxfcmVmcmVzaFRhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmdldCgiZGF0YXNl dF9pZCIpLG49M0R0aGlzLj0KY2hhcnQuZ2V0KCJ0eXBlIik7aWYoIWV8fCFuKXJldHVybjt2YXIg cj0zRHRoaXMsaT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjt0PQpoaXMudGFibGUuZGVsQWxsKCk7 dmFyIHM9M0R7fTtmb3IodmFyIG8gaW4gaS5jb2x1bW5zKXt2YXIgdT0zRGkuY29sdW1uc1tvXTs9 CmlmKCF1KXtjb25zb2xlLmRlYnVnKCJHcm91cDo6X3JlZnJlc2hUYWJsZSgpIC0gU2tpcHBpbmcg Y29sdW1uIGRlZmluaXRpb24uIj0KKTtjb250aW51ZX12YXIgYT0zRG5ldyB0LlNlbGVjdC5WaWV3 KHtpZDoic2VsZWN0XyIrbyx3YWl0OiEwfSk7dGhpcy50YWJsZS5hPQpkZCh1LnRpdGxlLCIyNSUi KSx0aGlzLnRhYmxlLmFkZChhLiRlbCksdGhpcy50YWJsZS5hcHBlbmQobyksc1tvXT0zRGF9dGhp cy49CmNoYXJ0LnN0YXRlKCJ3YWl0IiwiTG9hZGluZyBtZXRhZGF0YS4uLiIpO3ZhciBmPTNEdGhp cy5jaGFydC5kZWZlcnJlZC5yZWdpcz0KdGVyKCk7dGhpcy5hcHAuZGF0YXNldHMucmVxdWVzdCh7 aWQ6ZX0sZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpci5fYWRkUm93PQoodCxlLHMsaS5jb2x1 bW5zW3RdKTtyLmNoYXJ0LnN0YXRlKCJvayIsIk1ldGFkYXRhIGluaXRpYWxpemVkLi4uIiksci5j aGFydC49CmRlZmVycmVkLmRvbmUoZil9KX0sX2FkZFJvdzpmdW5jdGlvbihlLHQsbixyKXt2YXIg aT0zRHRoaXMscz0zRHIuaXNfbGFiZWwsbz0KPTNEci5pc19hdXRvLHU9M0RyLmlzX251bWVyaWMs YT0zRFtdLGY9M0RuW2VdO28mJmEucHVzaCh7bGFiZWw6IkNvbHVtbjogUm93PQogTnVtYmVyIix2 YWx1ZToiYXV0byJ9KTt2YXIgbD0zRHQubWV0YWRhdGFfY29sdW1uX3R5cGVzO2Zvcih2YXIgYyBp biBsKXt2YXI9CiBoPTNEITE7bFtjXT0zRD0zRCJpbnQifHxsW2NdPTNEPTNEImZsb2F0Ij9oPTNE dTpoPTNEcyxoJiZhLnB1c2goe2xhYmVsOiJDbz0KbHVtbjogIisocGFyc2VJbnQoYykrMSkrIiBb IitsW2NdKyJdIix2YWx1ZTpjfSl9Zi51cGRhdGUoYSk7aWYoIWYuZXhpc3RzKHRoPQppcy5ncm91 cC5nZXQoZSkpKXt2YXIgcD0zRGYuZmlyc3QoKTtjb25zb2xlLmRlYnVnKCdHcm91cCgpOjpfYWRk Um93KCkgLSBTd2k9CnRjaGluZyBtb2RlbCB2YWx1ZSBmcm9tICInK3RoaXMuZ3JvdXAuZ2V0KGUp KyciIHRvICInK3ArJyIuJyksdGhpcy5ncm91cC5zZT0KdChlLHApfWYudmFsdWUodGhpcy5ncm91 cC5nZXQoZSkpLGYuc2V0T25DaGFuZ2UoZnVuY3Rpb24odCl7aS5ncm91cC5zZXQoZSx0PQopLGku Y2hhcnQuc2V0KCJtb2RpZmllZCIsITApfSksZi5zaG93KCl9LF9yZWZyZXNoR3JvdXA6ZnVuY3Rp b24oKXt0aGlzLmdyb3U9CnAuc2V0KCJkYXRlIixuLnRpbWUoKSl9LF9yZWZyZXNoR3JvdXBLZXk6 ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuZ3JvdXAuZ2V0KD0KImtleSIpO2U9M0Q9M0Q9M0R1bmRl ZmluZWQmJihlPTNEIiIpLHRoaXMuZ3JvdXBfa2V5LnZhbHVlKGUpfX0pfSksZGVmaW5lKCJwPQps dWdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLFsicGx1Z2luL2xpYnJhcnkvdWktdGFibGUiLCJw bHVnaW4vbGlicmFyeS91aSI9CiwidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9 M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bD0KdDp7dGl0bGU6IiIsY29udGVu dDoiIixtb2RlOiIifSxsaXN0OltdLGluaXRpYWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzLmFwcD0K PTNEcix0aGlzLm9wdGlvbnM9M0RuLm1lcmdlKGksdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy50 YWJsZV90aXRsZT0zRG5ldyB0PQouTGFiZWwoe3RpdGxlOnRoaXMub3B0aW9ucy50aXRsZX0pLHRo aXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb250ZW50OnRoaXMub3A9CnRpb25zLmNvbnRlbnR9KTt2 YXIgcz0zRCQoJzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybSIvPicpO3RoaXMub3B0aW9ucy50 aT0KdGxlJiZzLmFwcGVuZChuLndyYXAodGhpcy50YWJsZV90aXRsZS4kZWwpKSxzLmFwcGVuZChu LndyYXAodGhpcy50YWJsZS4kZWwpPQopLHRoaXMuc2V0RWxlbWVudChzKX0sdGl0bGU6ZnVuY3Rp b24oZSl7dGhpcy50YWJsZV90aXRsZS50aXRsZShlKX0sdXBkYXRlOmY9CnVuY3Rpb24oZSx0KXt0 aGlzLnRhYmxlLmRlbEFsbCgpLHRoaXMubGlzdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXRoaXMuX2Fk ZChlWz0Kbl0uaWR8fG4sZVtuXSx0KTtmb3IodmFyIG4gaW4gdGhpcy5saXN0KXRoaXMubGlzdFtu XS50cmlnZ2VyKCJjaGFuZ2UiKX0sX2FkPQpkOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT0zRHRoaXMs cz0zRG51bGwsbz0zRG4udHlwZTtzd2l0Y2gobyl7Y2FzZSJ0ZXh0IjpzPQo9M0RuZXcgdC5JbnB1 dCh7aWQ6ImZpZWxkLSIrZSxwbGFjZWhvbGRlcjpuLnBsYWNlaG9sZGVyLHZhbHVlOnIuZ2V0KGUp LG9uY2g9CmFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KX19KTticmVhaztjYXNlInJhZGlvYnV0 dG9uIjpzPTNEbmV3IHQuUmFkaW9CdXR0bz0Kbih7aWQ6ImZpZWxkLSIrZSxkYXRhOm4uZGF0YSx2 YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChlLHQpPQo7dmFyIHM9M0Rf LmZpbmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzKXtmb3IodmFyIG8gaW4gcy5zaG93KXt2 YXIgdT0zRHM9Ci5zaG93W29dO2kudGFibGUuZ2V0KHUpLnNob3coKX1mb3IodmFyIG8gaW4gcy5o aWRlKXt2YXIgdT0zRHMuaGlkZVtvXTtpLnRhYj0KbGUuZ2V0KHUpLmhpZGUoKX19fX0pO2JyZWFr O2Nhc2Uic2VsZWN0IjpzPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJmaWVsZC0iPQorZSxkYXRh Om4uZGF0YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChlLHQpO3Zh ciBzPTNEXy5maW49CmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzKXtmb3IodmFyIG8gaW4g cy5zaG93KXt2YXIgdT0zRHMuc2hvd1tvXTtpLnRhYj0KbGUuZ2V0KHUpLnNob3coKX1mb3IodmFy IG8gaW4gcy5oaWRlKXt2YXIgdT0zRHMuaGlkZVtvXTtpLnRhYmxlLmdldCh1KS5oaWRlPQooKX19 fX0pO2JyZWFrO2Nhc2UiZGF0YXNldCI6cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQt IitlLG9uY2hhbmdlOmY9CnVuY3Rpb24odCl7ci5zZXQoZSx0KX19KSxpLmFwcC5kYXRhc2V0cy5v bigiYWxsIixmdW5jdGlvbigpe3ZhciB0PTNEW107aS5hcD0KcC5kYXRhc2V0cy5lYWNoKGZ1bmN0 aW9uKGUpe2UuZ2V0KCJkYXRhdHlwZV9pZCIpPTNEPTNEbi5kYXRhJiZ0LnB1c2goe3ZhbHVlPQo6 ZS5nZXQoImlkIiksbGFiZWw6ZS5nZXQoIm5hbWUiKX0pfSkscy51cGRhdGUodCksci5nZXQoZSl8 fHIuc2V0KGUscy5maXJzdCg9CikpLHMudmFsdWUoci5nZXQoZSkpfSksaS5hcHAuZGF0YXNldHMu dHJpZ2dlcigiYWxsLmRhdGFzZXRzIik7YnJlYWs7Y2FzZSJ0ZT0KeHRhcmVhIjpzPTNEbmV3IHQu VGV4dGFyZWEoe2lkOiJmaWVsZC0iK2Usb25jaGFuZ2U6ZnVuY3Rpb24oKXtyLnNldChlLHMudmFs PQp1ZSgpKX19KTticmVhaztjYXNlInNlcGFyYXRvciI6cz0zRCQoIjxkaXYvPiIpO2JyZWFrO2Rl ZmF1bHQ6cz0zRG5ldyB0LklucHU9CnQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFj ZWhvbGRlcix0eXBlOm4udHlwZSxvbmNoYW5nZTpmdW5jdGlvbigpez0Kci5zZXQoZSxzLnZhbHVl KCkpfX0pfWlmKG8hPTNEInNlcGFyYXRvciIpe3IuZ2V0KGUpfHxyLnNldChlLG4uaW5pdCkscy52 YWx1PQplKHIuZ2V0KGUpKSx0aGlzLmxpc3RbZV09M0RzO3ZhciB1PTNEJCgiPGRpdi8+Iik7dS5h cHBlbmQocy4kZWwpLG4uaW5mbyYmdS49CmFwcGVuZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1m b3JtLWluZm8iPicrbi5pbmZvKyI8L2Rpdj4iKSx0aGlzLm9wdGlvbnMucz0KdHlsZT0zRD0zRCJi b2xkIj8odGhpcy50YWJsZS5hZGQoKG5ldyB0LkxhYmVsKHt0aXRsZTpuLnRpdGxlLGNsczoiZm9y bS1sYWJlPQpsIn0pKS4kZWwpLHRoaXMudGFibGUuYWRkKHUpKToodGhpcy50YWJsZS5hZGQoJzxz cGFuIGNsYXNzPTNEInVpLXRhYmxlLWZvcm09Ci10aXRsZSI+JytuLnRpdGxlKyI8L3NwYW4+Iiwi MjUlIiksdGhpcy50YWJsZS5hZGQodSkpfWVsc2UgdGhpcy50YWJsZS5hZGQoJz0KPGRpdiBjbGFz cz0zRCJ1aS10YWJsZS1mb3JtLXNlcGFyYXRvciI+JytuLnRpdGxlKyI6PGRpdi8+IiksdGhpcy50 YWJsZS5hZGQoPQokKCI8ZGl2Lz4iKSk7dGhpcy50YWJsZS5hcHBlbmQoZSl9fSk7cmV0dXJue1Zp ZXc6cn19KSxkZWZpbmUoInBsdWdpbi92aWV3cy89CnNldHRpbmdzIixbInBsdWdpbi9saWJyYXJ5 L3VpIiwicGx1Z2luL2xpYnJhcnkvdWktdGFibGUtZm9ybSIsInV0aWxzL3V0aWxzIj0KXSxmdW5j dGlvbihlLHQsbil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0 aW9uKGUsbil7dGhpPQpzLmFwcD0zRGU7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlzLmFw cC5jaGFydCx0aGlzLmZvcm09M0RuZXcgdC5WaWV3KHs9CnRpdGxlOiJDaGFydCBvcHRpb25zOiIs Y29udGVudDoiVGhpcyBjaGFydCB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYW55IG9wdGlvbj0Kcy4i fSksdGhpcy5zZXRFbGVtZW50KHRoaXMuZm9ybS4kZWwpO3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0 Lm9uKCJjaGFuZ2UiLGZ1PQpuY3Rpb24oKXtyLl9yZWZyZXNoKCl9KX0sX3JlZnJlc2g6ZnVuY3Rp b24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjs9CmlmKCFlKXJldHVybjt0aGlzLmZv cm0udGl0bGUoZS5jYXRlZ29yeSsiIC0gIitlLnRpdGxlKyI6IiksdGhpcy5mb3JtLnVwZGF0ZT0K KGUuc2V0dGluZ3MsdGhpcy5jaGFydC5zZXR0aW5ncyl9fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3 cy90eXBlcyIsWyJ1dGlscy91PQp0aWxzIiwicGx1Z2luL2xpYnJhcnkvdWkiXSxmdW5jdGlvbihl LHQpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW89Cm5zRGVmYXVsdDp7b25jaGFu Z2U6bnVsbCxvbmRibGNsaWNrOm51bGx9LGV2ZW50czp7Y2xpY2s6Il9vbmNsaWNrIixkYmxjbGlj az0KOiJfb25kYmxjbGljayJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHRoaXM7 dGhpcy5hcHA9M0R0LHRoaXMub3B0PQppb25zPTNEZS5tZXJnZShuLHRoaXMub3B0aW9uc0RlZmF1 bHQpO3ZhciBpPTNEJCgnPGRpdiBjbGFzcz0zRCJjaGFydHMtZ3JpZCI9Ci8+Jyk7dGhpcy5zZXRF bGVtZW50KGkpLHRoaXMuX3JlbmRlcigpLHRoaXMuX2ZpbHRlcigiZGVmYXVsdCIpfSx2YWx1ZTpm dW5jdD0KaW9uKGUpe3ZhciB0PTNEdGhpcy4kZWwuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIp O2UhPTNEPTNEdW5kZWZpbmVkJiYodGhpPQpzLiRlbC5maW5kKCIuY3VycmVudCIpLnJlbW92ZUNs YXNzKCJjdXJyZW50IiksdGhpcy4kZWwuZmluZCgiIyIrZSkuYWRkQ2xhc3M9CigiY3VycmVudCIp KTt2YXIgbj0zRHRoaXMuJGVsLmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtyZXR1cm4gbj0z RD0zRD0zRD0KdW5kZWZpbmVkP251bGw6KG4hPTNEdCYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0 aGlzLm9wdGlvbnMub25jaGFuZ2UoZSksbil9PQosX2ZpbHRlcjpmdW5jdGlvbihlKXt2YXIgdD0z RHRoaXMuYXBwLnR5cGVzLmF0dHJpYnV0ZXM7Zm9yKHZhciBuIGluIHQpe3ZhciA9CnI9M0R0W25d LGk9M0R0aGlzLiRlbC5maW5kKCIjIituKSxzPTNEci5rZXl3b3Jkc3x8IiI7cy5pbmRleE9mKGUp PTNEPTNELTEmJj0KZSE9M0QiYWxsIj9pLmhpZGUoKTppLnNob3coKX19LF9yZW5kZXI6ZnVuY3Rp b24oKXt2YXIgdD0zRHt9LG49M0R0aGlzLmFwcC50PQp5cGVzLmF0dHJpYnV0ZXM7Zm9yKHZhciBy IGluIG4pe3ZhciBpPTNEbltyXSxzPTNEaS5jYXRlZ29yeTt0W3NdfHwodFtzXT0zRHs9Cn0pLHRb c11bcl09M0RpfWZvcih2YXIgcyBpbiB0KXt2YXIgbz0zRCQoJzxkaXYgc3R5bGU9M0QiY2xlYXI6 IGJvdGg7Ii8+Jyk7bz0KLmFwcGVuZChlLndyYXAodGhpcy5fdGVtcGxhdGVfaGVhZGVyKHt0aXRs ZTpzfSkpKTtmb3IodmFyIHIgaW4gdFtzXSl7dmFyIGk9Cj0zRHRbc11bcl07by5hcHBlbmQoZS53 cmFwKHRoaXMuX3RlbXBsYXRlX2l0ZW0oe2lkOnIsdGl0bGU6aS50aXRsZSsiICgiK2kubD0KaWJy YXJ5KyIpIix1cmw6Y29uZmlnLmFwcF9yb290KyJjaGFydHMvIit0aGlzLmFwcC5jaGFydFBhdGgo cikrIi9sb2dvLnBuZyJ9PQopKSl9dGhpcy4kZWwuYXBwZW5kKGUud3JhcChvKSl9fSxfb25jbGlj azpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMudmFsdWUoKSw9Cm49M0QkKGUudGFyZ2V0KS5jbG9z ZXN0KCIuaXRlbSIpLmF0dHIoImlkIik7biE9M0QiIiYmbiYmdCE9M0RuJiZ0aGlzLnZhbHVlKD0K bil9LF9vbmRibGNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMu b3B0aW9ucy5vbmRibGNsaWNrPQomJnRoaXMub3B0aW9ucy5vbmRibGNsaWNrKHQpfSxfdGVtcGxh dGVfaGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGNsYXM9CnM9M0QiaGVhZGVyIj4mYnVs bDsgJytlLnRpdGxlKyI8ZGl2PiJ9LF90ZW1wbGF0ZV9pdGVtOmZ1bmN0aW9uKGUpe3JldHVybic8 ZD0KaXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEIml0ZW0iPicrJzxpbWcgY2xhc3M9M0QiaW1h Z2UiIHNyYz0zRCInK2UudXJsKyciPQo+JysnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxl KyI8L2Rpdj4iKyI8ZGl2PiJ9fSl9KSxkZWZpbmUoInBsdWdpbi92aWU9CndzL2VkaXRvciIsWyJt dmMvdWkvdWktdGFicyIsInBsdWdpbi9saWJyYXJ5L3VpIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJ1 dGlscz0KL3V0aWxzIiwicGx1Z2luL21vZGVscy9jaGFydCIsInBsdWdpbi9tb2RlbHMvZ3JvdXAi LCJwbHVnaW4vdmlld3MvZ3JvdXAiLCJwPQpsdWdpbi92aWV3cy9zZXR0aW5ncyIsInBsdWdpbi92 aWV3cy90eXBlcyJdLGZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8sdSxhKXtyZXQ9CnVybiBCYWNrYm9u ZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2hlYWRlcjohMCxjb250ZW50OiJObyBjb250 ZW50IGF2YT0KaWxhYmxlLiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oaSxzKXt2YXIgbz0zRHRoaXM7 dGhpcy5hcHA9M0RpLHRoaXMuY2hhcnQ9M0R0PQpoaXMuYXBwLmNoYXJ0LHRoaXMub3B0aW9ucz0z RHIubWVyZ2Uocyx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLm1lc3NhZ2U9M0Q9Cm5ldyB0Lk1l c3NhZ2UsdGhpcy5wb3J0bGV0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEtYmFyLWNoYXJ0LW8iLHRp dGxlOiJFZGl0bz0KciIsb3BlcmF0aW9uczp7c2F2ZTpuZXcgdC5CdXR0b25JY29uKHtpY29uOiJm YS1zYXZlIix0b29sdGlwOiJEcmF3IENoYXJ0Iix0PQppdGxlOiJEcmF3IixvbmNsaWNrOmZ1bmN0 aW9uKCl7by5fc2F2ZUNoYXJ0KCl9fSksYmFjazpuZXcgdC5CdXR0b25JY29uKHtpY289Cm46ImZh LWNhcmV0LWxlZnQiLHRvb2x0aXA6IlJldHVybiB0byBWaWV3ZXIiLHRpdGxlOiJDYW5jZWwiLG9u Y2xpY2s6ZnVuY3Rpbz0Kbigpe28uYXBwLmdvKCJ2aWV3ZXIiKSxvLmFwcC5zdG9yYWdlLmxvYWQo KX19KX19KSx0aGlzLnR5cGVzPTNEbmV3IGEoaSx7b25jPQpoYW5nZTpmdW5jdGlvbihlKXt2YXIg dD0zRG8uYXBwLnR5cGVzLmdldChlKTt0fHxjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBFZGk9CnRv cjo6b25jaGFuZ2UoKSAtIENoYXJ0IHR5cGUgbm90IHN1cHBvcnRlZC4iKSxvLmNoYXJ0LmRlZmlu aXRpb249M0R0LG8uY2hhcj0KdC5zZXR0aW5ncy5jbGVhcigpLG8uY2hhcnQuc2V0KHt0eXBlOmV9 KSxvLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKSxjb25zb2xlPQouZGVidWcoIkVkaXRvcjo6b25j aGFuZ2UoKSAtIFN3aXRjaGVkIGNoYXJ0IHR5cGUuIil9LG9uZGJsY2xpY2s6ZnVuY3Rpb24oZSk9 CntvLl9zYXZlQ2hhcnQoKX19KSx0aGlzLnRhYnM9M0RuZXcgZS5WaWV3KHt0aXRsZV9uZXc6IkFk ZCBEYXRhIixvbm5ldzpmdW5jdD0KaW9uKCl7dmFyIGU9M0RvLl9hZGRHcm91cE1vZGVsKCk7by50 YWJzLnNob3coZS5pZCl9fSksdGhpcy50aXRsZT0zRG5ldyB0LkluPQpwdXQoe3BsYWNlaG9sZGVy OiJDaGFydCB0aXRsZSIsb25jaGFuZ2U6ZnVuY3Rpb24oKXtvLmNoYXJ0LnNldCgidGl0bGUiLG8u dGk9CnRsZS52YWx1ZSgpKX19KTt2YXIgZj0zRCQoIjxkaXYvPiIpO2YuYXBwZW5kKHIud3JhcCgo bmV3IHQuTGFiZWwoe3RpdGxlOiJQcj0Kb3ZpZGUgYSBjaGFydCB0aXRsZToifSkpLiRlbCkpLGYu YXBwZW5kKHIud3JhcCh0aGlzLnRpdGxlLiRlbCkpLGYuYXBwZW5kKHIuPQp3cmFwKChuZXcgdC5M YWJlbCh7dGl0bGU6IlNlbGVjdCBhIGNoYXJ0IHR5cGU6In0pKS4kZWwpKSxmLmFwcGVuZChyLndy YXAodGg9CmlzLnR5cGVzLiRlbCkpLHRoaXMudGFicy5hZGQoe2lkOiJtYWluIix0aXRsZToiU3Rh cnQiLCRlbDpmfSksdGhpcy5zZXR0aW5ncz0KPTNEbmV3IHUodGhpcy5hcHApLHRoaXMudGFicy5h ZGQoe2lkOiJzZXR0aW5ncyIsdGl0bGU6IkNvbmZpZ3VyYXRpb24iLCRlbDp0PQpoaXMuc2V0dGlu Z3MuJGVsfSksdGhpcy5wb3J0bGV0LmFwcGVuZCh0aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRs ZXQuYXBwZW49CmQodGhpcy50YWJzLiRlbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4k ZWwpLHRoaXMudGFicy5oaWRlT3BlcmF0aW9uKD0KImJhY2siKTt2YXIgbz0zRHRoaXM7dGhpcy5j aGFydC5vbigiY2hhbmdlOnRpdGxlIixmdW5jdGlvbihlKXtvLl9yZWZyZXNoVGl0PQpsZSgpfSks dGhpcy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1bmN0aW9uKGUpe28udHlwZXMudmFsdWUoZS5n ZXQoInR5cGUiKSk9Cn0pLHRoaXMuY2hhcnQub24oInJlc2V0IixmdW5jdGlvbihlKXtvLl9yZXNl dENoYXJ0KCl9KSx0aGlzLmFwcC5jaGFydC5vbigicj0KZWRyYXciLGZ1bmN0aW9uKGUpe28ucG9y dGxldC5zaG93T3BlcmF0aW9uKCJiYWNrIil9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMuPQpvbigi YWRkIixmdW5jdGlvbihlKXtvLl9hZGRHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5v bigicmVtb3ZlIixmdW49CmN0aW9uKGUpe28uX3JlbW92ZUdyb3VwKGUpfSksdGhpcy5hcHAuY2hh cnQuZ3JvdXBzLm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7bz0KLl9yZW1vdmVBbGxHcm91cHMoKX0p LHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigiY2hhbmdlOmtleSIsZnVuY3Rpb24oZSl7by5fPQpy ZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuX3Jlc2V0Q2hhcnQoKX0sc2hvdzpmdW5jdGlvbigpe3Ro aXMuJGVsLnNob3coKX0saGk9CmRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVmcmVz aFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0Lj0KZ2V0KCJ0aXRsZSIpO3RoaXMu cG9ydGxldC50aXRsZShlKSx0aGlzLnRpdGxlLnZhbHVlKGUpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1 PQpuY3Rpb24oKXt2YXIgZT0zRHRoaXMsdD0zRDA7dGhpcy5jaGFydC5ncm91cHMuZWFjaChmdW5j dGlvbihuKXt2YXIgcj0zRG4uZ2U9CnQoImtleSIsIiIpO3I9M0Q9M0QiIiYmKHI9M0QiQ2hhcnQg ZGF0YSIpLGUudGFicy50aXRsZShuLmlkLCsrdCsiOiAiK3IpfSl9LD0KX2FkZEdyb3VwTW9kZWw6 ZnVuY3Rpb24oKXt2YXIgZT0zRG5ldyBzKHtpZDpyLnV1aWQoKX0pO3JldHVybiB0aGlzLmNoYXJ0 LmdyPQpvdXBzLmFkZChlKSxlfSxfYWRkR3JvdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49 M0RuZXcgbyh0aGlzLmFwcCx7Z3JvdXA9CjplfSk7dGhpcy50YWJzLmFkZCh7aWQ6ZS5pZCwkZWw6 bi4kZWwsb25kZWw6ZnVuY3Rpb24oKXt0LmNoYXJ0Lmdyb3Vwcy5yZW1vdj0KZShlLmlkKX19KSx0 aGlzLl9yZWZyZXNoR3JvdXBLZXkoKSx0aGlzLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKX0sX3Jl bW92ZUdyPQpvdXA6ZnVuY3Rpb24oZSl7dGhpcy50YWJzLmRlbChlLmlkKSx0aGlzLl9yZWZyZXNo R3JvdXBLZXkoKSx0aGlzLmNoYXJ0LnNldCg9CiJtb2RpZmllZCIsITApfSxfcmVtb3ZlQWxsR3Jv dXBzOmZ1bmN0aW9uKGUpe3RoaXMudGFicy5kZWxSZW1vdmFibGUoKX0sX3Jlcz0KZXRDaGFydDpm dW5jdGlvbigpe3RoaXMuY2hhcnQuc2V0KCJpZCIsci51dWlkKCkpLHRoaXMuY2hhcnQuc2V0KCJ0 eXBlIiwiaGlnPQpoY2hhcnRzX2JhciIpLHRoaXMuY2hhcnQuc2V0KCJkYXRhc2V0X2lkIix0aGlz LmFwcC5vcHRpb25zLmNvbmZpZy5kYXRhc2V0X2k9CmQpLHRoaXMuY2hhcnQuc2V0KCJ0aXRsZSIs Ik5ldyBDaGFydCIpLHRoaXMucG9ydGxldC5oaWRlT3BlcmF0aW9uKCJiYWNrIil9LD0KX3NhdmVD aGFydDpmdW5jdGlvbigpe3RoaXMuY2hhcnQuc2V0KHt0eXBlOnRoaXMudHlwZXMudmFsdWUoKSx0 aXRsZTp0aGlzLnRpPQp0bGUudmFsdWUoKSxkYXRlOnIudGltZSgpfSk7aWYodGhpcy5jaGFydC5n cm91cHMubGVuZ3RoPTNEPTNEMCl7dGhpcy5tZXNzYWc9CmUudXBkYXRlKHttZXNzYWdlOiJQbGVh c2Ugc2VsZWN0IGRhdGEgY29sdW1ucyBiZWZvcmUgZHJhd2luZyB0aGUgY2hhcnQuIn0pOz0KdmFy IGU9M0R0aGlzLl9hZGRHcm91cE1vZGVsKCk7dGhpcy50YWJzLnNob3coZS5pZCk7cmV0dXJufXZh ciB0PTNEdGhpcyxuPTNEPQohMCxpPTNEdGhpcy5jaGFydC5kZWZpbml0aW9uO3RoaXMuY2hhcnQu Z3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7aWYoIW4pcmV0dXI9Cm47Zm9yKHZhciByIGluIGkuY29s dW1ucylpZihlLmF0dHJpYnV0ZXNbcl09M0Q9M0QibnVsbCIpe3QubWVzc2FnZS51cGRhdGUoez0K c3RhdHVzOiJkYW5nZXIiLG1lc3NhZ2U6IlRoaXMgY2hhcnQgdHlwZSByZXF1aXJlcyBjb2x1bW4g dHlwZXMgbm90IGZvdW5kIGluPQogeW91ciB0YWJ1bGFyIGZpbGUuIn0pLHQudGFicy5zaG93KGUu aWQpLG49M0QhMTtyZXR1cm59fSk7aWYoIW4pcmV0dXJuO3RoaXM9Ci5hcHAuZ28oInZpZXdlciIp O3ZhciB0PTNEdGhpczt0aGlzLmNoYXJ0LmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXt0LmFw cD0KLnN0b3JhZ2Uuc2F2ZSgpLHQuY2hhcnQudHJpZ2dlcigicmVkcmF3Iil9KX19KX0pLGRlZmlu ZSgicGx1Z2luL21vZGVscy9jb25mPQppZyIsW10sZnVuY3Rpb24oKXtyZXR1cm4gQmFja2JvbmUu TW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7cXVlcnlfbGltaXQ6MWUzLHE9CnVlcnlfdGltZW91dDox MDAsc2NyZWVuc2hvdF91cmw6Imh0dHA6Ly9leHBvcnQuaGlnaGNoYXJ0cy5jb20vIn19KX0pLGRl ZmluZT0KKCJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyIsW10sZnVuY3Rpb24oKXty ZXR1cm57dGl0bGU6IiIsY2F0ZWdvcnk6PQoiIixsaWJyYXJ5OiJOVkQzIix0YWc6InN2ZyIsa2V5 d29yZHM6ImRlZmF1bHQgbnZkMyIsc2V0dGluZ3M6e3NlcGFyYXRvcl9sYWI9CmVsOnt0aXRsZToi WCBheGlzIix0eXBlOiJzZXBhcmF0b3IifSx4X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVs IixpbmZvOj0KIlByb3ZpZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlOiJ0ZXh0Iixpbml0 OiJYLWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlzPQogbGFiZWwifSx4X2F4aXNfdHlwZTp7dGl0bGU6 IkF4aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2VsZWN0IHRoZSB2YWx1ZSB0eXBlIG89CmYgdGhlIGF4 aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6ImF1dG8iLGRhdGE6W3tsYWJlbDoiLS0gRG8gbm90IHNo b3cgdmFsdWVzID0KLS0iLHZhbHVlOiJoaWRlIixoaWRlOlsieF9heGlzX3RpY2siXX0se2xhYmVs OiJBdXRvIix2YWx1ZToiYXV0byIsaGlkZTpbInhfPQpheGlzX3RpY2siXX0se2xhYmVsOiJGbG9h dCIsdmFsdWU6ImYiLHNob3c6WyJ4X2F4aXNfdGljayJdfSx7bGFiZWw6IkV4cG9uZW49CnQiLHZh bHVlOiJlIixzaG93OlsieF9heGlzX3RpY2siXX0se2xhYmVsOiJJbnRlZ2VyIix2YWx1ZToiZCIs aGlkZTpbInhfYXhpcz0KX3RpY2siXX0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicCIsc2hv dzpbInhfYXhpc190aWNrIl19LHtsYWJlbDoiUm91bmRlPQpkIix2YWx1ZToiciIsc2hvdzpbInhf YXhpc190aWNrIl19LHtsYWJlbDoiU0ktcHJlZml4Iix2YWx1ZToicyIsc2hvdzpbInhfYXg9Cmlz X3RpY2siXX1dfSx4X2F4aXNfdGljazp7dGl0bGU6IkF4aXMgdGljayBmb3JtYXQiLGluZm86IlNl bGVjdCB0aGUgdGljayBmbz0Kcm1hdCBmb3IgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6 Ii4xIixkYXRhOlt7bGFiZWw6IjAuMDAwMDEiLHZhbHVlOiIuPQo1In0se2xhYmVsOiIwLjAwMDEi LHZhbHVlOiIuNCJ9LHtsYWJlbDoiMC4wMDEiLHZhbHVlOiIuMyJ9LHtsYWJlbDoiMC4wMSIsdmE9 Cmx1ZToiLjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6Ii4xIn0se2xhYmVsOiIxIix2YWx1ZToiMSJ9 XX0sc2VwYXJhdG9yX3RpY2s6ez0KdGl0bGU6IlkgYXhpcyIsdHlwZToic2VwYXJhdG9yIn0seV9h eGlzX2xhYmVsOnt0aXRsZToiQXhpcyBsYWJlbCIsaW5mbzoiUHJvPQp2aWRlIGEgbGFiZWwgZm9y IHRoZSBheGlzLiIsdHlwZToidGV4dCIsaW5pdDoiWS1heGlzIixwbGFjZWhvbGRlcjoiQXhpcyBs YWI9CmVsIn0seV9heGlzX3R5cGU6e3RpdGxlOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVj dCB0aGUgdmFsdWUgdHlwZSBvZiB0aD0KZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiJhdXRv IixkYXRhOlt7bGFiZWw6Ii0tIERvIG5vdCBzaG93IHZhbHVlcyAtLSIsPQp2YWx1ZToiaGlkZSIs aGlkZTpbInlfYXhpc190aWNrIl19LHtsYWJlbDoiQXV0byIsdmFsdWU6ImF1dG8iLGhpZGU6WyJ5 X2F4aXM9Cl90aWNrIl19LHtsYWJlbDoiRmxvYXQiLHZhbHVlOiJmIixzaG93OlsieV9heGlzX3Rp Y2siXX0se2xhYmVsOiJFeHBvbmVudCIsdj0KYWx1ZToiZSIsc2hvdzpbInlfYXhpc190aWNrIl19 LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6ImQiLGhpZGU6WyJ5X2F4aXNfdGljPQprIl19LHtsYWJl bDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLHNob3c6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IlJv dW5kZWQiLHY9CmFsdWU6InIiLHNob3c6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IlNJLXByZWZp eCIsdmFsdWU6InMiLHNob3c6WyJ5X2F4aXNfdD0KaWNrIl19XX0seV9heGlzX3RpY2s6e3RpdGxl OiJBeGlzIHRpY2sgZm9ybWF0IixpbmZvOiJTZWxlY3QgdGhlIHRpY2sgZm9ybWF0PQogZm9yIHRo ZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiIuMSIsZGF0YTpbe2xhYmVsOiIwLjAwMDAxIix2 YWx1ZToiLjUifSw9CntsYWJlbDoiMC4wMDAxIix2YWx1ZToiLjQifSx7bGFiZWw6IjAuMDAxIix2 YWx1ZToiLjMifSx7bGFiZWw6IjAuMDEiLHZhbHVlOj0KIi4yIn0se2xhYmVsOiIwLjEiLHZhbHVl OiIuMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjEifV19LHNlcGFyYXRvcl9sZWdlbmQ6e3RpPQp0bGU6 Ik90aGVycyIsdHlwZToic2VwYXJhdG9yIn0sc2hvd19sZWdlbmQ6e3RpdGxlOiJTaG93IGxlZ2Vu ZCIsaW5mbzoiV291bGQ9CiB5b3UgbGlrZSB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1 dHRvbiIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJZZT0KcyIsdmFsdWU6InRydWUifSx7bGFi ZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19fX19KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkPQoz L2Jhci9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlv bihlKXtyZXR1cm4gJC5leHQ9CmVuZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIsY2F0ZWdvcnk6 IkJhciBkaWFncmFtcyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbD0KdWVzIGZvciB4LWF4aXMiLGlz X2xhYmVsOiEwLGlzX2F1dG86ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVt PQplcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2VkL2Nv bmZpZyIsWyJwbHVnaW4vY2hhcnQ9CnMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7 cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTdGFja2VkIj0KLGNhdGVnb3J5OiJCYXIg ZGlhZ3JhbXMiLGNvbHVtbnM6e3k6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJp YzohPQowfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9ob3Jpem9udGFsL2Nv bmZpZyIsWyJwbHVnaW4vY2hhcnRzL249CnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7 cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIb3Jpem9udGFsIj0KLGNhdGVnb3J5OiJC YXIgZGlhZ3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFi ZWw6ITAsPQppc19hdXRvOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVy aWM6ITB9fSxzZXR0aW5nczp7eF9heGlzX3Q9CnlwZTp7aW5pdDoiaGlkZSJ9fX0pfSksZGVmaW5l KCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX2hvcml6b250YWxfc3RhY2tlZC9jbz0KbmZpZyIsWyJw bHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4 dGVuZCghMCx7PQp9LGUse3RpdGxlOiJTdGFja2VkIGhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIg ZGlhZ3JhbXMiLHNldHRpbmdzOnt4X2F4aXNfdHk9CnBlOntpbml0OiJoaWRlIn19LGNvbHVtbnM6 e3k6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KT0KLGRlZmlu ZSgicGx1Z2luL2NoYXJ0cy9udmQzL2xpbmVfZm9jdXMvY29uZmlnIixbInBsdWdpbi9jaGFydHMv bnZkMy9jb21tb24vPQpjb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30s ZSx7dGl0bGU6IkxpbmUgd2l0aCBmb2N1cyIsY2F0ZWc9Cm9yeToiT3RoZXJzIixrZXl3b3Jkczoi ZGVmYXVsdCBudmQzIixjb2x1bW5zOnt5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLD0KaXNf bnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9waWUvY29uZmlnIixb XSxmdW5jdGlvbigpe3JlPQp0dXJuICQuZXh0ZW5kKCEwLHt9LHt0aXRsZToiUGllIGNoYXJ0Iixj YXRlZ29yeToiQXJlYSBjaGFydHMiLGxpYnJhcnk6Ik5WRDM9CiIsdGFnOiJzdmciLGtleXdvcmRz OiJkZWZhdWx0IG52ZDMiLHVzZV9wYW5lbHM6ITAsY29sdW1uczp7bGFiZWw6e3RpdGxlOiJMYT0K YmVscyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMH0seTp7dGl0bGU6IlZhbHVlcyIsaXNfbnVtZXJp YzohMH19LHNldHRpbmdzOntzPQpob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQiLGluZm86 IldvdWxkIHlvdSBsaWtlIHRvIGFkZCBhIGxlZ2VuZD8iLHR5cGU9Cjoic2VsZWN0Iixpbml0OiJm YWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6 Ij0KZmFsc2UifV19LGRvbnV0X3JhdGlvOnt0aXRsZToiRG9udXQgcmF0aW8iLGluZm86IkRldGVy bWluZSBob3cgbGFyZ2UgdGhlIGRvPQpudXQgaG9sZSB3aWxsIGJlLiIsdHlwZToic2VsZWN0Iixp bml0OiIwLjUiLGRhdGE6W3tsYWJlbDoiNTAlIix2YWx1ZToiMC41In09Cix7bGFiZWw6IjI1JSIs dmFsdWU6IjAuMjUifSx7bGFiZWw6IjEwJSIsdmFsdWU6IjAuMTAifSx7bGFiZWw6IjAlIix2YWx1 ZToiMD0KIn1dfSxsYWJlbF9zZXBhcmF0b3I6e3R5cGU6InNlcGFyYXRvciIsdGl0bGU6IkxhYmVs IHNldHRpbmdzIn0sbGFiZWxfdHlwZTp7PQp0aXRsZToiRG9udXQgbGFiZWwiLGluZm86IldoYXQg d291bGQgeW91IGxpa2UgdG8gc2hvdyBmb3IgZWFjaCBzbGljZT8iLHR5cGU9Cjoic2VsZWN0Iixp bml0OiJwZXJjZW50IixkYXRhOlt7bGFiZWw6Ii0tIE5vdGhpbmcgLS0iLHZhbHVlOiJoaWRlIixo aWRlOiJsYT0KYmVsX291dHNpZGUifSx7bGFiZWw6IkxhYmVsIGNvbHVtbiIsdmFsdWU6ImtleSIs c2hvdzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlPQpsOiJWYWx1ZSBjb2x1bW4iLHZhbHVlOiJ2YWx1 ZSIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiUGVyY2VudGFnZSIsdmE9Cmx1ZToicGVy Y2VudCIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9XX0sbGFiZWxfb3V0c2lkZTp7dGl0bGU6IlNob3cg b3V0c2lkZSIsaT0KbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGxhYmVscyBvdXRzaWRlIHRo ZSBkb251dD8iLHR5cGU6InNlbGVjdCIsaW5pdDoiPQpmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMi LHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dfX19KX0pLGQ9CmVmaW5l KCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZGFyZWFfZnVsbC9jb25maWciLFsicGx1Z2luL2No YXJ0cy9udmQzL2NvbT0KbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh MCx7fSxlLHt0aXRsZToiRXhwYW5kZWQiLGNhdGVnb3J5PQo6IkFyZWEgY2hhcnRzIixjb2x1bW5z Ont5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGU9CmZp bmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9zdHJlYW0vY29uZmlnIixbInBsdWdp bi9jaGFydHMvbnZkMy9jbz0KbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRl bmQoITAse30sZSx7dGl0bGU6IlN0cmVhbSIsY2F0ZWdvcnk6PQoiQXJlYSBjaGFydHMiLGtleXdv cmRzOiJkZWZhdWx0IG52ZDMiLGNvbHVtbnM6e3k6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyI9 Cixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2hpc3RvZ3Jh bS9jb25maWciLFsicGx1Z2luLz0KY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9u KGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGlzPQp0b2dyYW0iLGNhdGVnb3J5 OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCki LGU9CnhlY3V0ZToiaGlzdG9ncmFtIixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2YXRpb25zIixp c19udW1lcmljOiEwfX0sc2V0dGluZz0Kczp7eF9heGlzX2xhYmVsOntpbml0OiJWYWx1ZXMifSx5 X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4aXNfdHlwZTp7PQppbml0OiJmIn0seV9h eGlzX3RpY2s6e2luaXQ6Ii4yIn19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9oaXN0 b2dyYW09Cl9kaXNjcmV0ZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJD0KLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiRGlzY3Jl dGUgSGlzdG9ncmFtIixjYXRlZ29yeToiRGF0YSBwcm9jZXNzaW5nIChyZXF1PQppcmVzICdjaGFy dHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6Imhpc3RvZ3JhbWRpc2NyZXRlIixjb2x1 bW5zOnt4Ons9CnRpdGxlOiJPYnNlcnZhdGlvbnMiLGlzX2xhYmVsOiEwfX0sc2V0dGluZ3M6e3hf YXhpc19sYWJlbDp7aW5pdDoiQnJlYWtzIn0seT0KX2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHki fSx5X2F4aXNfdHlwZTp7aW5pdDoiZiJ9LHlfYXhpc190aWNrOntpbml0OiIuMiJ9PQp9fSl9KSxk ZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9saW5lL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252 ZDMvY29tbW9uL2M9Cm9uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUs e3RpdGxlOiJMaW5lIGNoYXJ0IixjYXRlZ29yeToiTz0KdGhlcnMiLGNvbHVtbnM6e3k6e3RpdGxl OiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsPQp1Z2lu L2NoYXJ0cy9udmQzL3NjYXR0ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24v Y29uZmlnIl0sZnVuY3Q9CmlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlNj YXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90aGVycyIsY29sdT0KbW5zOnt4Ont0aXRsZToiVmFsdWVz IGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpPQpz Iixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRh cmVhL2NvbmZpZyIsWyJwbHU9Cmdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rp b24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOj0KIlJlZ3VsYXIiLGNhdGVnb3J5 OiJBcmVhIGNoYXJ0cyIsY29sdW1uczp7eTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19u PQp1bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9u L2NvbmZpZyIsW10sZnVuY3Rpb249Cigpe3JldHVybnt0aXRsZToiIixjYXRlZ29yeToiIixsaWJy YXJ5OiJIaWdoY2hhcnRzIix0YWc6ImRpdiIsa2V5d29yZHM6ImhpZz0KaGNoYXJ0cyIsc2V0dGlu Z3M6e3NlcGFyYXRvcl9sYWJlbDp7dGl0bGU6IlggYXhpcyIsdHlwZToic2VwYXJhdG9yIn0seF9h eGlzPQpfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVsIixpbmZvOiJQcm92aWRlIGEgbGFiZWwgZm9y IHRoZSBheGlzLiIsdHlwZToidGV4dCI9Cixpbml0OiJYLWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlz IGxhYmVsIn0seF9heGlzX3R5cGU6e3RpdGxlOiJBeGlzIHZhbHVlIHR5cD0KZSIsaW5mbzoiU2Vs ZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiJhdXRv IixkYXRhPQo6W3tsYWJlbDoiLS0gRG8gbm90IHNob3cgdmFsdWVzIC0tIix2YWx1ZToiaGlkZSIs aGlkZTpbInhfYXhpc190aWNrIl19LHtsYWI9CmVsOiJBdXRvIix2YWx1ZToiYXV0byIsaGlkZTpb InhfYXhpc190aWNrIl19LHtsYWJlbDoiRmxvYXQiLHZhbHVlOiJmIixzaG93Oj0KWyJ4X2F4aXNf dGljayJdfSx7bGFiZWw6IkV4cG9uZW50Iix2YWx1ZToiZSIsc2hvdzpbInhfYXhpc190aWNrIl19 LHtsYWJlbDoiPQpJbnRlZ2VyIix2YWx1ZToiZCIsaGlkZTpbInhfYXhpc190aWNrIl19LHtsYWJl bDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLHNob3c9CjpbInhfYXhpc190aWNrIl19LHtsYWJlbDoi Um91bmRlZCIsdmFsdWU6InIiLHNob3c6WyJ4X2F4aXNfdGljayJdfSx7bGFiZWw6Ij0KU0ktcHJl Zml4Iix2YWx1ZToicyIsc2hvdzpbInhfYXhpc190aWNrIl19XX0seF9heGlzX3RpY2s6e3RpdGxl OiJBeGlzIHRpY2sgPQpmb3JtYXQiLGluZm86IlNlbGVjdCB0aGUgdGljayBmb3JtYXQgZm9yIHRo ZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiIuMSI9CixkYXRhOlt7bGFiZWw6IjAuMDAwMDEi LHZhbHVlOiIuNSJ9LHtsYWJlbDoiMC4wMDAxIix2YWx1ZToiLjQifSx7bGFiZWw6IjAuMD0KMDEi LHZhbHVlOiIuMyJ9LHtsYWJlbDoiMC4wMSIsdmFsdWU6Ii4yIn0se2xhYmVsOiIwLjEiLHZhbHVl OiIuMSJ9LHtsYWJlbDoiPQoxIix2YWx1ZToiMSJ9XX0seF9heGlzX2dyaWQ6e3RpdGxlOiJBeGlz IGdyaWQiLGluZm86IldvdWxkIHlvdSBsaWtlIHRvIHNob3c9CiBncmlkIGxpbmVzIGZvciB0aGlz IGF4aXM/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoiMCIsZGF0YTpbe2xhYmVsOiJPbiIsdj0K YWx1ZToiMSJ9LHtsYWJlbDoiT2ZmIix2YWx1ZToiMCJ9XX0sc2VwYXJhdG9yX3RpY2s6e3RpdGxl OiJZIGF4aXMiLHR5cGU6InNlPQpwYXJhdG9yIn0seV9heGlzX2xhYmVsOnt0aXRsZToiQXhpcyBs YWJlbCIsaW5mbzoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXg9CmlzLiIsdHlwZToidGV4dCIs aW5pdDoiWS1heGlzIixwbGFjZWhvbGRlcjoiQXhpcyBsYWJlbCJ9LHlfYXhpc190eXBlOnt0aXRs ZT0KOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0aGUgdmFsdWUgdHlwZSBvZiB0aGUg YXhpcy4iLHR5cGU6InNlbGVjdCIsPQppbml0OiJhdXRvIixkYXRhOlt7bGFiZWw6Ii0tIERvIG5v dCBzaG93IHZhbHVlcyAtLSIsdmFsdWU6ImhpZGUiLGhpZGU6WyJ5X2E9Cnhpc190aWNrIl19LHts YWJlbDoiQXV0byIsdmFsdWU6ImF1dG8iLGhpZGU6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IkZs b2F0Ij0KLHZhbHVlOiJmIixzaG93OlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJFeHBvbmVudCIs dmFsdWU6ImUiLHNob3c6WyJ5X2F4aXNfPQp0aWNrIl19LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6 ImQiLGhpZGU6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IlBlcmNlbnRhZ2U9CiIsdmFsdWU6InAi LHNob3c6WyJ5X2F4aXNfdGljayJdfSx7bGFiZWw6IlJvdW5kZWQiLHZhbHVlOiJyIixzaG93Olsi eV9heGlzXz0KdGljayJdfSx7bGFiZWw6IlNJLXByZWZpeCIsdmFsdWU6InMiLHNob3c6WyJ5X2F4 aXNfdGljayJdfV19LHlfYXhpc190aWNrOnt0PQppdGxlOiJBeGlzIHRpY2sgZm9ybWF0IixpbmZv OiJTZWxlY3QgdGhlIHRpY2sgZm9ybWF0IGZvciB0aGUgYXhpcy4iLHR5cGU6InM9CmVsZWN0Iixp bml0OiIuMSIsZGF0YTpbe2xhYmVsOiIwLjAwMDAxIix2YWx1ZToiLjUifSx7bGFiZWw6IjAuMDAw MSIsdmFsdWU6Ij0KLjQifSx7bGFiZWw6IjAuMDAxIix2YWx1ZToiLjMifSx7bGFiZWw6IjAuMDEi LHZhbHVlOiIuMiJ9LHtsYWJlbDoiMC4xIix2YWx1PQplOiIuMSJ9LHtsYWJlbDoiMSIsdmFsdWU6 IjEifV19LHlfYXhpc19ncmlkOnt0aXRsZToiQXhpcyBncmlkIixpbmZvOiJXb3VsZCA9CnlvdSBs aWtlIHRvIHNob3cgZ3JpZCBsaW5lcyBmb3IgdGhpcyBheGlzPyIsdHlwZToicmFkaW9idXR0b24i LGluaXQ6IjEiLGRhdD0KYTpbe2xhYmVsOiJPbiIsdmFsdWU6IjEifSx7bGFiZWw6Ik9mZiIsdmFs dWU6IjAifV19LHNlcGFyYXRvcl9sZWdlbmQ6e3RpdGxlPQo6Ik90aGVycyIsdHlwZToic2VwYXJh dG9yIn0sbGVnZW5kX2VuYWJsZWQ6e3RpdGxlOiJTaG93IGxlZ2VuZCIsaW5mbzoiV291bGQ9CiB5 b3UgbGlrZSB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoidHJ1ZSIs ZGF0YTpbe2xhYmVsOiJZZT0KcyIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFs c2UifV19fX19KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvaGlnPQpoY2hhcnRzL2Jhci9jb25maWci LFsicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXs9 CnJldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIsY2F0ZWdvcnk6IkJhciBk aWFncmFtcyIsa2V5d29yZHM6Ij0KaGlnaGNoYXJ0cyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVl cyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwfSx5PQo6e3RpdGxlOiJWYWx1ZXMg Zm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvaGln aGM9CmhhcnRzL2Jhcl9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMv Y29tbW9uL2NvbmZpZyJdLGZ1bmN0aT0Kb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3Rp dGxlOiJTdGFja2VkIixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixrZXl3PQpvcmRzOiJoaWdoY2hh cnRzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlz X2F1dG89CjohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19 KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cz0KL2hpZ2hjaGFydHMvYmFyX2hvcml6b250YWwvY29u ZmlnIixbInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnPQoiXSxmdW5jdGlv bihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikhvcml6b250YWwiLGNhdGVnb3J5 OiJCYXIgZGk9CmFncmFtcyIsa2V5d29yZHM6ImhpZ2hjaGFydHMiLGNvbHVtbnM6e3g6e3RpdGxl OiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZT0KbDohMCxpc19hdXRvOiEwfSx5Ont0aXRsZToi VmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7eF9hPQp4aXNfdHlw ZTp7aW5pdDoiaGlkZSJ9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvYmFy X2hvcml6b250YWw9Cl9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMv Y29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldD0KdXJuICQuZXh0ZW5kKCEwLHt9LGUse3Rp dGxlOiJTdGFja2VkIGhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLGtlPQp5d29y ZHM6ImhpZ2hjaGFydHMiLHNldHRpbmdzOnt4X2F4aXNfdHlwZTp7aW5pdDoiaGlkZSJ9fSxjb2x1 bW5zOnt4Ont0aXRsZTo9CiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzoh MH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpcz0KX251bWVyaWM6ITB9fX0pfSksZGVm aW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9ncmFtL2NvbmZpZyIsWyJwbHVnPQpp bi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQu ZXh0ZW5kKCEwLHt9LGUse3Q9Cml0bGU6Ikhpc3RvZ3JhbSIsY2F0ZWdvcnk6IkRhdGEgcHJvY2Vz c2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvbz0KbHNoZWQpIixleGVjdXRlOiJo aXN0b2dyYW0iLGtleXdvcmRzOiJoaWdoY2hhcnRzIixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2 PQphdGlvbnMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJW YWx1ZXMifSx5X2F4aXNfbGFiZWw9Cjp7aW5pdDoiRGVuc2l0eSJ9LHlfYXhpc190eXBlOntpbml0 OiJmIn0seV9heGlzX3RpY2s6e2luaXQ6Ii4yIn19fSl9KSxkZWZpbj0KZSgicGx1Z2luL2NoYXJ0 cy9oaWdoY2hhcnRzL2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9o aWdoPQpjaGFydHMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh MCx7fSxlLHt0aXRsZToiRGlzY3JldGU9CiBIaXN0b2dyYW0iLGNhdGVnb3J5OiJEYXRhIHByb2Nl c3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZD0KKSIsZXhlY3V0ZToi aGlzdG9ncmFtZGlzY3JldGUiLGtleXdvcmRzOiJoaWdoY2hhcnRzIixjb2x1bW5zOnt5Ont0aXRs ZToiT2JzPQplcnZhdGlvbnMiLGlzX2xhYmVsOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19sYWJlbDp7 aW5pdDoiTGFiZWxzIn0seV9heGlzX2xhYmU9Cmw6e2luaXQ6IkRlbnNpdHkifX19KX0pLGRlZmlu ZSgicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2xpbmUvY29uZmlnIixbInBsdT0KZ2luL2NoYXJ0 cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQo ITAse30sZSx7PQp0aXRsZToiTGluZSIsY2F0ZWdvcnk6Ik90aGVycyIsa2V5d29yZHM6ImhpZ2hj aGFydHMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWw9CnVlcyBmb3IgeC1heGlzIixpc19sYWJlbDoh MCxpc19hdXRvOiEwLGlzX251bWVyaWM6ITF9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yID0KeS1heGlz Iixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL3Bp ZS9jb25maWciLFsiPQpwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uL2NvbmZpZyJdLGZ1 bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSw9CmUse3RpdGxlOiJQaWUgY2hhcnQiLGNh dGVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6ImhpZ2hjaGFydHMiLHVzZV9wYW5lbD0Kczoh MCxjb2x1bW5zOntsYWJlbDp7dGl0bGU6IkxhYmVscyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMH0s eTp7dGl0bGU6IlZhbHVlPQpzIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3Nob3dfbGVnZW5k Ont0aXRsZToiU2hvdyBsZWdlbmQiLGluZm86IldvdWxkIHk9Cm91IGxpa2UgdG8gYWRkIGEgbGVn ZW5kPyIsdHlwZToic2VsZWN0Iixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbD0K dWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19LGRvbnV0X3JhdGlvOnt0aXRs ZToiRG9udXQgcmF0aW8iLGluPQpmbzoiRGV0ZXJtaW5lIGhvdyBsYXJnZSB0aGUgZG9udXQgaG9s ZSB3aWxsIGJlLiIsdHlwZToic2VsZWN0Iixpbml0OiIwLjUiLGQ9CmF0YTpbe2xhYmVsOiI1MCUi LHZhbHVlOiIwLjUifSx7bGFiZWw6IjI1JSIsdmFsdWU6IjAuMjUifSx7bGFiZWw6IjEwJSIsdmFs dT0KZToiMC4xMCJ9LHtsYWJlbDoiMCUiLHZhbHVlOiIwIn1dfSxsYWJlbF9zZXBhcmF0b3I6e3R5 cGU6InNlcGFyYXRvciIsdGl0bGU6PQoiTGFiZWwgc2V0dGluZ3MifSxsYWJlbF90eXBlOnt0aXRs ZToiRG9udXQgbGFiZWwiLGluZm86IldoYXQgd291bGQgeW91IGxpa2U9CiB0byBzaG93IGZvciBl YWNoIHNsaWNlPyIsdHlwZToic2VsZWN0Iixpbml0OiJwZXJjZW50IixkYXRhOlt7bGFiZWw6Ii0t IE5vdD0KaGluZyAtLSIsdmFsdWU6ImhpZGUiLGhpZGU6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6 IkxhYmVsIGNvbHVtbiIsdmFsdWU6ImtlPQp5IixzaG93OiJsYWJlbF9vdXRzaWRlIn0se2xhYmVs OiJWYWx1ZSBjb2x1bW4iLHZhbHVlOiJ2YWx1ZSIsc2hvdzoibGFiZWxfb3U9CnRzaWRlIn0se2xh YmVsOiJQZXJjZW50YWdlIix2YWx1ZToicGVyY2VudCIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9XX0s bGFiZWxfbz0KdXRzaWRlOnt0aXRsZToiU2hvdyBvdXRzaWRlIixpbmZvOiJXb3VsZCB5b3UgbGlr ZSB0byBzaG93IGxhYmVscyBvdXRzaWRlIHRoPQplIGRvbnV0PyIsdHlwZToic2VsZWN0Iixpbml0 OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmU9Cmw6Ik5vIix2 YWx1ZToiZmFsc2UifV19fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvc2Nh dHRlci9jb25maT0KZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uL2NvbmZpZyJd LGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghPQowLHt9LGUse3RpdGxlOiJTY2F0dGVyIHBs b3QiLGNhdGVnb3J5OiJPdGhlcnMiLGtleXdvcmRzOiJoaWdoY2hhcnRzIixjb2x1bW49CnM6e3g6 e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbnVtZXJpYzohMH0seTp7dGl0bGU6IlZhbHVl cyBmb3IgeS1heGlzIj0KLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRz L2hpZ2hjaGFydHMvc3RhY2tlZGFyZWEvY29uZmlnIixbPQoicGx1Z2luL2NoYXJ0cy9oaWdoY2hh cnRzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse309Cixl LHt0aXRsZToiUmVndWxhciIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixrZXl3b3JkczoiaGlnaGNo YXJ0cyIsY29sdW1uczp7eD0KOnt0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEw LGlzX2F1dG86ITAsaXNfbnVtZXJpYzohMX0seTp7dGl0bGU6PQoiVmFsdWVzIGZvciB5LWF4aXMi LGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvYm89 CnhwbG90L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uL2NvbmZpZyJd LGZ1bmN0aW9uKGUpe3JldHVybj0KICQuZXh0ZW5kKCEwLHt9LHt0aXRsZToiQm94IHBsb3QiLGNh dGVnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFyPQp0cycgdG9vbCBmcm9tIFRv b2xzaGVkKSIsbGlicmFyeToiSGlnaGNoYXJ0cyIsdGFnOiJkaXYiLGV4ZWN1dGU6ImJveHBsb3Qi LGs9CmV5d29yZHM6ImhpZ2hjaGFydHMiLGNvbHVtbnM6e3k6e3RpdGxlOiJPYnNlcnZhdGlvbnMi LGlzX251bWVyaWM6ITB9fSxzZXR0aT0KbmdzOntzZXBhcmF0b3JfbGFiZWw6e3RpdGxlOiJYIGF4 aXMiLHR5cGU6InNlcGFyYXRvciJ9LHhfYXhpc19sYWJlbDp7dGl0bGU6PQoiQXhpcyBsYWJlbCIs aW5mbzoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXhpcy4iLHR5cGU6InRleHQiLGluaXQ6Ilgt YXhpcyI9CixwbGFjZWhvbGRlcjoiQXhpcyBsYWJlbCJ9LHNlcGFyYXRvcl90aWNrOnt0aXRsZToi WSBheGlzIix0eXBlOiJzZXBhcmF0b3IifT0KLHlfYXhpc19sYWJlbDp7dGl0bGU6IkF4aXMgbGFi ZWwiLGluZm86IlByb3ZpZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlPQo6InRleHQiLGlu aXQ6IlktYXhpcyIscGxhY2Vob2xkZXI6IkF4aXMgbGFiZWwifSx5X2F4aXNfdHlwZTp7dGl0bGU6 IkF4aXMgdmE9Cmx1ZSB0eXBlIixpbmZvOiJTZWxlY3QgdGhlIHZhbHVlIHR5cGUgb2YgdGhlIGF4 aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6ImF1dD0KbyIsZGF0YTpbe2xhYmVsOiItLSBEbyBub3Qg c2hvdyB2YWx1ZXMgLS0iLHZhbHVlOiJoaWRlIixoaWRlOlsieV9heGlzX3RpY2siPQpdfSx7bGFi ZWw6IkF1dG8iLHZhbHVlOiJhdXRvIixoaWRlOlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJGbG9h dCIsdmFsdWU6ImY9CiIsc2hvdzpbInlfYXhpc190aWNrIl19LHtsYWJlbDoiRXhwb25lbnQiLHZh bHVlOiJlIixzaG93OlsieV9heGlzX3RpY2siXX0sez0KbGFiZWw6IkludGVnZXIiLHZhbHVlOiJk IixoaWRlOlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToiPQpwIixz aG93OlsieV9heGlzX3RpY2siXX0se2xhYmVsOiJSb3VuZGVkIix2YWx1ZToiciIsc2hvdzpbInlf YXhpc190aWNrIl19LHs9CmxhYmVsOiJTSS1wcmVmaXgiLHZhbHVlOiJzIixzaG93OlsieV9heGlz X3RpY2siXX1dfSx5X2F4aXNfdGljazp7dGl0bGU6IkF4aT0KcyB0aWNrIGZvcm1hdCIsaW5mbzoi U2VsZWN0IHRoZSB0aWNrIGZvcm1hdCBmb3IgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluPQpp dDoiLjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAwMSIsdmFsdWU6Ii41In0se2xhYmVsOiIwLjAwMDEi LHZhbHVlOiIuNCJ9LHtsYWI9CmVsOiIwLjAwMSIsdmFsdWU6Ii4zIn0se2xhYmVsOiIwLjAxIix2 YWx1ZToiLjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6Ii4xIn0sez0KbGFiZWw6IjEiLHZhbHVlOiIx In1dfSx5X2F4aXNfZ3JpZDp7dGl0bGU6IkF4aXMgZ3JpZCIsaW5mbzoiV291bGQgeW91IGxpa2Ug PQp0byBzaG93IGdyaWQgbGluZXMgZm9yIHRoaXMgYXhpcz8iLHR5cGU6InJhZGlvYnV0dG9uIixp bml0OiIxIixkYXRhOlt7bGFiZWw9CjoiT24iLHZhbHVlOiIxIn0se2xhYmVsOiJPZmYiLHZhbHVl OiIwIn1dfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9oaWdoYz0KaGFydHMvaGVhdG1hcC9j b25maWciLFsicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi9jb25maWciXSxmdW5jdGlv bihlPQope3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGVhdG1hcCIsY2F0ZWdvcnk6 Ik90aGVycyIsdXNlX3BhbmVsczohMCw9CmtleXdvcmRzOiJoaWdoY2hhcnRzIixjb2x1bW5zOnt4 Ont0aXRsZToiQ29sdW1uIGxhYmVscyIsaXNfbGFiZWw6ITAsaXNfbnVtZT0KcmljOiEwfSx5Ont0 aXRsZToiUm93IGxhYmVscyIsaXNfbGFiZWw6ITAsaXNfbnVtZXJpYzohMH0sejp7dGl0bGU6Ik9i c2VydmF0PQppb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3lfYXhpc19ncmlkOntpbml0 OiIwIn19fSl9KSxkZWZpbmUoInBsdWdpbi89CmNoYXJ0cy90eXBlcyIsWyJwbHVnaW4vY2hhcnRz L252ZDMvYmFyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfc3RhYz0Ka2VkL2NvbmZp ZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbC9jb25maWciLCJwbHVnaW4vY2hh cnRzL252ZDMvPQpiYXJfaG9yaXpvbnRhbF9zdGFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHMv bnZkMy9saW5lX2ZvY3VzL2NvbmZpZyIsInBsdWc9CmluL2NoYXJ0cy9udmQzL3BpZS9jb25maWci LCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZGFyZWFfZnVsbC9jb25maWciLCJwbD0KdWdpbi9j aGFydHMvbnZkMy9zdGFja2VkYXJlYV9zdHJlYW0vY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQz L2hpc3RvZ3JhbS9jPQpvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9oaXN0b2dyYW1fZGlzY3Jl dGUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2w9CmluZS9jb25maWciLCJwbHVnaW4vY2hh cnRzL252ZDMvc2NhdHRlci9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZD0KYXJl YS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvYmFyL2NvbmZpZyIsInBsdWdpbi9j aGFydHMvaGlnaGNoYXJ0PQpzL2Jhcl9zdGFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvaGln aGNoYXJ0cy9iYXJfaG9yaXpvbnRhbC9jb25maWciLCJwbHU9Cmdpbi9jaGFydHMvaGlnaGNoYXJ0 cy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvaGlnaGNoYT0K cnRzL2hpc3RvZ3JhbS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9ncmFt X2Rpc2NyZXRlL2NvbmZpZyIsPQoicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2xpbmUvY29uZmln IiwicGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL3BpZS9jb25maWc9CiIsInBsdWdpbi9jaGFydHMv aGlnaGNoYXJ0cy9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9zdGFj az0KZWRhcmVhL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9ib3hwbG90L2NvbmZp ZyIsInBsdWdpbi9jaGFydHMvaGlnPQpoY2hhcnRzL2hlYXRtYXAvY29uZmlnIl0sZnVuY3Rpb24o ZSx0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcseSxiLHc9CixFLFMseCxUKXtyZXR1 cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7bnZkM19iYXI6ZSxudmQzX2Jhcl9z dGFjaz0KZWQ6dCxudmQzX2Jhcl9ob3Jpem9udGFsOm4sbnZkM19iYXJfaG9yaXpvbnRhbF9zdGFj a2VkOnIsbnZkM19saW5lX2ZvY3VzOmksPQpudmQzX3N0YWNrZWRhcmVhX2Z1bGw6byxudmQzX3N0 YWNrZWRhcmVhX3N0cmVhbTp1LG52ZDNfcGllOnMsbnZkM19zdGFja2VkYXI9CmVhOmgsbnZkM19s aW5lOmwsbnZkM19zY2F0dGVyOmMsbnZkM19oaXN0b2dyYW06YSxudmQzX2hpc3RvZ3JhbV9kaXNj cmV0ZTpmLD0KaGlnaGNoYXJ0c19iYXI6cCxoaWdoY2hhcnRzX2Jhcl9zdGFja2VkOmQsaGlnaGNo YXJ0c19iYXJfaG9yaXpvbnRhbDp2LGhpZ2hjPQpoYXJ0c19iYXJfaG9yaXpvbnRhbF9zdGFja2Vk Om0saGlnaGNoYXJ0c19zdGFja2VkYXJlYTpTLGhpZ2hjaGFydHNfcGllOncsaGk9CmdoY2hhcnRz X2xpbmU6YixoaWdoY2hhcnRzX3NjYXR0ZXI6RSxoaWdoY2hhcnRzX2hpc3RvZ3JhbTpnLGhpZ2hj aGFydHNfaGlzdD0Kb2dyYW1fZGlzY3JldGU6eSxoaWdoY2hhcnRzX2JveHBsb3Q6eCxoaWdoY2hh cnRzX2hlYXRtYXA6VH19KX0pLGRlZmluZSgicGx1PQpnaW4vYXBwIixbIm12Yy91aS91aS1tb2Rh bCIsIm12Yy91aS91aS1wb3J0bGV0IiwicGx1Z2luL2xpYnJhcnkvdWkiLCJ1dGlscy89CnV0aWxz IiwicGx1Z2luL2xpYnJhcnkvam9icyIsInBsdWdpbi9saWJyYXJ5L2RhdGFzZXRzIiwicGx1Z2lu L2xpYnJhcnkvc3Rvcj0KYWdlIiwicGx1Z2luL3ZpZXdzL3ZpZXdlciIsInBsdWdpbi92aWV3cy9l ZGl0b3IiLCJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsInBsPQp1Z2luL21vZGVscy9jaGFydCIsInBs dWdpbi9jaGFydHMvdHlwZXMiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvLHUsYSxmLGwsYyk9Cnty ZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5v cHRpb25zPTNEdCxHYWxheD0KeSYmR2FsYXh5Lm1vZGFsP3RoaXMubW9kYWw9M0RHYWxheHkubW9k YWw6dGhpcy5tb2RhbD0zRG5ldyBlLlZpZXcsdGhpcy5jb25mPQppZz0zRG5ldyBmLHRoaXMudHlw ZXM9M0RuZXcgYyx0aGlzLmNoYXJ0PTNEbmV3IGwsdGhpcy5qb2JzPTNEbmV3IGkodGhpcyksdGg9 CmlzLmRhdGFzZXRzPTNEbmV3IHModGhpcyksdGhpcy5zdG9yYWdlPTNEbmV3IG8odGhpcyksdGhp cy52aWV3ZXJfdmlldz0zRG5ldz0KIHUodGhpcyksdGhpcy5lZGl0b3Jfdmlldz0zRG5ldyBhKHRo aXMpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLnZpZXdlcl92aWV3LiRlPQpsKSx0aGlzLiRlbC5hcHBl bmQodGhpcy5lZGl0b3Jfdmlldy4kZWwpO2lmKCF0aGlzLnN0b3JhZ2UubG9hZCgpKXRoaXMuZ28o ImU9CmRpdG9yIik7ZWxzZXt0aGlzLmdvKCJ2aWV3ZXIiKTt2YXIgbj0zRHRoaXM7dGhpcy5jaGFy dC5kZWZlcnJlZC5leGVjdXRlKGZ1bj0KY3Rpb24oKXtuLmNoYXJ0LnRyaWdnZXIoInJlZHJhdyIp fSl9fSxnbzpmdW5jdGlvbihlKXskKCIudG9vbHRpcCIpLmhpZGUoKTtzPQp3aXRjaChlKXtjYXNl ImVkaXRvciI6dGhpcy5lZGl0b3Jfdmlldy5zaG93KCksdGhpcy52aWV3ZXJfdmlldy5oaWRlKCk7 YnJlYWs9CjtjYXNlInZpZXdlciI6dGhpcy5lZGl0b3Jfdmlldy5oaWRlKCksdGhpcy52aWV3ZXJf dmlldy5zaG93KCl9fSxjaGFydFBhdGg6Zj0KdW5jdGlvbihlKXt2YXIgdD0zRGUuc3BsaXQoL18o LispLyk7cmV0dXJuIHQubGVuZ3RoPj0zRDI/dFswXSsiLyIrdFsxXTooY29uPQpzb2xlLmRlYnVn KCJGQUlMRUQgQXBwOmNoYXJ0UGF0aCgpIC0gSW52YWxpZCBmb3JtYXQ6ICIrZSksdW5kZWZpbmVk KX0sZXhlY3U9CnRlOmZ1bmN0aW9uKGUpe30sb251bmxvYWQ6ZnVuY3Rpb24oKXt9LGxvZzpmdW5j dGlvbihlLHQpe2NvbnNvbGUubG9nKGUrIiAiKz0KdCl9fSl9KTsKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCgpkaWZmIC1yIGJmYzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQw YTMgLXIgYzExMzc3MWRiNmIyZjUwODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9i YXIvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z dGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyL2Nvbj0KZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyL2Nv bj0KZmlnLmpzCkBAIC0zLDEzICszLDEyIEBACiByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIGNv bmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1JlZ3VsYXInLAogICAgIGNhdGVnb3J5ICAgIDog J0JhciBkaWFncmFtcycsCi0gICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywK KyAgICBrZXl3b3JkcyAgICA6ICdoaWdoY2hhcnRzJywKICAgICBjb2x1bW5zICAgICA6IHsKICAg ICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ1ZhbHVlcyBmb3IgeC1heGlz JywKICAgICAgICAgICAgIGlzX2xhYmVsICAgIDogdHJ1ZSwKLSAgICAgICAgICAgIGlzX2F1dG8g ICAgIDogdHJ1ZSwKLSAgICAgICAgICAgIGlzX3VuaXF1ZSAgIDogdHJ1ZQorICAgICAgICAgICAg aXNfYXV0byAgICAgOiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgIHkgOiB7CiAgICAgICAgICAg ICB0aXRsZSAgICAgICA6ICdWYWx1ZXMgZm9yIHktYXhpcycsCgpkaWZmIC1yIGJmYzExYTEzNzQy N2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3MWRiNmIyZjUwODAwZjA0NWU9 CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z dGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9iYXIvd3JhcHBlci5qcwotLS0gYS9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhci93 cmE9CnBwZXIuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0 YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9iYXIvd3JhPQpwcGVyLmpzCkBAIC0xMiw3ICsxMiw2IEBA CiAgICAgICAgICAgID0yMAogICAgIC8vIHJlbmRlcgogICAgIGRyYXcgOiBmdW5jdGlvbihwcm9j ZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KSB7Ci0gICAgICAgIC8vIGRyYXcgY2hh cnQKICAgICAgICAgdmFyIGhjID0zRCBuZXcgSGlnaGNoYXJ0cyh0aGlzLmFwcCwgdGhpcy5vcHRp b25zKTsKICAgICAgICAgaGMuZHJhdyhwcm9jZXNzX2lkLCAnY29sdW1uJywgY2hhcnQsIHJlcXVl c3RfZGljdGlvbmFyeSk7CiAgICAgfQoKZGlmZiAtciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1 M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0 NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9o aWdoY2g9CmFydHMvYmFyX2hvcml6b250YWwvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyX2hvcj0K aXpvbnRhbC9jb25maWcuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hh cnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9iYXJfaG9yPQppem9udGFsL2NvbmZpZy5qcwpA QCAtMyw3ICszLDcgQEAKIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7CiAgICAg dGl0bGUgICAgICAgOiAnSG9yaXpvbnRhbCcsCiAgICAgY2F0ZWdvcnkgICAgOiAnQmFyIGRpYWdy YW1zJywKLSAgICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hjaGFydHMnLAorICAgIGtleXdv cmRzICAgIDogJ2hpZ2hjaGFydHMnLAogICAgIGNvbHVtbnMgICAgIDogewogICAgICAgICB4IDog ewogICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnVmFsdWVzIGZvciB4LWF4aXMnLAoKZGlmZiAt ciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZi MmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2g9CmFydHMvYmFyX2hvcml6b250YWwvd3Jh cHBlci5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj L2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9ob3I9Cml6b250YWwvd3JhcHBlci5qcworKysgYi9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRz L2Jhcl9ob3I9Cml6b250YWwvd3JhcHBlci5qcwpAQCAtMTEsMTIgKzExLDcgQEAKICAgICB9LAog ICAgICAgICAgICA9MjAKICAgICAvLyByZW5kZXIKLSAgICBkcmF3IDogZnVuY3Rpb24ocHJvY2Vz c19pZCwgY2hhcnQsIHJlcXVlc3RfZGljdGlvbmFyeSkKLSAgICB7Ci0gICAgICAgIC8vIHNldHRp bmdzCi0gICAgICAgIGNoYXJ0LnNldHRpbmdzLnNldCgneF9heGlzX2NhdGVnb3JpZXMnLCBbXSkK LSAgICAgICA9MjAKLSAgICAgICAgLy8gZHJhdyBjaGFydAorICAgIGRyYXcgOiBmdW5jdGlvbihw cm9jZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZhciBoYyA9 M0QgbmV3IEhpZ2hjaGFydHModGhpcy5hcHAsIHRoaXMub3B0aW9ucyk7CiAgICAgICAgIGhjLmRy YXcocHJvY2Vzc19pZCwgJ2JhcicsIGNoYXJ0LCByZXF1ZXN0X2RpY3Rpb25hcnkpOwogICAgIH0K CmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEz NzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2Jhcl9ob3Jpem9u dGFsX3N0YWNrZWQvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyX2hvcj0KaXpvbnRhbF9zdGFja2Vk L2NvbmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3Rh dGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9ob3I9Cml6b250YWxfc3RhY2tlZC9jb25maWcuanMK QEAgLTMsNyArMyw3IEBACiByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIGNvbmZpZywgewogICAg IHRpdGxlICAgICAgIDogJ1N0YWNrZWQgaG9yaXpvbnRhbCcsCiAgICAgY2F0ZWdvcnkgICAgOiAn QmFyIGRpYWdyYW1zJywKLSAgICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hjaGFydHMnLAor ICAgIGtleXdvcmRzICAgIDogJ2hpZ2hjaGFydHMnLAogICAgIHNldHRpbmdzICAgIDogewogICAg ICAgICB4X2F4aXNfdHlwZSA6IHsKICAgICAgICAgICAgIGluaXQgOiAnaGlkZScKCmRpZmYgLXIg YmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJm NTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2Jhcl9ob3Jpem9udGFsX3N0YWNr ZWQvd3JhcHBlci5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMv c3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9ob3I9Cml6b250YWxfc3RhY2tlZC93cmFwcGVy LmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hh cnRzL2hpZ2hjaGFydHMvYmFyX2hvcj0KaXpvbnRhbF9zdGFja2VkL3dyYXBwZXIuanMKQEAgLTEx LDggKzExLDcgQEAKICAgICB9LAogICAgICAgICAgICA9MjAKICAgICAvLyByZW5kZXIKLSAgICBk cmF3IDogZnVuY3Rpb24ocHJvY2Vzc19pZCwgY2hhcnQsIHJlcXVlc3RfZGljdGlvbmFyeSkKLSAg ICB7CisgICAgZHJhdyA6IGZ1bmN0aW9uKHByb2Nlc3NfaWQsIGNoYXJ0LCByZXF1ZXN0X2RpY3Rp b25hcnkpIHsKICAgICAgICAgLy8gZmluYWxpemUgY29uZmlndXJhdGlvbgogICAgICAgICBjaGFy dC5zZXR0aW5ncy5zZXQoJ3Bsb3RvcHRpb25zX3Nlcmllc19zdGFja2luZycsICdub3JtYWwnKTsK ICAgICAgICA9MjAKCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1 NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRz L2Jhcl9zdGFja2VkL2NvbmZpZy5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9zdGE9CmNrZWQvY29uZmlnLmpz CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRz L2hpZ2hjaGFydHMvYmFyX3N0YT0KY2tlZC9jb25maWcuanMKQEAgLTMsNyArMyw3IEBACiByZXR1 cm4gJC5leHRlbmQodHJ1ZSwge30sIGNvbmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1N0YWNr ZWQnLAogICAgIGNhdGVnb3J5ICAgIDogJ0JhciBkaWFncmFtcycsCi0gICAga2V5d29yZHMgICAg OiAnZGVmYXVsdCBoaWdoY2hhcnRzJywKKyAgICBrZXl3b3JkcyAgICA6ICdoaWdoY2hhcnRzJywK ICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAg ICAgIDogJ1ZhbHVlcyBmb3IgeC1heGlzJywKCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFm OTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1 MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFy dHMvaGlnaGNoPQphcnRzL2JveHBsb3QvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYm94cGxvdD0KL2Nv bmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj L2NoYXJ0cy9oaWdoY2hhcnRzL2JveHBsb3Q9Ci9jb25maWcuanMKQEAgLTEsMTIgKzEsMTIgQEAK IGRlZmluZShbJ3BsdWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnJ10sIGZ1bmN0 aW9uKGNvbmZpZykgewo9MjAKLXJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7City ZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHsKICAgICB0aXRsZSAgICAgICA6ICdCb3ggcGxvdCcs CiAgICAgY2F0ZWdvcnkgICAgOiAnRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyBcJ2NoYXJ0c1wn IHRvb2wgZnJvbSBUb29sc2hlZD0KKScsCiAgICAgbGlicmFyeSAgICAgOiAnSGlnaGNoYXJ0cycs CiAgICAgdGFnICAgICAgICAgOiAnZGl2JywKICAgICBleGVjdXRlICAgICA6ICdib3hwbG90JywK LSAgICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hjaGFydHMnLAorICAgIGtleXdvcmRzICAg IDogJ2hpZ2hjaGFydHMnLAogICAgIGNvbHVtbnMgICAgIDogewogICAgICAgICB5IDogewogICAg ICAgICAgICAgdGl0bGUgICAgICAgOiAnT2JzZXJ2YXRpb25zJywKQEAgLTM1LDYgKzM1LDEwMiBA QAogICAgICAgICAgICAgdHlwZSAgICAgICAgOiAndGV4dCcsCiAgICAgICAgICAgICBpbml0ICAg ICAgICA6ICdZLWF4aXMnLAogICAgICAgICAgICAgcGxhY2Vob2xkZXIgOiAnQXhpcyBsYWJlbCcK KyAgICAgICAgfSwKKyAgICAgICAgeV9heGlzX3R5cGUgOiB7CisgICAgICAgICAgICB0aXRsZSAg ICAgICA6ICdBeGlzIHZhbHVlIHR5cGUnLAorICAgICAgICAgICAgaW5mbyAgICAgICAgOiAnU2Vs ZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBheGlzLicsCisgICAgICAgICAgICB0eXBlICAgICAg ICA6ICdzZWxlY3QnLAorICAgICAgICAgICAgaW5pdCAgICAgICAgOiAnYXV0bycsCisgICAgICAg ICAgICBkYXRhICAgICAgICA6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgIGxhYmVsICAgOiAnLS0gRG8gbm90IHNob3cgdmFsdWVzIC0tJywKKyAgICAgICAgICAgICAg ICAgICAgdmFsdWUgICA6ICdoaWRlJywKKyAgICAgICAgICAgICAgICAgICAgaGlkZSAgICA6IFsn eV9heGlzX3RpY2snXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICBsYWJlbCAgIDogJ0F1dG8nLAorICAgICAgICAgICAgICAgICAgICB2 YWx1ZSAgIDogJ2F1dG8nLAorICAgICAgICAgICAgICAgICAgICBoaWRlICAgIDogWyd5X2F4aXNf dGljayddCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgIGxhYmVsICAgOiAnRmxvYXQnLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAg IDogJ2YnLAorICAgICAgICAgICAgICAgICAgICBzaG93ICAgIDogWyd5X2F4aXNfdGljayddCisg ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg IGxhYmVsICAgOiAnRXhwb25lbnQnLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgIDogJ2Un LAorICAgICAgICAgICAgICAgICAgICBzaG93ICAgIDogWyd5X2F4aXNfdGljayddCisgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGxhYmVs ICAgOiAnSW50ZWdlcicsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgOiAnZCcsCisgICAg ICAgICAgICAgICAgICAgIGhpZGUgICAgOiBbJ3lfYXhpc190aWNrJ10KKyAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbGFiZWwgICA6ICdQ ZXJjZW50YWdlJywKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICA6ICdwJywKKyAgICAgICAg ICAgICAgICAgICAgc2hvdyAgICA6IFsneV9heGlzX3RpY2snXQorICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsYWJlbCAgIDogJ1JvdW5k ZWQnLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgIDogJ3InLAorICAgICAgICAgICAgICAg ICAgICBzaG93ICAgIDogWyd5X2F4aXNfdGljayddCisgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnU0ktcHJlZml4JywK KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICA6ICdzJywKKyAgICAgICAgICAgICAgICAgICAg c2hvdyAgICA6IFsneV9heGlzX3RpY2snXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IF0KKyAgICAgICAgfSwKKyAgICAgICAgeV9heGlzX3RpY2sgOiB7CisgICAgICAgICAgICB0aXRs ZSAgICAgICA6ICdBeGlzIHRpY2sgZm9ybWF0JywKKyAgICAgICAgICAgIGluZm8gICAgICAgIDog J1NlbGVjdCB0aGUgdGljayBmb3JtYXQgZm9yIHRoZSBheGlzLicsCisgICAgICAgICAgICB0eXBl ICAgICAgICA6ICdzZWxlY3QnLAorICAgICAgICAgICAgaW5pdCAgICAgICAgOiAnLjEnLAorICAg ICAgICAgICAgZGF0YSAgICAgICAgOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICBsYWJlbCAgIDogJzAuMDAwMDEnLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAg IDogJy41JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICBsYWJlbCAgIDogJzAuMDAwMScsCisgICAgICAgICAgICAgICAgICAgIHZhbHVl ICAgOiAnLjQnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgIGxhYmVsICAgOiAnMC4wMDEnLAorICAgICAgICAgICAgICAgICAgICB2YWx1 ZSAgIDogJy4zJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICBsYWJlbCAgIDogJzAuMDEnLAorICAgICAgICAgICAgICAgICAgICB2YWx1 ZSAgIDogJy4yJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICBsYWJlbCAgIDogJzAuMScsCisgICAgICAgICAgICAgICAgICAgIHZhbHVl ICAgOiAnLjEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgIGxhYmVsICAgOiAnMScsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAg OiAnMScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg ICAgIHlfYXhpc19ncmlkIDogeworICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnQXhpcyBncmlk JywKKyAgICAgICAgICAgIGluZm8gICAgICAgIDogJ1dvdWxkIHlvdSBsaWtlIHRvIHNob3cgZ3Jp ZCBsaW5lcyBmb3IgdGhpcyBheGlzPQo/JywKKyAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3Jh ZGlvYnV0dG9uJywKKyAgICAgICAgICAgIGluaXQgICAgICAgIDogJzEnLAorICAgICAgICAgICAg ZGF0YSAgICAgICAgOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBs YWJlbCAgIDogJ09uJywKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICA6ICcxJworICAgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsYWJl bCAgIDogJ09mZicsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgOiAnMCcKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICB9CiB9KTsKCmRpZmYgLXIg YmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJm NTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2JveHBsb3Qvd3JhcHBlci5qcwot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9o aWdoY2hhcnRzL2JveHBsb3Q9Ci93cmFwcGVyLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYm94cGxvdD0KL3dyYXBw ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvLyBkZXBlbmRlbmNpZXMKLWRlZmluZShbJ3BsdWdpbi9j aGFydHMvaGlnaGNoYXJ0cy9jb21tb24vaGlnaGNoYXJ0cy1jb25maWcnXSwgZnVuY3Rpb24oY29u PQpmaWdtYWtlcikgeworZGVmaW5lKFsncGx1Z2luL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi9o aWdoY2hhcnRzLWNvbmZpZycsICdwbHVnaW4vY2hhcnQ9CnMvaGlnaGNoYXJ0cy9jb21tb24vd3Jh cHBlciddLCBmdW5jdGlvbihjb25maWdtYWtlciwgSGlnaGNoYXJ0cykgewo9MjAKIC8vIHdpZGdl dAogcmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKApAQCAtMTEsOCArMTEsNyBAQAogICAgIH0s CiAgICAgICAgICAgID0yMAogICAgIC8vIHJlbmRlcgotICAgIGRyYXcgOiBmdW5jdGlvbihwcm9j ZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5LCBjYWxsYmFjaykKLSAgICB7CisgICAg ZHJhdyA6IGZ1bmN0aW9uKHByb2Nlc3NfaWQsIGNoYXJ0LCByZXF1ZXN0X2RpY3Rpb25hcnksIGNh bGxiYWNrKSB7CiAgICAgICAgIC8vIGNvbmZpZ3VyZSByZXF1ZXN0CiAgICAgICAgIHZhciBpbmRl eCA9M0QgMDsKICAgICAgICAgZm9yICh2YXIgaSBpbiByZXF1ZXN0X2RpY3Rpb25hcnkuZ3JvdXBz KSB7CkBAIC0zNCw3ICszMyw2IEBACiAgICAgICAgIC8vIHJlcXVlc3QgZGF0YQogICAgICAgICB2 YXIgc2VsZiA9M0QgdGhpczsKICAgICAgICAgdGhpcy5hcHAuZGF0YXNldHMucmVxdWVzdChyZXF1 ZXN0X2RpY3Rpb25hcnksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICA9MjAKICAgICAgICAgICAg IC8vIHJlc2V0IGRhdGEvY2F0ZWdvcmllcwogICAgICAgICAgICAgdmFyIGRhdGEgPTNEIFtdOwog ICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPTNEIFtdOwoKZGlmZiAtciBiZmMxMWExMzc0Mjdi YjFiMDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3 Yjc0YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3Rh dGljL2NoYXJ0cy9oaWdoY2g9CmFydHMvY29tbW9uL2NvbmZpZy5qcwotLS0gYS9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1v bi89CmNvbmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMv c3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi89CmNvbmZpZy5qcwpAQCAtOTksNiArOTks MjIgQEAKICAgICAgICAgICAgIF0KPTIwCiAgICAgICAgIH0sCisgICAgICAgIHhfYXhpc19ncmlk IDogeworICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnQXhpcyBncmlkJywKKyAgICAgICAgICAg IGluZm8gICAgICAgIDogJ1dvdWxkIHlvdSBsaWtlIHRvIHNob3cgZ3JpZCBsaW5lcyBmb3IgdGhp cyBheGlzPQo/JywKKyAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3JhZGlvYnV0dG9uJywKKyAg ICAgICAgICAgIGluaXQgICAgICAgIDogJzAnLAorICAgICAgICAgICAgZGF0YSAgICAgICAgOiBb CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsYWJlbCAgIDogJ09uJywK KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICA6ICcxJworICAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsYWJlbCAgIDogJ09mZicsCisg ICAgICAgICAgICAgICAgICAgIHZhbHVlICAgOiAnMCcKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHNlcGFyYXRvcl90aWNrICA6IHsKICAgICAg ICAgICAgIHRpdGxlICAgICAgIDogJ1kgYXhpcycsCiAgICAgICAgICAgICB0eXBlICAgICAgICA6 ICdzZXBhcmF0b3InCkBAIC0xOTEsNiArMjA3LDIyIEBACiAgICAgICAgICAgICBdCj0yMAogICAg ICAgICB9LAorICAgICAgICB5X2F4aXNfZ3JpZCA6IHsKKyAgICAgICAgICAgIHRpdGxlICAgICAg IDogJ0F4aXMgZ3JpZCcsCisgICAgICAgICAgICBpbmZvICAgICAgICA6ICdXb3VsZCB5b3UgbGlr ZSB0byBzaG93IGdyaWQgbGluZXMgZm9yIHRoaXMgYXhpcz0KPycsCisgICAgICAgICAgICB0eXBl ICAgICAgICA6ICdyYWRpb2J1dHRvbicsCisgICAgICAgICAgICBpbml0ICAgICAgICA6ICcxJywK KyAgICAgICAgICAgIGRhdGEgICAgICAgIDogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgbGFiZWwgICA6ICdPbicsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAg OiAnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgbGFiZWwgICA6ICdPZmYnLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgIDog JzAnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAg ICBzZXBhcmF0b3JfbGVnZW5kIDogewogICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnT3RoZXJz JywKICAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3NlcGFyYXRvcicKCmRpZmYgLXIgYmZjMTFh MTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBm MDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hh cnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2NvbW1vbi9oaWdoY2hhcnRzLWNvbmZpZy5q cwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0 cy9oaWdoY2hhcnRzL2NvbW1vbi89CmhpZ2hjaGFydHMtY29uZmlnLmpzCisrKyBiL2NvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29t bW9uLz0KaGlnaGNoYXJ0cy1jb25maWcuanMKQEAgLTE1LDcgKzE1LDcgQEAKIAkgICAgfSwKIAkg ICA9MjAKIAkgICAgdGl0bGU6IHsKLQkgICAgICAgIHRleHQgICAgICAgICAgICAgICAgICAgICAg ICA6IGNoYXJ0LmdldCgndGl0bGUnKQorCSAgICAgICAgdGV4dCAgICAgICAgICAgICAgICAgICAg ICAgIDogJycKIAkgICAgfSwKIAkgICA9MjAKIAkgICAgbGVnZW5kOiB7CkBAIC0zOSwxNCArMzks MTUgQEAKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAg ICAgICAgICAgZm9ybWF0dGVyICAgICAgICAgICAgICAgOiBmdW5jdGlvbigpIHsKLSAgICAgICAg ICAgICAgICAgICAgaWYgKHNldHRpbmdzLmdldCgneF9heGlzX3R5cGUnKSA9M0Q9M0QgJ2F1dG8n KQorICAgICAgICAgICAgICAgICAgICB2YXIgYXhpc190eXBlID0zRCBzZXR0aW5ncy5nZXQoJ3hf YXhpc190eXBlJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChheGlzX3R5cGUgPTNEPTNEICdh dXRvJyB8fCBheGlzX3R5cGUgPTNEPTNEPTNEIHVuZD0KZWZpbmVkKQogICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmb3Jt YXQgPTNEIGQzLmZvcm1hdChzZXR0aW5ncy5nZXQoJ3hfYXhpc190aWNrJykgKz0KIHNldHRpbmdz LmdldCgneF9heGlzX3R5cGUnKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPTNE IGQzLmZvcm1hdChzZXR0aW5ncy5nZXQoJ3hfYXhpc190aWNrJykgKz0KIGF4aXNfdHlwZSk7CiAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodGhpcy52YWx1ZSk7CiAgICAgICAgICAg ICAgICAgfSwKICAgICAgICAgICAgICAgICBlbmFibGVkICAgICAgICAgICAgICAgICA6ICEoc2V0 dGluZ3MuZ2V0KCd4X2F4aXNfdHlwZScpID0KPTNEPTNEICdoaWRlJykKICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICB0aWNrUGl4ZWxJbnRlcnZhbCAgICAgICAgICAgOiAxMDAKKyAgICAgICAg ICAgIGdyaWRMaW5lV2lkdGggICAgICAgICAgICAgICA6IHNldHRpbmdzLmdldCgneF9heGlzX2dy aWQnKQogICAgICAgICB9LAogICAgICAgID0yMAogICAgICAgICB5QXhpczogewpAQCAtNTUsMTMg KzU2LDE1IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAg ICAgICAgICAgZm9ybWF0dGVyICAgICAgICAgICAgICAgOiBmdW5jdGlvbigpIHsKLSAgICAgICAg ICAgICAgICAgICAgaWYgKHNldHRpbmdzLmdldCgneV9heGlzX3R5cGUnKSA9M0Q9M0QgJ2F1dG8n KQorICAgICAgICAgICAgICAgICAgICB2YXIgYXhpc190eXBlID0zRCBzZXR0aW5ncy5nZXQoJ3lf YXhpc190eXBlJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChheGlzX3R5cGUgPTNEPTNEICdh dXRvJyB8fCBheGlzX3R5cGUgPTNEPTNEPTNEIHVuZD0KZWZpbmVkKQogICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmb3Jt YXQgPTNEIGQzLmZvcm1hdChzZXR0aW5ncy5nZXQoJ3lfYXhpc190aWNrJykgKz0KIHNldHRpbmdz LmdldCgneV9heGlzX3R5cGUnKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPTNE IGQzLmZvcm1hdChzZXR0aW5ncy5nZXQoJ3lfYXhpc190aWNrJykgKz0KIGF4aXNfdHlwZSk7CiAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodGhpcy52YWx1ZSk7CiAgICAgICAgICAg ICAgICAgfSwKICAgICAgICAgICAgICAgICBlbmFibGVkICAgICAgICAgICAgICAgICA6ICEoc2V0 dGluZ3MuZ2V0KCd5X2F4aXNfdHlwZScpID0KPTNEPTNEICdoaWRlJykKLSAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBncmlkTGluZVdpZHRoICAgICAgICAgICAgICAg OiBzZXR0aW5ncy5nZXQoJ3lfYXhpc19ncmlkJykKICAgICAgICAgfSwKICAgICAgICAgcGxvdE9w dGlvbnM6IHsKICAgICAgICAgICAgIHNlcmllczogewoKZGlmZiAtciBiZmMxMWExMzc0MjdiYjFi MDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3Yjc0 YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj L2NoYXJ0cy9oaWdoY2g9CmFydHMvY29tbW9uL3dyYXBwZXIuanMKLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24v PQp3cmFwcGVyLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z dGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uLz0Kd3JhcHBlci5qcwpAQCAtMjYsMjcgKzI2 LDIxIEBACiAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwogICAgICAgICB0aGlzLmFwcC5kYXRh c2V0cy5yZXF1ZXN0KHJlcXVlc3RfZGljdGlvbmFyeSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg ICAvLyBjaGVjayBpZiB0aGlzIGNoYXJ0IGhhcyBtdWx0aXBsZSBwYW5lbHMKLSAgICAgICAgICAg IGlmIChzZWxmLm9wdGlvbnMuY2FudmFzLmxlbmd0aCA9M0Q9M0QgMSkgewotICAgICAgICAgICAg ICAgIC8vIGdyb3VwcworICAgICAgICAgICAgaWYgKCFjaGFydC5kZWZpbml0aW9uLnVzZV9wYW5l bHMpIHsKKyAgICAgICAgICAgICAgICAvLyBkcmF3IGFsbCBncm91cHMgaW50byBhIHNpbmdsZSBw YW5lbAogICAgICAgICAgICAgICAgIGlmIChzZWxmLl9kcmF3R3JvdXBzKGhjX3R5cGUsIGNoYXJ0 LCByZXF1ZXN0X2RpY3Rpb25hcnkuZ3I9Cm91cHMsIHNlbGYub3B0aW9ucy5jYW52YXNbMF0sIGNh bGxiYWNrKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBzZXQgY2hhcnQgc3RhdGUKICAgICAg ICAgICAgICAgICAgICAgY2hhcnQuc3RhdGUoJ29rJywgJ0NoYXJ0IGRyYXduLicpOwogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gbG9v cCB0aHJvdWdoIGRhdGEgZ3JvdXBzCisgICAgICAgICAgICAgICAgLy8gZHJhdyBncm91cHMgaW4g c2VwYXJhdGUgcGFuZWxzCiAgICAgICAgICAgICAgICAgdmFyIHZhbGlkID0zRCB0cnVlOwogICAg ICAgICAgICAgICAgIGZvciAodmFyIGdyb3VwX2luZGV4IGluIHJlcXVlc3RfZGljdGlvbmFyeS5n cm91cHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGdyb3VwCiAgICAgICAgICAgICAg ICAgICAgIHZhciBncm91cCA9M0QgcmVxdWVzdF9kaWN0aW9uYXJ5Lmdyb3Vwc1tncm91cF9pbmRl eF07Ci0gICAgICAgICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAgICAgICAgIC8vIGRyYXcg Z3JvdXAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxmLl9kcmF3R3JvdXBzKGhjX3R5cGUs IGNoYXJ0LCBbZ3JvdXBdLCBzZWxmLm9wPQp0aW9ucy5jYW52YXNbZ3JvdXBfaW5kZXhdLCBjYWxs YmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkID0zRCBmYWxzZTsKICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAgICAgLy8gc2V0IGNo YXJ0IHN0YXRlCiAgICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICAgICAg ICAgIGNoYXJ0LnN0YXRlKCdvaycsICdNdWx0aS1wYW5lbCBjaGFydCBkcmF3bi4nKTsKICAgICAg ICAgICAgICAgICB9CkBAIC02MiwxMyArNTYsMTMgQEAKICAgICAgICAgLy8gY3JlYXRlIGNvbmZp Z3VyYXRpb24KICAgICAgICAgdmFyIGhjX2NvbmZpZyA9M0QgY29uZmlnbWFrZXIoY2hhcnQpOwog ICAgICAgID0yMAotICAgICAgICAvLyBtYWtlIGN1c3RvbSB3cmFwcGVyIGNhbGxiYWNrCi0gICAg ICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICAgICAgY2FsbGJhY2soaGNfY29uZmlnKTsKKyAg ICAgICAgLy8gZml4IHRpdGxlCisgICAgICAgIGlmICghY2hhcnQuZGVmaW5pdGlvbi51c2VfcGFu ZWxzKSB7CisgICAgICAgICAgICBoY19jb25maWcudGl0bGUudGV4dCA9M0QgY2hhcnQuZ2V0KCd0 aXRsZScpOwogICAgICAgICB9Ci0gICA9MjAKLSAgICAgICAgLy8gcmVzZXQKLSAgICAgICAgaGNf Y29uZmlnLnNlcmllcyA9M0QgW107CisgICAgICAgPTIwCisgICAgICAgIC8vIGlkZW50aWZ5IGNh dGVnb3JpZXMKKyAgICAgICAgdGhpcy5fbWFrZUNhdGVnb3JpZXMoY2hhcnQsIGdyb3VwcywgaGNf Y29uZmlnKTsKICAgICAgICA9MjAKICAgICAgICAgLy8gbG9vcCB0aHJvdWdoIGRhdGEgZ3JvdXBz CiAgICAgICAgIGZvciAodmFyIGtleSBpbiBncm91cHMpIHsKQEAgLTEwMSwxOSArOTUsODMgQEAK ICAgICAgICAgICAgIGhjX2NvbmZpZy5zZXJpZXMucHVzaChoY19zZXJpZXMpOwogICAgICAgICB9 CiAgICAgICAgPTIwCisgICAgICAgIC8vIG1ha2UgY3VzdG9tIHdyYXBwZXIgY2FsbGJhY2sKKyAg ICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgICAgICBjYWxsYmFjayhoY19jb25maWcpOwor ICAgICAgICB9CisKICAgICAgICAgLy8gZHJhdyBwbG90CiAgICAgICAgIHRyeSB7CiAgICAgICAg ICAgICBjYW52YXMuaGlnaGNoYXJ0cyhoY19jb25maWcpOwogICAgICAgICAgICAgcmV0dXJuIHRy dWU7CiAgICAgICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICAgICAgdmFyIHJlZ2V4ID0zRCAv XHd3d1wuaGlnaGNoYXJ0c1wuY29tKFteJl0rKS87Ci0gICAgICAgICAgICB2YXIgbWF0Y2ggPTNE IGVyci5tYXRjaChyZWdleCk7Ci0gICAgICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMCkgewot ICAgICAgICAgICAgICAgIGNoYXJ0LnN0YXRlKCdmYWlsZWQnLCAnSGlnaGNoYXJ0cyBlcnJvcjog PGEgdGFyZ2V0PTNEIl9ibGE9Cm5rIiBocmVmPTNEImh0dHA6Ly8nICsgbWF0Y2hbMF0gKyAnIj4n ICsgbWF0Y2hbMF0gKyAnPC9hPicpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgICBjaGFydC5zdGF0ZSgnZmFpbGVkJywgZXJyKTsKKyAgICAgICAgICAgIHRoaXMuX2hhbmRs ZUVycm9yKGNoYXJ0LCBlcnIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9 CisgICAgfSwKKyAgID0yMAorICAgIC8vIGNyZWF0ZSBjYXRlZ29yaWVzCisgICAgX21ha2VDYXRl Z29yaWVzOiBmdW5jdGlvbihjaGFydCwgZ3JvdXBzLCBoY19jb25maWcpIHsKKyAgICAgICAgLy8g aGFzaGtleXMsIGFycmF5cyBhbmQgY291bnRlciBmb3IgbGFiZWxlZCBjb2x1bW5zCisgICAgICAg IHZhciBjYXRlZ29yaWVzICA9M0Qge307CisgICAgICAgIHZhciBhcnJheSAgICAgICA9M0Qge307 CisgICAgICAgIHZhciBjb3VudGVyICAgICA9M0Qge307CisgICAgICAgPTIwCisgICAgICAgIC8v IGlkZW50aWZ5IGxhYmVsIGNvbHVtbnMKKyAgICAgICAgdmFyIGNoYXJ0X2RlZmluaXRpb24gPTNE IGdyb3Vwc1swXTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGNoYXJ0X2RlZmluaXRpb24uY29s dW1ucykgeworICAgICAgICAgICAgdmFyIGNvbHVtbl9kZWYgPTNEIGNoYXJ0X2RlZmluaXRpb24u Y29sdW1uc1trZXldOworICAgICAgICAgICAgaWYgKGNvbHVtbl9kZWYuaXNfbGFiZWwpIHsKKyAg ICAgICAgICAgICAgICBjYXRlZ29yaWVzW2tleV0gPTNEIHt9OworICAgICAgICAgICAgICAgIGFy cmF5W2tleV0gICAgICA9M0QgW107CisgICAgICAgICAgICAgICAgY291bnRlcltrZXldICAgID0z RCAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9 CisgICAgICAgPTIwCisgICAgICAgIC8vIGluZGV4IGFsbCB2YWx1ZXMgY29udGFpbmVkIGluIGxh YmVsIGNvbHVtbnMgKGZvciBhbGwgZ3JvdXBzKQorICAgICAgICBmb3IgKHZhciBpIGluIGdyb3Vw cykgeworICAgICAgICAgICAgdmFyIGdyb3VwID0zRCBncm91cHNbaV07CisgICAgICAgICAgICBm b3IgKHZhciBqIGluIGdyb3VwLnZhbHVlcykgeworICAgICAgICAgICAgICAgIHZhciB2YWx1ZV9k aWN0ID0zRCBncm91cC52YWx1ZXNbal07CisgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGlu IGNhdGVnb3JpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0zRCBTdHJpbmco dmFsdWVfZGljdFtrZXldKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3JpZXNba2V5 XVt2YWx1ZV0gPTNEPTNEPTNEIHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgICAgICAgICAg Y2F0ZWdvcmllc1trZXldW3ZhbHVlXSA9M0QgY291bnRlcltrZXldKys7CisgICAgICAgICAgICAg ICAgICAgICAgICBhcnJheVtrZXldLnB1c2godmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg Ly8gY29udmVydCBncm91cCB2YWx1ZXMgaW50byBjYXRlZ29yeSBpbmRlY2VzCisgICAgICAgIGZv ciAodmFyIGkgaW4gZ3JvdXBzKSB7CisgICAgICAgICAgICB2YXIgZ3JvdXAgPTNEIGdyb3Vwc1tp XTsKKyAgICAgICAgICAgIGZvciAodmFyIGogaW4gZ3JvdXAudmFsdWVzKSB7CisgICAgICAgICAg ICAgICAgdmFyIHZhbHVlX2RpY3QgPTNEIGdyb3VwLnZhbHVlc1tqXTsKKyAgICAgICAgICAgICAg ICBmb3IgKHZhciBrZXkgaW4gY2F0ZWdvcmllcykgeworICAgICAgICAgICAgICAgICAgICB2YXIg dmFsdWUgPTNEIFN0cmluZyh2YWx1ZV9kaWN0W2tleV0pOworICAgICAgICAgICAgICAgICAgICB2 YWx1ZV9kaWN0W2tleV0gPTNEIGNhdGVnb3JpZXNba2V5XVt2YWx1ZV0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29uc29sZS5sb2coYXJyYXkp OworICAgICAgICAvLyBhZGQgY2F0ZWdvcmllcyB0byBoaWdoY2hhcnRzIGNvbmZpZ3VyYXRpb24K KyAgICAgICAgZm9yICh2YXIga2V5IGluIGFycmF5KSB7CisgICAgICAgICAgICB2YXIgYXhpcyA9 M0Qga2V5ICsgJ0F4aXMnOworICAgICAgICAgICAgaWYgKGhjX2NvbmZpZ1theGlzXSkgeworICAg ICAgICAgICAgICAgIGhjX2NvbmZpZ1theGlzXS5jYXRlZ29yaWVzID0zRCBhcnJheVtrZXldOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgID0yMAorICAgIC8vIGhhbmRsZSBl cnJvcgorICAgIF9oYW5kbGVFcnJvcjogZnVuY3Rpb24oY2hhcnQsIGVycikgeworICAgICAgICB2 YXIgcmVnZXggPTNEIC9cd3d3XC5oaWdoY2hhcnRzXC5jb20oW14mXSspLzsKKyAgICAgICAgdmFy IG1hdGNoID0zRCBlcnIubWF0Y2gocmVnZXgpOworICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4g MCkgeworICAgICAgICAgICAgY2hhcnQuc3RhdGUoJ2ZhaWxlZCcsICdIaWdoY2hhcnRzIGVycm9y OiA8YSB0YXJnZXQ9M0QiX2JsYW5rIiA9CmhyZWY9M0QiaHR0cDovLycgKyBtYXRjaFswXSArICci PicgKyBtYXRjaFswXSArICc8L2E+Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj aGFydC5zdGF0ZSgnZmFpbGVkJywgZXJyKTsKICAgICAgICAgfQogICAgIH0KIH0pOwoKZGlmZiAt ciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZi MmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2g9CmFydHMvaGVhdG1hcC9jb25maWcuanMK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMv aGlnaGNoYXJ0cy9oZWF0bWFwPQovY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGVhdG1hcD0KL2NvbmZp Zy5qcwpAQCAtMiwxOCArMiwxNyBAQAo9MjAKIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgY29u ZmlnLCB7CiAgICAgdGl0bGUgICAgICAgOiAnSGVhdG1hcCcsCi0gICAgY2F0ZWdvcnkgICAgOiAn RGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyBcJ2NoYXJ0c1wnIHRvb2wgZnJvbSBUb29sc2hlZD0K KScsCi0gICAgLy9leGVjdXRlICAgICA6ICdoZWF0bWFwJywKKyAgICBjYXRlZ29yeSAgICA6ICdP dGhlcnMnLAogICAgIHVzZV9wYW5lbHMgIDogdHJ1ZSwKLSAgICBrZXl3b3JkcyAgICA6ICdkZWZh dWx0IGhpZ2hjaGFydHMnLAorICAgIGtleXdvcmRzICAgIDogJ2hpZ2hjaGFydHMnLAogICAgIGNv bHVtbnM6IHsKLSAgICAgICAgeTogewotICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnUm93IGxh YmVscycsCisgICAgICAgIHg6IHsKKyAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ0NvbHVtbiBs YWJlbHMnLAogICAgICAgICAgICAgaXNfbGFiZWwgICAgOiB0cnVlLAogICAgICAgICAgICAgaXNf bnVtZXJpYyAgOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgIHg6IHsKLSAgICAgICAgICAgIHRp dGxlICAgICAgIDogJ0NvbHVtbiBsYWJlbHMnLAorICAgICAgICB5OiB7CisgICAgICAgICAgICB0 aXRsZSAgICAgICA6ICdSb3cgbGFiZWxzJywKICAgICAgICAgICAgIGlzX2xhYmVsICAgIDogdHJ1 ZSwKICAgICAgICAgICAgIGlzX251bWVyaWMgIDogdHJ1ZQogICAgICAgICB9LApAQCAtMjEsNiAr MjAsMTEgQEAKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ09ic2VydmF0aW9ucycsCiAgICAg ICAgICAgICBpc19udW1lcmljICA6IHRydWUKICAgICAgICAgfQorICAgIH0sCisgICAgc2V0dGlu Z3M6IHsKKyAgICAgICAgeV9heGlzX2dyaWQgOiB7CisgICAgICAgICAgICBpbml0ICAgICAgICA6 ICcwJworICAgICAgICB9CiAgICAgfQogfSk7Cj0yMAoKZGlmZiAtciBiZmMxMWExMzc0MjdiYjFi MDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3Yjc0 YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj L2NoYXJ0cy9oaWdoY2g9CmFydHMvaGVhdG1hcC93cmFwcGVyLmpzCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGVhdG1h cD0KL3dyYXBwZXIuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRz L3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9oZWF0bWFwPQovd3JhcHBlci5qcwpAQCAtMTEsOSAr MTEsNyBAQAogICAgIH0sCiAgICAgICAgICAgID0yMAogICAgIC8vIHJlbmRlcgotICAgIGRyYXcg OiBmdW5jdGlvbihwcm9jZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KQotICAgIHsK LSAgICAgICAgLy8gZHJhdyBjaGFydAorICAgIGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lkLCBj aGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZhciBoYyA9M0QgbmV3IEhpZ2hj aGFydHNXcmFwcGVyKHRoaXMuYXBwLCB0aGlzLm9wdGlvbnMpOwogICAgICAgICBoYy5kcmF3KHBy b2Nlc3NfaWQsICdoZWF0bWFwJywgY2hhcnQsIHJlcXVlc3RfZGljdGlvbmFyeSwgZnVuY3Rpb249 Cihtb2RlbCkgewogICAgICAgICAgICAgbW9kZWwuY29sb3JBeGlzID0zRCB7CgpkaWZmIC1yIGJm YzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3MWRiNmIyZjUw ODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9oaXN0b2dyYW0vY29uZmlnLmpzCi0t LSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hp Z2hjaGFydHMvaGlzdG9ncj0KYW0vY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9ncj0KYW0vY29u ZmlnLmpzCkBAIC00LDcgKzQsNyBAQAogICAgIHRpdGxlICAgICAgIDogJ0hpc3RvZ3JhbScsCiAg ICAgY2F0ZWdvcnkgICAgOiAnRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyBcJ2NoYXJ0c1wnIHRv b2wgZnJvbSBUb29sc2hlZD0KKScsCiAgICAgZXhlY3V0ZSAgICAgOiAnaGlzdG9ncmFtJywKLSAg ICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hjaGFydHMnLAorICAgIGtleXdvcmRzICAgIDog J2hpZ2hjaGFydHMnLAogICAgIGNvbHVtbnMgICAgIDogewogICAgICAgICB5IDogewogICAgICAg ICAgICAgdGl0bGUgICAgICAgOiAnT2JzZXJ2YXRpb25zJywKCmRpZmYgLXIgYmZjMTFhMTM3NDI3 YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0K N2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0 YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWcuanMKLS0t IGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGln aGNoYXJ0cy9oaXN0b2dyPQphbV9kaXNjcmV0ZS9jb25maWcuanMKKysrIGIvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9oaXN0b2dy PQphbV9kaXNjcmV0ZS9jb25maWcuanMKQEAgLTQsNyArNCw3IEBACiAgICAgdGl0bGUgICAgICAg OiAnRGlzY3JldGUgSGlzdG9ncmFtJywKICAgICBjYXRlZ29yeSAgICA6ICdEYXRhIHByb2Nlc3Np bmcgKHJlcXVpcmVzIFwnY2hhcnRzXCcgdG9vbCBmcm9tIFRvb2xzaGVkPQopJywKICAgICBleGVj dXRlICAgICA6ICdoaXN0b2dyYW1kaXNjcmV0ZScsCi0gICAga2V5d29yZHMgICAgOiAnZGVmYXVs dCBoaWdoY2hhcnRzJywKKyAgICBrZXl3b3JkcyAgICA6ICdoaWdoY2hhcnRzJywKICAgICBjb2x1 bW5zICAgICA6IHsKICAgICAgICAgeSA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ09i c2VydmF0aW9ucycsCkBAIC0xMywxNiArMTMsMTAgQEAKICAgICB9LAogICAgIHNldHRpbmdzICAg IDogewogICAgICAgICB4X2F4aXNfbGFiZWwgOiB7Ci0gICAgICAgICAgICBpbml0IDogJ0JyZWFr cycKKyAgICAgICAgICAgIGluaXQgOiAnTGFiZWxzJwogICAgICAgICB9LAogICAgICAgICB5X2F4 aXNfbGFiZWwgOiB7CiAgICAgICAgICAgICBpbml0IDogJ0RlbnNpdHknCi0gICAgICAgIH0sCi0g ICAgICAgIHlfYXhpc190eXBlIDogewotICAgICAgICAgICAgaW5pdCA6ICdmJwotICAgICAgICB9 LAotICAgICAgICB5X2F4aXNfdGljayA6IHsKLSAgICAgICAgICAgIGluaXQgOiAnLjInCiAgICAg ICAgIH0KICAgICB9CiB9KTsKCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0 ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTgg Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNo PQphcnRzL2hpc3RvZ3JhbV9kaXNjcmV0ZS93cmFwcGVyLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9ncj0K YW1fZGlzY3JldGUvd3JhcHBlci5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2hpc3RvZ3I9CmFtX2Rpc2NyZXRlL3dy YXBwZXIuanMKQEAgLTM3LDkgKzM3LDYgQEAKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg ICAgICAgPTIwCi0gICAgICAgIC8vIHNldHRpbmdzCi0gICAgICAgIGNoYXJ0LnNldHRpbmdzLnNl dCgneF9heGlzX2NhdGVnb3JpZXMnLCBbXSkKLSAgID0yMAogICAgICAgICAvLyBkcmF3IGNoYXJ0 CiAgICAgICAgIHZhciBoYyA9M0QgbmV3IEhpZ2hjaGFydHModGhpcy5hcHAsIHRoaXMub3B0aW9u cyk7CiAgICAgICAgIGhjLmRyYXcocHJvY2Vzc19pZCwgJ2NvbHVtbicsIGNoYXJ0LCB0bXBfZGlj dCk7CgpkaWZmIC1yIGJmYzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIg YzExMzc3MWRiNmIyZjUwODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9saW5lL2Nv bmZpZy5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj L2NoYXJ0cy9oaWdoY2hhcnRzL2xpbmUvY289Cm5maWcuanMKKysrIGIvY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9saW5lL2NvPQpu ZmlnLmpzCkBAIC0zLDcgKzMsNyBAQAogcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBjb25maWcs IHsKICAgICB0aXRsZSAgICAgICA6ICdMaW5lJywKICAgICBjYXRlZ29yeSAgICA6ICdPdGhlcnMn LAotICAgIGtleXdvcmRzICAgIDogJ2RlZmF1bHQgaGlnaGNoYXJ0cycsCisgICAga2V5d29yZHMg ICAgOiAnaGlnaGNoYXJ0cycsCiAgICAgY29sdW1ucyAgICAgOiB7CiAgICAgICAgIHggOiB7CiAg ICAgICAgICAgICB0aXRsZSAgICAgICA6ICdWYWx1ZXMgZm9yIHgtYXhpcycsCgpkaWZmIC1yIGJm YzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3MWRiNmIyZjUw ODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9saW5lL3dyYXBwZXIuanMKLS0tIGEv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNo YXJ0cy9saW5lL3dyPQphcHBlci5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2xpbmUvd3I9CmFwcGVyLmpzCkBAIC0x MSwxMiArMTEsNyBAQAogICAgIH0sCiAgICAgICAgICAgID0yMAogICAgIC8vIHJlbmRlcgotICAg IGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KQot ICAgIHsKLSAgICAgICAgLy8gc2V0dGluZ3MKLSAgICAgICAgY2hhcnQuc2V0dGluZ3Muc2V0KCd4 X2F4aXNfY2F0ZWdvcmllcycsIFtdKQotICAgPTIwCi0gICAgICAgIC8vIGRyYXcgY2hhcnQKKyAg ICBkcmF3IDogZnVuY3Rpb24ocHJvY2Vzc19pZCwgY2hhcnQsIHJlcXVlc3RfZGljdGlvbmFyeSkg ewogICAgICAgICB2YXIgaGMgPTNEIG5ldyBIaWdoY2hhcnRzKHRoaXMuYXBwLCB0aGlzLm9wdGlv bnMpOwogICAgICAgICBoYy5kcmF3KHByb2Nlc3NfaWQsICdsaW5lJywgY2hhcnQsIHJlcXVlc3Rf ZGljdGlvbmFyeSk7CiAgICAgfQoKZGlmZiAtciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1M2Q4 YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0NzRl OCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdo Y2g9CmFydHMvcGllL3dyYXBwZXIuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9waWUvd3JhPQpwcGVyLmpzCisrKyBi L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hj aGFydHMvcGllL3dyYT0KcHBlci5qcwpAQCAtMTEsOSArMTEsNyBAQAogICAgIH0sCiAgICAgICAg ICAgID0yMAogICAgIC8vIHJlbmRlcgotICAgIGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lkLCBj aGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KQotICAgIHsKLSAgICAgICAgLy8gZHJhdyBjaGFydAor ICAgIGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5 KSB7CiAgICAgICAgIHZhciBoYyA9M0QgbmV3IEhpZ2hjaGFydHModGhpcy5hcHAsIHRoaXMub3B0 aW9ucyk7CiAgICAgICAgIGhjLmRyYXcocHJvY2Vzc19pZCwgJ3BpZScsIGNoYXJ0LCByZXF1ZXN0 X2RpY3Rpb25hcnkpOwogICAgIH0KCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNk OGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0 ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGln aGNoPQphcnRzL3NjYXR0ZXIvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvc2NhdHRlcj0KL2NvbmZpZy5q cworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0 cy9oaWdoY2hhcnRzL3NjYXR0ZXI9Ci9jb25maWcuanMKQEAgLTMsNyArMyw3IEBACiByZXR1cm4g JC5leHRlbmQodHJ1ZSwge30sIGNvbmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1NjYXR0ZXIg cGxvdCcsCiAgICAgY2F0ZWdvcnkgICAgOiAnT3RoZXJzJywKLSAgICBrZXl3b3JkcyAgICA6ICdk ZWZhdWx0IGhpZ2hjaGFydHMnLAorICAgIGtleXdvcmRzICAgIDogJ2hpZ2hjaGFydHMnLAogICAg IGNvbHVtbnMgICAgIDogewogICAgICAgICB4IDogewogICAgICAgICAgICAgdGl0bGUgICAgICAg OiAnVmFsdWVzIGZvciB4LWF4aXMnLAoKZGlmZiAtciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1 M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZiMmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0 NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9o aWdoY2g9CmFydHMvc2NhdHRlci93cmFwcGVyLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvc2NhdHRlcj0KL3dyYXBw ZXIuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9j aGFydHMvaGlnaGNoYXJ0cy9zY2F0dGVyPQovd3JhcHBlci5qcwpAQCAtMTEsOSArMTEsNyBAQAog ICAgIH0sCiAgICAgICAgICAgID0yMAogICAgIC8vIHJlbmRlcgotICAgIGRyYXcgOiBmdW5jdGlv bihwcm9jZXNzX2lkLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KQotICAgIHsKLSAgICAgICAg Ly8gZHJhdyBjaGFydAorICAgIGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lkLCBjaGFydCwgcmVx dWVzdF9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZhciBoYyA9M0QgbmV3IEhpZ2hjaGFydHModGhp cy5hcHAsIHRoaXMub3B0aW9ucyk7CiAgICAgICAgIGhjLmRyYXcocHJvY2Vzc19pZCwgJ3NjYXR0 ZXInLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KTsKICAgICB9CgpkaWZmIC1yIGJmYzExYTEz NzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3MWRiNmIyZjUwODAwZjA0 NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0 cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9zdGFja2VkYXJlYS9jb25maWcuanMKLS0tIGEv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNo YXJ0cy9zdGFja2VkPQphcmVhL2NvbmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL3N0YWNrZWQ9CmFyZWEvY29u ZmlnLmpzCkBAIC0zLDcgKzMsNyBAQAogcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBjb25maWcs IHsKICAgICB0aXRsZSAgICAgICA6ICdSZWd1bGFyJywKICAgICBjYXRlZ29yeSAgICA6ICdBcmVh IGNoYXJ0cycsCi0gICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywKKyAgICBr ZXl3b3JkcyAgICA6ICdoaWdoY2hhcnRzJywKICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAg eCA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ1ZhbHVlcyBmb3IgeC1heGlzJywKCmRp ZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcx ZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL3N0YWNrZWRhcmVhL3dy YXBwZXIuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRp Yy9jaGFydHMvaGlnaGNoYXJ0cy9zdGFja2VkPQphcmVhL3dyYXBwZXIuanMKKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9z dGFja2VkPQphcmVhL3dyYXBwZXIuanMKQEAgLTExLDEyICsxMSw3IEBACiAgICAgfSwKICAgICAg ICAgICAgPTIwCiAgICAgLy8gcmVuZGVyCi0gICAgZHJhdyA6IGZ1bmN0aW9uKHByb2Nlc3NfaWQs IGNoYXJ0LCByZXF1ZXN0X2RpY3Rpb25hcnkpCi0gICAgewotICAgICAgICAvLyBzZXR0aW5ncwot ICAgICAgICBjaGFydC5zZXR0aW5ncy5zZXQoJ3hfYXhpc19jYXRlZ29yaWVzJywgW10pCi0gICA9 MjAKLSAgICAgICAgLy8gZHJhdyBjaGFydAorICAgIGRyYXcgOiBmdW5jdGlvbihwcm9jZXNzX2lk LCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZhciBoYyA9M0QgbmV3IEhp Z2hjaGFydHModGhpcy5hcHAsIHRoaXMub3B0aW9ucyk7CiAgICAgICAgIGhjLmRyYXcocHJvY2Vz c19pZCwgJ2FyZWEnLCBjaGFydCwgcmVxdWVzdF9kaWN0aW9uYXJ5KTsKICAgICB9CgpkaWZmIC1y IGJmYzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3MWRiNmIy ZjUwODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvYz0Kb21tb24vY29uZmlnLmpzCi0tLSBhL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvY29t bW9uL2NvbmZpZz0KLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0 cy9zdGF0aWMvY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZz0KLmpzCkBAIC01LDcgKzUsNyBAQAog ICAgIGNhdGVnb3J5ICAgIDogJycsCiAgICAgbGlicmFyeSAgICAgOiAnTlZEMycsCiAgICAgdGFn ICAgICAgICAgOiAnc3ZnJywKLSAgICBrZXl3b3JkcyAgICA6ICdudmQzJywKKyAgICBrZXl3b3Jk cyAgICA6ICdkZWZhdWx0IG52ZDMnLAogICAgIHNldHRpbmdzICAgIDogewogICAgICAgICBzZXBh cmF0b3JfbGFiZWwgIDogewogICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnWCBheGlzJywKCmRp ZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcx ZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvY2hhcnRzL3N0YXRpYy9wbHVnaW5zL2hpZ2hjPQpoYXJ0cy9oZWF0bWFwLmpzCi0t LSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvcGx1Z2lucy9o aWdoY2hhcnRzL2hlYXRtYT0KcC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8q Ci0gSGlnaGNoYXJ0cyBKUyB2NC4wLjEgKDIwMTQtMDQtMjQpCi0KLSAoYykgMjAxMS0yMDE0IFRv cnN0ZWluIEhvbnNpCi0KLSBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQotKi8K LShmdW5jdGlvbihnKXt2YXIgaj0zRGcuQXhpcyx4PTNEZy5DaGFydCxvPTNEZy5Db2xvcix5PTNE Zy5MZWdlbmQscz0zRGcuTGVnPQplbmRTeW1ib2xNaXhpbix0PTNEZy5TZXJpZXMsdT0zRGcuZ2V0 T3B0aW9ucygpLGs9M0RnLmVhY2gscD0zRGcuZXh0ZW5kLHo9M0Q9CmcuZXh0ZW5kQ2xhc3MsbD0z RGcubWVyZ2UscT0zRGcucGljayx2PTNEZy5udW1iZXJGb3JtYXQsbT0zRGcuc2VyaWVzVHlwZXMs dz0KPTNEZy53cmFwLG49M0RmdW5jdGlvbigpe30scj0zRGcuQ29sb3JBeGlzPTNEZnVuY3Rpb24o KXt0aGlzLmlzQ29sb3JBeGlzPTNEPQohMDt0aGlzLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMp fTtwKHIucHJvdG90eXBlLGoucHJvdG90eXBlKTtwKHIucHJvdG90eXA9CmUse2RlZmF1bHRDb2xv ckF4aXNPcHRpb25zOntsaW5lV2lkdGg6MCxncmlkTGluZVdpZHRoOjEsdGlja1BpeGVsSW50ZXJ2 YWw6Nz0KMixzdGFydE9uVGljazohMCxlbmRPblRpY2s6ITAsb2Zmc2V0OjAsbWFya2VyOnthbmlt YXRpb246e2R1cmF0aW9uOjUwfSxjb2xvPQpyOiJncmF5Iix3aWR0aDowLjAxfSwKLWxhYmVsczp7 b3ZlcmZsb3c6Imp1c3RpZnkifSxtaW5Db2xvcjoiI0VGRUZGRiIsbWF4Q29sb3I6IiMwMDM4NzUi LHRpY2tMZW5nPQp0aDo1fSxpbml0OmZ1bmN0aW9uKGIsYSl7dmFyIGQ9M0RiLm9wdGlvbnMubGVn ZW5kLmxheW91dCE9M0Q9M0QidmVydGljYWwiLGM9CjtjPTNEbCh0aGlzLmRlZmF1bHRDb2xvckF4 aXNPcHRpb25zLHtzaWRlOmQ/MjoxLHJldmVyc2VkOiFkfSxhLHtpc1g6ZCxvcHBvcz0KaXRlOiFk LHNob3dFbXB0eTohMSx0aXRsZTpudWxsLGlzQ29sb3I6ITB9KTtqLnByb3RvdHlwZS5pbml0LmNh bGwodGhpcyxiLGMpPQo7YS5kYXRhQ2xhc3NlcyYmdGhpcy5pbml0RGF0YUNsYXNzZXMoYSk7dGhp cy5pbml0U3RvcHMoYSk7dGhpcy5pc1hBeGlzPTNEITA9Cjt0aGlzLmhvcml6PTNEZDt0aGlzLnpv b21FbmFibGVkPTNEITF9LHR3ZWVuQ29sb3JzOmZ1bmN0aW9uKGIsYSxkKXt2YXIgYz0zRD0KYS5y Z2JhWzNdIT0zRD0zRDF8fGIucmdiYVszXSE9M0Q9M0QxO3JldHVybihjPyJyZ2JhKCI6InJnYigi KStNYXRoLnJvdW5kKGEuPQpyZ2JhWzBdKwotKGIucmdiYVswXS1hLnJnYmFbMF0pKigxLWQpKSsi LCIrTWF0aC5yb3VuZChhLnJnYmFbMV0rKGIucmdiYVsxXS1hLnJnYmFbMV09CikqKDEtZCkpKyIs IitNYXRoLnJvdW5kKGEucmdiYVsyXSsoYi5yZ2JhWzJdLWEucmdiYVsyXSkqKDEtZCkpKyhjPyIs IisoYS5yZz0KYmFbM10rKGIucmdiYVszXS1hLnJnYmFbM10pKigxLWQpKToiIikrIikifSxpbml0 RGF0YUNsYXNzZXM6ZnVuY3Rpb24oYil7dmFyPQogYT0zRHRoaXMsZD0zRHRoaXMuY2hhcnQsYyxl PTNEMCxoPTNEdGhpcy5vcHRpb25zO3RoaXMuZGF0YUNsYXNzZXM9M0RjPTNEW109CjtrKGIuZGF0 YUNsYXNzZXMsZnVuY3Rpb24oZixpKXt2YXIgZyxmPTNEbChmKTtjLnB1c2goZik7aWYoIWYuY29s b3IpaC5kYXRhQz0KbGFzc0NvbG9yPTNEPTNEPTNEImNhdGVnb3J5Ij8oZz0zRGQub3B0aW9ucy5j b2xvcnMsZi5jb2xvcj0zRGdbZSsrXSxlPTNEPTNEPQo9M0RnLmxlbmd0aCYmKGU9M0QwKSk6Zi5j b2xvcj0zRGEudHdlZW5Db2xvcnMobyhoLm1pbkNvbG9yKSxvKGgubWF4Q29sb3IpLGk9Ci8oYi5k YXRhQ2xhc3Nlcy5sZW5ndGgtCi0xKSl9KX0saW5pdFN0b3BzOmZ1bmN0aW9uKGIpe3RoaXMuc3Rv cHM9M0RiLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbD0Kb3JdLFsxLHRoaXMub3B0aW9u cy5tYXhDb2xvcl1dO2sodGhpcy5zdG9wcyxmdW5jdGlvbihhKXthLmNvbG9yPTNEbyhhWzFdKX0p PQp9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYil7ai5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRo aXMsYik7dGhpcy5vcHRpb25zLmM9CnJvc3NoYWlyPTNEdGhpcy5vcHRpb25zLm1hcmtlcjt0aGlz LmNvbGw9M0QiY29sb3JBeGlzIn0sc2V0QXhpc1NpemU6ZnVuY3Rpbz0Kbigpe3ZhciBiPTNEdGhp cy5sZWdlbmRTeW1ib2wsYT0zRHRoaXMuY2hhcnQsZCxjLGU7aWYoYil0aGlzLmxlZnQ9M0RkPTNE Yi5hPQp0dHIoIngiKSx0aGlzLnRvcD0zRGM9M0RiLmF0dHIoInkiKSx0aGlzLndpZHRoPTNEZT0z RGIuYXR0cigid2lkdGgiKSx0aGlzLmg9CmVpZ2h0PTNEYj0zRGIuYXR0cigiaGVpZ2h0IiksdGhp cy5yaWdodD0zRGEuY2hhcnRXaWR0aC1kLWUsdGhpcy5ib3R0b209M0RhLj0KY2hhcnRIZWlnaHQt Ci1jLWIsdGhpcy5sZW49M0R0aGlzLmhvcml6P2U6Yix0aGlzLnBvcz0zRHRoaXMuaG9yaXo/ZDpj fSx0b0NvbG9yOmZ1bmN0aW9uKD0KYixhKXt2YXIgZCxjPTNEdGhpcy5zdG9wcyxlLGg9M0R0aGlz LmRhdGFDbGFzc2VzLGYsaTtpZihoKWZvcihpPTNEaC5sZW5ndGg7PQppLS07KXtpZihmPTNEaFtp XSxlPTNEZi5mcm9tLGM9M0RmLnRvLChlPTNEPTNEPTNEdm9pZCAwfHxiPj0zRGUpJiYoYz0zRD0z RD0KPTNEdm9pZCAwfHxiPD0zRGMpKXtkPTNEZi5jb2xvcjtpZihhKWEuZGF0YUNsYXNzPTNEaTti cmVha319ZWxzZXt0aGlzLmlzTG9nPQomJihiPTNEdGhpcy52YWwybGluKGIpKTtkPTNEMS0odGhp cy5tYXgtYikvKHRoaXMubWF4LXRoaXMubWluKTtmb3IoaT0zRGMubGU9Cm5ndGg7aS0tOylpZihk PmNbaV1bMF0pYnJlYWs7ZT0zRGNbaV18fGNbaSsxXTtjPTNEY1tpKzFdfHxlO2Q9M0QxLShjWzBd LWQpLz0KKGNbMF0tZVswXXx8MSk7ZD0zRHRoaXMudHdlZW5Db2xvcnMoZS5jb2xvcixjLmNvbG9y LGQpfXJldHVybiBkfSxnZXRPZmZzZXQ6PQpmdW5jdGlvbigpe3ZhciBiPTNEdGhpcy5sZWdlbmRH cm91cDsKLWlmKGImJihqLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSwhdGhpcy5heGlz R3JvdXAucGFyZW50R3JvdXApKXRoaXMuPQpheGlzR3JvdXAuYWRkKGIpLHRoaXMuZ3JpZEdyb3Vw LmFkZChiKSx0aGlzLmxhYmVsR3JvdXAuYWRkKGIpLHRoaXMuYWRkZWQ9M0Q9CiEwfSxzZXRMZWdl bmRDb2xvcjpmdW5jdGlvbigpe3ZhciBiLGE9M0R0aGlzLm9wdGlvbnM7Yj0zRHRoaXMuaG9yaXo/ WzAsMCwxLD0KMF06WzAsMCwwLDFdO3RoaXMubGVnZW5kQ29sb3I9M0R7bGluZWFyR3JhZGllbnQ6 e3gxOmJbMF0seTE6YlsxXSx4MjpiWzJdLHkyPQo6YlszXX0sc3RvcHM6YS5zdG9wc3x8W1swLGEu bWluQ29sb3JdLFsxLGEubWF4Q29sb3JdXX19LGRyYXdMZWdlbmRTeW1ib2w6ZnU9Cm5jdGlvbihi LGEpe3ZhciBkPTNEYi5wYWRkaW5nLGM9M0RiLm9wdGlvbnMsZT0zRHRoaXMuaG9yaXosaD0zRHEo Yy5zeW1ib2xXaT0KZHRoLGU/MjAwOjEyKSxmPTNEcShjLnN5bWJvbEhlaWdodCxlPzEyOjIwMCks Yz0zRHEoYy5sYWJlbFBhZGRpbmcsZT8xMDozMCk7Ci10aGlzLnNldExlZ2VuZENvbG9yKCk7YS5s ZWdlbmRTeW1ib2w9M0R0aGlzLmNoYXJ0LnJlbmRlcmVyLnJlY3QoMCxiLmJhc2VsaT0KbmUtMTEs aCxmKS5hdHRyKHt6SW5kZXg6MX0pLmFkZChhLmxlZ2VuZEdyb3VwKTthLmxlZ2VuZFN5bWJvbC5n ZXRCQm94KCk7dGhpPQpzLmxlZ2VuZEl0ZW1XaWR0aD0zRGgrZCsoZT8wOmMpO3RoaXMubGVnZW5k SXRlbUhlaWdodD0zRGYrZCsoZT9jOjApfSxzZXRTdGE9CnRlOm4sdmlzaWJsZTohMCxzZXRWaXNp YmxlOm4sZ2V0U2VyaWVzRXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYjtpZih0aGlzLnNlcj0KaWVz Lmxlbmd0aCliPTNEdGhpcy5zZXJpZXNbMF0sdGhpcy5kYXRhTWluPTNEYi52YWx1ZU1pbix0aGlz LmRhdGFNYXg9M0RiLnZhPQpsdWVNYXh9LGRyYXdDcm9zc2hhaXI6ZnVuY3Rpb24oYixhKXt2YXIg ZD0zRCF0aGlzLmNyb3NzLGM9M0RhJiZhLnBsb3RYLGU9M0Q9CmEmJmEucGxvdFksaCxmPTNEdGhp cy5wb3MsaT0zRHRoaXMubGVuO2lmKGEpaD0zRHRoaXMudG9QaXhlbHMoYS52YWx1ZSksaDxmPz0K aD0zRAotZi0yOmg+ZitpJiYoaD0zRGYraSsyKSxhLnBsb3RYPTNEaCxhLnBsb3RZPTNEdGhpcy5s ZW4taCxqLnByb3RvdHlwZS5kcmF3Q3I9Cm9zc2hhaXIuY2FsbCh0aGlzLGIsYSksYS5wbG90WD0z RGMsYS5wbG90WT0zRGUsIWQmJnRoaXMuY3Jvc3MmJnRoaXMuY3Jvc3MuYT0KdHRyKHtmaWxsOnRo aXMuY3Jvc3NoYWlyLmNvbG9yfSkuYWRkKHRoaXMubGFiZWxHcm91cCl9LGdldFBsb3RMaW5lUGF0 aDpmdW5jPQp0aW9uKGIsYSxkLGMsZSl7cmV0dXJuIGU/dGhpcy5ob3Jpej9bIk0iLGUtNCx0aGlz LnRvcC02LCJMIixlKzQsdGhpcy50b3AtNiw9CmUsdGhpcy50b3AsIloiXTpbIk0iLHRoaXMubGVm dCxlLCJMIix0aGlzLmxlZnQtNixlKzYsdGhpcy5sZWZ0LTYsZS02LCJaIl06aj0KLnByb3RvdHlw ZS5nZXRQbG90TGluZVBhdGguY2FsbCh0aGlzLGIsYSxkLGMpfSx1cGRhdGU6ZnVuY3Rpb24oYixh KXtrKHRoaXMuPQpzZXJpZXMsZnVuY3Rpb24oYSl7YS5pc0RpcnR5RGF0YT0zRCEwfSk7ai5wcm90 b3R5cGUudXBkYXRlLmNhbGwodGhpcywKLWIsYSk7dGhpcy5sZWdlbmRJdGVtJiYodGhpcy5zZXRM ZWdlbmRDb2xvcigpLHRoaXMuY2hhcnQubGVnZW5kLmNvbG9yaXplSXRlPQptKHRoaXMsITApKX0s Z2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9sczpmdW5jdGlvbigpe3ZhciBiPTNEdGhpcyxhPTNEdGhp cy5jaGE9CnJ0LGQ9M0RbXSxjPTNEYS5vcHRpb25zLmxlZ2VuZCxlPTNEYy52YWx1ZURlY2ltYWxz LGg9M0RjLnZhbHVlU3VmZml4fHwiIixmOz0Kayh0aGlzLmRhdGFDbGFzc2VzLGZ1bmN0aW9uKGMs Zyl7dmFyIGo9M0QhMCxsPTNEYy5mcm9tLG09M0RjLnRvO2Y9M0QiIjtsPTNEPQo9M0Q9M0R2b2lk IDA/Zj0zRCI8ICI6bT0zRD0zRD0zRHZvaWQgMCYmKGY9M0QiPiAiKTtsIT0zRD0zRHZvaWQgMCYm KGYrPTNEdig9CmwsZSkraCk7bCE9M0Q9M0R2b2lkIDAmJm0hPTNEPTNEdm9pZCAwJiYoZis9M0Qi IC0gIik7bSE9M0Q9M0R2b2lkIDAmJihmKz0zRD0KdihtLGUpK2gpO2QucHVzaChwKHtjaGFydDph LG5hbWU6ZixvcHRpb25zOnt9LGRyYXdMZWdlbmRTeW1ib2w6cy5kcmF3UmVjdGFuPQpnbGUsdmlz aWJsZTohMCxzZXRTdGF0ZTpuLHNldFZpc2libGU6ZnVuY3Rpb24oKXtqPTNECi10aGlzLnZpc2li bGU9M0QhajtrKGIuc2VyaWVzLGZ1bmN0aW9uKGEpe2soYS5wb2ludHMsZnVuY3Rpb24oYSl7YS5k YXRhQ2xhcz0Kcz0zRD0zRD0zRGcmJmEuc2V0VmlzaWJsZShqKX0pfSk7YS5sZWdlbmQuY29sb3Jp emVJdGVtKHRoaXMsail9fSxjKSl9KTtyZXR1PQpybiBkfSxuYW1lOiIifSk7dyh4LnByb3RvdHlw ZSwiZ2V0QXhlcyIsZnVuY3Rpb24oYil7dmFyIGE9M0R0aGlzLm9wdGlvbnMuY289CmxvckF4aXM7 Yi5jYWxsKHRoaXMpO3RoaXMuY29sb3JBeGlzPTNEW107YSYmbmV3IHIodGhpcyxhKX0pO3coeS5w cm90b3R5cGUsIj0KZ2V0QWxsSXRlbXMiLGZ1bmN0aW9uKGIpe3ZhciBhPTNEW10sZD0zRHRoaXMu Y2hhcnQuY29sb3JBeGlzWzBdO2QmJihkLm9wdGlvPQpucy5kYXRhQ2xhc3Nlcz9hPTNEYS5jb25j YXQoZC5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzKCkpOmEucHVzaChkKSxrKGQuc2U9CnJpZXMs ZnVuY3Rpb24oYSl7YS5vcHRpb25zLnNob3dJbkxlZ2VuZD0zRCExfSkpO3JldHVybiBhLmNvbmNh dChiLmNhbGwodGhpcz0KKSl9KTsKLWc9M0R7cG9pbnRBdHRyVG9PcHRpb25zOntzdHJva2U6ImJv cmRlckNvbG9yIiwic3Ryb2tlLXdpZHRoIjoiYm9yZGVyV2lkdGgiPQosZmlsbDoiY29sb3IiLGRh c2hzdHlsZToiZGFzaFN0eWxlIn0scG9pbnRBcnJheU1hcDpbInZhbHVlIl0sYXhpc1R5cGVzOlsi eEE9CnhpcyIsInlBeGlzIiwiY29sb3JBeGlzIl0sb3B0aW9uYWxBeGlzOiJjb2xvckF4aXMiLHRy YWNrZXJHcm91cHM6WyJncm91cCIsIj0KbWFya2VyR3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxn ZXRTeW1ib2w6bixwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwidmFsdWUiPQpdLHRyYW5zbGF0ZUNv bG9yczpmdW5jdGlvbigpe3ZhciBiPTNEdGhpcyxhPTNEdGhpcy5vcHRpb25zLm51bGxDb2xvcixk PTNEdGg9CmlzLmNvbG9yQXhpcztrKHRoaXMuZGF0YSxmdW5jdGlvbihjKXt2YXIgZT0zRGMudmFs dWU7aWYoZT0zRGU9M0Q9M0Q9M0RudWxsPz0KYTpkP2QudG9Db2xvcihlLGMpOmMuY29sb3J8fGIu Y29sb3IpYy5jb2xvcj0zRGV9KX19O3UucGxvdE9wdGlvbnMuaGVhdG1hcD0KPTNECi1sKHUucGxv dE9wdGlvbnMuc2NhdHRlcix7YW5pbWF0aW9uOiExLGJvcmRlcldpZHRoOjAsbnVsbENvbG9yOiIj RjhGOEY4IixkYT0KdGFMYWJlbHM6e2Zvcm1hdDoie3BvaW50LnZhbHVlfSIsdmVydGljYWxBbGln bjoibWlkZGxlIixjcm9wOiExLG92ZXJmbG93OiExPQosc3R5bGU6e2NvbG9yOiJ3aGl0ZSIsZm9u dFdlaWdodDoiYm9sZCIsdGV4dFNoYWRvdzoiMCAwIDVweCBibGFjayJ9fSxtYXJrZXI9CjpudWxs LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiJ7cG9pbnQueH0sIHtwb2ludC55fToge3BvaW50LnZhbHVl fTxici8+In0sc3RhdD0KZXM6e25vcm1hbDp7YW5pbWF0aW9uOiEwfSxob3Zlcjp7YnJpZ2h0bmVz czowLjJ9fX0pO20uaGVhdG1hcD0zRHoobS5zY2F0dGVyPQosbChnLHt0eXBlOiJoZWF0bWFwIixw b2ludEFycmF5TWFwOlsieSIsInZhbHVlIl0saGFzUG9pbnRTcGVjaWZpY09wdGlvbnM6ITA9Cixz dXBwb3J0c0RyaWxsZG93bjohMCxnZXRFeHRyZW1lc0Zyb21BbGw6ITAsaW5pdDpmdW5jdGlvbigp e20uc2NhdHRlci5wcm90bz0KdHlwZS5pbml0LmFwcGx5KHRoaXMsCi1hcmd1bWVudHMpO3RoaXMu cG9pbnRSYW5nZT0zRHRoaXMub3B0aW9ucy5jb2xzaXplfHwxO3RoaXMueUF4aXMuYXhpc1BvaW50 Uj0KYW5nZT0zRHRoaXMub3B0aW9ucy5yb3dzaXplfHwxfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2 YXIgYj0zRHRoaXMub3B0aW9ucyxhPQo9M0R0aGlzLnhBeGlzLGQ9M0R0aGlzLnlBeGlzO3RoaXMu Z2VuZXJhdGVQb2ludHMoKTtrKHRoaXMucG9pbnRzLGZ1bmN0aW9uKGM9Cil7dmFyIGU9M0QoYi5j b2xzaXplfHwxKS8yLGg9M0QoYi5yb3dzaXplfHwxKS8yLGY9M0RNYXRoLnJvdW5kKGEubGVuLWEu dHJhbj0Kc2xhdGUoYy54LWUsMCwxLDAsMSkpLGU9M0RNYXRoLnJvdW5kKGEubGVuLWEudHJhbnNs YXRlKGMueCtlLDAsMSwwLDEpKSxnPTNEPQpNYXRoLnJvdW5kKGQudHJhbnNsYXRlKGMueS1oLDAs MSwwLDEpKSxoPTNETWF0aC5yb3VuZChkLnRyYW5zbGF0ZShjLnkraCwwLDE9CiwwLDEpKTtjLnBs b3RYPTNEKGYrZSkvMjtjLnBsb3RZPTNEKGcraCkvMjtjLnNoYXBlVHlwZT0zRCJyZWN0IjtjLnNo YXBlQXJncz0KPTNEe3g6TWF0aC5taW4oZiwKLWUpLHk6TWF0aC5taW4oZyxoKSx3aWR0aDpNYXRo LmFicyhlLWYpLGhlaWdodDpNYXRoLmFicyhoLWcpfX0pO3RoaXMudHJhbnNsPQphdGVDb2xvcnMo KX0sZHJhd1BvaW50czptLmNvbHVtbi5wcm90b3R5cGUuZHJhd1BvaW50cyxhbmltYXRlOm4sZ2V0 Qm94Om4sZHI9CmF3TGVnZW5kU3ltYm9sOnMuZHJhd1JlY3RhbmdsZSxnZXRFeHRyZW1lczpmdW5j dGlvbigpe3QucHJvdG90eXBlLmdldEV4dHJlbT0KZXMuY2FsbCh0aGlzLHRoaXMudmFsdWVEYXRh KTt0aGlzLnZhbHVlTWluPTNEdGhpcy5kYXRhTWluO3RoaXMudmFsdWVNYXg9M0R0PQpoaXMuZGF0 YU1heDt0LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMpfX0pKX0pKEhpZ2hjaGFydHMp OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgYmZjMTFhMTM3NDI3YmIxYjA0 NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0KN2I3NGE4 ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9w bHVnaW5zL2hpZ2hjPQpoYXJ0cy9oaWdoY2hhcnRzLW1vcmUuanMKLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9wbHVnaW5zL2hpZ2hjaGFydHMvaGlnaGNo PQphcnRzLW1vcmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotIEhpZ2hj aGFydHMgSlMgdjQuMC4xICgyMDE0LTA0LTI0KQotCi0gKGMpIDIwMDktMjAxNCBUb3JzdGVpbiBI b25zaQotCi0gTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKLSovCi0oZnVuY3Rp b24obSxDKXtmdW5jdGlvbiBLKGEsYixjKXt0aGlzLmluaXQuY2FsbCh0aGlzLGEsYixjKX12YXIg Tz0zRG0uYXJyYT0KeU1pbixQPTNEbS5hcnJheU1heCxzPTNEbS5lYWNoLEY9M0RtLmV4dGVuZCxv PTNEbS5tZXJnZSxRPTNEbS5tYXAscT0zRG0ucGljPQprLHg9M0RtLnBJbnQscD0zRG0uZ2V0T3B0 aW9ucygpLnBsb3RPcHRpb25zLGg9M0RtLnNlcmllc1R5cGVzLHU9M0RtLmV4dGVuZEM9Cmxhc3Ms TD0zRG0uc3BsYXQscj0zRG0ud3JhcCxNPTNEbS5BeGlzLHk9M0RtLlRpY2ssSD0zRG0uUG9pbnQs Uj0zRG0uUG9pbnRlcj0KLFM9M0RtLkNlbnRlcmVkU2VyaWVzTWl4aW4sej0zRG0uVHJhY2tlck1p eGluLHQ9M0RtLlNlcmllcyx2PTNETWF0aCxEPTNEdi5yPQpvdW5kLEE9M0R2LmZsb29yLFQ9M0R2 Lm1heCxVPTNEbS5Db2xvcix3PTNEZnVuY3Rpb24oKXt9O0YoSy5wcm90b3R5cGUse2luaXQ9Cjpm dW5jdGlvbihhLGIsYyl7dmFyIGQ9M0R0aGlzLGU9M0RkLmRlZmF1bHRPcHRpb25zO2QuY2hhcnQ9 M0RiO2lmKGIuYW5ndWxhcj0KKWUuYmFja2dyb3VuZD0zRHt9O2Qub3B0aW9ucz0zRGE9M0RvKGUs YSk7Ci0oYT0zRGEuYmFja2dyb3VuZCkmJnMoW10uY29uY2F0KEwoYSkpLnJldmVyc2UoKSxmdW5j dGlvbihhKXt2YXIgZz0zRGEuYmFjaz0KZ3JvdW5kQ29sb3IsYT0zRG8oZC5kZWZhdWx0QmFja2dy b3VuZE9wdGlvbnMsYSk7aWYoZylhLmJhY2tncm91bmRDb2xvcj0zRGc7PQphLmNvbG9yPTNEYS5i YWNrZ3JvdW5kQ29sb3I7Yy5vcHRpb25zLnBsb3RCYW5kcy51bnNoaWZ0KGEpfSl9LGRlZmF1bHRP cHRpb249CnM6e2NlbnRlcjpbIjUwJSIsIjUwJSJdLHNpemU6Ijg1JSIsc3RhcnRBbmdsZTowfSxk ZWZhdWx0QmFja2dyb3VuZE9wdGlvbnM6ez0Kc2hhcGU6ImNpcmNsZSIsYm9yZGVyV2lkdGg6MSxi b3JkZXJDb2xvcjoic2lsdmVyIixiYWNrZ3JvdW5kQ29sb3I6e2xpbmVhckdyPQphZGllbnQ6e3gx OjAseTE6MCx4MjowLHkyOjF9LHN0b3BzOltbMCwiI0ZGRiJdLFsxLCIjREREIl1dfSxmcm9tOk51 bWJlci5NSU49Cl9WQUxVRSxpbm5lclJhZGl1czowLHRvOk51bWJlci5NQVhfVkFMVUUsb3V0ZXJS YWRpdXM6IjEwNSUifX0pOwotdmFyIEc9M0RNLnByb3RvdHlwZSx5PTNEeS5wcm90b3R5cGUsVj0z RHtnZXRPZmZzZXQ6dyxyZWRyYXc6ZnVuY3Rpb24oKXt0aGk9CnMuaXNEaXJ0eT0zRCExfSxyZW5k ZXI6ZnVuY3Rpb24oKXt0aGlzLmlzRGlydHk9M0QhMX0sc2V0U2NhbGU6dyxzZXRDYXRlZ29yaT0K ZXM6dyxzZXRUaXRsZTp3fSxOPTNEe2lzUmFkaWFsOiEwLGRlZmF1bHRSYWRpYWxHYXVnZU9wdGlv bnM6e2xhYmVsczp7YWxpZ246PQoiY2VudGVyIix4OjAseTpudWxsfSxtaW5vckdyaWRMaW5lV2lk dGg6MCxtaW5vclRpY2tJbnRlcnZhbDoiYXV0byIsbWlub3JUaWM9CmtMZW5ndGg6MTAsbWlub3JU aWNrUG9zaXRpb246Imluc2lkZSIsbWlub3JUaWNrV2lkdGg6MSx0aWNrTGVuZ3RoOjEwLHRpY2tQ bz0Kc2l0aW9uOiJpbnNpZGUiLHRpY2tXaWR0aDoyLHRpdGxlOntyb3RhdGlvbjowfSx6SW5kZXg6 Mn0sZGVmYXVsdFJhZGlhbFhPcHRpPQpvbnM6e2dyaWRMaW5lV2lkdGg6MSxsYWJlbHM6e2FsaWdu Om51bGwsZGlzdGFuY2U6MTUseDowLHk6bnVsbH0sCi1tYXhQYWRkaW5nOjAsbWluUGFkZGluZzow LHNob3dMYXN0TGFiZWw6ITEsdGlja0xlbmd0aDowfSxkZWZhdWx0UmFkaWFsWU9wdD0KaW9uczp7 Z3JpZExpbmVJbnRlcnBvbGF0aW9uOiJjaXJjbGUiLGxhYmVsczp7YWxpZ246InJpZ2h0Iix4Oi0z LHk6LTJ9LHNob3dMPQphc3RMYWJlbDohMSx0aXRsZTp7eDo0LHRleHQ6bnVsbCxyb3RhdGlvbjo5 MH19LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7YT0zRHQ9Cmhpcy5vcHRpb25zPTNEbyh0aGlzLmRl ZmF1bHRPcHRpb25zLHRoaXMuZGVmYXVsdFJhZGlhbE9wdGlvbnMsYSk7aWYoIWEucGxvdD0KQmFu ZHMpYS5wbG90QmFuZHM9M0RbXX0sZ2V0T2Zmc2V0OmZ1bmN0aW9uKCl7Ry5nZXRPZmZzZXQuY2Fs bCh0aGlzKTt0aGlzLmNoPQphcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdPTNEMDt0aGlzLmNlbnRl cj0zRHRoaXMucGFuZS5jZW50ZXI9M0RTLmdldENlbnRlci49CmNhbGwodGhpcy5wYW5lKX0sZ2V0 TGluZVBhdGg6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRHRoaXMuY2VudGVyLGI9M0RxKGIsCi1jWzJd LzItdGhpcy5vZmZzZXQpO3JldHVybiB0aGlzLmNoYXJ0LnJlbmRlcmVyLnN5bWJvbHMuYXJjKHRo aXMubGVmdCtjWzBdLD0KdGhpcy50b3ArY1sxXSxiLGIse3N0YXJ0OnRoaXMuc3RhcnRBbmdsZVJh ZCxlbmQ6dGhpcy5lbmRBbmdsZVJhZCxvcGVuOiEwLGluPQpuZXJSOjB9KX0sc2V0QXhpc1RyYW5z bGF0aW9uOmZ1bmN0aW9uKCl7Ry5zZXRBeGlzVHJhbnNsYXRpb24uY2FsbCh0aGlzKTtpZig9CnRo aXMuY2VudGVyKXRoaXMudHJhbnNBPTNEdGhpcy5pc0NpcmN1bGFyPyh0aGlzLmVuZEFuZ2xlUmFk LXRoaXMuc3RhcnRBbmdsZT0KUmFkKS8odGhpcy5tYXgtdGhpcy5taW58fDEpOnRoaXMuY2VudGVy WzJdLzIvKHRoaXMubWF4LXRoaXMubWlufHwxKSx0aGlzLm1pPQpuUGl4ZWxQYWRkaW5nPTNEdGhp cy5pc1hBeGlzP3RoaXMudHJhbnNBKnRoaXMubWluUG9pbnRPZmZzZXQ6MH0sYmVmb3JlU2V0VGk9 CmNrUG9zaXRpb25zOmZ1bmN0aW9uKCl7dGhpcy5hdXRvQ29ubmVjdCYmKHRoaXMubWF4Kz0zRHRo aXMuY2F0ZWdvcmllcyYmCi0xfHx0aGlzLnBvaW50UmFuZ2V8fHRoaXMuY2xvc2VzdFBvaW50UmFu Z2V8fDApfSxzZXRBeGlzU2l6ZTpmdW5jdGlvbigpe0cucz0KZXRBeGlzU2l6ZS5jYWxsKHRoaXMp O2lmKHRoaXMuaXNSYWRpYWwpe3RoaXMuY2VudGVyPTNEdGhpcy5wYW5lLmNlbnRlcj0zRG0uPQpD ZW50ZXJlZFNlcmllc01peGluLmdldENlbnRlci5jYWxsKHRoaXMucGFuZSk7aWYodGhpcy5pc0Np cmN1bGFyKXRoaXMuc2VjdG89CnI9M0R0aGlzLmVuZEFuZ2xlUmFkLXRoaXMuc3RhcnRBbmdsZVJh ZDt0aGlzLmxlbj0zRHRoaXMud2lkdGg9M0R0aGlzLmhlaWdodD0KPTNEdGhpcy5jZW50ZXJbMl0q cSh0aGlzLnNlY3RvciwxKS8yfX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhp PQpzLnBvc3RUcmFuc2xhdGUodGhpcy5pc0NpcmN1bGFyP3RoaXMudHJhbnNsYXRlKGEpOjAscSh0 aGlzLmlzQ2lyY3VsYXI/Yjp0aGk9CnMudHJhbnNsYXRlKGEpLHRoaXMuY2VudGVyWzJdLzIpLXRo aXMub2Zmc2V0KX0scG9zdFRyYW5zbGF0ZTpmdW5jdGlvbihhLAotYil7dmFyIGM9M0R0aGlzLmNo YXJ0LGQ9M0R0aGlzLmNlbnRlcixhPTNEdGhpcy5zdGFydEFuZ2xlUmFkK2E7cmV0dXJue3g6Yy49 CnBsb3RMZWZ0K2RbMF0rTWF0aC5jb3MoYSkqYix5OmMucGxvdFRvcCtkWzFdK01hdGguc2luKGEp KmJ9fSxnZXRQbG90QmFuZFBhdD0KaDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9M0R0aGlzLmNlbnRl cixlPTNEdGhpcy5zdGFydEFuZ2xlUmFkLGY9M0RkWzJdLzIsZz0KPTNEW3EoYy5vdXRlclJhZGl1 cywiMTAwJSIpLGMuaW5uZXJSYWRpdXMscShjLnRoaWNrbmVzcywxMCldLGs9M0QvJSQvLGwsbj0K PTNEdGhpcy5pc0NpcmN1bGFyO3RoaXMub3B0aW9ucy5ncmlkTGluZUludGVycG9sYXRpb249M0Q9 M0Q9M0QicG9seWdvbiI/ZD0KPTNEdGhpcy5nZXRQbG90TGluZVBhdGgoYSkuY29uY2F0KHRoaXMu Z2V0UGxvdExpbmVQYXRoKGIsITApKToobnx8KGdbMF09M0R0PQpoaXMudHJhbnNsYXRlKGEpLGdb MV09M0R0aGlzLnRyYW5zbGF0ZShiKSksZz0zRFEoZyxmdW5jdGlvbihhKXtrLnRlc3QoYSkmJig9 CmE9M0R4KGEsMTApKmYvMTAwKTsKLXJldHVybiBhfSksYy5zaGFwZT0zRD0zRD0zRCJjaXJjbGUi fHwhbj8oYT0zRC1NYXRoLlBJLzIsYj0zRE1hdGguUEkqMS41LGw9Cj0zRCEwKTooYT0zRGUrdGhp cy50cmFuc2xhdGUoYSksYj0zRGUrdGhpcy50cmFuc2xhdGUoYikpLGQ9M0R0aGlzLmNoYXJ0LnJl bj0KZGVyZXIuc3ltYm9scy5hcmModGhpcy5sZWZ0K2RbMF0sdGhpcy50b3ArZFsxXSxnWzBdLGdb MF0se3N0YXJ0OmEsZW5kOmIsaW5uPQplclI6cShnWzFdLGdbMF0tZ1syXSksb3BlbjpsfSkpO3Jl dHVybiBkfSxnZXRQbG90TGluZVBhdGg6ZnVuY3Rpb24oYSxiKXt2YXI9CiBjPTNEdGhpcyxkPTNE Yy5jZW50ZXIsZT0zRGMuY2hhcnQsZj0zRGMuZ2V0UG9zaXRpb24oYSksZyxrLGw7Yy5pc0NpcmN1 bGFyPz0KbD0zRFsiTSIsZFswXStlLnBsb3RMZWZ0LGRbMV0rZS5wbG90VG9wLCJMIixmLngsZi55 XTpjLm9wdGlvbnMuZ3JpZExpbmVJbnRlPQpycG9sYXRpb249M0Q9M0Q9M0QiY2lyY2xlIj8oYT0z RGMudHJhbnNsYXRlKGEpKSYmKGw9M0RjLmdldExpbmVQYXRoKDAsYSkpOig9CnMoZS54QXhpcyxm dW5jdGlvbihhKXthLnBhbmU9M0Q9M0Q9M0QKLWMucGFuZSYmKGc9M0RhKX0pLGw9M0RbXSxhPTNE Yy50cmFuc2xhdGUoYSksZD0zRGcudGlja1Bvc2l0aW9ucyxnLmF1dG9Db25uPQplY3QmJihkPTNE ZC5jb25jYXQoW2RbMF1dKSksYiYmKGQ9M0RbXS5jb25jYXQoZCkucmV2ZXJzZSgpKSxzKGQsZnVu Y3Rpb24oZiw9CmMpe2s9M0RnLmdldFBvc2l0aW9uKGYsYSk7bC5wdXNoKGM/IkwiOiJNIixrLngs ay55KX0pKTtyZXR1cm4gbH0sZ2V0VGl0bGVQbz0Kc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9M0R0 aGlzLmNlbnRlcixiPTNEdGhpcy5jaGFydCxjPTNEdGhpcy5vcHRpb25zLnRpdGxlPQo7cmV0dXJu e3g6Yi5wbG90TGVmdCthWzBdKyhjLnh8fDApLHk6Yi5wbG90VG9wK2FbMV0te2hpZ2g6MC41LG1p ZGRsZTowLjI1LGw9Cm93OjB9W2MuYWxpZ25dKmFbMl0rKGMueXx8MCl9fX07cihHLCJpbml0Iixm dW5jdGlvbihhLGIsYyl7dmFyIGk7dmFyIGQ9M0RiLj0KYW5ndWxhcixlPTNEYi5wb2xhcixmPTNE Yy5pc1gsZz0zRGQmJmYsayxsO2w9M0RiLm9wdGlvbnM7dmFyIG49M0RjLnBhbmV8fDA7PQppZihk KXtpZihGKHRoaXMsCi1nP1Y6Tiksaz0zRCFmKXRoaXMuZGVmYXVsdFJhZGlhbE9wdGlvbnM9M0R0 aGlzLmRlZmF1bHRSYWRpYWxHYXVnZU9wdGlvbnN9ZT0KbHNlIGlmKGUpRih0aGlzLE4pLHRoaXMu ZGVmYXVsdFJhZGlhbE9wdGlvbnM9M0Qoaz0zRGYpP3RoaXMuZGVmYXVsdFJhZGlhbFhPPQpwdGlv bnM6byh0aGlzLmRlZmF1bHRZQXhpc09wdGlvbnMsdGhpcy5kZWZhdWx0UmFkaWFsWU9wdGlvbnMp O2EuY2FsbCh0aGlzLGI9CixjKTtpZighZyYmKGR8fGUpKXthPTNEdGhpcy5vcHRpb25zO2lmKCFi LnBhbmVzKWIucGFuZXM9M0RbXTt0aGlzLnBhbmU9M0QoaT0KPTNEYi5wYW5lc1tuXT0zRGIucGFu ZXNbbl18fG5ldyBLKEwobC5wYW5lKVtuXSxiLHRoaXMpLG49M0RpKTtuPTNEbi5vcHRpb25zPQo7 Yi5pbnZlcnRlZD0zRCExO2wuY2hhcnQuem9vbVR5cGU9M0RudWxsO3RoaXMuc3RhcnRBbmdsZVJh ZD0zRGI9M0Qobi5zdGFydEE9Cm5nbGUtOTApKk1hdGguUEkvMTgwO3RoaXMuZW5kQW5nbGVSYWQ9 M0RsPTNEKHEobi5lbmRBbmdsZSxuLnN0YXJ0QW5nbGUrMzYwKT0KLTkwKSpNYXRoLlBJLwotMTgw O3RoaXMub2Zmc2V0PTNEYS5vZmZzZXR8fDA7aWYoKHRoaXMuaXNDaXJjdWxhcj0zRGspJiZjLm1h eD0zRD0zRD0zREMmJmw9Ci1iPTNEPTNEPTNEMipNYXRoLlBJKXRoaXMuYXV0b0Nvbm5lY3Q9M0Qh MH19KTtyKHksImdldFBvc2l0aW9uIixmdW5jdGlvbihhLD0KYixjLGQsZSl7dmFyIGY9M0R0aGlz LmF4aXM7cmV0dXJuIGYuZ2V0UG9zaXRpb24/Zi5nZXRQb3NpdGlvbihjKTphLmNhbGwodGhpPQpz LGIsYyxkLGUpfSk7cih5LCJnZXRMYWJlbFBvc2l0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUsZixn LGssbCl7dmFyIG49M0R0aGk9CnMuYXhpcyxqPTNEZi55LGk9M0RmLmFsaWduLGg9M0Qobi50cmFu c2xhdGUodGhpcy5wb3MpK24uc3RhcnRBbmdsZVJhZCtNYXRoLj0KUEkvMikvTWF0aC5QSSoxODAl MzYwO24uaXNSYWRpYWw/KGE9M0RuLmdldFBvc2l0aW9uKHRoaXMucG9zLG4uY2VudGVyWzJdLzIr PQpxKGYuZGlzdGFuY2UsLTI1KSksZi5yb3RhdGlvbj0zRD0zRD0zRCJhdXRvIj9kLmF0dHIoe3Jv dGF0aW9uOmh9KTpqPTNEPTNEPQo9M0RudWxsJiYoaj0zRG4uY2hhcnQucmVuZGVyZXIuZm9udE1l dHJpY3MoZC5zdHlsZXMuZm9udFNpemUpLmItCi1kLmdldEJCb3goKS5oZWlnaHQvMiksaT0zRD0z RD0zRG51bGwmJihpPTNEbi5pc0NpcmN1bGFyP2g+MjAmJmg8MTYwPyJsZWZ0Ij0KOmg+MjAwJiZo PDM0MD8icmlnaHQiOiJjZW50ZXIiOiJjZW50ZXIiLGQuYXR0cih7YWxpZ246aX0pKSxhLngrPTNE Zi54LGEueSs9Cj0zRGopOmE9M0RhLmNhbGwodGhpcyxiLGMsZCxlLGYsZyxrLGwpO3JldHVybiBh fSk7cih5LCJnZXRNYXJrUGF0aCIsZnVuY3Rpbz0KbihhLGIsYyxkLGUsZixnKXt2YXIgaz0zRHRo aXMuYXhpcztrLmlzUmFkaWFsPyhhPTNEay5nZXRQb3NpdGlvbih0aGlzLnBvcyxrPQouY2VudGVy WzJdLzIrZCksYj0zRFsiTSIsYixjLCJMIixhLngsYS55XSk6Yj0zRGEuY2FsbCh0aGlzLGIsYyxk LGUsZixnKTtyZXQ9CnVybiBifSk7cC5hcmVhcmFuZ2U9M0RvKHAuYXJlYSx7bGluZVdpZHRoOjEs bWFya2VyOm51bGwsdGhyZXNob2xkOm51bGwsdG9vbD0KdGlwOntwb2ludEZvcm1hdDonPHNwYW4g c3R5bGU9M0QiY29sb3I6e3Nlcmllcy5jb2xvcn0iPj1FMj05Nz04Rjwvc3Bhbj4ge3NlPQpyaWVz Lm5hbWV9OiA8Yj57cG9pbnQubG93fTwvYj4gLSA8Yj57cG9pbnQuaGlnaH08L2I+PGJyLz4nfSwK LXRyYWNrQnlBcmVhOiEwLGRhdGFMYWJlbHM6e3ZlcnRpY2FsQWxpZ246bnVsbCx4TG93OjAseEhp Z2g6MCx5TG93OjAseUhpZ2g6PQowfSxzdGF0ZXM6e2hvdmVyOntoYWxvOiExfX19KTtoLmFyZWFy YW5nZT0zRHUoaC5hcmVhLHt0eXBlOiJhcmVhcmFuZ2UiLHBvaW49CnRBcnJheU1hcDpbImxvdyIs ImhpZ2giXSx0b1lEYXRhOmZ1bmN0aW9uKGEpe3JldHVyblthLmxvdyxhLmhpZ2hdfSxwb2ludFZh bD0KS2V5OiJsb3ciLGdldFNlZ21lbnRzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzO3MoYS5wb2lu dHMsZnVuY3Rpb24oYil7aWYoIWEuPQpvcHRpb25zLmNvbm5lY3ROdWxscyYmKGIubG93PTNEPTNE PTNEbnVsbHx8Yi5oaWdoPTNEPTNEPTNEbnVsbCkpYi55PTNEbnVsbDs9CmVsc2UgaWYoYi5sb3c9 M0Q9M0Q9M0RudWxsJiZiLmhpZ2ghPTNEPTNEbnVsbCliLnk9M0RiLmhpZ2h9KTt0LnByb3RvdHlw ZS5nZT0KdFNlZ21lbnRzLmNhbGwodGhpcyl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPTNE dGhpcy55QXhpcztoLmFyZWEucHJvdG90PQp5cGUudHJhbnNsYXRlLmFwcGx5KHRoaXMpOwotcyh0 aGlzLnBvaW50cyxmdW5jdGlvbihiKXt2YXIgYz0zRGIubG93LGQ9M0RiLmhpZ2gsZT0zRGIucGxv dFk7ZD0zRD0zRD0zRG49CnVsbCYmYz0zRD0zRD0zRG51bGw/Yi55PTNEbnVsbDpjPTNEPTNEPTNE bnVsbD8oYi5wbG90TG93PTNEYi5wbG90WT0zRG51bGwsYj0KLnBsb3RIaWdoPTNEYS50cmFuc2xh dGUoZCwwLDEsMCwxKSk6ZD0zRD0zRD0zRG51bGw/KGIucGxvdExvdz0zRGUsYi5wbG90SGlnPQpo PTNEbnVsbCk6KGIucGxvdExvdz0zRGUsYi5wbG90SGlnaD0zRGEudHJhbnNsYXRlKGQsMCwxLDAs MSkpfSl9LGdldFNlZ21lbnQ9ClBhdGg6ZnVuY3Rpb24oYSl7dmFyIGIsYz0zRFtdLGQ9M0RhLmxl bmd0aCxlPTNEdC5wcm90b3R5cGUuZ2V0U2VnbWVudFBhdGgsZj0KLGc7Zz0zRHRoaXMub3B0aW9u czt2YXIgaz0zRGcuc3RlcDtmb3IoYj0zREhpZ2hjaGFydHNBZGFwdGVyLmdyZXAoYSxmdW5jdGlv PQpuKGEpe3JldHVybiBhLnBsb3RMb3chPTNEPTNEbnVsbH0pO2QtLTspZj0zRGFbZF0sZi5wbG90 SGlnaCE9M0Q9M0RudWxsJiZjLnA9CnVzaCh7cGxvdFg6Zi5wbG90WCxwbG90WTpmLnBsb3RIaWdo fSk7YT0zRGUuY2FsbCh0aGlzLAotYik7aWYoaylrPTNEPTNEPTNEITAmJihrPTNEImxlZnQiKSxn LnN0ZXA9M0R7bGVmdDoicmlnaHQiLGNlbnRlcjoiY2VudGVyIiw9CnJpZ2h0OiJsZWZ0In1ba107 Yz0zRGUuY2FsbCh0aGlzLGMpO2cuc3RlcD0zRGs7Zz0zRFtdLmNvbmNhdChhLGMpO2NbMF09M0Qi TD0KIjt0aGlzLmFyZWFQYXRoPTNEdGhpcy5hcmVhUGF0aC5jb25jYXQoYSxjKTtyZXR1cm4gZ30s ZHJhd0RhdGFMYWJlbHM6ZnVuY3RpPQpvbigpe3ZhciBhPTNEdGhpcy5kYXRhLGI9M0RhLmxlbmd0 aCxjLGQ9M0RbXSxlPTNEdC5wcm90b3R5cGUsZj0zRHRoaXMub3B0aW89Cm5zLmRhdGFMYWJlbHMs ZyxrPTNEdGhpcy5jaGFydC5pbnZlcnRlZDtpZihmLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TGFi ZWxzKT0Ke2ZvcihjPTNEYjtjLS07KWc9M0RhW2NdLGcueT0zRGcuaGlnaCxnLl9wbG90WT0zRGcu cGxvdFksZy5wbG90WT0zRGcucGxvdEhpPQpnaCxkW2NdPTNEZy5kYXRhTGFiZWwsZy5kYXRhTGFi ZWw9M0RnLmRhdGFMYWJlbFVwcGVyLGcuYmVsb3c9M0QhMSxrPyhmLmFsaWc9Cm49M0QibGVmdCIs Zi54PTNEZi54SGlnaCk6Zi55PTNECi1mLnlIaWdoO2UuZHJhd0RhdGFMYWJlbHMmJmUuZHJhd0Rh dGFMYWJlbHMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2ZvcihjPTNEYj0KO2MtLTspZz0zRGFbY10s Zy5kYXRhTGFiZWxVcHBlcj0zRGcuZGF0YUxhYmVsLGcuZGF0YUxhYmVsPTNEZFtjXSxnLnk9M0Rn LmxvPQp3LGcucGxvdFk9M0RnLl9wbG90WSxnLmJlbG93PTNEITAsaz8oZi5hbGlnbj0zRCJyaWdo dCIsZi54PTNEZi54TG93KTpmLnk9M0Q9CmYueUxvdztlLmRyYXdEYXRhTGFiZWxzJiZlLmRyYXdE YXRhTGFiZWxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LGFsaWduRGF0YT0KTGFiZWw6ZnVuY3Rp b24oKXtoLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwuYXBwbHkodGhpcyxhcmd1bWVu dHMpfSxnPQpldFN5bWJvbDpoLmNvbHVtbi5wcm90b3R5cGUuZ2V0U3ltYm9sLGRyYXdQb2ludHM6 d30pO3AuYXJlYXNwbGluZXJhbmdlPTNEbyg9CnAuYXJlYXJhbmdlKTtoLmFyZWFzcGxpbmVyYW5n ZT0zRHUoaC5hcmVhcmFuZ2Use3R5cGU6ImFyZWFzcGxpbmVyYW5nZSIsZ2V0UD0Kb2ludFNwbGlu ZTpoLnNwbGluZS5wcm90b3R5cGUuZ2V0UG9pbnRTcGxpbmV9KTsKLShmdW5jdGlvbigpe3ZhciBh PTNEaC5jb2x1bW4ucHJvdG90eXBlO3AuY29sdW1ucmFuZ2U9M0RvKHAuY29sdW1uLHAuYXJlYXJh PQpuZ2Use2xpbmVXaWR0aDoxLHBvaW50UmFuZ2U6bnVsbH0pO2guY29sdW1ucmFuZ2U9M0R1KGgu YXJlYXJhbmdlLHt0eXBlOiJjb2w9CnVtbnJhbmdlIix0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIg Yj0zRHRoaXMsYz0zRGIueUF4aXMsZDthLnRyYW5zbGF0ZS5hcHBseT0KKGIpO3MoYi5wb2ludHMs ZnVuY3Rpb24oYSl7dmFyIGY9M0RhLnNoYXBlQXJncyxnPTNEYi5vcHRpb25zLm1pblBvaW50TGVu Z3RoPQosazthLnRvb2x0aXBQb3M9M0RudWxsO2EucGxvdEhpZ2g9M0RkPTNEYy50cmFuc2xhdGUo YS5oaWdoLDAsMSwwLDEpO2EucGxvdEw9Cm93PTNEYS5wbG90WTtrPTNEZDthPTNEYS5wbG90WS1k O2E8ZyYmKGctPTNEYSxhKz0zRGcsay09M0RnLzIpO2YuaGVpZ2h0PTNEYT0KO2YueT0zRGt9KX0s dHJhY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVscyJdLGRyYXdHcmFwaDp3LHBvaW50QXR0 clRvT3B0PQppb25zOmEucG9pbnRBdHRyVG9PcHRpb25zLAotZHJhd1BvaW50czphLmRyYXdQb2lu dHMsZHJhd1RyYWNrZXI6YS5kcmF3VHJhY2tlcixhbmltYXRlOmEuYW5pbWF0ZSxnZXRDb2w9CnVt bk1ldHJpY3M6YS5nZXRDb2x1bW5NZXRyaWNzfSl9KSgpO3AuZ2F1Z2U9M0RvKHAubGluZSx7ZGF0 YUxhYmVsczp7ZW5hYmxlZD0KOiEwLGRlZmVyOiExLHk6MTUsYm9yZGVyV2lkdGg6MSxib3JkZXJD b2xvcjoic2lsdmVyIixib3JkZXJSYWRpdXM6Myxjcm9wOiExPQosc3R5bGU6e2ZvbnRXZWlnaHQ6 ImJvbGQifSx2ZXJ0aWNhbEFsaWduOiJ0b3AiLHpJbmRleDoyfSxkaWFsOnt9LHBpdm90Ont9LHQ9 Cm9vbHRpcDp7aGVhZGVyRm9ybWF0OiIifSxzaG93SW5MZWdlbmQ6ITF9KTt6PTNEe3R5cGU6Imdh dWdlIixwb2ludENsYXNzOnUoSD0KLHtzZXRTdGF0ZTpmdW5jdGlvbihhKXt0aGlzLnN0YXRlPTNE YX19KSxhbmd1bGFyOiEwLGRyYXdHcmFwaDp3LGZpeGVkQm94OiEwPQosZm9yY2VETDohMCx0cmFj a2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzIl0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFy IGE9Cj0zRAotdGhpcy55QXhpcyxiPTNEdGhpcy5vcHRpb25zLGM9M0RhLmNlbnRlcjt0aGlzLmdl bmVyYXRlUG9pbnRzKCk7cyh0aGlzLnBvaW49CnRzLGZ1bmN0aW9uKGQpe3ZhciBlPTNEbyhiLmRp YWwsZC5kaWFsKSxmPTNEeChxKGUucmFkaXVzLDgwKSkqY1syXS8yMDAsZz0zRD0KeChxKGUuYmFz ZUxlbmd0aCw3MCkpKmYvMTAwLGs9M0R4KHEoZS5yZWFyTGVuZ3RoLDEwKSkqZi8xMDAsbD0zRGUu YmFzZVdpZHRoPQp8fDMsbj0zRGUudG9wV2lkdGh8fDEsaj0zRGIub3ZlcnNob290LGk9M0RhLnN0 YXJ0QW5nbGVSYWQrYS50cmFuc2xhdGUoZC55LG49CnVsbCxudWxsLG51bGwsITApO2omJnR5cGVv ZiBqPTNEPTNEPTNEIm51bWJlciI/KGo9M0RqLzE4MCpNYXRoLlBJLGk9M0RNYXRoLj0KbWF4KGEu c3RhcnRBbmdsZVJhZC1qLE1hdGgubWluKGEuZW5kQW5nbGVSYWQraixpKSkpOmIud3JhcD0zRD0z RD0zRCExJiYoaT0KPTNETWF0aC5tYXgoYS5zdGFydEFuZ2xlUmFkLE1hdGgubWluKGEuZW5kQW5n bGVSYWQsaSkpKTtpPTNEaSoxODAvTWF0aC5QSTtkPQouc2hhcGVUeXBlPTNEInBhdGgiO2Quc2hh cGVBcmdzPTNECi17ZDplLnBhdGh8fFsiTSIsLWssLWwvMiwiTCIsZywtbC8yLGYsLW4vMixmLG4v MixnLGwvMiwtayxsLzIsInoiXSx0cmFuc2xhdD0KZVg6Y1swXSx0cmFuc2xhdGVZOmNbMV0scm90 YXRpb246aX07ZC5wbG90WD0zRGNbMF07ZC5wbG90WT0zRGNbMV19KX0sZHJhd1BvPQppbnRzOmZ1 bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RhLnlBeGlzLmNlbnRlcixjPTNEYS5waXZvdCxkPTNE YS5vcHRpb25zLGU9Cj0zRGQucGl2b3QsZj0zRGEuY2hhcnQucmVuZGVyZXI7cyhhLnBvaW50cyxm dW5jdGlvbihjKXt2YXIgYj0zRGMuZ3JhcGhpYyxsPQo9M0RjLnNoYXBlQXJncyxlPTNEbC5kLGo9 M0RvKGQuZGlhbCxjLmRpYWwpO2I/KGIuYW5pbWF0ZShsKSxsLmQ9M0RlKTpjLmdyYXA9CmhpYz0z RGZbYy5zaGFwZVR5cGVdKGwpLmF0dHIoe3N0cm9rZTpqLmJvcmRlckNvbG9yfHwibm9uZSIsInN0 cm9rZS13aWR0aCI6aj0KLmJvcmRlcldpZHRofHwwLGZpbGw6ai5iYWNrZ3JvdW5kQ29sb3J8fCJi bGFjayIscm90YXRpb246bC5yb3RhdGlvbn0pLmFkZChhPQouZ3JvdXApfSk7Ci1jP2MuYW5pbWF0 ZSh7dHJhbnNsYXRlWDpiWzBdLHRyYW5zbGF0ZVk6YlsxXX0pOmEucGl2b3Q9M0RmLmNpcmNsZSgw LDAscShlLj0KcmFkaXVzLDUpKS5hdHRyKHsic3Ryb2tlLXdpZHRoIjplLmJvcmRlcldpZHRofHww LHN0cm9rZTplLmJvcmRlckNvbG9yfHwic2lsPQp2ZXIiLGZpbGw6ZS5iYWNrZ3JvdW5kQ29sb3J8 fCJibGFjayJ9KS50cmFuc2xhdGUoYlswXSxiWzFdKS5hZGQoYS5ncm91cCl9LGE9Cm5pbWF0ZTpm dW5jdGlvbihhKXt2YXIgYj0zRHRoaXM7aWYoIWEpcyhiLnBvaW50cyxmdW5jdGlvbihhKXt2YXIg ZD0zRGEuZ3JhcD0KaGljO2QmJihkLmF0dHIoe3JvdGF0aW9uOmIueUF4aXMuc3RhcnRBbmdsZVJh ZCoxODAvTWF0aC5QSX0pLGQuYW5pbWF0ZSh7cm90PQphdGlvbjphLnNoYXBlQXJncy5yb3RhdGlv bn0sYi5vcHRpb25zLmFuaW1hdGlvbikpfSksYi5hbmltYXRlPTNEbnVsbH0scmVuZGU9CnI6ZnVu Y3Rpb24oKXt0aGlzLmdyb3VwPTNEdGhpcy5wbG90R3JvdXAoImdyb3VwIiwic2VyaWVzIix0aGlz LnZpc2libGU/Ci0idmlzaWJsZSI6ImhpZGRlbiIsdGhpcy5vcHRpb25zLnpJbmRleCx0aGlzLmNo YXJ0LnNlcmllc0dyb3VwKTt0LnByb3RvdHlwZT0KLnJlbmRlci5jYWxsKHRoaXMpO3RoaXMuZ3Jv dXAuY2xpcCh0aGlzLmNoYXJ0LmNsaXBSZWN0KX0sc2V0RGF0YTpmdW5jdGlvbihhPQosYil7dC5w cm90b3R5cGUuc2V0RGF0YS5jYWxsKHRoaXMsYSwhMSk7dGhpcy5wcm9jZXNzRGF0YSgpO3RoaXMu Z2VuZXJhdGVQb2k9Cm50cygpO3EoYiwhMCkmJnRoaXMuY2hhcnQucmVkcmF3KCl9LGRyYXdUcmFj a2VyOnomJnouZHJhd1RyYWNrZXJQb2ludH07aC5nYT0KdWdlPTNEdShoLmxpbmUseik7cC5ib3hw bG90PTNEbyhwLmNvbHVtbix7ZmlsbENvbG9yOiIjRkZGRkZGIixsaW5lV2lkdGg6MSxtPQplZGlh bldpZHRoOjIsc3RhdGVzOntob3Zlcjp7YnJpZ2h0bmVzczotMC4zfX0sdGhyZXNob2xkOm51bGws dG9vbHRpcDp7cG9pbnQ9CkZvcm1hdDonPHNwYW4gc3R5bGU9M0QiY29sb3I6e3Nlcmllcy5jb2xv cn0iPj1FMj05Nz04Rjwvc3Bhbj48Yj4ge3Nlcmllcy5uYT0KbWV9PC9iPjxici8+TWF4aW11bTog e3BvaW50LmhpZ2h9PGJyLz5VcHBlciBxdWFydGlsZToge3BvaW50LnEzfTxici8+TWVkaWFuPQo6 IHtwb2ludC5tZWRpYW59PGJyLz5Mb3dlciBxdWFydGlsZToge3BvaW50LnExfTxici8+TWluaW11 bToge3BvaW50Lmxvd308YnI9Ci8+J30sCi13aGlza2VyTGVuZ3RoOiI1MCUiLHdoaXNrZXJXaWR0 aDoyfSk7aC5ib3hwbG90PTNEdShoLmNvbHVtbix7dHlwZToiYm94cGxvdD0KIixwb2ludEFycmF5 TWFwOlsibG93IiwicTEiLCJtZWRpYW4iLCJxMyIsImhpZ2giXSx0b1lEYXRhOmZ1bmN0aW9uKGEp e3JldHVyPQpuW2EubG93LGEucTEsYS5tZWRpYW4sYS5xMyxhLmhpZ2hdfSxwb2ludFZhbEtleToi aGlnaCIscG9pbnRBdHRyVG9PcHRpb25zOns9CmZpbGw6ImZpbGxDb2xvciIsc3Ryb2tlOiJjb2xv ciIsInN0cm9rZS13aWR0aCI6ImxpbmVXaWR0aCJ9LGRyYXdEYXRhTGFiZWxzOj0Kdyx0cmFuc2xh dGU6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMueUF4aXMsYj0zRHRoaXMucG9pbnRBcnJheU1hcDto LmNvbHVtbi5wPQpyb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyk7cyh0aGlzLnBvaW50cyxm dW5jdGlvbihjKXtzKGIsZnVuY3Rpb24oYil7Y1s9CmJdIT0zRD0zRG51bGwmJihjW2IrIlBsb3Qi XT0zRGEudHJhbnNsYXRlKGNbYl0sMCwxLDAsMSkpfSl9KX0sZHJhd1BvaW50czpmdT0KbmN0aW9u KCl7dmFyIGE9M0QKLXRoaXMsYj0zRGEucG9pbnRzLGM9M0RhLm9wdGlvbnMsZD0zRGEuY2hhcnQu cmVuZGVyZXIsZSxmLGcsayxsLG4saixpLGgsbSxwPQosSSxyLG8sSix1LHcsdCx2LHgseix5LEU9 M0RhLmRvUXVhcnRpbGVzIT0zRD0zRCExLEI9M0RwYXJzZUludChhLm9wdGlvbnMud2g9Cmlza2Vy TGVuZ3RoLDEwKS8xMDA7cyhiLGZ1bmN0aW9uKGIpe2g9M0RiLmdyYXBoaWM7ej0zRGIuc2hhcGVB cmdzO3A9M0R7fTtvPQo9M0R7fTt1PTNEe307eT0zRGIuY29sb3J8fGEuY29sb3I7aWYoYi5wbG90 WSE9M0Q9M0RDKWlmKGU9M0RiLnBvaW50QXR0cltiLnM9CmVsZWN0ZWQ/InNlbGVjdGVkIjoiIl0s dz0zRHoud2lkdGgsdD0zREEoei54KSx2PTNEdCt3LHg9M0REKHcvMiksZj0zREEoRT9iLj0KcTFQ bG90OmIubG93UGxvdCksZz0zREEoRT9iLnEzUGxvdDpiLmxvd1Bsb3QpLGs9M0RBKGIuaGlnaFBs b3QpLGw9M0RBKGIubG93PQpQbG90KSxwLnN0cm9rZT0zRGIuc3RlbUNvbG9yfHxjLnN0ZW1Db2xv cnx8eSxwWyJzdHJva2Utd2lkdGgiXT0zRHEoYi5zdGVtV2k9CmR0aCxjLnN0ZW1XaWR0aCxjLmxp bmVXaWR0aCkscC5kYXNoc3R5bGU9M0QKLWIuc3RlbURhc2hTdHlsZXx8Yy5zdGVtRGFzaFN0eWxl LG8uc3Ryb2tlPTNEYi53aGlza2VyQ29sb3J8fGMud2hpc2tlckNvbG9yPQp8fHksb1sic3Ryb2tl LXdpZHRoIl09M0RxKGIud2hpc2tlcldpZHRoLGMud2hpc2tlcldpZHRoLGMubGluZVdpZHRoKSx1 LnN0cm89CmtlPTNEYi5tZWRpYW5Db2xvcnx8Yy5tZWRpYW5Db2xvcnx8eSx1WyJzdHJva2Utd2lk dGgiXT0zRHEoYi5tZWRpYW5XaWR0aCxjLj0KbWVkaWFuV2lkdGgsYy5saW5lV2lkdGgpLHVbInN0 cm9rZS1saW5lY2FwIl09M0Qicm91bmQiLGo9M0RwWyJzdHJva2Utd2lkdGgiPQpdJTIvMixpPTNE dCt4K2osbT0zRFsiTSIsaSxnLCJMIixpLGssIk0iLGksZiwiTCIsaSxsXSxFJiYoaj0zRGVbInN0 cm9rZS13aWQ9CnRoIl0lMi8yLGk9M0RBKGkpK2osZj0zREEoZikraixnPTNEQShnKStqLHQrPTNE aix2Kz0zRGosST0zRFsiTSIsdCxnLCJMIix0LD0KZiwiTCIsdixmLCJMIix2LGcsIkwiLHQsZywi eiJdKSxCJiYoaj0zRG9bInN0cm9rZS13aWR0aCJdJTIvMixrKz0zRGosbCs9M0RqPQoscj0zRFsi TSIsaS14KkIsCi1rLCJMIixpK3gqQixrLCJNIixpLXgqQixsLCJMIixpK3gqQixsXSksaj0zRHVb InN0cm9rZS13aWR0aCJdJTIvMixuPTNERChiLj0KbWVkaWFuUGxvdCkraixKPTNEWyJNIix0LG4s IkwiLHYsbl0saCliLnN0ZW0uYW5pbWF0ZSh7ZDptfSksQiYmYi53aGlza2Vycy5hPQpuaW1hdGUo e2Q6cn0pLEUmJmIuYm94LmFuaW1hdGUoe2Q6SX0pLGIubWVkaWFuU2hhcGUuYW5pbWF0ZSh7ZDpK fSk7ZWxzZXtiLmc9CnJhcGhpYz0zRGg9M0RkLmcoKS5hZGQoYS5ncm91cCk7Yi5zdGVtPTNEZC5w YXRoKG0pLmF0dHIocCkuYWRkKGgpO2lmKEIpYi53aD0KaXNrZXJzPTNEZC5wYXRoKHIpLmF0dHIo bykuYWRkKGgpO2lmKEUpYi5ib3g9M0RkLnBhdGgoSSkuYXR0cihlKS5hZGQoaCk7Yi5tPQplZGlh blNoYXBlPTNEZC5wYXRoKEopLmF0dHIodSkuYWRkKGgpfX0pfX0pO3AuZXJyb3JiYXI9M0RvKHAu Ym94cGxvdCx7Y29sb3I9CjoiIzAwMDAwMCIsZ3JvdXBpbmc6ITEsbGlua2VkVG86IjpwcmV2aW91 cyIsdG9vbHRpcDp7cG9pbnRGb3JtYXQ6JzxzcGFuIHN0eT0KbGU9M0QiY29sb3I6e3Nlcmllcy5j b2xvcn0iPj1FMj05Nz04Rjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lmxvd308PQov Yj4gLSA8Yj57cG9pbnQuaGlnaH08L2I+PGJyLz4nfSwKLXdoaXNrZXJXaWR0aDpudWxsfSk7aC5l cnJvcmJhcj0zRHUoaC5ib3hwbG90LHt0eXBlOiJlcnJvcmJhciIscG9pbnRBcnJheU1hPQpwOlsi bG93IiwiaGlnaCJdLHRvWURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuW2EubG93LGEuaGlnaF19LHBv aW50VmFsS2V5OiJoaWc9CmgiLGRvUXVhcnRpbGVzOiExLGRyYXdEYXRhTGFiZWxzOmguYXJlYXJh bmdlP2guYXJlYXJhbmdlLnByb3RvdHlwZS5kcmF3RGF0YT0KTGFiZWxzOncsZ2V0Q29sdW1uTWV0 cmljczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxpbmtlZFBhcmVudCYmdGhpcy5saW5rZWRQPQph cmVudC5jb2x1bW5NZXRyaWNzfHxoLmNvbHVtbi5wcm90b3R5cGUuZ2V0Q29sdW1uTWV0cmljcy5j YWxsKHRoaXMpfX0pO3Aud2E9CnRlcmZhbGw9M0RvKHAuY29sdW1uLHtsaW5lV2lkdGg6MSxsaW5l Q29sb3I6IiMzMzMiLGRhc2hTdHlsZToiZG90Iixib3JkZXJDbz0KbG9yOiIjMzMzIn0pO2gud2F0 ZXJmYWxsPTNEdShoLmNvbHVtbix7dHlwZToid2F0ZXJmYWxsIix1cENvbG9yUHJvcDoiZmlsbCIs Ci1wb2ludEFycmF5TWFwOlsibG93IiwieSJdLHBvaW50VmFsS2V5OiJ5Iixpbml0OmZ1bmN0aW9u KGEsYil7Yi5zdGFja2luZz0zRD0KITA7aC5jb2x1bW4ucHJvdG90eXBlLmluaXQuY2FsbCh0aGlz LGEsYil9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPTNEdGhpPQpzLnlBeGlzLGIsYyxkLGUs ZixnLGssbCxuO2I9M0R0aGlzLm9wdGlvbnMudGhyZXNob2xkO2guY29sdW1uLnByb3RvdHlwZS50 cmE9Cm5zbGF0ZS5hcHBseSh0aGlzKTtsPTNEYjtkPTNEdGhpcy5wb2ludHM7Zm9yKGM9M0QwLGI9 M0RkLmxlbmd0aDtjPGI7YysrKXtlPQo9M0RkW2NdO2Y9M0RlLnNoYXBlQXJncztnPTNEdGhpcy5n ZXRTdGFjayhjKTtuPTNEZy5wb2ludHNbdGhpcy5pbmRleCsiLCIrY109CjtpZihpc05hTihlLnkp KWUueT0zRHRoaXMueURhdGFbY107az0zRFQobCxsK2UueSkrblswXTtmLnk9M0RhLnRyYW5zbGF0 ZShrLD0KMCwxKTtlLmlzU3VtfHxlLmlzSW50ZXJtZWRpYXRlU3VtPyhmLnk9M0RhLnRyYW5zbGF0 ZShuWzFdLDAsMSksZi5oZWlnaHQ9M0RhPQoudHJhbnNsYXRlKG5bMF0sCi0wLDEpLWYueSk6bCs9 M0RnLnRvdGFsO2YuaGVpZ2h0PDAmJihmLnkrPTNEZi5oZWlnaHQsZi5oZWlnaHQqPTNELTEpO2Uu cGxvdD0KWT0zRGYueT0zREQoZi55KS10aGlzLmJvcmRlcldpZHRoJTIvMjtmLmhlaWdodD0zREQo Zi5oZWlnaHQpO2UueUJvdHRvbT0zRGYuPQp5K2YuaGVpZ2h0fX0scHJvY2Vzc0RhdGE6ZnVuY3Rp b24oYSl7dmFyIGI9M0R0aGlzLnlEYXRhLGM9M0R0aGlzLnBvaW50cyxkLGU9Cj0zRGIubGVuZ3Ro LGY9M0R0aGlzLm9wdGlvbnMudGhyZXNob2xkfHwwLGcsayxsLG4saixpO2s9M0RnPTNEbD0zRG49 M0RmO2Zvcj0KKGk9M0QwO2k8ZTtpKyspaj0zRGJbaV0sZD0zRGMmJmNbaV0/Y1tpXTp7fSxqPTNE PTNEPTNEInN1bSJ8fGQuaXNTdW0/YltpXT0KPTNEazpqPTNEPTNEPTNEImludGVybWVkaWF0ZVN1 bSJ8fGQuaXNJbnRlcm1lZGlhdGVTdW0/KGJbaV09M0RnLGc9M0RmKTooays9Cj0zRGosZys9M0Rq KSxsPTNETWF0aC5taW4oayxsKSxuPTNETWF0aC5tYXgoayxuKTt0LnByb3RvdHlwZS5wcm9jZXNz RGF0YS5jYT0KbGwodGhpcyxhKTt0aGlzLmRhdGFNaW49M0RsO3RoaXMuZGF0YU1heD0zRG59LAot dG9ZRGF0YTpmdW5jdGlvbihhKXtpZihhLmlzU3VtKXJldHVybiJzdW0iO2Vsc2UgaWYoYS5pc0lu dGVybWVkaWF0ZVN1bSlyZXQ9CnVybiJpbnRlcm1lZGlhdGVTdW0iO3JldHVybiBhLnl9LGdldEF0 dHJpYnM6ZnVuY3Rpb24oKXtoLmNvbHVtbi5wcm90b3R5cGUuZz0KZXRBdHRyaWJzLmFwcGx5KHRo aXMsYXJndW1lbnRzKTt2YXIgYT0zRHRoaXMub3B0aW9ucyxiPTNEYS5zdGF0ZXMsYz0zRGEudXBD PQpvbG9yfHx0aGlzLmNvbG9yLGE9M0RtLkNvbG9yKGMpLmJyaWdodGVuKDAuMSkuZ2V0KCksZD0z RG8odGhpcy5wb2ludEF0dHIpLGU9Cj0zRHRoaXMudXBDb2xvclByb3A7ZFsiIl1bZV09M0RjO2Qu aG92ZXJbZV09M0RiLmhvdmVyLnVwQ29sb3J8fGE7ZC5zZWxlY3RbZT0KXT0zRGIuc2VsZWN0LnVw Q29sb3J8fGM7cyh0aGlzLnBvaW50cyxmdW5jdGlvbihhKXtpZihhLnk+MCYmIWEuY29sb3IpYS5w b2luPQp0QXR0cj0zRGQsYS5jb2xvcj0zRGN9KX0sZ2V0R3JhcGhQYXRoOmZ1bmN0aW9uKCl7dmFy IGE9M0R0aGlzLmRhdGEsYj0zRGEubGU9Cm5ndGgsCi1jPTNERCh0aGlzLm9wdGlvbnMubGluZVdp ZHRoK3RoaXMuYm9yZGVyV2lkdGgpJTIvMixkPTNEW10sZSxmLGc7Zm9yKGc9M0QxOz0KZzxiO2cr KylmPTNEYVtnXS5zaGFwZUFyZ3MsZT0zRGFbZy0xXS5zaGFwZUFyZ3MsZj0zRFsiTSIsZS54K2Uu d2lkdGgsZS55K2MsPQoiTCIsZi54LGUueStjXSxhW2ctMV0ueTwwJiYoZlsyXSs9M0RlLmhlaWdo dCxmWzVdKz0zRGUuaGVpZ2h0KSxkPTNEZC5jb25jYXQ9CihmKTtyZXR1cm4gZH0sZ2V0RXh0cmVt ZXM6dyxnZXRTdGFjazpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMueUF4aXMuc3RhY2tzLD0KYz0z RHRoaXMuc3RhY2tLZXk7dGhpcy5wcm9jZXNzZWRZRGF0YVthXTx0aGlzLm9wdGlvbnMudGhyZXNo b2xkJiYoYz0zRCItIitjPQopO3JldHVybiBiW2NdW2FdfSxkcmF3R3JhcGg6dC5wcm90b3R5cGUu ZHJhd0dyYXBofSk7cC5idWJibGU9M0RvKHAuc2NhdHRlciw9CntkYXRhTGFiZWxzOntmb3JtYXQ6 Intwb2ludC56fSIsaW5zaWRlOiEwLHN0eWxlOntjb2xvcjoid2hpdGUiLHRleHRTaGFkb3c6Ij0K MHB4IDBweCAzcHggYmxhY2sifSwKLXZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LG1hcmtlcjp7bGlu ZUNvbG9yOm51bGwsbGluZVdpZHRoOjF9LG1pblNpemU6OCxtYXhTPQppemU6IjIwJSIsc3RhdGVz Ontob3Zlcjp7aGFsbzp7c2l6ZTo1fX19LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiIoe3BvaW50Lnh9 LCA9Cntwb2ludC55fSksIFNpemU6IHtwb2ludC56fSJ9LHR1cmJvVGhyZXNob2xkOjAselRocmVz aG9sZDowfSk7ej0zRHUoSCx7aGFsbz0KUGF0aDpmdW5jdGlvbigpe3JldHVybiBILnByb3RvdHlw ZS5oYWxvUGF0aC5jYWxsKHRoaXMsdGhpcy5zaGFwZUFyZ3Mucit0aGlzPQouc2VyaWVzLm9wdGlv bnMuc3RhdGVzLmhvdmVyLmhhbG8uc2l6ZSl9fSk7aC5idWJibGU9M0R1KGguc2NhdHRlcix7dHlw ZToiYnU9CmJibGUiLHBvaW50Q2xhc3M6eixwb2ludEFycmF5TWFwOlsieSIsInoiXSxwYXJhbGxl bEFycmF5czpbIngiLCJ5IiwieiJdLHRyYT0KY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVs c0dyb3VwIl0sYnViYmxlUGFkZGluZzohMCwKLXBvaW50QXR0clRvT3B0aW9uczp7c3Ryb2tlOiJs aW5lQ29sb3IiLCJzdHJva2Utd2lkdGgiOiJsaW5lV2lkdGgiLGZpbGw6ImZpPQpsbENvbG9yIn0s YXBwbHlPcGFjaXR5OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5vcHRpb25zLm1hcmtlcixjPTNE cShiLmZpbGw9Ck9wYWNpdHksMC41KSxhPTNEYXx8Yi5maWxsQ29sb3J8fHRoaXMuY29sb3I7YyE9 M0Q9M0QxJiYoYT0zRFUoYSkuc2V0T3BhY2l0eT0KKGMpLmdldCgicmdiYSIpKTtyZXR1cm4gYX0s Y29udmVydEF0dHJpYnM6ZnVuY3Rpb24oKXt2YXIgYT0zRHQucHJvdG90eXBlLmNvPQpudmVydEF0 dHJpYnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EuZmlsbD0zRHRoaXMuYXBwbHlPcGFjaXR5KGEu ZmlsbCk7cmV0dXI9Cm4gYX0sZ2V0UmFkaWk6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGs9 M0R0aGlzLnpEYXRhLGw9M0RbXSxuPTNEdGhpcy5vcD0KdGlvbnMuc2l6ZUJ5IT0zRD0zRCJ3aWR0 aCI7Zm9yKGY9M0QwLGU9M0RrLmxlbmd0aDtmPGU7ZisrKWc9M0RiLWEsZz0zRGc+MD8oPQprW2Zd LWEpLyhiLQotYSk6MC41LG4mJmc+PTNEMCYmKGc9M0RNYXRoLnNxcnQoZykpLGwucHVzaCh2LmNl aWwoYytnKihkLWMpKS8yKTt0aGlzLnJhZGk9Cmk9M0RsfSxhbmltYXRlOmZ1bmN0aW9uKGEpe3Zh ciBiPTNEdGhpcy5vcHRpb25zLmFuaW1hdGlvbjtpZighYSlzKHRoaXMucG9pbj0KdHMsZnVuY3Rp b24oYSl7dmFyIGQ9M0RhLmdyYXBoaWMsYT0zRGEuc2hhcGVBcmdzO2QmJmEmJihkLmF0dHIoInIi LDEpLGQuYW5pPQptYXRlKHtyOmEucn0sYikpfSksdGhpcy5hbmltYXRlPTNEbnVsbH0sdHJhbnNs YXRlOmZ1bmN0aW9uKCl7dmFyIGEsYj0zRHRoaXM9Ci5kYXRhLGMsZCxlPTNEdGhpcy5yYWRpaTto LnNjYXR0ZXIucHJvdG90eXBlLnRyYW5zbGF0ZS5jYWxsKHRoaXMpO2ZvcihhPTNEYj0KLmxlbmd0 aDthLS07KWM9M0RiW2FdLGQ9M0RlP2VbYV06MCxjLm5lZ2F0aXZlPTNEYy56PCh0aGlzLm9wdGlv bnMuelRocmVzaG9sPQpkfHwwKSxkPj0zRHRoaXMubWluUHhTaXplLzI/KGMuc2hhcGVUeXBlPTNE ImNpcmNsZSIsYy5zaGFwZUFyZ3M9M0R7eDpjLnBsb3Q9ClgseTpjLnBsb3RZLAotcjpkfSxjLmRs Qm94PTNEe3g6Yy5wbG90WC1kLHk6Yy5wbG90WS1kLHdpZHRoOjIqZCxoZWlnaHQ6MipkfSk6Yy5z aGFwZUFyZ3M9Cj0zRGMucGxvdFk9M0RjLmRsQm94PTNEQ30sZHJhd0xlZ2VuZFN5bWJvbDpmdW5j dGlvbihhLGIpe3ZhciBjPTNEeChhLml0ZW1TdD0KeWxlLmZvbnRTaXplKS8yO2IubGVnZW5kU3lt Ym9sPTNEdGhpcy5jaGFydC5yZW5kZXJlci5jaXJjbGUoYyxhLmJhc2VsaW5lLWMsPQpjKS5hdHRy KHt6SW5kZXg6M30pLmFkZChiLmxlZ2VuZEdyb3VwKTtiLmxlZ2VuZFN5bWJvbC5pc01hcmtlcj0z RCEwfSxkcmF3UG89CmludHM6aC5jb2x1bW4ucHJvdG90eXBlLmRyYXdQb2ludHMsYWxpZ25EYXRh TGFiZWw6aC5jb2x1bW4ucHJvdG90eXBlLmFsaWduRD0KYXRhTGFiZWx9KTtNLnByb3RvdHlwZS5i ZWZvcmVQYWRkaW5nPTNEZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRHRoaXMubGVuPQosYz0z RHRoaXMuY2hhcnQsZD0zRDAsZT0zRGIsZj0zRHRoaXMuaXNYQXhpcyxnPTNEZj8ieERhdGEiOiJ5 RGF0YSIsaz0zRHRoaXM9Ci5taW4sbD0zRHt9LAotbj0zRHYubWluKGMucGxvdFdpZHRoLGMucGxv dEhlaWdodCksaj0zRE51bWJlci5NQVhfVkFMVUUsaT0zRC1OdW1iZXIuTUFYX1Y9CkFMVUUsaD0z RHRoaXMubWF4LWssbT0zRGIvaCxwPTNEW107dGhpcy50aWNrUG9zaXRpb25zJiYocyh0aGlzLnNl cmllcyxmdW5jdD0KaW9uKGIpe3ZhciBnPTNEYi5vcHRpb25zO2lmKGIuYnViYmxlUGFkZGluZyYm KGIudmlzaWJsZXx8IWMub3B0aW9ucy5jaGFydC5pPQpnbm9yZUhpZGRlblNlcmllcykpaWYoYS5h bGxvd1pvb21PdXRzaWRlPTNEITAscC5wdXNoKGIpLGYpcyhbIm1pblNpemUiLCJtYXg9ClNpemUi XSxmdW5jdGlvbihhKXt2YXIgYj0zRGdbYV0sZj0zRC8lJC8udGVzdChiKSxiPTNEeChiKTtsW2Fd PTNEZj9uKmIvMTAwOj0KYn0pLGIubWluUHhTaXplPTNEbC5taW5TaXplLGI9M0RiLnpEYXRhLGIu bGVuZ3RoJiYoaj0zRHYubWluKGosdi5tYXgoTyhiKSxnPQouZGlzcGxheU5lZ2F0aXZlPTNEPTNE PTNEITE/Zy56VGhyZXNob2xkOi1OdW1iZXIuTUFYX1ZBTFVFKSksaT0zRHYubWF4KGksUCg9CmIp KSl9KSxzKHAsZnVuY3Rpb24oYSl7dmFyIGI9M0QKLWFbZ10sYz0zRGIubGVuZ3RoLG47ZiYmYS5n ZXRSYWRpaShqLGksbC5taW5TaXplLGwubWF4U2l6ZSk7aWYoaD4wKWZvcig7Yy0tPQo7KXR5cGVv ZiBiW2NdPTNEPTNEPTNEIm51bWJlciImJihuPTNEYS5yYWRpaVtjXSxkPTNETWF0aC5taW4oKGJb Y10taykqbS1uLGQ9CiksZT0zRE1hdGgubWF4KChiW2NdLWspKm0rbixlKSl9KSxwLmxlbmd0aCYm aD4wJiZxKHRoaXMub3B0aW9ucy5taW4sdGhpcy51cz0KZXJNaW4pPTNEPTNEPTNEQyYmcSh0aGlz Lm9wdGlvbnMubWF4LHRoaXMudXNlck1heCk9M0Q9M0Q9M0RDJiYoZS09M0RiLG0qPTNEPQooYitk LWUpL2IsdGhpcy5taW4rPTNEZC9tLHRoaXMubWF4Kz0zRGUvbSkpfTsoZnVuY3Rpb24oKXtmdW5j dGlvbiBhKGEsYixjKXs9CmEuY2FsbCh0aGlzLGIsYyk7aWYodGhpcy5jaGFydC5wb2xhcil0aGlz LmNsb3NlU2VnbWVudD0zRGZ1bmN0aW9uKGEpe3ZhciBiPQo9M0R0aGlzLnhBeGlzLmNlbnRlcjth LnB1c2goIkwiLGJbMF0sYlsxXSl9LHRoaXMuY2xvc2VkU3RhY2tzPTNEITB9ZnVuY3Rpb249CiBi KGEsYil7dmFyIGM9M0R0aGlzLmNoYXJ0LAotZD0zRHRoaXMub3B0aW9ucy5hbmltYXRpb24sZT0z RHRoaXMuZ3JvdXAsaj0zRHRoaXMubWFya2VyR3JvdXAsaT0zRHRoaXMueEE9Cnhpcy5jZW50ZXIs aD0zRGMucGxvdExlZnQsbT0zRGMucGxvdFRvcDtpZihjLnBvbGFyKXtpZihjLnJlbmRlcmVyLmlz U1ZHKWQ9Cj0zRD0zRD0zRCEwJiYoZD0zRHt9KSxiPyhjPTNEe3RyYW5zbGF0ZVg6aVswXStoLHRy YW5zbGF0ZVk6aVsxXSttLHNjYWxlWDowLj0KMDAxLHNjYWxlWTowLjAwMX0sZS5hdHRyKGMpLGom JmouYXR0cihjKSk6KGM9M0R7dHJhbnNsYXRlWDpoLHRyYW5zbGF0ZVk6bSxzPQpjYWxlWDoxLHNj YWxlWToxfSxlLmFuaW1hdGUoYyxkKSxqJiZqLmFuaW1hdGUoYyxkKSx0aGlzLmFuaW1hdGU9M0Ru dWxsKX1lbHM9CmUgYS5jYWxsKHRoaXMsYil9dmFyIGM9M0R0LnByb3RvdHlwZSxkPTNEUi5wcm90 b3R5cGUsZTtjLnRvWFk9M0RmdW5jdGlvbihhKT0Ke3ZhciBiLGM9M0R0aGlzLmNoYXJ0LGQ9M0Rh LnBsb3RYO2I9M0RhLnBsb3RZO2EucmVjdFBsb3RYPTNEZDthLnJlY3RQbG90WT0KPTNEYjtkPTNE KGQvTWF0aC5QSSoxODArdGhpcy54QXhpcy5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZSklCi0zNjA7 ZDwwJiYoZCs9M0QzNjApO2EuY2xpZW50WD0zRGQ7Yj0zRHRoaXMueEF4aXMucG9zdFRyYW5zbGF0 ZShhLnBsb3RYLHRoaT0Kcy55QXhpcy5sZW4tYik7YS5wbG90WD0zRGEucG9sYXJQbG90WD0zRGIu eC1jLnBsb3RMZWZ0O2EucGxvdFk9M0RhLnBvbGFyUGxvPQp0WT0zRGIueS1jLnBsb3RUb3B9O2Mu b3JkZXJUb29sdGlwUG9pbnRzPTNEZnVuY3Rpb24oYSl7aWYodGhpcy5jaGFydC5wb2xhciY9CiYo YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY2xpZW50WC1iLmNsaWVudFh9KSxhWzBdKSlh WzBdLndyYXBwZWRDbGllbj0KdFg9M0RhWzBdLmNsaWVudFgrMzYwLGEucHVzaChhWzBdKX07aC5h cmVhJiZyKGguYXJlYS5wcm90b3R5cGUsImluaXQiLGEpO2guPQphcmVhc3BsaW5lJiZyKGguYXJl YXNwbGluZS5wcm90b3R5cGUsImluaXQiLGEpO2guc3BsaW5lJiZyKGguc3BsaW5lLnByb3RvdHk9 CnBlLCJnZXRQb2ludFNwbGluZSIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsaixpLGgsbSxwLG87 aWYodGhpcy5jaGFydC5wb2xhcj0KKXtlPTNECi1jLnBsb3RYO2o9M0RjLnBsb3RZO2E9M0RiW2Qt MV07aT0zRGJbZCsxXTt0aGlzLmNvbm5lY3RFbmRzJiYoYXx8KGE9M0RiW2IubD0KZW5ndGgtMl0p LGl8fChpPTNEYlsxXSkpO2lmKGEmJmkpaD0zRGEucGxvdFgsbT0zRGEucGxvdFksYj0zRGkucGxv dFgscD0zRGkuPQpwbG90WSxoPTNEKDEuNSplK2gpLzIuNSxtPTNEKDEuNSpqK20pLzIuNSxpPTNE KDEuNSplK2IpLzIuNSxvPTNEKDEuNSpqK3ApLzI9Ci41LGI9M0RNYXRoLnNxcnQoTWF0aC5wb3co aC1lLDIpK01hdGgucG93KG0taiwyKSkscD0zRE1hdGguc3FydChNYXRoLnBvdyhpLT0KZSwyKStN YXRoLnBvdyhvLWosMikpLGg9M0RNYXRoLmF0YW4yKG0taixoLWUpLG09M0RNYXRoLmF0YW4yKG8t aixpLWUpLG89M0RNPQphdGguUEkvMisoaCttKS8yLE1hdGguYWJzKGgtbyk+TWF0aC5QSS8yJiYo by09M0RNYXRoLlBJKSxoPTNEZStNYXRoLmNvcyhvKSo9CmIsbT0zRGorTWF0aC5zaW4obykqYixp PTNEZStNYXRoLmNvcyhNYXRoLlBJK28pKnAsbz0zRGorTWF0aC5zaW4oTWF0aC5QSStvKT0KKnAs Yy5yaWdodENvbnRYPTNEaSxjLnJpZ2h0Q29udFk9M0QKLW87ZD8oYz0zRFsiQyIsYS5yaWdodENv bnRYfHxhLnBsb3RYLGEucmlnaHRDb250WXx8YS5wbG90WSxofHxlLG18fGosZSxqXSxhPQoucmln aHRDb250WD0zRGEucmlnaHRDb250WT0zRG51bGwpOmM9M0RbIk0iLGUsal19ZWxzZSBjPTNEYS5j YWxsKHRoaXMsYixjLGQ9Cik7cmV0dXJuIGN9KTtyKGMsInRyYW5zbGF0ZSIsZnVuY3Rpb24oYSl7 YS5jYWxsKHRoaXMpO2lmKHRoaXMuY2hhcnQucG9sYXImJj0KIXRoaXMucHJldmVudFBvc3RUcmFu c2xhdGUpZm9yKHZhciBhPTNEdGhpcy5wb2ludHMsYj0zRGEubGVuZ3RoO2ItLTspdGhpcy50PQpv WFkoYVtiXSl9KTtyKGMsImdldFNlZ21lbnRQYXRoIixmdW5jdGlvbihhLGIpe3ZhciBjPTNEdGhp cy5wb2ludHM7aWYodGhpcy49CmNoYXJ0LnBvbGFyJiZ0aGlzLm9wdGlvbnMuY29ubmVjdEVuZHMh PTNEPTNEITEmJmJbYi5sZW5ndGgtMV09M0Q9M0Q9M0RjW2MubD0KZW5ndGgtMV0mJmNbMF0ueSE9 M0Q9M0RudWxsKXRoaXMuY29ubmVjdEVuZHM9M0QhMCxiPTNEW10uY29uY2F0KGIsW2NbMF1dKTty PQpldHVybiBhLmNhbGwodGhpcywKLWIpfSk7cihjLCJhbmltYXRlIixiKTtyKGMsInNldFRvb2x0 aXBQb2ludHMiLGZ1bmN0aW9uKGEsYil7dGhpcy5jaGFydC5wb2xhPQpyJiZGKHRoaXMueEF4aXMs e3Rvb2x0aXBMZW46MzYwfSk7cmV0dXJuIGEuY2FsbCh0aGlzLGIpfSk7aWYoaC5jb2x1bW4pZT0z RGg9Ci5jb2x1bW4ucHJvdG90eXBlLHIoZSwiYW5pbWF0ZSIsYikscihlLCJ0cmFuc2xhdGUiLGZ1 bmN0aW9uKGEpe3ZhciBiPTNEdGhpcz0KLnhBeGlzLGM9M0R0aGlzLnlBeGlzLmxlbixkPTNEYi5j ZW50ZXIsZT0zRGIuc3RhcnRBbmdsZVJhZCxoPTNEdGhpcy5jaGFydC5yPQplbmRlcmVyLGksbTt0 aGlzLnByZXZlbnRQb3N0VHJhbnNsYXRlPTNEITA7YS5jYWxsKHRoaXMpO2lmKGIuaXNSYWRpYWwp e2I9M0Q9CnRoaXMucG9pbnRzO2ZvcihtPTNEYi5sZW5ndGg7bS0tOylpPTNEYlttXSxhPTNEaS5i YXJYK2UsaS5zaGFwZVR5cGU9M0QicGF0aD0KIixpLnNoYXBlQXJncz0zRHtkOmguc3ltYm9scy5h cmMoZFswXSxkWzFdLGMtaS5wbG90WSxudWxsLHtzdGFydDphLGVuZDphK2kuPQpwb2ludFdpZHRo LAotaW5uZXJSOmMtcShpLnlCb3R0b20sYyl9KX0sdGhpcy50b1hZKGkpLGkudG9vbHRpcFBvcz0z RFtpLnBsb3RYLGkucGxvdFldLGk9Ci50dEJlbG93PTNEaS5wbG90WT5kWzFdfX0pLHIoZSwiYWxp Z25EYXRhTGFiZWwiLGZ1bmN0aW9uKGEsYixkLGUsaCxqKXtpZih0aD0KaXMuY2hhcnQucG9sYXIp e2E9M0RiLnJlY3RQbG90WC9NYXRoLlBJKjE4MDtpZihlLmFsaWduPTNEPTNEPTNEbnVsbCllLmFs aWduPQo9M0RhPjIwJiZhPDE2MD8ibGVmdCI6YT4yMDAmJmE8MzQwPyJyaWdodCI6ImNlbnRlciI7 aWYoZS52ZXJ0aWNhbEFsaWduPTNEPQo9M0Q9M0RudWxsKWUudmVydGljYWxBbGlnbj0zRGE8NDV8 fGE+MzE1PyJib3R0b20iOmE+MTM1JiZhPDIyNT8idG9wIjoibWlkZGw9CmUiO2MuYWxpZ25EYXRh TGFiZWwuY2FsbCh0aGlzLGIsZCxlLGgsail9ZWxzZSBhLmNhbGwodGhpcyxiLGQsZSxoLGopfSk7 cihkLD0KImdldEluZGV4IixmdW5jdGlvbihhLGIpe3ZhciBjLGQ9M0R0aGlzLmNoYXJ0LGU7ZC5w b2xhcj8oZT0zRGQueEF4aXNbMF0uY2VuPQp0ZXIsYz0zRAotYi5jaGFydFgtZVswXS1kLnBsb3RM ZWZ0LGQ9M0RiLmNoYXJ0WS1lWzFdLWQucGxvdFRvcCxjPTNEMTgwLU1hdGgucm91bmQoTWE9CnRo LmF0YW4yKGMsZCkvTWF0aC5QSSoxODApKTpjPTNEYS5jYWxsKHRoaXMsYik7cmV0dXJuIGN9KTty KGQsImdldENvb3JkaW5hdD0KZXMiLGZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLmNoYXJ0LGQ9 M0R7eEF4aXM6W10seUF4aXM6W119O2MucG9sYXI/cyhjLmF4PQplcyxmdW5jdGlvbihhKXt2YXIg ZT0zRGEuaXNYQXhpcyxmPTNEYS5jZW50ZXIsaD0zRGIuY2hhcnRYLWZbMF0tYy5wbG90TGVmdCw9 CmY9M0RiLmNoYXJ0WS1mWzFdLWMucGxvdFRvcDtkW2U/InhBeGlzIjoieUF4aXMiXS5wdXNoKHth eGlzOmEsdmFsdWU6YS50cmFucz0KbGF0ZShlP01hdGguUEktTWF0aC5hdGFuMihoLGYpOk1hdGgu c3FydChNYXRoLnBvdyhoLDIpK01hdGgucG93KGYsMikpLCEwKX0pPQp9KTpkPTNEYS5jYWxsKHRo aXMsYik7cmV0dXJuIGR9KX0pKCl9KShIaWdoY2hhcnRzKTsKCmRpZmYgLXIgYmZjMTFhMTM3NDI3 YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4MDBmMDQ1ZT0K N2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0 YXRpYy9wbHVnaW5zL2hpZ2hjPQpoYXJ0cy9oaWdoY2hhcnRzLmpzCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvcGx1Z2lucy9oaWdoY2hhcnRzL2hpZ2hj aD0KYXJ0cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0vKgotIEhpZ2hjaGFy dHMgSlMgdjQuMC4xICgyMDE0LTA0LTI0KQotCi0gKGMpIDIwMDktMjAxNCBUb3JzdGVpbiBIb25z aQotCi0gTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKLSovCi0oZnVuY3Rpb24o KXtmdW5jdGlvbiBxKGEsYil7dmFyIGM7YXx8KGE9M0R7fSk7Zm9yKGMgaW4gYilhW2NdPTNEYltj XTtyZXR1cj0KbiBhfWZ1bmN0aW9uIHcoKXt2YXIgYSxiPTNEYXJndW1lbnRzLGMsZD0zRHt9LGU9 M0RmdW5jdGlvbihhLGIpe3ZhciBjLGQ7dHlwPQplb2YgYSE9M0Q9M0Qib2JqZWN0IiYmKGE9M0R7 fSk7Zm9yKGQgaW4gYiliLmhhc093blByb3BlcnR5KGQpJiYoYz0zRGJbZF0sYVs9CmRdPTNEYyYm dHlwZW9mIGM9M0Q9M0Q9M0Qib2JqZWN0IiYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs KGMpIT0zRD0zRD0KIltvYmplY3QgQXJyYXldIiYmZCE9M0Q9M0QicmVuZGVyVG8iJiZ0eXBlb2Yg Yy5ub2RlVHlwZSE9M0Q9M0QibnVtYmVyIj9lKGFbPQpkXXx8e30sYyk6YltkXSk7cmV0dXJuIGF9 O2JbMF09M0Q9M0Q9M0QhMCYmKGQ9M0RiWzFdLGI9M0RBcnJheS5wcm90b3R5cGUuc2w9CmljZS5j YWxsKGIsMikpO2M9M0RiLmxlbmd0aDtmb3IoYT0zRDA7YTxjO2ErKylkPTNEZShkLGJbYV0pO3Jl dHVybiBkfWZ1bmN0aT0Kb24geihhLGIpe3JldHVybiBwYXJzZUludChhLGJ8fAotMTApfWZ1bmN0 aW9uIEZhKGEpe3JldHVybiB0eXBlb2YgYT0zRD0zRD0zRCJzdHJpbmcifWZ1bmN0aW9uIGNhKGEp e3JldHVybiA9CnR5cGVvZiBhPTNEPTNEPTNEIm9iamVjdCJ9ZnVuY3Rpb24gTGEoYSl7cmV0dXJu IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYz0KYWxsKGEpPTNEPTNEPTNEIltvYmplY3QgQXJy YXldIn1mdW5jdGlvbiBoYShhKXtyZXR1cm4gdHlwZW9mIGE9M0Q9M0Q9M0QibnVtPQpiZXIifWZ1 bmN0aW9uIHphKGEpe3JldHVybiBVLmxvZyhhKS9VLkxOMTB9ZnVuY3Rpb24gaWEoYSl7cmV0dXJu IFUucG93KDEwLGE9Cil9ZnVuY3Rpb24gamEoYSxiKXtmb3IodmFyIGM9M0RhLmxlbmd0aDtjLS07 KWlmKGFbY109M0Q9M0Q9M0RiKXthLnNwbGljZShjLD0KMSk7YnJlYWt9fWZ1bmN0aW9uIHIoYSl7 cmV0dXJuIGEhPTNEPTNEdCYmYSE9M0Q9M0RudWxsfWZ1bmN0aW9uIEgoYSxiLGMpe3ZhPQpyIGQs ZTtpZihGYShiKSlyKGMpP2Euc2V0QXR0cmlidXRlKGIsYyk6YSYmYS5nZXRBdHRyaWJ1dGUmJihl PTNEYS5nZXRBdHRyaWI9CnV0ZShiKSk7ZWxzZSBpZihyKGIpJiYKLWNhKGIpKWZvcihkIGluIGIp YS5zZXRBdHRyaWJ1dGUoZCxiW2RdKTtyZXR1cm4gZX1mdW5jdGlvbiBxYShhKXtyZXR1cm4gTGEo PQphKT9hOlthXX1mdW5jdGlvbiBtKCl7dmFyIGE9M0Rhcmd1bWVudHMsYixjLGQ9M0RhLmxlbmd0 aDtmb3IoYj0zRDA7YjxkO2IrKyk9CmlmKGM9M0RhW2JdLHR5cGVvZiBjIT0zRD0zRCJ1bmRlZmlu ZWQiJiZjIT0zRD0zRG51bGwpcmV0dXJuIGN9ZnVuY3Rpb24gRyhhLD0KYil7aWYoQWEmJiFhYSYm YiYmYi5vcGFjaXR5IT0zRD0zRHQpYi5maWx0ZXI9M0QiYWxwaGEob3BhY2l0eT0zRCIrYi5vcGFj aXR5PQoqMTAwKyIpIjtxKGEuc3R5bGUsYil9ZnVuY3Rpb24gWShhLGIsYyxkLGUpe2E9M0R5LmNy ZWF0ZUVsZW1lbnQoYSk7YiYmcShhLGI9Cik7ZSYmRyhhLHtwYWRkaW5nOjAsYm9yZGVyOlEsbWFy Z2luOjB9KTtjJiZHKGEsYyk7ZCYmZC5hcHBlbmRDaGlsZChhKTtyZXR1cj0KbiBhfWZ1bmN0aW9u IGthKGEsYil7dmFyIGM9M0RmdW5jdGlvbigpe307Yy5wcm90b3R5cGU9M0RuZXcgYTtxKGMucHJv dG90eXBlPQosYik7cmV0dXJuIGN9Ci1mdW5jdGlvbiBHYShhLGIsYyxkKXt2YXIgZT0zREUubGFu ZyxhPTNEK2F8fDAsZj0zRGI9M0Q9M0Q9M0QtMT8oYS50b1N0cmluZz0KKCkuc3BsaXQoIi4iKVsx XXx8IiIpLmxlbmd0aDppc05hTihiPTNETShiKSk/MjpiLGI9M0RjPTNEPTNEPTNEdm9pZCAwP2Uu ZGVjPQppbWFsUG9pbnQ6YyxkPTNEZD0zRD0zRD0zRHZvaWQgMD9lLnRob3VzYW5kc1NlcDpkLGU9 M0RhPDA/Ii0iOiIiLGM9M0RTdHJpbmc9Cih6KGE9M0RNKGEpLnRvRml4ZWQoZikpKSxnPTNEYy5s ZW5ndGg+Mz9jLmxlbmd0aCUzOjA7cmV0dXJuIGUrKGc/Yy5zdWJzdHIoMD0KLGcpK2Q6IiIpK2Mu c3Vic3RyKGcpLnJlcGxhY2UoLyhcZHszfSkoPz0zRFxkKS9nLCIkMSIrZCkrKGY/YitNKGEtYyku dG9GaXhlPQpkKGYpLnNsaWNlKDIpOiIiKX1mdW5jdGlvbiBIYShhLGIpe3JldHVybiBBcnJheSgo Ynx8MikrMS1TdHJpbmcoYSkubGVuZ3RoKS49CmpvaW4oMCkrYX1mdW5jdGlvbiBNYShhLGIsYyl7 dmFyIGQ9M0RhW2JdO2FbYl09M0RmdW5jdGlvbigpe3ZhciBhPTNEQXJyYXkucD0Kcm90b3R5cGUu c2xpY2UuY2FsbChhcmd1bWVudHMpOwotYS51bnNoaWZ0KGQpO3JldHVybiBjLmFwcGx5KHRoaXMs YSl9fWZ1bmN0aW9uIElhKGEsYil7Zm9yKHZhciBjPTNEInsiLGQ9M0Q9CiExLGUsZixnLGgsaSxq PTNEW107KGM9M0RhLmluZGV4T2YoYykpIT0zRD0zRC0xOyl7ZT0zRGEuc2xpY2UoMCxjKTtpZihk KXtmPQo9M0RlLnNwbGl0KCI6Iik7Zz0zRGYuc2hpZnQoKS5zcGxpdCgiLiIpO2k9M0RnLmxlbmd0 aDtlPTNEYjtmb3IoaD0zRDA7aDxpO2g9CisrKWU9M0RlW2dbaF1dO2lmKGYubGVuZ3RoKWY9M0Rm LmpvaW4oIjoiKSxnPTNEL1wuKFswLTldKS8saD0zREUubGFuZyxpPTNEdj0Kb2lkIDAsL2YkLy50 ZXN0KGYpPyhpPTNEKGk9M0RmLm1hdGNoKGcpKT9pWzFdOi0xLGUhPTNEPTNEbnVsbCYmKGU9M0RH YShlLGksPQpoLmRlY2ltYWxQb2ludCxmLmluZGV4T2YoIiwiKT4tMT9oLnRob3VzYW5kc1NlcDoi IikpKTplPTNEY2IoZixlKX1qLnB1c2goZSk9CjthPTNEYS5zbGljZShjKzEpO2M9M0QoZD0zRCFk KT8ifSI6InsifWoucHVzaChhKTtyZXR1cm4gai5qb2luKCIiKX1mdW5jdGlvbj0KIG1iKGEpe3Jl dHVybiBVLnBvdygxMCxUKFUubG9nKGEpLwotVS5MTjEwKSl9ZnVuY3Rpb24gbmIoYSxiLGMsZCl7 dmFyIGUsYz0zRG0oYywxKTtlPTNEYS9jO2J8fChiPTNEWzEsMiwyLjUsNSw9CjEwXSxkJiZkLmFs bG93RGVjaW1hbHM9M0Q9M0Q9M0QhMSYmKGM9M0Q9M0Q9M0QxP2I9M0RbMSwyLDUsMTBdOmM8PTNE MC4xJiYoYj0KPTNEWzEvY10pKSk7Zm9yKGQ9M0QwO2Q8Yi5sZW5ndGg7ZCsrKWlmKGE9M0RiW2Rd LGU8PTNEKGJbZF0rKGJbZCsxXXx8YltkXSkpPQovMilicmVhazthKj0zRGM7cmV0dXJuIGF9ZnVu Y3Rpb24gQmIoKXt0aGlzLnN5bWJvbD0zRHRoaXMuY29sb3I9M0QwfWZ1bmN0aW89Cm4gb2IoYSxi KXt2YXIgYz0zRGEubGVuZ3RoLGQsZTtmb3IoZT0zRDA7ZTxjO2UrKylhW2VdLnNzX2k9M0RlO2Eu c29ydChmdW5jdD0KaW9uKGEsYyl7ZD0zRGIoYSxjKTtyZXR1cm4gZD0zRD0zRD0zRDA/YS5zc19p LWMuc3NfaTpkfSk7Zm9yKGU9M0QwO2U8YztlKyspPQpkZWxldGUgYVtlXS5zc19pfWZ1bmN0aW9u IE5hKGEpe2Zvcih2YXIgYj0zRGEubGVuZ3RoLGM9M0RhWzBdO2ItLTspYVtiXTxjJiY9CihjPTNE YVtiXSk7cmV0dXJuIGN9ZnVuY3Rpb24gQmEoYSl7Zm9yKHZhciBiPTNECi1hLmxlbmd0aCxjPTNE YVswXTtiLS07KWFbYl0+YyYmKGM9M0RhW2JdKTtyZXR1cm4gY31mdW5jdGlvbiBPYShhLGIpe2Zv cih2YT0KciBjIGluIGEpYVtjXSYmYVtjXSE9M0Q9M0RiJiZhW2NdLmRlc3Ryb3kmJmFbY10uZGVz dHJveSgpLGRlbGV0ZSBhW2NdfWZ1bmN0PQppb24gUGEoYSl7ZGJ8fChkYj0zRFkoSmEpKTthJiZk Yi5hcHBlbmRDaGlsZChhKTtkYi5pbm5lckhUTUw9M0QiIn1mdW5jdGlvbiA9CnJhKGEsYil7dmFy IGM9M0QiSGlnaGNoYXJ0cyBlcnJvciAjIithKyI6IHd3dy5oaWdoY2hhcnRzLmNvbS9lcnJvcnMv IithO2lmKD0KYil0aHJvdyBjO2Vsc2UgSS5jb25zb2xlJiZjb25zb2xlLmxvZyhjKX1mdW5jdGlv biBkYShhKXtyZXR1cm4gcGFyc2VGbG9hdChhPQoudG9QcmVjaXNpb24oMTQpKX1mdW5jdGlvbiBR YShhLGIpe3ZhPTNEbShhLGIuYW5pbWF0aW9uKX1mdW5jdGlvbiBDYigpe3ZhciA9CmE9M0RFLmds b2JhbC51c2VVVEMsYj0zRGE/ImdldFVUQyI6ImdldCIsYz0zRGE/InNldFVUQyI6InNldCI7UmE9 M0QoYSYmRS5nbD0Kb2JhbC50aW1lem9uZU9mZnNldHx8Ci0wKSo2RTQ7ZWI9M0RhP0RhdGUuVVRD OmZ1bmN0aW9uKGEsYixjLGcsaCxpKXtyZXR1cm4obmV3IERhdGUoYSxiLG0oYywxKSxtKD0KZyww KSxtKGgsMCksbShpLDApKSkuZ2V0VGltZSgpfTtwYj0zRGIrIk1pbnV0ZXMiO3FiPTNEYisiSG91 cnMiO3JiPTNEYisiRGF5PQoiO1hhPTNEYisiRGF0ZSI7ZmI9M0RiKyJNb250aCI7Z2I9M0RiKyJG dWxsWWVhciI7RGI9M0RjKyJNaW51dGVzIjtFYj0zRGMrIkg9Cm91cnMiO3NiPTNEYysiRGF0ZSI7 RmI9M0RjKyJNb250aCI7R2I9M0RjKyJGdWxsWWVhciJ9ZnVuY3Rpb24gUCgpe31mdW5jdGlvbj0K IFNhKGEsYixjLGQpe3RoaXMuYXhpcz0zRGE7dGhpcy5wb3M9M0RiO3RoaXMudHlwZT0zRGN8fCIi O3RoaXMuaXNOZXc9M0QhMDshPQpjJiYhZCYmdGhpcy5hZGRMYWJlbCgpfWZ1bmN0aW9uIGxhKCl7 dGhpcy5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGk9Cm9uIFlhKCl7dGhpcy5pbml0 LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIYihhLGIsYyxkLGUpe3ZhciBmPTNEYS5j aD0KYXJ0LmludmVydGVkOwotdGhpcy5heGlzPTNEYTt0aGlzLmlzTmVnYXRpdmU9M0RjO3RoaXMu b3B0aW9ucz0zRGI7dGhpcy54PTNEZDt0aGlzLnRvdGFsPQo9M0RudWxsO3RoaXMucG9pbnRzPTNE e307dGhpcy5zdGFjaz0zRGU7dGhpcy5hbGlnbk9wdGlvbnM9M0R7YWxpZ246Yi5hbGlnbnw9Cnwo Zj9jPyJsZWZ0IjoicmlnaHQiOiJjZW50ZXIiKSx2ZXJ0aWNhbEFsaWduOmIudmVydGljYWxBbGln bnx8KGY/Im1pZGRsZSI6Yz0KPyJib3R0b20iOiJ0b3AiKSx5Om0oYi55LGY/NDpjPzE0Oi02KSx4 Om0oYi54LGY/Yz8tNjo2OjApfTt0aGlzLnRleHRBbGlnbj0KPTNEYi50ZXh0QWxpZ258fChmP2M/ InJpZ2h0IjoibGVmdCI6ImNlbnRlciIpfXZhciB0LHk9M0Rkb2N1bWVudCxJPTNEd2luZG93PQos VT0zRE1hdGgsdT0zRFUucm91bmQsVD0zRFUuZmxvb3IsS2E9M0RVLmNlaWwsdj0zRFUubWF4LEM9 M0RVLm1pbixNPTNEVS5hYnM9CixaPTNEVS5jb3MsZWE9M0RVLnNpbixtYT0zRFUuUEksQ2E9M0Rt YSoyLzM2MCx3YT0zRG5hdmlnYXRvci51c2VyQWdlbnQsSWI9Cj0zREkub3BlcmEsQWE9M0QvbXNp ZS9pLnRlc3Qod2EpJiYKLSFJYixoYj0zRHkuZG9jdW1lbnRNb2RlPTNEPTNEPTNEOCxpYj0zRC9B cHBsZVdlYktpdC8udGVzdCh3YSksVGE9M0QvRmlyZWZvPQp4Ly50ZXN0KHdhKSxKYj0zRC8oTW9i aWxlfEFuZHJvaWR8V2luZG93cyBQaG9uZSkvLnRlc3Qod2EpLHhhPTNEImh0dHA6Ly93d3c9Ci53 My5vcmcvMjAwMC9zdmciLGFhPTNEISF5LmNyZWF0ZUVsZW1lbnROUyYmISF5LmNyZWF0ZUVsZW1l bnROUyh4YSwic3ZnIikuYz0KcmVhdGVTVkdSZWN0LE5iPTNEVGEmJnBhcnNlSW50KHdhLnNwbGl0 KCJGaXJlZm94LyIpWzFdLDEwKTw0LGZhPTNEIWFhJiYhQWEmPQomISF5LmNyZWF0ZUVsZW1lbnQo ImNhbnZhcyIpLmdldENvbnRleHQsWmEsJGEsS2I9M0R7fSx0Yj0zRDAsZGIsRSxjYix2YSx1Yiw9 CkEsc2E9M0RmdW5jdGlvbigpe30sVj0zRFtdLGFiPTNEMCxKYT0zRCJkaXYiLFE9M0Qibm9uZSIs T2I9M0QvXlswLTldKyQvLFBiPQo9M0Qic3Ryb2tlLXdpZHRoIixlYixSYSxwYixxYixyYixYYSxm YixnYixEYixFYixzYixGYixHYixGPTNEe30sUj0zREkuSGlnaGM9CmhhcnRzPTNESS5IaWdoY2hh cnRzP3JhKDE2LAotITApOnt9O2NiPTNEZnVuY3Rpb24oYSxiLGMpe2lmKCFyKGIpfHxpc05hTihi KSlyZXR1cm4iSW52YWxpZCBkYXRlIjt2YXIgYT0KPTNEbShhLCIlWS0lbS0lZCAlSDolTTolUyIp LGQ9M0RuZXcgRGF0ZShiLVJhKSxlLGY9M0RkW3FiXSgpLGc9M0RkW3JiXSgpLGg9Cj0zRGRbWGFd KCksaT0zRGRbZmJdKCksaj0zRGRbZ2JdKCksaz0zREUubGFuZyxsPTNEay53ZWVrZGF5cyxkPTNE cSh7YTpsW2ddLj0Kc3Vic3RyKDAsMyksQTpsW2ddLGQ6SGEoaCksZTpoLGI6ay5zaG9ydE1vbnRo c1tpXSxCOmsubW9udGhzW2ldLG06SGEoaSsxKSx5PQo6ai50b1N0cmluZygpLnN1YnN0cigyLDIp LFk6aixIOkhhKGYpLEk6SGEoZiUxMnx8MTIpLGw6ZiUxMnx8MTIsTTpIYShkW3BiXSg9CikpLHA6 ZjwxMj8iQU0iOiJQTSIsUDpmPDEyPyJhbSI6InBtIixTOkhhKGQuZ2V0U2Vjb25kcygpKSxMOkhh KHUoYiUxRTMpLDMpfT0KLFIuZGF0ZUZvcm1hdHMpO2ZvcihlIGluIGQpZm9yKDthLmluZGV4T2Yo IiUiK2UpIT0zRD0zRC0xOylhPTNEYS5yZXBsYWNlKCIlPQoiK2UsdHlwZW9mIGRbZV09M0Q9M0Q9 M0QKLSJmdW5jdGlvbiI/ZFtlXShiKTpkW2VdKTtyZXR1cm4gYz9hLnN1YnN0cigwLDEpLnRvVXBw ZXJDYXNlKCkrYS5zdWJzdHIoMSk6PQphfTtCYi5wcm90b3R5cGU9M0R7d3JhcENvbG9yOmZ1bmN0 aW9uKGEpe2lmKHRoaXMuY29sb3I+PTNEYSl0aGlzLmNvbG9yPTNEMH09Cix3cmFwU3ltYm9sOmZ1 bmN0aW9uKGEpe2lmKHRoaXMuc3ltYm9sPj0zRGEpdGhpcy5zeW1ib2w9M0QwfX07QT0zRGZ1bmN0 aW9uKD0KKXtmb3IodmFyIGE9M0QwLGI9M0Rhcmd1bWVudHMsYz0zRGIubGVuZ3RoLGQ9M0R7fTth PGM7YSsrKWRbYlthKytdXT0zRGJbYV07PQpyZXR1cm4gZH0oIm1pbGxpc2Vjb25kIiwxLCJzZWNv bmQiLDFFMywibWludXRlIiw2RTQsImhvdXIiLDM2RTUsImRheSIsODY0RTU9Ciwid2VlayIsNjA0 OEU1LCJtb250aCIsMjY3ODRFNSwieWVhciIsMzE1NTY5NTJFMyk7dWI9M0R7aW5pdDpmdW5jdGlv bihhLGIsYz0KKXt2YXIgYj0zRGJ8fCIiLGQ9M0RhLnNoaWZ0LGU9M0RiLmluZGV4T2YoIkMiKT4t MSxmPTNEZT83OjMsZyxiPTNEYi5zcGxpdCgiPQogIiksYz0zRFtdLmNvbmNhdChjKSwKLWgsaSxq PTNEZnVuY3Rpb24oYSl7Zm9yKGc9M0RhLmxlbmd0aDtnLS07KWFbZ109M0Q9M0Q9M0QiTSImJmEu c3BsaWNlKGcrMSwwPQosYVtnKzFdLGFbZysyXSxhW2crMV0sYVtnKzJdKX07ZSYmKGooYiksaihj KSk7YS5pc0FyZWEmJihoPTNEYi5zcGxpY2UoYi5sZW49Cmd0aC02LDYpLGk9M0RjLnNwbGljZShj Lmxlbmd0aC02LDYpKTtpZihkPD0zRGMubGVuZ3RoL2YmJmIubGVuZ3RoPTNEPTNEPTNEYz0KLmxl bmd0aClmb3IoO2QtLTspYz0zRFtdLmNvbmNhdChjKS5zcGxpY2UoMCxmKS5jb25jYXQoYyk7YS5z aGlmdD0zRDA7aWYoYi5sPQplbmd0aClmb3IoYT0zRGMubGVuZ3RoO2IubGVuZ3RoPGE7KWQ9M0Rb XS5jb25jYXQoYikuc3BsaWNlKGIubGVuZ3RoLWYsZiksZSY9CiYoZFtmLTZdPTNEZFtmLTJdLGRb Zi01XT0zRGRbZi0xXSksYj0zRGIuY29uY2F0KGQpO2gmJihiPTNEYi5jb25jYXQoaCksYz0zRD0K Yy5jb25jYXQoaSkpO3JldHVybltiLGNdfSxzdGVwOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPTNE W10sZj0zRGEubGVuZ3RoO2lmPQooYz0zRD0zRD0zRDEpZT0zRGQ7ZWxzZSBpZihmPTNEPTNEPTNE Ci1iLmxlbmd0aCYmYzwxKWZvcig7Zi0tOylkPTNEcGFyc2VGbG9hdChhW2ZdKSxlW2ZdPTNEaXNO YU4oZCk/YVtmXTpjKnBhcnNlRj0KbG9hdChiW2ZdLWQpK2Q7ZWxzZSBlPTNEYjtyZXR1cm4gZX19 OyhmdW5jdGlvbihhKXtJLkhpZ2hjaGFydHNBZGFwdGVyPTNESS5IPQppZ2hjaGFydHNBZGFwdGVy fHxhJiZ7aW5pdDpmdW5jdGlvbihiKXt2YXIgYz0zRGEuZngsZD0zRGMuc3RlcCxlLGY9M0RhLlR3 ZWU9Cm4sZz0zRGYmJmYucHJvcEhvb2tzO2U9M0RhLmNzc0hvb2tzLm9wYWNpdHk7YS5leHRlbmQo YS5lYXNpbmcse2Vhc2VPdXRRdWFkOj0KZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4tZCooYi89 M0RlKSooYi0yKStjfX0pO2EuZWFjaChbImN1ciIsIl9kZWZhdWx0IiwiPQp3aWR0aCIsImhlaWdo dCIsIm9wYWNpdHkiXSxmdW5jdGlvbihhLGIpe3ZhciBlPTNEZCxrO2I9M0Q9M0Q9M0QiY3VyIj9l PTNEYy49CnByb3RvdHlwZTpiPTNEPTNEPTNEIl9kZWZhdWx0IiYmZiYmKGU9M0RnW2JdLGI9M0Qi c2V0Iik7KGs9M0RlW2JdKSYmKGVbYl09Cj0zRGZ1bmN0aW9uKGMpe3ZhciBkLGM9M0QKLWE/Yzp0 aGlzO2lmKGMucHJvcCE9M0Q9M0QiYWxpZ24iKXJldHVybiBkPTNEYy5lbGVtLGQuYXR0cj9kLmF0 dHIoYy5wcm9wLGI9Cj0zRD0zRD0zRCJjdXIiP3Q6Yy5ub3cpOmsuYXBwbHkodGhpcyxhcmd1bWVu dHMpfSl9KTtNYShlLCJnZXQiLGZ1bmN0aW9uKGEsYj0KLGMpe3JldHVybiBiLmF0dHI/Yi5vcGFj aXR5fHwwOmEuY2FsbCh0aGlzLGIsYyl9KTtlPTNEZnVuY3Rpb24oYSl7dmFyIGM9M0RhPQouZWxl bSxkO2lmKCFhLnN0YXJ0ZWQpZD0zRGIuaW5pdChjLGMuZCxjLnRvRCksYS5zdGFydD0zRGRbMF0s YS5lbmQ9M0RkWzFdLGE9Ci5zdGFydGVkPTNEITA7Yy5hdHRyKCJkIixiLnN0ZXAoYS5zdGFydCxh LmVuZCxhLnBvcyxjLnRvRCkpfTtmP2cuZD0zRHtzZXQ6ZT0KfTpkLmQ9M0RlO3RoaXMuZWFjaD0z REFycmF5LnByb3RvdHlwZS5mb3JFYWNoP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByPQpv dG90eXBlLmZvckVhY2guY2FsbChhLGIpfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0zRDAsZD0z RGEubGVuZ3RoO2M8ZDtjKys9CilpZihiLmNhbGwoYVtjXSwKLWFbY10sYyxhKT0zRD0zRD0zRCEx KXJldHVybiBjfTthLmZuLmhpZ2hjaGFydHM9M0RmdW5jdGlvbigpe3ZhciBhPTNEIkNoYXJ0PQoi LGI9M0Rhcmd1bWVudHMsYyxkO2lmKHRoaXNbMF0pe0ZhKGJbMF0pJiYoYT0zRGJbMF0sYj0zREFy cmF5LnByb3RvdHlwZS5zbGk9CmNlLmNhbGwoYiwxKSk7Yz0zRGJbMF07aWYoYyE9M0Q9M0R0KWMu Y2hhcnQ9M0RjLmNoYXJ0fHx7fSxjLmNoYXJ0LnJlbmRlclRvPQo9M0R0aGlzWzBdLG5ldyBSW2Fd KGMsYlsxXSksZD0zRHRoaXM7Yz0zRD0zRD0zRHQmJihkPTNEVltIKHRoaXNbMF0sImRhdGEtaGk9 CmdoY2hhcnRzLWNoYXJ0IildKX1yZXR1cm4gZH19LGdldFNjcmlwdDphLmdldFNjcmlwdCxpbkFy cmF5OmEuaW5BcnJheSxhZGFwdD0KZXJSdW46ZnVuY3Rpb24oYixjKXtyZXR1cm4gYShiKVtjXSgp fSxncmVwOmEuZ3JlcCxtYXA6ZnVuY3Rpb24oYSxjKXtmb3IodmFyPQogZD0zRFtdLGU9M0QwLGY9 M0RhLmxlbmd0aDtlPGY7ZSsrKWRbZV09M0RjLmNhbGwoYVtlXSxhW2VdLGUsYSk7cmV0dXJuIGR9 LG89CmZmc2V0OmZ1bmN0aW9uKGIpe3JldHVybiBhKGIpLm9mZnNldCgpfSwKLWFkZEV2ZW50OmZ1 bmN0aW9uKGIsYyxkKXthKGIpLmJpbmQoYyxkKX0scmVtb3ZlRXZlbnQ6ZnVuY3Rpb24oYixjLGQp e3ZhciBlPQo9M0R5LnJlbW92ZUV2ZW50TGlzdGVuZXI/InJlbW92ZUV2ZW50TGlzdGVuZXIiOiJk ZXRhY2hFdmVudCI7eVtlXSYmYiYmIWJbZV09CiYmKGJbZV09M0RmdW5jdGlvbigpe30pO2EoYiku dW5iaW5kKGMsZCl9LGZpcmVFdmVudDpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZj0KPTNEYS5FdmVu dChjKSxnPTNEImRldGFjaGVkIitjLGg7IUFhJiZkJiYoZGVsZXRlIGQubGF5ZXJYLGRlbGV0ZSBk LmxheWVyWSxkPQplbGV0ZSBkLnJldHVyblZhbHVlKTtxKGYsZCk7YltjXSYmKGJbZ109M0RiW2Nd LGJbY109M0RudWxsKTthLmVhY2goWyJwcmV2ZW49CnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9u Il0sZnVuY3Rpb24oYSxiKXt2YXIgYz0zRGZbYl07ZltiXT0zRGZ1bmN0aW9uKCl7dD0Kcnl7Yy5j YWxsKGYpfWNhdGNoKGEpe2I9M0Q9M0Q9M0QicHJldmVudERlZmF1bHQiJiYoaD0zRCEwKX19fSk7 YShiKS50cmlnZ2VyPQooZik7Ci1iW2ddJiYoYltjXT0zRGJbZ10sYltnXT0zRG51bGwpO2UmJiFm LmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhaCYmZShmKX0sd2FzaD0KTW91c2VFdmVudDpmdW5jdGlv bihhKXt2YXIgYz0zRGEub3JpZ2luYWxFdmVudHx8YTtpZihjLnBhZ2VYPTNEPTNEPTNEdCljLnBh PQpnZVg9M0RhLnBhZ2VYLGMucGFnZVk9M0RhLnBhZ2VZO3JldHVybiBjfSxhbmltYXRlOmZ1bmN0 aW9uKGIsYyxkKXt2YXIgZT0zRGE9CihiKTtpZighYi5zdHlsZSliLnN0eWxlPTNEe307aWYoYy5k KWIudG9EPTNEYy5kLGMuZD0zRDE7ZS5zdG9wKCk7Yy5vcGFjaXR5IT0KPTNEPTNEdCYmYi5hdHRy JiYoYy5vcGFjaXR5Kz0zRCJweCIpO2UuYW5pbWF0ZShjLGQpfSxzdG9wOmZ1bmN0aW9uKGIpe2Eo YikuPQpzdG9wKCl9fX0pKEkualF1ZXJ5KTt2YXIgUz0zREkuSGlnaGNoYXJ0c0FkYXB0ZXIsTj0z RFN8fHt9O1MmJlMuaW5pdC5jYWxsKFM9Cix1Yik7dmFyIGpiPTNETi5hZGFwdGVyUnVuLFFiPTNE Ti5nZXRTY3JpcHQsRGE9M0ROLmluQXJyYXkscD0zRE4uZWFjaCx2Yj0zRD0KTi5ncmVwLFJiPTNE Ti5vZmZzZXQsVWE9M0QKLU4ubWFwLEs9M0ROLmFkZEV2ZW50LFc9M0ROLnJlbW92ZUV2ZW50LEQ9 M0ROLmZpcmVFdmVudCxTYj0zRE4ud2FzaE1vdXNlRXZlPQpudCxrYj0zRE4uYW5pbWF0ZSxiYj0z RE4uc3RvcCxOPTNEe2VuYWJsZWQ6ITAseDowLHk6MTUsc3R5bGU6e2NvbG9yOiIjNjA2MDY9CjAi LGN1cnNvcjoiZGVmYXVsdCIsZm9udFNpemU6IjExcHgifX07RT0zRHtjb2xvcnM6IiM3Y2I1ZWMs IzQzNDM0OCwjOTBlZDdkLD0KI2Y3YTM1YywjODA4NWU5LCNmMTVjODAsI2U0ZDM1NCwjODA4NWU4 LCM4ZDQ2NTMsIzkxZThlMSIuc3BsaXQoIiwiKSxzeW1ib2xzPQo6WyJjaXJjbGUiLCJkaWFtb25k Iiwic3F1YXJlIiwidHJpYW5nbGUiLCJ0cmlhbmdsZS1kb3duIl0sbGFuZzp7bG9hZGluZzoiTG89 CmFkaW5nLi4uIixtb250aHM6IkphbnVhcnksRmVicnVhcnksTWFyY2gsQXByaWwsTWF5LEp1bmUs SnVseSxBdWd1c3QsU2VwdGVtYj0KZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlciIuc3BsaXQo IiwiKSxzaG9ydE1vbnRoczoiSmFuLEZlYixNYXIsQXByLE1heSxKPQp1bixKdWwsQXVnLFNlcCxP Y3QsTm92LERlYyIuc3BsaXQoIiwiKSwKLXdlZWtkYXlzOiJTdW5kYXksTW9uZGF5LFR1ZXNkYXks V2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheSIuc3BsaXQoPQoiLCIpLGRlY2ltYWxQ b2ludDoiLiIsbnVtZXJpY1N5bWJvbHM6ImssTSxHLFQsUCxFIi5zcGxpdCgiLCIpLHJlc2V0Wm9v bToiUmU9CnNldCB6b29tIixyZXNldFpvb21UaXRsZToiUmVzZXQgem9vbSBsZXZlbCAxOjEiLHRo b3VzYW5kc1NlcDoiLCJ9LGdsb2JhbDp7dT0Kc2VVVEM6ITAsY2FudmFzVG9vbHNVUkw6Imh0dHA6 Ly9jb2RlLmhpZ2hjaGFydHMuY29tLzQuMC4xL21vZHVsZXMvY2FudmFzLXRvPQpvbHMuanMiLFZN TFJhZGlhbEdyYWRpZW50VVJMOiJodHRwOi8vY29kZS5oaWdoY2hhcnRzLmNvbS80LjAuMS9nZngv dm1sLXJhZGk9CmFsLWdyYWRpZW50LnBuZyJ9LGNoYXJ0Ontib3JkZXJDb2xvcjoiIzQ1NzJBNyIs Ym9yZGVyUmFkaXVzOjAsZGVmYXVsdFNlcmllcz0KVHlwZToibGluZSIsaWdub3JlSGlkZGVuU2Vy aWVzOiEwLHNwYWNpbmc6WzEwLDEwLDE1LAotMTBdLGJhY2tncm91bmRDb2xvcjoiI0ZGRkZGRiIs cGxvdEJvcmRlckNvbG9yOiIjQzBDMEMwIixyZXNldFpvb21CdXR0b246e3Q9CmhlbWU6e3pJbmRl eDoyMH0scG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAseToxMH19fSx0aXRsZTp7dGV4dDoi Q2hhcnQgdD0KaXRsZSIsYWxpZ246ImNlbnRlciIsbWFyZ2luOjE1LHN0eWxlOntjb2xvcjoiIzMz MzMzMyIsZm9udFNpemU6IjE4cHgifX0sc3ViPQp0aXRsZTp7dGV4dDoiIixhbGlnbjoiY2VudGVy IixzdHlsZTp7Y29sb3I6IiM1NTU1NTUifX0scGxvdE9wdGlvbnM6e2xpbmU6e2E9Cmxsb3dQb2lu dFNlbGVjdDohMSxzaG93Q2hlY2tib3g6ITEsYW5pbWF0aW9uOntkdXJhdGlvbjoxRTN9LGV2ZW50 czp7fSxsaW5lVz0KaWR0aDoyLG1hcmtlcjp7bGluZVdpZHRoOjAscmFkaXVzOjQsbGluZUNvbG9y OiIjRkZGRkZGIixzdGF0ZXM6e2hvdmVyOntlbmFiPQpsZWQ6ITB9LHNlbGVjdDp7ZmlsbENvbG9y OiIjRkZGRkZGIixsaW5lQ29sb3I6IiMwMDAwMDAiLAotbGluZVdpZHRoOjJ9fX0scG9pbnQ6e2V2 ZW50czp7fX0sZGF0YUxhYmVsczp3KE4se2FsaWduOiJjZW50ZXIiLGVuYWJsZWQ6ITE9Cixmb3Jt YXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55PTNEPTNEPTNEbnVsbD8iIjpHYSh0aGlzLnks LTEpfSx2ZXJ0aWNhbD0KQWxpZ246ImJvdHRvbSIseTowfSksY3JvcFRocmVzaG9sZDozMDAscG9p bnRSYW5nZTowLHN0YXRlczp7aG92ZXI6e21hcmtlcjp7PQp9LGhhbG86e3NpemU6MTAsb3BhY2l0 eTowLjI1fX0sc2VsZWN0OnttYXJrZXI6e319fSxzdGlja3lUcmFja2luZzohMCx0dXJib1Q9Cmhy ZXNob2xkOjFFM319LGxhYmVsczp7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsY29sb3I6IiMz RTU3NkYifX0sbGVnZW5kOj0Ke2VuYWJsZWQ6ITAsYWxpZ246ImNlbnRlciIsbGF5b3V0OiJob3Jp em9udGFsIixsYWJlbEZvcm1hdHRlcjpmdW5jdGlvbigpe3JlPQp0dXJuIHRoaXMubmFtZX0sYm9y ZGVyQ29sb3I6IiM5MDkwOTAiLGJvcmRlclJhZGl1czowLG5hdmlnYXRpb246e2FjdGl2ZUNvbG89 CnI6IiMyNzRiNmQiLAotaW5hY3RpdmVDb2xvcjoiI0NDQyJ9LHNoYWRvdzohMSxpdGVtU3R5bGU6 e2NvbG9yOiIjMzMzMzMzIixmb250U2l6ZToiMTJweCI9Cixmb250V2VpZ2h0OiJib2xkIn0saXRl bUhvdmVyU3R5bGU6e2NvbG9yOiIjMDAwIn0saXRlbUhpZGRlblN0eWxlOntjb2xvcjoiIz0KQ0ND In0saXRlbUNoZWNrYm94U3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6IjEzcHgiLGhl aWdodDoiMTNweCJ9LHN5PQptYm9sUGFkZGluZzo1LHZlcnRpY2FsQWxpZ246ImJvdHRvbSIseDow LHk6MCx0aXRsZTp7c3R5bGU6e2ZvbnRXZWlnaHQ6ImJvbGQ9CiJ9fX0sbG9hZGluZzp7bGFiZWxT dHlsZTp7Zm9udFdlaWdodDoiYm9sZCIscG9zaXRpb246InJlbGF0aXZlIix0b3A6IjFlbSJ9LD0K c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYmFja2dyb3VuZENvbG9yOiJ3aGl0ZSIsb3BhY2l0 eTowLjUsdGV4dEFsaWduOiJjPQplbnRlciJ9fSx0b29sdGlwOntlbmFibGVkOiEwLGFuaW1hdGlv bjphYSxiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjQ5LCAyNDksIDI9CjQ5LCAuODUpIiwKLWJvcmRl cldpZHRoOjEsYm9yZGVyUmFkaXVzOjMsZGF0ZVRpbWVMYWJlbEZvcm1hdHM6e21pbGxpc2Vjb25k OiIlQSwgJWIgJWUsPQogJUg6JU06JVMuJUwiLHNlY29uZDoiJUEsICViICVlLCAlSDolTTolUyIs bWludXRlOiIlQSwgJWIgJWUsICVIOiVNIixob3VyOiI9CiVBLCAlYiAlZSwgJUg6JU0iLGRheToi JUEsICViICVlLCAlWSIsd2VlazoiV2VlayBmcm9tICVBLCAlYiAlZSwgJVkiLG1vbnRoOj0KIiVC ICVZIix5ZWFyOiIlWSJ9LGhlYWRlckZvcm1hdDonPHNwYW4gc3R5bGU9M0QiZm9udC1zaXplOiAx MHB4Ij57cG9pbnQua2V5PQp9PC9zcGFuPjxici8+Jyxwb2ludEZvcm1hdDonPHNwYW4gc3R5bGU9 M0QiY29sb3I6e3Nlcmllcy5jb2xvcn0iPj1DMz1BMj1FMj0KPTgwPTk0PUMyPThGPC9zcGFuPiB7 c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX08L2I+PGJyLz4nLHNoYWRvdzohMCxzbmFwOkpiPQo/ MjU6MTAsc3R5bGU6e2NvbG9yOiIjMzMzMzMzIixjdXJzb3I6ImRlZmF1bHQiLGZvbnRTaXplOiIx MnB4IixwYWRkaW5nOiI4cHg9CiIsCi13aGl0ZVNwYWNlOiJub3dyYXAifX0sY3JlZGl0czp7ZW5h YmxlZDohMCx0ZXh0OiJIaWdoY2hhcnRzLmNvbSIsaHJlZjoiaHR0cD0KOi8vd3d3LmhpZ2hjaGFy dHMuY29tIixwb3NpdGlvbjp7YWxpZ246InJpZ2h0Iix4Oi0xMCx2ZXJ0aWNhbEFsaWduOiJib3R0 b20iPQoseTotNX0sc3R5bGU6e2N1cnNvcjoicG9pbnRlciIsY29sb3I6IiM5MDkwOTAiLGZvbnRT aXplOiI5cHgifX19O3ZhciBiYT0zREU9Ci5wbG90T3B0aW9ucyxTPTNEYmEubGluZTtDYigpO3Zh ciBUYj0zRC9yZ2JhXChccyooWzAtOV17MSwzfSlccyosXHMqKFswLTldez0KMSwzfSlccyosXHMq KFswLTldezEsM30pXHMqLFxzKihbMC05XT8oPzpcLlswLTldKyk/KVxzKlwpLyxVYj0zRC8jKFth LWZBLUYwPQotOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkvLFZiPTNEL3Jn YlwoXHMqKFswLTldezEsM30pXHMqLFxzKig9ClswLTldezEsM30pXHMqLFxzKihbMC05XXsxLDN9 KVxzKlwpLyx5YT0zRGZ1bmN0aW9uKGEpe3ZhciBiPTNEW10sYywKLWQ7KGZ1bmN0aW9uKGEpe2Em JmEuc3RvcHM/ZD0zRFVhKGEuc3RvcHMsZnVuY3Rpb24oYSl7cmV0dXJuIHlhKGFbMV0pfSk6KGM9 Cj0zRFRiLmV4ZWMoYSkpP2I9M0RbeihjWzFdKSx6KGNbMl0pLHooY1szXSkscGFyc2VGbG9hdChj WzRdLDEwKV06KGM9M0RVYi5leD0KZWMoYSkpP2I9M0RbeihjWzFdLDE2KSx6KGNbMl0sMTYpLHoo Y1szXSwxNiksMV06KGM9M0RWYi5leGVjKGEpKSYmKGI9M0RbeihjPQpbMV0pLHooY1syXSkseihj WzNdKSwxXSl9KShhKTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGMpe3ZhciBmO2Q/KGY9M0R3KGEpLGYu c3Q9Cm9wcz0zRFtdLmNvbmNhdChmLnN0b3BzKSxwKGQsZnVuY3Rpb24oYSxiKXtmLnN0b3BzW2Jd PTNEW2Yuc3RvcHNbYl1bMF0sYS5nZT0KdChjKV19KSk6Zj0zRGImJiFpc05hTihiWzBdKT9jPTNE PTNEPTNEInJnYiI/InJnYigiK2JbMF0rIiwiK2JbMV0rIiwiK2JbMl0rPQoiKSI6Yz0zRD0zRD0z RCJhIj9iWzNdOiJyZ2JhKCIrYi5qb2luKCIsIikrIikiOmE7cmV0dXJuIGZ9LGJyaWdodGVuOmZ1 bmN0aW89Cm4oYSl7aWYoZClwKGQsCi1mdW5jdGlvbihiKXtiLmJyaWdodGVuKGEpfSk7ZWxzZSBp ZihoYShhKSYmYSE9M0Q9M0QwKXt2YXIgYztmb3IoYz0zRDA7YzwzOz0KYysrKWJbY10rPTNEeihh KjI1NSksYltjXTwwJiYoYltjXT0zRDApLGJbY10+MjU1JiYoYltjXT0zRDI1NSl9cmV0dXJuIHRo aXN9PQoscmdiYTpiLHNldE9wYWNpdHk6ZnVuY3Rpb24oYSl7YlszXT0zRGE7cmV0dXJuIHRoaXN9 fX07UC5wcm90b3R5cGU9M0R7aW5pdDo9CmZ1bmN0aW9uKGEsYil7dGhpcy5lbGVtZW50PTNEYj0z RD0zRD0zRCJzcGFuIj9ZKGIpOnkuY3JlYXRlRWxlbWVudE5TKHhhLGIpOz0KdGhpcy5yZW5kZXJl cj0zRGF9LG9wYWNpdHk6MSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjKXtiPTNEbShiLHZhLCEwKTti Yih0aGlzPQopO2lmKGIpe2I9M0R3KGIse30pO2lmKGMpYi5jb21wbGV0ZT0zRGM7a2IodGhpcyxh LGIpfWVsc2UgdGhpcy5hdHRyKGEpLGMmJmM9CigpfSxjb2xvckdyYWRpZW50OmZ1bmN0aW9uKGEs YixjKXt2YXIgZD0zRHRoaXMucmVuZGVyZXIsZSxmLGcsaCxpLGosayxsLG8sbj0KLHM9M0RbXTth LmxpbmVhckdyYWRpZW50PwotZj0zRCJsaW5lYXJHcmFkaWVudCI6YS5yYWRpYWxHcmFkaWVudCYm KGY9M0QicmFkaWFsR3JhZGllbnQiKTtpZihmKXtnPTNEYVs9CmZdO2g9M0RkLmdyYWRpZW50cztq PTNEYS5zdG9wcztvPTNEYy5yYWRpYWxSZWZlcmVuY2U7TGEoZykmJihhW2ZdPTNEZz0zRHt4MT0K OmdbMF0seTE6Z1sxXSx4MjpnWzJdLHkyOmdbM10sZ3JhZGllbnRVbml0czoidXNlclNwYWNlT25V c2UifSk7Zj0zRD0zRD0zRCJyPQphZGlhbEdyYWRpZW50IiYmbyYmIXIoZy5ncmFkaWVudFVuaXRz KSYmKGc9M0R3KGcse2N4Om9bMF0tb1syXS8yK2cuY3gqb1syXSw9CmN5Om9bMV0tb1syXS8yK2cu Y3kqb1syXSxyOmcucipvWzJdLGdyYWRpZW50VW5pdHM6InVzZXJTcGFjZU9uVXNlIn0pKTtmb3Io bj0KIGluIGcpbiE9M0Q9M0QiaWQiJiZzLnB1c2gobixnW25dKTtmb3IobiBpbiBqKXMucHVzaChq W25dKTtzPTNEcy5qb2luKCIsIik7PQpoW3NdP2E9M0RoW3NdLmF0dHIoImlkIik6KGcuaWQ9M0Rh PTNEImhpZ2hjaGFydHMtIit0YisrLGhbc109M0RpPTNEZC5jcmVhdGU9CkVsZW1lbnQoZikuYXR0 cihnKS5hZGQoZC5kZWZzKSwKLWkuc3RvcHM9M0RbXSxwKGosZnVuY3Rpb24oYSl7YVsxXS5pbmRl eE9mKCJyZ2JhIik9M0Q9M0Q9M0QwPyhlPTNEeWEoYVsxXSksPQprPTNEZS5nZXQoInJnYiIpLGw9 M0RlLmdldCgiYSIpKTooaz0zRGFbMV0sbD0zRDEpO2E9M0RkLmNyZWF0ZUVsZW1lbnQoInN0b3A9 CiIpLmF0dHIoe29mZnNldDphWzBdLCJzdG9wLWNvbG9yIjprLCJzdG9wLW9wYWNpdHkiOmx9KS5h ZGQoaSk7aS5zdG9wcy5wdXNoKD0KYSl9KSk7Yy5zZXRBdHRyaWJ1dGUoYiwidXJsKCIrZC51cmwr IiMiK2ErIikiKX19LGF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPQosZT0zRHRoaXMuZWxlbWVu dCxmLGc9M0R0aGlzLGg7dHlwZW9mIGE9M0Q9M0Q9M0Qic3RyaW5nIiYmYiE9M0Q9M0R0JiYoYz0z RGE9CixhPTNEe30sYVtjXT0zRGIpO2lmKHR5cGVvZiBhPTNEPTNEPTNEInN0cmluZyIpZz0zRCh0 aGlzW2ErIkdldHRlciJdfHx0aGlzLj0KX2RlZmF1bHRHZXR0ZXIpLmNhbGwodGhpcyxhLGUpO2Vs c2V7Zm9yKGMgaW4gYSl7ZD0zRGFbY107aD0zRCExO3RoaXMuc3ltYm9sPQpOYW1lJiYvXih4fHl8 d2lkdGh8aGVpZ2h0fHJ8c3RhcnR8ZW5kfGlubmVyUnxhbmNob3JYfGFuY2hvclkpLy50ZXN0KGMp JiYKLShmfHwodGhpcy5zeW1ib2xBdHRyKGEpLGY9M0QhMCksaD0zRCEwKTtpZih0aGlzLnJvdGF0 aW9uJiYoYz0zRD0zRD0zRCJ4Inx8PQpjPTNEPTNEPTNEInkiKSl0aGlzLmRvVHJhbnNmb3JtPTNE ITA7aHx8KHRoaXNbYysiU2V0dGVyIl18fHRoaXMuX2RlZmF1bHRTZXQ9CnRlcikuY2FsbCh0aGlz LGQsYyxlKTt0aGlzLnNoYWRvd3MmJi9eKHdpZHRofGhlaWdodHx2aXNpYmlsaXR5fHh8eXxkfHRy YW5zZj0Kb3JtfGN4fGN5fHIpJC8udGVzdChjKSYmdGhpcy51cGRhdGVTaGFkb3dzKGMsZCl9aWYo dGhpcy5kb1RyYW5zZm9ybSl0aGlzLnVwPQpkYXRlVHJhbnNmb3JtKCksdGhpcy5kb1RyYW5zZm9y bT0zRCExfXJldHVybiBnfSx1cGRhdGVTaGFkb3dzOmZ1bmN0aW9uKGEsYik9Cntmb3IodmFyIGM9 M0R0aGlzLnNoYWRvd3MsZD0zRGMubGVuZ3RoO2QtLTspY1tkXS5zZXRBdHRyaWJ1dGUoYSxhPTNE PTNEPTNEIj0KaGVpZ2h0Ij92KGItKGNbZF0uY3V0SGVpZ2h0fHwwKSwwKTphPTNEPTNEPTNEImQi P3RoaXMuZDpiKX0sYWRkQ2xhc3M6ZnVuY3RpPQpvbihhKXt2YXIgYj0zRHRoaXMuZWxlbWVudCwK LWM9M0RIKGIsImNsYXNzIil8fCIiO2MuaW5kZXhPZihhKT0zRD0zRD0zRC0xJiZIKGIsImNsYXNz IixjKyIgIithKTtyZXR1cm4gPQp0aGlzfSxzeW1ib2xBdHRyOmZ1bmN0aW9uKGEpe3ZhciBiPTNE dGhpcztwKCJ4LHkscixzdGFydCxlbmQsd2lkdGgsaGVpZ2h0LGk9Cm5uZXJSLGFuY2hvclgsYW5j aG9yWSIuc3BsaXQoIiwiKSxmdW5jdGlvbihjKXtiW2NdPTNEbShhW2NdLGJbY10pfSk7Yi5hdHRy KD0Ke2Q6Yi5yZW5kZXJlci5zeW1ib2xzW2Iuc3ltYm9sTmFtZV0oYi54LGIueSxiLndpZHRoLGIu aGVpZ2h0LGIpfSl9LGNsaXA6ZnVuPQpjdGlvbihhKXtyZXR1cm4gdGhpcy5hdHRyKCJjbGlwLXBh dGgiLGE/InVybCgiK3RoaXMucmVuZGVyZXIudXJsKyIjIithLmlkKyI9CikiOlEpfSxjcmlzcDpm dW5jdGlvbihhKXt2YXIgYixjPTNEe30sZCxlPTNEYS5zdHJva2VXaWR0aHx8dGhpcy5zdHJva2VX aWR0aD0KfHx0aGlzLmF0dHImJnRoaXMuYXR0cigic3Ryb2tlLXdpZHRoIil8fDA7ZD0zRHUoZSkl Mi8yO2EueD0zRFQoYS54fHx0aGlzLnh8fAotMCkrZDthLnk9M0RUKGEueXx8dGhpcy55fHwwKStk O2Eud2lkdGg9M0RUKChhLndpZHRofHx0aGlzLndpZHRofHwwKS0yKmQpO2E9Ci5oZWlnaHQ9M0RU KChhLmhlaWdodHx8dGhpcy5oZWlnaHR8fDApLTIqZCk7YS5zdHJva2VXaWR0aD0zRGU7Zm9yKGIg aW4gYSl0aD0KaXNbYl0hPTNEPTNEYVtiXSYmKHRoaXNbYl09M0RjW2JdPTNEYVtiXSk7cmV0dXJu IGN9LGNzczpmdW5jdGlvbihhKXt2YXIgYj0KPTNEdGhpcy5zdHlsZXMsYz0zRHt9LGQ9M0R0aGlz LmVsZW1lbnQsZSxmLGc9M0QiIjtlPTNEIWI7aWYoYSYmYS5jb2xvcilhLmZpPQpsbD0zRGEuY29s b3I7aWYoYilmb3IoZiBpbiBhKWFbZl0hPTNEPTNEYltmXSYmKGNbZl09M0RhW2ZdLGU9M0QhMCk7 aWYoZSl7ZT0KPTNEdGhpcy50ZXh0V2lkdGg9M0RhJiZhLndpZHRoJiZkLm5vZGVOYW1lLnRvTG93 ZXJDYXNlKCk9M0Q9M0Q9M0QidGV4dCImJnooPQphLndpZHRoKTtiJiYoYT0zRHEoYixjKSk7dGhp cy5zdHlsZXM9M0RhO2UmJihmYXx8IWFhJiZ0aGlzLnJlbmRlcmVyLmZvckV4cG89CnJ0KSYmZGVs ZXRlIGEud2lkdGg7aWYoQWEmJiFhYSlHKHRoaXMuZWxlbWVudCwKLWEpO2Vsc2V7Yj0zRGZ1bmN0 aW9uKGEsYil7cmV0dXJuIi0iK2IudG9Mb3dlckNhc2UoKX07Zm9yKGYgaW4gYSlnKz0zRGYucmVw PQpsYWNlKC8oW0EtWl0pL2csYikrIjoiK2FbZl0rIjsiO0goZCwic3R5bGUiLGcpfWUmJnRoaXMu YWRkZWQmJnRoaXMucmVuZGVyZXI9Ci5idWlsZFRleHQodGhpcyl9cmV0dXJuIHRoaXN9LG9uOmZ1 bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLGQ9M0RjLmVsZW1lbnQ7JD0KYSYmYT0zRD0zRD0zRCJj bGljayI/KGQub250b3VjaHN0YXJ0PTNEZnVuY3Rpb24oYSl7Yy50b3VjaEV2ZW50RmlyZWQ9M0RE YXRlPQoubm93KCk7YS5wcmV2ZW50RGVmYXVsdCgpO2IuY2FsbChkLGEpfSxkLm9uY2xpY2s9M0Rm dW5jdGlvbihhKXsod2EuaW5kZXhPZig9CiJBbmRyb2lkIik9M0Q9M0Q9M0QtMXx8RGF0ZS5ub3co KS0oYy50b3VjaEV2ZW50RmlyZWR8fDApPjExMDApJiZiLmNhbGwoZCxhKT0KfSk6ZFsib24iK2Fd PTNEYjtyZXR1cm4gdGhpc30sc2V0UmFkaWFsUmVmZXJlbmNlOmZ1bmN0aW9uKGEpe3RoaXMuZWxl bWVudC5yPQphZGlhbFJlZmVyZW5jZT0zRAotYTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0 aW9uKGEsYil7cmV0dXJuIHRoaXMuYXR0cih7dHJhbnNsYXRlWDphLHRyYW49CnNsYXRlWTpifSl9 LGludmVydDpmdW5jdGlvbigpe3RoaXMuaW52ZXJ0ZWQ9M0QhMDt0aGlzLnVwZGF0ZVRyYW5zZm9y bSgpO3JldD0KdXJuIHRoaXN9LHVwZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbigpe3ZhciBhPTNEdGhp cy50cmFuc2xhdGVYfHwwLGI9M0R0aGlzLnRyPQphbnNsYXRlWXx8MCxjPTNEdGhpcy5zY2FsZVgs ZD0zRHRoaXMuc2NhbGVZLGU9M0R0aGlzLmludmVydGVkLGY9M0R0aGlzLnJvdGE9CnRpb24sZz0z RHRoaXMuZWxlbWVudDtlJiYoYSs9M0R0aGlzLmF0dHIoIndpZHRoIiksYis9M0R0aGlzLmF0dHIo ImhlaWdodCIpKT0KO2E9M0RbInRyYW5zbGF0ZSgiK2ErIiwiK2IrIikiXTtlP2EucHVzaCgicm90 YXRlKDkwKSBzY2FsZSgtMSwxKSIpOmYmJmEucHVzPQpoKCJyb3RhdGUoIitmKyIgIisoZy5nZXRB dHRyaWJ1dGUoIngiKXx8MCkrIiAiKyhnLmdldEF0dHJpYnV0ZSgieSIpfHwwKSsiKSI9Cik7Ci0o cihjKXx8cihkKSkmJmEucHVzaCgic2NhbGUoIittKGMsMSkrIiAiK20oZCwxKSsiKSIpO2EubGVu Z3RoJiZnLnNldEF0dHJpYj0KdXRlKCJ0cmFuc2Zvcm0iLGEuam9pbigiICIpKX0sdG9Gcm9udDpm dW5jdGlvbigpe3ZhciBhPTNEdGhpcy5lbGVtZW50O2EucGFyPQplbnROb2RlLmFwcGVuZENoaWxk KGEpO3JldHVybiB0aGlzfSxhbGlnbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD0zRHs9 Cn07ZT0zRHRoaXMucmVuZGVyZXI7Zj0zRGUuYWxpZ25lZE9iamVjdHM7aWYoYSl7aWYodGhpcy5h bGlnbk9wdGlvbnM9M0RhLHRoaT0Kcy5hbGlnbkJ5VHJhbnNsYXRlPTNEYiwhY3x8RmEoYykpdGhp cy5hbGlnblRvPTNEZD0zRGN8fCJyZW5kZXJlciIsamEoZix0aGlzPQopLGYucHVzaCh0aGlzKSxj PTNEbnVsbH1lbHNlIGE9M0R0aGlzLmFsaWduT3B0aW9ucyxiPTNEdGhpcy5hbGlnbkJ5VHJhbnNs YXQ9CmUsZD0zRHRoaXMuYWxpZ25UbztjPTNEbShjLGVbZF0sZSk7ZD0zRGEuYWxpZ247ZT0zRGEu dmVydGljYWxBbGlnbjtmPTNEKGMueD0KfHwwKSsoYS54fHwKLTApO2c9M0QoYy55fHwwKSsoYS55 fHwwKTtpZihkPTNEPTNEPTNEInJpZ2h0Inx8ZD0zRD0zRD0zRCJjZW50ZXIiKWYrPTNEKGMuPQp3 aWR0aC0oYS53aWR0aHx8MCkpL3tyaWdodDoxLGNlbnRlcjoyfVtkXTtoW2I/InRyYW5zbGF0ZVgi OiJ4Il09M0R1KGYpO2lmKGU9Cj0zRD0zRD0zRCJib3R0b20ifHxlPTNEPTNEPTNEIm1pZGRsZSIp Zys9M0QoYy5oZWlnaHQtKGEuaGVpZ2h0fHwwKSkvKHtib3R0bz0KbToxLG1pZGRsZToyfVtlXXx8 MSk7aFtiPyJ0cmFuc2xhdGVZIjoieSJdPTNEdShnKTt0aGlzW3RoaXMucGxhY2VkPyJhbmltYXRl PQoiOiJhdHRyIl0oaCk7dGhpcy5wbGFjZWQ9M0QhMDt0aGlzLmFsaWduQXR0cj0zRGg7cmV0dXJu IHRoaXN9LGdldEJCb3g6ZnVuY3Q9Cmlvbigpe3ZhciBhPTNEdGhpcy5iQm94LGI9M0R0aGlzLnJl bmRlcmVyLGMsZCxlPTNEdGhpcy5yb3RhdGlvbjtjPTNEdGhpcy5lbD0KZW1lbnQ7dmFyIGY9M0R0 aGlzLnN0eWxlcyxnPTNEZSpDYTtkPTNEdGhpcy50ZXh0U3RyO3ZhciBoO2lmKGQ9M0Q9M0Q9M0Qi Inx8PQpPYi50ZXN0KGQpKWg9M0QibnVtLiIrZC50b1N0cmluZygpLmxlbmd0aCsKLShmPyJ8Iitm LmZvbnRTaXplKyJ8IitmLmZvbnRGYW1pbHk6IiIpO2gmJihhPTNEYi5jYWNoZVtoXSk7aWYoIWEp e2lmKGMubmFtPQplc3BhY2VVUkk9M0Q9M0Q9M0R4YXx8Yi5mb3JFeHBvcnQpe3RyeXthPTNEYy5n ZXRCQm94P3Eoe30sYy5nZXRCQm94KCkpOnt3aWQ9CnRoOmMub2Zmc2V0V2lkdGgsaGVpZ2h0OmMu b2Zmc2V0SGVpZ2h0fX1jYXRjaChpKXt9aWYoIWF8fGEud2lkdGg8MClhPTNEe3dpZD0KdGg6MCxo ZWlnaHQ6MH19ZWxzZSBhPTNEdGhpcy5odG1sR2V0QkJveCgpO2lmKGIuaXNTVkcpe2M9M0RhLndp ZHRoO2Q9M0RhLmhlPQppZ2h0O2lmKEFhJiZmJiZmLmZvbnRTaXplPTNEPTNEPTNEIjExcHgiJiZk LnRvUHJlY2lzaW9uKDMpPTNEPTNEPTNEIjE2LjkiKWE9Ci5oZWlnaHQ9M0RkPTNEMTQ7aWYoZSlh LndpZHRoPTNETShkKmVhKGcpKStNKGMqWihnKSksYS5oZWlnaHQ9M0RNKGQqWihnKSkrTT0KKGMq ZWEoZykpfXRoaXMuYkJveD0zRGE7aCYmKGIuY2FjaGVbaF09M0RhKX1yZXR1cm4gYX0sc2hvdzpm dW5jdGlvbihhKXtyZXR1PQpybiBhJiZ0aGlzLmVsZW1lbnQubmFtZXNwYWNlVVJJPTNEPTNEPTNE Ci14YT8odGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgidmlzaWJpbGl0eSIpLHRoaXMpOnRo aXMuYXR0cih7dmlzaWJpbGl0eT0KOmE/ImluaGVyaXQiOiJ2aXNpYmxlIn0pfSxoaWRlOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuYXR0cih7dmlzaWJpbGl0eToiaGlkPQpkZW4ifSl9LGZhZGVPdXQ6 ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzO2IuYW5pbWF0ZSh7b3BhY2l0eTowfSx7ZHVyYXRpb246 YXw9CnwxNTAsY29tcGxldGU6ZnVuY3Rpb24oKXtiLmhpZGUoKX19KX0sYWRkOmZ1bmN0aW9uKGEp e3ZhciBiPTNEdGhpcy5yZW5kZXJlcj0KLGM9M0RhfHxiLGQ9M0RjLmVsZW1lbnR8fGIuYm94LGU9 M0R0aGlzLmVsZW1lbnQsZj0zRHRoaXMuekluZGV4LGcsaDtpZihhKXRoPQppcy5wYXJlbnRHcm91 cD0zRGE7dGhpcy5wYXJlbnRJbnZlcnRlZD0zRGEmJmEuaW52ZXJ0ZWQ7dGhpcy50ZXh0U3RyIT0z RD0zRHY9Cm9pZCAwJiZiLmJ1aWxkVGV4dCh0aGlzKTtpZihmKWMuaGFuZGxlWj0zRCEwLGY9M0R6 KGYpO2lmKGMuaGFuZGxlWil7YT0zRGQuYz0KaGlsZE5vZGVzOwotZm9yKGc9M0QwO2c8YS5sZW5n dGg7ZysrKWlmKGI9M0RhW2ddLGM9M0RIKGIsInpJbmRleCIpLGIhPTNEPTNEZSYmKHooYyk+Znw9 CnwhcihmKSYmcihjKSkpe2QuaW5zZXJ0QmVmb3JlKGUsYik7aD0zRCEwO2JyZWFrfX1ofHxkLmFw cGVuZENoaWxkKGUpO3RoaXMuYT0KZGRlZD0zRCEwO2lmKHRoaXMub25BZGQpdGhpcy5vbkFkZCgp O3JldHVybiB0aGlzfSxzYWZlUmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oPQphKXt2YXIgYj0zRGEucGFy ZW50Tm9kZTtiJiZiLnJlbW92ZUNoaWxkKGEpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGE9M0R0 aGk9CnMsYj0zRGEuZWxlbWVudHx8e30sYz0zRGEuc2hhZG93cyxkPTNEYS5yZW5kZXJlci5pc1NW RyYmYi5ub2RlTmFtZT0zRD0zRD0zRD0KIlNQQU4iJiZhLnBhcmVudEdyb3VwLGUsZjtiLm9uY2xp Y2s9M0RiLm9ubW91c2VvdXQ9M0RiLm9ubW91c2VvdmVyPTNEYi5vbm1vPQp1c2Vtb3ZlPTNEYi5w b2ludD0zRG51bGw7YmIoYSk7aWYoYS5jbGlwUGF0aClhLmNsaXBQYXRoPTNEYS5jbGlwUGF0aC5k ZXN0cm89CnkoKTtpZihhLnN0b3BzKXtmb3IoZj0zRAotMDtmPGEuc3RvcHMubGVuZ3RoO2YrKylh LnN0b3BzW2ZdPTNEYS5zdG9wc1tmXS5kZXN0cm95KCk7YS5zdG9wcz0zRG51bGx9YS49CnNhZmVS ZW1vdmVDaGlsZChiKTtmb3IoYyYmcChjLGZ1bmN0aW9uKGIpe2Euc2FmZVJlbW92ZUNoaWxkKGIp fSk7ZCYmZC5kaXYuYz0KaGlsZE5vZGVzLmxlbmd0aD0zRD0zRD0zRDA7KWI9M0RkLnBhcmVudEdy b3VwLGEuc2FmZVJlbW92ZUNoaWxkKGQuZGl2KSxkZWxlPQp0ZSBkLmRpdixkPTNEYjthLmFsaWdu VG8mJmphKGEucmVuZGVyZXIuYWxpZ25lZE9iamVjdHMsYSk7Zm9yKGUgaW4gYSlkZWxldGU9CiBh W2VdO3JldHVybiBudWxsfSxzaGFkb3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTNEW10sZSxmLGc9 M0R0aGlzLmVsZW1lbnQsaD0KLGksaixrO2lmKGEpe2k9M0RtKGEud2lkdGgsMyk7aj0zRChhLm9w YWNpdHl8fDAuMTUpL2k7az0zRHRoaXMucGFyZW50SW52ZXJ0PQplZD8iKC0xLC0xKSI6IigiK20o YS5vZmZzZXRYLDEpKyIsICIrbShhLm9mZnNldFksMSkrIikiO2ZvcihlPTNEMTtlPD0zRGk7ZSs9 Cispe2Y9M0QKLWcuY2xvbmVOb2RlKDApO2g9M0RpKjIrMS0yKmU7SChmLHtpc1NoYWRvdzoidHJ1 ZSIsc3Ryb2tlOmEuY29sb3J8fCJibGFjayIsPQoic3Ryb2tlLW9wYWNpdHkiOmoqZSwic3Ryb2tl LXdpZHRoIjpoLHRyYW5zZm9ybToidHJhbnNsYXRlIitrLGZpbGw6UX0pO2lmKGM9CilIKGYsImhl aWdodCIsdihIKGYsImhlaWdodCIpLWgsMCkpLGYuY3V0SGVpZ2h0PTNEaDtiP2IuZWxlbWVudC5h cHBlbmRDaGlsZD0KKGYpOmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZixnKTtkLnB1c2goZil9 dGhpcy5zaGFkb3dzPTNEZH1yZXR1cm4gdGhpc30sPQp4R2V0dGVyOmZ1bmN0aW9uKGEpe3RoaXMu ZWxlbWVudC5ub2RlTmFtZT0zRD0zRD0zRCJjaXJjbGUiJiYoYT0zRHt4OiJjeCIseTo9CiJjeSJ9 W2FdfHxhKTtyZXR1cm4gdGhpcy5fZGVmYXVsdEdldHRlcihhKX0sX2RlZmF1bHRHZXR0ZXI6ZnVu Y3Rpb24oYSl7YT0zRD0KbSh0aGlzW2FdLHRoaXMuZWxlbWVudD90aGlzLmVsZW1lbnQuZ2V0QXR0 cmlidXRlKGEpOm51bGwsMCk7L15bMC05XC5dKyQvLnRlPQpzdChhKSYmCi0oYT0zRHBhcnNlRmxv YXQoYSkpO3JldHVybiBhfSxkU2V0dGVyOmZ1bmN0aW9uKGEsYixjKXthJiZhLmpvaW4mJihhPTNE YS5qbz0KaW4oIiAiKSk7LyhOYU58IHsyfXxeJCkvLnRlc3QoYSkmJihhPTNEIk0gMCAwIik7Yy5z ZXRBdHRyaWJ1dGUoYixhKTt0aGlzW2JdPQo9M0RhfSxkYXNoc3R5bGVTZXR0ZXI6ZnVuY3Rpb24o YSl7dmFyIGI7aWYoYT0zRGEmJmEudG9Mb3dlckNhc2UoKSl7YT0zRGEucmU9CnBsYWNlKCJzaG9y dGRhc2hkb3Rkb3QiLCIzLDEsMSwxLDEsMSwiKS5yZXBsYWNlKCJzaG9ydGRhc2hkb3QiLCIzLDEs MSwxIikucj0KZXBsYWNlKCJzaG9ydGRvdCIsIjEsMSwiKS5yZXBsYWNlKCJzaG9ydGRhc2giLCIz LDEsIikucmVwbGFjZSgibG9uZ2Rhc2giLCI4PQosMywiKS5yZXBsYWNlKC9kb3QvZywiMSwzLCIp LnJlcGxhY2UoImRhc2giLCI0LDMsIikucmVwbGFjZSgvLCQvLCIiKS5zcGxpdCg9CiIsIik7Zm9y KGI9M0RhLmxlbmd0aDtiLS07KWFbYl09M0R6KGFbYl0pKnRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1 dGUoInN0cm9rZT0KLXdpZHRoIik7Ci1hPTNEYS5qb2luKCIsIik7dGhpcy5lbGVtZW50LnNldEF0 dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIsYSl9fSxhbGlnblNldD0KdGVyOmZ1bmN0aW9uKGEp e3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRleHQtYW5jaG9yIix7bGVmdDoic3RhcnQiLGNl bnRlPQpyOiJtaWRkbGUiLHJpZ2h0OiJlbmQifVthXSl9LG9wYWNpdHlTZXR0ZXI6ZnVuY3Rpb24o YSxiLGMpe3RoaXNbYl09M0RhO2Muc2U9CnRBdHRyaWJ1dGUoYixhKX0sInN0cm9rZS13aWR0aFNl dHRlciI6ZnVuY3Rpb24oYSxiLGMpe2E9M0Q9M0Q9M0QwJiYoYT0zRDEuMD0KRS01KTt0aGlzLnN0 cm9rZVdpZHRoPTNEYTtjLnNldEF0dHJpYnV0ZShiLGEpfSx0aXRsZVNldHRlcjpmdW5jdGlvbihh KXt2YXIgPQpiPTNEdGhpcy5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpWzBd O2J8fChiPTNEeS5jcmVhdGVFbGVtZW50TlM9Cih4YSwidGl0bGUiKSx0aGlzLmVsZW1lbnQuYXBw ZW5kQ2hpbGQoYikpO2IudGV4dENvbnRlbnQ9M0RhfSx0ZXh0U2V0dGVyOmZ1bj0KY3Rpb24oYSl7 aWYoYSE9M0Q9M0QKLXRoaXMudGV4dFN0cilkZWxldGUgdGhpcy5iQm94LHRoaXMudGV4dFN0cj0z RGEsdGhpcy5hZGRlZCYmdGhpcy5yZW5kZXJlci5iPQp1aWxkVGV4dCh0aGlzKX0sZmlsbFNldHRl cjpmdW5jdGlvbihhLGIsYyl7dHlwZW9mIGE9M0Q9M0Q9M0Qic3RyaW5nIj9jLnNldEE9CnR0cmli dXRlKGIsYSk6YSYmdGhpcy5jb2xvckdyYWRpZW50KGEsYixjKX0sekluZGV4U2V0dGVyOmZ1bmN0 aW9uKGEsYixjKXtjLj0Kc2V0QXR0cmlidXRlKGIsYSk7dGhpc1tiXT0zRGF9LF9kZWZhdWx0U2V0 dGVyOmZ1bmN0aW9uKGEsYixjKXtjLnNldEF0dHJpYnV0PQplKGIsYSl9fTtQLnByb3RvdHlwZS55 R2V0dGVyPTNEUC5wcm90b3R5cGUueEdldHRlcjtQLnByb3RvdHlwZS50cmFuc2xhdGVYU2U9CnR0 ZXI9M0RQLnByb3RvdHlwZS50cmFuc2xhdGVZU2V0dGVyPTNEUC5wcm90b3R5cGUucm90YXRpb25T ZXR0ZXI9M0RQLnByb3RvdD0KeXBlLnZlcnRpY2FsQWxpZ25TZXR0ZXI9M0RQLnByb3RvdHlwZS5z Y2FsZVhTZXR0ZXI9M0RQLnByb3RvdHlwZS5zY2FsZVlTZXR0PQplcj0zRAotZnVuY3Rpb24oYSxi KXt0aGlzW2JdPTNEYTt0aGlzLmRvVHJhbnNmb3JtPTNEITB9O1AucHJvdG90eXBlLnN0cm9rZVNl dHRlcj0KPTNEUC5wcm90b3R5cGUuZmlsbFNldHRlcjt2YXIgdGE9M0RmdW5jdGlvbigpe3RoaXMu aW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50PQpzKX07dGEucHJvdG90eXBlPTNEe0VsZW1lbnQ6UCxp bml0OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9M0Rsb2NhdGlvbixnLGQ9Cj0zRHRoaXMuY3Jl YXRlRWxlbWVudCgic3ZnIikuYXR0cih7dmVyc2lvbjoiMS4xIn0pLmNzcyh0aGlzLmdldFN0eWxl KGQpKTtnPQo9M0RkLmVsZW1lbnQ7YS5hcHBlbmRDaGlsZChnKTthLmlubmVySFRNTC5pbmRleE9m KCJ4bWxucyIpPTNEPTNEPTNELTEmJkgoZyw9CiJ4bWxucyIseGEpO3RoaXMuaXNTVkc9M0QhMDt0 aGlzLmJveD0zRGc7dGhpcy5ib3hXcmFwcGVyPTNEZDt0aGlzLmFsaWduZWRPYj0KamVjdHM9M0Rb XTt0aGlzLnVybD0zRChUYXx8aWIpJiZ5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIikubGVu Z3RoP2YuaHJlPQpmLnJlcGxhY2UoLyMuKj8kLywKLSIiKS5yZXBsYWNlKC8oW1woJ1wpXSkvZywi XFwkMSIpLnJlcGxhY2UoLyAvZywiJTIwIik6IiI7dGhpcy5jcmVhdGVFbGVtZW50PQooImRlc2Mi KS5hZGQoKS5lbGVtZW50LmFwcGVuZENoaWxkKHkuY3JlYXRlVGV4dE5vZGUoIkNyZWF0ZWQgd2l0 aCBIaWdoY2hhcnQ9CnMgNC4wLjEiKSk7dGhpcy5kZWZzPTNEdGhpcy5jcmVhdGVFbGVtZW50KCJk ZWZzIikuYWRkKCk7dGhpcy5mb3JFeHBvcnQ9M0RlOz0KdGhpcy5ncmFkaWVudHM9M0R7fTt0aGlz LmNhY2hlPTNEe307dGhpcy5zZXRTaXplKGIsYywhMSk7dmFyIGg7aWYoVGEmJmEuZ2V0PQpCb3Vu ZGluZ0NsaWVudFJlY3QpdGhpcy5zdWJQaXhlbEZpeD0zRGI9M0RmdW5jdGlvbigpe0coYSx7bGVm dDowLHRvcDowfSk7aD0KPTNEYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtHKGEse2xlZnQ6S2Eo aC5sZWZ0KS1oLmxlZnQrInB4Iix0b3A6S2EoaC50b3ApPQotaC50b3ArInB4In0pfSxiKCksSyhJ LCJyZXNpemUiLGIpfSxnZXRTdHlsZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdHlsZT0KPTNE Ci1xKHtmb250RmFtaWx5OiciTHVjaWRhIEdyYW5kZSIsICJMdWNpZGEgU2FucyBVbmljb2RlIiwg QXJpYWwsIEhlbHZldGljYSwgcz0KYW5zLXNlcmlmJyxmb250U2l6ZToiMTJweCJ9LGEpfSxpc0hp ZGRlbjpmdW5jdGlvbigpe3JldHVybiF0aGlzLmJveFdyYXBwZXIuPQpnZXRCQm94KCkud2lkdGh9 LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuZGVmczt0aGlzLmJveD0zRG51bGw7dGhp cy49CmJveFdyYXBwZXI9M0R0aGlzLmJveFdyYXBwZXIuZGVzdHJveSgpO09hKHRoaXMuZ3JhZGll bnRzfHx7fSk7dGhpcy5ncmFkaWVudD0Kcz0zRG51bGw7aWYoYSl0aGlzLmRlZnM9M0RhLmRlc3Ry b3koKTt0aGlzLnN1YlBpeGVsRml4JiZXKEksInJlc2l6ZSIsdGhpcy5zPQp1YlBpeGVsRml4KTty ZXR1cm4gdGhpcy5hbGlnbmVkT2JqZWN0cz0zRG51bGx9LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24o YSl7dmE9CnIgYj0zRG5ldyB0aGlzLkVsZW1lbnQ7Yi5pbml0KHRoaXMsYSk7cmV0dXJuIGJ9LGRy YXc6ZnVuY3Rpb24oKXt9LAotYnVpbGRUZXh0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0zRGEuZWxl bWVudCxjPTNEdGhpcyxkPTNEYy5mb3JFeHBvcnQsZT0zRG09CihhLnRleHRTdHIsIiIpLnRvU3Ry aW5nKCksZj0zRGUuaW5kZXhPZigiPCIpIT0zRD0zRC0xLGc9M0RiLmNoaWxkTm9kZXMsaCxpLD0K aj0zREgoYiwieCIpLGs9M0RhLnN0eWxlcyxsPTNEYS50ZXh0V2lkdGgsbz0zRGsmJmsubGluZUhl aWdodCxuPTNEZy5sZW5ndGgsPQpzPTNEZnVuY3Rpb24oYSl7cmV0dXJuIG8/eihvKTpjLmZvbnRN ZXRyaWNzKC8ocHh8ZW0pJC8udGVzdChhJiZhLnN0eWxlLmZvbnQ9ClNpemUpP2Euc3R5bGUuZm9u dFNpemU6ayYmay5mb250U2l6ZXx8Yy5zdHlsZS5mb250U2l6ZXx8MTIpLmh9O24tLTspYi5yZW1v dj0KZUNoaWxkKGdbbl0pOyFmJiZlLmluZGV4T2YoIiAiKT0zRD0zRD0zRC0xP2IuYXBwZW5kQ2hp bGQoeS5jcmVhdGVUZXh0Tm9kZShlPQopKTooaD0zRC88LipzdHlsZT0zRCIoW14iXSspIi4qPi8s aT0zRC88LipocmVmPTNEIihodHRwW14iXSspIi4qPi8sbCYmIWEuYWQ9CmRlZCYmdGhpcy5ib3gu YXBwZW5kQ2hpbGQoYiksCi1lPTNEZj9lLnJlcGxhY2UoLzwoYnxzdHJvbmcpPi9nLCc8c3BhbiBz dHlsZT0zRCJmb250LXdlaWdodDpib2xkIj4nKS5yZXBsYT0KY2UoLzwoaXxlbSk+L2csJzxzcGFu IHN0eWxlPTNEImZvbnQtc3R5bGU6aXRhbGljIj4nKS5yZXBsYWNlKC88YS9nLCI8c3BhbiIpPQou cmVwbGFjZSgvPFwvKGJ8c3Ryb25nfGl8ZW18YSk+L2csIjwvc3Bhbj4iKS5zcGxpdCgvPGJyLio/ Pi9nKTpbZV0sZVtlLmxlbmc9CnRoLTFdPTNEPTNEPTNEIiImJmUucG9wKCkscChlLGZ1bmN0aW9u KGUsZil7dmFyIGcsbj0zRDAsZT0zRGUucmVwbGFjZSgvPHNwYT0Kbi9nLCJ8fHw8c3BhbiIpLnJl cGxhY2UoLzxcL3NwYW4+L2csIjwvc3Bhbj58fHwiKTtnPTNEZS5zcGxpdCgifHx8Iik7cChnLGZ1 PQpuY3Rpb24oZSl7aWYoZSE9M0Q9M0QiInx8Zy5sZW5ndGg9M0Q9M0Q9M0QxKXt2YXIgbz0zRHt9 LG09M0R5LmNyZWF0ZUVsZW1lbnQ9Ck5TKHhhLCJ0c3BhbiIpLHA7aC50ZXN0KGUpJiYocD0zRGUu bWF0Y2goaClbMV0ucmVwbGFjZSgvKDt8IHxeKWNvbG9yKFsgOl0pLz0KLCIkMWZpbGwkMiIpLAot SChtLCJzdHlsZSIscCkpO2kudGVzdChlKSYmIWQmJihIKG0sIm9uY2xpY2siLCdsb2NhdGlvbi5o cmVmPTNEIicrZS5tYXRjaCg9CmkpWzFdKyciJyksRyhtLHtjdXJzb3I6InBvaW50ZXIifSkpO2U9 M0QoZS5yZXBsYWNlKC88KC58XG4pKj8+L2csIiIpfHwiICIpLj0KcmVwbGFjZSgvJmx0Oy9nLCI8 IikucmVwbGFjZSgvJmd0Oy9nLCI+Iik7aWYoZSE9M0Q9M0QiICIpe20uYXBwZW5kQ2hpbGQoeS5j PQpyZWF0ZVRleHROb2RlKGUpKTtpZihuKW8uZHg9M0QwO2Vsc2UgaWYoZiYmaiE9M0Q9M0RudWxs KW8ueD0zRGo7SChtLG8pOyFuJiY9CmYmJighYWEmJmQmJkcobSx7ZGlzcGxheToiYmxvY2sifSks SChtLCJkeSIscyhtKSxpYiYmbS5vZmZzZXRIZWlnaHQpKTtiLmFwcD0KZW5kQ2hpbGQobSk7bisr O2lmKGwpZm9yKHZhciBlPTNEZS5yZXBsYWNlKC8oW15cXl0pLS9nLCIkMS0gIikuc3BsaXQoIiAi KSxvPQo9M0RlLmxlbmd0aD4xJiZrLndoaXRlU3BhY2UhPTNEPTNEIm5vd3JhcCIsJCxyLEI9M0Rh Ll9jbGlwSGVpZ2h0LHE9M0RbXSx2PQo9M0RzKCksdD0zRAotMTtvJiYoZS5sZW5ndGh8fHEubGVu Z3RoKTspZGVsZXRlIGEuYkJveCwkPTNEYS5nZXRCQm94KCkscj0zRCQud2lkdGgsIWFhJiY9CmMu Zm9yRXhwb3J0JiYocj0zRGMubWVhc3VyZVNwYW5XaWR0aChtLmZpcnN0Q2hpbGQuZGF0YSxhLnN0 eWxlcykpLCQ9M0RyPmwsIT0KJHx8ZS5sZW5ndGg9M0Q9M0Q9M0QxPyhlPTNEcSxxPTNEW10sZS5s ZW5ndGgmJih0KyssQiYmdCp2PkI/KGU9M0RbIi4uLiJdLGEuPQphdHRyKCJ0aXRsZSIsYS50ZXh0 U3RyKSk6KG09M0R5LmNyZWF0ZUVsZW1lbnROUyh4YSwidHNwYW4iKSxIKG0se2R5OnYseDpqfSk9 CixwJiZIKG0sInN0eWxlIixwKSxiLmFwcGVuZENoaWxkKG0pLHI+bCYmKGw9M0RyKSkpKToobS5y ZW1vdmVDaGlsZChtLmZpcnN0Qz0KaGlsZCkscS51bnNoaWZ0KGUucG9wKCkpKSxlLmxlbmd0aCYm bS5hcHBlbmRDaGlsZCh5LmNyZWF0ZVRleHROb2RlKGUuam9pbigiPQogIikucmVwbGFjZSgvLSAv ZywiLSIpKSl9fX0pfSkpfSxidXR0b246ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGkpe3ZhciBq PQo9M0R0aGlzLmxhYmVsKGEsCi1iLGMsaSxudWxsLG51bGwsbnVsbCxudWxsLCJidXR0b24iKSxr PTNEMCxsLG8sbixzLG0scCxhPTNEe3gxOjAseTE6MCx4MjowLD0KeTI6MX0sZT0zRHcoeyJzdHJv a2Utd2lkdGgiOjEsc3Ryb2tlOiIjQ0NDQ0NDIixmaWxsOntsaW5lYXJHcmFkaWVudDphLHN0b3Bz PQo6W1swLCIjRkVGRUZFIl0sWzEsIiNGNkY2RjYiXV19LHI6MixwYWRkaW5nOjUsc3R5bGU6e2Nv bG9yOiJibGFjayJ9fSxlKTtuPQo9M0RlLnN0eWxlO2RlbGV0ZSBlLnN0eWxlO2Y9M0R3KGUse3N0 cm9rZToiIzY4QSIsZmlsbDp7bGluZWFyR3JhZGllbnQ6YSxzdG89CnBzOltbMCwiI0ZGRiJdLFsx LCIjQUNGIl1dfX0sZik7cz0zRGYuc3R5bGU7ZGVsZXRlIGYuc3R5bGU7Zz0zRHcoZSx7c3Ryb2tl Oj0KIiM2OEEiLGZpbGw6e2xpbmVhckdyYWRpZW50OmEsc3RvcHM6W1swLCIjOUJEIl0sWzEsIiND REYiXV19fSxnKTttPTNEZy5zdHlsPQplO2RlbGV0ZSBnLnN0eWxlO2g9M0R3KGUse3N0eWxlOntj b2xvcjoiI0NDQyJ9fSxoKTtwPTNEaC5zdHlsZTtkZWxldGUgaC5zdHk9CmxlOwotSyhqLmVsZW1l bnQsQWE/Im1vdXNlb3ZlciI6Im1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7ayE9M0Q9M0QzJiZqLmF0 dHIoZikuY3M9CnMocyl9KTtLKGouZWxlbWVudCxBYT8ibW91c2VvdXQiOiJtb3VzZWxlYXZlIixm dW5jdGlvbigpe2shPTNEPTNEMyYmKGw9M0RbZT0KLGYsZ11ba10sbz0zRFtuLHMsbV1ba10sai5h dHRyKGwpLmNzcyhvKSl9KTtqLnNldFN0YXRlPTNEZnVuY3Rpb24oYSl7KGouc3RhPQp0ZT0zRGs9 M0RhKT9hPTNEPTNEPTNEMj9qLmF0dHIoZykuY3NzKG0pOmE9M0Q9M0Q9M0QzJiZqLmF0dHIoaCku Y3NzKHApOmouYXQ9CnRyKGUpLmNzcyhuKX07cmV0dXJuIGoub24oImNsaWNrIixmdW5jdGlvbigp e2shPTNEPTNEMyYmZC5jYWxsKGopfSkuYXR0cihlKT0KLmNzcyhxKHtjdXJzb3I6ImRlZmF1bHQi fSxuKSl9LGNyaXNwTGluZTpmdW5jdGlvbihhLGIpe2FbMV09M0Q9M0Q9M0RhWzRdJiYoPQphWzFd PTNEYVs0XT0zRHUoYVsxXSktYiUyLzIpO2FbMl09M0Q9M0Q9M0RhWzVdJiYoYVsyXT0zRGFbNV09 M0R1KGFbMl0pK2IlMi89CjIpO3JldHVybiBhfSxwYXRoOmZ1bmN0aW9uKGEpe3ZhciBiPTNECi17 ZmlsbDpRfTtMYShhKT9iLmQ9M0RhOmNhKGEpJiZxKGIsYSk7cmV0dXJuIHRoaXMuY3JlYXRlRWxl bWVudCgicGF0aCIpLmF0dD0KcihiKX0sY2lyY2xlOmZ1bmN0aW9uKGEsYixjKXthPTNEY2EoYSk/ YTp7eDphLHk6YixyOmN9O2I9M0R0aGlzLmNyZWF0ZUVsZW1lPQpudCgiY2lyY2xlIik7Yi54U2V0 dGVyPTNEZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiY3giLGEpfTtiLnk9 ClNldHRlcj0zRGZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImN5IixhKX07 cmV0dXJuIGIuYXR0cihhKX0sYT0KcmM6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKGNhKGEpKWI9 M0RhLnksYz0zRGEucixkPTNEYS5pbm5lclIsZT0zRGEuc3RhcnQsPQpmPTNEYS5lbmQsYT0zRGEu eDthPTNEdGhpcy5zeW1ib2woImFyYyIsYXx8MCxifHwwLGN8fDAsY3x8MCx7aW5uZXJSOmR8fDAs c3Q9CmFydDplfHwwLGVuZDpmfHwwfSk7YS5yPTNEYztyZXR1cm4gYX0scmVjdDpmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGU9M0RjYT0KKGEpP2EucjoKLWUsZz0zRHRoaXMuY3JlYXRlRWxlbWVu dCgicmVjdCIpLGE9M0RjYShhKT9hOmE9M0Q9M0Q9M0R0P3t9Ont4OmEseTpiLHdpZHRoPQo6dihj LDApLGhlaWdodDp2KGQsMCl9O2lmKGYhPTNEPTNEdClhLnN0cm9rZVdpZHRoPTNEZixhPTNEZy5j cmlzcChhKTtpZihlKWE9Ci5yPTNEZTtnLnJTZXR0ZXI9M0RmdW5jdGlvbihhKXtIKHRoaXMuZWxl bWVudCx7cng6YSxyeTphfSl9O3JldHVybiBnLmF0dHIoYT0KKX0sc2V0U2l6ZTpmdW5jdGlvbihh LGIsYyl7dmFyIGQ9M0R0aGlzLmFsaWduZWRPYmplY3RzLGU9M0RkLmxlbmd0aDt0aGlzLndpPQpk dGg9M0RhO3RoaXMuaGVpZ2h0PTNEYjtmb3IodGhpcy5ib3hXcmFwcGVyW20oYywhMCk/ImFuaW1h dGUiOiJhdHRyIl0oe3dpZHQ9Cmg6YSxoZWlnaHQ6Yn0pO2UtLTspZFtlXS5hbGlnbigpfSxnOmZ1 bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5jcmVhdGVFbGVtZW50KD0KImciKTtyZXR1cm4gcihhKT9i LmF0dHIoeyJjbGFzcyI6ImhpZ2hjaGFydHMtIithfSk6Yn0saW1hZ2U6ZnVuY3Rpb24oYSxiLGMs PQpkLGUpe3ZhciBmPTNECi17cHJlc2VydmVBc3BlY3RSYXRpbzpRfTthcmd1bWVudHMubGVuZ3Ro PjEmJnEoZix7eDpiLHk6Yyx3aWR0aDpkLGhlaWdodDplfT0KKTtmPTNEdGhpcy5jcmVhdGVFbGVt ZW50KCJpbWFnZSIpLmF0dHIoZik7Zi5lbGVtZW50LnNldEF0dHJpYnV0ZU5TP2YuZWxlbWVuPQp0 LnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiaHJlZiIsYSk6 Zi5lbGVtZW50LnNldEF0dHI9CmlidXRlKCJoYy1zdmctaHJlZiIsYSk7cmV0dXJuIGZ9LHN5bWJv bDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGcsaD0zRHRoaT0Kcy5zeW1ib2xzW2FdLGg9M0Ro JiZoKHUoYiksdShjKSxkLGUsZiksaT0zRC9edXJsXCgoLio/KVwpJC8saixrO2lmKGgpZz0zRHRo PQppcy5wYXRoKGgpLHEoZyx7c3ltYm9sTmFtZTphLHg6Yix5OmMsd2lkdGg6ZCxoZWlnaHQ6ZX0p LGYmJnEoZyxmKTtlbHNlIGlmKGk9Ci50ZXN0KGEpKWs9M0RmdW5jdGlvbihhLGIpe2EuZWxlbWVu dCYmKGEuYXR0cih7d2lkdGg6YlswXSxoZWlnaHQ6YlsxXX0pLAotYS5hbGlnbkJ5VHJhbnNsYXRl fHxhLnRyYW5zbGF0ZSh1KChkLWJbMF0pLzIpLHUoKGUtYlsxXSkvMikpKX0saj0zRGEubWF0Y2g9 CihpKVsxXSxhPTNES2Jbal0sZz0zRHRoaXMuaW1hZ2UoaikuYXR0cih7eDpiLHk6Y30pLGcuaXNJ bWc9M0QhMCxhP2soZyxhKTooZz0KLmF0dHIoe3dpZHRoOjAsaGVpZ2h0OjB9KSxZKCJpbWciLHtv bmxvYWQ6ZnVuY3Rpb24oKXtrKGcsS2Jbal09M0RbdGhpcy53aWR0PQpoLHRoaXMuaGVpZ2h0XSl9 LHNyYzpqfSkpO3JldHVybiBnfSxzeW1ib2xzOntjaXJjbGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFy IGU9Cj0zRDAuMTY2KmM7cmV0dXJuWyJNIixhK2MvMixiLCJDIixhK2MrZSxiLGErYytlLGIrZCxh K2MvMixiK2QsIkMiLGEtZSxiK2QsYT0KLWUsYixhK2MvMixiLCJaIl19LHNxdWFyZTpmdW5jdGlv bihhLGIsYyxkKXtyZXR1cm5bIk0iLGEsYiwiTCIsYStjLGIsYStjLGIrPQpkLGEsYitkLCJaIl19 LHRyaWFuZ2xlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVyblsiTSIsYStjLzIsYiwiTCIsCi1hK2Ms YitkLGEsYitkLCJaIl19LCJ0cmlhbmdsZS1kb3duIjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm5b Ik0iLGEsYiwiTCIsYT0KK2MsYixhK2MvMixiK2QsIloiXX0sZGlhbW9uZDpmdW5jdGlvbihhLGIs YyxkKXtyZXR1cm5bIk0iLGErYy8yLGIsIkwiLGErYyxiPQorZC8yLGErYy8yLGIrZCxhLGIrZC8y LCJaIl19LGFyYzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPTNEZS5zdGFydCxjPTNEZS49CnJ8 fGN8fGQsZz0zRGUuZW5kLTAuMDAxLGQ9M0RlLmlubmVyUixoPTNEZS5vcGVuLGk9M0RaKGYpLGo9 M0RlYShmKSxrPTNEWihnKT0KLGc9M0RlYShnKSxlPTNEZS5lbmQtZjxtYT8wOjE7cmV0dXJuWyJN IixhK2MqaSxiK2MqaiwiQSIsYyxjLDAsZSwxLGErYyprLGIrPQpjKmcsaD8iTSI6IkwiLGErZCpr LGIrZCpnLCJBIixkLGQsMCxlLDAsYStkKmksYitkKmosaD8iIjoiWiJdfSxjYWxsb3V0OmZ1bmM9 CnRpb24oYSxiLGMsZCxlKXt2YXIgZj0zREMoZSYmZS5yfHwwLGMsZCksZz0zRGYrNixoPTNEZSYm ZS5hbmNob3JYLGk9M0RlJiZlLj0KYW5jaG9yWSwKLWU9M0R1KGUuc3Ryb2tlV2lkdGh8fDApJTIv MjthKz0zRGU7Yis9M0RlO2U9M0RbIk0iLGErZixiLCJMIixhK2MtZixiLCJDIixhPQorYyxiLGEr YyxiLGErYyxiK2YsIkwiLGErYyxiK2QtZiwiQyIsYStjLGIrZCxhK2MsYitkLGErYy1mLGIrZCwi TCIsYStmLGIrZCw9CiJDIixhLGIrZCxhLGIrZCxhLGIrZC1mLCJMIixhLGIrZiwiQyIsYSxiLGEs YixhK2YsYl07aCYmaD5jJiZpPmIrZyYmaTxiK2QtZz0KP2Uuc3BsaWNlKDEzLDMsIkwiLGErYyxp LTYsYStjKzYsaSxhK2MsaSs2LGErYyxiK2QtZik6aCYmaDwwJiZpPmIrZyYmaTxiK2QtPQpnP2Uu c3BsaWNlKDMzLDMsIkwiLGEsaSs2LGEtNixpLGEsaS02LGEsYitmKTppJiZpPmQmJmg+YStnJiZo PGErYy1nP2Uuc3BsaWM9CmUoMjMsMywiTCIsaCs2LGIrZCxoLGIrZCs2LGgtNixiK2QsYStmLGIr ZCk6aSYmaTwwJiZoPmErZyYmaDxhK2MtZyYmZS5zcGxpYz0KZSgzLDMsIkwiLGgtNixiLGgsYi02 LGgrNixiLGMtZixiKTtyZXR1cm4gZX19LGNsaXBSZWN0OmZ1bmN0aW9uKGEsCi1iLGMsZCl7dmFy IGU9M0QiaGlnaGNoYXJ0cy0iK3RiKyssZj0zRHRoaXMuY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgi KS5hdHRyKD0Ke2lkOmV9KS5hZGQodGhpcy5kZWZzKSxhPTNEdGhpcy5yZWN0KGEsYixjLGQsMCku YWRkKGYpO2EuaWQ9M0RlO2EuY2xpcFBhdGg9Cj0zRGY7cmV0dXJuIGF9LHRleHQ6ZnVuY3Rpb24o YSxiLGMsZCl7dmFyIGU9M0RmYXx8IWFhJiZ0aGlzLmZvckV4cG9ydCxmPTNEez0KfTtpZihkJiYh dGhpcy5mb3JFeHBvcnQpcmV0dXJuIHRoaXMuaHRtbChhLGIsYyk7Zi54PTNETWF0aC5yb3VuZChi fHwwKTtpZihjPQopZi55PTNETWF0aC5yb3VuZChjKTtpZihhfHxhPTNEPTNEPTNEMClmLnRleHQ9 M0RhO2E9M0R0aGlzLmNyZWF0ZUVsZW1lbnQoInQ9CmV4dCIpLmF0dHIoZik7ZSYmYS5jc3Moe3Bv c2l0aW9uOiJhYnNvbHV0ZSJ9KTtpZighZClhLnhTZXR0ZXI9M0RmdW5jdGlvbihhLD0KYixjKXt2 YXIgZD0zRGMuY2hpbGROb2RlcyxlLGY7Zm9yKGY9M0QxO2Y8ZC5sZW5ndGg7ZisrKWU9M0RkW2Zd LGUuZ2V0QXR0cmliPQp1dGUoIngiKT0zRD0zRD0zRGMuZ2V0QXR0cmlidXRlKCJ4IikmJgotZS5z ZXRBdHRyaWJ1dGUoIngiLGEpO2Muc2V0QXR0cmlidXRlKGIsYSl9O3JldHVybiBhfSxmb250TWV0 cmljczpmdW5jdGlvbig9CmEpe3ZhciBhPTNEYXx8dGhpcy5zdHlsZS5mb250U2l6ZSxhPTNEL3B4 Ly50ZXN0KGEpP3ooYSk6L2VtLy50ZXN0KGEpP3BhcnNlRj0KbG9hdChhKSoxMjoxMixhPTNEYTwy ND9hKzQ6dShhKjEuMiksYj0zRHUoYSowLjgpO3JldHVybntoOmEsYjpifX0sbGFiZWw6ZnVuPQpj dGlvbihhLGIsYyxkLGUsZixnLGgsaSl7ZnVuY3Rpb24gaigpe3ZhciBhLGI7YT0zRHMuZWxlbWVu dC5zdHlsZTtKPTNEKFZhPQo9M0Q9M0Q9M0R2b2lkIDB8fHdiPTNEPTNEPTNEdm9pZCAwfHxuLnN0 eWxlcy50ZXh0QWxpZ24pJiZzLnRleHRTdHImJnMuZ2V0QkI9Cm94KCk7bi53aWR0aD0zRChWYXx8 Si53aWR0aHx8MCkrMip4K3Y7bi5oZWlnaHQ9M0Qod2J8fEouaGVpZ2h0fHwwKSsyKng7bmE9Cj0z RHgrby5mb250TWV0cmljcyhhJiZhLmZvbnRTaXplKS5iO2lmKHope2lmKCFtKWE9M0R1KC1MKngp LGI9M0RoPy1uYTowLG4uYj0Kb3g9M0RtPTNEZD9vLnN5bWJvbChkLAotYSxiLG4ud2lkdGgsbi5o ZWlnaHQsQik6by5yZWN0KGEsYixuLndpZHRoLG4uaGVpZ2h0LDAsQltQYl0pLG0uYXR0cigiZmls bCI9CixRKS5hZGQobik7bS5pc0ltZ3x8bS5hdHRyKHEoe3dpZHRoOnUobi53aWR0aCksaGVpZ2h0 OnUobi5oZWlnaHQpfSxCKSk7Qj0zRD0KbnVsbH19ZnVuY3Rpb24gaygpe3ZhciBhPTNEbi5zdHls ZXMsYT0zRGEmJmEudGV4dEFsaWduLGI9M0R2K3gqKDEtTCksYztjPTNEPQpoPzA6bmE7aWYocihW YSkmJkomJihhPTNEPTNEPTNEImNlbnRlciJ8fGE9M0Q9M0Q9M0QicmlnaHQiKSliKz0zRHtjZW50 ZXI6MC49CjUscmlnaHQ6MX1bYV0qKFZhLUoud2lkdGgpO2lmKGIhPTNEPTNEcy54fHxjIT0zRD0z RHMueSlzLmF0dHIoIngiLGIpLGMhPTNEPQo9M0R0JiZzLmF0dHIoInkiLGMpO3MueD0zRGI7cy55 PTNEY31mdW5jdGlvbiBsKGEsYil7bT9tLmF0dHIoYSxiKTpCW2FdPTNEYn09CnZhciBvPTNEdGhp cyxuPTNEby5nKGkpLHM9M0RvLnRleHQoIiIsMCwwLGcpLmF0dHIoe3pJbmRleDoxfSksbSxKLEw9 M0QwLHg9Cj0zRDMsdj0zRDAsVmEsd2IseGIseWIseT0zRDAsQj0zRHt9LG5hLAotejtuLm9uQWRk PTNEZnVuY3Rpb24oKXtzLmFkZChuKTtuLmF0dHIoe3RleHQ6YXx8IiIseDpiLHk6Y30pO20mJnIo ZSkmJm4uYXQ9CnRyKHthbmNob3JYOmUsYW5jaG9yWTpmfSl9O24ud2lkdGhTZXR0ZXI9M0RmdW5j dGlvbihhKXtWYT0zRGF9O24uaGVpZ2h0U2V0dD0KZXI9M0RmdW5jdGlvbihhKXt3Yj0zRGF9O24u cGFkZGluZ1NldHRlcj0zRGZ1bmN0aW9uKGEpe3IoYSkmJmEhPTNEPTNEeCYmKHg9Cj0zRGEsaygp KX07bi5wYWRkaW5nTGVmdFNldHRlcj0zRGZ1bmN0aW9uKGEpe3IoYSkmJmEhPTNEPTNEdiYmKHY9 M0RhLGsoKSl9Oz0Kbi5hbGlnblNldHRlcj0zRGZ1bmN0aW9uKGEpe0w9M0R7bGVmdDowLGNlbnRl cjowLjUscmlnaHQ6MX1bYV19O24udGV4dFNldHRlPQpyPTNEZnVuY3Rpb24oYSl7YSE9M0Q9M0R0 JiZzLnRleHRTZXR0ZXIoYSk7aigpO2soKX07blsic3Ryb2tlLXdpZHRoU2V0dGVyIl09Cj0zRGZ1 bmN0aW9uKGEsYil7YSYmKHo9M0QhMCk7eT0zRGElMi8yO2woYixhKX07bi5zdHJva2VTZXR0ZXI9 M0RuLmZpbGxTZXR0ZT0Kcj0zRG4uclNldHRlcj0zRGZ1bmN0aW9uKGEsCi1iKXtiPTNEPTNEPTNE ImZpbGwiJiZhJiYoej0zRCEwKTtsKGIsYSl9O24uYW5jaG9yWFNldHRlcj0zRGZ1bmN0aW9uKGEs Yil7ZT0KPTNEYTtsKGIsYSt5LXhiKX07bi5hbmNob3JZU2V0dGVyPTNEZnVuY3Rpb24oYSxiKXtm PTNEYTtsKGIsYS15Yil9O24ueFNldHRlPQpyPTNEZnVuY3Rpb24oYSl7bi54PTNEYTtMJiYoYS09 M0RMKigoVmF8fEoud2lkdGgpK3gpKTt4Yj0zRHUoYSk7bi5hdHRyKCJ0cmE9Cm5zbGF0ZVgiLHhi KX07bi55U2V0dGVyPTNEZnVuY3Rpb24oYSl7eWI9M0RuLnk9M0R1KGEpO24uYXR0cigidHJhbnNs YXRlWSIseT0KYil9O3ZhciBBPTNEbi5jc3M7cmV0dXJuIHEobix7Y3NzOmZ1bmN0aW9uKGEpe2lm KGEpe3ZhciBiPTNEe30sYT0zRHcoYSk7cCgiPQpmb250U2l6ZSxmb250V2VpZ2h0LGZvbnRGYW1p bHksY29sb3IsbGluZUhlaWdodCx3aWR0aCx0ZXh0RGVjb3JhdGlvbix0ZXh0U2g9CmFkb3ciLnNw bGl0KCIsIiksZnVuY3Rpb24oYyl7YVtjXSE9M0Q9M0R0JiYoYltjXT0zRGFbY10sZGVsZXRlIGFb Y10pfSk7cy5jcz0KcyhiKX1yZXR1cm4gQS5jYWxsKG4sCi1hKX0sZ2V0QkJveDpmdW5jdGlvbigp e3JldHVybnt3aWR0aDpKLndpZHRoKzIqeCxoZWlnaHQ6Si5oZWlnaHQrMip4LHg6Si54LT0KeCx5 OkoueS14fX0sc2hhZG93OmZ1bmN0aW9uKGEpe20mJm0uc2hhZG93KGEpO3JldHVybiBufSxkZXN0 cm95OmZ1bmN0aW9uKCl7PQpXKG4uZWxlbWVudCwibW91c2VlbnRlciIpO1cobi5lbGVtZW50LCJt b3VzZWxlYXZlIik7cyYmKHM9M0RzLmRlc3Ryb3koKSk7bSY9CiYobT0zRG0uZGVzdHJveSgpKTtQ LnByb3RvdHlwZS5kZXN0cm95LmNhbGwobik7bj0zRG89M0RqPTNEaz0zRGw9M0RudWxsfX0pfT0K fTtaYT0zRHRhO3EoUC5wcm90b3R5cGUse2h0bWxDc3M6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlz LmVsZW1lbnQ7aWYoYj0zRGEmPQomYi50YWdOYW1lPTNEPTNEPTNEIlNQQU4iJiZhLndpZHRoKWRl bGV0ZSBhLndpZHRoLHRoaXMudGV4dFdpZHRoPTNEYix0aGlzLnU9CnBkYXRlVHJhbnNmb3JtKCk7 dGhpcy5zdHlsZXM9M0RxKHRoaXMuc3R5bGVzLGEpO0codGhpcy5lbGVtZW50LGEpO3JldHVybiB0 aD0KaXN9LGh0bWxHZXRCQm94OmZ1bmN0aW9uKCl7dmFyIGE9M0QKLXRoaXMuZWxlbWVudCxiPTNE dGhpcy5iQm94O2lmKCFiKXtpZihhLm5vZGVOYW1lPTNEPTNEPTNEInRleHQiKWEuc3R5bGUucG9z PQppdGlvbj0zRCJhYnNvbHV0ZSI7Yj0zRHRoaXMuYkJveD0zRHt4OmEub2Zmc2V0TGVmdCx5OmEu b2Zmc2V0VG9wLHdpZHRoOmEub2Y9CmZzZXRXaWR0aCxoZWlnaHQ6YS5vZmZzZXRIZWlnaHR9fXJl dHVybiBifSxodG1sVXBkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKCl7aT0KZih0aGlzLmFkZGVkKXt2 YXIgYT0zRHRoaXMucmVuZGVyZXIsYj0zRHRoaXMuZWxlbWVudCxjPTNEdGhpcy50cmFuc2xhdGVY fHwwPQosZD0zRHRoaXMudHJhbnNsYXRlWXx8MCxlPTNEdGhpcy54fHwwLGY9M0R0aGlzLnl8fDAs Zz0zRHRoaXMudGV4dEFsaWdufHwibGU9CmZ0IixoPTNEe2xlZnQ6MCxjZW50ZXI6MC41LHJpZ2h0 OjF9W2ddLGk9M0R0aGlzLnNoYWRvd3M7RyhiLHttYXJnaW5MZWZ0OmMsbT0KYXJnaW5Ub3A6ZH0p O2kmJnAoaSxmdW5jdGlvbihhKXtHKGEse21hcmdpbkxlZnQ6YysxLG1hcmdpblRvcDpkKzF9KX0p O3RoaXMuPQppbnZlcnRlZCYmCi1wKGIuY2hpbGROb2RlcyxmdW5jdGlvbihjKXthLmludmVydENo aWxkKGMsYil9KTtpZihiLnRhZ05hbWU9M0Q9M0Q9M0QiU1BBTj0KIil7dmFyIGo9M0R0aGlzLnJv dGF0aW9uLGssbD0zRHoodGhpcy50ZXh0V2lkdGgpLG89M0RbaixnLGIuaW5uZXJIVE1MLHRoaXMu PQp0ZXh0V2lkdGhdLmpvaW4oIiwiKTtpZihvIT0zRD0zRHRoaXMuY1RUKXtrPTNEYS5mb250TWV0 cmljcyhiLnN0eWxlLmZvbnRTaXo9CmUpLmI7cihqKSYmdGhpcy5zZXRTcGFuUm90YXRpb24oaixo LGspO2k9M0RtKHRoaXMuZWxlbVdpZHRoLGIub2Zmc2V0V2lkdGgpOz0KaWYoaT5sJiYvWyBcLV0v LnRlc3QoYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHQpKUcoYix7d2lkdGg6bCsicHgiLGRpc3Bs YXk6PQoiYmxvY2siLHdoaXRlU3BhY2U6Im5vcm1hbCJ9KSxpPTNEbDt0aGlzLmdldFNwYW5Db3Jy ZWN0aW9uKGksayxoLGosZyl9RyhiLHs9CmxlZnQ6ZSsodGhpcy54Q29ycnx8MCkrInB4Iix0b3A6 ZisodGhpcy55Q29ycnx8MCkrInB4In0pO2lmKGliKWs9M0RiLm9mZnNldD0KSGVpZ2h0OwotdGhp cy5jVFQ9M0RvfX1lbHNlIHRoaXMuYWxpZ25PbkFkZD0zRCEwfSxzZXRTcGFuUm90YXRpb246ZnVu Y3Rpb24oYSxiLGMpe3Y9CmFyIGQ9M0R7fSxlPTNEQWE/Ii1tcy10cmFuc2Zvcm0iOmliPyItd2Vi a2l0LXRyYW5zZm9ybSI6VGE/Ik1velRyYW5zZm9ybSI6ST0KYj8iLW8tdHJhbnNmb3JtIjoiIjtk W2VdPTNEZC50cmFuc2Zvcm09M0Qicm90YXRlKCIrYSsiZGVnKSI7ZFtlKyhUYT8iT3JpZ2luPQoi OiItb3JpZ2luIildPTNEZC50cmFuc2Zvcm1PcmlnaW49M0RiKjEwMCsiJSAiK2MrInB4IjtHKHRo aXMuZWxlbWVudCxkKX0sZ2U9CnRTcGFuQ29ycmVjdGlvbjpmdW5jdGlvbihhLGIsYyl7dGhpcy54 Q29ycj0zRC1hKmM7dGhpcy55Q29ycj0zRC1ifX0pO3EodGEucD0Kcm90b3R5cGUse2h0bWw6ZnVu Y3Rpb24oYSxiLGMpe3ZhciBkPTNEdGhpcy5jcmVhdGVFbGVtZW50KCJzcGFuIiksZT0zRGQuZWxl PQptZW50LGY9M0RkLnJlbmRlcmVyO2QudGV4dFNldHRlcj0zRGZ1bmN0aW9uKGEpe2EhPTNEPTNE ZS5pbm5lckhUTUwmJmRlbGV0ZSA9CnRoaXMuYkJveDsKLWUuaW5uZXJIVE1MPTNEdGhpcy50ZXh0 U3RyPTNEYX07ZC54U2V0dGVyPTNEZC55U2V0dGVyPTNEZC5hbGlnblNldHRlcj0zRGQuPQpyb3Rh dGlvblNldHRlcj0zRGZ1bmN0aW9uKGEsYil7Yj0zRD0zRD0zRCJhbGlnbiImJihiPTNEInRleHRB bGlnbiIpO2RbYl09M0Q9CmE7ZC5odG1sVXBkYXRlVHJhbnNmb3JtKCl9O2QuYXR0cih7dGV4dDph LHg6dShiKSx5OnUoYyl9KS5jc3Moe3Bvc2l0aW9uOiJhYj0Kc29sdXRlIix3aGl0ZVNwYWNlOiJu b3dyYXAiLGZvbnRGYW1pbHk6dGhpcy5zdHlsZS5mb250RmFtaWx5LGZvbnRTaXplOnRoaXMuPQpz dHlsZS5mb250U2l6ZX0pO2QuY3NzPTNEZC5odG1sQ3NzO2lmKGYuaXNTVkcpZC5hZGQ9M0RmdW5j dGlvbihhKXt2YXIgYixjPQo9M0RmLmJveC5wYXJlbnROb2RlLGo9M0RbXTtpZih0aGlzLnBhcmVu dEdyb3VwPTNEYSl7aWYoYj0zRGEuZGl2LCFiKXtmb3IoO2E9Cjspai5wdXNoKGEpLGE9M0RhLnBh cmVudEdyb3VwO3Aoai5yZXZlcnNlKCksZnVuY3Rpb24oYSl7dmFyIGQ7Yj0zRGEuZGl2PTNEYT0K LmRpdnx8WShKYSx7Y2xhc3NOYW1lOkgoYS5lbGVtZW50LAotImNsYXNzIil9LHtwb3NpdGlvbjoi YWJzb2x1dGUiLGxlZnQ6KGEudHJhbnNsYXRlWHx8MCkrInB4Iix0b3A6KGEudHJhbnNsYXQ9CmVZ fHwwKSsicHgifSxifHxjKTtkPTNEYi5zdHlsZTtxKGEse3RyYW5zbGF0ZVhTZXR0ZXI6ZnVuY3Rp b24oYixjKXtkLmxlZnQ9Cj0zRGIrInB4IjthW2NdPTNEYjthLmRvVHJhbnNmb3JtPTNEITB9LHRy YW5zbGF0ZVlTZXR0ZXI6ZnVuY3Rpb24oYixjKXtkLnRvcD0KPTNEYisicHgiO2FbY109M0RiO2Eu ZG9UcmFuc2Zvcm09M0QhMH0sdmlzaWJpbGl0eVNldHRlcjpmdW5jdGlvbihhLGIpe2RbYl09Cj0z RGF9fSl9KX19ZWxzZSBiPTNEYztiLmFwcGVuZENoaWxkKGUpO2QuYWRkZWQ9M0QhMDtkLmFsaWdu T25BZGQmJmQuaHRtbFVwZD0KYXRlVHJhbnNmb3JtKCk7cmV0dXJuIGR9O3JldHVybiBkfX0pO3Zh ciBYO2lmKCFhYSYmIWZhKXtSLlZNTEVsZW1lbnQ9M0RYPTNEPQp7aW5pdDpmdW5jdGlvbihhLGIp e3ZhciBjPTNEWyI8IixiLCcgZmlsbGVkPTNEImYiIHN0cm9rZWQ9M0QiZiInXSxkPTNEWyJwb3M9 Cml0aW9uOiAiLCJhYnNvbHV0ZSIsCi0iOyJdLGU9M0RiPTNEPTNEPTNESmE7KGI9M0Q9M0Q9M0Qi c2hhcGUifHxlKSYmZC5wdXNoKCJsZWZ0OjA7dG9wOjA7d2lkdGg6MT0KcHg7aGVpZ2h0OjFweDsi KTtkLnB1c2goInZpc2liaWxpdHk6ICIsZT8iaGlkZGVuIjoidmlzaWJsZSIpO2MucHVzaCgnIHN0 eWxlPQo9M0QiJyxkLmpvaW4oIiIpLCciLz4nKTtpZihiKWM9M0RlfHxiPTNEPTNEPTNEInNwYW4i fHxiPTNEPTNEPTNEImltZyI/Yy5qb2k9Cm4oIiIpOmEucHJlcFZNTChjKSx0aGlzLmVsZW1lbnQ9 M0RZKGMpO3RoaXMucmVuZGVyZXI9M0RhfSxhZGQ6ZnVuY3Rpb24oYSl7dj0KYXIgYj0zRHRoaXMu cmVuZGVyZXIsYz0zRHRoaXMuZWxlbWVudCxkPTNEYi5ib3gsZD0zRGE/YS5lbGVtZW50fHxhOmQ7 YSYmYS5pPQpudmVydGVkJiZiLmludmVydENoaWxkKGMsZCk7ZC5hcHBlbmRDaGlsZChjKTt0aGlz LmFkZGVkPTNEITA7dGhpcy5hbGlnbk9uQWQ9CmQmJiF0aGlzLmRlZmVyVXBkYXRlVHJhbnNmb3Jt JiZ0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO2lmKHRoaXMub25BZGQpdGhpcy5vbj0KQWRkKCk7cmV0 dXJuIHRoaXN9LHVwZGF0ZVRyYW5zZm9ybTpQLnByb3RvdHlwZS5odG1sVXBkYXRlVHJhbnNmb3Jt LAotc2V0U3BhblJvdGF0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLnJvdGF0aW9uLGI9M0Ra KGEqQ2EpLGM9M0RlYShhKkNhKTs9CkcodGhpcy5lbGVtZW50LHtmaWx0ZXI6YT9bInByb2dpZDpE WEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5NYXRyaXgoTTExPTNEIj0KLGIsIiwgTTEyPTNEIiwt YywiLCBNMjE9M0QiLGMsIiwgTTIyPTNEIixiLCIsIHNpemluZ01ldGhvZD0zRCdhdXRvIGV4cGFu ZCcpPQoiXS5qb2luKCIiKTpRfSl9LGdldFNwYW5Db3JyZWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQs ZSl7dmFyIGY9M0RkP1ooZCpDYSk6MSw9Cmc9M0RkP2VhKGQqQ2EpOjAsaD0zRG0odGhpcy5lbGVt SGVpZ2h0LHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQpLGk7dGhpcy54Qz0Kb3JyPTNEZjwwJiYt YTt0aGlzLnlDb3JyPTNEZzwwJiYtaDtpPTNEZipnPDA7dGhpcy54Q29ycis9M0RnKmIqKGk/MS1j OmMpO3RoPQppcy55Q29yci09M0RmKmIqKGQ/aT9jOjEtYzoxKTtlJiZlIT0zRD0zRCJsZWZ0IiYm KHRoaXMueENvcnItPTNEYSpjKihmPDA/LTE9CjoxKSxkJiYodGhpcy55Q29yci09M0QKLWgqYyoo ZzwwPy0xOjEpKSxHKHRoaXMuZWxlbWVudCx7dGV4dEFsaWduOmV9KSl9LHBhdGhUb1ZNTDpmdW5j dGlvbihhKXtmb3IoPQp2YXIgYj0zRGEubGVuZ3RoLGM9M0RbXTtiLS07KWlmKGhhKGFbYl0pKWNb Yl09M0R1KGFbYl0qMTApLTU7ZWxzZSBpZihhW2JdPQo9M0Q9M0Q9M0QiWiIpY1tiXT0zRCJ4Ijtl bHNlIGlmKGNbYl09M0RhW2JdLGEuaXNBcmMmJihhW2JdPTNEPTNEPTNEIndhInx8YVs9CmJdPTNE PTNEPTNEImF0IikpY1tiKzVdPTNEPTNEPTNEY1tiKzddJiYoY1tiKzddKz0zRGFbYis3XT5hW2Ir NV0/MTotMSksY1tiKz0KNl09M0Q9M0Q9M0RjW2IrOF0mJihjW2IrOF0rPTNEYVtiKzhdPmFbYis2 XT8xOi0xKTtyZXR1cm4gYy5qb2luKCIgIil8fCJ4In0sPQpjbGlwOmZ1bmN0aW9uKGEpe3ZhciBi PTNEdGhpcyxjO2E/KGM9M0RhLm1lbWJlcnMsamEoYyxiKSxjLnB1c2goYiksYi5kZXN0cm89CnlD bGlwPTNEZnVuY3Rpb24oKXtqYShjLGIpfSxhPTNEYS5nZXRDU1MoYikpOihiLmRlc3Ryb3lDbGlw JiZiLmRlc3Ryb3lDbGlwKD0KKSxhPTNEe2NsaXA6aGI/ImluaGVyaXQiOiJyZWN0KGF1dG8pIn0p OwotcmV0dXJuIGIuY3NzKGEpfSxjc3M6UC5wcm90b3R5cGUuaHRtbENzcyxzYWZlUmVtb3ZlQ2hp bGQ6ZnVuY3Rpb24oYSl7YS5wYXI9CmVudE5vZGUmJlBhKGEpfSxkZXN0cm95OmZ1bmN0aW9uKCl7 dGhpcy5kZXN0cm95Q2xpcCYmdGhpcy5kZXN0cm95Q2xpcCgpO3JldD0KdXJuIFAucHJvdG90eXBl LmRlc3Ryb3kuYXBwbHkodGhpcyl9LG9uOmZ1bmN0aW9uKGEsYil7dGhpcy5lbGVtZW50WyJvbiIr YV09Cj0zRGZ1bmN0aW9uKCl7dmFyIGE9M0RJLmV2ZW50O2EudGFyZ2V0PTNEYS5zcmNFbGVtZW50 O2IoYSl9O3JldHVybiB0aGlzfSxjdT0KdE9mZlBhdGg6ZnVuY3Rpb24oYSxiKXt2YXIgYyxhPTNE YS5zcGxpdCgvWyAsXS8pO2M9M0RhLmxlbmd0aDtpZihjPTNEPTNEPTNEPQo5fHxjPTNEPTNEPTNE MTEpYVtjLTRdPTNEYVtjLTJdPTNEeihhW2MtMl0pLTEwKmI7cmV0dXJuIGEuam9pbigiICIpfSxz aGFkb3c9CjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9M0RbXSxlLGY9M0R0aGlzLmVsZW1lbnQsZz0z RHRoaXMucmVuZGVyZXIsaCxpPTNEZi5zdD0KeWxlLGosaz0zRGYucGF0aCwKLWwsbyxuLHM7ayYm dHlwZW9mIGsudmFsdWUhPTNEPTNEInN0cmluZyImJihrPTNEIngiKTtvPTNEaztpZihhKXtuPTNE bShhLndpPQpkdGgsMyk7cz0zRChhLm9wYWNpdHl8fDAuMTUpL247Zm9yKGU9M0QxO2U8PTNEMztl Kyspe2w9M0RuKjIrMS0yKmU7YyYmKG89M0Q9CnRoaXMuY3V0T2ZmUGF0aChrLnZhbHVlLGwrMC41 KSk7aj0zRFsnPHNoYXBlIGlzU2hhZG93PTNEInRydWUiIHN0cm9rZXdlaWdodD0KPTNEIicsbCwn IiBmaWxsZWQ9M0QiZmFsc2UiIHBhdGg9M0QiJyxvLCciIGNvb3Jkc2l6ZT0zRCIxMCAxMCIgc3R5 bGU9M0QiJyxmPQouc3R5bGUuY3NzVGV4dCwnIiAvPiddO2g9M0RZKGcucHJlcFZNTChqKSxudWxs LHtsZWZ0OnooaS5sZWZ0KSttKGEub2Zmc2V0WCw9CjEpLHRvcDp6KGkudG9wKSttKGEub2Zmc2V0 WSwxKX0pO2lmKGMpaC5jdXRPZmY9M0RsKzE7aj0zRFsnPHN0cm9rZSBjb2xvcj0zRD0KIicsYS5j b2xvcnx8ImJsYWNrIiwnIiBvcGFjaXR5PTNEIicscyplLCciLz4nXTtZKGcucHJlcFZNTChqKSxu dWxsLG51bGwsaCk7PQpiP2IuZWxlbWVudC5hcHBlbmRDaGlsZChoKToKLWYucGFyZW50Tm9kZS5p bnNlcnRCZWZvcmUoaCxmKTtkLnB1c2goaCl9dGhpcy5zaGFkb3dzPTNEZH1yZXR1cm4gdGhpc30s dXBkPQphdGVTaGFkb3dzOnNhLHNldEF0dHI6ZnVuY3Rpb24oYSxiKXtoYj90aGlzLmVsZW1lbnRb YV09M0RiOnRoaXMuZWxlbWVudC5zZXQ9CkF0dHJpYnV0ZShhLGIpfSxjbGFzc1NldHRlcjpmdW5j dGlvbihhKXt0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPTNEYX0sZGFzaHN0eT0KbGVTZXR0ZXI6ZnVu Y3Rpb24oYSxiLGMpeyhjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzdHJva2UiKVswXXx8WSh0aGlz LnJlbmRlPQpyZXIucHJlcFZNTChbIjxzdHJva2UvPiJdKSxudWxsLG51bGwsYykpW2JdPTNEYXx8 InNvbGlkIjt0aGlzW2JdPTNEYX0sZFNldHQ9CmVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0zRHRo aXMuc2hhZG93cyxhPTNEYXx8W107dGhpcy5kPTNEYS5qb2luKCIgIik7Yy5wYT0KdGg9M0RhPTNE dGhpcy5wYXRoVG9WTUwoYSk7aWYoZClmb3IoYz0zRGQubGVuZ3RoO2MtLTspZFtjXS5wYXRoPTNE ZFtjXS5jdXRPPQpmZj8KLXRoaXMuY3V0T2ZmUGF0aChhLGRbY10uY3V0T2ZmKTphO3RoaXMuc2V0 QXR0cihiLGEpfSxmaWxsU2V0dGVyOmZ1bmN0aW9uKGEsPQpiLGMpe3ZhciBkPTNEYy5ub2RlTmFt ZTtpZihkPTNEPTNEPTNEIlNQQU4iKWMuc3R5bGUuY29sb3I9M0RhO2Vsc2UgaWYoZCE9M0Q9Cj0z RCJJTUciKWMuZmlsbGVkPTNEYSE9M0Q9M0RRLHRoaXMuc2V0QXR0cigiZmlsbGNvbG9yIix0aGlz LnJlbmRlcmVyLmNvbG9yKD0KYSxjLGIsdGhpcykpfSxvcGFjaXR5U2V0dGVyOnNhLHJvdGF0aW9u U2V0dGVyOmZ1bmN0aW9uKGEsYixjKXtjPTNEYy5zdHlsZTt0PQpoaXNbYl09M0RjW2JdPTNEYTtj LmxlZnQ9M0QtdShlYShhKkNhKSsxKSsicHgiO2MudG9wPTNEdShaKGEqQ2EpKSsicHgifSxzdHI9 Cm9rZVNldHRlcjpmdW5jdGlvbihhLGIsYyl7dGhpcy5zZXRBdHRyKCJzdHJva2Vjb2xvciIsdGhp cy5yZW5kZXJlci5jb2xvcihhLD0KYyxiKSl9LCJzdHJva2Utd2lkdGhTZXR0ZXIiOmZ1bmN0aW9u KGEsYixjKXtjLnN0cm9rZWQ9M0QhIWE7dGhpc1tiXT0zRGE7aGEoPQphKSYmKGErPTNEInB4Iik7 Ci10aGlzLnNldEF0dHIoInN0cm9rZXdlaWdodCIsYSl9LHRpdGxlU2V0dGVyOmZ1bmN0aW9uKGEs Yil7dGhpcy5zZXRBdHRyKGIsYT0KKX0sdmlzaWJpbGl0eVNldHRlcjpmdW5jdGlvbihhLGIsYyl7 YT0zRD0zRD0zRCJpbmhlcml0IiYmKGE9M0QidmlzaWJsZSIpO3RoPQppcy5zaGFkb3dzJiZwKHRo aXMuc2hhZG93cyxmdW5jdGlvbihjKXtjLnN0eWxlW2JdPTNEYX0pO2Mubm9kZU5hbWU9M0Q9M0Q9 M0Q9CiJESVYiJiYoYT0zRGE9M0Q9M0Q9M0QiaGlkZGVuIj8iLTk5OWVtIjowLGhifHwoYy5zdHls ZVtiXT0zRGE/InZpc2libGUiOiJoaT0KZGRlbiIpLGI9M0QidG9wIik7Yy5zdHlsZVtiXT0zRGF9 LHhTZXR0ZXI6ZnVuY3Rpb24oYSxiLGMpe3RoaXNbYl09M0RhO2I9M0Q9Cj0zRD0zRCJ4Ij9iPTNE ImxlZnQiOmI9M0Q9M0Q9M0QieSImJihiPTNEInRvcCIpO3RoaXMudXBkYXRlQ2xpcHBpbmc/KHRo aXNbYj0KXT0zRGEsdGhpcy51cGRhdGVDbGlwcGluZygpKTpjLnN0eWxlW2JdPTNEYX0sekluZGV4 U2V0dGVyOmZ1bmN0aW9uKGEsYixjKXtjPQouc3R5bGVbYl09M0RhfX07WD0zRGthKFAsWCk7WC5w cm90b3R5cGUueVNldHRlcj0zRAotWC5wcm90b3R5cGUud2lkdGhTZXR0ZXI9M0RYLnByb3RvdHlw ZS5oZWlnaHRTZXR0ZXI9M0RYLnByb3RvdHlwZS54U2V0dGVyO3Y9CmFyIGdhPTNEe0VsZW1lbnQ6 WCxpc0lFODp3YS5pbmRleE9mKCJNU0lFIDguMCIpPi0xLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCl7 dj0KYXIgZTt0aGlzLmFsaWduZWRPYmplY3RzPTNEW107ZD0zRHRoaXMuY3JlYXRlRWxlbWVudChK YSkuY3NzKHEodGhpcy5nZXRTdHlsPQplKGQpLHtwb3NpdGlvbjoicmVsYXRpdmUifSkpO2U9M0Rk LmVsZW1lbnQ7YS5hcHBlbmRDaGlsZChkLmVsZW1lbnQpO3RoaXMuaXM9ClZNTD0zRCEwO3RoaXMu Ym94PTNEZTt0aGlzLmJveFdyYXBwZXI9M0RkO3RoaXMuY2FjaGU9M0R7fTt0aGlzLnNldFNpemUo YixjLD0KITEpO2lmKCF5Lm5hbWVzcGFjZXMuaGN2KXt5Lm5hbWVzcGFjZXMuYWRkKCJoY3YiLCJ1 cm46c2NoZW1hcy1taWNyb3NvZnQtY29tPQo6dm1sIik7dHJ5e3kuY3JlYXRlU3R5bGVTaGVldCgp LmNzc1RleHQ9M0QiaGN2XFw6ZmlsbCwgaGN2XFw6cGF0aCwgaGN2XFw6c2g9CmFwZSwgaGN2XFw6 c3Ryb2tleyBiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTsgZGlzcGxheTogaW5saW5lLWJsb2Nr OyB9ICJ9Yz0KYXRjaChmKXt5LnN0eWxlU2hlZXRzWzBdLmNzc1RleHQrPTNECi0iaGN2XFw6Zmls bCwgaGN2XFw6cGF0aCwgaGN2XFw6c2hhcGUsIGhjdlxcOnN0cm9rZXsgYmVoYXZpb3I6dXJsKCNk ZWZhdWx0Iz0KVk1MKTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9ICJ9fX0saXNIaWRkZW46ZnVu Y3Rpb24oKXtyZXR1cm4hdGhpcy5ib3gub2ZmPQpzZXRXaWR0aH0sY2xpcFJlY3Q6ZnVuY3Rpb24o YSxiLGMsZCl7dmFyIGU9M0R0aGlzLmNyZWF0ZUVsZW1lbnQoKSxmPTNEY2EoYSk9CjtyZXR1cm4g cShlLHttZW1iZXJzOltdLGxlZnQ6KGY/YS54OmEpKzEsdG9wOihmP2EueTpiKSsxLHdpZHRoOihm P2Eud2lkdGg6Yz0KKS0xLGhlaWdodDooZj9hLmhlaWdodDpkKS0xLGdldENTUzpmdW5jdGlvbihh KXt2YXIgYj0zRGEuZWxlbWVudCxjPTNEYi5ub2RlPQpOYW1lLGE9M0RhLmludmVydGVkLGQ9M0R0 aGlzLnRvcC0oYz0zRD0zRD0zRCJzaGFwZSI/Yi5vZmZzZXRUb3A6MCksZT0zRHRoaXM9Ci5sZWZ0 LGI9M0RlK3RoaXMud2lkdGgsZj0zRGQrdGhpcy5oZWlnaHQsZD0zRHtjbGlwOiJyZWN0KCIrdShh P2U6ZCkrInB4LCIrdT0KKGE/Ci1mOmIpKyJweCwiK3UoYT9iOmYpKyJweCwiK3UoYT9kOmUpKyJw eCkifTshYSYmaGImJmM9M0Q9M0Q9M0QiRElWIiYmcShkLHt3aT0KZHRoOmIrInB4IixoZWlnaHQ6 ZisicHgifSk7cmV0dXJuIGR9LHVwZGF0ZUNsaXBwaW5nOmZ1bmN0aW9uKCl7cChlLm1lbWJlcnMs PQpmdW5jdGlvbihhKXthLmVsZW1lbnQmJmEuY3NzKGUuZ2V0Q1NTKGEpKX0pfX0pfSxjb2xvcjpm dW5jdGlvbihhLGIsYyxkKXt2YXI9CiBlPTNEdGhpcyxmLGc9M0QvXnJnYmEvLGgsaSxqPTNEUTth JiZhLmxpbmVhckdyYWRpZW50P2k9M0QiZ3JhZGllbnQiOmEmJmEucj0KYWRpYWxHcmFkaWVudCYm KGk9M0QicGF0dGVybiIpO2lmKGkpe3ZhciBrLGwsbz0zRGEubGluZWFyR3JhZGllbnR8fGEucmFk aWFsPQpHcmFkaWVudCxuLHMsbSxKLEwseD0zRCIiLGE9M0RhLnN0b3BzLHIsdj0zRFtdLHE9M0Rm dW5jdGlvbigpe2g9M0RbJzxmaWxsIGM9Cm9sb3JzPTNEIicrdi5qb2luKCIsIikrJyIgb3BhY2l0 eT0zRCInLG0sJyIgbzpvcGFjaXR5Mj0zRCInLHMsJyIgdHlwZT0zRCInLD0KaSwnIiAnLHgsJ2Zv Y3VzPTNEIjEwMCUiIG1ldGhvZD0zRCJhbnkiIC8+J107Ci1ZKGUucHJlcFZNTChoKSxudWxsLG51 bGwsYil9O249M0RhWzBdO3I9M0RhW2EubGVuZ3RoLTFdO25bMF0+MCYmYS51bnNoaWZ0KD0KWzAs blsxXV0pO3JbMF08MSYmYS5wdXNoKFsxLHJbMV1dKTtwKGEsZnVuY3Rpb24oYSxiKXtnLnRlc3Qo YVsxXSk/KGY9M0R5YShhPQpbMV0pLGs9M0RmLmdldCgicmdiIiksbD0zRGYuZ2V0KCJhIikpOihr PTNEYVsxXSxsPTNEMSk7di5wdXNoKGFbMF0qMTAwKyIlICI9CitrKTtiPyhtPTNEbCxKPTNEayk6 KHM9M0RsLEw9M0RrKX0pO2lmKGM9M0Q9M0Q9M0QiZmlsbCIpaWYoaT0zRD0zRD0zRCJncmFkaT0K ZW50IiljPTNEby54MXx8b1swXXx8MCxhPTNEby55MXx8b1sxXXx8MCxuPTNEby54Mnx8b1syXXx8 MCxvPTNEby55Mnx8b1szXXx8PQowLHg9M0QnYW5nbGU9M0QiJysoOTAtVS5hdGFuKChvLWEpLyhu LWMpKSoxODAvbWEpKyciJyxxKCk7ZWxzZXt2YXIgaj0zRG8uciw9CnQ9M0RqKjIsdT0zRGoqMix5 PTNEby5jeCxCPTNEby5jeSxuYT0zRGIucmFkaWFsUmVmZXJlbmNlLHcsaj0zRGZ1bmN0aW9uKCl7 bj0KYSYmKHc9M0RkLmdldEJCb3goKSx5Kz0zRChuYVswXS13LngpL3cud2lkdGgtCi0wLjUsQis9 M0QobmFbMV0tdy55KS93LmhlaWdodC0wLjUsdCo9M0RuYVsyXS93LndpZHRoLHUqPTNEbmFbMl0v dy5oZWlnaHQpOz0KeD0zRCdzcmM9M0QiJytFLmdsb2JhbC5WTUxSYWRpYWxHcmFkaWVudFVSTCsn IiBzaXplPTNEIicrdCsiLCIrdSsnIiBvcmlnaW49Cj0zRCIwLjUsMC41IiBwb3NpdGlvbj0zRCIn K3krIiwiK0IrJyIgY29sb3IyPTNEIicrTCsnIiAnO3EoKX07ZC5hZGRlZD9qKCk6ZD0KLm9uQWRk PTNEajtqPTNESn1lbHNlIGo9M0RrfWVsc2UgaWYoZy50ZXN0KGEpJiZiLnRhZ05hbWUhPTNEPTNE IklNRyIpZj0zRHlhPQooYSksaD0zRFsiPCIsYywnIG9wYWNpdHk9M0QiJyxmLmdldCgiYSIpLCci Lz4nXSxZKHRoaXMucHJlcFZNTChoKSxudWxsLG51bGw9CixiKSxqPTNEZi5nZXQoInJnYiIpO2Vs c2V7aj0zRGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYyk7aWYoai5sZW5ndGgpalswXS5vcD0KYWNp dHk9M0QxLGpbMF0udHlwZT0zRCJzb2xpZCI7aj0zRGF9cmV0dXJuIGp9LHByZXBWTUw6ZnVuY3Rp b24oYSl7dmFyIGI9M0R0PQpoaXMuaXNJRTgsYT0zRGEuam9pbigiIik7Yj8KLShhPTNEYS5yZXBs YWNlKCIvPiIsJyB4bWxucz0zRCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgLz4nKSxh PTNEYS5pPQpuZGV4T2YoJ3N0eWxlPTNEIicpPTNEPTNEPTNELTE/YS5yZXBsYWNlKCIvPiIsJyBz dHlsZT0zRCJkaXNwbGF5OmlubGluZS1ibG89CmNrO2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwp OyIgLz4nKTphLnJlcGxhY2UoJ3N0eWxlPTNEIicsJ3N0eWxlPTNEImRpc3BsYT0KeTppbmxpbmUt YmxvY2s7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7JykpOmE9M0RhLnJlcGxhY2UoIjwiLCI8 aGN2OiIpO3JlPQp0dXJuIGF9LHRleHQ6dGEucHJvdG90eXBlLmh0bWwscGF0aDpmdW5jdGlvbihh KXt2YXIgYj0zRHtjb29yZHNpemU6IjEwIDEwIn09CjtMYShhKT9iLmQ9M0RhOmNhKGEpJiZxKGIs YSk7cmV0dXJuIHRoaXMuY3JlYXRlRWxlbWVudCgic2hhcGUiKS5hdHRyKGIpfSxjaT0KcmNsZTpm dW5jdGlvbihhLGIsYyl7dmFyIGQ9M0R0aGlzLnN5bWJvbCgiY2lyY2xlIik7aWYoY2EoYSkpYz0z RGEucixiPTNEYS55PQosYT0zRGEueDtkLmlzQ2lyY2xlPTNECi0hMDtkLnI9M0RjO3JldHVybiBk LmF0dHIoe3g6YSx5OmJ9KX0sZzpmdW5jdGlvbihhKXt2YXIgYjthJiYoYj0zRHtjbGFzc05hbT0K ZToiaGlnaGNoYXJ0cy0iK2EsImNsYXNzIjoiaGlnaGNoYXJ0cy0iK2F9KTtyZXR1cm4gdGhpcy5j cmVhdGVFbGVtZW50KEphKS5hPQp0dHIoYil9LGltYWdlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFy IGY9M0R0aGlzLmNyZWF0ZUVsZW1lbnQoImltZyIpLmF0dHIoe3M9CnJjOmF9KTthcmd1bWVudHMu bGVuZ3RoPjEmJmYuYXR0cih7eDpiLHk6Yyx3aWR0aDpkLGhlaWdodDplfSk7cmV0dXJuIGZ9LGNy ZT0KYXRlRWxlbWVudDpmdW5jdGlvbihhKXtyZXR1cm4gYT0zRD0zRD0zRCJyZWN0Ij90aGlzLnN5 bWJvbChhKTp0YS5wcm90b3R5cGUuPQpjcmVhdGVFbGVtZW50LmNhbGwodGhpcyxhKX0saW52ZXJ0 Q2hpbGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRHRoaXMsZD0zRGIuc3Q9CnlsZSxlPTNEYS50YWdO YW1lPTNEPTNEPTNEIklNRyImJmEuc3R5bGU7RyhhLHtmbGlwOiJ4IixsZWZ0OnooZC53aWR0aCkt KGU/ej0KKGUudG9wKToKLTEpLHRvcDp6KGQuaGVpZ2h0KS0oZT96KGUubGVmdCk6MSkscm90YXRp b246LTkwfSk7cChhLmNoaWxkTm9kZXMsZnVuY3Rpb24oPQpiKXtjLmludmVydENoaWxkKGIsYSl9 KX0sc3ltYm9sczp7YXJjOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9M0RlLnN0YXJ0LGc9Cj0z RGUuZW5kLGg9M0RlLnJ8fGN8fGQsYz0zRGUuaW5uZXJSLGQ9M0RaKGYpLGk9M0RlYShmKSxqPTNE WihnKSxrPTNEZWEoZyk7aT0KZihnLWY9M0Q9M0Q9M0QwKXJldHVyblsieCJdO2Y9M0RbIndhIixh LWgsYi1oLGEraCxiK2gsYStoKmQsYitoKmksYStoKmosYitoPQoqa107ZS5vcGVuJiYhYyYmZi5w dXNoKCJlIiwiTSIsYSxiKTtmLnB1c2goImF0IixhLWMsYi1jLGErYyxiK2MsYStjKmosYitjKms9 CixhK2MqZCxiK2MqaSwieCIsImUiKTtmLmlzQXJjPTNEITA7cmV0dXJuIGZ9LGNpcmNsZTpmdW5j dGlvbihhLGIsYyxkLGUpe2UmJj0KKGM9M0RkPTNEMiplLnIpO2UmJmUuaXNDaXJjbGUmJihhLT0z RGMvMixiLT0zRGQvMik7cmV0dXJuWyJ3YSIsYSxiLGErYyxiK2QsPQphK2MsYitkLzIsYSsKLWMs YitkLzIsImUiXX0scmVjdDpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiB0YS5wcm90b3R5cGUu c3ltYm9sc1shcihlKXx8PQohZS5yPyJzcXVhcmUiOiJjYWxsb3V0Il0uY2FsbCgwLGEsYixjLGQs ZSl9fX07Ui5WTUxSZW5kZXJlcj0zRFg9M0RmdW5jdGlvbig9Cil7dGhpcy5pbml0LmFwcGx5KHRo aXMsYXJndW1lbnRzKX07WC5wcm90b3R5cGU9M0R3KHRhLnByb3RvdHlwZSxnYSk7WmE9M0RYfT0K dGEucHJvdG90eXBlLm1lYXN1cmVTcGFuV2lkdGg9M0RmdW5jdGlvbihhLGIpe3ZhciBjPTNEeS5j cmVhdGVFbGVtZW50KCJzcGFuPQoiKSxkO2Q9M0R5LmNyZWF0ZVRleHROb2RlKGEpO2MuYXBwZW5k Q2hpbGQoZCk7RyhjLGIpO3RoaXMuYm94LmFwcGVuZENoaWxkKGM9Cik7ZD0zRGMub2Zmc2V0V2lk dGg7UGEoYyk7cmV0dXJuIGR9O3ZhciBMYjtpZihmYSlSLkNhblZHUmVuZGVyZXI9M0RYPTNEZnVu Yz0KdGlvbigpe3hhPTNEImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwifSxYLnByb3RvdHlw ZS5zeW1ib2xzPTNEe30sTGI9M0RmPQp1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBhPTNECi1i Lmxlbmd0aCxkO2ZvcihkPTNEMDtkPGE7ZCsrKWJbZF0oKTtiPTNEW119dmFyIGI9M0RbXTtyZXR1 cm57cHVzaDpmdW5jdGlvbj0KKGMsZCl7Yi5sZW5ndGg9M0Q9M0Q9M0QwJiZRYihkLGEpO2IucHVz aChjKX19fSgpLFphPTNEWDtTYS5wcm90b3R5cGU9M0R7YWRkPQpMYWJlbDpmdW5jdGlvbigpe3Zh ciBhPTNEdGhpcy5heGlzLGI9M0RhLm9wdGlvbnMsYz0zRGEuY2hhcnQsZD0zRGEuaG9yaXosZT0K PTNEYS5jYXRlZ29yaWVzLGY9M0RhLm5hbWVzLGc9M0R0aGlzLnBvcyxoPTNEYi5sYWJlbHMsaT0z RGEudGlja1Bvc2l0aW9ucyxkPQo9M0RkJiZlJiYhaC5zdGVwJiYhaC5zdGFnZ2VyTGluZXMmJiFo LnJvdGF0aW9uJiZjLnBsb3RXaWR0aC9pLmxlbmd0aHx8IWQmJig9CmMubWFyZ2luWzNdfHxjLmNo YXJ0V2lkdGgqMC4zMyksaj0zRGc9M0Q9M0Q9M0RpWzBdLGs9M0RnPTNEPTNEPTNEaVtpLmxlbmd0 aD0KLTFdLGwsZj0zRGU/bShlW2ddLGZbZ10sZyk6ZyxlPTNEdGhpcy5sYWJlbCxvPTNEaS5pbmZv O2EuaXNEYXRldGltZUF4aXMmJm8mPQomKGw9M0RiLmRhdGVUaW1lTGFiZWxGb3JtYXRzW28uaGln aGVyUmFua3NbZ118fAotby51bml0TmFtZV0pO3RoaXMuaXNGaXJzdD0zRGo7dGhpcy5pc0xhc3Q9 M0RrO2I9M0RhLmxhYmVsRm9ybWF0dGVyLmNhbGwoe2E9CnhpczphLGNoYXJ0OmMsaXNGaXJzdDpq LGlzTGFzdDprLGRhdGVUaW1lTGFiZWxGb3JtYXQ6bCx2YWx1ZTphLmlzTG9nP2RhKGlhKD0KZikp OmZ9KTtnPTNEZCYme3dpZHRoOnYoMSx1KGQtMiooaC5wYWRkaW5nfHwxMCkpKSsicHgifTtnPTNE cShnLGguc3R5bGUpO2lmPQoocihlKSllJiZlLmF0dHIoe3RleHQ6Yn0pLmNzcyhnKTtlbHNle2w9 M0R7YWxpZ246YS5sYWJlbEFsaWdufTtpZihoYShoLnJvdGE9CnRpb24pKWwucm90YXRpb249M0Ro LnJvdGF0aW9uO2lmKGQmJmguZWxsaXBzaXMpbC5fY2xpcEhlaWdodD0zRGEubGVuL2kubGVuZz0K dGg7dGhpcy5sYWJlbD0zRHIoYikmJmguZW5hYmxlZD9jLnJlbmRlcmVyLnRleHQoYiwwLDAsaC51 c2VIVE1MKS5hdHRyKGwpLmNzPQpzKGcpLmFkZChhLmxhYmVsR3JvdXApOm51bGx9fSxnZXRMYWJl bFNpemU6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMubGFiZWwsCi1iPTNEdGhpcy5heGlzO3JldHVy biBhP2EuZ2V0QkJveCgpW2IuaG9yaXo/ImhlaWdodCI6IndpZHRoIl06MH0sZ2V0TGFiZWxTaT0K ZGVzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLmxhYmVsLmdldEJCb3goKSxiPTNEdGhpcy5heGlz LGM9M0RiLmhvcml6LGQ9M0RiPQoub3B0aW9ucy5sYWJlbHMsYT0zRGM/YS53aWR0aDphLmhlaWdo dCxiPTNEYz9kLngtYSp7bGVmdDowLGNlbnRlcjowLjUscmlnaHQ9CjoxfVtiLmxhYmVsQWxpZ25d OjA7cmV0dXJuW2IsYz9hK2I6YV19LGhhbmRsZU92ZXJmbG93OmZ1bmN0aW9uKGEsYil7dmFyIGM9 Cj0zRCEwLGQ9M0R0aGlzLmF4aXMsZT0zRHRoaXMuaXNGaXJzdCxmPTNEdGhpcy5pc0xhc3QsZz0z RGQuaG9yaXo/Yi54OmIueSxoPQo9M0RkLnJldmVyc2VkLGk9M0RkLnRpY2tQb3NpdGlvbnMsaj0z RHRoaXMuZ2V0TGFiZWxTaWRlcygpLGs9M0RqWzBdLGo9M0RqWzE9Cl0sbCxvLG4scz0zRHRoaXMu bGFiZWwubGluZXx8MDtsPTNEZC5sYWJlbEVkZ2U7bz0zRGQuanVzdGlmeUxhYmVscyYmKGV8fGYp Oz0KbFtzXT0zRD0zRD0zRHR8fGcraz5sW3NdP2xbc109M0QKLWcrajpvfHwoYz0zRCExKTtpZihv KXtsPTNEKG89M0RkLmp1c3RpZnlUb1Bsb3QpP2QucG9zOjA7bz0zRG8/bCtkLmxlbjpkLmNoPQph cnQuY2hhcnRXaWR0aDtkbyBhKz0zRGU/MTotMSxuPTNEZC50aWNrc1tpW2FdXTt3aGlsZShpW2Fd JiYoIW58fG4ubGFiZWwubGk9Cm5lIT0zRD0zRHMpKTtkPTNEbiYmbi5sYWJlbC54eSYmbi5sYWJl bC54eS54K24uZ2V0TGFiZWxTaWRlcygpW2U/MDoxXTtlJiYhaD0KfHxmJiZoP2crazxsJiYoZz0z RGwtayxuJiZnK2o+ZCYmKGM9M0QhMSkpOmcraj5vJiYoZz0zRG8taixuJiZnK2s8ZCYmKGM9M0Qh PQoxKSk7Yi54PTNEZ31yZXR1cm4gY30sZ2V0UG9zaXRpb246ZnVuY3Rpb24oYSxiLGMsZCl7dmFy IGU9M0R0aGlzLmF4aXMsZj0zRGU9Ci5jaGFydCxnPTNEZCYmZi5vbGRDaGFydEhlaWdodHx8Zi5j aGFydEhlaWdodDtyZXR1cm57eDphP2UudHJhbnNsYXRlKGIrYyxudT0KbGwsbnVsbCxkKStlLnRy YW5zQjplLmxlZnQrZS5vZmZzZXQrKGUub3Bwb3NpdGU/KGQmJmYub2xkQ2hhcnRXaWR0aHx8Zi5j aGFyPQp0V2lkdGgpLWUucmlnaHQtCi1lLmxlZnQ6MCkseTphP2ctZS5ib3R0b20rZS5vZmZzZXQt KGUub3Bwb3NpdGU/ZS5oZWlnaHQ6MCk6Zy1lLnRyYW5zbGF0ZShiKz0KYyxudWxsLG51bGwsZCkt ZS50cmFuc0J9fSxnZXRMYWJlbFBvc2l0aW9uOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFy IGk9Cj0zRHRoaXMuYXhpcyxqPTNEaS50cmFuc0Esaz0zRGkucmV2ZXJzZWQsbD0zRGkuc3RhZ2dl ckxpbmVzLG89M0RpLmNoYXJ0LnJlbj0KZGVyZXIuZm9udE1ldHJpY3MoZS5zdHlsZS5mb250U2l6 ZSkuYixuPTNEZS5yb3RhdGlvbixhPTNEYStlLngtKGYmJmQ/ZipqKihrPQo/LTE6MSk6MCksYj0z RGIrZS55LShmJiYhZD9mKmoqKGs/MTotMSk6MCk7biYmaS5zaWRlPTNEPTNEPTNEMiYmKGItPTNE by1vKlo9CihuKkNhKSk7IXIoZS55KSYmIW4mJihiKz0zRG8tYy5nZXRCQm94KCkuaGVpZ2h0LzIp O2lmKGwpYy5saW5lPTNEZy8oaHx8MSklbD0KLGIrPTNEYy5saW5lKihpLmxhYmVsT2Zmc2V0L2wp O3JldHVybnt4OmEseTpifX0sZ2V0TWFya1BhdGg6ZnVuY3Rpb24oYSxiLGMsPQpkLGUsZil7cmV0 dXJuIGYuY3Jpc3BMaW5lKFsiTSIsCi1hLGIsIkwiLGErKGU/MDotYyksYisoZT9jOjApXSxkKX0s cmVuZGVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0zRHRoaXMuYXhpcz0KLGU9M0RkLm9wdGlvbnMs Zj0zRGQuY2hhcnQucmVuZGVyZXIsZz0zRGQuaG9yaXosaD0zRHRoaXMudHlwZSxpPTNEdGhpcy5s YWJlPQpsLGo9M0R0aGlzLnBvcyxrPTNEZS5sYWJlbHMsbD0zRHRoaXMuZ3JpZExpbmUsbz0zRGg/ aCsiR3JpZCI6ImdyaWQiLG49M0RoP2g9CisiVGljayI6InRpY2siLHM9M0RlW28rIkxpbmVXaWR0 aCJdLHA9M0RlW28rIkxpbmVDb2xvciJdLEo9M0RlW28rIkxpbmVEYXNoUz0KdHlsZSJdLEw9M0Rl W24rIkxlbmd0aCJdLG89M0RlW24rIldpZHRoIl18fDAseD0zRGVbbisiQ29sb3IiXSxyPTNEZVtu KyJQb3NpPQp0aW9uIl0sbj0zRHRoaXMubWFyayx2PTNEay5zdGVwLHE9M0QhMCx1PTNEZC50aWNr bWFya09mZnNldCx3PTNEdGhpcy5nZXRQb3M9Cml0aW9uKGcsaix1LGIpLHk9M0R3Lngsdz0zRHcu eSxCPTNEZyYmeT0zRD0zRD0zRGQucG9zK2QubGVufHwhZyYmdz0zRD0zRD0zRD0KZC5wb3M/LTE6 MTt0aGlzLmlzQWN0aXZlPTNEITA7aWYocyl7aj0zRGQuZ2V0UGxvdExpbmVQYXRoKGorCi11LHMq QixiLCEwKTtpZihsPTNEPTNEPTNEdCl7bD0zRHtzdHJva2U6cCwic3Ryb2tlLXdpZHRoIjpzfTtp ZihKKWwuZGFzaHN0eT0KbGU9M0RKO2lmKCFoKWwuekluZGV4PTNEMTtpZihiKWwub3BhY2l0eT0z RDA7dGhpcy5ncmlkTGluZT0zRGw9M0RzP2YucGF0aChqPQopLmF0dHIobCkuYWRkKGQuZ3JpZEdy b3VwKTpudWxsfWlmKCFiJiZsJiZqKWxbdGhpcy5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXSg9Cntk Omosb3BhY2l0eTpjfSl9aWYobyYmTClyPTNEPTNEPTNEImluc2lkZSImJihMPTNELUwpLGQub3Bw b3NpdGUmJihMPTNELUwpLD0KaD0zRHRoaXMuZ2V0TWFya1BhdGgoeSx3LEwsbypCLGcsZiksbj9u LmFuaW1hdGUoe2Q6aCxvcGFjaXR5OmN9KTp0aGlzLm1hcms9Cj0zRGYucGF0aChoKS5hdHRyKHtz dHJva2U6eCwic3Ryb2tlLXdpZHRoIjpvLG9wYWNpdHk6Y30pLmFkZChkLmF4aXNHcm91cCk7aT0K ZihpJiYhaXNOYU4oeSkpaS54eT0zRHc9M0R0aGlzLmdldExhYmVsUG9zaXRpb24oeSx3LGksZyxr LHUsYSx2KSx0aGlzLmlzRmlyPQpzdCYmIXRoaXMuaXNMYXN0JiYKLSFtKGUuc2hvd0ZpcnN0TGFi ZWwsMSl8fHRoaXMuaXNMYXN0JiYhdGhpcy5pc0ZpcnN0JiYhbShlLnNob3dMYXN0TGFiZWwsMSk/ PQpxPTNEITE6IWQuaXNSYWRpYWwmJiFrLnN0ZXAmJiFrLnJvdGF0aW9uJiYhYiYmYyE9M0Q9M0Qw JiYocT0zRHRoaXMuaGFuZGxlT3Y9CmVyZmxvdyhhLHcpKSx2JiZhJXYmJihxPTNEITEpLHEmJiFp c05hTih3LnkpPyh3Lm9wYWNpdHk9M0RjLGlbdGhpcy5pc05ldz8iYT0KdHRyIjoiYW5pbWF0ZSJd KHcpLHRoaXMuaXNOZXc9M0QhMSk6aS5hdHRyKCJ5IiwtOTk5OSl9LGRlc3Ryb3k6ZnVuY3Rpb24o KXtPPQphKHRoaXMsdGhpcy5heGlzKX19O1IuUGxvdExpbmVPckJhbmQ9M0RmdW5jdGlvbihhLGIp e3RoaXMuYXhpcz0zRGE7aWYoYil0aGk9CnMub3B0aW9ucz0zRGIsdGhpcy5pZD0zRGIuaWR9O1Iu UGxvdExpbmVPckJhbmQucHJvdG90eXBlPTNEe3JlbmRlcjpmdW5jdGlvbj0KKCl7dmFyIGE9M0R0 aGlzLGI9M0RhLmF4aXMsYz0zRGIuaG9yaXosZD0zRChiLnBvaW50UmFuZ2V8fDApLzIsZT0zRGEu b3B0aW9uPQpzLGY9M0RlLmxhYmVsLAotZz0zRGEubGFiZWwsaD0zRGUud2lkdGgsaT0zRGUudG8s aj0zRGUuZnJvbSxrPTNEcihqKSYmcihpKSxsPTNEZS52YWx1ZSxvPQo9M0RlLmRhc2hTdHlsZSxu PTNEYS5zdmdFbGVtLHM9M0RbXSxwLEo9M0RlLmNvbG9yLEw9M0RlLnpJbmRleCx4PTNEZS5ldmVu dHM9CixxPTNEe30sdD0zRGIuY2hhcnQucmVuZGVyZXI7Yi5pc0xvZyYmKGo9M0R6YShqKSxpPTNE emEoaSksbD0zRHphKGwpKTtpZihoKT0Ke2lmKHM9M0RiLmdldFBsb3RMaW5lUGF0aChsLGgpLHE9 M0R7c3Ryb2tlOkosInN0cm9rZS13aWR0aCI6aH0sbylxLmRhc2hzdHlsPQplPTNEb31lbHNlIGlm KGspe2o9M0R2KGosYi5taW4tZCk7aT0zREMoaSxiLm1heCtkKTtzPTNEYi5nZXRQbG90QmFuZFBh dGgoaiw9CmksZSk7aWYoSilxLmZpbGw9M0RKO2lmKGUuYm9yZGVyV2lkdGgpcS5zdHJva2U9M0Rl LmJvcmRlckNvbG9yLHFbInN0cm9rZS13aT0KZHRoIl09M0RlLmJvcmRlcldpZHRofWVsc2UgcmV0 dXJuO2lmKHIoTCkpcS56SW5kZXg9M0RMO2lmKG4paWYocyluLmFuaW1hdGUoPQp7ZDpzfSxudWxs LG4ub25HZXRQYXRoKTtlbHNle2lmKG4uaGlkZSgpLAotbi5vbkdldFBhdGg9M0RmdW5jdGlvbigp e24uc2hvdygpfSxnKWEubGFiZWw9M0RnPTNEZy5kZXN0cm95KCl9ZWxzZSBpZihzJiY9CnMubGVu Z3RoJiYoYS5zdmdFbGVtPTNEbj0zRHQucGF0aChzKS5hdHRyKHEpLmFkZCgpLHgpKWZvcihwIGlu IGQ9M0RmdW5jdGlvbj0KKGIpe24ub24oYixmdW5jdGlvbihjKXt4W2JdLmFwcGx5KGEsW2NdKX0p fSx4KWQocCk7aWYoZiYmcihmLnRleHQpJiZzJiZzLmxlPQpuZ3RoJiZiLndpZHRoPjAmJmIuaGVp Z2h0PjApe2Y9M0R3KHthbGlnbjpjJiZrJiYiY2VudGVyIix4OmM/IWsmJjQ6MTAsdmVydGk9CmNh bEFsaWduOiFjJiZrJiYibWlkZGxlIix5OmM/az8xNjoxMDprPzY6LTQscm90YXRpb246YyYmIWsm JjkwfSxmKTtpZighZyl7cT0KPTNEe2FsaWduOmYudGV4dEFsaWdufHxmLmFsaWduLHJvdGF0aW9u OmYucm90YXRpb259O2lmKHIoTCkpcS56SW5kZXg9M0RMO2EuPQpsYWJlbD0zRGc9M0R0LnRleHQo Zi50ZXh0LDAsMCxmLnVzZUhUTUwpLmF0dHIocSkuY3NzKGYuc3R5bGUpLmFkZCgpfWI9M0Rbc1s9 CjFdLAotc1s0XSxtKHNbNl0sc1sxXSldO3M9M0Rbc1syXSxzWzVdLG0oc1s3XSxzWzJdKV07Yz0z RE5hKGIpO2s9M0ROYShzKTtnLmFsaWc9Cm4oZiwhMSx7eDpjLHk6ayx3aWR0aDpCYShiKS1jLGhl aWdodDpCYShzKS1rfSk7Zy5zaG93KCl9ZWxzZSBnJiZnLmhpZGUoKTtyZT0KdHVybiBhfSxkZXN0 cm95OmZ1bmN0aW9uKCl7amEodGhpcy5heGlzLnBsb3RMaW5lc0FuZEJhbmRzLHRoaXMpO2RlbGV0 ZSB0aGlzPQouYXhpcztPYSh0aGlzKX19O2xhLnByb3RvdHlwZT0zRHtkZWZhdWx0T3B0aW9uczp7 ZGF0ZVRpbWVMYWJlbEZvcm1hdHM6e21pbGw9CmlzZWNvbmQ6IiVIOiVNOiVTLiVMIixzZWNvbmQ6 IiVIOiVNOiVTIixtaW51dGU6IiVIOiVNIixob3VyOiIlSDolTSIsZGF5OiIlZT0KLiAlYiIsd2Vl azoiJWUuICViIixtb250aDoiJWIgJyV5Iix5ZWFyOiIlWSJ9LGVuZE9uVGljazohMSxncmlkTGlu ZUNvbG9yOiIjPQpDMEMwQzAiLGxhYmVsczpOLGxpbmVDb2xvcjoiI0MwRDBFMCIsbGluZVdpZHRo OjEsbWluUGFkZGluZzowLjAxLAotbWF4UGFkZGluZzowLjAxLG1pbm9yR3JpZExpbmVDb2xvcjoi I0UwRTBFMCIsbWlub3JHcmlkTGluZVdpZHRoOjEsbWlub3JUaWM9CmtDb2xvcjoiI0EwQTBBMCIs bWlub3JUaWNrTGVuZ3RoOjIsbWlub3JUaWNrUG9zaXRpb246Im91dHNpZGUiLHN0YXJ0T2ZXZWVr Oj0KMSxzdGFydE9uVGljazohMSx0aWNrQ29sb3I6IiNDMEQwRTAiLHRpY2tMZW5ndGg6MTAsdGlj a21hcmtQbGFjZW1lbnQ6ImJldHdlPQplbiIsdGlja1BpeGVsSW50ZXJ2YWw6MTAwLHRpY2tQb3Np dGlvbjoib3V0c2lkZSIsdGlja1dpZHRoOjEsdGl0bGU6e2FsaWduOiI9Cm1pZGRsZSIsc3R5bGU6 e2NvbG9yOiIjNzA3MDcwIn19LHR5cGU6ImxpbmVhciJ9LGRlZmF1bHRZQXhpc09wdGlvbnM6e2Vu ZE9uVD0KaWNrOiEwLGdyaWRMaW5lV2lkdGg6MSx0aWNrUGl4ZWxJbnRlcnZhbDo3MixzaG93TGFz dExhYmVsOiEwLGxhYmVsczp7eDotOCx5PQo6M30sbGluZVdpZHRoOjAsbWF4UGFkZGluZzowLjA1 LG1pblBhZGRpbmc6MC4wNSxzdGFydE9uVGljazohMCwKLXRpY2tXaWR0aDowLHRpdGxlOntyb3Rh dGlvbjoyNzAsdGV4dDoiVmFsdWVzIn0sc3RhY2tMYWJlbHM6e2VuYWJsZWQ6ITEsZm9yPQptYXR0 ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gR2EodGhpcy50b3RhbCwtMSl9LHN0eWxlOk4uc3R5bGV9fSxk ZWZhdWx0TGVmdEF4aXM9Ck9wdGlvbnM6e2xhYmVsczp7eDotMTUseTpudWxsfSx0aXRsZTp7cm90 YXRpb246MjcwfX0sZGVmYXVsdFJpZ2h0QXhpc09wdGlvbj0Kczp7bGFiZWxzOnt4OjE1LHk6bnVs bH0sdGl0bGU6e3JvdGF0aW9uOjkwfX0sZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zOntsYWJlPQps czp7eDowLHk6MjB9LHRpdGxlOntyb3RhdGlvbjowfX0sZGVmYXVsdFRvcEF4aXNPcHRpb25zOnts YWJlbHM6e3g6MCx5Oi0xNX09Cix0aXRsZTp7cm90YXRpb246MH19LGluaXQ6ZnVuY3Rpb24oYSxi KXt2YXIgYz0zRGIuaXNYO3RoaXMuaG9yaXo9M0RhLmludmVydD0KZWQ/IWM6Yzt0aGlzLmNvbGw9 M0QodGhpcy5pc1hBeGlzPTNEYyk/InhBeGlzIjoieUF4aXMiO3RoaXMub3Bwb3NpdGU9M0QKLWIu b3Bwb3NpdGU7dGhpcy5zaWRlPTNEYi5zaWRlfHwodGhpcy5ob3Jpej90aGlzLm9wcG9zaXRlPzA6 Mjp0aGlzLm9wcG9zaXRlPQo/MTozKTt0aGlzLnNldE9wdGlvbnMoYik7dmFyIGQ9M0R0aGlzLm9w dGlvbnMsZT0zRGQudHlwZTt0aGlzLmxhYmVsRm9ybWF0dGU9CnI9M0RkLmxhYmVscy5mb3JtYXR0 ZXJ8fHRoaXMuZGVmYXVsdExhYmVsRm9ybWF0dGVyO3RoaXMudXNlck9wdGlvbnM9M0RiO3RoaT0K cy5taW5QaXhlbFBhZGRpbmc9M0QwO3RoaXMuY2hhcnQ9M0RhO3RoaXMucmV2ZXJzZWQ9M0RkLnJl dmVyc2VkO3RoaXMuem9vbUVuPQphYmxlZD0zRGQuem9vbUVuYWJsZWQhPTNEPTNEITE7dGhpcy5j YXRlZ29yaWVzPTNEZC5jYXRlZ29yaWVzfHxlPTNEPTNEPTNEImM9CmF0ZWdvcnkiO3RoaXMubmFt ZXM9M0RbXTt0aGlzLmlzTG9nPTNEZT0zRD0zRD0zRCJsb2dhcml0aG1pYyI7dGhpcy5pc0RhdGV0 aT0KbWVBeGlzPTNEZT0zRD0zRD0zRCJkYXRldGltZSI7dGhpcy5pc0xpbmtlZD0zRHIoZC5saW5r ZWRUbyk7dGhpcy50aWNrbWFya09mPQpmc2V0PTNEdGhpcy5jYXRlZ29yaWVzJiZkLnRpY2ttYXJr UGxhY2VtZW50PTNEPTNEPTNECi0iYmV0d2VlbiI/MC41OjA7dGhpcy50aWNrcz0zRHt9O3RoaXMu bGFiZWxFZGdlPTNEW107dGhpcy5taW5vclRpY2tzPTNEe307dD0KaGlzLnBsb3RMaW5lc0FuZEJh bmRzPTNEW107dGhpcy5hbHRlcm5hdGVCYW5kcz0zRHt9O3RoaXMubGVuPTNEMDt0aGlzLm1pblJh PQpuZ2U9M0R0aGlzLnVzZXJNaW5SYW5nZT0zRGQubWluUmFuZ2V8fGQubWF4Wm9vbTt0aGlzLnJh bmdlPTNEZC5yYW5nZTt0aGlzLm89CmZmc2V0PTNEZC5vZmZzZXR8fDA7dGhpcy5zdGFja3M9M0R7 fTt0aGlzLm9sZFN0YWNrcz0zRHt9O3RoaXMubWluPTNEdGhpcy5tYT0KeD0zRG51bGw7dGhpcy5j cm9zc2hhaXI9M0RtKGQuY3Jvc3NoYWlyLHFhKGEub3B0aW9ucy50b29sdGlwLmNyb3NzaGFpcnMp W2M/PQowOjFdLCExKTt2YXIgZixkPTNEdGhpcy5vcHRpb25zLmV2ZW50cztEYSh0aGlzLGEuYXhl cyk9M0Q9M0Q9M0QtMSYmKGMmJiF0aGk9CnMuaXNDb2xvckF4aXM/YS5heGVzLnNwbGljZShhLnhB eGlzLmxlbmd0aCwwLHRoaXMpOmEuYXhlcy5wdXNoKHRoaXMpLGFbdGhpcz0KLmNvbGxdLnB1c2go dGhpcykpOwotdGhpcy5zZXJpZXM9M0R0aGlzLnNlcmllc3x8W107aWYoYS5pbnZlcnRlZCYmYyYm dGhpcy5yZXZlcnNlZD0zRD0zRD0zRHQpdGg9CmlzLnJldmVyc2VkPTNEITA7dGhpcy5yZW1vdmVQ bG90TGluZT0zRHRoaXMucmVtb3ZlUGxvdEJhbmQ9M0R0aGlzLnJlbW92ZVBsbz0KdEJhbmRPckxp bmU7Zm9yKGYgaW4gZClLKHRoaXMsZixkW2ZdKTtpZih0aGlzLmlzTG9nKXRoaXMudmFsMmxpbj0z RHphLHRoaXMuPQpsaW4ydmFsPTNEaWF9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dGhpcy5vcHRp b25zPTNEdyh0aGlzLmRlZmF1bHRPcHRpb25zLHQ9Cmhpcy5pc1hBeGlzP3t9OnRoaXMuZGVmYXVs dFlBeGlzT3B0aW9ucyxbdGhpcy5kZWZhdWx0VG9wQXhpc09wdGlvbnMsdGhpcy5kZT0KZmF1bHRS aWdodEF4aXNPcHRpb25zLHRoaXMuZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zLHRoaXMuZGVmYXVs dExlZnRBeGlzT3B0PQppb25zXVt0aGlzLnNpZGVdLHcoRVt0aGlzLmNvbGxdLGEpKX0sZGVmYXVs dExhYmVsRm9ybWF0dGVyOmZ1bmN0aW9uKCl7dmFyIGE9Cj0zRAotdGhpcy5heGlzLGI9M0R0aGlz LnZhbHVlLGM9M0RhLmNhdGVnb3JpZXMsZD0zRHRoaXMuZGF0ZVRpbWVMYWJlbEZvcm1hdCxlPQo9 M0RFLmxhbmcubnVtZXJpY1N5bWJvbHMsZj0zRGUmJmUubGVuZ3RoLGcsaD0zRGEub3B0aW9ucy5s YWJlbHMuZm9ybWF0LGE9M0Q9CmEuaXNMb2c/YjphLnRpY2tJbnRlcnZhbDtpZihoKWc9M0RJYSho LHRoaXMpO2Vsc2UgaWYoYylnPTNEYjtlbHNlIGlmKGQpZz0zRD0KY2IoZCxiKTtlbHNlIGlmKGYm JmE+PTNEMUUzKWZvcig7Zi0tJiZnPTNEPTNEPTNEdDspYz0zRE1hdGgucG93KDFFMyxmKzEpLGE+ PQo9M0RjJiZlW2ZdIT0zRD0zRG51bGwmJihnPTNER2EoYi9jLC0xKStlW2ZdKTtnPTNEPTNEPTNE dCYmKGc9M0RNKGIpPj0zRDFFND89CkdhKGIsMCk6R2EoYiwtMSx0LCIiKSk7cmV0dXJuIGd9LGdl dFNlcmllc0V4dHJlbWVzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLD0KYj0zRGEuY2hhcnQ7YS5o YXNWaXNpYmxlU2VyaWVzPTNEITE7YS5kYXRhTWluPTNEYS5kYXRhTWF4PTNEbnVsbDthLmJ1aWxk U3RhPQpja3MmJmEuYnVpbGRTdGFja3MoKTtwKGEuc2VyaWVzLGZ1bmN0aW9uKGMpe2lmKGMudmlz aWJsZXx8Ci0hYi5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyl7dmFyIGQ7ZD0zRGMu b3B0aW9ucy50aHJlc2hvbGQ7dmFyIGU7YT0KLmhhc1Zpc2libGVTZXJpZXM9M0QhMDthLmlzTG9n JiZkPD0zRDAmJihkPTNEbnVsbCk7aWYoYS5pc1hBeGlzKXtpZihkPTNEYy54PQpEYXRhLGQubGVu Z3RoKWEuZGF0YU1pbj0zREMobShhLmRhdGFNaW4sZFswXSksTmEoZCkpLGEuZGF0YU1heD0zRHYo bShhLmRhdGE9Ck1heCxkWzBdKSxCYShkKSl9ZWxzZXtjLmdldEV4dHJlbWVzKCk7ZT0zRGMuZGF0 YU1heDtjPTNEYy5kYXRhTWluO2lmKHIoYykmJj0KcihlKSlhLmRhdGFNaW49M0RDKG0oYS5kYXRh TWluLGMpLGMpLGEuZGF0YU1heD0zRHYobShhLmRhdGFNYXgsZSksZSk7aWYocihkPQopKWlmKGEu ZGF0YU1pbj49M0RkKWEuZGF0YU1pbj0zRGQsYS5pZ25vcmVNaW5QYWRkaW5nPTNEITA7ZWxzZSBp ZihhLmRhdGFNYXg9CjxkKWEuZGF0YU1heD0zRGQsYS5pZ25vcmVNYXhQYWRkaW5nPTNEITB9fX0p fSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGMsZCxlLD0KZil7dmFyIGc9M0QKLTEsaD0zRDAsaT0z RGQ/dGhpcy5vbGRUcmFuc0E6dGhpcy50cmFuc0EsZD0zRGQ/dGhpcy5vbGRNaW46dGhpcy5taW4s aj0zRHRoPQppcy5taW5QaXhlbFBhZGRpbmcsZT0zRCh0aGlzLm9wdGlvbnMub3JkaW5hbHx8dGhp cy5pc0xvZyYmZSkmJnRoaXMubGluMnZhbDs9CmlmKCFpKWk9M0R0aGlzLnRyYW5zQTtpZihjKWcq PTNELTEsaD0zRHRoaXMubGVuO3RoaXMucmV2ZXJzZWQmJihnKj0zRC0xLGgtPQo9M0RnKih0aGlz LnNlY3Rvcnx8dGhpcy5sZW4pKTtiPyhhPTNEYSpnK2gsYS09M0RqLGE9M0RhL2krZCxlJiYoYT0z RHRoaXMubGk9Cm4ydmFsKGEpKSk6KGUmJihhPTNEdGhpcy52YWwybGluKGEpKSxmPTNEPTNEPTNE ImJldHdlZW4iJiYoZj0zRDAuNSksYT0zRGcqKD0KYS1kKSppK2grZypqKyhoYShmKT9pKmYqdGhp cy5wb2ludFJhbmdlOjApKTtyZXR1cm4gYX0sdG9QaXhlbHM6ZnVuY3Rpb24oYSxiPQope3JldHVy biB0aGlzLnRyYW5zbGF0ZShhLCExLCF0aGlzLmhvcml6LG51bGwsITApKyhiPzA6dGhpcy5wb3Mp fSx0b1ZhbHVlOmY9CnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy50cmFuc2xhdGUoYS0KLShiPzA6 dGhpcy5wb3MpLCEwLCF0aGlzLmhvcml6LG51bGwsITApfSxnZXRQbG90TGluZVBhdGg6ZnVuY3Rp b24oYSxiLGMsZCxlPQope3ZhciBmPTNEdGhpcy5jaGFydCxnPTNEdGhpcy5sZWZ0LGg9M0R0aGlz LnRvcCxpLGosaz0zRGMmJmYub2xkQ2hhcnRIZWlnaHQ9Cnx8Zi5jaGFydEhlaWdodCxsPTNEYyYm Zi5vbGRDaGFydFdpZHRofHxmLmNoYXJ0V2lkdGgsbztpPTNEdGhpcy50cmFuc0I7ZT0zRD0KbShl LHRoaXMudHJhbnNsYXRlKGEsbnVsbCxudWxsLGMpKTthPTNEYz0zRHUoZStpKTtpPTNEaj0zRHUo ay1lLWkpO2lmKGlzTmFOPQooZSkpbz0zRCEwO2Vsc2UgaWYodGhpcy5ob3Jpeil7aWYoaT0zRGgs aj0zRGstdGhpcy5ib3R0b20sYTxnfHxhPmcrdGhpcy53aWQ9CnRoKW89M0QhMH1lbHNlIGlmKGE9 M0RnLGM9M0RsLXRoaXMucmlnaHQsaTxofHxpPmgrdGhpcy5oZWlnaHQpbz0zRCEwO3JldHVybj0K IG8mJiFkP251bGw6Zi5yZW5kZXJlci5jcmlzcExpbmUoWyJNIixhLGksIkwiLGMsal0sYnx8MSl9 LGdldExpbmVhclRpY2tQb3NpPQp0aW9uczpmdW5jdGlvbihhLAotYixjKXt2YXIgZCxlPTNEZGEo VChiL2EpKmEpLGY9M0RkYShLYShjL2EpKmEpLGc9M0RbXTtpZihiPTNEPTNEPTNEYyYmaGEoYik9 CilyZXR1cm5bYl07Zm9yKGI9M0RlO2I8PTNEZjspe2cucHVzaChiKTtiPTNEZGEoYithKTtpZihi PTNEPTNEPTNEZClicmVhaztkPQo9M0RifXJldHVybiBnfSxnZXRNaW5vclRpY2tQb3NpdGlvbnM6 ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMub3B0aW9ucyxiPTNEdGg9CmlzLnRpY2tQb3NpdGlvbnMs Yz0zRHRoaXMubWlub3JUaWNrSW50ZXJ2YWwsZD0zRFtdLGU7aWYodGhpcy5pc0xvZyl7ZT0zRGIu bD0KZW5ndGg7Zm9yKGE9M0QxO2E8ZTthKyspZD0zRGQuY29uY2F0KHRoaXMuZ2V0TG9nVGlja1Bv c2l0aW9ucyhjLGJbYS0xXSxiW2FdPQosITApKX1lbHNlIGlmKHRoaXMuaXNEYXRldGltZUF4aXMm JmEubWlub3JUaWNrSW50ZXJ2YWw9M0Q9M0Q9M0QiYXV0byIpZD0zRGQ9Ci5jb25jYXQodGhpcy5n ZXRUaW1lVGlja3ModGhpcy5ub3JtYWxpemVUaW1lVGlja0ludGVydmFsKGMpLHRoaXMubWluLHRo aXMubT0KYXgsYS5zdGFydE9mV2VlaykpLGRbMF08dGhpcy5taW4mJgotZC5zaGlmdCgpO2Vsc2Ug Zm9yKGI9M0R0aGlzLm1pbisoYlswXS10aGlzLm1pbiklYztiPD0zRHRoaXMubWF4O2IrPTNEYylk LnA9CnVzaChiKTtyZXR1cm4gZH0sYWRqdXN0Rm9yTWluUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgYT0z RHRoaXMub3B0aW9ucyxiPTNEdGhpcz0KLm1pbixjPTNEdGhpcy5tYXgsZCxlPTNEdGhpcy5kYXRh TWF4LXRoaXMuZGF0YU1pbj49M0R0aGlzLm1pblJhbmdlLGYsZyxoLGksPQpqO2lmKHRoaXMuaXNY QXhpcyYmdGhpcy5taW5SYW5nZT0zRD0zRD0zRHQmJiF0aGlzLmlzTG9nKXIoYS5taW4pfHxyKGEu bWF4KT89CnRoaXMubWluUmFuZ2U9M0RudWxsOihwKHRoaXMuc2VyaWVzLGZ1bmN0aW9uKGEpe2k9 M0RhLnhEYXRhO2ZvcihnPTNEaj0zRGEueD0KSW5jcmVtZW50PzE6aS5sZW5ndGgtMTtnPjA7Zy0t KWlmKGg9M0RpW2ddLWlbZy0xXSxmPTNEPTNEPTNEdHx8aDxmKWY9M0RofSksPQp0aGlzLm1pblJh bmdlPTNEQyhmKjUsdGhpcy5kYXRhTWF4LXRoaXMuZGF0YU1pbikpO2lmKGMtYjx0aGlzLm1pblJh bmdlKXt2YXI9CiBrPTNEdGhpcy5taW5SYW5nZTtkPTNECi0oay1jK2IpLzI7ZD0zRFtiLWQsbShh Lm1pbixiLWQpXTtpZihlKWRbMl09M0R0aGlzLmRhdGFNaW47Yj0zREJhKGQpO2M9M0RbYj0KK2ss bShhLm1heCxiK2spXTtpZihlKWNbMl09M0R0aGlzLmRhdGFNYXg7Yz0zRE5hKGMpO2MtYjxrJiYo ZFswXT0zRGMtayxkWzFdPQo9M0RtKGEubWluLGMtayksYj0zREJhKGQpKX10aGlzLm1pbj0zRGI7 dGhpcy5tYXg9M0RjfSxzZXRBeGlzVHJhbnNsYXRpb246ZnU9Cm5jdGlvbihhKXt2YXIgYj0zRHRo aXMsYz0zRGIubWF4LWIubWluLGQ9M0RiLmF4aXNQb2ludFJhbmdlfHwwLGUsZj0zRDAsZz0zRD0K MCxoPTNEYi5saW5rZWRQYXJlbnQsaT0zRCEhYi5jYXRlZ29yaWVzLGo9M0RiLnRyYW5zQTtpZihi LmlzWEF4aXN8fGl8fGQpaD8oPQpmPTNEaC5taW5Qb2ludE9mZnNldCxnPTNEaC5wb2ludFJhbmdl UGFkZGluZyk6cChiLnNlcmllcyxmdW5jdGlvbihhKXt2YXIgaD0KPTNEaT8xOmIuaXNYQXhpcz9h LnBvaW50UmFuZ2U6Yi5heGlzUG9pbnRSYW5nZXx8MCxqPTNEYS5vcHRpb25zLnBvaW50UGxhY2Vt PQplbnQsbj0zRGEuY2xvc2VzdFBvaW50UmFuZ2U7Ci1oPmMmJihoPTNEMCk7ZD0zRHYoZCxoKTtm PTNEdihmLEZhKGopPzA6aC8yKTtnPTNEdihnLGo9M0Q9M0Q9M0Qib24iPzA6aCk7IT0KYS5ub1No YXJlZFRvb2x0aXAmJnIobikmJihlPTNEcihlKT9DKGUsbik6bil9KSxoPTNEYi5vcmRpbmFsU2xv cGUmJmU/Yi5vcmRpPQpuYWxTbG9wZS9lOjEsYi5taW5Qb2ludE9mZnNldD0zRGYqPTNEaCxiLnBv aW50UmFuZ2VQYWRkaW5nPTNEZyo9M0RoLGIucG9pbnQ9ClJhbmdlPTNEQyhkLGMpLGIuY2xvc2Vz dFBvaW50UmFuZ2U9M0RlO2lmKGEpYi5vbGRUcmFuc0E9M0RqO2IudHJhbnNsYXRpb25TbD0Kb3Bl PTNEYi50cmFuc0E9M0RqPTNEYi5sZW4vKGMrZ3x8MSk7Yi50cmFuc0I9M0RiLmhvcml6P2IubGVm dDpiLmJvdHRvbTtiLm1pPQpuUGl4ZWxQYWRkaW5nPTNEaipmfSxzZXRUaWNrUG9zaXRpb25zOmZ1 bmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEYi5jaGFydCw9CmQ9M0RiLm9wdGlvbnMsZT0zRGIu aXNMb2csZj0zRGIuaXNEYXRldGltZUF4aXMsZz0zRGIuaXNYQXhpcyxoPTNEYi5pc0xpbmtlZD0K LGk9M0RiLm9wdGlvbnMudGlja1Bvc2l0aW9uZXIsaj0zRGQubWF4UGFkZGluZywKLWs9M0RkLm1p blBhZGRpbmcsbD0zRGQudGlja0ludGVydmFsLG89M0RkLm1pblRpY2tJbnRlcnZhbCxuPTNEZC50 aWNrUGl4ZWxJPQpudGVydmFsLHMsJD0zRGIuY2F0ZWdvcmllcztoPyhiLmxpbmtlZFBhcmVudD0z RGNbYi5jb2xsXVtkLmxpbmtlZFRvXSxjPTNEYi49CmxpbmtlZFBhcmVudC5nZXRFeHRyZW1lcygp LGIubWluPTNEbShjLm1pbixjLmRhdGFNaW4pLGIubWF4PTNEbShjLm1heCxjLmRhdD0KYU1heCks ZC50eXBlIT0zRD0zRGIubGlua2VkUGFyZW50Lm9wdGlvbnMudHlwZSYmcmEoMTEsMSkpOihiLm1p bj0zRG0oYi51c2VyPQpNaW4sZC5taW4sYi5kYXRhTWluKSxiLm1heD0zRG0oYi51c2VyTWF4LGQu bWF4LGIuZGF0YU1heCkpO2lmKGUpIWEmJkMoYi5taW49CixtKGIuZGF0YU1pbixiLm1pbikpPD0z RDAmJnJhKDEwLDEpLGIubWluPTNEZGEoemEoYi5taW4pKSxiLm1heD0zRGRhKHphKGIubT0KYXgp KTtpZihiLnJhbmdlJiZyKGIubWF4KSliLnVzZXJNaW49M0RiLm1pbj0zRHYoYi5taW4sYi5tYXgt Yi5yYW5nZSksYi51c2VyPQpNYXg9M0RiLm1heCxiLnJhbmdlPTNECi1udWxsO2IuYmVmb3JlUGFk ZGluZyYmYi5iZWZvcmVQYWRkaW5nKCk7Yi5hZGp1c3RGb3JNaW5SYW5nZSgpO2lmKCEkJiYhYi5h eD0KaXNQb2ludFJhbmdlJiYhYi51c2VQZXJjZW50YWdlJiYhaCYmcihiLm1pbikmJnIoYi5tYXgp JiYoYz0zRGIubWF4LWIubWluKSl7PQppZighcihkLm1pbikmJiFyKGIudXNlck1pbikmJmsmJihi LmRhdGFNaW48MHx8IWIuaWdub3JlTWluUGFkZGluZykpYi5taW4tPQo9M0RjKms7aWYoIXIoZC5t YXgpJiYhcihiLnVzZXJNYXgpJiZqJiYoYi5kYXRhTWF4PjB8fCFiLmlnbm9yZU1heFBhZGRpbmcp KWI9Ci5tYXgrPTNEYypqfWlmKGhhKGQuZmxvb3IpKWIubWluPTNEdihiLm1pbixkLmZsb29yKTtp ZihoYShkLmNlaWxpbmcpKWIubWF4PQo9M0RDKGIubWF4LGQuY2VpbGluZyk7Yi5taW49M0Q9M0Q9 M0RiLm1heHx8Yi5taW49M0Q9M0Q9M0R2b2lkIDB8fGIubWF4PTNEPQo9M0Q9M0R2b2lkIDA/Yi50 aWNrSW50ZXJ2YWw9M0QxOmgmJiFsJiZuPTNEPTNEPTNEYi5saW5rZWRQYXJlbnQub3B0aW9ucy50 aWM9CmtQaXhlbEludGVydmFsP2IudGlja0ludGVydmFsPTNECi1iLmxpbmtlZFBhcmVudC50aWNr SW50ZXJ2YWw6KGIudGlja0ludGVydmFsPTNEbShsLCQ/MTooYi5tYXgtYi5taW4pKm4vdihiLj0K bGVuLG4pKSwhcihsKSYmYi5sZW48biYmIXRoaXMuaXNSYWRpYWwmJiF0aGlzLmlzTG9nJiYhJCYm ZC5zdGFydE9uVGljayYmZC5lPQpuZE9uVGljayYmKHM9M0QhMCxiLnRpY2tJbnRlcnZhbC89M0Q0 KSk7ZyYmIWEmJnAoYi5zZXJpZXMsZnVuY3Rpb24oYSl7YS5wcm89CmNlc3NEYXRhKGIubWluIT0z RD0zRGIub2xkTWlufHxiLm1heCE9M0Q9M0RiLm9sZE1heCl9KTtiLnNldEF4aXNUcmFuc2xhdGlv bj0KKCEwKTtiLmJlZm9yZVNldFRpY2tQb3NpdGlvbnMmJmIuYmVmb3JlU2V0VGlja1Bvc2l0aW9u cygpO2lmKGIucG9zdFByb2Nlc3NUPQppY2tJbnRlcnZhbCliLnRpY2tJbnRlcnZhbD0zRGIucG9z dFByb2Nlc3NUaWNrSW50ZXJ2YWwoYi50aWNrSW50ZXJ2YWwpO2lmKGI9Ci5wb2ludFJhbmdlKWIu dGlja0ludGVydmFsPTNEdihiLnBvaW50UmFuZ2UsYi50aWNrSW50ZXJ2YWwpO2lmKCFsJiZiLnRp Y2tJbj0KdGVydmFsPAotbyliLnRpY2tJbnRlcnZhbD0zRG87aWYoIWYmJiFlJiYhbCliLnRpY2tJ bnRlcnZhbD0zRG5iKGIudGlja0ludGVydmFsLG51bGw9CixtYihiLnRpY2tJbnRlcnZhbCksZCk7 Yi5taW5vclRpY2tJbnRlcnZhbD0zRGQubWlub3JUaWNrSW50ZXJ2YWw9M0Q9M0Q9M0QiYT0KdXRv IiYmYi50aWNrSW50ZXJ2YWw/Yi50aWNrSW50ZXJ2YWwvNTpkLm1pbm9yVGlja0ludGVydmFsO2Iu dGlja1Bvc2l0aW9ucz0KPTNEYT0zRGQudGlja1Bvc2l0aW9ucz9bXS5jb25jYXQoZC50aWNrUG9z aXRpb25zKTppJiZpLmFwcGx5KGIsW2IubWluLGIubWF4PQpdKTtpZighYSkhYi5vcmRpbmFsUG9z aXRpb25zJiYoYi5tYXgtYi5taW4pL2IudGlja0ludGVydmFsPnYoMipiLmxlbiwyMDApJiY9CnJh KDE5LCEwKSxhPTNEZj9iLmdldFRpbWVUaWNrcyhiLm5vcm1hbGl6ZVRpbWVUaWNrSW50ZXJ2YWwo Yi50aWNrSW50ZXJ2YWwsZD0KLnVuaXRzKSxiLm1pbixiLm1heCxkLnN0YXJ0T2ZXZWVrLGIub3Jk aW5hbFBvc2l0aW9ucyxiLmNsb3Nlc3RQb2ludFJhbmdlLAotITApOmU/Yi5nZXRMb2dUaWNrUG9z aXRpb25zKGIudGlja0ludGVydmFsLGIubWluLGIubWF4KTpiLmdldExpbmVhclRpY2tQb3M9Cml0 aW9ucyhiLnRpY2tJbnRlcnZhbCxiLm1pbixiLm1heCkscyYmYS5zcGxpY2UoMSxhLmxlbmd0aC0y KSxiLnRpY2tQb3NpdGlvbj0Kcz0zRGE7aWYoIWgpZT0zRGFbMF0sZj0zRGFbYS5sZW5ndGgtMV0s aD0zRGIubWluUG9pbnRPZmZzZXR8fDAsZC5zdGFydE9uVGljPQprP2IubWluPTNEZTpiLm1pbi1o PmUmJmEuc2hpZnQoKSxkLmVuZE9uVGljaz9iLm1heD0zRGY6Yi5tYXgraDxmJiZhLnBvcCgpLGE9 Ci5sZW5ndGg9M0Q9M0Q9M0QxJiYoZD0zRE0oYi5tYXgpPjFFMTM/MTowLjAwMSxiLm1pbi09M0Rk LGIubWF4Kz0zRGQpfSxzZXRNYT0KeFRpY2tzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLmNoYXJ0 LGI9M0RhLm1heFRpY2tzfHx7fSxjPTNEdGhpcy50aWNrUG9zaXRpPQpvbnMsZD0zRHRoaXMuX21h eFRpY2tzS2V5PTNEW3RoaXMuY29sbCx0aGlzLnBvcyx0aGlzLmxlbl0uam9pbigiLSIpO2lmKCF0 aGk9CnMuaXNMaW5rZWQmJgotIXRoaXMuaXNEYXRldGltZUF4aXMmJmMmJmMubGVuZ3RoPihiW2Rd fHwwKSYmdGhpcy5vcHRpb25zLmFsaWduVGlja3MhPTNEPQo9M0QhMSliW2RdPTNEYy5sZW5ndGg7 YS5tYXhUaWNrcz0zRGJ9LGFkanVzdFRpY2tBbW91bnQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHQ9Cmhp cy5fbWF4VGlja3NLZXksYj0zRHRoaXMudGlja1Bvc2l0aW9ucyxjPTNEdGhpcy5jaGFydC5tYXhU aWNrcztpZihjJiZjW2FdJj0KJiF0aGlzLmlzRGF0ZXRpbWVBeGlzJiYhdGhpcy5jYXRlZ29yaWVz JiYhdGhpcy5pc0xpbmtlZCYmdGhpcy5vcHRpb25zLmFsaWduPQpUaWNrcyE9M0Q9M0QhMSYmdGhp cy5taW4hPTNEPTNEdCl7dmFyIGQ9M0R0aGlzLnRpY2tBbW91bnQsZT0zRGIubGVuZ3RoO3RoaXM9 Ci50aWNrQW1vdW50PTNEYT0zRGNbYV07aWYoZTxhKXtmb3IoO2IubGVuZ3RoPGE7KWIucHVzaChk YShiW2IubGVuZ3RoLTFdK3RoaT0Kcy50aWNrSW50ZXJ2YWwpKTt0aGlzLnRyYW5zQSo9M0QoZS0x KS8oYS0xKTt0aGlzLm1heD0zRGJbYi5sZW5ndGgtMV19aWYocihkPQopJiZhIT0zRD0zRGQpdGhp cy5pc0RpcnR5PTNECi0hMH19LHNldFNjYWxlOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLnN0YWNr cyxiLGMsZCxlO3RoaXMub2xkTWluPTNEdGhpcy5taT0Kbjt0aGlzLm9sZE1heD0zRHRoaXMubWF4 O3RoaXMub2xkQXhpc0xlbmd0aD0zRHRoaXMubGVuO3RoaXMuc2V0QXhpc1NpemUoKTtlPQo9M0R0 aGlzLmxlbiE9M0Q9M0R0aGlzLm9sZEF4aXNMZW5ndGg7cCh0aGlzLnNlcmllcyxmdW5jdGlvbihh KXtpZihhLmlzRGlydHk9CkRhdGF8fGEuaXNEaXJ0eXx8YS54QXhpcy5pc0RpcnR5KWQ9M0QhMH0p O2lmKGV8fGR8fHRoaXMuaXNMaW5rZWR8fHRoaXMuZm9yYz0KZVJlZHJhd3x8dGhpcy51c2VyTWlu IT0zRD0zRHRoaXMub2xkVXNlck1pbnx8dGhpcy51c2VyTWF4IT0zRD0zRHRoaXMub2xkVXNlPQpy TWF4KXtpZighdGhpcy5pc1hBeGlzKWZvcihiIGluIGEpZm9yKGMgaW4gYVtiXSlhW2JdW2NdLnRv dGFsPTNEbnVsbCxhW2JdW2M9Cl0uY3VtPTNEMDt0aGlzLmZvcmNlUmVkcmF3PTNEITE7dGhpcy5n ZXRTZXJpZXNFeHRyZW1lcygpO3RoaXMuc2V0VGlja1Bvc2l0aT0Kb25zKCk7dGhpcy5vbGRVc2Vy TWluPTNECi10aGlzLnVzZXJNaW47dGhpcy5vbGRVc2VyTWF4PTNEdGhpcy51c2VyTWF4O2lmKCF0 aGlzLmlzRGlydHkpdGhpcy5pc0RpcnR5PQo9M0RlfHx0aGlzLm1pbiE9M0Q9M0R0aGlzLm9sZE1p bnx8dGhpcy5tYXghPTNEPTNEdGhpcy5vbGRNYXh9ZWxzZSBpZighdGhpcy49CmlzWEF4aXMpe2lm KHRoaXMub2xkU3RhY2tzKWE9M0R0aGlzLnN0YWNrcz0zRHRoaXMub2xkU3RhY2tzO2ZvcihiIGlu IGEpZm9yKD0KYyBpbiBhW2JdKWFbYl1bY10uY3VtPTNEYVtiXVtjXS50b3RhbH10aGlzLnNldE1h eFRpY2tzKCl9LHNldEV4dHJlbWVzOmZ1bmN0PQppb24oYSxiLGMsZCxlKXt2YXIgZj0zRHRoaXMs Zz0zRGYuY2hhcnQsYz0zRG0oYywhMCksZT0zRHEoZSx7bWluOmEsbWF4OmJ9KTs9CkQoZiwic2V0 RXh0cmVtZXMiLGUsZnVuY3Rpb24oKXtmLnVzZXJNaW49M0RhO2YudXNlck1heD0zRGI7Zi5ldmVu dEFyZ3M9M0RlOz0KZi5pc0RpcnR5RXh0cmVtZXM9M0QhMDtjJiZnLnJlZHJhdyhkKX0pfSx6b29t OmZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLmRhPQp0YU1pbixkPTNEdGhpcy5kYXRhTWF4LAot ZT0zRHRoaXMub3B0aW9uczt0aGlzLmFsbG93Wm9vbU91dHNpZGV8fChyKGMpJiZhPD0zREMoYyxt KGUubWluLGMpKSYmKGE9M0Q9CnQpLHIoZCkmJmI+PTNEdihkLG0oZS5tYXgsZCkpJiYoYj0zRHQp KTt0aGlzLmRpc3BsYXlCdG49M0RhIT0zRD0zRHR8fGIhPTNEPQo9M0R0O3RoaXMuc2V0RXh0cmVt ZXMoYSxiLCExLHQse3RyaWdnZXI6Inpvb20ifSk7cmV0dXJuITB9LHNldEF4aXNTaXplOmZ1bmM9 CnRpb24oKXt2YXIgYT0zRHRoaXMuY2hhcnQsYj0zRHRoaXMub3B0aW9ucyxjPTNEYi5vZmZzZXRM ZWZ0fHwwLGQ9M0R0aGlzLmhvcj0KaXosZT0zRG0oYi53aWR0aCxhLnBsb3RXaWR0aC1jKyhiLm9m ZnNldFJpZ2h0fHwwKSksZj0zRG0oYi5oZWlnaHQsYS5wbG90SGVpPQpnaHQpLGc9M0RtKGIudG9w LGEucGxvdFRvcCksYj0zRG0oYi5sZWZ0LGEucGxvdExlZnQrYyksYz0zRC8lJC87Yy50ZXN0KGYp JiY9CihmPTNEcGFyc2VJbnQoZiwxMCkvMTAwKmEucGxvdEhlaWdodCk7Yy50ZXN0KGcpJiYoZz0z RHBhcnNlSW50KGcsMTApLzEwMCphLj0KcGxvdEhlaWdodCthLnBsb3RUb3ApOwotdGhpcy5sZWZ0 PTNEYjt0aGlzLnRvcD0zRGc7dGhpcy53aWR0aD0zRGU7dGhpcy5oZWlnaHQ9M0RmO3RoaXMuYm90 dG9tPTNEYS49CmNoYXJ0SGVpZ2h0LWYtZzt0aGlzLnJpZ2h0PTNEYS5jaGFydFdpZHRoLWUtYjt0 aGlzLmxlbj0zRHYoZD9lOmYsMCk7dGhpcy5wbz0Kcz0zRGQ/YjpnfSxnZXRFeHRyZW1lczpmdW5j dGlvbigpe3ZhciBhPTNEdGhpcy5pc0xvZztyZXR1cm57bWluOmE/ZGEoaWEodGhpPQpzLm1pbikp OnRoaXMubWluLG1heDphP2RhKGlhKHRoaXMubWF4KSk6dGhpcy5tYXgsZGF0YU1pbjp0aGlzLmRh dGFNaW4sZGF0YU09CmF4OnRoaXMuZGF0YU1heCx1c2VyTWluOnRoaXMudXNlck1pbix1c2VyTWF4 OnRoaXMudXNlck1heH19LGdldFRocmVzaG9sZDpmdT0KbmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5p c0xvZyxjPTNEYj9pYSh0aGlzLm1pbik6dGhpcy5taW4sYj0zRGI/aWEodGhpcy5tYXgpPQo6dGhp cy5tYXg7Yz5hfHxhPTNEPTNEPTNEbnVsbD9hPTNEYzpiPGEmJihhPTNEYik7cmV0dXJuIHRoaXMu dHJhbnNsYXRlKGEsMCw9CjEsMCwxKX0sYXV0b0xhYmVsQWxpZ246ZnVuY3Rpb24oYSl7YT0zRAot KG0oYSwwKS10aGlzLnNpZGUqOTArNzIwKSUzNjA7cmV0dXJuIGE+MTUmJmE8MTY1PyJyaWdodCI6 YT4xOTUmJmE8MzQ1PyJsZWY9CnQiOiJjZW50ZXIifSxnZXRPZmZzZXQ6ZnVuY3Rpb24oKXt2YXIg YT0zRHRoaXMsYj0zRGEuY2hhcnQsYz0zRGIucmVuZGVyZXIsZD0KPTNEYS5vcHRpb25zLGU9M0Rh LnRpY2tQb3NpdGlvbnMsZj0zRGEudGlja3MsZz0zRGEuaG9yaXosaD0zRGEuc2lkZSxpPTNEYi5p PQpudmVydGVkP1sxLDAsMywyXVtoXTpoLGosaz0zRDAsbCxvPTNEMCxuPTNEZC50aXRsZSxzPTNE ZC5sYWJlbHMsJD0zRDAsSj0zRGI9Ci5heGlzT2Zmc2V0LEw9M0RiLmNsaXBPZmZzZXQseD0zRFst MSwxLDEsLTFdW2hdLHEsdT0zRDEsdz0zRG0ocy5tYXhTdGFnZ2VyTD0KaW5lcyw1KSx5LHosQSxC LG5hPTNEaD0zRD0zRD0zRDI/Yy5mb250TWV0cmljcyhzLnN0eWxlLmZvbnRTaXplKS5iOjA7YS5o YXNEPQphdGE9M0RqPTNEYS5oYXNWaXNpYmxlU2VyaWVzfHxyKGEubWluKSYmcihhLm1heCkmJiEh ZTthLnNob3dBeGlzPTNEYj0zRGp8fG09CihkLnNob3dFbXB0eSwhMCk7YS5zdGFnZ2VyTGluZXM9 M0QKLWEuaG9yaXomJnMuc3RhZ2dlckxpbmVzO2lmKCFhLmF4aXNHcm91cClhLmdyaWRHcm91cD0z RGMuZygiZ3JpZCIpLmF0dHIoe3pJPQpuZGV4OmQuZ3JpZFpJbmRleHx8MX0pLmFkZCgpLGEuYXhp c0dyb3VwPTNEYy5nKCJheGlzIikuYXR0cih7ekluZGV4OmQuekluZGU9Cnh8fDJ9KS5hZGQoKSxh LmxhYmVsR3JvdXA9M0RjLmcoImF4aXMtbGFiZWxzIikuYXR0cih7ekluZGV4OnMuekluZGV4fHw3 fSkuYT0KZGRDbGFzcygiaGlnaGNoYXJ0cy0iK2EuY29sbC50b0xvd2VyQ2FzZSgpKyItbGFiZWxz IikuYWRkKCk7aWYoanx8YS5pc0xpbmtlPQpkKXthLmxhYmVsQWxpZ249M0RtKHMuYWxpZ258fGEu YXV0b0xhYmVsQWxpZ24ocy5yb3RhdGlvbikpO3AoZSxmdW5jdGlvbihiKXs9CmZbYl0/ZltiXS5h ZGRMYWJlbCgpOmZbYl09M0RuZXcgU2EoYSxiKX0pO2lmKGEuaG9yaXomJiFhLnN0YWdnZXJMaW5l cyYmdyYmIT0Kcy5yb3RhdGlvbil7Zm9yKHE9M0RhLnJldmVyc2VkP1tdLmNvbmNhdChlKS5yZXZl cnNlKCk6ZTt1PHc7KXtqPTNECi1bXTt5PTNEITE7Zm9yKHM9M0QwO3M8cS5sZW5ndGg7cysrKXo9 M0RxW3NdLEE9M0QoQT0zRGZbel0ubGFiZWwmJmZbel0ubGFiZT0KbC5nZXRCQm94KCkpP0Eud2lk dGg6MCxCPTNEcyV1LEEmJih6PTNEYS50cmFuc2xhdGUoeiksaltCXSE9M0Q9M0R0JiZ6PGpbQl0m PQomKHk9M0QhMCksaltCXT0zRHorQSk7aWYoeSl1Kys7ZWxzZSBicmVha31pZih1PjEpYS5zdGFn Z2VyTGluZXM9M0R1fXAoZSxmdW49CmN0aW9uKGIpe2lmKGg9M0Q9M0Q9M0QwfHxoPTNEPTNEPTNE Mnx8ezE6ImxlZnQiLDM6InJpZ2h0In1baF09M0Q9M0Q9M0RhLmxhYj0KZWxBbGlnbikkPTNEdihm W2JdLmdldExhYmVsU2l6ZSgpLCQpfSk7aWYoYS5zdGFnZ2VyTGluZXMpJCo9M0RhLnN0YWdnZXJM aW5lPQpzLGEubGFiZWxPZmZzZXQ9M0QkfWVsc2UgZm9yKHEgaW4gZilmW3FdLmRlc3Ryb3koKSxk ZWxldGUgZltxXTtpZihuJiZuLnRleHQ9CiYmbi5lbmFibGVkIT0zRD0zRCExKXtpZighYS5heGlz VGl0bGUpYS5heGlzVGl0bGU9M0RjLnRleHQobi50ZXh0LDAsMCxuLnVzZT0KSFRNTCkuYXR0cih7 ekluZGV4Ojcscm90YXRpb246bi5yb3RhdGlvbnx8Ci0wLGFsaWduOm4udGV4dEFsaWdufHx7bG93 OiJsZWZ0IixtaWRkbGU6ImNlbnRlciIsaGlnaDoicmlnaHQifVtuLmFsaWduXX0pLj0KYWRkQ2xh c3MoImhpZ2hjaGFydHMtIit0aGlzLmNvbGwudG9Mb3dlckNhc2UoKSsiLXRpdGxlIikuY3NzKG4u c3R5bGUpLmFkZChhPQouYXhpc0dyb3VwKSxhLmF4aXNUaXRsZS5pc05ldz0zRCEwO2lmKGIpaz0z RGEuYXhpc1RpdGxlLmdldEJCb3goKVtnPyJoZWlnaHQ9CiI6IndpZHRoIl0sbz0zRG0obi5tYXJn aW4sZz81OjEwKSxsPTNEbi5vZmZzZXQ7YS5heGlzVGl0bGVbYj8ic2hvdyI6ImhpZGUiXT0KKCl9 YS5vZmZzZXQ9M0R4Km0oZC5vZmZzZXQsSltoXSk7YS5heGlzVGl0bGVNYXJnaW49M0RtKGwsJCtv KygkJiZ4KmQubGFiZWxzPQpbZz8ieSI6IngiXS1uYSkpO0pbaF09M0R2KEpbaF0sYS5heGlzVGl0 bGVNYXJnaW4rayt4KmEub2Zmc2V0KTtMW2ldPTNEdihMW2k9Cl0sVChkLmxpbmVXaWR0aC8yKSoy KX0sZ2V0TGluZVBhdGg6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLmNoYXJ0LGM9M0R0aGlzLj0K b3Bwb3NpdGUsCi1kPTNEdGhpcy5vZmZzZXQsZT0zRHRoaXMuaG9yaXosZj0zRHRoaXMubGVmdCso Yz90aGlzLndpZHRoOjApK2QsZD0zRGIuY2hhcj0KdEhlaWdodC10aGlzLmJvdHRvbS0oYz90aGlz LmhlaWdodDowKStkO2MmJihhKj0zRC0xKTtyZXR1cm4gYi5yZW5kZXJlci5jcmlzPQpwTGluZShb Ik0iLGU/dGhpcy5sZWZ0OmYsZT9kOnRoaXMudG9wLCJMIixlP2IuY2hhcnRXaWR0aC10aGlzLnJp Z2h0OmYsZT9kOmI9Ci5jaGFydEhlaWdodC10aGlzLmJvdHRvbV0sYSl9LGdldFRpdGxlUG9zaXRp b246ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuaG9yaT0KeixiPTNEdGhpcy5sZWZ0LGM9M0R0aGlz LnRvcCxkPTNEdGhpcy5sZW4sZT0zRHRoaXMub3B0aW9ucy50aXRsZSxmPTNEYT9iOmMsPQpnPTNE dGhpcy5vcHBvc2l0ZSxoPTNEdGhpcy5vZmZzZXQsaT0zRHooZS5zdHlsZS5mb250U2l6ZXx8MTIp LGQ9M0R7bG93OmYrKGE9Cj8wOmQpLG1pZGRsZTpmK2QvMixoaWdoOmYrKGE/ZDowKX1bZS5hbGln bl0sYj0zRChhP2MrdGhpcy5oZWlnaHQ6YikrKGE/MTotMT0KKSooZz8tMToxKSoKLXRoaXMuYXhp c1RpdGxlTWFyZ2luKyh0aGlzLnNpZGU9M0Q9M0Q9M0QyP2k6MCk7cmV0dXJue3g6YT9kOmIrKGc/ dGhpcy53aWR0PQpoOjApK2grKGUueHx8MCkseTphP2ItKGc/dGhpcy5oZWlnaHQ6MCkraDpkKyhl Lnl8fDApfX0scmVuZGVyOmZ1bmN0aW9uKCl7dmE9CnIgYT0zRHRoaXMsYj0zRGEuaG9yaXosYz0z RGEucmV2ZXJzZWQsZD0zRGEuY2hhcnQsZT0zRGQucmVuZGVyZXIsZj0zRGEub3B0aT0Kb25zLGc9 M0RhLmlzTG9nLGg9M0RhLmlzTGlua2VkLGk9M0RhLnRpY2tQb3NpdGlvbnMsaixrPTNEYS5heGlz VGl0bGUsbD0zRGEuPQp0aWNrcyxvPTNEYS5taW5vclRpY2tzLG49M0RhLmFsdGVybmF0ZUJhbmRz LHM9M0RmLnN0YWNrTGFiZWxzLG09M0RmLmFsdGVybmE9CnRlR3JpZENvbG9yLEo9M0RhLnRpY2tt YXJrT2Zmc2V0LEw9M0RmLmxpbmVXaWR0aCx4PTNEZC5oYXNSZW5kZXJlZCYmcihhLm9sZD0KTWlu KSYmIWlzTmFOKGEub2xkTWluKSxxPTNEYS5oYXNEYXRhLHY9M0RhLnNob3dBeGlzLHUsdz0zRGYu bGFiZWxzLm92ZXJmbG93PQoseT0zRGEuanVzdGlmeUxhYmVscz0zRGImJnchPTNEPTNECi0hMSx6 O2EubGFiZWxFZGdlLmxlbmd0aD0zRDA7YS5qdXN0aWZ5VG9QbG90PTNEdz0zRD0zRD0zRCJqdXN0 aWZ5IjtwKFtsLG8sbj0KXSxmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlhW2JdLmlzQWN0aXZl PTNEITF9KTtpZihxfHxoKWlmKGEubWlub3JUaWNrSW50PQplcnZhbCYmIWEuY2F0ZWdvcmllcyYm cChhLmdldE1pbm9yVGlja1Bvc2l0aW9ucygpLGZ1bmN0aW9uKGIpe29bYl18fChvW2JdPQo9M0Ru ZXcgU2EoYSxiLCJtaW5vciIpKTt4JiZvW2JdLmlzTmV3JiZvW2JdLnJlbmRlcihudWxsLCEwKTtv W2JdLnJlbmRlcihudWw9CmwsITEsMSl9KSxpLmxlbmd0aCYmKGo9M0RpLnNsaWNlKCksKGImJmN8 fCFiJiYhYykmJmoucmV2ZXJzZSgpLHkmJihqPTNEai5zbD0KaWNlKDEpLmNvbmNhdChbalswXV0p KSxwKGosZnVuY3Rpb24oYixjKXt5JiYoYz0zRGM9M0Q9M0Q9M0RqLmxlbmd0aC0xPzA6YysxPQop O2lmKCFofHxiPj0zRGEubWluJiZiPD0zRGEubWF4KWxbYl18fChsW2JdPTNEbmV3IFNhKGEsYikp LHgmJmxbYl0uaXNOZXcmJmw9CltiXS5yZW5kZXIoYywKLSEwLDAuMSksbFtiXS5yZW5kZXIoYywh MSwxKX0pLEomJmEubWluPTNEPTNEPTNEMCYmKGxbLTFdfHwobFstMV09M0RuZXcgU2EoPQphLC0x LG51bGwsITApKSxsWy0xXS5yZW5kZXIoLTEpKSksbSYmcChpLGZ1bmN0aW9uKGIsYyl7aWYoYyUy PTNEPTNEPTNEMCYmYjw9CmEubWF4KW5bYl18fChuW2JdPTNEbmV3IFIuUGxvdExpbmVPckJhbmQo YSkpLHU9M0RiK0osej0zRGlbYysxXSE9M0Q9M0R0P2lbYz0KKzFdK0o6YS5tYXgsbltiXS5vcHRp b25zPTNEe2Zyb206Zz9pYSh1KTp1LHRvOmc/aWEoeik6eixjb2xvcjptfSxuW2JdLnJlbmRlPQpy KCksbltiXS5pc0FjdGl2ZT0zRCEwfSksIWEuX2FkZGVkUGxvdExCKXAoKGYucGxvdExpbmVzfHxb XSkuY29uY2F0KGYucGxvdEI9CmFuZHN8fFtdKSxmdW5jdGlvbihiKXthLmFkZFBsb3RCYW5kT3JM aW5lKGIpfSksYS5fYWRkZWRQbG90TEI9M0QhMDtwKFtsLG8sbj0KXSxmdW5jdGlvbihhKXt2YXIg YixjLGU9M0RbXSxmPTNEdmE/dmEuZHVyYXRpb258fDUwMDowLGc9M0RmdW5jdGlvbigpe2Zvcihj PQo9M0RlLmxlbmd0aDtjLS07KWFbZVtjXV0mJgotIWFbZVtjXV0uaXNBY3RpdmUmJihhW2VbY11d LmRlc3Ryb3koKSxkZWxldGUgYVtlW2NdXSl9O2ZvcihiIGluIGEpaWYoIWFbYl09Ci5pc0FjdGl2 ZSlhW2JdLnJlbmRlcihiLCExLDApLGFbYl0uaXNBY3RpdmU9M0QhMSxlLnB1c2goYik7YT0zRD0z RD0zRG58fCFkLj0KaGFzUmVuZGVyZWR8fCFmP2coKTpmJiZzZXRUaW1lb3V0KGcsZil9KTtpZihM KWI9M0RhLmdldExpbmVQYXRoKEwpLGEuYXhpc0xpPQpuZT9hLmF4aXNMaW5lLmFuaW1hdGUoe2Q6 Yn0pOmEuYXhpc0xpbmU9M0RlLnBhdGgoYikuYXR0cih7c3Ryb2tlOmYubGluZUNvbG89CnIsInN0 cm9rZS13aWR0aCI6TCx6SW5kZXg6N30pLmFkZChhLmF4aXNHcm91cCksYS5heGlzTGluZVt2PyJz aG93IjoiaGlkZSJdKD0KKTtpZihrJiZ2KWtbay5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXShhLmdl dFRpdGxlUG9zaXRpb24oKSksay5pc05ldz0zRCExO3MmPQomcy5lbmFibGVkJiZhLnJlbmRlclN0 YWNrVG90YWxzKCk7YS5pc0RpcnR5PTNEITF9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciBhPQo9M0QK LXRoaXMuY2hhcnQucG9pbnRlcjthJiZhLnJlc2V0KCEwKTt0aGlzLnJlbmRlcigpO3AodGhpcy5w bG90TGluZXNBbmRCYW5kcyxmPQp1bmN0aW9uKGEpe2EucmVuZGVyKCl9KTtwKHRoaXMuc2VyaWVz LGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0zRCEwfSl9LGRlc3Ryb3k9CjpmdW5jdGlvbihhKXt2YXIg Yj0zRHRoaXMsYz0zRGIuc3RhY2tzLGQsZT0zRGIucGxvdExpbmVzQW5kQmFuZHM7YXx8VyhiKTtm bz0KcihkIGluIGMpT2EoY1tkXSksY1tkXT0zRG51bGw7cChbYi50aWNrcyxiLm1pbm9yVGlja3Ms Yi5hbHRlcm5hdGVCYW5kc10sZnVuPQpjdGlvbihhKXtPYShhKX0pO2ZvcihhPTNEZS5sZW5ndGg7 YS0tOyllW2FdLmRlc3Ryb3koKTtwKCJzdGFja1RvdGFsR3JvdXAsYXg9CmlzTGluZSxheGlzVGl0 bGUsYXhpc0dyb3VwLGNyb3NzLGdyaWRHcm91cCxsYWJlbEdyb3VwIi5zcGxpdCgiLCIpLGZ1bmN0 aW9uKD0KYSl7YlthXSYmKGJbYV09M0RiW2FdLmRlc3Ryb3koKSl9KTt0aGlzLmNyb3NzJiZ0aGlz LmNyb3NzLmRlc3Ryb3koKX0sCi1kcmF3Q3Jvc3NoYWlyOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5j cm9zc2hhaXIpaWYoKHIoYil8fCFtKHRoaXMuY3Jvc3NoYWlyLj0Kc25hcCwhMCkpPTNEPTNEPTNE ITEpdGhpcy5oaWRlQ3Jvc3NoYWlyKCk7ZWxzZXt2YXIgYyxkPTNEdGhpcy5jcm9zc2hhaXIsZT0K PTNEZC5hbmltYXRpb247bShkLnNuYXAsITApP3IoYikmJihjPTNEdGhpcy5jaGFydC5pbnZlcnRl ZCE9M0R0aGlzLmhvcml6P2IuPQpwbG90WDp0aGlzLmxlbi1iLnBsb3RZKTpjPTNEdGhpcy5ob3Jp ej9hLmNoYXJ0WC10aGlzLnBvczp0aGlzLmxlbi1hLmNoYXJ0WSs9CnRoaXMucG9zO2M9M0R0aGlz LmlzUmFkaWFsP3RoaXMuZ2V0UGxvdExpbmVQYXRoKHRoaXMuaXNYQXhpcz9iLng6bShiLnN0YWNr WT0KLGIueSkpOnRoaXMuZ2V0UGxvdExpbmVQYXRoKG51bGwsbnVsbCxudWxsLG51bGwsYyk7aWYo Yz0zRD0zRD0zRG51bGwpdGhpcy5oPQppZGVDcm9zc2hhaXIoKTtlbHNlIGlmKHRoaXMuY3Jvc3Mp dGhpcy5jcm9zcy5hdHRyKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pW2U9Cj8iYW5pbWF0ZSI6Ci0i YXR0ciJdKHtkOmN9LGUpO2Vsc2V7ZT0zRHsic3Ryb2tlLXdpZHRoIjpkLndpZHRofHwxLHN0cm9r ZTpkLmNvbG9yfHwiI0MwQz0KMEMwIix6SW5kZXg6ZC56SW5kZXh8fDJ9O2lmKGQuZGFzaFN0eWxl KWUuZGFzaHN0eWxlPTNEZC5kYXNoU3R5bGU7dGhpcy5jcm9zPQpzPTNEdGhpcy5jaGFydC5yZW5k ZXJlci5wYXRoKGMpLmF0dHIoZSkuYWRkKCl9fX0saGlkZUNyb3NzaGFpcjpmdW5jdGlvbigpe3Q9 Cmhpcy5jcm9zcyYmdGhpcy5jcm9zcy5oaWRlKCl9fTtxKGxhLnByb3RvdHlwZSx7Z2V0UGxvdEJh bmRQYXRoOmZ1bmN0aW9uKGEsYj0KKXt2YXIgYz0zRHRoaXMuZ2V0UGxvdExpbmVQYXRoKGIpLGQ9 M0R0aGlzLmdldFBsb3RMaW5lUGF0aChhKTtkJiZjP2QucHVzaChjPQpbNF0sY1s1XSxjWzFdLGNb Ml0pOmQ9M0RudWxsO3JldHVybiBkfSxhZGRQbG90QmFuZDpmdW5jdGlvbihhKXt0aGlzLmFkZFBs b3Q9CkJhbmRPckxpbmUoYSwicGxvdEJhbmRzIil9LGFkZFBsb3RMaW5lOmZ1bmN0aW9uKGEpe3Ro aXMuYWRkUGxvdEJhbmRPckxpbmUoYSwKLSJwbG90TGluZXMiKX0sYWRkUGxvdEJhbmRPckxpbmU6 ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRChuZXcgUi5QbG90TGluZU9yQmFuPQpkKHRoaXMsYSkpLnJl bmRlcigpLGQ9M0R0aGlzLnVzZXJPcHRpb25zO2MmJihiJiYoZFtiXT0zRGRbYl18fFtdLGRbYl0u cHVzaCg9CmEpKSx0aGlzLnBsb3RMaW5lc0FuZEJhbmRzLnB1c2goYykpO3JldHVybiBjfSxyZW1v dmVQbG90QmFuZE9yTGluZTpmdW5jdGlvbj0KKGEpe2Zvcih2YXIgYj0zRHRoaXMucGxvdExpbmVz QW5kQmFuZHMsYz0zRHRoaXMub3B0aW9ucyxkPTNEdGhpcy51c2VyT3B0aW9uPQpzLGU9M0RiLmxl bmd0aDtlLS07KWJbZV0uaWQ9M0Q9M0Q9M0RhJiZiW2VdLmRlc3Ryb3koKTtwKFtjLnBsb3RMaW5l c3x8W10sZC49CnBsb3RMaW5lc3x8W10sYy5wbG90QmFuZHN8fFtdLGQucGxvdEJhbmRzfHxbXV0s ZnVuY3Rpb24oYil7Zm9yKGU9M0RiLmxlbmd0aD0KO2UtLTspYltlXS5pZD0zRD0zRD0zRGEmJmph KGIsYltlXSl9KX19KTtsYS5wcm90b3R5cGUuZ2V0VGltZVRpY2tzPTNEZnVuY3RpPQpvbihhLGIs Ci1jLGQpe3ZhciBlPTNEW10sZj0zRHt9LGc9M0RFLmdsb2JhbC51c2VVVEMsaCxpPTNEbmV3IERh dGUoYi1SYSksaj0zRGEudW5pdD0KUmFuZ2Usaz0zRGEuY291bnQ7aWYocihiKSl7aj49M0RBLnNl Y29uZCYmKGkuc2V0TWlsbGlzZWNvbmRzKDApLGkuc2V0U2Vjb25kPQpzKGo+PTNEQS5taW51dGU/ MDprKlQoaS5nZXRTZWNvbmRzKCkvaykpKTtpZihqPj0zREEubWludXRlKWlbRGJdKGo+PTNEQS5o b3U9CnI/MDprKlQoaVtwYl0oKS9rKSk7aWYoaj49M0RBLmhvdXIpaVtFYl0oaj49M0RBLmRheT8w OmsqVChpW3FiXSgpL2spKTtpZihqPj0KPTNEQS5kYXkpaVtzYl0oaj49M0RBLm1vbnRoPzE6aypU KGlbWGFdKCkvaykpO2o+PTNEQS5tb250aCYmKGlbRmJdKGo+PTNEQS55PQplYXI/MDprKlQoaVtm Yl0oKS9rKSksaD0zRGlbZ2JdKCkpO2o+PTNEQS55ZWFyJiYoaC09M0RoJWssaVtHYl0oaCkpO2lm KGo9M0Q9Cj0zRD0zREEud2VlaylpW3NiXShpW1hhXSgpLWlbcmJdKCkrbShkLDEpKTtiPTNEMTtS YSYmKGk9M0RuZXcgRGF0ZShpLmdldFRpbT0KZSgpK1JhKSk7aD0zRGlbZ2JdKCk7Zm9yKHZhciBk PTNECi1pLmdldFRpbWUoKSxsPTNEaVtmYl0oKSxvPTNEaVtYYV0oKSxuPTNEZz9SYTooODY0RTUr aS5nZXRUaW1lem9uZU9mZnNldCgpKj0KNkU0KSU4NjRFNTtkPGM7KWUucHVzaChkKSxqPTNEPTNE PTNEQS55ZWFyP2Q9M0RlYihoK2IqaywwKTpqPTNEPTNEPTNEQS5tb250PQpoP2Q9M0RlYihoLGwr YiprKTohZyYmKGo9M0Q9M0Q9M0RBLmRheXx8aj0zRD0zRD0zREEud2Vlayk/ZD0zRGViKGgsbCxv K2Iqayo9CihqPTNEPTNEPTNEQS5kYXk/MTo3KSk6ZCs9M0RqKmssYisrO2UucHVzaChkKTtwKHZi KGUsZnVuY3Rpb24oYSl7cmV0dXJuIGo8PQo9M0RBLmhvdXImJmElQS5kYXk9M0Q9M0Q9M0RufSks ZnVuY3Rpb24oYSl7ZlthXT0zRCJkYXkifSl9ZS5pbmZvPTNEcShhLHtoaWc9CmhlclJhbmtzOmYs dG90YWxSYW5nZTpqKmt9KTtyZXR1cm4gZX07bGEucHJvdG90eXBlLm5vcm1hbGl6ZVRpbWVUaWNr SW50ZXJ2YT0KbD0zRGZ1bmN0aW9uKGEsYil7dmFyIGM9M0RifHxbWyJtaWxsaXNlY29uZCIsWzEs Miw1LDEwLDIwLDI1LDUwLDEwMCwyMDAsNTAwPQpdXSxbInNlY29uZCIsWzEsMiw1LDEwLDE1LDMw XV0sWyJtaW51dGUiLAotWzEsMiw1LDEwLDE1LDMwXV0sWyJob3VyIixbMSwyLDMsNCw2LDgsMTJd XSxbImRheSIsWzEsMl1dLFsid2VlayIsWzEsMl1dLFs9CiJtb250aCIsWzEsMiwzLDQsNl1dLFsi eWVhciIsbnVsbF1dLGQ9M0RjW2MubGVuZ3RoLTFdLGU9M0RBW2RbMF1dLGY9M0RkWzFdLD0KZztm b3IoZz0zRDA7ZzxjLmxlbmd0aDtnKyspaWYoZD0zRGNbZ10sZT0zREFbZFswXV0sZj0zRGRbMV0s Y1tnKzFdJiZhPD0zRChlPQoqZltmLmxlbmd0aC0xXStBW2NbZysxXVswXV0pLzIpYnJlYWs7ZT0z RD0zRD0zREEueWVhciYmYTw1KmUmJihmPTNEWzEsMiw1XSk9CjtjPTNEbmIoYS9lLGYsZFswXT0z RD0zRD0zRCJ5ZWFyIj92KG1iKGEvZSksMSk6MSk7cmV0dXJue3VuaXRSYW5nZTplLGNvdW50Oj0K Yyx1bml0TmFtZTpkWzBdfX07bGEucHJvdG90eXBlLmdldExvZ1RpY2tQb3NpdGlvbnM9M0RmdW5j dGlvbihhLGIsYyxkKXt2YXIgPQplPTNEdGhpcy5vcHRpb25zLGY9M0R0aGlzLmxlbixnPTNEW107 aWYoIWQpdGhpcy5fbWlub3JBdXRvSW50ZXJ2YWw9M0RudWxsO2k9CmYoYT49M0QwLjUpYT0zRHUo YSksZz0zRHRoaXMuZ2V0TGluZWFyVGlja1Bvc2l0aW9ucyhhLAotYixjKTtlbHNlIGlmKGE+PTNE MC4wOClmb3IodmFyIGY9M0RUKGIpLGgsaSxqLGssbCxlPTNEYT4wLjM/WzEsMiw0XTphPjAuMTU9 Cj9bMSwyLDQsNiw4XTpbMSwyLDMsNCw1LDYsNyw4LDldO2Y8YysxJiYhbDtmKyspe2k9M0RlLmxl bmd0aDtmb3IoaD0zRDA7aDxpJj0KJiFsO2grKylqPTNEemEoaWEoZikqZVtoXSksaj5iJiYoIWR8 fGs8PTNEYykmJmcucHVzaChrKSxrPmMmJihsPTNEITApLGs9M0RqPQp9ZWxzZSBpZihiPTNEaWEo YiksYz0zRGlhKGMpLGE9M0RlW2Q/Im1pbm9yVGlja0ludGVydmFsIjoidGlja0ludGVydmFsIl0s YT0KPTNEbShhPTNEPTNEPTNEImF1dG8iP251bGw6YSx0aGlzLl9taW5vckF1dG9JbnRlcnZhbCwo Yy1iKSooZS50aWNrUGl4ZWxJbnRlPQpydmFsLyhkPzU6MSkpLygoZD9mL3RoaXMudGlja1Bvc2l0 aW9ucy5sZW5ndGg6Zil8fDEpKSxhPTNEbmIoYSxudWxsLG1iKGEpKSw9Cmc9M0RVYSh0aGlzLmdl dExpbmVhclRpY2tQb3NpdGlvbnMoYSxiLGMpLHphKSwhZCl0aGlzLl9taW5vckF1dG9JbnRlcnZh bD0zRD0KYS81O2lmKCFkKXRoaXMudGlja0ludGVydmFsPTNECi1hO3JldHVybiBnfTt2YXIgTWI9 M0RSLlRvb2x0aXA9M0RmdW5jdGlvbigpe3RoaXMuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cz0K KX07TWIucHJvdG90eXBlPTNEe2luaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRGIuYm9yZGVyV2lk dGgsZD0zRGIuc3R5bGUsZT0KPTNEeihkLnBhZGRpbmcpO3RoaXMuY2hhcnQ9M0RhO3RoaXMub3B0 aW9ucz0zRGI7dGhpcy5jcm9zc2hhaXJzPTNEW107dGhpcy5uPQpvdz0zRHt4OjAseTowfTt0aGlz LmlzSGlkZGVuPTNEITA7dGhpcy5sYWJlbD0zRGEucmVuZGVyZXIubGFiZWwoIiIsMCwwLGIuc2g9 CmFwZXx8ImNhbGxvdXQiLG51bGwsbnVsbCxiLnVzZUhUTUwsbnVsbCwidG9vbHRpcCIpLmF0dHIo e3BhZGRpbmc6ZSxmaWxsOmIuYj0KYWNrZ3JvdW5kQ29sb3IsInN0cm9rZS13aWR0aCI6YyxyOmIu Ym9yZGVyUmFkaXVzLHpJbmRleDo4fSkuY3NzKGQpLmNzcyh7cGFkPQpkaW5nOjB9KS5hZGQoKS5h dHRyKHt5Oi05OTk5fSk7ZmF8fHRoaXMubGFiZWwuc2hhZG93KGIuc2hhZG93KTt0aGlzLnNoYXJl ZD0KPTNEYi5zaGFyZWR9LAotZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMubGFiZWwpdGhpcy5s YWJlbD0zRHRoaXMubGFiZWwuZGVzdHJveSgpO2NsZWFyVGk9Cm1lb3V0KHRoaXMuaGlkZVRpbWVy KTtjbGVhclRpbWVvdXQodGhpcy50b29sdGlwVGltZW91dCl9LG1vdmU6ZnVuY3Rpb24oYSxiLD0K YyxkKXt2YXIgZT0zRHRoaXMsZj0zRGUubm93LGc9M0RlLm9wdGlvbnMuYW5pbWF0aW9uIT0zRD0z RCExJiYhZS5pc0hpZGRlbixoPQo9M0RlLmZvbGxvd1BvaW50ZXJ8fGUubGVuPjE7cShmLHt4Omc/ KDIqZi54K2EpLzM6YSx5Omc/KGYueStiKS8yOmIsYW5jaG9yWDo9Cmg/dDpnPygyKmYuYW5jaG9y WCtjKS8zOmMsYW5jaG9yWTpoP3Q6Zz8oZi5hbmNob3JZK2QpLzI6ZH0pO2UubGFiZWwuYXR0cihm KT0KO2lmKGcmJihNKGEtZi54KT4xfHxNKGItZi55KT4xKSljbGVhclRpbWVvdXQodGhpcy50b29s dGlwVGltZW91dCksdGhpcy50b29sPQp0aXBUaW1lb3V0PTNEc2V0VGltZW91dChmdW5jdGlvbigp e2UmJmUubW92ZShhLGIsYyxkKX0sMzIpfSxoaWRlOmZ1bmN0aW9uKCk9Cnt2YXIgYT0zRAotdGhp cyxiO2NsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7aWYoIXRoaXMuaXNIaWRkZW4pYj0zRHRo aXMuY2hhcnQuaG92ZXI9ClBvaW50cyx0aGlzLmhpZGVUaW1lcj0zRHNldFRpbWVvdXQoZnVuY3Rp b24oKXthLmxhYmVsLmZhZGVPdXQoKTthLmlzSGlkZGVuPQo9M0QhMH0sbSh0aGlzLm9wdGlvbnMu aGlkZURlbGF5LDUwMCkpLGImJnAoYixmdW5jdGlvbihhKXthLnNldFN0YXRlKCl9KSx0aGk9CnMu Y2hhcnQuaG92ZXJQb2ludHM9M0RudWxsfSxnZXRBbmNob3I6ZnVuY3Rpb24oYSxiKXt2YXIgYyxk PTNEdGhpcy5jaGFydCxlPQo9M0RkLmludmVydGVkLGY9M0RkLnBsb3RUb3AsZz0zRDAsaD0zRDAs aSxhPTNEcWEoYSk7Yz0zRGFbMF0udG9vbHRpcFBvczt0aGk9CnMuZm9sbG93UG9pbnRlciYmYiYm KGIuY2hhcnRYPTNEPTNEPTNEdCYmKGI9M0RkLnBvaW50ZXIubm9ybWFsaXplKGIpKSxjPTNEWz0K Yi5jaGFydFgtZC5wbG90TGVmdCxiLmNoYXJ0WS1mXSk7Y3x8KHAoYSxmdW5jdGlvbihhKXtpPTNE YS5zZXJpZXMueUF4aXM7Zys9Cj0zRGEucGxvdFg7aCs9M0QoYS5wbG90TG93PwotKGEucGxvdExv dythLnBsb3RIaWdoKS8yOmEucGxvdFkpKyghZSYmaT9pLnRvcC1mOjApfSksZy89M0RhLmxlbmd0 aCxoLz0zRGE9Ci5sZW5ndGgsYz0zRFtlP2QucGxvdFdpZHRoLWg6Zyx0aGlzLnNoYXJlZCYmIWUm JmEubGVuZ3RoPjEmJmI/Yi5jaGFydFktZjplPz0KZC5wbG90SGVpZ2h0LWc6aF0pO3JldHVybiBV YShjLHUpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9M0R0aGlzPQouY2hhcnQs ZT0zRHRoaXMuZGlzdGFuY2UsZj0zRHt9LGcsaD0zRFsieSIsZC5jaGFydEhlaWdodCxiLGMucGxv dFkrZC5wbG90VG89CnBdLGk9M0RbIngiLGQuY2hhcnRXaWR0aCxhLGMucGxvdFgrZC5wbG90TGVm dF0saj0zRGMudHRCZWxvd3x8ZC5pbnZlcnRlZCYmIT0KYy5uZWdhdGl2ZXx8IWQuaW52ZXJ0ZWQm JmMubmVnYXRpdmUsaz0zRGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBnPTNEYzxkLWUsYj0KPTNEZCtl K2M8YixjPTNEZC1lLWM7ZCs9M0RlO2lmKGomJmIpZlthXT0zRGQ7ZWxzZSBpZighaiYmZylmW2Fd PTNEYztlbHNlIGlmPQooZylmW2FdPTNEYztlbHNlIGlmKGIpZlthXT0zRAotZDtlbHNlIHJldHVy biExfSxsPTNEZnVuY3Rpb24oYSxiLGMsZCl7aWYoZDxlfHxkPmItZSlyZXR1cm4hMTtlbHNlIGZb YV09M0Q9CmQ8Yy8yPzE6ZD5iLWMvMj9iLWMtMjpkLWMvMn0sbz0zRGZ1bmN0aW9uKGEpe3ZhciBi PTNEaDtoPTNEaTtpPTNEYjtnPTNEYX0sbj0KPTNEZnVuY3Rpb24oKXtrLmFwcGx5KDAsaCkhPTNE PTNEITE/bC5hcHBseSgwLGkpPTNEPTNEPTNEITEmJiFnJiYobyghMCksbigpPQopOmc/Zi54PTNE Zi55PTNEMDoobyghMCksbigpKX07KGQuaW52ZXJ0ZWR8fHRoaXMubGVuPjEpJiZvKCk7bigpO3Jl dHVybiBmfSw9CmRlZmF1bHRGb3JtYXR0ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLnBvaW50 c3x8cWEodGhpcyksYz0zRGJbMF0uc2VyaWVzLD0KZDtkPTNEW2EudG9vbHRpcEhlYWRlckZvcm1h dHRlcihiWzBdKV07cChiLGZ1bmN0aW9uKGEpe2M9M0RhLnNlcmllcztkLnB1c2goPQpjLnRvb2x0 aXBGb3JtYXR0ZXImJmMudG9vbHRpcEZvcm1hdHRlcihhKXx8YS5wb2ludC50b29sdGlwRm9ybWF0 dGVyKGMudG9vbHQ9CmlwT3B0aW9ucy5wb2ludEZvcm1hdCkpfSk7Ci1kLnB1c2goYS5vcHRpb25z LmZvb3RlckZvcm1hdHx8IiIpO3JldHVybiBkLmpvaW4oIiIpfSxyZWZyZXNoOmZ1bmN0aW9uKGEs Yj0KKXt2YXIgYz0zRHRoaXMuY2hhcnQsZD0zRHRoaXMubGFiZWwsZT0zRHRoaXMub3B0aW9ucyxm LGcsaD0zRHt9LGksaj0zRFtdO2k9Cj0zRGUuZm9ybWF0dGVyfHx0aGlzLmRlZmF1bHRGb3JtYXR0 ZXI7dmFyIGg9M0RjLmhvdmVyUG9pbnRzLGssbD0zRHRoaXMuc2hhcj0KZWQ7Y2xlYXJUaW1lb3V0 KHRoaXMuaGlkZVRpbWVyKTt0aGlzLmZvbGxvd1BvaW50ZXI9M0RxYShhKVswXS5zZXJpZXMudG9v bHRpPQpwT3B0aW9ucy5mb2xsb3dQb2ludGVyO2c9M0R0aGlzLmdldEFuY2hvcihhLGIpO2Y9M0Rn WzBdO2c9M0RnWzFdO2wmJighYS5zZXI9Cmllc3x8IWEuc2VyaWVzLm5vU2hhcmVkVG9vbHRpcCk/ KGMuaG92ZXJQb2ludHM9M0RhLGgmJnAoaCxmdW5jdGlvbihhKXthLnNldD0KU3RhdGUoKX0pLHAo YSxmdW5jdGlvbihhKXthLnNldFN0YXRlKCJob3ZlciIpO2oucHVzaChhLmdldExhYmVsQ29uZmln KCkpfSksPQpoPTNEe3g6YVswXS5jYXRlZ29yeSwKLXk6YVswXS55fSxoLnBvaW50cz0zRGosdGhp cy5sZW49M0RqLmxlbmd0aCxhPTNEYVswXSk6aD0zRGEuZ2V0TGFiZWxDb25maWcoPQopO2k9M0Rp LmNhbGwoaCx0aGlzKTtoPTNEYS5zZXJpZXM7dGhpcy5kaXN0YW5jZT0zRG0oaC50b29sdGlwT3B0 aW9ucy5kaXN0YW49CmNlLDE2KTtpPTNEPTNEPTNEITE/dGhpcy5oaWRlKCk6KHRoaXMuaXNIaWRk ZW4mJihiYihkKSxkLmF0dHIoIm9wYWNpdHkiLDEpLj0Kc2hvdygpKSxkLmF0dHIoe3RleHQ6aX0p LGs9M0RlLmJvcmRlckNvbG9yfHxhLmNvbG9yfHxoLmNvbG9yfHwiIzYwNjA2MCIsZC5hPQp0dHIo e3N0cm9rZTprfSksdGhpcy51cGRhdGVQb3NpdGlvbih7cGxvdFg6ZixwbG90WTpnLG5lZ2F0aXZl OmEubmVnYXRpdmUsdHQ9CkJlbG93OmEudHRCZWxvd30pLHRoaXMuaXNIaWRkZW49M0QhMSk7RChj LCJ0b29sdGlwUmVmcmVzaCIse3RleHQ6aSx4OmYrYy5wbD0Kb3RMZWZ0LHk6ZytjLnBsb3RUb3As Ym9yZGVyQ29sb3I6a30pfSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj0zRHRoPQpp cy5jaGFydCwKLWM9M0R0aGlzLmxhYmVsLGM9M0QodGhpcy5vcHRpb25zLnBvc2l0aW9uZXJ8fHRo aXMuZ2V0UG9zaXRpb24pLmNhbGwodGhpcyxjPQoud2lkdGgsYy5oZWlnaHQsYSk7dGhpcy5tb3Zl KHUoYy54KSx1KGMueSksYS5wbG90WCtiLnBsb3RMZWZ0LGEucGxvdFkrYi5wbG89CnRUb3ApfSx0 b29sdGlwSGVhZGVyRm9ybWF0dGVyOmZ1bmN0aW9uKGEpe3ZhciBiPTNEYS5zZXJpZXMsYz0zRGIu dG9vbHRpcE9wdD0KaW9ucyxkPTNEYy5kYXRlVGltZUxhYmVsRm9ybWF0cyxlPTNEYy54RGF0ZUZv cm1hdCxmPTNEYi54QXhpcyxnPTNEZiYmZi5vcHRpPQpvbnMudHlwZT0zRD0zRD0zRCJkYXRldGlt ZSImJmhhKGEua2V5KSxjPTNEYy5oZWFkZXJGb3JtYXQsZj0zRGYmJmYuY2xvc2VzdFA9Cm9pbnRS YW5nZSxoO2lmKGcmJiFlKXtpZihmKWZvcihoIGluIEEpe2lmKEFbaF0+PTNEZnx8QVtoXTw9M0RB LmRheSYmYS5rZXklQT0KW2hdPjApe2U9M0RkW2hdO2JyZWFrfX1lbHNlIGU9M0RkLmRheTtlPTNE ZXx8ZC55ZWFyfWcmJmUmJihjPTNEYy5yZXBsYWNlKCJ7PQpwb2ludC5rZXl9Iiwie3BvaW50Lmtl eToiKwotZSsifSIpKTtyZXR1cm4gSWEoYyx7cG9pbnQ6YSxzZXJpZXM6Yn0pfX07dmFyIG9hOyRh PTNEeS5kb2N1bWVudEVsZW1lbnQub249CnRvdWNoc3RhcnQhPTNEPTNEdDt2YXIgV2E9M0RSLlBv aW50ZXI9M0RmdW5jdGlvbihhLGIpe3RoaXMuaW5pdChhLGIpfTtXYS5wcj0Kb3RvdHlwZT0zRHtp bml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9M0RiLmNoYXJ0LGQ9M0RjLmV2ZW50cyxlPTNEZmE/IiI6 Yy56b29tPQpUeXBlLGM9M0RhLmludmVydGVkLGY7dGhpcy5vcHRpb25zPTNEYjt0aGlzLmNoYXJ0 PTNEYTt0aGlzLnpvb21YPTNEZj0zRC94Ly49CnRlc3QoZSk7dGhpcy56b29tWT0zRGU9M0QveS8u dGVzdChlKTt0aGlzLnpvb21Ib3I9M0RmJiYhY3x8ZSYmYzt0aGlzLnpvb21WZT0KcnQ9M0RlJiYh Y3x8ZiYmYzt0aGlzLmhhc1pvb209M0RmfHxlO3RoaXMucnVuQ2hhcnRDbGljaz0zRGQmJiEhZC5j bGljazt0aGlzPQoucGluY2hEb3duPTNEW107dGhpcy5sYXN0VmFsaWRUb3VjaD0zRHt9O2lmKFIu VG9vbHRpcCYmYi50b29sdGlwLmVuYWJsZWQpYS49CnRvb2x0aXA9M0RuZXcgTWIoYSxiLnRvb2x0 aXApLAotdGhpcy5mb2xsb3dUb3VjaE1vdmU9M0RiLnRvb2x0aXAuZm9sbG93VG91Y2hNb3ZlO3Ro aXMuc2V0RE9NRXZlbnRzKCl9LG5vcm09CmFsaXplOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxhPTNE YXx8d2luZG93LmV2ZW50LGE9M0RTYihhKTtpZighYS50YXJnZXQpYS50YT0KcmdldD0zRGEuc3Jj RWxlbWVudDtkPTNEYS50b3VjaGVzP2EudG91Y2hlcy5sZW5ndGg/YS50b3VjaGVzLml0ZW0oMCk6 YS5jaGFuPQpnZWRUb3VjaGVzWzBdOmE7aWYoIWIpdGhpcy5jaGFydFBvc2l0aW9uPTNEYj0zRFJi KHRoaXMuY2hhcnQuY29udGFpbmVyKTtkLnA9CmFnZVg9M0Q9M0Q9M0R0PyhjPTNEdihhLngsYS5j bGllbnRYLWIubGVmdCksZD0zRGEueSk6KGM9M0RkLnBhZ2VYLWIubGVmdCxkPQo9M0RkLnBhZ2VZ LWIudG9wKTtyZXR1cm4gcShhLHtjaGFydFg6dShjKSxjaGFydFk6dShkKX0pfSxnZXRDb29yZGlu YXRlczpmdW49CmN0aW9uKGEpe3ZhciBiPTNEe3hBeGlzOltdLHlBeGlzOltdfTtwKHRoaXMuY2hh cnQuYXhlcyxmdW5jdGlvbihjKXtiW2MuaXNYQT0KeGlzPyJ4QXhpcyI6Ci0ieUF4aXMiXS5wdXNo KHtheGlzOmMsdmFsdWU6Yy50b1ZhbHVlKGFbYy5ob3Jpej8iY2hhcnRYIjoiY2hhcnRZIl0pfSl9 KTtyZT0KdHVybiBifSxnZXRJbmRleDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMuY2hhcnQ7cmV0 dXJuIGIuaW52ZXJ0ZWQ/Yi5wbG90SGVpPQpnaHQrYi5wbG90VG9wLWEuY2hhcnRZOmEuY2hhcnRY LWIucGxvdExlZnR9LHJ1blBvaW50QWN0aW9uczpmdW5jdGlvbihhKXt2YXI9CiBiPTNEdGhpcy5j aGFydCxjPTNEYi5zZXJpZXMsZD0zRGIudG9vbHRpcCxlLGYsZz0zRGIuaG92ZXJQb2ludCxoPTNE Yi5ob3Zlcj0KU2VyaWVzLGksaixrPTNEYi5jaGFydFdpZHRoLGw9M0R0aGlzLmdldEluZGV4KGEp O2lmKGQmJnRoaXMub3B0aW9ucy50b29sdGlwPQouc2hhcmVkJiYoIWh8fCFoLm5vU2hhcmVkVG9v bHRpcCkpe2Y9M0RbXTtpPTNEYy5sZW5ndGg7Zm9yKGo9M0QwO2o8aTtqKyspaWY9CihjW2pdLnZp c2libGUmJmNbal0ub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nIT0zRD0zRCExJiYhY1tqXS5u b1NoYXJlZFRvbz0KbHRpcCYmCi1jW2pdLnNpbmd1bGFyVG9vbHRpcHMhPTNEPTNEITAmJmNbal0u dG9vbHRpcFBvaW50cy5sZW5ndGgmJihlPTNEY1tqXS50b29sdD0KaXBQb2ludHNbbF0pJiZlLnNl cmllcyllLl9kaXN0PTNETShsLWUuY2xpZW50WCksaz0zREMoayxlLl9kaXN0KSxmLnB1c2goZSk7 PQpmb3IoaT0zRGYubGVuZ3RoO2ktLTspZltpXS5fZGlzdD5rJiZmLnNwbGljZShpLDEpO2lmKGYu bGVuZ3RoJiZmWzBdLmNsaWVudFg9CiE9M0Q9M0R0aGlzLmhvdmVyWClkLnJlZnJlc2goZixhKSx0 aGlzLmhvdmVyWD0zRGZbMF0uY2xpZW50WH1jPTNEaCYmaC50b29sdD0KaXBPcHRpb25zLmZvbGxv d1BvaW50ZXI7aWYoaCYmaC50cmFja2VyJiYhYyl7aWYoKGU9M0RoLnRvb2x0aXBQb2ludHNbbF0p JiZlPQohPTNEPTNEZyllLm9uTW91c2VPdmVyKGEpfWVsc2UgZCYmYyYmIWQuaXNIaWRkZW4mJiho PTNEZC5nZXRBbmNob3IoW3t9XSxhKSw9CmQudXBkYXRlUG9zaXRpb24oe3Bsb3RYOmhbMF0scGxv dFk6aFsxXX0pKTtpZihkJiYhdGhpcy5fb25Eb2N1bWVudE1vdXNlTW92ZT0KKXRoaXMuX29uRG9j dW1lbnRNb3VzZU1vdmU9M0QKLWZ1bmN0aW9uKGEpe2lmKFZbb2FdKVZbb2FdLnBvaW50ZXIub25E b2N1bWVudE1vdXNlTW92ZShhKX0sSyh5LCJtb3VzZW1vdmUiPQosdGhpcy5fb25Eb2N1bWVudE1v dXNlTW92ZSk7cChiLmF4ZXMsZnVuY3Rpb24oYil7Yi5kcmF3Q3Jvc3NoYWlyKGEsbShlLGcpKX09 Cil9LHJlc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5jaGFydCxjPTNEYi5ob3ZlclNlcmll cyxkPTNEYi5ob3ZlclBvaW50LD0KZT0zRGIudG9vbHRpcCxmPTNEZSYmZS5zaGFyZWQ/Yi5ob3Zl clBvaW50czpkOyhhPTNEYSYmZSYmZikmJnFhKGYpWzBdLnBsb3RYPQo9M0Q9M0Q9M0R0JiYoYT0z RCExKTtpZihhKWUucmVmcmVzaChmKSxkJiZkLnNldFN0YXRlKGQuc3RhdGUsITApO2Vsc2V7aWYo ZCk9CmQub25Nb3VzZU91dCgpO2lmKGMpYy5vbk1vdXNlT3V0KCk7ZSYmZS5oaWRlKCk7aWYodGhp cy5fb25Eb2N1bWVudE1vdXNlTW92ZT0KKVcoeSwibW91c2Vtb3ZlIix0aGlzLl9vbkRvY3VtZW50 TW91c2VNb3ZlKSx0aGlzLl9vbkRvY3VtZW50TW91c2VNb3ZlPTNEbnVsPQpsOwotcChiLmF4ZXMs ZnVuY3Rpb24oYSl7YS5oaWRlQ3Jvc3NoYWlyKCl9KTt0aGlzLmhvdmVyWD0zRG51bGx9fSxzY2Fs ZUdyb3Vwczo9CmZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLmNoYXJ0LGQ7cChjLnNlcmllcyxm dW5jdGlvbihlKXtkPTNEYXx8ZS5nZXRQbG90Qj0Kb3goKTtlLnhBeGlzJiZlLnhBeGlzLnpvb21F bmFibGVkJiYoZS5ncm91cC5hdHRyKGQpLGUubWFya2VyR3JvdXAmJihlLm1hcmtlPQpyR3JvdXAu YXR0cihkKSxlLm1hcmtlckdyb3VwLmNsaXAoYj9jLmNsaXBSZWN0Om51bGwpKSxlLmRhdGFMYWJl bHNHcm91cCYmZS49CmRhdGFMYWJlbHNHcm91cC5hdHRyKGQpKX0pO2MuY2xpcFJlY3QuYXR0cihi fHxjLmNsaXBCb3gpfSxkcmFnU3RhcnQ6ZnVuY3Rpbz0KbihhKXt2YXIgYj0zRHRoaXMuY2hhcnQ7 Yi5tb3VzZUlzRG93bj0zRGEudHlwZTtiLmNhbmNlbENsaWNrPTNEITE7Yi5tb3VzZURvPQp3blg9 M0R0aGlzLm1vdXNlRG93blg9M0RhLmNoYXJ0WDtiLm1vdXNlRG93blk9M0R0aGlzLm1vdXNlRG93 blk9M0RhLmNoYXJ0WX0sCi1kcmFnOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5jaGFydCxjPTNE Yi5vcHRpb25zLmNoYXJ0LGQ9M0RhLmNoYXJ0WCxlPTNEYT0KLmNoYXJ0WSxmPTNEdGhpcy56b29t SG9yLGc9M0R0aGlzLnpvb21WZXJ0LGg9M0RiLnBsb3RMZWZ0LGk9M0RiLnBsb3RUb3Asaj0KPTNE Yi5wbG90V2lkdGgsaz0zRGIucGxvdEhlaWdodCxsLG89M0R0aGlzLm1vdXNlRG93blgsbj0zRHRo aXMubW91c2VEb3duWTtkPQo8aD9kPTNEaDpkPmgraiYmKGQ9M0RoK2opO2U8aT9lPTNEaTplPmkr ayYmKGU9M0RpK2spO3RoaXMuaGFzRHJhZ2dlZD0zRE1hdGg9Ci5zcXJ0KE1hdGgucG93KG8tZCwy KStNYXRoLnBvdyhuLWUsMikpO2lmKHRoaXMuaGFzRHJhZ2dlZD4xMCl7bD0zRGIuaXNJbnNpZD0K ZVBsb3Qoby1oLG4taSk7aWYoYi5oYXNDYXJ0ZXNpYW5TZXJpZXMmJih0aGlzLnpvb21YfHx0aGlz Lnpvb21ZKSYmbCYmIXRoaXMuPQpzZWxlY3Rpb25NYXJrZXIpdGhpcy5zZWxlY3Rpb25NYXJrZXI9 M0RiLnJlbmRlcmVyLnJlY3QoaCxpLGY/MTpqLGc/MTprLDApLmE9CnR0cih7ZmlsbDpjLnNlbGVj dGlvbk1hcmtlckZpbGx8fAotInJnYmEoNjksMTE0LDE2NywwLjI1KSIsekluZGV4Ojd9KS5hZGQo KTt0aGlzLnNlbGVjdGlvbk1hcmtlciYmZiYmKGQtPTNEbyw9CnRoaXMuc2VsZWN0aW9uTWFya2Vy LmF0dHIoe3dpZHRoOk0oZCkseDooZD4wPzA6ZCkrb30pKTt0aGlzLnNlbGVjdGlvbk1hcmtlcj0K JiZnJiYoZD0zRGUtbix0aGlzLnNlbGVjdGlvbk1hcmtlci5hdHRyKHtoZWlnaHQ6TShkKSx5Oihk PjA/MDpkKStufSkpO2wmJiF0PQpoaXMuc2VsZWN0aW9uTWFya2VyJiZjLnBhbm5pbmcmJmIucGFu KGEsYy5wYW5uaW5nKX19LGRyb3A6ZnVuY3Rpb24oYSl7dmFyIGI9Cj0zRHRoaXMuY2hhcnQsYz0z RHRoaXMuaGFzUGluY2hlZDtpZih0aGlzLnNlbGVjdGlvbk1hcmtlcil7dmFyIGQ9M0R7eEF4aXM6 Wz0KXSx5QXhpczpbXSxvcmlnaW5hbEV2ZW50OmEub3JpZ2luYWxFdmVudHx8YX0sYT0zRHRoaXMu c2VsZWN0aW9uTWFya2VyLGU9M0RhPQouYXR0cj9hLmF0dHIoIngiKTphLngsZj0zRGEuYXR0cj9h LmF0dHIoInkiKTphLnksZz0zRGEuYXR0cj9hLmF0dHIoIndpZHRoIik6Ci1hLndpZHRoLGg9M0Rh LmF0dHI/YS5hdHRyKCJoZWlnaHQiKTphLmhlaWdodCxpO2lmKHRoaXMuaGFzRHJhZ2dlZHx8Yylw KGIuYT0KeGVzLGZ1bmN0aW9uKGEpe2lmKGEuem9vbUVuYWJsZWQpe3ZhciBiPTNEYS5ob3Jpeixj PTNEYS50b1ZhbHVlKGI/ZTpmKSxiPTNEPQphLnRvVmFsdWUoYj9lK2c6ZitoKTshaXNOYU4oYykm JiFpc05hTihiKSYmKGRbYS5jb2xsXS5wdXNoKHtheGlzOmEsbWluOkMoYyw9CmIpLG1heDp2KGMs Yil9KSxpPTNEITApfX0pLGkmJkQoYiwic2VsZWN0aW9uIixkLGZ1bmN0aW9uKGEpe2Iuem9vbShx KGEsYz97YT0KbmltYXRpb246ITF9Om51bGwpKX0pO3RoaXMuc2VsZWN0aW9uTWFya2VyPTNEdGhp cy5zZWxlY3Rpb25NYXJrZXIuZGVzdHJveSgpPQo7YyYmdGhpcy5zY2FsZUdyb3VwcygpfWlmKGIp RyhiLmNvbnRhaW5lcix7Y3Vyc29yOmIuX2N1cnNvcn0pLGIuY2FuY2VsQ2xpY2s9Cj0zRHRoaXMu aGFzRHJhZ2dlZD4xMCxiLm1vdXNlSXNEb3duPTNEdGhpcy5oYXNEcmFnZ2VkPTNEdGhpcy5oYXNQ aW5jaGVkPTNECi0hMSx0aGlzLnBpbmNoRG93bj0zRFtdfSxvbkNvbnRhaW5lck1vdXNlRG93bjpm dW5jdGlvbihhKXthPTNEdGhpcy5ub3JtYWxpej0KZShhKTthLnByZXZlbnREZWZhdWx0JiZhLnBy ZXZlbnREZWZhdWx0KCk7dGhpcy5kcmFnU3RhcnQoYSl9LG9uRG9jdW1lbnRNb3VzPQplVXA6ZnVu Y3Rpb24oYSl7VltvYV0mJlZbb2FdLnBvaW50ZXIuZHJvcChhKX0sb25Eb2N1bWVudE1vdXNlTW92 ZTpmdW5jdGlvbig9CmEpe3ZhciBiPTNEdGhpcy5jaGFydCxjPTNEdGhpcy5jaGFydFBvc2l0aW9u LGQ9M0RiLmhvdmVyU2VyaWVzLGE9M0R0aGlzLm5vcj0KbWFsaXplKGEsYyk7YyYmZCYmIXRoaXMu aW5DbGFzcyhhLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFja2VyIikmJiFiLmlzSW5zaWRlPQpQbG90 KGEuY2hhcnRYLWIucGxvdExlZnQsYS5jaGFydFktYi5wbG90VG9wKSYmdGhpcy5yZXNldCgpfSxv bkNvbnRhaW5lck1vdXM9CmVMZWF2ZTpmdW5jdGlvbigpe3ZhciBhPTNEVltvYV07aWYoYSlhLnBv aW50ZXIucmVzZXQoKSxhLnBvaW50ZXIuY2hhcnRQb3NpdD0KaW9uPTNECi1udWxsfSxvbkNvbnRh aW5lck1vdXNlTW92ZTpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMuY2hhcnQ7b2E9M0RiLmluZGV4 O2E9Cj0zRHRoaXMubm9ybWFsaXplKGEpO2IubW91c2VJc0Rvd249M0Q9M0Q9M0QibW91c2Vkb3du IiYmdGhpcy5kcmFnKGEpOyh0aGlzLj0KaW5DbGFzcyhhLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFj a2VyIil8fGIuaXNJbnNpZGVQbG90KGEuY2hhcnRYLWIucGxvdExlZnQsPQphLmNoYXJ0WS1iLnBs b3RUb3ApKSYmIWIub3Blbk1lbnUmJnRoaXMucnVuUG9pbnRBY3Rpb25zKGEpfSxpbkNsYXNzOmZ1 bmN0aW89Cm4oYSxiKXtmb3IodmFyIGM7YTspe2lmKGM9M0RIKGEsImNsYXNzIikpaWYoYy5pbmRl eE9mKGIpIT0zRD0zRC0xKXJldHVybiEwOz0KZWxzZSBpZihjLmluZGV4T2YoImhpZ2hjaGFydHMt Y29udGFpbmVyIikhPTNEPTNELTEpcmV0dXJuITE7YT0zRGEucGFyZW50Tm9kPQplfX0sb25UcmFj a2VyTW91c2VPdXQ6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLmNoYXJ0LmhvdmVyU2VyaWVzLGM9 M0QoYT0zRGE9Ci5yZWxhdGVkVGFyZ2V0fHwKLWEudG9FbGVtZW50KSYmYS5wb2ludCYmYS5wb2lu dC5zZXJpZXM7aWYoYiYmIWIub3B0aW9ucy5zdGlja3lUcmFja2luZyYmIXRoPQppcy5pbkNsYXNz KGEsImhpZ2hjaGFydHMtdG9vbHRpcCIpJiZjIT0zRD0zRGIpYi5vbk1vdXNlT3V0KCl9LG9uQ29u dGFpbmVyQ2w9CmljazpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMuY2hhcnQsYz0zRGIuaG92ZXJQ b2ludCxkPTNEYi5wbG90TGVmdCxlPTNEYi5wbD0Kb3RUb3AsYT0zRHRoaXMubm9ybWFsaXplKGEp O2EuY2FuY2VsQnViYmxlPTNEITA7Yi5jYW5jZWxDbGlja3x8KGMmJnRoaXMuaW5DPQpsYXNzKGEu dGFyZ2V0LCJoaWdoY2hhcnRzLXRyYWNrZXIiKT8oRChjLnNlcmllcywiY2xpY2siLHEoYSx7cG9p bnQ6Y30pKSxiLmg9Cm92ZXJQb2ludCYmYy5maXJlUG9pbnRFdmVudCgiY2xpY2siLGEpKToocShh LHRoaXMuZ2V0Q29vcmRpbmF0ZXMoYSkpLGIuaXNJbj0Kc2lkZVBsb3QoYS5jaGFydFgtZCxhLmNo YXJ0WS1lKSYmRChiLCJjbGljayIsYSkpKX0sc2V0RE9NRXZlbnRzOmZ1bmN0aW9uKCl7PQp2YXIg YT0zRAotdGhpcyxiPTNEYS5jaGFydC5jb250YWluZXI7Yi5vbm1vdXNlZG93bj0zRGZ1bmN0aW9u KGIpe2Eub25Db250YWluZXJNb3VzZUQ9Cm93bihiKX07Yi5vbm1vdXNlbW92ZT0zRGZ1bmN0aW9u KGIpe2Eub25Db250YWluZXJNb3VzZU1vdmUoYil9O2Iub25jbGljaz0zRD0KZnVuY3Rpb24oYil7 YS5vbkNvbnRhaW5lckNsaWNrKGIpfTtLKGIsIm1vdXNlbGVhdmUiLGEub25Db250YWluZXJNb3Vz ZUxlYXZlPQopO2FiPTNEPTNEPTNEMSYmSyh5LCJtb3VzZXVwIixhLm9uRG9jdW1lbnRNb3VzZVVw KTtpZigkYSliLm9udG91Y2hzdGFydD0zRGY9CnVuY3Rpb24oYil7YS5vbkNvbnRhaW5lclRvdWNo U3RhcnQoYil9LGIub250b3VjaG1vdmU9M0RmdW5jdGlvbihiKXthLm9uQ29udD0KYWluZXJUb3Vj aE1vdmUoYil9LGFiPTNEPTNEPTNEMSYmSyh5LCJ0b3VjaGVuZCIsYS5vbkRvY3VtZW50VG91Y2hF bmQpfSxkZXN0PQpyb3k6ZnVuY3Rpb24oKXt2YXIgYTtXKHRoaXMuY2hhcnQuY29udGFpbmVyLCJt b3VzZWxlYXZlIix0aGlzLm9uQ29udGFpbmVyTW89CnVzZUxlYXZlKTsKLWFifHwoVyh5LCJtb3Vz ZXVwIix0aGlzLm9uRG9jdW1lbnRNb3VzZVVwKSxXKHksInRvdWNoZW5kIix0aGlzLm9uRG9jdW1l bnRUPQpvdWNoRW5kKSk7Y2xlYXJJbnRlcnZhbCh0aGlzLnRvb2x0aXBUaW1lb3V0KTtmb3IoYSBp biB0aGlzKXRoaXNbYV09M0RudWxsfX09CjtxKFIuUG9pbnRlci5wcm90b3R5cGUse3BpbmNoVHJh bnNsYXRlOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXsodGhpcy56b29tSG9yfD0KfHRoaXMucGluY2hI b3IpJiZ0aGlzLnBpbmNoVHJhbnNsYXRlRGlyZWN0aW9uKCEwLGEsYixjLGQsZSxmKTsodGhpcy56 b29tVmVyPQp0fHx0aGlzLnBpbmNoVmVydCkmJnRoaXMucGluY2hUcmFuc2xhdGVEaXJlY3Rpb24o ITEsYSxiLGMsZCxlLGYpfSxwaW5jaFRyYW49CnNsYXRlRGlyZWN0aW9uOmZ1bmN0aW9uKGEsYixj LGQsZSxmLGcsaCl7dmFyIGk9M0R0aGlzLmNoYXJ0LGo9M0RhPyJ4IjoieSIsaz0KPTNEYT8iWCI6 IlkiLGw9M0QiY2hhcnQiK2ssbz0zRGE/IndpZHRoIjoiaGVpZ2h0IixuPTNEaVsicGxvdCIrKGE/ Ci0iTGVmdCI6IlRvcCIpXSxzLG0scD0zRGh8fDEscT0zRGkuaW52ZXJ0ZWQseD0zRGkuYm91bmRz W2E/ImgiOiJ2Il0scj0zRGIubD0KZW5ndGg9M0Q9M0Q9M0QxLHY9M0RiWzBdW2xdLHU9M0RjWzBd W2xdLHQ9M0QhciYmYlsxXVtsXSx3PTNEIXImJmNbMV1bbF0seSxjPQo9M0RmdW5jdGlvbigpeyFy JiZNKHYtdCk+MjAmJihwPTNEaHx8TSh1LXcpL00odi10KSk7bT0zRChuLXUpL3ArdjtzPTNEaVsi cGw9Cm90IisoYT8iV2lkdGgiOiJIZWlnaHQiKV0vcH07YygpO2I9M0RtO2I8eC5taW4/KGI9M0R4 Lm1pbix5PTNEITApOmIrcz54Lm1heD0KJiYoYj0zRHgubWF4LXMseT0zRCEwKTt5Pyh1LT0zRDAu OCoodS1nW2pdWzBdKSxyfHwody09M0QwLjgqKHctZ1tqXVsxXSkpLGMoPQopKTpnW2pdPTNEW3Us d107cXx8KGZbal09M0RtLW4sZltvXT0zRHMpO2Y9M0RxPzEvcDpwO2Vbb109M0RzO2Vbal09M0Ri O2RbcT89CmE/InNjYWxlWSI6InNjYWxlWCI6InNjYWxlIitrXT0zRHA7ZFsidHJhbnNsYXRlIitr XT0zRGYqbisodS1mKnYpfSxwaW5jaDpmdT0KbmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEYi5j aGFydCxkPTNEYi5waW5jaERvd24sCi1lPTNEYi5mb2xsb3dUb3VjaE1vdmUsZj0zRGEudG91Y2hl cyxnPTNEZi5sZW5ndGgsaD0zRGIubGFzdFZhbGlkVG91Y2gsaT0zRD0KYi5oYXNab29tLGo9M0Ri LnNlbGVjdGlvbk1hcmtlcixrPTNEe30sbD0zRGc9M0Q9M0Q9M0QxJiYoYi5pbkNsYXNzKGEudGFy Z2V0PQosImhpZ2hjaGFydHMtdHJhY2tlciIpJiZjLnJ1blRyYWNrZXJDbGlja3x8Yy5ydW5DaGFy dENsaWNrKSxvPTNEe307KGl8fGUpJiY9CiFsJiZhLnByZXZlbnREZWZhdWx0KCk7VWEoZixmdW5j dGlvbihhKXtyZXR1cm4gYi5ub3JtYWxpemUoYSl9KTtpZihhLnR5cGU9Cj0zRD0zRD0zRCJ0b3Vj aHN0YXJ0IilwKGYsZnVuY3Rpb24oYSxiKXtkW2JdPTNEe2NoYXJ0WDphLmNoYXJ0WCxjaGFydFk6 YS5jaD0KYXJ0WX19KSxoLng9M0RbZFswXS5jaGFydFgsZFsxXSYmZFsxXS5jaGFydFhdLGgueT0z RFtkWzBdLmNoYXJ0WSxkWzFdJiZkWzFdPQouY2hhcnRZXSxwKGMuYXhlcyxmdW5jdGlvbihhKXtp ZihhLnpvb21FbmFibGVkKXt2YXIgYj0zRGMuYm91bmRzW2EuaG9yaXo/Img9CiI6InYiXSxkPTNE YS5taW5QaXhlbFBhZGRpbmcsCi1lPTNEYS50b1BpeGVscyhhLmRhdGFNaW4pLGY9M0RhLnRvUGl4 ZWxzKGEuZGF0YU1heCksZz0zREMoZSxmKSxlPTNEdihlLGYpOz0KYi5taW49M0RDKGEucG9zLGct ZCk7Yi5tYXg9M0R2KGEucG9zK2EubGVuLGUrZCl9fSk7ZWxzZSBpZihkLmxlbmd0aCl7aWYoIWop PQpiLnNlbGVjdGlvbk1hcmtlcj0zRGo9M0RxKHtkZXN0cm95OnNhfSxjLnBsb3RCb3gpO2IucGlu Y2hUcmFuc2xhdGUoZCxmLGssaiw9Cm8saCk7Yi5oYXNQaW5jaGVkPTNEaTtiLnNjYWxlR3JvdXBz KGssbyk7IWkmJmUmJmc9M0Q9M0Q9M0QxJiZ0aGlzLnJ1blBvaW50QT0KY3Rpb25zKGIubm9ybWFs aXplKGEpKX19LG9uQ29udGFpbmVyVG91Y2hTdGFydDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMu Y2hhPQpydDtvYT0zRGIuaW5kZXg7YS50b3VjaGVzLmxlbmd0aD0zRD0zRD0zRDE/KGE9M0R0aGlz Lm5vcm1hbGl6ZShhKSxiLmlzSW5zaWQ9CmVQbG90KGEuY2hhcnRYLWIucGxvdExlZnQsYS5jaGFy dFktYi5wbG90VG9wKT8odGhpcy5ydW5Qb2ludEFjdGlvbnMoYSksdGhpcz0KLnBpbmNoKGEpKTp0 aGlzLnJlc2V0KCkpOgotYS50b3VjaGVzLmxlbmd0aD0zRD0zRD0zRDImJnRoaXMucGluY2goYSl9 LG9uQ29udGFpbmVyVG91Y2hNb3ZlOmZ1bmN0aW9uKGE9Cil7KGEudG91Y2hlcy5sZW5ndGg9M0Q9 M0Q9M0QxfHxhLnRvdWNoZXMubGVuZ3RoPTNEPTNEPTNEMikmJnRoaXMucGluY2goYSl9LD0Kb25E b2N1bWVudFRvdWNoRW5kOmZ1bmN0aW9uKGEpe1Zbb2FdJiZWW29hXS5wb2ludGVyLmRyb3AoYSl9 fSk7aWYoSS5Qb2ludGVyPQpFdmVudHx8SS5NU1BvaW50ZXJFdmVudCl7dmFyIHVhPTNEe30semI9 M0QhIUkuUG9pbnRlckV2ZW50LFdiPTNEZnVuY3Rpb24oKXs9CnZhciBhLGI9M0RbXTtiLml0ZW09 M0RmdW5jdGlvbihhKXtyZXR1cm4gdGhpc1thXX07Zm9yKGEgaW4gdWEpdWEuaGFzT3duUHJvcD0K ZXJ0eShhKSYmYi5wdXNoKHtwYWdlWDp1YVthXS5wYWdlWCxwYWdlWTp1YVthXS5wYWdlWSx0YXJn ZXQ6dWFbYV0udGFyZ2V0fSk7PQpyZXR1cm4gYn0sQWI9M0RmdW5jdGlvbihhLGIsYyxkKXthPTNE YS5vcmlnaW5hbEV2ZW50fHxhO2lmKChhLnBvaW50ZXJUeXBlPQo9M0Q9M0Q9M0QidG91Y2gifHwK LWEucG9pbnRlclR5cGU9M0Q9M0Q9M0RhLk1TUE9JTlRFUl9UWVBFX1RPVUNIKSYmVltvYV0pZChh KSxkPTNEVltvYV0ucG9pbnRlPQpyLGRbYl0oe3R5cGU6Yyx0YXJnZXQ6YS5jdXJyZW50VGFyZ2V0 LHByZXZlbnREZWZhdWx0OnNhLHRvdWNoZXM6V2IoKX0pfTtxKFc9CmEucHJvdG90eXBlLHtvbkNv bnRhaW5lclBvaW50ZXJEb3duOmZ1bmN0aW9uKGEpe0FiKGEsIm9uQ29udGFpbmVyVG91Y2hTdGFy dD0KIiwidG91Y2hzdGFydCIsZnVuY3Rpb24oYSl7dWFbYS5wb2ludGVySWRdPTNEe3BhZ2VYOmEu cGFnZVgscGFnZVk6YS5wYWdlWSx0PQphcmdldDphLmN1cnJlbnRUYXJnZXR9fSl9LG9uQ29udGFp bmVyUG9pbnRlck1vdmU6ZnVuY3Rpb24oYSl7QWIoYSwib25Db250YWk9Cm5lclRvdWNoTW92ZSIs InRvdWNobW92ZSIsZnVuY3Rpb24oYSl7dWFbYS5wb2ludGVySWRdPTNEe3BhZ2VYOmEucGFnZVgs cGFnZT0KWTphLnBhZ2VZfTtpZighdWFbYS5wb2ludGVySWRdLnRhcmdldCl1YVthLnBvaW50ZXJJ ZF0udGFyZ2V0PTNEYS5jdXJyZW50VGFyPQpnZXR9KX0sCi1vbkRvY3VtZW50UG9pbnRlclVwOmZ1 bmN0aW9uKGEpe0FiKGEsIm9uQ29udGFpbmVyVG91Y2hFbmQiLCJ0b3VjaGVuZCIsZnVuYz0KdGlv bihhKXtkZWxldGUgdWFbYS5wb2ludGVySWRdfSl9LGJhdGNoTVNFdmVudHM6ZnVuY3Rpb24oYSl7 YSh0aGlzLmNoYXJ0LmNvPQpudGFpbmVyLHpiPyJwb2ludGVyZG93biI6Ik1TUG9pbnRlckRvd24i LHRoaXMub25Db250YWluZXJQb2ludGVyRG93bik7YSh0aGk9CnMuY2hhcnQuY29udGFpbmVyLHpi PyJwb2ludGVybW92ZSI6Ik1TUG9pbnRlck1vdmUiLHRoaXMub25Db250YWluZXJQb2ludGVyTT0K b3ZlKTthKHksemI/InBvaW50ZXJ1cCI6Ik1TUG9pbnRlclVwIix0aGlzLm9uRG9jdW1lbnRQb2lu dGVyVXApfX0pO01hKFdhLnByPQpvdG90eXBlLCJpbml0IixmdW5jdGlvbihhLGIsYyl7YS5jYWxs KHRoaXMsYixjKTsodGhpcy5oYXNab29tfHx0aGlzLmZvbGxvd1Q9Cm91Y2hNb3ZlKSYmRyhiLmNv bnRhaW5lcix7Ii1tcy10b3VjaC1hY3Rpb24iOlEsInRvdWNoLWFjdGlvbiI6UX0pfSk7Ci1NYShX YS5wcm90b3R5cGUsInNldERPTUV2ZW50cyIsZnVuY3Rpb24oYSl7YS5hcHBseSh0aGlzKTsodGhp cy5oYXNab29tfHx0aD0KaXMuZm9sbG93VG91Y2hNb3ZlKSYmdGhpcy5iYXRjaE1TRXZlbnRzKEsp fSk7TWEoV2EucHJvdG90eXBlLCJkZXN0cm95IixmdW5jPQp0aW9uKGEpe3RoaXMuYmF0Y2hNU0V2 ZW50cyhXKTthLmNhbGwodGhpcyl9KX12YXIgbGI9M0RSLkxlZ2VuZD0zRGZ1bmN0aW9uKGE9Cixi KXt0aGlzLmluaXQoYSxiKX07bGIucHJvdG90eXBlPTNEe2luaXQ6ZnVuY3Rpb24oYSxiKXt2YXIg Yz0zRHRoaXMsZD0zRGIuaT0KdGVtU3R5bGUsZT0zRG0oYi5wYWRkaW5nLDgpLGY9M0RiLml0ZW1N YXJnaW5Ub3B8fDA7dGhpcy5vcHRpb25zPTNEYjtpZihiLmVuPQphYmxlZCljLmJhc2VsaW5lPTNE eihkLmZvbnRTaXplKSszK2YsYy5pdGVtU3R5bGU9M0RkLGMuaXRlbUhpZGRlblN0eWxlPTNEdyg9 CmQsYi5pdGVtSGlkZGVuU3R5bGUpLGMuaXRlbU1hcmdpblRvcD0zRGYsYy5wYWRkaW5nPTNEZSxj LmluaXRpYWxJdGVtWD0zRGUsYz0KLmluaXRpYWxJdGVtWT0zRAotZS01LGMubWF4SXRlbVdpZHRo PTNEMCxjLmNoYXJ0PTNEYSxjLml0ZW1IZWlnaHQ9M0QwLGMubGFzdExpbmVIZWlnaHQ9M0QwLGM9 Ci5zeW1ib2xXaWR0aD0zRG0oYi5zeW1ib2xXaWR0aCwxNiksYy5wYWdlcz0zRFtdLGMucmVuZGVy KCksSyhjLmNoYXJ0LCJlbmRSZT0Kc2l6ZSIsZnVuY3Rpb24oKXtjLnBvc2l0aW9uQ2hlY2tib3hl cygpfSl9LGNvbG9yaXplSXRlbTpmdW5jdGlvbihhLGIpe3ZhciBjPQo9M0R0aGlzLm9wdGlvbnMs ZD0zRGEubGVnZW5kSXRlbSxlPTNEYS5sZWdlbmRMaW5lLGY9M0RhLmxlZ2VuZFN5bWJvbCxnPTNE dGg9CmlzLml0ZW1IaWRkZW5TdHlsZS5jb2xvcixjPTNEYj9jLml0ZW1TdHlsZS5jb2xvcjpnLGg9 M0RiP2EubGVnZW5kQ29sb3J8fGEuYz0Kb2xvcnx8IiNDQ0MiOmcsZz0zRGEub3B0aW9ucyYmYS5v cHRpb25zLm1hcmtlcixpPTNEe2ZpbGw6aH0sajtkJiZkLmNzcyh7ZmlsPQpsOmMsY29sb3I6Y30p O2UmJmUuYXR0cih7c3Ryb2tlOmh9KTtpZihmKXtpZihnJiZmLmlzTWFya2VyKWZvcihqIGluIGku c3Ryb2s9CmU9M0RoLGc9M0RhLmNvbnZlcnRBdHRyaWJzKGcpLAotZylkPTNEZ1tqXSxkIT0zRD0z RHQmJihpW2pdPTNEZCk7Zi5hdHRyKGkpfX0scG9zaXRpb25JdGVtOmZ1bmN0aW9uKGEpe3ZhciA9 CmI9M0R0aGlzLm9wdGlvbnMsYz0zRGIuc3ltYm9sUGFkZGluZyxiPTNEIWIucnRsLGQ9M0RhLl9s ZWdlbmRJdGVtUG9zLGU9M0RkWz0KMF0sZD0zRGRbMV0sZj0zRGEuY2hlY2tib3g7YS5sZWdlbmRH cm91cCYmYS5sZWdlbmRHcm91cC50cmFuc2xhdGUoYj9lOnRoaXMuPQpsZWdlbmRXaWR0aC1lLTIq Yy00LGQpO2lmKGYpZi54PTNEZSxmLnk9M0RkfSxkZXN0cm95SXRlbTpmdW5jdGlvbihhKXt2YXIg Yj0KPTNEYS5jaGVja2JveDtwKFsibGVnZW5kSXRlbSIsImxlZ2VuZExpbmUiLCJsZWdlbmRTeW1i b2wiLCJsZWdlbmRHcm91cCJdLGZ1PQpuY3Rpb24oYil7YVtiXSYmKGFbYl09M0RhW2JdLmRlc3Ry b3koKSl9KTtiJiZQYShhLmNoZWNrYm94KX0sZGVzdHJveTpmdW5jdGk9Cm9uKCl7dmFyIGE9M0R0 aGlzLmdyb3VwLGI9M0R0aGlzLmJveDtpZihiKXRoaXMuYm94PTNEYi5kZXN0cm95KCk7aWYoYSl0 aGlzLj0KZ3JvdXA9M0RhLmRlc3Ryb3koKX0sCi1wb3NpdGlvbkNoZWNrYm94ZXM6ZnVuY3Rpb24o YSl7dmFyIGI9M0R0aGlzLmdyb3VwLmFsaWduQXR0cixjLGQ9M0R0aGlzLmNsaT0KcEhlaWdodHx8 dGhpcy5sZWdlbmRIZWlnaHQ7aWYoYiljPTNEYi50cmFuc2xhdGVZLHAodGhpcy5hbGxJdGVtcyxm dW5jdGlvbihlPQope3ZhciBmPTNEZS5jaGVja2JveCxnO2YmJihnPTNEYytmLnkrKGF8fDApKzMs RyhmLHtsZWZ0OmIudHJhbnNsYXRlWCtlLmNoZWM9Cmtib3hPZmZzZXQrZi54LTIwKyJweCIsdG9w OmcrInB4IixkaXNwbGF5Omc+Yy02JiZnPGMrZC02PyIiOlF9KSl9KX0scmVuZGVyVD0KaXRsZTpm dW5jdGlvbigpe3ZhciBhPTNEdGhpcy5wYWRkaW5nLGI9M0R0aGlzLm9wdGlvbnMudGl0bGUsYz0z RDA7aWYoYi50ZXh0PQope2lmKCF0aGlzLnRpdGxlKXRoaXMudGl0bGU9M0R0aGlzLmNoYXJ0LnJl bmRlcmVyLmxhYmVsKGIudGV4dCxhLTMsYS00LG51bGw9CixudWxsLG51bGwsbnVsbCxudWxsLCJs ZWdlbmQtdGl0bGUiKS5hdHRyKHt6SW5kZXg6MX0pLmNzcyhiLnN0eWxlKS5hZGQodGhpcz0KLmdy b3VwKTsKLWE9M0R0aGlzLnRpdGxlLmdldEJCb3goKTtjPTNEYS5oZWlnaHQ7dGhpcy5vZmZzZXRX aWR0aD0zRGEud2lkdGg7dGhpcy5jb250PQplbnRHcm91cC5hdHRyKHt0cmFuc2xhdGVZOmN9KX10 aGlzLnRpdGxlSGVpZ2h0PTNEY30scmVuZGVySXRlbTpmdW5jdGlvbihhKXs9CnZhciBiPTNEdGhp cy5jaGFydCxjPTNEYi5yZW5kZXJlcixkPTNEdGhpcy5vcHRpb25zLGU9M0RkLmxheW91dD0zRD0z RD0zRCJobz0Kcml6b250YWwiLGY9M0R0aGlzLnN5bWJvbFdpZHRoLGc9M0RkLnN5bWJvbFBhZGRp bmcsaD0zRHRoaXMuaXRlbVN0eWxlLGk9M0R0PQpoaXMuaXRlbUhpZGRlblN0eWxlLGo9M0R0aGlz LnBhZGRpbmcsaz0zRGU/bShkLml0ZW1EaXN0YW5jZSwyMCk6MCxsPTNEIWQucnQ9Cmwsbz0zRGQu d2lkdGgsbj0zRGQuaXRlbU1hcmdpbkJvdHRvbXx8MCxzPTNEdGhpcy5pdGVtTWFyZ2luVG9wLHA9 M0R0aGlzLmluaT0KdGlhbEl0ZW1YLHE9M0RhLmxlZ2VuZEl0ZW0scj0zRGEuc2VyaWVzJiZhLnNl cmllcy5kcmF3TGVnZW5kU3ltYm9sP2Euc2VyaWVzPQo6YSx4PTNEci5vcHRpb25zLHg9M0R0aGlz LmNyZWF0ZUNoZWNrYm94Rm9ySXRlbSYmCi14JiZ4LnNob3dDaGVja2JveCx0PTNEZC51c2VIVE1M O2lmKCFxKWEubGVnZW5kR3JvdXA9M0RjLmcoImxlZ2VuZC1pdGVtIikuYT0KdHRyKHt6SW5kZXg6 MX0pLmFkZCh0aGlzLnNjcm9sbEdyb3VwKSxyLmRyYXdMZWdlbmRTeW1ib2wodGhpcyxhKSxhLmxl Z2VuZEl0PQplbT0zRHE9M0RjLnRleHQoZC5sYWJlbEZvcm1hdD9JYShkLmxhYmVsRm9ybWF0LGEp OmQubGFiZWxGb3JtYXR0ZXIuY2FsbChhKSw9Cmw/ZitnOi1nLHRoaXMuYmFzZWxpbmUsdCkuY3Nz KHcoYS52aXNpYmxlP2g6aSkpLmF0dHIoe2FsaWduOmw/ImxlZnQiOiJyaWdodD0KIix6SW5kZXg6 Mn0pLmFkZChhLmxlZ2VuZEdyb3VwKSx0aGlzLnNldEl0ZW1FdmVudHMmJnRoaXMuc2V0SXRlbUV2 ZW50cyhhLHEsPQp0LGgsaSksdGhpcy5jb2xvcml6ZUl0ZW0oYSxhLnZpc2libGUpLHgmJnRoaXMu Y3JlYXRlQ2hlY2tib3hGb3JJdGVtKGEpO2M9M0Q9CnEuZ2V0QkJveCgpO2Y9M0RhLmNoZWNrYm94 T2Zmc2V0PTNEZC5pdGVtV2lkdGh8fGEubGVnZW5kSXRlbVdpZHRofHwKLWYrZytjLndpZHRoK2sr KHg/MjA6MCk7dGhpcy5pdGVtSGVpZ2h0PTNEZz0zRHUoYS5sZWdlbmRJdGVtSGVpZ2h0fHxjLmhl aWdoPQp0KTtpZihlJiZ0aGlzLml0ZW1YLXArZj4ob3x8Yi5jaGFydFdpZHRoLTIqai1wLWQueCkp dGhpcy5pdGVtWD0zRHAsdGhpcy5pdGU9Cm1ZKz0zRHMrdGhpcy5sYXN0TGluZUhlaWdodCtuLHRo aXMubGFzdExpbmVIZWlnaHQ9M0QwO3RoaXMubWF4SXRlbVdpZHRoPTNEdj0KKHRoaXMubWF4SXRl bVdpZHRoLGYpO3RoaXMubGFzdEl0ZW1ZPTNEcyt0aGlzLml0ZW1ZK247dGhpcy5sYXN0TGluZUhl aWdodD0KPTNEdihnLHRoaXMubGFzdExpbmVIZWlnaHQpO2EuX2xlZ2VuZEl0ZW1Qb3M9M0RbdGhp cy5pdGVtWCx0aGlzLml0ZW1ZXTtlP3RoPQppcy5pdGVtWCs9M0RmOih0aGlzLml0ZW1ZKz0zRHMr ZytuLHRoaXMubGFzdExpbmVIZWlnaHQ9M0RnKTt0aGlzLm9mZnNldFdpZHQ9Cmg9M0RvfHx2KChl P3RoaXMuaXRlbVgtcC1rOmYpK2osdGhpcy5vZmZzZXRXaWR0aCl9LGdldEFsbEl0ZW1zOmZ1bmN0 aW9uKCl7dj0KYXIgYT0zRAotW107cCh0aGlzLmNoYXJ0LnNlcmllcyxmdW5jdGlvbihiKXt2YXIg Yz0zRGIub3B0aW9ucztpZihtKGMuc2hvd0luTGVnZW5kLCE9CnIoYy5saW5rZWRUbyk/dDohMSwh MCkpYT0zRGEuY29uY2F0KGIubGVnZW5kSXRlbXN8fChjLmxlZ2VuZFR5cGU9M0Q9M0Q9M0QicD0K b2ludCI/Yi5kYXRhOmIpKX0pO3JldHVybiBhfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT0zRHRo aXMsYj0zRGEuY2hhcnQsYz0KPTNEYi5yZW5kZXJlcixkPTNEYS5ncm91cCxlLGYsZyxoLGk9M0Rh LmJveCxqPTNEYS5vcHRpb25zLGs9M0RhLnBhZGRpbmcsbD0KPTNEai5ib3JkZXJXaWR0aCxvPTNE ai5iYWNrZ3JvdW5kQ29sb3I7YS5pdGVtWD0zRGEuaW5pdGlhbEl0ZW1YO2EuaXRlbVk9M0RhPQou aW5pdGlhbEl0ZW1ZO2Eub2Zmc2V0V2lkdGg9M0QwO2EubGFzdEl0ZW1ZPTNEMDtpZighZClhLmdy b3VwPTNEZD0zRGMuZygibGU9CmdlbmQiKS5hdHRyKHt6SW5kZXg6N30pLmFkZCgpLGEuY29udGVu dEdyb3VwPTNEYy5nKCkuYXR0cih7ekluZGV4OjF9KS5hZGQoZD0KKSxhLnNjcm9sbEdyb3VwPTNE Yy5nKCkuYWRkKGEuY29udGVudEdyb3VwKTsKLWEucmVuZGVyVGl0bGUoKTtlPTNEYS5nZXRBbGxJ dGVtcygpO29iKGUsZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5vcHRpb25zJiZhPQoub3B0aW9ucy5s ZWdlbmRJbmRleHx8MCktKGIub3B0aW9ucyYmYi5vcHRpb25zLmxlZ2VuZEluZGV4fHwwKX0pO2ou cmV2ZXJzZWQ9CiYmZS5yZXZlcnNlKCk7YS5hbGxJdGVtcz0zRGU7YS5kaXNwbGF5PTNEZj0zRCEh ZS5sZW5ndGg7cChlLGZ1bmN0aW9uKGIpe2Eucj0KZW5kZXJJdGVtKGIpfSk7Zz0zRGoud2lkdGh8 fGEub2Zmc2V0V2lkdGg7aD0zRGEubGFzdEl0ZW1ZK2EubGFzdExpbmVIZWlnaHQrPQphLnRpdGxl SGVpZ2h0O2g9M0RhLmhhbmRsZU92ZXJmbG93KGgpO2lmKGx8fG8pe2crPTNEaztoKz0zRGs7aWYo aSl7aWYoZz4wJiY9Cmg+MClpW2kuaXNOZXc/ImF0dHIiOiJhbmltYXRlIl0oaS5jcmlzcCh7d2lk dGg6ZyxoZWlnaHQ6aH0pKSxpLmlzTmV3PTNEITF9ZT0KbHNlIGEuYm94PTNEaT0zRGMucmVjdCgw LDAsZyxoLGouYm9yZGVyUmFkaXVzLGx8fDApLmF0dHIoe3N0cm9rZTpqLmJvcmRlckNvPQpsb3Is Ci0ic3Ryb2tlLXdpZHRoIjpsfHwwLGZpbGw6b3x8UX0pLmFkZChkKS5zaGFkb3coai5zaGFkb3cp LGkuaXNOZXc9M0QhMDtpW2Y/Ij0Kc2hvdyI6ImhpZGUiXSgpfWEubGVnZW5kV2lkdGg9M0RnO2Eu bGVnZW5kSGVpZ2h0PTNEaDtwKGUsZnVuY3Rpb24oYil7YS5wb3NpPQp0aW9uSXRlbShiKX0pO2Ym JmQuYWxpZ24ocSh7d2lkdGg6ZyxoZWlnaHQ6aH0saiksITAsInNwYWNpbmdCb3giKTtiLmlzUmVz aXo9CmluZ3x8dGhpcy5wb3NpdGlvbkNoZWNrYm94ZXMoKX0saGFuZGxlT3ZlcmZsb3c6ZnVuY3Rp b24oYSl7dmFyIGI9M0R0aGlzLGM9Cj0zRHRoaXMuY2hhcnQsZD0zRGMucmVuZGVyZXIsZT0zRHRo aXMub3B0aW9ucyxmPTNEZS55LGY9M0RjLnNwYWNpbmdCb3guaGVpZz0KaHQrKGUudmVydGljYWxB bGlnbj0zRD0zRD0zRCJ0b3AiPy1mOmYpLXRoaXMucGFkZGluZyxnPTNEZS5tYXhIZWlnaHQsaCxp PTNEPQp0aGlzLmNsaXBSZWN0LGo9M0RlLm5hdmlnYXRpb24saz0zRG0oai5hbmltYXRpb24sITAp LGw9M0RqLmFycm93U2l6ZXx8MTIsbz0KPTNEdGhpcy5uYXYsbj0zRHRoaXMucGFnZXMsCi1zLHE9 M0R0aGlzLmFsbEl0ZW1zO2UubGF5b3V0PTNEPTNEPTNEImhvcml6b250YWwiJiYoZi89M0QyKTtn JiYoZj0zREMoZixnKT0KKTtuLmxlbmd0aD0zRDA7aWYoYT5mJiYhZS51c2VIVE1MKXt0aGlzLmNs aXBIZWlnaHQ9M0RoPTNEZi0yMC10aGlzLnRpdGxlSGVpPQpnaHQtdGhpcy5wYWRkaW5nO3RoaXMu Y3VycmVudFBhZ2U9M0RtKHRoaXMuY3VycmVudFBhZ2UsMSk7dGhpcy5mdWxsSGVpZ2h0PQo9M0Rh O3AocSxmdW5jdGlvbihhLGIpe3ZhciBjPTNEYS5fbGVnZW5kSXRlbVBvc1sxXSxkPTNEdShhLmxl Z2VuZEl0ZW0uZ2V0QkI9Cm94KCkuaGVpZ2h0KSxlPTNEbi5sZW5ndGg7aWYoIWV8fGMtbltlLTFd PmgmJihzfHxjKSE9M0Q9M0RuW2UtMV0pbi5wdXNoKHN8fD0KYyksZSsrO2I9M0Q9M0Q9M0RxLmxl bmd0aC0xJiZjK2QtbltlLTFdPmgmJm4ucHVzaChjKTtjIT0zRD0zRHMmJihzPTNEYyl9KTtpPQpm KCFpKWk9M0RiLmNsaXBSZWN0PTNEZC5jbGlwUmVjdCgwLHRoaXMucGFkZGluZyw5OTk5LDApLGIu Y29udGVudEdyb3VwLmNsaXA9CihpKTtpLmF0dHIoe2hlaWdodDpofSk7aWYoIW8pdGhpcy5uYXY9 M0QKLW89M0RkLmcoKS5hdHRyKHt6SW5kZXg6MX0pLmFkZCh0aGlzLmdyb3VwKSx0aGlzLnVwPTNE ZC5zeW1ib2woInRyaWFuZ2xlIiwwPQosMCxsLGwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnNj cm9sbCgtMSxrKX0pLmFkZChvKSx0aGlzLnBhZ2VyPTNEZC50ZXh0KCI9CiIsMTUsMTApLmNzcyhq LnN0eWxlKS5hZGQobyksdGhpcy5kb3duPTNEZC5zeW1ib2woInRyaWFuZ2xlLWRvd24iLDAsMCxs LGwpLj0Kb24oImNsaWNrIixmdW5jdGlvbigpe2Iuc2Nyb2xsKDEsayl9KS5hZGQobyk7Yi5zY3Jv bGwoMCk7YT0zRGZ9ZWxzZSBpZihvKWkuPQphdHRyKHtoZWlnaHQ6Yy5jaGFydEhlaWdodH0pLG8u aGlkZSgpLHRoaXMuc2Nyb2xsR3JvdXAuYXR0cih7dHJhbnNsYXRlWToxfSk9Cix0aGlzLmNsaXBI ZWlnaHQ9M0QwO3JldHVybiBhfSxzY3JvbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRHRoaXMucGFn ZXMsZD0zRD0KYy5sZW5ndGgsZT0zRHRoaXMuY3VycmVudFBhZ2UrYSxmPTNEdGhpcy5jbGlwSGVp Z2h0LGc9M0R0aGlzLm9wdGlvbnMubmF2aWdhPQp0aW9uLAotaD0zRGcuYWN0aXZlQ29sb3IsZz0z RGcuaW5hY3RpdmVDb2xvcixpPTNEdGhpcy5wYWdlcixqPTNEdGhpcy5wYWRkaW5nO2U+ZCY9CiYo ZT0zRGQpO2lmKGU+MCliIT0zRD0zRHQmJlFhKGIsdGhpcy5jaGFydCksdGhpcy5uYXYuYXR0cih7 dHJhbnNsYXRlWDpqLHRyYT0KbnNsYXRlWTpmK3RoaXMucGFkZGluZys3K3RoaXMudGl0bGVIZWln aHQsdmlzaWJpbGl0eToidmlzaWJsZSJ9KSx0aGlzLnVwLmF0PQp0cih7ZmlsbDplPTNEPTNEPTNE MT9nOmh9KS5jc3Moe2N1cnNvcjplPTNEPTNEPTNEMT8iZGVmYXVsdCI6InBvaW50ZXIifSksaS49 CmF0dHIoe3RleHQ6ZSsiLyIrZH0pLHRoaXMuZG93bi5hdHRyKHt4OjE4K3RoaXMucGFnZXIuZ2V0 QkJveCgpLndpZHRoLGZpbGw6ZT0KPTNEPTNEPTNEZD9nOmh9KS5jc3Moe2N1cnNvcjplPTNEPTNE PTNEZD8iZGVmYXVsdCI6InBvaW50ZXIifSksYz0zRC1jW2UtMV0rPQp0aGlzLmluaXRpYWxJdGVt WSx0aGlzLnNjcm9sbEdyb3VwLmFuaW1hdGUoe3RyYW5zbGF0ZVk6Y30pLHRoaXMuY3VycmVudFBh Z2U9Cj0zRGUsdGhpcy5wb3NpdGlvbkNoZWNrYm94ZXMoYyl9fTsKLU49M0RSLkxlZ2VuZFN5bWJv bE1peGluPTNEe2RyYXdSZWN0YW5nbGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRGEub3B0aW9ucy5z PQp5bWJvbEhlaWdodHx8MTI7Yi5sZWdlbmRTeW1ib2w9M0R0aGlzLmNoYXJ0LnJlbmRlcmVyLnJl Y3QoMCxhLmJhc2VsaW5lLTUtYy89CjIsYS5zeW1ib2xXaWR0aCxjLGEub3B0aW9ucy5zeW1ib2xS YWRpdXN8fDApLmF0dHIoe3pJbmRleDozfSkuYWRkKGIubGVnZW5kRz0Kcm91cCl9LGRyYXdMaW5l TWFya2VyOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5vcHRpb25zLGM9M0RiLm1hcmtlcixkO2Q9 M0RhPQouc3ltYm9sV2lkdGg7dmFyIGU9M0R0aGlzLmNoYXJ0LnJlbmRlcmVyLGY9M0R0aGlzLmxl Z2VuZEdyb3VwLGE9M0RhLmJhc2VsaW49CmUtdShlLmZvbnRNZXRyaWNzKGEub3B0aW9ucy5pdGVt U3R5bGUuZm9udFNpemUpLmIqMC4zKSxnO2lmKGIubGluZVdpZHRoKXtnPQo9M0R7InN0cm9rZS13 aWR0aCI6Yi5saW5lV2lkdGh9O2lmKGIuZGFzaFN0eWxlKWcuZGFzaHN0eWxlPTNEYi5kYXNoU3R5 bGU7dGg9CmlzLmxlZ2VuZExpbmU9M0QKLWUucGF0aChbIk0iLDAsYSwiTCIsZCxhXSkuYXR0cihn KS5hZGQoZil9aWYoYyYmYy5lbmFibGVkIT0zRD0zRCExKWI9M0RjLnJhPQpkaXVzLHRoaXMubGVn ZW5kU3ltYm9sPTNEZD0zRGUuc3ltYm9sKHRoaXMuc3ltYm9sLGQvMi1iLGEtYiwyKmIsMipiKS5h ZGQoZik9CixkLmlzTWFya2VyPTNEITB9fTsoL1RyaWRlbnRcLzdcLjAvLnRlc3Qod2EpfHxUYSkm Jk1hKGxiLnByb3RvdHlwZSwicG9zaXRpbz0Kbkl0ZW0iLGZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0 aGlzLGQ9M0RmdW5jdGlvbigpe2IuX2xlZ2VuZEl0ZW1Qb3MmJmEuY2FsbChjPQosYil9O2QoKTtz ZXRUaW1lb3V0KGQpfSk7WWEucHJvdG90eXBlPTNEe2luaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxk PTNEYS5zZXI9CmllczthLnNlcmllcz0zRG51bGw7Yz0zRHcoRSxhKTtjLnNlcmllcz0zRGEuc2Vy aWVzPTNEZDt0aGlzLnVzZXJPcHRpb25zPTNEYT0KO2Q9M0RjLmNoYXJ0O3RoaXMubWFyZ2luPTNE dGhpcy5zcGxhc2hBcnJheSgibWFyZ2luIixkKTt0aGlzLnNwYWNpbmc9M0R0aGlzPQouc3BsYXNo QXJyYXkoInNwYWNpbmciLAotZCk7dmFyIGU9M0RkLmV2ZW50czt0aGlzLmJvdW5kcz0zRHtoOnt9 LHY6e319O3RoaXMuY2FsbGJhY2s9M0RiO3RoaXMuaXNSZXM9Cml6aW5nPTNEMDt0aGlzLm9wdGlv bnM9M0RjO3RoaXMuYXhlcz0zRFtdO3RoaXMuc2VyaWVzPTNEW107dGhpcy5oYXNDYXJ0ZXNpYT0K blNlcmllcz0zRGQuc2hvd0F4ZXM7dmFyIGY9M0R0aGlzLGc7Zi5pbmRleD0zRFYubGVuZ3RoO1Yu cHVzaChmKTthYisrO2QucmVmPQpsb3chPTNEPTNEITEmJksoZiwibG9hZCIsZnVuY3Rpb24oKXtm LmluaXRSZWZsb3coKX0pO2lmKGUpZm9yKGcgaW4gZSlLKGYsZyw9CmVbZ10pO2YueEF4aXM9M0Rb XTtmLnlBeGlzPTNEW107Zi5hbmltYXRpb249M0RmYT8hMTptKGQuYW5pbWF0aW9uLCEwKTtmLnBv aT0KbnRDb3VudD0zRDA7Zi5jb3VudGVycz0zRG5ldyBCYjtmLmZpcnN0UmVuZGVyKCl9LGluaXRT ZXJpZXM6ZnVuY3Rpb24oYSl7dmFyPQogYj0zRHRoaXMub3B0aW9ucy5jaGFydDsoYj0zREZbYS50 eXBlfHxiLnR5cGV8fGIuZGVmYXVsdFNlcmllc1R5cGVdKXx8cmEoMTc9CiwhMCk7Yj0zRG5ldyBi O2IuaW5pdCh0aGlzLAotYSk7cmV0dXJuIGJ9LGlzSW5zaWRlUGxvdDpmdW5jdGlvbihhLGIsYyl7 dmFyIGQ9M0RjP2I6YSxhPTNEYz9hOmI7cmV0dXJuIGQ9Cj49M0QwJiZkPD0zRHRoaXMucGxvdFdp ZHRoJiZhPj0zRDAmJmE8PTNEdGhpcy5wbG90SGVpZ2h0fSxhZGp1c3RUaWNrQW1vdW50cz0KOmZ1 bmN0aW9uKCl7dGhpcy5vcHRpb25zLmNoYXJ0LmFsaWduVGlja3MhPTNEPTNEITEmJnAodGhpcy5h eGVzLGZ1bmN0aW9uKGEpPQp7YS5hZGp1c3RUaWNrQW1vdW50KCl9KTt0aGlzLm1heFRpY2tzPTNE bnVsbH0scmVkcmF3OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGg9CmlzLmF4ZXMsYz0zRHRoaXMuc2Vy aWVzLGQ9M0R0aGlzLnBvaW50ZXIsZT0zRHRoaXMubGVnZW5kLGY9M0R0aGlzLmlzRGlydHlMZT0K Z2VuZCxnLGgsaT0zRHRoaXMuaXNEaXJ0eUJveCxqPTNEYy5sZW5ndGgsaz0zRGosbD0zRHRoaXMu cmVuZGVyZXIsbz0zRGwuaXNIPQppZGRlbigpLG49M0RbXTtRYShhLHRoaXMpO28mJnRoaXMuY2xv bmVSZW5kZXJUbygpO2Zvcih0aGlzLmxheU91dFRpdGxlcygpO2s9Ci0tOylpZihhPTNEY1trXSxh Lm9wdGlvbnMuc3RhY2tpbmcmJgotKGc9M0QhMCxhLmlzRGlydHkpKXtoPTNEITA7YnJlYWt9aWYo aClmb3Ioaz0zRGo7ay0tOylpZihhPTNEY1trXSxhLm9wdGlvbnM9Ci5zdGFja2luZylhLmlzRGly dHk9M0QhMDtwKGMsZnVuY3Rpb24oYSl7YS5pc0RpcnR5JiZhLm9wdGlvbnMubGVnZW5kVHlwZT0z RD0KPTNEPTNEInBvaW50IiYmKGY9M0QhMCl9KTtpZihmJiZlLm9wdGlvbnMuZW5hYmxlZCllLnJl bmRlcigpLHRoaXMuaXNEaXJ0eUxlPQpnZW5kPTNEITE7ZyYmdGhpcy5nZXRTdGFja3MoKTtpZih0 aGlzLmhhc0NhcnRlc2lhblNlcmllcyl7aWYoIXRoaXMuaXNSZXNpemk9Cm5nKXRoaXMubWF4VGlj a3M9M0RudWxsLHAoYixmdW5jdGlvbihhKXthLnNldFNjYWxlKCl9KTt0aGlzLmFkanVzdFRpY2tB bW91bj0KdHMoKTt0aGlzLmdldE1hcmdpbnMoKTtwKGIsZnVuY3Rpb24oYSl7YS5pc0RpcnR5JiYo aT0zRCEwKX0pO3AoYixmdW5jdGlvbihhPQope2lmKGEuaXNEaXJ0eUV4dHJlbWVzKWEuaXNEaXJ0 eUV4dHJlbWVzPTNEITEsbi5wdXNoKGZ1bmN0aW9uKCl7RChhLCJhZnRlclM9CmV0RXh0cmVtZXMi LAotcShhLmV2ZW50QXJncyxhLmdldEV4dHJlbWVzKCkpKTtkZWxldGUgYS5ldmVudEFyZ3N9KTso aXx8ZykmJmEucmVkcmF3KCl9KX09CmkmJnRoaXMuZHJhd0NoYXJ0Qm94KCk7cChjLGZ1bmN0aW9u KGEpe2EuaXNEaXJ0eSYmYS52aXNpYmxlJiYoIWEuaXNDYXJ0ZXNpYT0Kbnx8YS54QXhpcykmJmEu cmVkcmF3KCl9KTtkJiZkLnJlc2V0KCEwKTtsLmRyYXcoKTtEKHRoaXMsInJlZHJhdyIpO28mJnRo aXMuPQpjbG9uZVJlbmRlclRvKCEwKTtwKG4sZnVuY3Rpb24oYSl7YS5jYWxsKCl9KX0sZ2V0OmZ1 bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy49CmF4ZXMsYz0zRHRoaXMuc2VyaWVzLGQsZTtmb3IoZD0z RDA7ZDxiLmxlbmd0aDtkKyspaWYoYltkXS5vcHRpb25zLmlkPTNEPTNEPQo9M0RhKXJldHVybiBi W2RdO2ZvcihkPTNEMDtkPGMubGVuZ3RoO2QrKylpZihjW2RdLm9wdGlvbnMuaWQ9M0Q9M0Q9M0Rh KXJldHU9CnJuIGNbZF07Zm9yKGQ9M0QwO2Q8Yy5sZW5ndGg7ZCsrKXtlPTNEY1tkXS5wb2ludHN8 fFtdO2ZvcihiPTNEMDtiPGUubGVuZ3RoOz0KYisrKWlmKGVbYl0uaWQ9M0Q9M0Q9M0QKLWEpcmV0 dXJuIGVbYl19cmV0dXJuIG51bGx9LGdldEF4ZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0z RHRoaXMub3B0aW9uPQpzLGM9M0RiLnhBeGlzPTNEcWEoYi54QXhpc3x8e30pLGI9M0RiLnlBeGlz PTNEcWEoYi55QXhpc3x8e30pO3AoYyxmdW5jdGlvbig9CmEsYil7YS5pbmRleD0zRGI7YS5pc1g9 M0QhMH0pO3AoYixmdW5jdGlvbihhLGIpe2EuaW5kZXg9M0RifSk7Yz0zRGMuY29uY2F0KD0KYik7 cChjLGZ1bmN0aW9uKGIpe25ldyBsYShhLGIpfSk7YS5hZGp1c3RUaWNrQW1vdW50cygpfSxnZXRT ZWxlY3RlZFBvaW50czpmPQp1bmN0aW9uKCl7dmFyIGE9M0RbXTtwKHRoaXMuc2VyaWVzLGZ1bmN0 aW9uKGIpe2E9M0RhLmNvbmNhdCh2YihiLnBvaW50c3x8W109CixmdW5jdGlvbihhKXtyZXR1cm4g YS5zZWxlY3RlZH0pKX0pO3JldHVybiBhfSxnZXRTZWxlY3RlZFNlcmllczpmdW5jdGlvbigpez0K cmV0dXJuIHZiKHRoaXMuc2VyaWVzLGZ1bmN0aW9uKGEpe3JldHVybiBhLnNlbGVjdGVkfSl9LGdl dFN0YWNrczpmdW5jdGlvbigpPQp7dmFyIGE9M0QKLXRoaXM7cChhLnlBeGlzLGZ1bmN0aW9uKGEp e2lmKGEuc3RhY2tzJiZhLmhhc1Zpc2libGVTZXJpZXMpYS5vbGRTdGFja3M9M0RhPQouc3RhY2tz fSk7cChhLnNlcmllcyxmdW5jdGlvbihiKXtpZihiLm9wdGlvbnMuc3RhY2tpbmcmJihiLnZpc2li bGU9M0Q9M0Q9M0Q9CiEwfHxhLm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzPTNEPTNE PTNEITEpKWIuc3RhY2tLZXk9M0RiLnR5cGUrbShiLj0Kb3B0aW9ucy5zdGFjaywiIil9KX0sc2V0 VGl0bGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBnO3ZhciBkPTNEdGhpcyxlPTNEZC5vcHRpPQpvbnMs ZjtmPTNEZS50aXRsZT0zRHcoZS50aXRsZSxhKTtnPTNEZS5zdWJ0aXRsZT0zRHcoZS5zdWJ0aXRs ZSxiKSxlPTNEZztwKFs9ClsidGl0bGUiLGEsZl0sWyJzdWJ0aXRsZSIsYixlXV0sZnVuY3Rpb24o YSl7dmFyIGI9M0RhWzBdLGM9M0RkW2JdLGU9M0RhWzFdLD0KYT0zRGFbMl07YyYmZSYmKGRbYl09 M0RjPTNEYy5kZXN0cm95KCkpO2EmJmEudGV4dCYmIWMmJihkW2JdPTNEZC5yZW5kZXJlci50PQpl eHQoYS50ZXh0LDAsMCxhLnVzZUhUTUwpLmF0dHIoe2FsaWduOmEuYWxpZ24sCi0iY2xhc3MiOiJo aWdoY2hhcnRzLSIrYix6SW5kZXg6YS56SW5kZXh8fDR9KS5jc3MoYS5zdHlsZSkuYWRkKCkpfSk7 ZC5sYXlPdT0KdFRpdGxlcyhjKX0sbGF5T3V0VGl0bGVzOmZ1bmN0aW9uKGEpe3ZhciBiPTNEMCxj PTNEdGhpcy50aXRsZSxkPTNEdGhpcy5zdWJ0PQppdGxlLGU9M0R0aGlzLm9wdGlvbnMsZj0zRGUu dGl0bGUsZT0zRGUuc3VidGl0bGUsZz0zRHRoaXMuc3BhY2luZ0JveC53aWR0aC09CjQ0O2lmKGMm JihjLmNzcyh7d2lkdGg6KGYud2lkdGh8fGcpKyJweCJ9KS5hbGlnbihxKHt5OjE1fSxmKSwhMSwi c3BhY2luZ0JveD0KIiksIWYuZmxvYXRpbmcmJiFmLnZlcnRpY2FsQWxpZ24pKWI9M0RjLmdldEJC b3goKS5oZWlnaHQ7ZCYmKGQuY3NzKHt3aWR0aDooPQplLndpZHRofHxnKSsicHgifSkuYWxpZ24o cSh7eTpiK2YubWFyZ2lufSxlKSwhMSwic3BhY2luZ0JveCIpLCFlLmZsb2F0aW5nJiY9CiFlLnZl cnRpY2FsQWxpZ24mJihiPTNES2EoYitkLmdldEJCb3goKS5oZWlnaHQpKSk7Yz0zRHRoaXMudGl0 bGVPZmZzZXQhPTNEPQo9M0QKLWI7dGhpcy50aXRsZU9mZnNldD0zRGI7aWYoIXRoaXMuaXNEaXJ0 eUJveCYmYyl0aGlzLmlzRGlydHlCb3g9M0RjLHRoaXMuaGFzPQpSZW5kZXJlZCYmbShhLCEwKSYm dGhpcy5pc0RpcnR5Qm94JiZ0aGlzLnJlZHJhdygpfSxnZXRDaGFydFNpemU6ZnVuY3Rpb24oKXs9 CnZhciBhPTNEdGhpcy5vcHRpb25zLmNoYXJ0LGI9M0RhLndpZHRoLGE9M0RhLmhlaWdodCxjPTNE dGhpcy5yZW5kZXJUb0Nsb25lfD0KfHRoaXMucmVuZGVyVG87aWYoIXIoYikpdGhpcy5jb250YWlu ZXJXaWR0aD0zRGpiKGMsIndpZHRoIik7aWYoIXIoYSkpdGhpcy5jPQpvbnRhaW5lckhlaWdodD0z RGpiKGMsImhlaWdodCIpO3RoaXMuY2hhcnRXaWR0aD0zRHYoMCxifHx0aGlzLmNvbnRhaW5lcldp ZHQ9Cmh8fDYwMCk7dGhpcy5jaGFydEhlaWdodD0zRHYoMCxtKGEsdGhpcy5jb250YWluZXJIZWln aHQ+MTk/dGhpcy5jb250YWluZXJIZT0KaWdodDo0MDApKX0sY2xvbmVSZW5kZXJUbzpmdW5jdGlv bihhKXt2YXIgYj0zRHRoaXMucmVuZGVyVG9DbG9uZSxjPTNEdGhpcy5jPQpvbnRhaW5lcjsKLWE/ YiYmKHRoaXMucmVuZGVyVG8uYXBwZW5kQ2hpbGQoYyksUGEoYiksZGVsZXRlIHRoaXMucmVuZGVy VG9DbG9uZSk6KGMmJmMuPQpwYXJlbnROb2RlPTNEPTNEPTNEdGhpcy5yZW5kZXJUbyYmdGhpcy5y ZW5kZXJUby5yZW1vdmVDaGlsZChjKSx0aGlzLnJlbmRlclQ9Cm9DbG9uZT0zRGI9M0R0aGlzLnJl bmRlclRvLmNsb25lTm9kZSgwKSxHKGIse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItOTk5OT0K cHgiLGRpc3BsYXk6ImJsb2NrIn0pLGIuc3R5bGUuc2V0UHJvcGVydHkmJmIuc3R5bGUuc2V0UHJv cGVydHkoImRpc3BsYXkiLCJiPQpsb2NrIiwiaW1wb3J0YW50IikseS5ib2R5LmFwcGVuZENoaWxk KGIpLGMmJmIuYXBwZW5kQ2hpbGQoYykpfSxnZXRDb250YWluZXI9CjpmdW5jdGlvbigpe3ZhciBh LGI9M0R0aGlzLm9wdGlvbnMuY2hhcnQsYyxkLGU7dGhpcy5yZW5kZXJUbz0zRGE9M0RiLnJlbmRl cj0KVG87ZT0zRCJoaWdoY2hhcnRzLSIrdGIrKztpZihGYShhKSl0aGlzLnJlbmRlclRvPTNEYT0z RHkuZ2V0RWxlbWVudEJ5SWQoYSk7Ci1hfHxyYSgxMywhMCk7Yz0zRHooSChhLCJkYXRhLWhpZ2hj aGFydHMtY2hhcnQiKSk7IWlzTmFOKGMpJiZWW2NdJiZWW2NdLmhhcz0KUmVuZGVyZWQmJlZbY10u ZGVzdHJveSgpO0goYSwiZGF0YS1oaWdoY2hhcnRzLWNoYXJ0Iix0aGlzLmluZGV4KTthLmlubmVy SFRNPQpMPTNEIiI7IWIuc2tpcENsb25lJiYhYS5vZmZzZXRXaWR0aCYmdGhpcy5jbG9uZVJlbmRl clRvKCk7dGhpcy5nZXRDaGFydFNpemU9CigpO2M9M0R0aGlzLmNoYXJ0V2lkdGg7ZD0zRHRoaXMu Y2hhcnRIZWlnaHQ7dGhpcy5jb250YWluZXI9M0RhPTNEWShKYSx7Y2xhcz0Kc05hbWU6ImhpZ2hj aGFydHMtY29udGFpbmVyIisoYi5jbGFzc05hbWU/IiAiK2IuY2xhc3NOYW1lOiIiKSxpZDplfSxx KHtwb3NpPQp0aW9uOiJyZWxhdGl2ZSIsb3ZlcmZsb3c6ImhpZGRlbiIsd2lkdGg6YysicHgiLGhl aWdodDpkKyJweCIsdGV4dEFsaWduOiJsZWY9CnQiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsekluZGV4 OjAsIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciI6InJnYmEoMCwwLDAsMD0KKSJ9LAotYi5z dHlsZSksdGhpcy5yZW5kZXJUb0Nsb25lfHxhKTt0aGlzLl9jdXJzb3I9M0RhLnN0eWxlLmN1cnNv cjt0aGlzLnJlbmRlcmU9CnI9M0RiLmZvckV4cG9ydD9uZXcgdGEoYSxjLGQsYi5zdHlsZSwhMCk6 bmV3IFphKGEsYyxkLGIuc3R5bGUpO2ZhJiZ0aGlzLnJlbj0KZGVyZXIuY3JlYXRlKHRoaXMsYSxj LGQpfSxnZXRNYXJnaW5zOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLnNwYWNpbmcsYixjPTNEPQp0 aGlzLmxlZ2VuZCxkPTNEdGhpcy5tYXJnaW4sZT0zRHRoaXMub3B0aW9ucy5sZWdlbmQsZj0zRG0o ZS5tYXJnaW4sMjApLGc9M0Q9CmUueCxoPTNEZS55LGk9M0RlLmFsaWduLGo9M0RlLnZlcnRpY2Fs QWxpZ24saz0zRHRoaXMudGl0bGVPZmZzZXQ7dGhpcy5yZXNldD0KTWFyZ2lucygpO2I9M0R0aGlz LmF4aXNPZmZzZXQ7aWYoayYmIXIoZFswXSkpdGhpcy5wbG90VG9wPTNEdih0aGlzLnBsb3RUb3As PQprK3RoaXMub3B0aW9ucy50aXRsZS5tYXJnaW4rYVswXSk7aWYoYy5kaXNwbGF5JiYhZS5mbG9h dGluZylpZihpPTNEPTNEPTNEInI9CmlnaHQiKXtpZighcihkWzFdKSl0aGlzLm1hcmdpblJpZ2h0 PTNECi12KHRoaXMubWFyZ2luUmlnaHQsYy5sZWdlbmRXaWR0aC1nK2YrYVsxXSl9ZWxzZSBpZihp PTNEPTNEPTNEImxlZnQiKXtpZighcj0KKGRbM10pKXRoaXMucGxvdExlZnQ9M0R2KHRoaXMucGxv dExlZnQsYy5sZWdlbmRXaWR0aCtnK2YrYVszXSl9ZWxzZSBpZihqPTNEPQo9M0Q9M0QidG9wIil7 aWYoIXIoZFswXSkpdGhpcy5wbG90VG9wPTNEdih0aGlzLnBsb3RUb3AsYy5sZWdlbmRIZWlnaHQr aCtmK2E9ClswXSl9ZWxzZSBpZihqPTNEPTNEPTNEImJvdHRvbSImJiFyKGRbMl0pKXRoaXMubWFy Z2luQm90dG9tPTNEdih0aGlzLm1hcmdpbj0KQm90dG9tLGMubGVnZW5kSGVpZ2h0LWgrZithWzJd KTt0aGlzLmV4dHJhQm90dG9tTWFyZ2luJiYodGhpcy5tYXJnaW5Cb3R0b20rPQo9M0R0aGlzLmV4 dHJhQm90dG9tTWFyZ2luKTt0aGlzLmV4dHJhVG9wTWFyZ2luJiYodGhpcy5wbG90VG9wKz0zRHRo aXMuZXh0cmE9ClRvcE1hcmdpbik7dGhpcy5oYXNDYXJ0ZXNpYW5TZXJpZXMmJnAodGhpcy5heGVz LGZ1bmN0aW9uKGEpe2EuZ2V0T2Zmc2V0KCl9KT0KO3IoZFszXSl8fAotKHRoaXMucGxvdExlZnQr PTNEYlszXSk7cihkWzBdKXx8KHRoaXMucGxvdFRvcCs9M0RiWzBdKTtyKGRbMl0pfHwodGhpcy5t YXI9CmdpbkJvdHRvbSs9M0RiWzJdKTtyKGRbMV0pfHwodGhpcy5tYXJnaW5SaWdodCs9M0RiWzFd KTt0aGlzLnNldENoYXJ0U2l6ZSgpfT0KLHJlZmxvdzpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMs Yz0zRGIub3B0aW9ucy5jaGFydCxkPTNEYi5yZW5kZXJUbyxlPTNEYy53PQppZHRofHxqYihkLCJ3 aWR0aCIpLGY9M0RjLmhlaWdodHx8amIoZCwiaGVpZ2h0IiksYz0zRGE/YS50YXJnZXQ6SSxkPTNE ZnVuY3Q9Cmlvbigpe2lmKGIuY29udGFpbmVyKWIuc2V0U2l6ZShlLGYsITEpLGIuaGFzVXNlclNp emU9M0RudWxsfTtpZighYi5oYXNVc2VyUz0KaXplJiZlJiZmJiYoYz0zRD0zRD0zREl8fGM9M0Q9 M0Q9M0R5KSl7aWYoZSE9M0Q9M0RiLmNvbnRhaW5lcldpZHRofHxmIT0zRD0KPTNEYi5jb250YWlu ZXJIZWlnaHQpY2xlYXJUaW1lb3V0KGIucmVmbG93VGltZW91dCksYT9iLnJlZmxvd1RpbWVvdXQ9 M0RzZXRUPQppbWVvdXQoZCwxMDApOmQoKTtiLmNvbnRhaW5lcldpZHRoPTNECi1lO2IuY29udGFp bmVySGVpZ2h0PTNEZn19LGluaXRSZWZsb3c6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRGZ1 bmN0aW9uKD0KYil7YS5yZWZsb3coYil9O0soSSwicmVzaXplIixiKTtLKGEsImRlc3Ryb3kiLGZ1 bmN0aW9uKCl7VyhJLCJyZXNpemUiLGIpfSl9PQosc2V0U2l6ZTpmdW5jdGlvbihhLGIsYyl7dmFy IGQ9M0R0aGlzLGUsZixnO2QuaXNSZXNpemluZys9M0QxO2c9M0RmdW5jdGlvbig9Cil7ZCYmRChk LCJlbmRSZXNpemUiLG51bGwsZnVuY3Rpb24oKXtkLmlzUmVzaXppbmctPTNEMX0pfTtRYShjLGQp O2Qub2xkQ2hhcj0KdEhlaWdodD0zRGQuY2hhcnRIZWlnaHQ7ZC5vbGRDaGFydFdpZHRoPTNEZC5j aGFydFdpZHRoO2lmKHIoYSkpZC5jaGFydFdpZHRoPQo9M0RlPTNEdigwLHUoYSkpLGQuaGFzVXNl clNpemU9M0QhIWU7aWYocihiKSlkLmNoYXJ0SGVpZ2h0PTNEZj0zRHYoMCx1KGIpKTs9Cih2YT9r YjpHKShkLmNvbnRhaW5lcix7d2lkdGg6ZSsicHgiLGhlaWdodDpmKyJweCJ9LHZhKTtkLnNldENo YXJ0U2l6ZSghMCk7ZD0KLnJlbmRlcmVyLnNldFNpemUoZSwKLWYsYyk7ZC5tYXhUaWNrcz0zRG51 bGw7cChkLmF4ZXMsZnVuY3Rpb24oYSl7YS5pc0RpcnR5PTNEITA7YS5zZXRTY2FsZSgpfSk7PQpw KGQuc2VyaWVzLGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0zRCEwfSk7ZC5pc0RpcnR5TGVnZW5kPTNE ITA7ZC5pc0RpcnR5Qm94PQo9M0QhMDtkLmxheU91dFRpdGxlcygpO2QuZ2V0TWFyZ2lucygpO2Qu cmVkcmF3KGMpO2Qub2xkQ2hhcnRIZWlnaHQ9M0RudWxsO0Q9CihkLCJyZXNpemUiKTt2YT0zRD0z RD0zRCExP2coKTpzZXRUaW1lb3V0KGcsdmEmJnZhLmR1cmF0aW9ufHw1MDApfSxzZXRDaGFydD0K U2l6ZTpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMuaW52ZXJ0ZWQsYz0zRHRoaXMucmVuZGVyZXIs ZD0zRHRoaXMuY2hhcnRXaWR0PQpoLGU9M0R0aGlzLmNoYXJ0SGVpZ2h0LGY9M0R0aGlzLm9wdGlv bnMuY2hhcnQsZz0zRHRoaXMuc3BhY2luZyxoPTNEdGhpcy5jbGk9CnBPZmZzZXQsaSxqLGssbDt0 aGlzLnBsb3RMZWZ0PTNEaT0zRHUodGhpcy5wbG90TGVmdCk7dGhpcy5wbG90VG9wPTNEaj0zRHUo dD0KaGlzLnBsb3RUb3ApO3RoaXMucGxvdFdpZHRoPTNECi1rPTNEdigwLHUoZC1pLXRoaXMubWFy Z2luUmlnaHQpKTt0aGlzLnBsb3RIZWlnaHQ9M0RsPTNEdigwLHUoZS1qLXRoaXMubWFyZz0KaW5C b3R0b20pKTt0aGlzLnBsb3RTaXplWD0zRGI/bDprO3RoaXMucGxvdFNpemVZPTNEYj9rOmw7dGhp cy5wbG90Qm9yZGVyV2lkPQp0aD0zRGYucGxvdEJvcmRlcldpZHRofHwwO3RoaXMuc3BhY2luZ0Jv eD0zRGMuc3BhY2luZ0JveD0zRHt4OmdbM10seTpnWzBdLHc9CmlkdGg6ZC1nWzNdLWdbMV0saGVp Z2h0OmUtZ1swXS1nWzJdfTt0aGlzLnBsb3RCb3g9M0RjLnBsb3RCb3g9M0R7eDppLHk6aix3aT0K ZHRoOmssaGVpZ2h0Omx9O2Q9M0QyKlQodGhpcy5wbG90Qm9yZGVyV2lkdGgvMik7Yj0zREthKHYo ZCxoWzNdKS8yKTtjPTNES2EoPQp2KGQsaFswXSkvMik7dGhpcy5jbGlwQm94PTNEe3g6Yix5OmMs d2lkdGg6VCh0aGlzLnBsb3RTaXplWC12KGQsaFsxXSkvMi1iKSw9CmhlaWdodDpUKHRoaXMucGxv dFNpemVZLXYoZCxoWzJdKS8yLWMpfTthfHxwKHRoaXMuYXhlcyxmdW5jdGlvbihhKXthLnNldEF4 aT0Kc1NpemUoKTsKLWEuc2V0QXhpc1RyYW5zbGF0aW9uKCl9KX0scmVzZXRNYXJnaW5zOmZ1bmN0 aW9uKCl7dmFyIGE9M0R0aGlzLnNwYWNpbmcsYj0KPTNEdGhpcy5tYXJnaW47dGhpcy5wbG90VG9w PTNEbShiWzBdLGFbMF0pO3RoaXMubWFyZ2luUmlnaHQ9M0RtKGJbMV0sYVsxXSk7PQp0aGlzLm1h cmdpbkJvdHRvbT0zRG0oYlsyXSxhWzJdKTt0aGlzLnBsb3RMZWZ0PTNEbShiWzNdLGFbM10pO3Ro aXMuYXhpc09mZnM9CmV0PTNEWzAsMCwwLDBdO3RoaXMuY2xpcE9mZnNldD0zRFswLDAsMCwwXX0s ZHJhd0NoYXJ0Qm94OmZ1bmN0aW9uKCl7dmFyIGE9Cj0zRHRoaXMub3B0aW9ucy5jaGFydCxiPTNE dGhpcy5yZW5kZXJlcixjPTNEdGhpcy5jaGFydFdpZHRoLGQ9M0R0aGlzLmNoYXJ0SD0KZWlnaHQs ZT0zRHRoaXMuY2hhcnRCYWNrZ3JvdW5kLGY9M0R0aGlzLnBsb3RCYWNrZ3JvdW5kLGc9M0R0aGlz LnBsb3RCb3JkZXIsPQpoPTNEdGhpcy5wbG90QkdJbWFnZSxpPTNEYS5ib3JkZXJXaWR0aHx8MCxq PTNEYS5iYWNrZ3JvdW5kQ29sb3Isaz0zRGEucGxvdEI9CmFja2dyb3VuZENvbG9yLGw9M0RhLnBs b3RCYWNrZ3JvdW5kSW1hZ2UsCi1vPTNEYS5wbG90Qm9yZGVyV2lkdGh8fDAsbixzPTNEdGhpcy5w bG90TGVmdCxtPTNEdGhpcy5wbG90VG9wLHA9M0R0aGlzLnBsbz0KdFdpZHRoLHE9M0R0aGlzLnBs b3RIZWlnaHQscj0zRHRoaXMucGxvdEJveCx2PTNEdGhpcy5jbGlwUmVjdCx1PTNEdGhpcy5jbGlw PQpCb3g7bj0zRGkrKGEuc2hhZG93Pzg6MCk7aWYoaXx8ailpZihlKWUuYW5pbWF0ZShlLmNyaXNw KHt3aWR0aDpjLW4saGVpZ2h0OmQ9Ci1ufSkpO2Vsc2V7ZT0zRHtmaWxsOmp8fFF9O2lmKGkpZS5z dHJva2U9M0RhLmJvcmRlckNvbG9yLGVbInN0cm9rZS13aWR0aCJdPQo9M0RpO3RoaXMuY2hhcnRC YWNrZ3JvdW5kPTNEYi5yZWN0KG4vMixuLzIsYy1uLGQtbixhLmJvcmRlclJhZGl1cyxpKS5hdHRy KGU9CikuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYmFja2dyb3VuZCIpLmFkZCgpLnNoYWRvdyhhLnNo YWRvdyl9aWYoaylmP2YuYW5pbWF0ZT0KKHIpOnRoaXMucGxvdEJhY2tncm91bmQ9M0RiLnJlY3Qo cyxtLHAscSwwKS5hdHRyKHtmaWxsOmt9KS5hZGQoKS5zaGFkb3coYS5wPQpsb3RTaGFkb3cpOwot aWYobCloP2guYW5pbWF0ZShyKTp0aGlzLnBsb3RCR0ltYWdlPTNEYi5pbWFnZShsLHMsbSxwLHEp LmFkZCgpO3Y/di5hbmltYXQ9CmUoe3dpZHRoOnUud2lkdGgsaGVpZ2h0OnUuaGVpZ2h0fSk6dGhp cy5jbGlwUmVjdD0zRGIuY2xpcFJlY3QodSk7aWYobylnP2cuYT0KbmltYXRlKGcuY3Jpc3Aoe3g6 cyx5Om0sd2lkdGg6cCxoZWlnaHQ6cX0pKTp0aGlzLnBsb3RCb3JkZXI9M0RiLnJlY3QocyxtLHAs PQpxLDAsLW8pLmF0dHIoe3N0cm9rZTphLnBsb3RCb3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpv LGZpbGw6USx6SW5kZXg6MX0pLmE9CmRkKCk7dGhpcy5pc0RpcnR5Qm94PTNEITF9LHByb3BGcm9t U2VyaWVzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RhLm9wdD0KaW9ucy5jaGFydCxjLGQ9 M0RhLm9wdGlvbnMuc2VyaWVzLGUsZjtwKFsiaW52ZXJ0ZWQiLCJhbmd1bGFyIiwicG9sYXIiXSxm dW5jPQp0aW9uKGcpe2M9M0RGW2IudHlwZXx8Yi5kZWZhdWx0U2VyaWVzVHlwZV07Zj0zRGFbZ118 fGJbZ118fGMmJmMucHJvdG90eXBlW2c9Cl07Ci1mb3IoZT0zRGQmJmQubGVuZ3RoOyFmJiZlLS07 KShjPTNERltkW2VdLnR5cGVdKSYmYy5wcm90b3R5cGVbZ10mJihmPTNEITApOz0KYVtnXT0zRGZ9 KX0sbGlua1NlcmllczpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcyxiPTNEYS5zZXJpZXM7cChiLGZ1 bmN0aW9uKGEpPQp7YS5saW5rZWRTZXJpZXMubGVuZ3RoPTNEMH0pO3AoYixmdW5jdGlvbihiKXt2 YXIgZD0zRGIub3B0aW9ucy5saW5rZWRUbztpZig9CkZhKGQpJiYoZD0zRGQ9M0Q9M0Q9M0QiOnBy ZXZpb3VzIj9hLnNlcmllc1tiLmluZGV4LTFdOmEuZ2V0KGQpKSlkLmxpbmtlZFNlcj0KaWVzLnB1 c2goYiksYi5saW5rZWRQYXJlbnQ9M0RkfSl9LHJlbmRlclNlcmllczpmdW5jdGlvbigpe3AodGhp cy5zZXJpZXMsZnVuPQpjdGlvbihhKXthLnRyYW5zbGF0ZSgpO2Euc2V0VG9vbHRpcFBvaW50cyYm YS5zZXRUb29sdGlwUG9pbnRzKCk7YS5yZW5kZXIoKX09Cil9LHJlbmRlcjpmdW5jdGlvbigpe3Zh ciBhPTNEdGhpcyxiPTNEYS5heGVzLGM9M0RhLnJlbmRlcmVyLGQ9M0RhLm9wdGlvbnMsZT0KPTNE ZC5sYWJlbHMsZj0zRAotZC5jcmVkaXRzLGc7YS5zZXRUaXRsZSgpO2EubGVnZW5kPTNEbmV3IGxi KGEsZC5sZWdlbmQpO2EuZ2V0U3RhY2tzKCk7cChiLGY9CnVuY3Rpb24oYSl7YS5zZXRTY2FsZSgp fSk7YS5nZXRNYXJnaW5zKCk7YS5tYXhUaWNrcz0zRG51bGw7cChiLGZ1bmN0aW9uKGEpez0KYS5z ZXRUaWNrUG9zaXRpb25zKCEwKTthLnNldE1heFRpY2tzKCl9KTthLmFkanVzdFRpY2tBbW91bnRz KCk7YS5nZXRNYXJnaW5zPQooKTthLmRyYXdDaGFydEJveCgpO2EuaGFzQ2FydGVzaWFuU2VyaWVz JiZwKGIsZnVuY3Rpb24oYSl7YS5yZW5kZXIoKX0pO2lmKCE9CmEuc2VyaWVzR3JvdXApYS5zZXJp ZXNHcm91cD0zRGMuZygic2VyaWVzLWdyb3VwIikuYXR0cih7ekluZGV4OjN9KS5hZGQoKTthLj0K cmVuZGVyU2VyaWVzKCk7ZS5pdGVtcyYmcChlLml0ZW1zLGZ1bmN0aW9uKGIpe3ZhciBkPTNEcShl LnN0eWxlLGIuc3R5bGUpLGY9Cj0zRHooZC5sZWZ0KSthLnBsb3RMZWZ0LGc9M0R6KGQudG9wKSth LnBsb3RUb3ArMTI7ZGVsZXRlIGQubGVmdDtkZWxldGUgZC50bz0KcDsKLWMudGV4dChiLmh0bWws ZixnKS5hdHRyKHt6SW5kZXg6Mn0pLmNzcyhkKS5hZGQoKX0pO2lmKGYuZW5hYmxlZCYmIWEuY3Jl ZGl0PQpzKWc9M0RmLmhyZWYsYS5jcmVkaXRzPTNEYy50ZXh0KGYudGV4dCwwLDApLm9uKCJjbGlj ayIsZnVuY3Rpb24oKXtpZihnKWxvY2E9CnRpb24uaHJlZj0zRGd9KS5hdHRyKHthbGlnbjpmLnBv c2l0aW9uLmFsaWduLHpJbmRleDo4fSkuY3NzKGYuc3R5bGUpLmFkZCgpLj0KYWxpZ24oZi5wb3Np dGlvbik7YS5oYXNSZW5kZXJlZD0zRCEwfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlz LGI9M0RhPQouYXhlcyxjPTNEYS5zZXJpZXMsZD0zRGEuY29udGFpbmVyLGUsZj0zRGQmJmQucGFy ZW50Tm9kZTtEKGEsImRlc3Ryb3kiKTtWW2E9Ci5pbmRleF09M0R0O2FiLS07YS5yZW5kZXJUby5y ZW1vdmVBdHRyaWJ1dGUoImRhdGEtaGlnaGNoYXJ0cy1jaGFydCIpO1coYSk7Zj0Kb3IoZT0zRGIu bGVuZ3RoO2UtLTspYltlXT0zRGJbZV0uZGVzdHJveSgpO2ZvcihlPTNEYy5sZW5ndGg7ZS0tOylj W2VdPTNEY1tlPQpdLmRlc3Ryb3koKTsKLXAoInRpdGxlLHN1YnRpdGxlLGNoYXJ0QmFja2dyb3Vu ZCxwbG90QmFja2dyb3VuZCxwbG90QkdJbWFnZSxwbG90Qm9yZGVyLHNlPQpyaWVzR3JvdXAsY2xp cFJlY3QsY3JlZGl0cyxwb2ludGVyLHNjcm9sbGVyLHJhbmdlU2VsZWN0b3IsbGVnZW5kLHJlc2V0 Wm9vbUI9CnV0dG9uLHRvb2x0aXAscmVuZGVyZXIiLnNwbGl0KCIsIiksZnVuY3Rpb24oYil7dmFy IGM9M0RhW2JdO2MmJmMuZGVzdHJveSYmKD0KYVtiXT0zRGMuZGVzdHJveSgpKX0pO2lmKGQpZC5p bm5lckhUTUw9M0QiIixXKGQpLGYmJlBhKGQpO2ZvcihlIGluIGEpZGVsZXRlPQogYVtlXX0saXNS ZWFkeVRvUmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzO3JldHVybiFhYSYmST0zRD0zREku dG9wJiZ5LnI9CmVhZHlTdGF0ZSE9M0Q9M0QiY29tcGxldGUifHxmYSYmIUkuY2Fudmc/KGZhP0xi LnB1c2goZnVuY3Rpb24oKXthLmZpcnN0UmVuZD0KZXIoKX0sYS5vcHRpb25zLmdsb2JhbC5jYW52 YXNUb29sc1VSTCk6eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwKLWZ1bmN0aW9u KCl7eS5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixhLmZpcnN0UmVuZGVyKTt5LnJl YWR5U3RhdGU9Cj0zRD0zRD0zRCJjb21wbGV0ZSImJmEuZmlyc3RSZW5kZXIoKX0pLCExKTohMH0s Zmlyc3RSZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT0KPTNEdGhpcyxiPTNEYS5vcHRpb25zLGM9M0Rh LmNhbGxiYWNrO2lmKGEuaXNSZWFkeVRvUmVuZGVyKCkpe2EuZ2V0Q29udGFpbmVyPQooKTtEKGEs ImluaXQiKTthLnJlc2V0TWFyZ2lucygpO2Euc2V0Q2hhcnRTaXplKCk7YS5wcm9wRnJvbVNlcmll cygpO2EuZ2V0QXg9CmVzKCk7cChiLnNlcmllc3x8W10sZnVuY3Rpb24oYil7YS5pbml0U2VyaWVz KGIpfSk7YS5saW5rU2VyaWVzKCk7RChhLCJiZWZvcj0KZVJlbmRlciIpO2lmKFIuUG9pbnRlcilh LnBvaW50ZXI9M0RuZXcgV2EoYSxiKTthLnJlbmRlcigpO2EucmVuZGVyZXIuZHJhdygpPQo7YyYm Yy5hcHBseShhLFthXSk7cChhLmNhbGxiYWNrcyxmdW5jdGlvbihiKXtiLmFwcGx5KGEsW2FdKX0p O2EuY2xvbmVSZW5kZXI9ClRvKCEwKTsKLUQoYSwibG9hZCIpfX0sc3BsYXNoQXJyYXk6ZnVuY3Rp b24oYSxiKXt2YXIgYz0zRGJbYV0sYz0zRGNhKGMpP2M6W2MsYyxjLGNdPQo7cmV0dXJuW20oYlth KyJUb3AiXSxjWzBdKSxtKGJbYSsiUmlnaHQiXSxjWzFdKSxtKGJbYSsiQm90dG9tIl0sY1syXSks bShiW2E9CisiTGVmdCJdLGNbM10pXX19O1lhLnByb3RvdHlwZS5jYWxsYmFja3M9M0RbXTtYPTNE Ui5DZW50ZXJlZFNlcmllc01peGluPTNEez0KZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7dmFyIGE9M0R0 aGlzLm9wdGlvbnMsYj0zRHRoaXMuY2hhcnQsYz0zRDIqKGEuc2xpY2VkT2ZmPQpzZXR8fDApLGQs ZT0zRGIucGxvdFdpZHRoLTIqYyxmPTNEYi5wbG90SGVpZ2h0LTIqYyxiPTNEYS5jZW50ZXIsYT0z RFttKGJbMF09CiwiNTAlIiksbShiWzFdLCI1MCUiKSxhLnNpemV8fCIxMDAlIixhLmlubmVyU2l6 ZXx8MF0sZz0zREMoZSxmKSxoO3JldHVybiBVYT0KKGEsZnVuY3Rpb24oYSxiKXtoPTNELyUkLy50 ZXN0KGEpO2Q9M0RiPDJ8fGI9M0Q9M0Q9M0QyJiZoO3JldHVybihoP1tlLGYsZyxnPQpdW2JdKnoo YSkvMTAwOgotYSkrKGQ/YzowKX0pfX07dmFyIEVhPTNEZnVuY3Rpb24oKXt9O0VhLnByb3RvdHlw ZT0zRHtpbml0OmZ1bmN0aW9uKGEsYixjKXs9CnRoaXMuc2VyaWVzPTNEYTt0aGlzLmFwcGx5T3B0 aW9ucyhiLGMpO3RoaXMucG9pbnRBdHRyPTNEe307aWYoYS5vcHRpb25zLmNvbD0Kb3JCeVBvaW50 JiYoYj0zRGEub3B0aW9ucy5jb2xvcnN8fGEuY2hhcnQub3B0aW9ucy5jb2xvcnMsdGhpcy5jb2xv cj0zRHRoaXMuPQpjb2xvcnx8YlthLmNvbG9yQ291bnRlcisrXSxhLmNvbG9yQ291bnRlcj0zRD0z RD0zRGIubGVuZ3RoKSlhLmNvbG9yQ291bnRlcj0KPTNEMDthLmNoYXJ0LnBvaW50Q291bnQrKzty ZXR1cm4gdGhpc30sYXBwbHlPcHRpb25zOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0PQpoaXMuc2Vy aWVzLGQ9M0RjLnBvaW50VmFsS2V5LGE9M0RFYS5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNh bGwodGhpcyxhKTs9CnEodGhpcyxhKTt0aGlzLm9wdGlvbnM9M0R0aGlzLm9wdGlvbnM/cSh0aGlz Lm9wdGlvbnMsYSk6YTtpZihkKXRoaXMueT0zRHRoaT0Kc1tkXTtpZih0aGlzLng9M0Q9M0Q9M0QK LXQmJmMpdGhpcy54PTNEYj0zRD0zRD0zRHQ/Yy5hdXRvSW5jcmVtZW50KCk6YjtyZXR1cm4gdGhp c30sb3B0aW9uc1RvT2JqZWN0PQo6ZnVuY3Rpb24oYSl7dmFyIGI9M0R7fSxjPTNEdGhpcy5zZXJp ZXMsZD0zRGMucG9pbnRBcnJheU1hcHx8WyJ5Il0sZT0zRGQubGU9Cm5ndGgsZj0zRDAsZz0zRDA7 aWYodHlwZW9mIGE9M0Q9M0Q9M0QibnVtYmVyInx8YT0zRD0zRD0zRG51bGwpYltkWzBdXT0zRGE7 ZT0KbHNlIGlmKExhKGEpKXtpZihhLmxlbmd0aD5lKXtjPTNEdHlwZW9mIGFbMF07aWYoYz0zRD0z RD0zRCJzdHJpbmciKWIubmFtZT0KPTNEYVswXTtlbHNlIGlmKGM9M0Q9M0Q9M0QibnVtYmVyIili Lng9M0RhWzBdO2YrK31mb3IoO2c8ZTspYltkW2crK11dPTNEYVtmPQorK119ZWxzZSBpZih0eXBl b2YgYT0zRD0zRD0zRCJvYmplY3QiKXtiPTNEYTtpZihhLmRhdGFMYWJlbHMpYy5faGFzUG9pbnRM YWI9CmVscz0zRCEwO2lmKGEubWFya2VyKWMuX2hhc1BvaW50TWFya2Vycz0zRCEwfXJldHVybiBi fSxkZXN0cm95OmZ1bmN0aW9uKCl7dj0KYXIgYT0zRHRoaXMuc2VyaWVzLmNoYXJ0LGI9M0RhLmhv dmVyUG9pbnRzLGM7YS5wb2ludENvdW50LS07Ci1pZihiJiYodGhpcy5zZXRTdGF0ZSgpLGphKGIs dGhpcyksIWIubGVuZ3RoKSlhLmhvdmVyUG9pbnRzPTNEbnVsbDtpZih0aGlzPQo9M0Q9M0Q9M0Rh LmhvdmVyUG9pbnQpdGhpcy5vbk1vdXNlT3V0KCk7aWYodGhpcy5ncmFwaGljfHx0aGlzLmRhdGFM YWJlbClXKHQ9CmhpcyksdGhpcy5kZXN0cm95RWxlbWVudHMoKTt0aGlzLmxlZ2VuZEl0ZW0mJmEu bGVnZW5kLmRlc3Ryb3lJdGVtKHRoaXMpO2Zvcj0KKGMgaW4gdGhpcyl0aGlzW2NdPTNEbnVsbH0s ZGVzdHJveUVsZW1lbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTNEImdyYXBoaWMsPQpkYXRhTGFi ZWwsZGF0YUxhYmVsVXBwZXIsZ3JvdXAsY29ubmVjdG9yLHNoYWRvd0dyb3VwIi5zcGxpdCgiLCIp LGIsYz0zRDY7Yy09Ci07KWI9M0RhW2NdLHRoaXNbYl0mJih0aGlzW2JdPTNEdGhpc1tiXS5kZXN0 cm95KCkpfSxnZXRMYWJlbENvbmZpZzpmdW5jdGlvbj0KKCl7cmV0dXJue3g6dGhpcy5jYXRlZ29y eSx5OnRoaXMueSxrZXk6dGhpcy5uYW1lfHx0aGlzLmNhdGVnb3J5LHNlcmllczp0aGlzPQouc2Vy aWVzLAotcG9pbnQ6dGhpcyxwZXJjZW50YWdlOnRoaXMucGVyY2VudGFnZSx0b3RhbDp0aGlzLnRv dGFsfHx0aGlzLnN0YWNrVG90YWx9fSw9CnRvb2x0aXBGb3JtYXR0ZXI6ZnVuY3Rpb24oYSl7dmFy IGI9M0R0aGlzLnNlcmllcyxjPTNEYi50b29sdGlwT3B0aW9ucyxkPTNEbT0KKGMudmFsdWVEZWNp bWFscywiIiksZT0zRGMudmFsdWVQcmVmaXh8fCIiLGY9M0RjLnZhbHVlU3VmZml4fHwiIjtwKGIu cG9pbnRBPQpycmF5TWFwfHxbInkiXSxmdW5jdGlvbihiKXtiPTNEIntwb2ludC4iK2I7aWYoZXx8 ZilhPTNEYS5yZXBsYWNlKGIrIn0iLGUrYis9CiJ9IitmKTthPTNEYS5yZXBsYWNlKGIrIn0iLGIr IjosLiIrZCsiZn0iKX0pO3JldHVybiBJYShhLHtwb2ludDp0aGlzLHNlcmllcz0KOnRoaXMuc2Vy aWVzfSl9LGZpcmVQb2ludEV2ZW50OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0zRHRoaXMsZT0zRHRo aXMuc2VyaWVzPQoub3B0aW9uczsoZS5wb2ludC5ldmVudHNbYV18fGQub3B0aW9ucyYmZC5vcHRp b25zLmV2ZW50cyYmZC5vcHRpb25zLmV2ZW50c1s9CmFdKSYmCi10aGlzLmltcG9ydEV2ZW50cygp O2E9M0Q9M0Q9M0QiY2xpY2siJiZlLmFsbG93UG9pbnRTZWxlY3QmJihjPTNEZnVuY3Rpb24oYT0K KXtkLnNlbGVjdChudWxsLGEuY3RybEtleXx8YS5tZXRhS2V5fHxhLnNoaWZ0S2V5KX0pO0QodGhp cyxhLGIsYyl9fTt2YXIgTz0KPTNEZnVuY3Rpb24oKXt9O08ucHJvdG90eXBlPTNEe2lzQ2FydGVz aWFuOiEwLHR5cGU6ImxpbmUiLHBvaW50Q2xhc3M6RWEsc29yPQp0ZWQ6ITAscmVxdWlyZVNvcnRp bmc6ITAscG9pbnRBdHRyVG9PcHRpb25zOntzdHJva2U6ImxpbmVDb2xvciIsInN0cm9rZS13aWQ9 CnRoIjoibGluZVdpZHRoIixmaWxsOiJmaWxsQ29sb3IiLHI6InJhZGl1cyJ9LGF4aXNUeXBlczpb InhBeGlzIiwieUF4aXMiXSxjbz0KbG9yQ291bnRlcjowLHBhcmFsbGVsQXJyYXlzOlsieCIsInki XSxpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLGQsZSxmPQo9M0RhLnNlcmllcyxnPTNE ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbShhLm9wdGlvbnMuaW5kZXgsYS5faSktbShiLm9wdGlvbnMu aW49CmRleCwKLWIuX2kpfTtjLmNoYXJ0PTNEYTtjLm9wdGlvbnM9M0RiPTNEYy5zZXRPcHRpb25z KGIpO2MubGlua2VkU2VyaWVzPTNEW107Yy5iPQppbmRBeGVzKCk7cShjLHtuYW1lOmIubmFtZSxz dGF0ZToiIixwb2ludEF0dHI6e30sdmlzaWJsZTpiLnZpc2libGUhPTNEPTNEITE9CixzZWxlY3Rl ZDpiLnNlbGVjdGVkPTNEPTNEPTNEITB9KTtpZihmYSliLmFuaW1hdGlvbj0zRCExO2U9M0RiLmV2 ZW50cztmb3IoZD0KIGluIGUpSyhjLGQsZVtkXSk7aWYoZSYmZS5jbGlja3x8Yi5wb2ludCYmYi5w b2ludC5ldmVudHMmJmIucG9pbnQuZXZlbnRzLmNsPQppY2t8fGIuYWxsb3dQb2ludFNlbGVjdClh LnJ1blRyYWNrZXJDbGljaz0zRCEwO2MuZ2V0Q29sb3IoKTtjLmdldFN5bWJvbCgpO3A9CihjLnBh cmFsbGVsQXJyYXlzLGZ1bmN0aW9uKGEpe2NbYSsiRGF0YSJdPTNEW119KTtjLnNldERhdGEoYi5k YXRhLCExKTtpZihjLj0KaXNDYXJ0ZXNpYW4pYS5oYXNDYXJ0ZXNpYW5TZXJpZXM9M0QhMDtmLnB1 c2goYyk7Yy5faT0zRGYubGVuZ3RoLTE7b2IoZixnKTt0PQpoaXMueUF4aXMmJgotb2IodGhpcy55 QXhpcy5zZXJpZXMsZyk7cChmLGZ1bmN0aW9uKGEsYil7YS5pbmRleD0zRGI7YS5uYW1lPTNEYS5u YW1lfHwiU2U9CnJpZXMgIisoYisxKX0pfSxiaW5kQXhlczpmdW5jdGlvbigpe3ZhciBhPTNEdGhp cyxiPTNEYS5vcHRpb25zLGM9M0RhLmNoYXJ0LD0KZDtwKGEuYXhpc1R5cGVzfHxbXSxmdW5jdGlv bihlKXtwKGNbZV0sZnVuY3Rpb24oYyl7ZD0zRGMub3B0aW9ucztpZihiW2VdPTNEPQo9M0Q9M0Rk LmluZGV4fHxiW2VdIT0zRD0zRHQmJmJbZV09M0Q9M0Q9M0RkLmlkfHxiW2VdPTNEPTNEPTNEdCYm ZC5pbmRleD0zRD0KPTNEPTNEMCljLnNlcmllcy5wdXNoKGEpLGFbZV09M0RjLGMuaXNEaXJ0eT0z RCEwfSk7IWFbZV0mJmEub3B0aW9uYWxBeGlzIT0KPTNEPTNEZSYmcmEoMTgsITApfSl9LHVwZGF0 ZVBhcmFsbGVsQXJyYXlzOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0RhLnNlcmllcyxkPQo9M0Rhcmd1 bWVudHM7cChjLnBhcmFsbGVsQXJyYXlzLHR5cGVvZiBiPTNEPTNEPTNEIm51bWJlciI/ZnVuY3Rp b24oZCl7dmFyIGY9Cj0zRGQ9M0Q9M0Q9M0QieSImJmMudG9ZRGF0YT9jLnRvWURhdGEoYSk6YVtk XTsKLWNbZCsiRGF0YSJdW2JdPTNEZn06ZnVuY3Rpb24oYSl7QXJyYXkucHJvdG90eXBlW2JdLmFw cGx5KGNbYSsiRGF0YSJdLEFycmF5PQoucHJvdG90eXBlLnNsaWNlLmNhbGwoZCwyKSl9KX0sYXV0 b0luY3JlbWVudDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5vcHRpb249CnMsYj0zRHRoaXMueElu Y3JlbWVudCxiPTNEbShiLGEucG9pbnRTdGFydCwwKTt0aGlzLnBvaW50SW50ZXJ2YWw9M0RtKHRo aXMucD0Kb2ludEludGVydmFsLGEucG9pbnRJbnRlcnZhbCwxKTt0aGlzLnhJbmNyZW1lbnQ9M0Ri K3RoaXMucG9pbnRJbnRlcnZhbDtyZXR1PQpybiBifSxnZXRTZWdtZW50czpmdW5jdGlvbigpe3Zh ciBhPTNELTEsYj0zRFtdLGMsZD0zRHRoaXMucG9pbnRzLGU9M0RkLmxlbmc9CnRoO2lmKGUpaWYo dGhpcy5vcHRpb25zLmNvbm5lY3ROdWxscyl7Zm9yKGM9M0RlO2MtLTspZFtjXS55PTNEPTNEPTNE bnVsbCYmZD0KLnNwbGljZShjLDEpO2QubGVuZ3RoJiYoYj0zRFtkXSl9ZWxzZSBwKGQsZnVuY3Rp b24oYyxnKXtjLnk9M0Q9M0Q9M0RudWxsPyhnPQo+YSsxJiZiLnB1c2goZC5zbGljZShhKwotMSxn KSksYT0zRGcpOmc9M0Q9M0Q9M0RlLTEmJmIucHVzaChkLnNsaWNlKGErMSxnKzEpKX0pO3RoaXMu c2VnbWVudHM9M0RifSw9CnNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLmNoYXJ0 LGM9M0RiLm9wdGlvbnMucGxvdE9wdGlvbnMsYj0zRGIudT0Kc2VyT3B0aW9uc3x8e30sZD0zRGIu cGxvdE9wdGlvbnN8fHt9LGU9M0RjW3RoaXMudHlwZV07dGhpcy51c2VyT3B0aW9ucz0zRGE7PQpj PTNEdyhlLGMuc2VyaWVzLGEpO3RoaXMudG9vbHRpcE9wdGlvbnM9M0R3KEUudG9vbHRpcCxFLnBs b3RPcHRpb25zW3RoaXMudHk9CnBlXS50b29sdGlwLGIudG9vbHRpcCxkLnNlcmllcyYmZC5zZXJp ZXMudG9vbHRpcCxkW3RoaXMudHlwZV0mJmRbdGhpcy50eXBlXT0KLnRvb2x0aXAsYS50b29sdGlw KTtlLm1hcmtlcj0zRD0zRD0zRG51bGwmJmRlbGV0ZSBjLm1hcmtlcjtyZXR1cm4gY30sZ2V0Q29s PQpvcjpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5vcHRpb25zLGI9M0R0aGlzLnVzZXJPcHRpb25z LGM9M0R0aGlzLmNoYXJ0Lm9wdGk9Cm9ucy5jb2xvcnMsZD0zRHRoaXMuY2hhcnQuY291bnRlcnMs Ci1lO2U9M0RhLmNvbG9yfHxiYVt0aGlzLnR5cGVdLmNvbG9yO2lmKCFlJiYhYS5jb2xvckJ5UG9p bnQpcihiLl9jb2xvckluZGV4KT0KP2E9M0RiLl9jb2xvckluZGV4OihiLl9jb2xvckluZGV4PTNE ZC5jb2xvcixhPTNEZC5jb2xvcisrKSxlPTNEY1thXTt0aGlzLmNvPQpsb3I9M0RlO2Qud3JhcENv bG9yKGMubGVuZ3RoKX0sZ2V0U3ltYm9sOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLnVzZXJPcHRp b249CnMsYj0zRHRoaXMub3B0aW9ucy5tYXJrZXIsYz0zRHRoaXMuY2hhcnQsZD0zRGMub3B0aW9u cy5zeW1ib2xzLGM9M0RjLmNvdW50ZT0KcnM7dGhpcy5zeW1ib2w9M0RiLnN5bWJvbDtpZighdGhp cy5zeW1ib2wpcihhLl9zeW1ib2xJbmRleCk/YT0zRGEuX3N5bWJvbEluPQpkZXg6KGEuX3N5bWJv bEluZGV4PTNEYy5zeW1ib2wsYT0zRGMuc3ltYm9sKyspLHRoaXMuc3ltYm9sPTNEZFthXTtpZigv XnVybC89Ci50ZXN0KHRoaXMuc3ltYm9sKSliLnJhZGl1cz0zRDA7Yy53cmFwU3ltYm9sKGQubGVu Z3RoKX0sZHJhd0xlZ2VuZFN5bWJvbDpOLj0KZHJhd0xpbmVNYXJrZXIsCi1zZXREYXRhOmZ1bmN0 aW9uKGEsYixjLGQpe3ZhciBlPTNEdGhpcyxmPTNEZS5wb2ludHMsZz0zRGYmJmYubGVuZ3RofHww LGgsaT0KPTNEZS5vcHRpb25zLGo9M0RlLmNoYXJ0LGs9M0RudWxsLGw9M0RlLnhBeGlzLG89M0Rs JiYhIWwuY2F0ZWdvcmllcyxuPTNEZS50PQpvb2x0aXBQb2ludHMscz0zRGkudHVyYm9UaHJlc2hv bGQscT0zRHRoaXMueERhdGEscj0zRHRoaXMueURhdGEsdj0zRChoPTNEZS49CnBvaW50QXJyYXlN YXApJiZoLmxlbmd0aCxhPTNEYXx8W107aD0zRGEubGVuZ3RoO2I9M0RtKGIsITApO2lmKGQhPTNE PTNEITEmJj0KaCYmZz0zRD0zRD0zRGgmJiFlLmNyb3BwZWQmJiFlLmhhc0dyb3VwZWREYXRhKXAo YSxmdW5jdGlvbihhLGIpe2ZbYl0udXBkYXRlPQooYSwhMSl9KTtlbHNle2UueEluY3JlbWVudD0z RG51bGw7ZS5wb2ludFJhbmdlPTNEbz8xOmkucG9pbnRSYW5nZTtlLmNvbG9yQ289CnVudGVyPTNE MDtwKHRoaXMucGFyYWxsZWxBcnJheXMsZnVuY3Rpb24oYSl7ZVthKyJEYXRhIl0ubGVuZ3RoPTNE MH0pO2lmKHMmJj0KaD5zKXtmb3IoYz0zRDA7az0zRD0zRD0zRG51bGwmJmM8aDspaz0zRAotYVtj XSxjKys7aWYoaGEoaykpe289M0RtKGkucG9pbnRTdGFydCwwKTtpPTNEbShpLnBvaW50SW50ZXJ2 YWwsMSk7Zm9yKGM9M0Q9CjA7YzxoO2MrKylxW2NdPTNEbyxyW2NdPTNEYVtjXSxvKz0zRGk7ZS54 SW5jcmVtZW50PTNEb31lbHNlIGlmKExhKGspKWlmKHYpZj0Kb3IoYz0zRDA7YzxoO2MrKylpPTNE YVtjXSxxW2NdPTNEaVswXSxyW2NdPTNEaS5zbGljZSgxLHYrMSk7ZWxzZSBmb3IoYz0zRDA7PQpj PGg7YysrKWk9M0RhW2NdLHFbY109M0RpWzBdLHJbY109M0RpWzFdO2Vsc2UgcmEoMTIpfWVsc2Ug Zm9yKGM9M0QwO2M8aDtjKys9CilpZihhW2NdIT0zRD0zRHQmJihpPTNEe3NlcmllczplfSxlLnBv aW50Q2xhc3MucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5hcHBseT0KKGksW2FbY11dKSxlLnVwZGF0 ZVBhcmFsbGVsQXJyYXlzKGksYyksbyYmaS5uYW1lKSlsLm5hbWVzW2kueF09M0RpLm5hbWU7RmEo PQpyWzBdKSYmcmEoMTQsITApO2UuZGF0YT0zRFtdO2Uub3B0aW9ucy5kYXRhPTNEYTtmb3IoYz0z RGc7Yy0tOylmW2NdJiZmW2NdLmQ9CmVzdHJveSYmZltjXS5kZXN0cm95KCk7Ci1pZihuKW4ubGVu Z3RoPTNEMDtpZihsKWwubWluUmFuZ2U9M0RsLnVzZXJNaW5SYW5nZTtlLmlzRGlydHk9M0RlLmlz RGlydHlEYT0KdGE9M0RqLmlzRGlydHlCb3g9M0QhMDtjPTNEITF9YiYmai5yZWRyYXcoYyl9LHBy b2Nlc3NEYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPQo9M0R0aGlzLnhEYXRhLGM9M0R0aGlzLnlEYXRh LGQ9M0RiLmxlbmd0aCxlO2U9M0QwO3ZhciBmLGcsaD0zRHRoaXMueEF4aXMsaT0KPTNEdGhpcy5v cHRpb25zLGo9M0RpLmNyb3BUaHJlc2hvbGQsaz0zRDAsbD0zRHRoaXMuaXNDYXJ0ZXNpYW4sbyxu O2lmKGwmJiF0PQpoaXMuaXNEaXJ0eSYmIWguaXNEaXJ0eSYmIXRoaXMueUF4aXMuaXNEaXJ0eSYm IWEpcmV0dXJuITE7aWYobCYmdGhpcy5zb3J0ZWQ9CiYmKCFqfHxkPmp8fHRoaXMuZm9yY2VDcm9w KSlpZihvPTNEaC5taW4sbj0zRGgubWF4LGJbZC0xXTxvfHxiWzBdPm4pYj0zRFtdLD0KYz0zRFtd O2Vsc2UgaWYoYlswXTxvfHxiW2QtMV0+billPTNEdGhpcy5jcm9wRGF0YSh0aGlzLnhEYXRhLHRo aXMueURhdGEsbyxuPQopLGI9M0RlLnhEYXRhLGM9M0RlLnlEYXRhLAotZT0zRGUuc3RhcnQsZj0z RCEwLGs9M0RiLmxlbmd0aDtmb3IoZD0zRGIubGVuZ3RoLTE7ZD49M0QwO2QtLSlhPTNEYltkXS1i W2Q9Ci0xXSwhZiYmYltkXT5vJiZiW2RdPG4mJmsrKyxhPjAmJihnPTNEPTNEPTNEdHx8YTxnKT9n PTNEYTphPDAmJnRoaXMucmVxdWlyZT0KU29ydGluZyYmcmEoMTUpO3RoaXMuY3JvcHBlZD0zRGY7 dGhpcy5jcm9wU3RhcnQ9M0RlO3RoaXMucHJvY2Vzc2VkWERhdGE9M0RiPQo7dGhpcy5wcm9jZXNz ZWRZRGF0YT0zRGM7dGhpcy5hY3RpdmVQb2ludENvdW50PTNEaztpZihpLnBvaW50UmFuZ2U9M0Q9 M0Q9M0Q9Cm51bGwpdGhpcy5wb2ludFJhbmdlPTNEZ3x8MTt0aGlzLmNsb3Nlc3RQb2ludFJhbmdl PTNEZ30sY3JvcERhdGE6ZnVuY3Rpb24oYT0KLGIsYyxkKXt2YXIgZT0zRGEubGVuZ3RoLGY9M0Qw LGc9M0RlLGg9M0RtKHRoaXMuY3JvcFNob3VsZGVyLDEpLGk7Zm9yKGk9M0QwPQo7aTxlO2krKylp ZihhW2ldPj0zRGMpe2Y9M0R2KDAsaS1oKTticmVha31mb3IoO2k8ZTtpKyspaWYoYVtpXT5kKXtn PTNEaStoO2I9CnJlYWt9cmV0dXJue3hEYXRhOmEuc2xpY2UoZixnKSx5RGF0YTpiLnNsaWNlKGYs Ci1nKSxzdGFydDpmLGVuZDpnfX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRo aXMub3B0aW9ucy5kYXRhLGI9Cj0zRHRoaXMuZGF0YSxjLGQ9M0R0aGlzLnByb2Nlc3NlZFhEYXRh LGU9M0R0aGlzLnByb2Nlc3NlZFlEYXRhLGY9M0R0aGlzLnBvaT0KbnRDbGFzcyxnPTNEZC5sZW5n dGgsaD0zRHRoaXMuY3JvcFN0YXJ0fHwwLGksaj0zRHRoaXMuaGFzR3JvdXBlZERhdGEsayxsPTNE PQpbXSxvO2lmKCFiJiYhailiPTNEW10sYi5sZW5ndGg9M0RhLmxlbmd0aCxiPTNEdGhpcy5kYXRh PTNEYjtmb3Iobz0zRDA7bzxnO289CisrKWk9M0RoK28saj9sW29dPTNEKG5ldyBmKS5pbml0KHRo aXMsW2Rbb11dLmNvbmNhdChxYShlW29dKSkpOihiW2ldP2s9M0RiWz0KaV06YVtpXSE9M0Q9M0R0 JiYoYltpXT0zRGs9M0QobmV3IGYpLmluaXQodGhpcyxhW2ldLGRbb10pKSxsW29dPTNEayk7aWYo YiYmPQooZyE9M0Q9M0QoYz0zRGIubGVuZ3RoKXx8aikpZm9yKG89M0QwO288YztvKyspaWYobz0z RD0zRD0zRGgmJiFqJiYobys9M0RnKSw9CmJbb10pYltvXS5kZXN0cm95RWxlbWVudHMoKSxiW29d LnBsb3RYPTNECi10O3RoaXMuZGF0YT0zRGI7dGhpcy5wb2ludHM9M0RsfSxnZXRFeHRyZW1lczpm dW5jdGlvbihhKXt2YXIgYj0zRHRoaXMueUF4aT0KcyxjPTNEdGhpcy5wcm9jZXNzZWRYRGF0YSxk LGU9M0RbXSxmPTNEMDtkPTNEdGhpcy54QXhpcy5nZXRFeHRyZW1lcygpO3ZhciBnPQo9M0RkLm1p bixoPTNEZC5tYXgsaSxqLGssbCxhPTNEYXx8dGhpcy5zdGFja2VkWURhdGF8fHRoaXMucHJvY2Vz c2VkWURhdGE7ZD0KPTNEYS5sZW5ndGg7Zm9yKGw9M0QwO2w8ZDtsKyspaWYoaj0zRGNbbF0saz0z RGFbbF0saT0zRGshPTNEPTNEbnVsbCYmayE9M0Q9Cj0zRHQmJighYi5pc0xvZ3x8ay5sZW5ndGh8 fGs+MCksaj0zRHRoaXMuZ2V0RXh0cmVtZXNGcm9tQWxsfHx0aGlzLmNyb3BwZWR8fD0KKGNbbCsx XXx8aik+PTNEZyYmKGNbbC0xXXx8aik8PTNEaCxpJiZqKWlmKGk9M0RrLmxlbmd0aClmb3IoO2kt LTspa1tpXSE9M0Q9Cj0zRG51bGwmJihlW2YrK109M0RrW2ldKTtlbHNlIGVbZisrXT0zRGs7dGhp cy5kYXRhTWluPTNEbSh2b2lkIDAsTmEoZSkpO3RoaT0Kcy5kYXRhTWF4PTNEbSh2b2lkIDAsQmEo ZSkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt0aGlzLnByb2Nlc3NlZFhEYXRhfHwKLXRoaXMucHJv Y2Vzc0RhdGEoKTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7Zm9yKHZhciBhPTNEdGhpcy5vcHRpb25z LGI9M0RhLnN0PQphY2tpbmcsYz0zRHRoaXMueEF4aXMsZD0zRGMuY2F0ZWdvcmllcyxlPTNEdGhp cy55QXhpcyxmPTNEdGhpcy5wb2ludHMsZz0zRGY9Ci5sZW5ndGgsaD0zRCEhdGhpcy5tb2RpZnlW YWx1ZSxpPTNEYS5wb2ludFBsYWNlbWVudCxqPTNEaT0zRD0zRD0zRCJiZXR3ZWVuIj0KfHxoYShp KSxrPTNEYS50aHJlc2hvbGQsYT0zRDA7YTxnO2ErKyl7dmFyIGw9M0RmW2FdLG89M0RsLngsbj0z RGwueSxzPTNEbC5sPQpvdyxwPTNEYiYmZS5zdGFja3NbKHRoaXMubmVnU3RhY2tzJiZuPGs/Ii0i OiIiKSt0aGlzLnN0YWNrS2V5XTtpZihlLmlzTG9nJiY9Cm48PTNEMClsLnk9M0RuPTNEbnVsbDts LnBsb3RYPTNEYy50cmFuc2xhdGUobywwLDAsMCwxLGksdGhpcy50eXBlPTNEPTNEPTNEIj0KZmxh Z3MiKTtpZihiJiZ0aGlzLnZpc2libGUmJnAmJnBbb10pcD0zRHBbb10sbj0zRHAucG9pbnRzW3Ro aXMuaW5kZXgrIiwiK2FdPQoscz0zRG5bMF0sbj0zRG5bMV0scz0zRD0zRD0zRDAmJihzPTNEbShr LGUubWluKSksCi1lLmlzTG9nJiZzPD0zRDAmJihzPTNEbnVsbCksbC50b3RhbD0zRGwuc3RhY2tU b3RhbD0zRHAudG90YWwsbC5wZXJjZW50YWdlPQo9M0RwLnRvdGFsJiZsLnkvcC50b3RhbCoxMDAs bC5zdGFja1k9M0RuLHAuc2V0T2Zmc2V0KHRoaXMucG9pbnRYT2Zmc2V0fHwwLHQ9Cmhpcy5iYXJX fHwwKTtsLnlCb3R0b209M0RyKHMpP2UudHJhbnNsYXRlKHMsMCwxLDAsMSk6bnVsbDtoJiYobj0z RHRoaXMubW9kaT0KZnlWYWx1ZShuLGwpKTtsLnBsb3RZPTNEdHlwZW9mIG49M0Q9M0Q9M0QibnVt YmVyIiYmbiE9M0Q9M0RJbmZpbml0eT9lLnRyYW5zPQpsYXRlKG4sMCwxLDAsMSk6dDtsLmNsaWVu dFg9M0RqP2MudHJhbnNsYXRlKG8sMCwwLDAsMSk6bC5wbG90WDtsLm5lZ2F0aXZlPQo9M0RsLnk8 KGt8fDApO2wuY2F0ZWdvcnk9M0RkJiZkW2wueF0hPTNEPTNEdD9kW2wueF06bC54fXRoaXMuZ2V0 U2VnbWVudHMoKX09CixhbmltYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5jaGFydCxjPTNE Yi5yZW5kZXJlcixkO2Q9M0R0aGlzLm9wdGlvbnMuYT0KbmltYXRpb247dmFyIGU9M0R0aGlzLmNs aXBCb3h8fAotYi5jbGlwQm94LGY9M0RiLmludmVydGVkLGc7aWYoZCYmIWNhKGQpKWQ9M0RiYVt0 aGlzLnR5cGVdLmFuaW1hdGlvbjtnPTNEWyI9Cl9zaGFyZWRDbGlwIixkLmR1cmF0aW9uLGQuZWFz aW5nLGUuaGVpZ2h0XS5qb2luKCIsIik7YT8oYT0zRGJbZ10sZD0zRGJbZysibT0KIl0sYXx8KGJb Z109M0RhPTNEYy5jbGlwUmVjdChxKGUse3dpZHRoOjB9KSksYltnKyJtIl09M0RkPTNEYy5jbGlw UmVjdCgtOTksPQpmPy1iLnBsb3RMZWZ0Oi1iLnBsb3RUb3AsOTksZj9iLmNoYXJ0V2lkdGg6Yi5j aGFydEhlaWdodCkpLHRoaXMuZ3JvdXAuY2xpcCg9CmEpLHRoaXMubWFya2VyR3JvdXAuY2xpcChk KSx0aGlzLnNoYXJlZENsaXBLZXk9M0RnKTooKGE9M0RiW2ddKSYmYS5hbmltYXRlKD0Ke3dpZHRo OmIucGxvdFNpemVYfSxkKSxiW2crIm0iXSYmYltnKyJtIl0uYW5pbWF0ZSh7d2lkdGg6Yi5wbG90 U2l6ZVgrOTl9LGQpPQosdGhpcy5hbmltYXRlPTNEbnVsbCl9LGFmdGVyQW5pbWF0ZTpmdW5jdGlv bigpe3ZhciBhPTNEdGhpcy5jaGFydCxiPTNEdGhpcy49CnNoYXJlZENsaXBLZXksCi1jPTNEdGhp cy5ncm91cCxkPTNEdGhpcy5jbGlwQm94O2lmKGMmJnRoaXMub3B0aW9ucy5jbGlwIT0zRD0zRCEx KXtpZighYnx8IT0KZCljLmNsaXAoZD9hLnJlbmRlcmVyLmNsaXBSZWN0KGQpOmEuY2xpcFJlY3Qp O3RoaXMubWFya2VyR3JvdXAuY2xpcCgpfUQodGhpPQpzLCJhZnRlckFuaW1hdGUiKTtzZXRUaW1l b3V0KGZ1bmN0aW9uKCl7YiYmYVtiXSYmKGR8fChhW2JdPTNEYVtiXS5kZXN0cm95KCk9CiksYVti KyJtIl0mJihhW2IrIm0iXT0zRGFbYisibSJdLmRlc3Ryb3koKSkpfSwxMDApfSxkcmF3UG9pbnRz OmZ1bmN0aW9uKCl7dj0KYXIgYSxiPTNEdGhpcy5wb2ludHMsYz0zRHRoaXMuY2hhcnQsZCxlLGYs ZyxoLGksaixrO2Q9M0R0aGlzLm9wdGlvbnMubWFya2VyPQo7dmFyIGw9M0R0aGlzLnBvaW50QXR0 clsiIl0sbyxuPTNEdGhpcy5tYXJrZXJHcm91cCxzPTNEbShkLmVuYWJsZWQsdGhpcy5hY3Q9Cml2 ZVBvaW50Q291bnQ8MC41KnRoaXMueEF4aXMubGVuL2QucmFkaXVzKTtpZihkLmVuYWJsZWQhPTNE PTNEITF8fHRoaXMuX2hhcz0KUG9pbnRNYXJrZXJzKWZvcihmPTNECi1iLmxlbmd0aDtmLS07KWlm KGc9M0RiW2ZdLGQ9M0RUKGcucGxvdFgpLGU9M0RnLnBsb3RZLGs9M0RnLmdyYXBoaWMsaT0zRGcu bT0KYXJrZXJ8fHt9LGE9M0RzJiZpLmVuYWJsZWQ9M0Q9M0Q9M0R0fHxpLmVuYWJsZWQsbz0zRGMu aXNJbnNpZGVQbG90KHUoZCksZSxjPQouaW52ZXJ0ZWQpLGEmJmUhPTNEPTNEdCYmIWlzTmFOKGUp JiZnLnkhPTNEPTNEbnVsbClpZihhPTNEZy5wb2ludEF0dHJbZy5zZWw9CmVjdGVkPyJzZWxlY3Qi OiIiXXx8bCxoPTNEYS5yLGk9M0RtKGkuc3ltYm9sLHRoaXMuc3ltYm9sKSxqPTNEaS5pbmRleE9m KCJ1cj0KbCIpPTNEPTNEPTNEMCxrKWtbbz8ic2hvdyI6ImhpZGUiXSghMCkuYW5pbWF0ZShxKHt4 OmQtaCx5OmUtaH0say5zeW1ib2xOYW1lPQo/e3dpZHRoOjIqaCxoZWlnaHQ6MipofTp7fSkpO2Vs c2V7aWYobyYmKGg+MHx8aikpZy5ncmFwaGljPTNEYy5yZW5kZXJlci5zeW09CmJvbChpLGQtaCxl LWgsMipoLDIqaCkuYXR0cihhKS5hZGQobil9ZWxzZSBpZihrKWcuZ3JhcGhpYz0zRGsuZGVzdHJv eSgpfSxjbz0KbnZlcnRBdHRyaWJzOmZ1bmN0aW9uKGEsCi1iLGMsZCl7dmFyIGU9M0R0aGlzLnBv aW50QXR0clRvT3B0aW9ucyxmLGcsaD0zRHt9LGE9M0RhfHx7fSxiPTNEYnx8e30sYz0zRD0KY3x8 e30sZD0zRGR8fHt9O2ZvcihmIGluIGUpZz0zRGVbZl0saFtmXT0zRG0oYVtnXSxiW2ZdLGNbZl0s ZFtmXSk7cmV0dXJuIGh9PQosZ2V0QXR0cmliczpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcyxiPTNE YS5vcHRpb25zLGM9M0RiYVthLnR5cGVdLm1hcmtlcj9iLm09CmFya2VyOmIsZD0zRGMuc3RhdGVz LGU9M0RkLmhvdmVyLGYsZz0zRGEuY29sb3I7Zj0zRHtzdHJva2U6ZyxmaWxsOmd9O3ZhciBoPQo9 M0RhLnBvaW50c3x8W10saSxqPTNEW10sayxsPTNEYS5wb2ludEF0dHJUb09wdGlvbnM7az0zRGEu aGFzUG9pbnRTcGVjaWZpY089CnB0aW9uczt2YXIgbz0zRGIubmVnYXRpdmVDb2xvcixuPTNEYy5s aW5lQ29sb3Iscz0zRGMuZmlsbENvbG9yO2k9M0RiLnR1cmJvVD0KaHJlc2hvbGQ7dmFyIG07Yi5t YXJrZXI/KGUucmFkaXVzPTNEZS5yYWRpdXN8fGMucmFkaXVzKzIsZS5saW5lV2lkdGg9M0RlLmxp PQpuZVdpZHRofHxjLmxpbmVXaWR0aCsxKTplLmNvbG9yPTNECi1lLmNvbG9yfHx5YShlLmNvbG9y fHxnKS5icmlnaHRlbihlLmJyaWdodG5lc3MpLmdldCgpO2pbIiJdPTNEYS5jb252ZXJ0QXR0cj0K aWJzKGMsZik7cChbImhvdmVyIiwic2VsZWN0Il0sZnVuY3Rpb24oYil7altiXT0zRGEuY29udmVy dEF0dHJpYnMoZFtiXSxqWyIiPQpdKX0pO2EucG9pbnRBdHRyPTNEajtnPTNEaC5sZW5ndGg7aWYo IWl8fGc8aXx8aylmb3IoO2ctLTspe2k9M0RoW2ddO2lmKChjPQo9M0RpLm9wdGlvbnMmJmkub3B0 aW9ucy5tYXJrZXJ8fGkub3B0aW9ucykmJmMuZW5hYmxlZD0zRD0zRD0zRCExKWMucmFkaXVzPQo9 M0QwO2lmKGkubmVnYXRpdmUmJm8paS5jb2xvcj0zRGkuZmlsbENvbG9yPTNEbztrPTNEYi5jb2xv ckJ5UG9pbnR8fGkuY29sb3I9CjtpZihpLm9wdGlvbnMpZm9yKG0gaW4gbClyKGNbbFttXV0pJiYo az0zRCEwKTtpZihrKXtjPTNEY3x8e307az0zRFtdO2Q9M0RjLj0Kc3RhdGVzfHx7fTtmPTNEZC5o b3Zlcj0zRGQuaG92ZXJ8fHt9O2lmKCFiLm1hcmtlcilmLmNvbG9yPTNEZi5jb2xvcnx8IWkub3B0 PQppb25zLmNvbG9yJiZlLmNvbG9yfHwKLXlhKGkuY29sb3IpLmJyaWdodGVuKGYuYnJpZ2h0bmVz c3x8ZS5icmlnaHRuZXNzKS5nZXQoKTtmPTNEe2NvbG9yOmkuY29sb3J9PQo7aWYoIXMpZi5maWxs Q29sb3I9M0RpLmNvbG9yO2lmKCFuKWYubGluZUNvbG9yPTNEaS5jb2xvcjtrWyIiXT0zRGEuY29u dmVydEE9CnR0cmlicyhxKGYsYyksalsiIl0pO2suaG92ZXI9M0RhLmNvbnZlcnRBdHRyaWJzKGQu aG92ZXIsai5ob3ZlcixrWyIiXSk7ay5zZT0KbGVjdD0zRGEuY29udmVydEF0dHJpYnMoZC5zZWxl Y3Qsai5zZWxlY3Qsa1siIl0pfWVsc2Ugaz0zRGo7aS5wb2ludEF0dHI9M0RrPQp9fSxkZXN0cm95 OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RhLmNoYXJ0LGM9M0QvQXBwbGVXZWJLaXRcLzUz My8udGVzdCg9CndhKSxkLGUsZj0zRGEuZGF0YXx8W10sZyxoLGk7RChhLCJkZXN0cm95Iik7Vyhh KTtwKGEuYXhpc1R5cGVzfHxbXSxmdW5jdGlvbj0KKGIpe2lmKGk9M0RhW2JdKWphKGkuc2VyaWVz LGEpLGkuaXNEaXJ0eT0zRGkuZm9yY2VSZWRyYXc9M0QhMH0pO2EubGVnZW5kSXRlPQptJiZhLmNo YXJ0LmxlZ2VuZC5kZXN0cm95SXRlbShhKTsKLWZvcihlPTNEZi5sZW5ndGg7ZS0tOykoZz0zRGZb ZV0pJiZnLmRlc3Ryb3kmJmcuZGVzdHJveSgpO2EucG9pbnRzPTNEbnVsbDtjPQpsZWFyVGltZW91 dChhLmFuaW1hdGlvblRpbWVvdXQpO3AoImFyZWEsZ3JhcGgsZGF0YUxhYmVsc0dyb3VwLGdyb3Vw LG1hcmtlckc9CnJvdXAsdHJhY2tlcixncmFwaE5lZyxhcmVhTmVnLHBvc0NsaXAsbmVnQ2xpcCIu c3BsaXQoIiwiKSxmdW5jdGlvbihiKXthW2JdJj0KJihkPTNEYyYmYj0zRD0zRD0zRCJncm91cCI/ ImhpZGUiOiJkZXN0cm95IixhW2JdW2RdKCkpfSk7aWYoYi5ob3ZlclNlcmllcz0KPTNEPTNEPTNE YSliLmhvdmVyU2VyaWVzPTNEbnVsbDtqYShiLnNlcmllcyxhKTtmb3IoaCBpbiBhKWRlbGV0ZSBh W2hdfSxnZXRTPQplZ21lbnRQYXRoOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEW10sZD0z RGIub3B0aW9ucy5zdGVwO3AoYSxmdW5jdGlvbig9CmUsZil7dmFyIGc9M0RlLnBsb3RYLGg9M0Rl LnBsb3RZLGk7Yi5nZXRQb2ludFNwbGluZT9jLnB1c2guYXBwbHkoYyxiLmdldFBvaT0KbnRTcGxp bmUoYSwKLWUsZikpOihjLnB1c2goZj8iTCI6Ik0iKSxkJiZmJiYoaT0zRGFbZi0xXSxkPTNEPTNE PTNEInJpZ2h0Ij9jLnB1c2goaS5wbG90PQpYLGgpOmQ9M0Q9M0Q9M0QiY2VudGVyIj9jLnB1c2go KGkucGxvdFgrZykvMixpLnBsb3RZLChpLnBsb3RYK2cpLzIsaCk6Yy5wdXM9CmgoZyxpLnBsb3RZ KSksYy5wdXNoKGUucGxvdFgsZS5wbG90WSkpfSk7cmV0dXJuIGN9LGdldEdyYXBoUGF0aDpmdW5j dGlvbigpez0KdmFyIGE9M0R0aGlzLGI9M0RbXSxjLGQ9M0RbXTtwKGEuc2VnbWVudHMsZnVuY3Rp b24oZSl7Yz0zRGEuZ2V0U2VnbWVudFBhdGgoPQplKTtlLmxlbmd0aD4xP2I9M0RiLmNvbmNhdChj KTpkLnB1c2goZVswXSl9KTthLnNpbmdsZVBvaW50cz0zRGQ7cmV0dXJuIGEuZ3I9CmFwaFBhdGg9 M0RifSxkcmF3R3JhcGg6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRHRoaXMub3B0aW9ucyxj PTNEW1siZ3JhcD0KaCIsYi5saW5lQ29sb3J8fHRoaXMuY29sb3JdXSxkPTNEYi5saW5lV2lkdGgs ZT0zRGIuZGFzaFN0eWxlLGY9M0RiLmxpbmVjYXAhPQo9M0Q9M0Qic3F1YXJlIixnPTNEdGhpcy5n ZXRHcmFwaFBhdGgoKSwKLWg9M0RiLm5lZ2F0aXZlQ29sb3I7aCYmYy5wdXNoKFsiZ3JhcGhOZWci LGhdKTtwKGMsZnVuY3Rpb24oYyxoKXt2YXIgaz0zRGNbPQowXSxsPTNEYVtrXTtpZihsKWJiKGwp LGwuYW5pbWF0ZSh7ZDpnfSk7ZWxzZSBpZihkJiZnLmxlbmd0aClsPTNEe3N0cm9rZTpjWzE9Cl0s InN0cm9rZS13aWR0aCI6ZCxmaWxsOlEsekluZGV4OjF9LGU/bC5kYXNoc3R5bGU9M0RlOmYmJihs WyJzdHJva2UtbGluZWNhcD0KIl09M0RsWyJzdHJva2UtbGluZWpvaW4iXT0zRCJyb3VuZCIpLGFb a109M0RhLmNoYXJ0LnJlbmRlcmVyLnBhdGgoZykuYXR0cihsPQopLmFkZChhLmdyb3VwKS5zaGFk b3coIWgmJmIuc2hhZG93KX0pfSxjbGlwTmVnOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm9wdGk9 Cm9ucyxiPTNEdGhpcy5jaGFydCxjPTNEYi5yZW5kZXJlcixkPTNEYS5uZWdhdGl2ZUNvbG9yfHxh Lm5lZ2F0aXZlRmlsbENvbG9yLD0KZSxmPTNEdGhpcy5ncmFwaCxnPTNEdGhpcy5hcmVhLGg9M0R0 aGlzLnBvc0NsaXAsaT0zRHRoaXMubmVnQ2xpcDtlPTNEYi5jaGFyPQp0V2lkdGg7dmFyIGo9M0QK LWIuY2hhcnRIZWlnaHQsaz0zRHYoZSxqKSxsPTNEdGhpcy55QXhpcztpZihkJiYoZnx8Zykpe2Q9 M0R1KGwudG9QaXhlbHMoYS50PQpocmVzaG9sZHx8MCwhMCkpO2Q8MCYmKGstPTNEZCk7YT0zRHt4 OjAseTowLHdpZHRoOmssaGVpZ2h0OmR9O2s9M0R7eDowLHk6ZCw9CndpZHRoOmssaGVpZ2h0Omt9 O2lmKGIuaW52ZXJ0ZWQpYS5oZWlnaHQ9M0RrLnk9M0RiLnBsb3RXaWR0aC1kLGMuaXNWTUwmJihh PQo9M0R7eDpiLnBsb3RXaWR0aC1kLWIucGxvdExlZnQseTowLHdpZHRoOmUsaGVpZ2h0Omp9LGs9 M0R7eDpkK2IucGxvdExlZnQtZSw9Cnk6MCx3aWR0aDpiLnBsb3RMZWZ0K2QsaGVpZ2h0OmV9KTts LnJldmVyc2VkPyhiPTNEayxlPTNEYSk6KGI9M0RhLGU9M0RrKTtoPz0KKGguYW5pbWF0ZShiKSxp LmFuaW1hdGUoZSkpOih0aGlzLnBvc0NsaXA9M0RoPTNEYy5jbGlwUmVjdChiKSx0aGlzLm5lZ0Ns aXA9Cj0zRGk9M0RjLmNsaXBSZWN0KGUpLGYmJnRoaXMuZ3JhcGhOZWcmJihmLmNsaXAoaCksdGhp cy5ncmFwaE5lZy5jbGlwKGkpKSxnJj0KJihnLmNsaXAoaCksdGhpcy5hcmVhTmVnLmNsaXAoaSkp KX19LAotaW52ZXJ0R3JvdXBzOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBhPTNEe3dpZHRo OmIueUF4aXMubGVuLGhlaWdodDpiLng9CkF4aXMubGVufTtwKFsiZ3JvdXAiLCJtYXJrZXJHcm91 cCJdLGZ1bmN0aW9uKGMpe2JbY10mJmJbY10uYXR0cihhKS5pbnZlcnQoKT0KfSl9dmFyIGI9M0R0 aGlzLGM9M0RiLmNoYXJ0O2lmKGIueEF4aXMpSyhjLCJyZXNpemUiLGEpLEsoYiwiZGVzdHJveSIs ZnVuY3RpPQpvbigpe1coYywicmVzaXplIixhKX0pLGEoKSxiLmludmVydEdyb3Vwcz0zRGF9LHBs b3RHcm91cDpmdW5jdGlvbihhLGIsYyxkLGU9Cil7dmFyIGY9M0R0aGlzW2FdLGc9M0QhZjtnJiYo dGhpc1thXT0zRGY9M0R0aGlzLmNoYXJ0LnJlbmRlcmVyLmcoYikuYXR0cih7dj0KaXNpYmlsaXR5 OmMsekluZGV4OmR8fDAuMX0pLmFkZChlKSk7ZltnPyJhdHRyIjoiYW5pbWF0ZSJdKHRoaXMuZ2V0 UGxvdEJveCgpPQopO3JldHVybiBmfSxnZXRQbG90Qm94OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlz LmNoYXJ0LGI9M0R0aGlzLnhBeGlzLGM9M0R0aGk9CnMueUF4aXM7Ci1pZihhLmludmVydGVkKWI9 M0RjLGM9M0R0aGlzLnhBeGlzO3JldHVybnt0cmFuc2xhdGVYOmI/Yi5sZWZ0OmEucGxvdExlZnQs dD0KcmFuc2xhdGVZOmM/Yy50b3A6YS5wbG90VG9wLHNjYWxlWDoxLHNjYWxlWToxfX0scmVuZGVy OmZ1bmN0aW9uKCl7dmFyIGE9M0R0PQpoaXMsYj0zRGEuY2hhcnQsYyxkPTNEYS5vcHRpb25zLGU9 M0QoYz0zRGQuYW5pbWF0aW9uKSYmISFhLmFuaW1hdGUmJmIucmVuZGU9CnJlci5pc1NWRyYmbShj LmR1cmF0aW9uLDUwMCl8fDAsZj0zRGEudmlzaWJsZT8idmlzaWJsZSI6ImhpZGRlbiIsZz0zRGQu ekluZD0KZXgsaD0zRGEuaGFzUmVuZGVyZWQsaT0zRGIuc2VyaWVzR3JvdXA7Yz0zRGEucGxvdEdy b3VwKCJncm91cCIsInNlcmllcyIsZixnPQosaSk7YS5tYXJrZXJHcm91cD0zRGEucGxvdEdyb3Vw KCJtYXJrZXJHcm91cCIsIm1hcmtlcnMiLGYsZyxpKTtlJiZhLmFuaW1hdGU9CighMCk7YS5nZXRB dHRyaWJzKCk7Yy5pbnZlcnRlZD0zRGEuaXNDYXJ0ZXNpYW4/Yi5pbnZlcnRlZDohMTthLmRyYXdH cmFwaCYmKD0KYS5kcmF3R3JhcGgoKSwKLWEuY2xpcE5lZygpKTthLmRyYXdEYXRhTGFiZWxzJiZh LmRyYXdEYXRhTGFiZWxzKCk7YS52aXNpYmxlJiZhLmRyYXdQb2ludHMoPQopO2EuZHJhd1RyYWNr ZXImJmEub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nIT0zRD0zRCExJiZhLmRyYXdUcmFja2Vy KCk7Yi49CmludmVydGVkJiZhLmludmVydEdyb3VwcygpO2QuY2xpcCE9M0Q9M0QhMSYmIWEuc2hh cmVkQ2xpcEtleSYmIWgmJmMuY2xpcChiLj0KY2xpcFJlY3QpO2UmJmEuYW5pbWF0ZSgpO2lmKCFo KWU/YS5hbmltYXRpb25UaW1lb3V0PTNEc2V0VGltZW91dChmdW5jdGlvbigpPQp7YS5hZnRlckFu aW1hdGUoKX0sZSk6YS5hZnRlckFuaW1hdGUoKTthLmlzRGlydHk9M0RhLmlzRGlydHlEYXRhPTNE ITE7YS5oYXM9ClJlbmRlcmVkPTNEITB9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5j aGFydCxiPTNEdGhpcy5pc0RpcnR5RGF0YSxjPQo9M0R0aGlzLmdyb3VwLGQ9M0R0aGlzLnhBeGlz LGU9M0R0aGlzLnlBeGlzO2MmJihhLmludmVydGVkJiZjLmF0dHIoe3dpZHRoOmE9Ci5wbG90V2lk dGgsCi1oZWlnaHQ6YS5wbG90SGVpZ2h0fSksYy5hbmltYXRlKHt0cmFuc2xhdGVYOm0oZCYmZC5s ZWZ0LGEucGxvdExlZnQpLHRyYW5zbD0KYXRlWTptKGUmJmUudG9wLGEucGxvdFRvcCl9KSk7dGhp cy50cmFuc2xhdGUoKTt0aGlzLnNldFRvb2x0aXBQb2ludHMmJnRoaXMuPQpzZXRUb29sdGlwUG9p bnRzKCEwKTt0aGlzLnJlbmRlcigpO2ImJkQodGhpcywidXBkYXRlZERhdGEiKX19O0hiLnByb3Rv dHlwZT0KPTNEe2Rlc3Ryb3k6ZnVuY3Rpb24oKXtPYSh0aGlzLHRoaXMuYXhpcyl9LHJlbmRlcjpm dW5jdGlvbihhKXt2YXIgYj0zRHRoaXMuPQpvcHRpb25zLGM9M0RiLmZvcm1hdCxjPTNEYz9JYShj LHRoaXMpOmIuZm9ybWF0dGVyLmNhbGwodGhpcyk7dGhpcy5sYWJlbD90aGk9CnMubGFiZWwuYXR0 cih7dGV4dDpjLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTp0aGlzLmxhYmVsPTNEdGhpcy5heGlzLmNo YXJ0LnJlbj0KZGVyZXIudGV4dChjLG51bGwsbnVsbCxiLnVzZUhUTUwpLmNzcyhiLnN0eWxlKS5h dHRyKHthbGlnbjp0aGlzLnRleHRBbGlnbiwKLXJvdGF0aW9uOmIucm90YXRpb24sdmlzaWJpbGl0 eToiaGlkZGVuIn0pLmFkZChhKX0sc2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYil7PQp2YXIgYz0zRHRo aXMuYXhpcyxkPTNEYy5jaGFydCxlPTNEZC5pbnZlcnRlZCxmPTNEdGhpcy5pc05lZ2F0aXZlLGc9 M0RjLnRyYW49CnNsYXRlKGMudXNlUGVyY2VudGFnZT8xMDA6dGhpcy50b3RhbCwwLDAsMCwxKSxj PTNEYy50cmFuc2xhdGUoMCksYz0zRE0oZy1jKT0KLGg9M0RkLnhBeGlzWzBdLnRyYW5zbGF0ZSh0 aGlzLngpK2EsaT0zRGQucGxvdEhlaWdodCxmPTNEe3g6ZT9mP2c6Zy1jOmgseTplPQo/aS1oLWI6 Zj9pLWctYzppLWcsd2lkdGg6ZT9jOmIsaGVpZ2h0OmU/YjpjfTtpZihlPTNEdGhpcy5sYWJlbCll LmFsaWduKHRoaXM9Ci5hbGlnbk9wdGlvbnMsbnVsbCxmKSxmPTNEZS5hbGlnbkF0dHIsZVt0aGlz Lm9wdGlvbnMuY3JvcD0zRD0zRD0zRCExfHxkLmlzST0KbnNpZGVQbG90KGYueCxmLnkpPyJzaG93 IjoiaGlkZSJdKCEwKX19O2xhLnByb3RvdHlwZS5idWlsZFN0YWNrcz0zRGZ1bmN0aW9uPQooKXt2 YXIgYT0zRAotdGhpcy5zZXJpZXMsYj0zRG0odGhpcy5vcHRpb25zLnJldmVyc2VkU3RhY2tzLCEw KSxjPTNEYS5sZW5ndGg7aWYoIXRoaXMuaXM9ClhBeGlzKXtmb3IodGhpcy51c2VQZXJjZW50YWdl PTNEITE7Yy0tOylhW2I/YzphLmxlbmd0aC1jLTFdLnNldFN0YWNrZWRQb2ludD0KcygpO2lmKHRo aXMudXNlUGVyY2VudGFnZSlmb3IoYz0zRDA7YzxhLmxlbmd0aDtjKyspYVtjXS5zZXRQZXJjZW50 U3RhY2tzKCl9PQp9O2xhLnByb3RvdHlwZS5yZW5kZXJTdGFja1RvdGFscz0zRGZ1bmN0aW9uKCl7 dmFyIGE9M0R0aGlzLmNoYXJ0LGI9M0RhLnJlbmQ9CmVyZXIsYz0zRHRoaXMuc3RhY2tzLGQsZSxm PTNEdGhpcy5zdGFja1RvdGFsR3JvdXA7aWYoIWYpdGhpcy5zdGFja1RvdGFsR3JvdT0KcD0zRGY9 M0RiLmcoInN0YWNrLWxhYmVscyIpLmF0dHIoe3Zpc2liaWxpdHk6InZpc2libGUiLHpJbmRleDo2 fSkuYWRkKCk7Zi50PQpyYW5zbGF0ZShhLnBsb3RMZWZ0LGEucGxvdFRvcCk7Zm9yKGQgaW4gYylm b3IoZSBpbiBhPTNEY1tkXSxhKWFbZV0ucmVuZGVyKGY9Cil9OwotTy5wcm90b3R5cGUuc2V0U3Rh Y2tlZFBvaW50cz0zRGZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLnN0YWNraW5nJiYhKHRoaXM9 Ci52aXNpYmxlIT0zRD0zRCEwJiZ0aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVu U2VyaWVzIT0zRD0zRCExKSl7dj0KYXIgYT0zRHRoaXMucHJvY2Vzc2VkWERhdGEsYj0zRHRoaXMu cHJvY2Vzc2VkWURhdGEsYz0zRFtdLGQ9M0RiLmxlbmd0aCxlPTNEPQp0aGlzLm9wdGlvbnMsZj0z RGUudGhyZXNob2xkLGc9M0RlLnN0YWNrLGU9M0RlLnN0YWNraW5nLGg9M0R0aGlzLnN0YWNrS2V5 LGk9Cj0zRCItIitoLGo9M0R0aGlzLm5lZ1N0YWNrcyxrPTNEdGhpcy55QXhpcyxsPTNEay5zdGFj a3Msbz0zRGsub2xkU3RhY2tzLG4sbT0KLHAscSxyLHU7Zm9yKHE9M0QwO3E8ZDtxKyspe3I9M0Rh W3FdO3U9M0RiW3FdO3A9M0R0aGlzLmluZGV4KyIsIitxO209M0Qobj0KPTNEaiYmdTxmKT9pOmg7 bFttXXx8KGxbbV09M0R7fSk7aWYoIWxbbV1bcl0pb1ttXSYmb1ttXVtyXT8obFttXVtyXT0zRG9b bV1bPQpyXSxsW21dW3JdLnRvdGFsPTNEbnVsbCk6bFttXVtyXT0zRG5ldyBIYihrLAotay5vcHRp b25zLnN0YWNrTGFiZWxzLG4scixnKTttPTNEbFttXVtyXTttLnBvaW50c1twXT0zRFttLmN1bXx8 MF07ZT0zRD0zRD0KPTNEInBlcmNlbnQiPyhuPTNEbj9oOmksaiYmbFtuXSYmbFtuXVtyXT8obj0z RGxbbl1bcl0sbS50b3RhbD0zRG4udG90YWw9M0R2PQoobi50b3RhbCxtLnRvdGFsKStNKHUpfHww KTptLnRvdGFsPTNEZGEobS50b3RhbCsoTSh1KXx8MCkpKTptLnRvdGFsPTNEZGEobS49CnRvdGFs Kyh1fHwwKSk7bS5jdW09M0QobS5jdW18fDApKyh1fHwwKTttLnBvaW50c1twXS5wdXNoKG0uY3Vt KTtjW3FdPTNEbS5jdT0KbX1pZihlPTNEPTNEPTNEInBlcmNlbnQiKWsudXNlUGVyY2VudGFnZT0z RCEwO3RoaXMuc3RhY2tlZFlEYXRhPTNEYztrLm9sZFN0PQphY2tzPTNEe319fTtPLnByb3RvdHlw ZS5zZXRQZXJjZW50U3RhY2tzPTNEZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRGEuc3Q9CmFj a0tleSxjPTNEYS55QXhpcy5zdGFja3MsZD0zRGEucHJvY2Vzc2VkWERhdGE7cChbYiwiLSIrYl0s ZnVuY3Rpb24oYil7dmFyID0KZTtmb3IodmFyIGY9M0RkLmxlbmd0aCxnLGg7Zi0tOylpZihnPTNE Ci1kW2ZdLGU9M0QoaD0zRGNbYl0mJmNbYl1bZ10pJiZoLnBvaW50c1thLmluZGV4KyIsIitmXSxn PTNEZSloPTNEaC50b3RhbD8xMD0KMC9oLnRvdGFsOjAsZ1swXT0zRGRhKGdbMF0qaCksZ1sxXT0z RGRhKGdbMV0qaCksYS5zdGFja2VkWURhdGFbZl09M0RnWzFdfSl9PQo7cShZYS5wcm90b3R5cGUs e2FkZFNlcmllczpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT0zRHRoaXM7YSYmKGI9M0RtKGIsITAp LEQ9CihlLCJhZGRTZXJpZXMiLHtvcHRpb25zOmF9LGZ1bmN0aW9uKCl7ZD0zRGUuaW5pdFNlcmll cyhhKTtlLmlzRGlydHlMZWdlbmQ9Cj0zRCEwO2UubGlua1NlcmllcygpO2ImJmUucmVkcmF3KGMp fSkpO3JldHVybiBkfSxhZGRBeGlzOmZ1bmN0aW9uKGEsYixjLGQpez0KdmFyIGU9M0RiPyJ4QXhp cyI6InlBeGlzIixmPTNEdGhpcy5vcHRpb25zO25ldyBsYSh0aGlzLHcoYSx7aW5kZXg6dGhpc1tl XS5sPQplbmd0aCxpc1g6Yn0pKTtmW2VdPTNEcWEoZltlXXx8e30pO2ZbZV0ucHVzaChhKTttKGMs ITApJiZ0aGlzLnJlZHJhdyhkKX0sc2g9Cm93TG9hZGluZzpmdW5jdGlvbihhKXt2YXIgYj0zRAot dGhpcy5vcHRpb25zLGM9M0R0aGlzLmxvYWRpbmdEaXYsZD0zRGIubG9hZGluZztpZighYyl0aGlz LmxvYWRpbmdEaXY9M0RjPQo9M0RZKEphLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtbG9hZGluZyJ9 LHEoZC5zdHlsZSx7ekluZGV4OjEwLGRpc3BsYXk6UX0pLHQ9Cmhpcy5jb250YWluZXIpLHRoaXMu bG9hZGluZ1NwYW49M0RZKCJzcGFuIixudWxsLGQubGFiZWxTdHlsZSxjKTt0aGlzLmxvYWRpbj0K Z1NwYW4uaW5uZXJIVE1MPTNEYXx8Yi5sYW5nLmxvYWRpbmc7aWYoIXRoaXMubG9hZGluZ1Nob3du KUcoYyx7b3BhY2l0eTowLGRpPQpzcGxheToiIixsZWZ0OnRoaXMucGxvdExlZnQrInB4Iix0b3A6 dGhpcy5wbG90VG9wKyJweCIsd2lkdGg6dGhpcy5wbG90V2lkdGg9CisicHgiLGhlaWdodDp0aGlz LnBsb3RIZWlnaHQrInB4In0pLGtiKGMse29wYWNpdHk6ZC5zdHlsZS5vcGFjaXR5fSx7ZHVyYXRp bz0KbjpkLnNob3dEdXJhdGlvbnx8MH0pLHRoaXMubG9hZGluZ1Nob3duPTNEITB9LGhpZGVMb2Fk aW5nOmZ1bmN0aW9uKCl7dmFyIGE9Cj0zRAotdGhpcy5vcHRpb25zLGI9M0R0aGlzLmxvYWRpbmdE aXY7YiYma2IoYix7b3BhY2l0eTowfSx7ZHVyYXRpb246YS5sb2FkaW5nLmg9CmlkZUR1cmF0aW9u fHwxMDAsY29tcGxldGU6ZnVuY3Rpb24oKXtHKGIse2Rpc3BsYXk6UX0pfX0pO3RoaXMubG9hZGlu Z1Nob3duPQo9M0QhMX19KTtxKEVhLnByb3RvdHlwZSx7dXBkYXRlOmZ1bmN0aW9uKGEsYixjKXt2 YXIgZD0zRHRoaXMsZT0zRGQuc2VyaWVzLGY9Cj0zRGQuZ3JhcGhpYyxnLGg9M0RlLmRhdGEsaT0z RGUuY2hhcnQsaj0zRGUub3B0aW9ucyxiPTNEbShiLCEwKTtkLmZpcmVQb2ludD0KRXZlbnQoInVw ZGF0ZSIse29wdGlvbnM6YX0sZnVuY3Rpb24oKXtkLmFwcGx5T3B0aW9ucyhhKTtpZihjYShhKSl7 ZS5nZXRBdHRyPQppYnMoKTtpZihmKWEmJmEubWFya2VyJiZhLm1hcmtlci5zeW1ib2w/ZC5ncmFw aGljPTNEZi5kZXN0cm95KCk6Zi5hdHRyKGQucG89CmludEF0dHJbZC5zdGF0ZXx8IiJdKTtpZihh JiZhLmRhdGFMYWJlbHMmJmQuZGF0YUxhYmVsKWQuZGF0YUxhYmVsPTNEZC5kYXRhTD0KYWJlbC5k ZXN0cm95KCl9Zz0zRAotRGEoZCxoKTtlLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKGQsZyk7ai5kYXRh W2ddPTNEZC5vcHRpb25zO2UuaXNEaXJ0eT0zRGUuaXM9CkRpcnR5RGF0YT0zRCEwO2lmKCFlLmZp eGVkQm94JiZlLmhhc0NhcnRlc2lhblNlcmllcylpLmlzRGlydHlCb3g9M0QhMDtqLmxlZz0KZW5k VHlwZT0zRD0zRD0zRCJwb2ludCImJmkubGVnZW5kLmRlc3Ryb3lJdGVtKGQpO2ImJmkucmVkcmF3 KGMpfSl9LHJlbW92ZTpmPQp1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLGQ9M0RjLnNlcmllcyxl PTNEZC5wb2ludHMsZj0zRGQuY2hhcnQsZyxoPTNEZC5kYXQ9CmE7UWEoYixmKTthPTNEbShhLCEw KTtjLmZpcmVQb2ludEV2ZW50KCJyZW1vdmUiLG51bGwsZnVuY3Rpb24oKXtnPTNERGEoYyxoKT0K O2gubGVuZ3RoPTNEPTNEPTNEZS5sZW5ndGgmJmUuc3BsaWNlKGcsMSk7aC5zcGxpY2UoZywxKTtk Lm9wdGlvbnMuZGF0YS5zcGxpPQpjZShnLDEpO2QudXBkYXRlUGFyYWxsZWxBcnJheXMoYywic3Bs aWNlIixnLDEpO2MuZGVzdHJveSgpO2QuaXNEaXJ0eT0zRCEwO2Q9Ci5pc0RpcnR5RGF0YT0zRAot ITA7YSYmZi5yZWRyYXcoKX0pfX0pO3EoTy5wcm90b3R5cGUse2FkZFBvaW50OmZ1bmN0aW9uKGEs YixjLGQpe3ZhciBlPTNEdGg9CmlzLm9wdGlvbnMsZj0zRHRoaXMuZGF0YSxnPTNEdGhpcy5ncmFw aCxoPTNEdGhpcy5hcmVhLGk9M0R0aGlzLmNoYXJ0LGo9M0R0aD0KaXMueEF4aXMmJnRoaXMueEF4 aXMubmFtZXMsaz0zRGcmJmcuc2hpZnR8fDAsbD0zRGUuZGF0YSxvLG49M0R0aGlzLnhEYXRhO1Fh PQooZCxpKTtjJiZwKFtnLGgsdGhpcy5ncmFwaE5lZyx0aGlzLmFyZWFOZWddLGZ1bmN0aW9uKGEp e2lmKGEpYS5zaGlmdD0zRGsrMX09Cik7aWYoaCloLmlzQXJlYT0zRCEwO2I9M0RtKGIsITApO2Q9 M0R7c2VyaWVzOnRoaXN9O3RoaXMucG9pbnRDbGFzcy5wcm90b3R5cD0KZS5hcHBseU9wdGlvbnMu YXBwbHkoZCxbYV0pO2c9M0RkLng7aD0zRG4ubGVuZ3RoO2lmKHRoaXMucmVxdWlyZVNvcnRpbmcm Jmc8PQpuW2gtMV0pZm9yKG89M0QhMDtoJiZuW2gtMV0+ZzspaC0tO3RoaXMudXBkYXRlUGFyYWxs ZWxBcnJheXMoZCwic3BsaWNlIixoLDA9CiwwKTt0aGlzLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKGQs Ci1oKTtpZihqKWpbZ109M0RkLm5hbWU7bC5zcGxpY2UoaCwwLGEpO28mJih0aGlzLmRhdGEuc3Bs aWNlKGgsMCxudWxsKSx0aGlzLj0KcHJvY2Vzc0RhdGEoKSk7ZS5sZWdlbmRUeXBlPTNEPTNEPTNE InBvaW50IiYmdGhpcy5nZW5lcmF0ZVBvaW50cygpO2MmJihmWzBdPQomJmZbMF0ucmVtb3ZlP2Zb MF0ucmVtb3ZlKCExKTooZi5zaGlmdCgpLHRoaXMudXBkYXRlUGFyYWxsZWxBcnJheXMoZCwic2hp ZnQ9CiIpLGwuc2hpZnQoKSkpO3RoaXMuaXNEaXJ0eURhdGE9M0R0aGlzLmlzRGlydHk9M0QhMDti JiYodGhpcy5nZXRBdHRyaWJzKCksaT0KLnJlZHJhdygpKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7 dmFyIGM9M0R0aGlzLGQ9M0RjLmNoYXJ0LGE9M0RtKGEsITApO2lmKCFjPQouaXNSZW1vdmluZylj LmlzUmVtb3Zpbmc9M0QhMCxEKGMsInJlbW92ZSIsbnVsbCxmdW5jdGlvbigpe2MuZGVzdHJveSgp O2QuaXM9CkRpcnR5TGVnZW5kPTNEZC5pc0RpcnR5Qm94PTNEITA7ZC5saW5rU2VyaWVzKCk7YSYm ZC5yZWRyYXcoYil9KTtjLmlzUmVtb3Zpbj0KZz0zRAotITF9LHVwZGF0ZTpmdW5jdGlvbihhLGIp e3ZhciBjPTNEdGhpcy5jaGFydCxkPTNEdGhpcy50eXBlLGU9M0RGW2RdLnByb3RvdHk9CnBlLGYs YT0zRHcodGhpcy51c2VyT3B0aW9ucyx7YW5pbWF0aW9uOiExLGluZGV4OnRoaXMuaW5kZXgscG9p bnRTdGFydDp0aGlzLj0KeERhdGFbMF19LHtkYXRhOnRoaXMub3B0aW9ucy5kYXRhfSxhKTt0aGlz LnJlbW92ZSghMSk7Zm9yKGYgaW4gZSllLmhhc093blByPQpvcGVydHkoZikmJih0aGlzW2ZdPTNE dCk7cSh0aGlzLEZbYS50eXBlfHxkXS5wcm90b3R5cGUpO3RoaXMuaW5pdChjLGEpO20oYiw9CiEw KSYmYy5yZWRyYXcoITEpfX0pO3EobGEucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oYSxiKXt2 YXIgYz0zRHRoaXMuY2hhcj0KdCxhPTNEYy5vcHRpb25zW3RoaXMuY29sbF1bdGhpcy5vcHRpb25z LmluZGV4XT0zRHcodGhpcy51c2VyT3B0aW9ucyxhKTt0aGlzPQouZGVzdHJveSghMCk7dGhpcy5f YWRkZWRQbG90TEI9M0R0O3RoaXMuaW5pdChjLHEoYSx7ZXZlbnRzOnR9KSk7Yy5pc0RpcnR5Qm89 Cng9M0QKLSEwO20oYiwhMCkmJmMucmVkcmF3KCl9LHJlbW92ZTpmdW5jdGlvbihhKXtmb3IodmFy IGI9M0R0aGlzLmNoYXJ0LGM9M0R0aGlzPQouY29sbCxkPTNEdGhpcy5zZXJpZXMsZT0zRGQubGVu Z3RoO2UtLTspZFtlXSYmZFtlXS5yZW1vdmUoITEpO2phKGIuYXhlcyx0aGk9CnMpO2phKGJbY10s dGhpcyk7Yi5vcHRpb25zW2NdLnNwbGljZSh0aGlzLm9wdGlvbnMuaW5kZXgsMSk7cChiW2NdLGZ1 bmN0aW9uKD0KYSxiKXthLm9wdGlvbnMuaW5kZXg9M0RifSk7dGhpcy5kZXN0cm95KCk7Yi5pc0Rp cnR5Qm94PTNEITA7bShhLCEwKSYmYi5yZWRyPQphdygpfSxzZXRUaXRsZTpmdW5jdGlvbihhLGIp e3RoaXMudXBkYXRlKHt0aXRsZTphfSxiKX0sc2V0Q2F0ZWdvcmllczpmdW5jdGk9Cm9uKGEsYil7 dGhpcy51cGRhdGUoe2NhdGVnb3JpZXM6YX0sYil9fSk7Z2E9M0RrYShPKTtGLmxpbmU9M0RnYTti YS5hcmVhPTNEdz0KKFMse3RocmVzaG9sZDowfSk7dmFyIHBhPTNEa2EoTyx7dHlwZToiYXJlYSIs Z2V0U2VnbWVudHM6ZnVuY3Rpb24oKXt2YXIgYT0KPTNECi1bXSxiPTNEW10sYz0zRFtdLGQ9M0R0 aGlzLnhBeGlzLGU9M0R0aGlzLnlBeGlzLGY9M0RlLnN0YWNrc1t0aGlzLnN0YWNrS2V5XT0KLGc9 M0R7fSxoLGksaj0zRHRoaXMucG9pbnRzLGs9M0R0aGlzLm9wdGlvbnMuY29ubmVjdE51bGxzLGws byxuO2lmKHRoaXMub3B0PQppb25zLnN0YWNraW5nJiYhdGhpcy5jcm9wcGVkKXtmb3Iobz0zRDA7 bzxqLmxlbmd0aDtvKyspZ1tqW29dLnhdPTNEaltvXTtmb3I9CihuIGluIGYpZltuXS50b3RhbCE9 M0Q9M0RudWxsJiZjLnB1c2goK24pO2Muc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWJ9KT0K O3AoYyxmdW5jdGlvbihhKXtpZigha3x8Z1thXSYmZ1thXS55IT0zRD0zRG51bGwpZ1thXT9iLnB1 c2goZ1thXSk6KGg9M0RkLnRyPQphbnNsYXRlKGEpLGw9M0RmW2FdLnBlcmNlbnQ/ZlthXS50b3Rh bD9mW2FdLmN1bSoxMDAvZlthXS50b3RhbDowOmZbYV0uY3VtLGk9Cj0zRGUudG9QaXhlbHMobCwh MCksYi5wdXNoKHt5Om51bGwscGxvdFg6aCxjbGllbnRYOmgscGxvdFk6aSx5Qm90dG9tOmksb25N bz0KdXNlT3ZlcjpzYX0pKX0pOwotYi5sZW5ndGgmJmEucHVzaChiKX1lbHNlIE8ucHJvdG90eXBl LmdldFNlZ21lbnRzLmNhbGwodGhpcyksYT0zRHRoaXMuc2VnbWU9Cm50czt0aGlzLnNlZ21lbnRz PTNEYX0sZ2V0U2VnbWVudFBhdGg6ZnVuY3Rpb24oYSl7dmFyIGI9M0RPLnByb3RvdHlwZS5nZXRT ZT0KZ21lbnRQYXRoLmNhbGwodGhpcyxhKSxjPTNEW10uY29uY2F0KGIpLGQsZT0zRHRoaXMub3B0 aW9ucztkPTNEYi5sZW5ndGg7dmFyPQogZj0zRHRoaXMueUF4aXMuZ2V0VGhyZXNob2xkKGUudGhy ZXNob2xkKSxnO2Q9M0Q9M0Q9M0QzJiZjLnB1c2goIkwiLGJbMV0sYls9CjJdKTtpZihlLnN0YWNr aW5nJiYhdGhpcy5jbG9zZWRTdGFja3MpZm9yKGQ9M0RhLmxlbmd0aC0xO2Q+PTNEMDtkLS0pZz0z RG0oYT0KW2RdLnlCb3R0b20sZiksZDxhLmxlbmd0aC0xJiZlLnN0ZXAmJmMucHVzaChhW2QrMV0u cGxvdFgsZyksYy5wdXNoKGFbZF0ucGxvPQp0WCxnKTtlbHNlIHRoaXMuY2xvc2VTZWdtZW50KGMs YSxmKTt0aGlzLmFyZWFQYXRoPTNEdGhpcy5hcmVhUGF0aC5jb25jYXQoYyk9CjtyZXR1cm4gYn0s Ci1jbG9zZVNlZ21lbnQ6ZnVuY3Rpb24oYSxiLGMpe2EucHVzaCgiTCIsYltiLmxlbmd0aC0xXS5w bG90WCxjLCJMIixiWzBdLnBsbz0KdFgsYyl9LGRyYXdHcmFwaDpmdW5jdGlvbigpe3RoaXMuYXJl YVBhdGg9M0RbXTtPLnByb3RvdHlwZS5kcmF3R3JhcGguYXBwbHkoPQp0aGlzKTt2YXIgYT0zRHRo aXMsYj0zRHRoaXMuYXJlYVBhdGgsYz0zRHRoaXMub3B0aW9ucyxkPTNEYy5uZWdhdGl2ZUNvbG9y LGU9Cj0zRGMubmVnYXRpdmVGaWxsQ29sb3IsZj0zRFtbImFyZWEiLHRoaXMuY29sb3IsYy5maWxs Q29sb3JdXTsoZHx8ZSkmJmYucHVzaD0KKFsiYXJlYU5lZyIsZCxlXSk7cChmLGZ1bmN0aW9uKGQp e3ZhciBlPTNEZFswXSxmPTNEYVtlXTtmP2YuYW5pbWF0ZSh7ZDpifSk6PQphW2VdPTNEYS5jaGFy dC5yZW5kZXJlci5wYXRoKGIpLmF0dHIoe2ZpbGw6bShkWzJdLHlhKGRbMV0pLnNldE9wYWNpdHko bShjLmY9CmlsbE9wYWNpdHksMC43NSkpLmdldCgpKSx6SW5kZXg6MH0pLmFkZChhLmdyb3VwKX0p fSxkcmF3TGVnZW5kU3ltYm9sOk4uZHJhdz0KUmVjdGFuZ2xlfSk7Ci1GLmFyZWE9M0RwYTtiYS5z cGxpbmU9M0R3KFMpO2dhPTNEa2EoTyx7dHlwZToic3BsaW5lIixnZXRQb2ludFNwbGluZTpmdW5j dD0KaW9uKGEsYixjKXt2YXIgZD0zRGIucGxvdFgsZT0zRGIucGxvdFksZj0zRGFbYy0xXSxnPTNE YVtjKzFdLGgsaSxqLGs7aWYoZiYmPQpnKXthPTNEZi5wbG90WTtqPTNEZy5wbG90WDt2YXIgZz0z RGcucGxvdFksbDtoPTNEKDEuNSpkK2YucGxvdFgpLzIuNTtpPTNEKDE9Ci41KmUrYSkvMi41O2o9 M0QoMS41KmQraikvMi41O2s9M0QoMS41KmUrZykvMi41O2w9M0Qoay1pKSooai1kKS8oai1oKStl LWs7aT0KKz0zRGw7ays9M0RsO2k+YSYmaT5lPyhpPTNEdihhLGUpLGs9M0QyKmUtaSk6aTxhJiZp PGUmJihpPTNEQyhhLGUpLGs9M0QyKmUtPQppKTtrPmcmJms+ZT8oaz0zRHYoZyxlKSxpPTNEMipl LWspOms8ZyYmazxlJiYoaz0zREMoZyxlKSxpPTNEMiplLWspO2IucmlnaHQ9CkNvbnRYPTNEajti LnJpZ2h0Q29udFk9M0RrfWM/KGI9M0RbIkMiLGYucmlnaHRDb250WHx8Zi5wbG90WCxmLnJpZ2h0 Q29udFl8fD0KZi5wbG90WSxofHxkLGl8fGUsZCxlXSxmLnJpZ2h0Q29udFg9M0QKLWYucmlnaHRD b250WT0zRG51bGwpOmI9M0RbIk0iLGQsZV07cmV0dXJuIGJ9fSk7Ri5zcGxpbmU9M0RnYTtiYS5h cmVhc3BsaW5lPQo9M0R3KGJhLmFyZWEpO3BhPTNEcGEucHJvdG90eXBlO2dhPTNEa2EoZ2Ese3R5 cGU6ImFyZWFzcGxpbmUiLGNsb3NlZFN0YWNrczo9CiEwLGdldFNlZ21lbnRQYXRoOnBhLmdldFNl Z21lbnRQYXRoLGNsb3NlU2VnbWVudDpwYS5jbG9zZVNlZ21lbnQsZHJhd0dyYXBoOj0KcGEuZHJh d0dyYXBoLGRyYXdMZWdlbmRTeW1ib2w6Ti5kcmF3UmVjdGFuZ2xlfSk7Ri5hcmVhc3BsaW5lPTNE Z2E7YmEuY29sdW1uPQo9M0R3KFMse2JvcmRlckNvbG9yOiIjRkZGRkZGIixib3JkZXJSYWRpdXM6 MCxncm91cFBhZGRpbmc6MC4yLG1hcmtlcjpudWxsLHA9Cm9pbnRQYWRkaW5nOjAuMSxtaW5Qb2lu dExlbmd0aDowLGNyb3BUaHJlc2hvbGQ6NTAscG9pbnRSYW5nZTpudWxsLHN0YXRlczp7aD0Kb3Zl cjp7YnJpZ2h0bmVzczowLjEsc2hhZG93OiExLGhhbG86ITF9LHNlbGVjdDp7Y29sb3I6IiNDMEMw QzAiLGJvcmRlckNvbG9yPQo6IiMwMDAwMDAiLAotc2hhZG93OiExfX0sZGF0YUxhYmVsczp7YWxp Z246bnVsbCx2ZXJ0aWNhbEFsaWduOm51bGwseTpudWxsfSxzdGlja3lUcmFja2k9Cm5nOiExLHRv b2x0aXA6e2Rpc3RhbmNlOjZ9LHRocmVzaG9sZDowfSk7Z2E9M0RrYShPLHt0eXBlOiJjb2x1bW4i LHBvaW50QXR0cj0KVG9PcHRpb25zOntzdHJva2U6ImJvcmRlckNvbG9yIixmaWxsOiJjb2xvciIs cjoiYm9yZGVyUmFkaXVzIn0sY3JvcFNob3VsZGVyPQo6MCx0cmFja2VyR3JvdXBzOlsiZ3JvdXAi LCJkYXRhTGFiZWxzR3JvdXAiXSxuZWdTdGFja3M6ITAsaW5pdDpmdW5jdGlvbigpe089Ci5wcm90 b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGE9M0R0aGlzLGI9M0RhLmNoYXJ0 O2IuaGFzUmVuZGVyZT0KZCYmcChiLnNlcmllcyxmdW5jdGlvbihiKXtpZihiLnR5cGU9M0Q9M0Q9 M0RhLnR5cGUpYi5pc0RpcnR5PTNEITB9KX0sZ2V0Q29sPQp1bW5NZXRyaWNzOmZ1bmN0aW9uKCl7 dmFyIGE9M0R0aGlzLGI9M0RhLm9wdGlvbnMsYz0zRGEueEF4aXMsZD0zRGEueUF4aXMsZT0KPTNE Ci1jLnJldmVyc2VkLGYsZz0zRHt9LGgsaT0zRDA7Yi5ncm91cGluZz0zRD0zRD0zRCExP2k9M0Qx OnAoYS5jaGFydC5zZXJpZXMsZj0KdW5jdGlvbihiKXt2YXIgYz0zRGIub3B0aW9ucyxlPTNEYi55 QXhpcztpZihiLnR5cGU9M0Q9M0Q9M0RhLnR5cGUmJmIudmlzaWJsPQplJiZkLmxlbj0zRD0zRD0z RGUubGVuJiZkLnBvcz0zRD0zRD0zRGUucG9zKWMuc3RhY2tpbmc/KGY9M0RiLnN0YWNrS2V5LGdb Zl09Cj0zRD0zRD0zRHQmJihnW2ZdPTNEaSsrKSxoPTNEZ1tmXSk6Yy5ncm91cGluZyE9M0Q9M0Qh MSYmKGg9M0RpKyspLGIuY29sdW1uST0KbmRleD0zRGh9KTt2YXIgYz0zREMoTShjLnRyYW5zQSkq KGMub3JkaW5hbFNsb3BlfHxiLnBvaW50UmFuZ2V8fGMuY2xvc2VzdFBvPQppbnRSYW5nZXx8Yy50 aWNrSW50ZXJ2YWx8fDEpLGMubGVuKSxqPTNEYypiLmdyb3VwUGFkZGluZyxrPTNEKGMtMipqKS9p LGw9M0Q9CmIucG9pbnRXaWR0aCxiPTNEcihsKT8oay1sKS8yOmsqYi5wb2ludFBhZGRpbmcsbD0z RG0obCxrLTIqYik7cmV0dXJuIGEuY29sdT0KbW5NZXRyaWNzPTNEe3dpZHRoOmwsb2Zmc2V0OmIr KGorKChlP2ktKGEuY29sdW1uSW5kZXh8fAotMCk6YS5jb2x1bW5JbmRleCl8fDApKmstYy8yKSoo ZT8tMToxKX19LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcyw9CmI9M0RhLmNoYXJ0 LGM9M0RhLm9wdGlvbnMsZD0zRGEuYm9yZGVyV2lkdGg9M0RtKGMuYm9yZGVyV2lkdGgsYS5hY3Rp dmVQb2ludD0KQ291bnQ+MC41KmEueEF4aXMubGVuPzA6MSksZT0zRGEueUF4aXMsZj0zRGEudHJh bnNsYXRlZFRocmVzaG9sZD0zRGUuZ2V0VGhyPQplc2hvbGQoYy50aHJlc2hvbGQpLGc9M0RtKGMu bWluUG9pbnRMZW5ndGgsNSksYz0zRGEuZ2V0Q29sdW1uTWV0cmljcygpLGg9M0Q9CmMud2lkdGgs aT0zRGEuYmFyVz0zREthKHYoaCwxKzIqZCkpLGo9M0RhLnBvaW50WE9mZnNldD0zRGMub2Zmc2V0 LGs9M0QtKGQlMj0KPzAuNTowKSxsPTNEZCUyPzAuNToxO2IucmVuZGVyZXIuaXNWTUwmJmIuaW52 ZXJ0ZWQmJihsKz0zRDEpO08ucHJvdG90eXBlLnRyPQphbnNsYXRlLmFwcGx5KGEpO3AoYS5wb2lu dHMsZnVuY3Rpb24oYyl7dmFyIGQ9M0RtKGMueUJvdHRvbSxmKSxwPTNEQyh2KC05OTk9Ci1kLGMu cGxvdFkpLGUubGVuKwotOTk5K2QpLHE9M0RjLnBsb3RYK2oscj0zRGksdD0zREMocCxkKSx4O3g9 M0R2KHAsZCktdDtNKHgpPGcmJmcmJih4PTNEZyx0PQo9M0R1KE0odC1mKT5nP2QtZzpmLShlLnRy YW5zbGF0ZShjLnksMCwxLDAsMSk8PTNEZj9nOjApKSk7Yy5iYXJYPTNEcTtjLnBvaW49CnRXaWR0 aD0zRGg7Yy50b29sdGlwUG9zPTNEYi5pbnZlcnRlZD9bZS5sZW4tcCxhLnhBeGlzLmxlbi1xLXIv Ml06W3Erci8yLHBdOz0KZD0zRE0ocSk8MC41O3I9M0R1KHErcikraztxPTNEdShxKStrO3ItPTNE cTtwPTNETSh0KTwwLjU7eD0zRHUodCt4KStsO3Q9M0R1PQoodCkrbDt4LT0zRHQ7ZCYmKHErPTNE MSxyLT0zRDEpO3AmJih0LT0zRDEseCs9M0QxKTtjLnNoYXBlVHlwZT0zRCJyZWN0IjtjLnM9Cmhh cGVBcmdzPTNEe3g6cSx5OnQsd2lkdGg6cixoZWlnaHQ6eH19KX0sZ2V0U3ltYm9sOnNhLGRyYXdM ZWdlbmRTeW1ib2w6Ti5kcj0KYXdSZWN0YW5nbGUsZHJhd0dyYXBoOnNhLGRyYXdQb2ludHM6ZnVu Y3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRHRoaXMuY2hhcnQsPQpjPTNEYS5vcHRpb25zLGQ9M0Ri LnJlbmRlcmVyLGU9M0RjLmFuaW1hdGlvbkxpbWl0fHwKLTI1MCxmLGcsaDtwKGEucG9pbnRzLGZ1 bmN0aW9uKGkpe3ZhciBqPTNEaS5wbG90WSxrPTNEaS5ncmFwaGljO2lmKGohPTNEPTNEPQp0JiYh aXNOYU4oaikmJmkueSE9M0Q9M0RudWxsKWY9M0RpLnNoYXBlQXJncyxoPTNEcihhLmJvcmRlcldp ZHRoKT97InN0cm9rZS09CndpZHRoIjphLmJvcmRlcldpZHRofTp7fSxnPTNEaS5wb2ludEF0dHJb aS5zZWxlY3RlZD8ic2VsZWN0IjoiIl18fGEucG9pbnRBdD0KdHJbIiJdLGs/KGJiKGspLGsuYXR0 cihoKVtiLnBvaW50Q291bnQ8ZT8iYW5pbWF0ZSI6ImF0dHIiXSh3KGYpKSk6aS5ncmFwaGljPQo9 M0RkW2kuc2hhcGVUeXBlXShmKS5hdHRyKGcpLmF0dHIoaCkuYWRkKGEuZ3JvdXApLnNoYWRvdyhj LnNoYWRvdyxudWxsLGMuc3Q9CmFja2luZyYmIWMuYm9yZGVyUmFkaXVzKTtlbHNlIGlmKGspaS5n cmFwaGljPTNEay5kZXN0cm95KCl9KX0sYW5pbWF0ZTpmdW5jdD0KaW9uKGEpe3ZhciBiPTNEdGhp cy55QXhpcyxjPTNEdGhpcy5vcHRpb25zLGQ9M0R0aGlzLmNoYXJ0LmludmVydGVkLGU9M0R7fTtp PQpmKGFhKWE/Ci0oZS5zY2FsZVk9M0QwLjAwMSxhPTNEQyhiLnBvcytiLmxlbix2KGIucG9zLGIu dG9QaXhlbHMoYy50aHJlc2hvbGQpKSksZD9lLj0KdHJhbnNsYXRlWD0zRGEtYi5sZW46ZS50cmFu c2xhdGVZPTNEYSx0aGlzLmdyb3VwLmF0dHIoZSkpOihlLnNjYWxlWT0zRDEsZVtkPQo/InRyYW5z bGF0ZVgiOiJ0cmFuc2xhdGVZIl09M0RiLnBvcyx0aGlzLmdyb3VwLmFuaW1hdGUoZSx0aGlzLm9w dGlvbnMuYW5pbWE9CnRpb24pLHRoaXMuYW5pbWF0ZT0zRG51bGwpfSxyZW1vdmU6ZnVuY3Rpb24o KXt2YXIgYT0zRHRoaXMsYj0zRGEuY2hhcnQ7Yi5oYT0Kc1JlbmRlcmVkJiZwKGIuc2VyaWVzLGZ1 bmN0aW9uKGIpe2lmKGIudHlwZT0zRD0zRD0zRGEudHlwZSliLmlzRGlydHk9M0QhMH0pPQo7Ty5w cm90b3R5cGUucmVtb3ZlLmFwcGx5KGEsYXJndW1lbnRzKX19KTtGLmNvbHVtbj0zRGdhO2JhLmJh cj0zRHcoYmEuY29sdW09Cm4pO3BhPTNEa2EoZ2Ese3R5cGU6ImJhciIsaW52ZXJ0ZWQ6ITB9KTtG LmJhcj0zRHBhO2JhLnNjYXR0ZXI9M0R3KFMse2xpbmVXaT0KZHRoOjAsdG9vbHRpcDp7aGVhZGVy Rm9ybWF0Oic8c3BhbiBzdHlsZT0zRCJjb2xvcjp7c2VyaWVzLmNvbG9yfSI+PUMzPUEyPUUyPQo9 ODA9OTQ9QzI9OEY8L3NwYW4+PHNwYW4gc3R5bGU9M0QiZm9udC1zaXplOiAxMHB4OyI+IHtzZXJp ZXMubmFtZX08L3NwYW4+PGI9CnIvPicsCi1wb2ludEZvcm1hdDoieDogPGI+e3BvaW50Lnh9PC9i Pjxici8+eTogPGI+e3BvaW50Lnl9PC9iPjxici8+In0sc3RpY2t5VHJhYz0Ka2luZzohMX0pO3Bh PTNEa2EoTyx7dHlwZToic2NhdHRlciIsc29ydGVkOiExLHJlcXVpcmVTb3J0aW5nOiExLG5vU2hh cmVkVG9vPQpsdGlwOiEwLHRyYWNrZXJHcm91cHM6WyJtYXJrZXJHcm91cCJdLHRha2VPcmRpbmFs UG9zaXRpb246ITEsc2luZ3VsYXJUb29sdGk9CnBzOiEwLGRyYXdHcmFwaDpmdW5jdGlvbigpe3Ro aXMub3B0aW9ucy5saW5lV2lkdGgmJk8ucHJvdG90eXBlLmRyYXdHcmFwaC5jYT0KbGwodGhpcyl9 fSk7Ri5zY2F0dGVyPTNEcGE7YmEucGllPTNEdyhTLHtib3JkZXJDb2xvcjoiI0ZGRkZGRiIsYm9y ZGVyV2lkdGg6PQoxLGNlbnRlcjpbbnVsbCxudWxsXSxjbGlwOiExLGNvbG9yQnlQb2ludDohMCxk YXRhTGFiZWxzOntkaXN0YW5jZTozMCxlbmFibGU9CmQ6ITAsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucG9pbnQubmFtZX19LGlnbm9yZUhpZGRlblBvaW50OiEwLAotbGVnZW5kVHlw ZToicG9pbnQiLG1hcmtlcjpudWxsLHNpemU6bnVsbCxzaG93SW5MZWdlbmQ6ITEsc2xpY2VkT2Zm c2V0OjEwLHM9CnRhdGVzOntob3Zlcjp7YnJpZ2h0bmVzczowLjEsc2hhZG93OiExfX0sc3RpY2t5 VHJhY2tpbmc6ITEsdG9vbHRpcDp7Zm9sbG93UD0Kb2ludGVyOiEwfX0pO1M9M0R7dHlwZToicGll Iixpc0NhcnRlc2lhbjohMSxwb2ludENsYXNzOmthKEVhLHtpbml0OmZ1bmN0aW9uPQooKXtFYS5w cm90b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGE9M0R0aGlzLGI7aWYoYS55 PDApYS55PTNEbnU9CmxsO3EoYSx7dmlzaWJsZTphLnZpc2libGUhPTNEPTNEITEsbmFtZTptKGEu bmFtZSwiU2xpY2UiKX0pO2I9M0RmdW5jdGlvbihiKT0Ke2Euc2xpY2UoYi50eXBlPTNEPTNEPTNE InNlbGVjdCIpfTtLKGEsInNlbGVjdCIsYik7SyhhLCJ1bnNlbGVjdCIsYik7cmV0dXJuPQogYX0s c2V0VmlzaWJsZTpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMsYz0zRGIuc2VyaWVzLGQ9M0RjLmNo YXJ0O2IudmlzaWJsZT0KPTNEYi5vcHRpb25zLnZpc2libGU9M0QKLWE9M0RhPTNEPTNEPTNEdD8h Yi52aXNpYmxlOmE7Yy5vcHRpb25zLmRhdGFbRGEoYixjLmRhdGEpXT0zRGIub3B0aW9ucztwKFsi PQpncmFwaGljIiwiZGF0YUxhYmVsIiwiY29ubmVjdG9yIiwic2hhZG93R3JvdXAiXSxmdW5jdGlv bihjKXtpZihiW2NdKWJbY11bYT89CiJzaG93IjoiaGlkZSJdKCEwKX0pO2IubGVnZW5kSXRlbSYm ZC5sZWdlbmQuY29sb3JpemVJdGVtKGIsYSk7aWYoIWMuaXNEaXJ0eT0KJiZjLm9wdGlvbnMuaWdu b3JlSGlkZGVuUG9pbnQpYy5pc0RpcnR5PTNEITAsZC5yZWRyYXcoKX0sc2xpY2U6ZnVuY3Rpb24o YSxiPQosYyl7dmFyIGQ9M0R0aGlzLnNlcmllcztRYShjLGQuY2hhcnQpO20oYiwhMCk7dGhpcy5z bGljZWQ9M0R0aGlzLm9wdGlvbnMuc2w9CmljZWQ9M0RhPTNEcihhKT9hOiF0aGlzLnNsaWNlZDtk Lm9wdGlvbnMuZGF0YVtEYSh0aGlzLGQuZGF0YSldPTNEdGhpcy5vcHRpbz0KbnM7YT0zRGE/dGhp cy5zbGljZWRUcmFuc2xhdGlvbjp7dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MH07dGhpcy5ncmFw aGljLmFuPQppbWF0ZShhKTsKLXRoaXMuc2hhZG93R3JvdXAmJnRoaXMuc2hhZG93R3JvdXAuYW5p bWF0ZShhKX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7dmFyIGI9Cj0zRHRoaXMuc2hhcGVBcmdzLGM9 M0R0aGlzLnNlcmllcy5jaGFydDtyZXR1cm4gdGhpcy5zZXJpZXMuY2hhcnQucmVuZGVyZXIucz0K eW1ib2xzLmFyYyhjLnBsb3RMZWZ0K2IueCxjLnBsb3RUb3ArYi55LGIucithLGIucithLHtpbm5l clI6dGhpcy5zaGFwZUFyZ3MuPQpyLHN0YXJ0OmIuc3RhcnQsZW5kOmIuZW5kfSl9fSkscmVxdWly ZVNvcnRpbmc6ITEsbm9TaGFyZWRUb29sdGlwOiEwLHRyYWNrZXI9Ckdyb3VwczpbImdyb3VwIiwi ZGF0YUxhYmVsc0dyb3VwIl0sYXhpc1R5cGVzOltdLHBvaW50QXR0clRvT3B0aW9uczp7c3Ryb2tl Oj0KImJvcmRlckNvbG9yIiwic3Ryb2tlLXdpZHRoIjoiYm9yZGVyV2lkdGgiLGZpbGw6ImNvbG9y In0sc2luZ3VsYXJUb29sdGlwczohPQowLGdldENvbG9yOnNhLGFuaW1hdGU6ZnVuY3Rpb24oYSl7 dmFyIGI9M0R0aGlzLGM9M0RiLnBvaW50cyxkPTNECi1iLnN0YXJ0QW5nbGVSYWQ7aWYoIWEpcChj LGZ1bmN0aW9uKGEpe3ZhciBjPTNEYS5ncmFwaGljLGE9M0RhLnNoYXBlQXJncztjJj0KJihjLmF0 dHIoe3I6Yi5jZW50ZXJbM10vMixzdGFydDpkLGVuZDpkfSksYy5hbmltYXRlKHtyOmEucixzdGFy dDphLnN0YXJ0LGVuPQpkOmEuZW5kfSxiLm9wdGlvbnMuYW5pbWF0aW9uKSl9KSxiLmFuaW1hdGU9 M0RudWxsfSxzZXREYXRhOmZ1bmN0aW9uKGEsYixjLGQ9Cil7Ty5wcm90b3R5cGUuc2V0RGF0YS5j YWxsKHRoaXMsYSwhMSxjLGQpO3RoaXMucHJvY2Vzc0RhdGEoKTt0aGlzLmdlbmVyYXRlUD0Kb2lu dHMoKTttKGIsITApJiZ0aGlzLmNoYXJ0LnJlZHJhdyhjKX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rp b24oKXt2YXIgYSxiPTNEPQowLGMsZCxlLGY9M0R0aGlzLm9wdGlvbnMuaWdub3JlSGlkZGVuUG9p bnQ7Ty5wcm90b3R5cGUuZ2VuZXJhdGVQb2ludHMuY2FsbCg9CnRoaXMpO2M9M0R0aGlzLnBvaW50 cztkPTNEYy5sZW5ndGg7Zm9yKGE9M0QwO2E8ZDthKyspZT0zRGNbYV0sYis9M0RmJiYhZS52aT0K c2libGU/Ci0wOmUueTt0aGlzLnRvdGFsPTNEYjtmb3IoYT0zRDA7YTxkO2ErKyllPTNEY1thXSxl LnBlcmNlbnRhZ2U9M0RiPjA/ZS55L2IqMT0KMDA6MCxlLnRvdGFsPTNEYn0sdHJhbnNsYXRlOmZ1 bmN0aW9uKGEpe3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt2YXIgYj0zRDAsYz0KPTNEdGhpcy5vcHRp b25zLGQ9M0RjLnNsaWNlZE9mZnNldCxlPTNEZCtjLmJvcmRlcldpZHRoLGYsZyxoLGk9M0RjLnN0 YXJ0QW5nPQpsZXx8MCxqPTNEdGhpcy5zdGFydEFuZ2xlUmFkPTNEbWEvMTgwKihpLTkwKSxpPTNE KHRoaXMuZW5kQW5nbGVSYWQ9M0RtYS8xODA9CioobShjLmVuZEFuZ2xlLGkrMzYwKS05MCkpLWos az0zRHRoaXMucG9pbnRzLGw9M0RjLmRhdGFMYWJlbHMuZGlzdGFuY2UsYz0zRD0KYy5pZ25vcmVI aWRkZW5Qb2ludCxvLG49M0RrLmxlbmd0aCxwO2lmKCFhKXRoaXMuY2VudGVyPTNEYT0zRHRoaXMu Z2V0Q2VudGVyPQooKTt0aGlzLmdldFg9M0RmdW5jdGlvbihiLGMpe2g9M0RVLmFzaW4oQygoYi1h WzFdKS8oYVsyXS8yK2wpLDEpKTtyZXR1cm4gYVs9CjBdKyhjPy0xOjEpKlooaCkqKGFbMl0vCi0y K2wpfTtmb3Iobz0zRDA7bzxuO28rKyl7cD0zRGtbb107Zj0zRGorYippO2lmKCFjfHxwLnZpc2li bGUpYis9M0RwLnBlcmNlbj0KdGFnZS8xMDA7Zz0zRGorYippO3Auc2hhcGVUeXBlPTNEImFyYyI7 cC5zaGFwZUFyZ3M9M0R7eDphWzBdLHk6YVsxXSxyOmFbMl0vPQoyLGlubmVyUjphWzNdLzIsc3Rh cnQ6dShmKjFFMykvMUUzLGVuZDp1KGcqMUUzKS8xRTN9O2g9M0QoZytmKS8yO2g+MS41Km1hP2g9 Ci09M0QyKm1hOmg8LW1hLzImJihoKz0zRDIqbWEpO3Auc2xpY2VkVHJhbnNsYXRpb249M0R7dHJh bnNsYXRlWDp1KFooaCkqZCksdD0KcmFuc2xhdGVZOnUoZWEoaCkqZCl9O2Y9M0RaKGgpKmFbMl0v MjtnPTNEZWEoaCkqYVsyXS8yO3AudG9vbHRpcFBvcz0zRFthWzBdPQorZiowLjcsYVsxXStnKjAu N107cC5oYWxmPTNEaDwtbWEvMnx8aD5tYS8yPzE6MDtwLmFuZ2xlPTNEaDtlPTNEQyhlLGwvMik7 cC49CmxhYmVsUG9zPTNEW2FbMF0rZitaKGgpKmwsYVsxXStnK2VhKGgpKmwsYVswXStmK1ooaCkq ZSxhWzFdK2crZWEoaCkqZSxhWzBdKz0KZixhWzFdK2csbDwwPwotImNlbnRlciI6cC5oYWxmPyJy aWdodCI6ImxlZnQiLGhdfX0sZHJhd0dyYXBoOm51bGwsZHJhd1BvaW50czpmdW5jdGlvbigpe3Y9 CmFyIGE9M0R0aGlzLGI9M0RhLmNoYXJ0LnJlbmRlcmVyLGMsZCxlPTNEYS5vcHRpb25zLnNoYWRv dyxmLGc7aWYoZSYmIWEuc2hhZD0Kb3dHcm91cClhLnNoYWRvd0dyb3VwPTNEYi5nKCJzaGFkb3ci KS5hZGQoYS5ncm91cCk7cChhLnBvaW50cyxmdW5jdGlvbihoKXtkPQo9M0RoLmdyYXBoaWM7Zz0z RGguc2hhcGVBcmdzO2Y9M0RoLnNoYWRvd0dyb3VwO2lmKGUmJiFmKWY9M0RoLnNoYWRvd0dyb3Vw PQo9M0RiLmcoInNoYWRvdyIpLmFkZChhLnNoYWRvd0dyb3VwKTtjPTNEaC5zbGljZWQ/aC5zbGlj ZWRUcmFuc2xhdGlvbjp7dHJhbnM9CmxhdGVYOjAsdHJhbnNsYXRlWTowfTtmJiZmLmF0dHIoYyk7 ZD9kLmFuaW1hdGUocShnLGMpKTpoLmdyYXBoaWM9M0RkPTNEYltoLj0Kc2hhcGVUeXBlXShnKS5z ZXRSYWRpYWxSZWZlcmVuY2UoYS5jZW50ZXIpLmF0dHIoaC5wb2ludEF0dHJbaC5zZWxlY3RlZD8i c2VsPQplY3QiOgotIiJdKS5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQifSkuYXR0cihj KS5hZGQoYS5ncm91cCkuc2hhZG93KGUsZik7aC49CnZpc2libGUhPTNEPTNEdm9pZCAwJiZoLnNl dFZpc2libGUoaC52aXNpYmxlKX0pfSxzb3J0QnlBbmdsZTpmdW5jdGlvbihhLGIpez0KYS5zb3J0 KGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGEuYW5nbGUhPTNEPTNEdm9pZCAwJiYoZC5hbmdsZS1hLmFu Z2xlKSpifSl9LGRyPQphd0xlZ2VuZFN5bWJvbDpOLmRyYXdSZWN0YW5nbGUsZ2V0Q2VudGVyOlgu Z2V0Q2VudGVyLGdldFN5bWJvbDpzYX07Uz0zRGthKE89CixTKTtGLnBpZT0zRFM7Ty5wcm90b3R5 cGUuZHJhd0RhdGFMYWJlbHM9M0RmdW5jdGlvbigpe3ZhciBhPTNEdGhpcyxiPTNEYS5vcD0KdGlv bnMsYz0zRGIuY3Vyc29yLGQ9M0RiLmRhdGFMYWJlbHMsZT0zRGEucG9pbnRzLGYsZyxoLGk7aWYo ZC5lbmFibGVkfHxhLl9oPQphc1BvaW50TGFiZWxzKWEuZGxQcm9jZXNzT3B0aW9ucyYmYS5kbFBy b2Nlc3NPcHRpb25zKGQpLGk9M0RhLnBsb3RHcm91cCgiZGE9CnRhTGFiZWxzR3JvdXAiLAotImRh dGEtbGFiZWxzIiwiaGlkZGVuIixkLnpJbmRleHx8NiksIWEuaGFzUmVuZGVyZWQmJm0oZC5kZWZl ciwhMCkmJihpLmF0dHI9Cih7b3BhY2l0eTowfSksSyhhLCJhZnRlckFuaW1hdGUiLGZ1bmN0aW9u KCl7YS5kYXRhTGFiZWxzR3JvdXAuc2hvdygpW2IuYW5pbT0KYXRpb24/ImFuaW1hdGUiOiJhdHRy Il0oe29wYWNpdHk6MX0se2R1cmF0aW9uOjIwMH0pfSkpLGc9M0RkLHAoZSxmdW5jdGlvbihiPQop e3ZhciBlLGw9M0RiLmRhdGFMYWJlbCxvLG4scD0zRGIuY29ubmVjdG9yLHU9M0QhMDtmPTNEYi5v cHRpb25zJiZiLm9wdGlvbnM9Ci5kYXRhTGFiZWxzO2U9M0RtKGYmJmYuZW5hYmxlZCxnLmVuYWJs ZWQpO2lmKGwmJiFlKWIuZGF0YUxhYmVsPTNEbC5kZXN0cm95KD0KKTtlbHNlIGlmKGUpe2Q9M0R3 KGcsZik7ZT0zRGQucm90YXRpb247bz0zRGIuZ2V0TGFiZWxDb25maWcoKTtoPTNEZC5mb3JtYXQ/ PQpJYShkLmZvcm1hdCxvKTpkLmZvcm1hdHRlci5jYWxsKG8sZCk7ZC5zdHlsZS5jb2xvcj0zRG0o ZC5jb2xvcixkLnN0eWxlLmNvbG89CnIsCi1hLmNvbG9yLCJibGFjayIpO2lmKGwpaWYocihoKSls LmF0dHIoe3RleHQ6aH0pLHU9M0QhMTtlbHNle2lmKGIuZGF0YUxhYmVsPQo9M0RsPTNEbC5kZXN0 cm95KCkscCliLmNvbm5lY3Rvcj0zRHAuZGVzdHJveSgpfWVsc2UgaWYocihoKSl7bD0zRHtmaWxs OmQuYmE9CmNrZ3JvdW5kQ29sb3Isc3Ryb2tlOmQuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6 ZC5ib3JkZXJXaWR0aCxyOmQuYm9yZGVyUj0KYWRpdXN8fDAscm90YXRpb246ZSxwYWRkaW5nOmQu cGFkZGluZyx6SW5kZXg6MX07Zm9yKG4gaW4gbClsW25dPTNEPTNEPTNEdCYmPQpkZWxldGUgbFtu XTtsPTNEYi5kYXRhTGFiZWw9M0RhLmNoYXJ0LnJlbmRlcmVyW2U/InRleHQiOiJsYWJlbCJdKGgs MCwtOTk5LG49CnVsbCxudWxsLG51bGwsZC51c2VIVE1MKS5hdHRyKGwpLmNzcyhxKGQuc3R5bGUs YyYme2N1cnNvcjpjfSkpLmFkZChpKS5zaGFkbz0KdyhkLnNoYWRvdyl9bCYmYS5hbGlnbkRhdGFM YWJlbChiLGwsZCxudWxsLHUpfX0pfTtPLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlPQpsPTNECi1m dW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPTNEdGhpcy5jaGFydCxnPTNEZi5pbnZlcnRlZCxoPTNE bShhLnBsb3RYLC05OTkpLD0KaT0zRG0oYS5wbG90WSwtOTk5KSxqPTNEYi5nZXRCQm94KCk7aWYo YT0zRHRoaXMudmlzaWJsZSYmKGEuc2VyaWVzLmZvcmNlREx8PQp8Zi5pc0luc2lkZVBsb3QoaCx1 KGkpLGcpfHxkJiZmLmlzSW5zaWRlUGxvdChoLGc/ZC54KzE6ZC55K2QuaGVpZ2h0LTEsZykpKWQ9 Cj0zRHEoe3g6Zz9mLnBsb3RXaWR0aC1pOmgseTp1KGc/Zi5wbG90SGVpZ2h0LWg6aSksd2lkdGg6 MCxoZWlnaHQ6MH0sZCkscShjLD0Ke3dpZHRoOmoud2lkdGgsaGVpZ2h0OmouaGVpZ2h0fSksYy5y b3RhdGlvbj8oZz0zRHthbGlnbjpjLmFsaWduLHg6ZC54K2MueCtkPQoud2lkdGgvMix5OmQueStj LnkrZC5oZWlnaHQvMn0sYltlPyJhdHRyIjoiYW5pbWF0ZSJdKGcpKTooYi5hbGlnbihjLG51bGws ZCk9CixnPTNEYi5hbGlnbkF0dHIsbShjLm92ZXJmbG93LCJqdXN0aWZ5Iik9M0Q9M0Q9M0QianVz dGlmeSI/dGhpcy5qdXN0aWZ5RGF0YT0KTGFiZWwoYiwKLWMsZyxqLGQsZSk6bShjLmNyb3AsITAp JiYoYT0zRGYuaXNJbnNpZGVQbG90KGcueCxnLnkpJiZmLmlzSW5zaWRlUGxvdChnLngrPQpqLndp ZHRoLGcueStqLmhlaWdodCkpKTtpZighYSliLmF0dHIoe3k6LTk5OX0pLGIucGxhY2VkPTNEITF9 O08ucHJvdG90eXBlLmo9CnVzdGlmeURhdGFMYWJlbD0zRGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz0zRHRoaXMuY2hhcnQsaD0zRGIuYWxpZ24saT0zRD0KYi52ZXJ0aWNhbEFsaWduLGosaztq PTNEYy54O2lmKGo8MCloPTNEPTNEPTNEInJpZ2h0Ij9iLmFsaWduPTNEImxlZnQiOmIueD0KPTNE LWosaz0zRCEwO2o9M0RjLngrZC53aWR0aDtpZihqPmcucGxvdFdpZHRoKWg9M0Q9M0Q9M0QibGVm dCI/Yi5hbGlnbj0zRCJyPQppZ2h0IjpiLng9M0RnLnBsb3RXaWR0aC1qLGs9M0QhMDtqPTNEYy55 O2lmKGo8MClpPTNEPTNEPTNEImJvdHRvbSI/Yi52ZXJ0aWM9CmFsQWxpZ249M0QidG9wIjpiLnk9 M0QtaixrPTNEITA7aj0zRGMueStkLmhlaWdodDtpZihqPmcucGxvdEhlaWdodClpPTNEPTNEPQo9 M0QidG9wIj9iLnZlcnRpY2FsQWxpZ249M0QiYm90dG9tIjpiLnk9M0RnLnBsb3RIZWlnaHQtCi1q LGs9M0QhMDtpZihrKWEucGxhY2VkPTNEIWYsYS5hbGlnbihiLG51bGwsZSl9O2lmKEYucGllKUYu cGllLnByb3RvdHlwZS5kcj0KYXdEYXRhTGFiZWxzPTNEZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMs Yj0zRGEuZGF0YSxjLGQ9M0RhLmNoYXJ0LGU9M0RhLm9wdGlvPQpucy5kYXRhTGFiZWxzLGY9M0Rt KGUuY29ubmVjdG9yUGFkZGluZywxMCksZz0zRG0oZS5jb25uZWN0b3JXaWR0aCwxKSxoPTNEZC49 CnBsb3RXaWR0aCxkPTNEZC5wbG90SGVpZ2h0LGksaixrPTNEbShlLnNvZnRDb25uZWN0b3IsITAp LGw9M0RlLmRpc3RhbmNlLG89Cj0zRGEuY2VudGVyLG49M0RvWzJdLzIscT0zRG9bMV0scj0zRGw+ MCx0LHcseCx5LHo9M0RbW10sW11dLEEsQyxHLEQsQixGPTNEWz0KMCwwLDAsMF0sTj0zRGZ1bmN0 aW9uKGEsYil7cmV0dXJuIGIueS1hLnl9O2lmKGEudmlzaWJsZSYmKGUuZW5hYmxlZHx8YS5faGFz PQpQb2ludExhYmVscykpe08ucHJvdG90eXBlLmRyYXdEYXRhTGFiZWxzLmFwcGx5KGEpO3AoYixm dW5jdGlvbihhKXthLmRhdGFMYWI9CmVsJiZhLnZpc2libGUmJnpbYS5oYWxmXS5wdXNoKGEpfSk7 Ci1mb3IoRD0zRDA7IXkmJmJbRF07KXk9M0RiW0RdJiZiW0RdLmRhdGFMYWJlbCYmKGJbRF0uZGF0 YUxhYmVsLmdldEJCb3goKS5oZT0KaWdodHx8MjEpLEQrKztmb3IoRD0zRDI7RC0tOyl7dmFyIGI9 M0RbXSxLPTNEW10sSD0zRHpbRF0sST0zREgubGVuZ3RoLEU7YS5zPQpvcnRCeUFuZ2xlKEgsRC0w LjUpO2lmKGw+MCl7Zm9yKEI9M0RxLW4tbDtCPD0zRHErbitsO0IrPTNEeSliLnB1c2goQik7dz0z RGI9Ci5sZW5ndGg7aWYoST53KXtjPTNEW10uY29uY2F0KEgpO2Muc29ydChOKTtmb3IoQj0zREk7 Qi0tOyljW0JdLnJhbms9M0RCO2Zvcj0KKEI9M0RJO0ItLTspSFtCXS5yYW5rPj0zRHcmJkguc3Bs aWNlKEIsMSk7ST0zREgubGVuZ3RofWZvcihCPTNEMDtCPEk7QisrKXtjPQo9M0RIW0JdO3g9M0Rj LmxhYmVsUG9zO2M9M0Q5OTk5O3ZhciBRLFA7Zm9yKFA9M0QwO1A8dztQKyspUT0zRE0oYltQXS14 WzFdKSw9ClE8YyYmKGM9M0RRLEU9M0RQKTtpZihFPEImJmJbQl0hPTNEPTNEbnVsbClFPTNEQjtl bHNlIGZvcih3PEktQitFJiZiW0JdIT0zRD0KPTNEbnVsbCYmKEU9M0R3LUkrQik7YltFXT0zRD0z RD0zRG51bGw7KUUrKztLLnB1c2goe2k6RSwKLXk6YltFXX0pO2JbRV09M0RudWxsfUsuc29ydChO KX1mb3IoQj0zRDA7QjxJO0IrKyl7Yz0zREhbQl07eD0zRGMubGFiZWxQb3M7PQp0PTNEYy5kYXRh TGFiZWw7Rz0zRGMudmlzaWJsZT0zRD0zRD0zRCExPyJoaWRkZW4iOiJ2aXNpYmxlIjtjPTNEeFsx XTtpZihsPjA9Cil7aWYodz0zREsucG9wKCksRT0zRHcuaSxDPTNEdy55LGM+QyYmYltFKzFdIT0z RD0zRG51bGx8fGM8QyYmYltFLTFdIT0zRD0zRD0KbnVsbClDPTNEY31lbHNlIEM9M0RjO0E9M0Rl Lmp1c3RpZnk/b1swXSsoRD8tMToxKSoobitsKTphLmdldFgoRT0zRD0zRD0zRDB8PQp8RT0zRD0z RD0zRGIubGVuZ3RoLTE/YzpDLEQpO3QuX2F0dHI9M0R7dmlzaWJpbGl0eTpHLGFsaWduOnhbNl19 O3QuX3Bvcz0zRHs9Cng6QStlLngrKHtsZWZ0OmYscmlnaHQ6LWZ9W3hbNl1dfHwwKSx5OkMrZS55 LTEwfTt0LmNvbm5YPTNEQTt0LmNvbm5ZPTNEQztpZj0KKHRoaXMub3B0aW9ucy5zaXplPTNEPTNE PTNEbnVsbCl3PTNEdC53aWR0aCxBLXc8Zj9GWzNdPTNEdih1KHctQStmKSxGWzNdKTpBPQordz5o LWYmJihGWzFdPTNEdih1KEErdy1oK2YpLEZbMV0pKSxDLXkvMjwwP0ZbMF09M0QKLXYodSgtQyt5 LzIpLEZbMF0pOkMreS8yPmQmJihGWzJdPTNEdih1KEMreS8yLWQpLEZbMl0pKX19aWYoQmEoRik9 M0Q9M0Q9M0QwPQp8fHRoaXMudmVyaWZ5RGF0YUxhYmVsT3ZlcmZsb3coRikpdGhpcy5wbGFjZURh dGFMYWJlbHMoKSxyJiZnJiZwKHRoaXMucG9pbnQ9CnMsZnVuY3Rpb24oYil7aT0zRGIuY29ubmVj dG9yO3g9M0RiLmxhYmVsUG9zO2lmKCh0PTNEYi5kYXRhTGFiZWwpJiZ0Ll9wb3MpRz0KPTNEdC5f YXR0ci52aXNpYmlsaXR5LEE9M0R0LmNvbm5YLEM9M0R0LmNvbm5ZLGo9M0RrP1siTSIsQSsoeFs2 XT0zRD0zRD0zRCJsPQplZnQiPzU6LTUpLEMsIkMiLEEsQywyKnhbMl0teFs0XSwyKnhbM10teFs1 XSx4WzJdLHhbM10sIkwiLHhbNF0seFs1XV06WyJNIiw9CkErKHhbNl09M0Q9M0Q9M0QibGVmdCI/ NTotNSksQywiTCIseFsyXSx4WzNdLCJMIix4WzRdLHhbNV1dLGk/KGkuYW5pbWF0ZSh7ZD0KOmp9 KSxpLmF0dHIoInZpc2liaWxpdHkiLEcpKTpiLmNvbm5lY3Rvcj0zRGk9M0RhLmNoYXJ0LnJlbmRl cmVyLnBhdGgoaikuYXR0PQpyKHsic3Ryb2tlLXdpZHRoIjpnLAotc3Ryb2tlOmUuY29ubmVjdG9y Q29sb3J8fGIuY29sb3J8fCIjNjA2MDYwIix2aXNpYmlsaXR5Okd9KS5hZGQoYS5kYXRhTGFiZWw9 CnNHcm91cCk7ZWxzZSBpZihpKWIuY29ubmVjdG9yPTNEaS5kZXN0cm95KCl9KX19LEYucGllLnBy b3RvdHlwZS5wbGFjZURhdGFMYT0KYmVscz0zRGZ1bmN0aW9uKCl7cCh0aGlzLnBvaW50cyxmdW5j dGlvbihhKXt2YXIgYT0zRGEuZGF0YUxhYmVsLGI7aWYoYSkoYj0KPTNEYS5fcG9zKT8oYS5hdHRy KGEuX2F0dHIpLGFbYS5tb3ZlZD8iYW5pbWF0ZSI6ImF0dHIiXShiKSxhLm1vdmVkPTNEITApOmEm PQomYS5hdHRyKHt5Oi05OTl9KX0pfSxGLnBpZS5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWw9M0Rz YSxGLnBpZS5wcm90b3R5cGUudmU9CnJpZnlEYXRhTGFiZWxPdmVyZmxvdz0zRGZ1bmN0aW9uKGEp e3ZhciBiPTNEdGhpcy5jZW50ZXIsYz0zRHRoaXMub3B0aW9ucyxkPQo9M0RjLmNlbnRlcixlPTNE Yz0zRGMubWluU2l6ZXx8ODAsZjtkWzBdIT0zRD0zRG51bGw/ZT0zRHYoYlsyXS12KGFbMV0sYVsz XSk9CixjKTooZT0zRHYoYlsyXS0KLWFbMV0tYVszXSxjKSxiWzBdKz0zRChhWzNdLWFbMV0pLzIp O2RbMV0hPTNEPTNEbnVsbD9lPTNEdihDKGUsYlsyXS12KGFbMF0sPQphWzJdKSksYyk6KGU9M0R2 KEMoZSxiWzJdLWFbMF0tYVsyXSksYyksYlsxXSs9M0QoYVswXS1hWzJdKS8yKTtlPGJbMl0/KGJb Ml09Cj0zRGUsdGhpcy50cmFuc2xhdGUoYikscCh0aGlzLnBvaW50cyxmdW5jdGlvbihhKXtpZihh LmRhdGFMYWJlbClhLmRhdGFMYWJlbD0KLl9wb3M9M0RudWxsfSksdGhpcy5kcmF3RGF0YUxhYmVs cyYmdGhpcy5kcmF3RGF0YUxhYmVscygpKTpmPTNEITA7cmV0dXJuIGZ9PQo7aWYoRi5jb2x1bW4p Ri5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsPTNEZnVuY3Rpb24oYSxiLGMsZCxlKXt2 YXIgZj0KPTNEdGhpcy5jaGFydCxnPTNEZi5pbnZlcnRlZCxoPTNEYS5kbEJveHx8YS5zaGFwZUFy Z3MsaT0zRGEuYmVsb3d8fGEucGxvdFk+PQptKHRoaXMudHJhbnNsYXRlZFRocmVzaG9sZCxmLnBs b3RTaXplWSksaj0zRG0oYy5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2s9CmluZyk7aWYoaCYm Ci0oZD0zRHcoaCksZyYmKGQ9M0R7eDpmLnBsb3RXaWR0aC1kLnktZC5oZWlnaHQseTpmLnBsb3RI ZWlnaHQtZC54LWQud2lkdGgsdz0KaWR0aDpkLmhlaWdodCxoZWlnaHQ6ZC53aWR0aH0pLCFqKSln PyhkLngrPTNEaT8wOmQud2lkdGgsZC53aWR0aD0zRDApOihkLnkrPQo9M0RpP2QuaGVpZ2h0OjAs ZC5oZWlnaHQ9M0QwKTtjLmFsaWduPTNEbShjLmFsaWduLCFnfHxqPyJjZW50ZXIiOmk/InJpZ2h0 Ijo9CiJsZWZ0Iik7Yy52ZXJ0aWNhbEFsaWduPTNEbShjLnZlcnRpY2FsQWxpZ24sZ3x8aj8ibWlk ZGxlIjppPyJ0b3AiOiJib3R0b20iKT0KO08ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmNhbGwo dGhpcyxhLGIsYyxkLGUpfTtTPTNEUi5UcmFja2VyTWl4aW49M0R7ZHJhPQp3VHJhY2tlclBvaW50 OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RhLmNoYXJ0LGM9M0RiLnBvaW50ZXIsZD0zRGEu b3B0aW89Cm5zLmN1cnNvcixlPTNEZCYme2N1cnNvcjpkfSxmPTNEZnVuY3Rpb24oYyl7dmFyIGQ9 M0RjLnRhcmdldCxlO2lmKGIuaG92ZXJTZT0KcmllcyE9M0Q9M0RhKWEub25Nb3VzZU92ZXIoKTsK LWZvcig7ZCYmIWU7KWU9M0RkLnBvaW50LGQ9M0RkLnBhcmVudE5vZGU7aWYoZSE9M0Q9M0R0JiZl IT0zRD0zRGIuaG92ZXJQb2luPQp0KWUub25Nb3VzZU92ZXIoYyl9O3AoYS5wb2ludHMsZnVuY3Rp b24oYSl7aWYoYS5ncmFwaGljKWEuZ3JhcGhpYy5lbGVtZW50LnA9Cm9pbnQ9M0RhO2lmKGEuZGF0 YUxhYmVsKWEuZGF0YUxhYmVsLmVsZW1lbnQucG9pbnQ9M0RhfSk7aWYoIWEuX2hhc1RyYWNraW5n KT0KcChhLnRyYWNrZXJHcm91cHMsZnVuY3Rpb24oYil7aWYoYVtiXSYmKGFbYl0uYWRkQ2xhc3Mo ImhpZ2hjaGFydHMtdHJhY2tlciIpPQoub24oIm1vdXNlb3ZlciIsZikub24oIm1vdXNlb3V0Iixm dW5jdGlvbihhKXtjLm9uVHJhY2tlck1vdXNlT3V0KGEpfSkuY3NzKGU9CiksJGEpKWFbYl0ub24o InRvdWNoc3RhcnQiLGYpfSksYS5faGFzVHJhY2tpbmc9M0QhMH0sZHJhd1RyYWNrZXJHcmFwaDpm dW5jdD0KaW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RhLm9wdGlvbnMsYz0zRGIudHJhY2tCeUFyZWEs ZD0zRFtdLmNvbmNhdChjP2EuYXJlYVBhPQp0aDoKLWEuZ3JhcGhQYXRoKSxlPTNEZC5sZW5ndGgs Zj0zRGEuY2hhcnQsZz0zRGYucG9pbnRlcixoPTNEZi5yZW5kZXJlcixpPTNEZi5vPQpwdGlvbnMu dG9vbHRpcC5zbmFwLGo9M0RhLnRyYWNrZXIsaz0zRGIuY3Vyc29yLGw9M0RrJiZ7Y3Vyc29yOmt9 LGs9M0RhLnNpbmc9CmxlUG9pbnRzLG0sbj0zRGZ1bmN0aW9uKCl7aWYoZi5ob3ZlclNlcmllcyE9 M0Q9M0RhKWEub25Nb3VzZU92ZXIoKX0scT0zRCJyZz0KYmEoMTkyLDE5MiwxOTIsIisoYWE/MS4w RS00OjAuMDAyKSsiKSI7aWYoZSYmIWMpZm9yKG09M0RlKzE7bS0tOylkW21dPTNEPTNEPQo9M0Qi TSImJmQuc3BsaWNlKG0rMSwwLGRbbSsxXS1pLGRbbSsyXSwiTCIpLChtJiZkW21dPTNEPTNEPTNE Ik0ifHxtPTNEPTNEPQo9M0RlKSYmZC5zcGxpY2UobSwwLCJMIixkW20tMl0raSxkW20tMV0pO2Zv cihtPTNEMDttPGsubGVuZ3RoO20rKyllPTNEa1ttXSw9CmQucHVzaCgiTSIsZS5wbG90WC1pLGUu cGxvdFksIkwiLGUucGxvdFgraSxlLnBsb3RZKTtqP2ouYXR0cih7ZDpkfSk6KGEudHJhYz0Ka2Vy PTNEaC5wYXRoKGQpLmF0dHIoeyJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCIsCi12aXNpYmlsaXR5 OmEudmlzaWJsZT8idmlzaWJsZSI6ImhpZGRlbiIsc3Ryb2tlOnEsZmlsbDpjP3E6USwic3Ryb2tl LXdpZHRoIj0KOmIubGluZVdpZHRoKyhjPzA6MippKSx6SW5kZXg6Mn0pLmFkZChhLmdyb3VwKSxw KFthLnRyYWNrZXIsYS5tYXJrZXJHcm91cF0sPQpmdW5jdGlvbihhKXthLmFkZENsYXNzKCJoaWdo Y2hhcnRzLXRyYWNrZXIiKS5vbigibW91c2VvdmVyIixuKS5vbigibW91c2VvdXQ9CiIsZnVuY3Rp b24oYSl7Zy5vblRyYWNrZXJNb3VzZU91dChhKX0pLmNzcyhsKTtpZigkYSlhLm9uKCJ0b3VjaHN0 YXJ0IixuKX0pKT0KfX07aWYoRi5jb2x1bW4pZ2EucHJvdG90eXBlLmRyYXdUcmFja2VyPTNEUy5k cmF3VHJhY2tlclBvaW50O2lmKEYucGllKUYucGllPQoucHJvdG90eXBlLmRyYXdUcmFja2VyPTNE Uy5kcmF3VHJhY2tlclBvaW50O2lmKEYuc2NhdHRlcilwYS5wcm90b3R5cGUuZHJhd1Q9CnJhY2tl cj0zRFMuZHJhd1RyYWNrZXJQb2ludDtxKGxiLnByb3RvdHlwZSx7c2V0SXRlbUV2ZW50czpmdW5j dGlvbihhLAotYixjLGQsZSl7dmFyIGY9M0R0aGlzOyhjP2I6YS5sZWdlbmRHcm91cCkub24oIm1v dXNlb3ZlciIsZnVuY3Rpb24oKXthLnNldFM9CnRhdGUoImhvdmVyIik7Yi5jc3MoZi5vcHRpb25z Lml0ZW1Ib3ZlclN0eWxlKX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtiLj0KY3NzKGEudmlz aWJsZT9kOmUpO2Euc2V0U3RhdGUoKX0pLm9uKCJjbGljayIsZnVuY3Rpb24oYil7dmFyIGM9M0Rm dW5jdGlvbigpPQp7YS5zZXRWaXNpYmxlKCl9LGI9M0R7YnJvd3NlckV2ZW50OmJ9O2EuZmlyZVBv aW50RXZlbnQ/YS5maXJlUG9pbnRFdmVudCgibGU9CmdlbmRJdGVtQ2xpY2siLGIsYyk6RChhLCJs ZWdlbmRJdGVtQ2xpY2siLGIsYyl9KX0sY3JlYXRlQ2hlY2tib3hGb3JJdGVtOmZ1bj0KY3Rpb24o YSl7YS5jaGVja2JveD0zRFkoImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNoZWNrZWQ6YS5zZWxl Y3RlZCxkZWZhdWx0PQpDaGVja2VkOmEuc2VsZWN0ZWR9LHRoaXMub3B0aW9ucy5pdGVtQ2hlY2ti b3hTdHlsZSx0aGlzLmNoYXJ0LmNvbnRhaW5lcik7Ci1LKGEuY2hlY2tib3gsImNsaWNrIixmdW5j dGlvbihiKXtEKGEsImNoZWNrYm94Q2xpY2siLHtjaGVja2VkOmIudGFyZ2V0LmNoZT0KY2tlZH0s ZnVuY3Rpb24oKXthLnNlbGVjdCgpfSl9KX19KTtFLmxlZ2VuZC5pdGVtU3R5bGUuY3Vyc29yPTNE InBvaW50ZXIiO3EoPQpZYS5wcm90b3R5cGUse3Nob3dSZXNldFpvb206ZnVuY3Rpb24oKXt2YXIg YT0zRHRoaXMsYj0zREUubGFuZyxjPTNEYS5vcHRpb249CnMuY2hhcnQucmVzZXRab29tQnV0dG9u LGQ9M0RjLnRoZW1lLGU9M0RkLnN0YXRlcyxmPTNEYy5yZWxhdGl2ZVRvPTNEPTNEPTNEIj0KY2hh cnQiP251bGw6InBsb3RCb3giO3RoaXMucmVzZXRab29tQnV0dG9uPTNEYS5yZW5kZXJlci5idXR0 b24oYi5yZXNldFpvb20sPQpudWxsLG51bGwsZnVuY3Rpb24oKXthLnpvb21PdXQoKX0sZCxlJiZl LmhvdmVyKS5hdHRyKHthbGlnbjpjLnBvc2l0aW9uLmFsaWc9Cm4sdGl0bGU6Yi5yZXNldFpvb21U aXRsZX0pLmFkZCgpLmFsaWduKGMucG9zaXRpb24sITEsZil9LHpvb21PdXQ6ZnVuY3Rpb24oKT0K e3ZhciBhPTNECi10aGlzO0QoYSwic2VsZWN0aW9uIix7cmVzZXRTZWxlY3Rpb246ITB9LGZ1bmN0 aW9uKCl7YS56b29tKCl9KX0sem9vbTpmdW5jdD0KaW9uKGEpe3ZhciBiLGM9M0R0aGlzLnBvaW50 ZXIsZD0zRCExLGU7IWF8fGEucmVzZXRTZWxlY3Rpb24/cCh0aGlzLmF4ZXMsZnVuPQpjdGlvbihh KXtiPTNEYS56b29tKCl9KTpwKGEueEF4aXMuY29uY2F0KGEueUF4aXMpLGZ1bmN0aW9uKGEpe3Zh ciBlPTNEYS5heGk9CnMsaD0zRGUuaXNYQXhpcztpZihjW2g/Inpvb21YIjoiem9vbVkiXXx8Y1to PyJwaW5jaFgiOiJwaW5jaFkiXSliPTNEZS56b29tKD0KYS5taW4sYS5tYXgpLGUuZGlzcGxheUJ0 biYmKGQ9M0QhMCl9KTtlPTNEdGhpcy5yZXNldFpvb21CdXR0b247aWYoZCYmIWUpdGhpPQpzLnNo b3dSZXNldFpvb20oKTtlbHNlIGlmKCFkJiZjYShlKSl0aGlzLnJlc2V0Wm9vbUJ1dHRvbj0zRGUu ZGVzdHJveSgpO2ImJnQ9Cmhpcy5yZWRyYXcobSh0aGlzLm9wdGlvbnMuY2hhcnQuYW5pbWF0aW9u LGEmJmEuYW5pbWF0aW9uLHRoaXMucG9pbnRDb3VudDwKLTEwMCkpfSxwYW46ZnVuY3Rpb24oYSxi KXt2YXIgYz0zRHRoaXMsZD0zRGMuaG92ZXJQb2ludHMsZTtkJiZwKGQsZnVuY3Rpb24oPQphKXth LnNldFN0YXRlKCl9KTtwKGI9M0Q9M0Q9M0QieHkiP1sxLDBdOlsxXSxmdW5jdGlvbihiKXt2YXIg ZD0zRGFbYj8iY2hhcnQ9ClgiOiJjaGFydFkiXSxoPTNEY1tiPyJ4QXhpcyI6InlBeGlzIl1bMF0s aT0zRGNbYj8ibW91c2VEb3duWCI6Im1vdXNlRG93blkiXT0KLGo9M0QoaC5wb2ludFJhbmdlfHww KS8yLGs9M0RoLmdldEV4dHJlbWVzKCksbD0zRGgudG9WYWx1ZShpLWQsITApK2osaT0zRGguPQp0 b1ZhbHVlKGkrY1tiPyJwbG90V2lkdGgiOiJwbG90SGVpZ2h0Il0tZCwhMCktajtoLnNlcmllcy5s ZW5ndGgmJmw+QyhrLmRhdGE9Ck1pbixrLm1pbikmJmk8dihrLmRhdGFNYXgsay5tYXgpJiYoaC5z ZXRFeHRyZW1lcyhsLGksITEsITEse3RyaWdnZXI6InBhbiJ9KT0KLGU9M0QhMCk7Y1tiPyJtb3Vz ZURvd25YIjoibW91c2VEb3duWSJdPTNEZH0pO2UmJmMucmVkcmF3KCExKTtHKGMuY29udGFpbmVy PQose2N1cnNvcjoibW92ZSJ9KX19KTsKLXEoRWEucHJvdG90eXBlLHtzZWxlY3Q6ZnVuY3Rpb24o YSxiKXt2YXIgYz0zRHRoaXMsZD0zRGMuc2VyaWVzLGU9M0RkLmNoYXJ0PQosYT0zRG0oYSwhYy5z ZWxlY3RlZCk7Yy5maXJlUG9pbnRFdmVudChhPyJzZWxlY3QiOiJ1bnNlbGVjdCIse2FjY3VtdWxh dGU6Yn09CixmdW5jdGlvbigpe2Muc2VsZWN0ZWQ9M0RjLm9wdGlvbnMuc2VsZWN0ZWQ9M0RhO2Qu b3B0aW9ucy5kYXRhW0RhKGMsZC5kYXRhKT0KXT0zRGMub3B0aW9ucztjLnNldFN0YXRlKGEmJiJz ZWxlY3QiKTtifHxwKGUuZ2V0U2VsZWN0ZWRQb2ludHMoKSxmdW5jdGlvbihhPQope2lmKGEuc2Vs ZWN0ZWQmJmEhPTNEPTNEYylhLnNlbGVjdGVkPTNEYS5vcHRpb25zLnNlbGVjdGVkPTNEITEsZC5v cHRpb25zLmQ9CmF0YVtEYShhLGQuZGF0YSldPTNEYS5vcHRpb25zLGEuc2V0U3RhdGUoIiIpLGEu ZmlyZVBvaW50RXZlbnQoInVuc2VsZWN0Iil9KT0KfSl9LG9uTW91c2VPdmVyOmZ1bmN0aW9uKGEp e3ZhciBiPTNEdGhpcy5zZXJpZXMsYz0zRGIuY2hhcnQsZD0zRGMudG9vbHRpcCxlPQo9M0RjLmhv dmVyUG9pbnQ7Ci1pZihlJiZlIT0zRD0zRHRoaXMpZS5vbk1vdXNlT3V0KCk7dGhpcy5maXJlUG9p bnRFdmVudCgibW91c2VPdmVyIik7ZCYmKCFkLj0Kc2hhcmVkfHxiLm5vU2hhcmVkVG9vbHRpcCkm JmQucmVmcmVzaCh0aGlzLGEpO3RoaXMuc2V0U3RhdGUoImhvdmVyIik7Yy5ob3ZlPQpyUG9pbnQ9 M0R0aGlzfSxvbk1vdXNlT3V0OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLnNlcmllcy5jaGFydCxi PTNEYS5ob3ZlclA9Cm9pbnRzO2lmKCFifHxEYSh0aGlzLGIpPTNEPTNEPTNELTEpdGhpcy5maXJl UG9pbnRFdmVudCgibW91c2VPdXQiKSx0aGlzLnNldD0KU3RhdGUoKSxhLmhvdmVyUG9pbnQ9M0Ru dWxsfSxpbXBvcnRFdmVudHM6ZnVuY3Rpb24oKXtpZighdGhpcy5oYXNJbXBvcnRlZEV2PQplbnRz KXt2YXIgYT0zRHcodGhpcy5zZXJpZXMub3B0aW9ucy5wb2ludCx0aGlzLm9wdGlvbnMpLmV2ZW50 cyxiO3RoaXMuZXZlbnQ9CnM9M0RhO2ZvcihiIGluIGEpSyh0aGlzLGIsYVtiXSk7dGhpcy5oYXNJ bXBvcnRlZEV2ZW50cz0zRCEwfX0sc2V0U3RhdGU6ZnVuYz0KdGlvbihhLAotYil7dmFyIGM9M0R0 aGlzLnBsb3RYLGQ9M0R0aGlzLnBsb3RZLGU9M0R0aGlzLnNlcmllcyxmPTNEZS5vcHRpb25zLnN0 YXRlcyw9Cmc9M0RiYVtlLnR5cGVdLm1hcmtlciYmZS5vcHRpb25zLm1hcmtlcixoPTNEZyYmIWcu ZW5hYmxlZCxpPTNEZyYmZy5zdGF0ZXNbYT0KXSxqPTNEaSYmaS5lbmFibGVkPTNEPTNEPTNEITEs az0zRGUuc3RhdGVNYXJrZXJHcmFwaGljLGw9M0R0aGlzLm1hcmtlcnx8e30sPQptPTNEZS5jaGFy dCxuPTNEZS5oYWxvLHAsYT0zRGF8fCIiO3A9M0R0aGlzLnBvaW50QXR0clthXXx8ZS5wb2ludEF0 dHJbYV07aWY9CighKGE9M0Q9M0Q9M0R0aGlzLnN0YXRlJiYhYnx8dGhpcy5zZWxlY3RlZCYmYSE9 M0Q9M0Qic2VsZWN0Inx8ZlthXSYmZlthXS5lbj0KYWJsZWQ9M0Q9M0Q9M0QhMXx8YSYmKGp8fGgm JmkuZW5hYmxlZD0zRD0zRD0zRCExKXx8YSYmbC5zdGF0ZXMmJmwuc3RhdGVzW2FdPQomJmwuc3Rh dGVzW2FdLmVuYWJsZWQ9M0Q9M0Q9M0QhMSkpe2lmKHRoaXMuZ3JhcGhpYylnPTNEZyYmdGhpcy5n cmFwaGljLnN5bWI9Cm9sTmFtZSYmcC5yLHRoaXMuZ3JhcGhpYy5hdHRyKHcocCxnP3t4OmMtCi1n LHk6ZC1nLHdpZHRoOjIqZyxoZWlnaHQ6MipnfTp7fSkpLGsmJmsuaGlkZSgpO2Vsc2V7aWYoYSYm aSlpZihnPTNEaS5yYWRpdT0KcyxsPTNEbC5zeW1ib2x8fGUuc3ltYm9sLGsmJmsuY3VycmVudFN5 bWJvbCE9M0Q9M0RsJiYoaz0zRGsuZGVzdHJveSgpKSxrKWtbPQpiPyJhbmltYXRlIjoiYXR0ciJd KHt4OmMtZyx5OmQtZ30pO2Vsc2UgaWYobCllLnN0YXRlTWFya2VyR3JhcGhpYz0zRGs9M0RtLnI9 CmVuZGVyZXIuc3ltYm9sKGwsYy1nLGQtZywyKmcsMipnKS5hdHRyKHApLmFkZChlLm1hcmtlckdy b3VwKSxrLmN1cnJlbnRTeW1ibz0KbD0zRGw7aWYoaylrW2EmJm0uaXNJbnNpZGVQbG90KGMsZCxt LmludmVydGVkKT8ic2hvdyI6ImhpZGUiXSgpfWlmKChjPTNEZlthPQpdJiZmW2FdLmhhbG8pJiZj LnNpemUpe2lmKCFuKWUuaGFsbz0zRG49M0RtLnJlbmRlcmVyLnBhdGgoKS5hZGQoZS5zZXJpZXNH cm89CnVwKTtuLmF0dHIocSh7ZmlsbDp5YSh0aGlzLmNvbG9yfHxlLmNvbG9yKS5zZXRPcGFjaXR5 KGMub3BhY2l0eSkuZ2V0KCl9LGMuYT0KdHRyaWJ1dGVzKSlbYj8KLSJhbmltYXRlIjoiYXR0ciJd KHtkOnRoaXMuaGFsb1BhdGgoYy5zaXplKX0pfWVsc2UgbiYmbi5hdHRyKHtkOltdfSk7dGhpcy5z PQp0YXRlPTNEYX19LGhhbG9QYXRoOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy5zZXJpZXMsYz0z RGIuY2hhcnQsZD0zRGIuZ2V0UGw9Cm90Qm94KCksZT0zRGMuaW52ZXJ0ZWQ7cmV0dXJuIGMucmVu ZGVyZXIuc3ltYm9scy5jaXJjbGUoZC50cmFuc2xhdGVYKyhlP2IueT0KQXhpcy5sZW4tdGhpcy5w bG90WTp0aGlzLnBsb3RYKS1hLGQudHJhbnNsYXRlWSsoZT9iLnhBeGlzLmxlbi10aGlzLnBsb3RY OnRoPQppcy5wbG90WSktYSxhKjIsYSoyKX19KTtxKE8ucHJvdG90eXBlLHtvbk1vdXNlT3Zlcjpm dW5jdGlvbigpe3ZhciBhPTNEdGhpcy49CmNoYXJ0LGI9M0RhLmhvdmVyU2VyaWVzO2lmKGImJmIh PTNEPTNEdGhpcyliLm9uTW91c2VPdXQoKTt0aGlzLm9wdGlvbnMuZXZlbj0KdHMubW91c2VPdmVy JiZEKHRoaXMsIm1vdXNlT3ZlciIpO3RoaXMuc2V0U3RhdGUoImhvdmVyIik7YS5ob3ZlclNlcmll cz0zRAotdGhpc30sb25Nb3VzZU91dDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5vcHRpb25zLGI9 M0R0aGlzLmNoYXJ0LGM9M0RiLnRvb2w9CnRpcCxkPTNEYi5ob3ZlclBvaW50O2lmKGQpZC5vbk1v dXNlT3V0KCk7dGhpcyYmYS5ldmVudHMubW91c2VPdXQmJkQodGhpcywibT0Kb3VzZU91dCIpO2Mm JiFhLnN0aWNreVRyYWNraW5nJiYoIWMuc2hhcmVkfHx0aGlzLm5vU2hhcmVkVG9vbHRpcCkmJmMu aGlkZSgpPQo7dGhpcy5zZXRTdGF0ZSgpO2IuaG92ZXJTZXJpZXM9M0RudWxsfSxzZXRTdGF0ZTpm dW5jdGlvbihhKXt2YXIgYj0zRHRoaXMub3A9CnRpb25zLGM9M0R0aGlzLmdyYXBoLGQ9M0R0aGlz LmdyYXBoTmVnLGU9M0RiLnN0YXRlcyxiPTNEYi5saW5lV2lkdGgsYT0zRGF8fD0KIiI7aWYodGhp cy5zdGF0ZSE9M0Q9M0RhKXRoaXMuc3RhdGU9M0RhLGVbYV0mJmVbYV0uZW5hYmxlZD0zRD0zRD0z RCExfHwoYSYmPQooYj0zRGVbYV0ubGluZVdpZHRofHxiKzEpLGMmJiFjLmRhc2hzdHlsZSYmKGE9 M0R7InN0cm9rZS13aWR0aCI6Yn0sYy5hdHRyKGE9CiksZCYmZC5hdHRyKGEpKSl9LAotc2V0Vmlz aWJsZTpmdW5jdGlvbihhLGIpe3ZhciBjPTNEdGhpcyxkPTNEYy5jaGFydCxlPTNEYy5sZWdlbmRJ dGVtLGYsZz0zRGQ9Ci5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyxoPTNEYy52aXNp YmxlO2Y9M0QoYy52aXNpYmxlPTNEYT0zRGMudXNlcj0KT3B0aW9ucy52aXNpYmxlPTNEYT0zRD0z RD0zRHQ/IWg6YSk/InNob3ciOiJoaWRlIjtwKFsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvPQp1cCIs Im1hcmtlckdyb3VwIiwidHJhY2tlciJdLGZ1bmN0aW9uKGEpe2lmKGNbYV0pY1thXVtmXSgpfSk7 aWYoZC5ob3ZlclNlcmk9CmVzPTNEPTNEPTNEYyljLm9uTW91c2VPdXQoKTtlJiZkLmxlZ2VuZC5j b2xvcml6ZUl0ZW0oYyxhKTtjLmlzRGlydHk9M0QhMDtjLj0Kb3B0aW9ucy5zdGFja2luZyYmcChk LnNlcmllcyxmdW5jdGlvbihhKXtpZihhLm9wdGlvbnMuc3RhY2tpbmcmJmEudmlzaWJsZSlhPQou aXNEaXJ0eT0zRCEwfSk7cChjLmxpbmtlZFNlcmllcyxmdW5jdGlvbihiKXtiLnNldFZpc2libGUo YSwhMSl9KTtpZihnKWQuaXM9CkRpcnR5Qm94PTNEITA7Ci1iIT0zRD0zRCExJiZkLnJlZHJhdygp O0QoYyxmKX0sc2V0VG9vbHRpcFBvaW50czpmdW5jdGlvbihhKXt2YXIgYj0zRFtdLGMsZD0KLGU9 M0R0aGlzLnhBeGlzLGY9M0RlJiZlLmdldEV4dHJlbWVzKCksZz0zRGU/ZS50b29sdGlwTGVufHxl Lmxlbjp0aGlzLmNoYXJ0PQoucGxvdFNpemVYLGgsaSxqPTNEW107aWYoISh0aGlzLm9wdGlvbnMu ZW5hYmxlTW91c2VUcmFja2luZz0zRD0zRD0zRCExfHx0aGk9CnMuc2luZ3VsYXJUb29sdGlwcykp e2lmKGEpdGhpcy50b29sdGlwUG9pbnRzPTNEbnVsbDtwKHRoaXMuc2VnbWVudHN8fHRoaXMucD0K b2ludHMsZnVuY3Rpb24oYSl7Yj0zRGIuY29uY2F0KGEpfSk7ZSYmZS5yZXZlcnNlZCYmKGI9M0Ri LnJldmVyc2UoKSk7dGhpcy5vPQpyZGVyVG9vbHRpcFBvaW50cyYmdGhpcy5vcmRlclRvb2x0aXBQ b2ludHMoYik7YT0zRGIubGVuZ3RoO2ZvcihpPTNEMDtpPGE7aSs9CispaWYoZT0zRGJbaV0sYz0z RGUueCxjPj0zRGYubWluJiZjPD0zRGYubWF4KXtoPTNEYltpKzFdO2M9M0RkPTNEPTNEPTNEdD8w Oj0KZCsxO2ZvcihkPTNEYltpKzFdP0ModigwLFQoKGUuY2xpZW50WCsKLShoP2gud3JhcHBlZENs aWVudFh8fGguY2xpZW50WDpnKSkvMikpLGcpOmc7Yz49M0QwJiZjPD0zRGQ7KWpbYysrXT0zRGV9 dGhpPQpzLnRvb2x0aXBQb2ludHM9M0RqfX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuc2V0VmlzaWJs ZSghMCl9LGhpZGU6ZnVuY3Rpb24oKXs9CnRoaXMuc2V0VmlzaWJsZSghMSl9LHNlbGVjdDpmdW5j dGlvbihhKXt0aGlzLnNlbGVjdGVkPTNEYT0zRGE9M0Q9M0Q9M0R0PyF0aD0KaXMuc2VsZWN0ZWQ6 YTtpZih0aGlzLmNoZWNrYm94KXRoaXMuY2hlY2tib3guY2hlY2tlZD0zRGE7RCh0aGlzLGE/InNl bGVjdCI6PQoidW5zZWxlY3QiKX0sZHJhd1RyYWNrZXI6Uy5kcmF3VHJhY2tlckdyYXBofSk7cShS LHtBeGlzOmxhLENoYXJ0OllhLENvbG9yOnk9CmEsUG9pbnQ6RWEsVGljazpTYSxSZW5kZXJlcjpa YSxTZXJpZXM6TyxTVkdFbGVtZW50OlAsU1ZHUmVuZGVyZXI6dGEsYXJyYXlNaT0KbjpOYSxhcnJh eU1heDpCYSxjaGFydHM6VixkYXRlRm9ybWF0OmNiLGZvcm1hdDpJYSxwYXRoQW5pbTp1YixnZXRP cHRpb25zOmZ1PQpuY3Rpb24oKXtyZXR1cm4gRX0sCi1oYXNCaWRpQnVnOk5iLGlzVG91Y2hEZXZp Y2U6SmIsbnVtYmVyRm9ybWF0OkdhLHNlcmllc1R5cGVzOkYsc2V0T3B0aW9uczpmdT0KbmN0aW9u KGEpe0U9M0R3KCEwLEUsYSk7Q2IoKTtyZXR1cm4gRX0sYWRkRXZlbnQ6SyxyZW1vdmVFdmVudDpX LGNyZWF0ZUVsZW1lPQpudDpZLGRpc2NhcmRFbGVtZW50OlBhLGNzczpHLGVhY2g6cCxleHRlbmQ6 cSxtYXA6VWEsbWVyZ2U6dyxwaWNrOm0sc3BsYXQ6cWE9CixleHRlbmRDbGFzczprYSxwSW50Onos d3JhcDpNYSxzdmc6YWEsY2FudmFzOmZhLHZtbDohYWEmJiFmYSxwcm9kdWN0OiJIaWdoYz0KaGFy dHMiLHZlcnNpb246IjQuMC4xIn0pfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpk aWZmIC1yIGJmYzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3 MWRiNmIyZjUwODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3MvZ3JvdXAuanMKLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy92aWV3cy9ncm91cC5qcworKysgYi9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL3ZpZXdzL2dyb3VwLmpzCkBA IC0xMzQsOCArMTM0LDcgQEAKICAgICAgICAgdmFyIGlzX2xhYmVsICAgID0zRCBjb2x1bW5fZGVm aW5pdGlvbi5pc19sYWJlbDsKICAgICAgICAgdmFyIGlzX2F1dG8gICAgID0zRCBjb2x1bW5fZGVm aW5pdGlvbi5pc19hdXRvOwogICAgICAgICB2YXIgaXNfbnVtZXJpYyAgPTNEIGNvbHVtbl9kZWZp bml0aW9uLmlzX251bWVyaWM7Ci0gICAgICAgIHZhciBpc191bmlxdWUgICA9M0QgY29sdW1uX2Rl ZmluaXRpb24uaXNfdW5pcXVlOwotCisgICAgICAgPTIwCiAgICAgICAgIC8vIGNvbmZpZ3VyZSBj b2x1bW5zCiAgICAgICAgIHZhciBjb2x1bW5zID0zRCBbXTsKICAgICAgICA9MjAKQEAgLTE4Nywy NSArMTg2LDkgQEAKICAgICAgICAgfQogICAgICAgICBzZWxlY3QudmFsdWUodGhpcy5ncm91cC5n ZXQoaWQpKTsKICAgICAgICA9MjAKLSAgICAgICAgLyovIGxpbmsgZ3JvdXAgd2l0aCBzZWxlY3Qg ZmllbGQKLSAgICAgICAgdGhpcy5ncm91cC5vbignY2hhbmdlOicgKyBpZCwgZnVuY3Rpb24oKXsK LSAgICAgICAgICAgIHNlbGVjdC52YWx1ZShzZWxmLmdyb3VwLmdldChpZCkpOwotICAgICAgICB9 KTsqLwotICAgICAgID0yMAogICAgICAgICAvLyBsaW5rIHNlbGVjdCBmaWVsZCB3aXRoIGdyb3Vw CiAgICAgICAgIHNlbGVjdC5zZXRPbkNoYW5nZShmdW5jdGlvbih2YWx1ZSkgewotICAgICAgICAg ICAgLyovIHVwZGF0ZSBtb2RlbCB2YWx1ZQotICAgICAgICAgICAgaWYgKGlzX3VuaXF1ZSkgewot ICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBhbGwgZ3JvdXBzCi0gICAgICAgICAgICAgICAgc2Vs Zi5jaGFydC5ncm91cHMuZWFjaChmdW5jdGlvbihncm91cCkgewotICAgICAgICAgICAgICAgICAg ICBncm91cC5zZXQoaWQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg IH0gZWxzZSB7Ki8KLSAgICAgICAgICAgICAgICAvLyBvbmx5IGNoYW5nZSB0aGlzIGdyb3VwCi0g ICAgICAgICAgICAgICAgc2VsZi5ncm91cC5zZXQoaWQsIHZhbHVlKTsKLSAgICAgICAgICAgIC8v fQotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIHNldCBtb2RpZmllZCBmbGFnCisgICAg ICAgICAgICBzZWxmLmdyb3VwLnNldChpZCwgdmFsdWUpOwogICAgICAgICAgICAgc2VsZi5jaGFy dC5zZXQoJ21vZGlmaWVkJywgdHJ1ZSk7CiAgICAgICAgIH0pOwogICAgICAgID0yMAoKZGlmZiAt ciBiZmMxMWExMzc0MjdiYjFiMDQ3MWY5N2M1M2Q4YzRkMmVhMDU0MGEzIC1yIGMxMTM3NzFkYjZi MmY1MDgwMGYwNDVlPQo3Yjc0YThkNjUwYzA0NzRlOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9jaGFydHMvc3RhdGljL3ZpZXdzL3R5cGVzLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3MvdHlwZXMuanMKKysrIGIvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy92aWV3cy90eXBlcy5qcwpAQCAtMjks MjQgKzI5LDE0IEBACiAgICAgICAgIC8vIGNyZWF0ZSBuZXcgZWxlbWVudAogICAgICAgICB2YXIg JGVsID0zRCAkKCc8ZGl2IGNsYXNzPTNEImNoYXJ0cy1ncmlkIi8+Jyk7CiAgICAgICAgPTIwCi0g ICAgICAgIC8vIGNvbnN0cnVjdCBjaGFydCB0eXBlIHN1YnNldCBzZWxlY3Rpb24gYnV0dG9ucwot ICAgICAgICB0aGlzLmxpYnJhcnkgPTNEIG5ldyBVaS5SYWRpb0J1dHRvbih7Ci0gICAgICAgICAg ICBkYXRhICAgIDogWyB7IGxhYmVsOiAnRGVmYXVsdCcsIHZhbHVlOiAnZGVmYXVsdCcgfSwKLSAg ICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdDbGFzc2ljJywgdmFsdWU6ICdudmQzJyB9 LAotICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ1pvb21hYmxlJywgdmFsdWU6ICdo aWdoY2hhcnRzJyB9XSwKLSAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbih2YWx1ZSkgewot ICAgICAgICAgICAgICAgIHNlbGYuX2ZpbHRlcih2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAg ICAgIH0pOwotICAgICAgICAkZWwuYXBwZW5kKFV0aWxzLndyYXAodGhpcy5saWJyYXJ5LiRlbCkp OwotICAgICAgID0yMAogICAgICAgICAvLyBzZXQgZWxlbWVudAogICAgICAgICB0aGlzLnNldEVs ZW1lbnQoJGVsKTsKICAgICAgICA9MjAKICAgICAgICAgLy8gcmVuZGVyCiAgICAgICAgIHRoaXMu X3JlbmRlcigpOwogICAgICAgID0yMAotICAgICAgICB0aGlzLmxpYnJhcnkudmFsdWUoJ2RlZmF1 bHQnKTsKKyAgICAgICAgLy8gc2hvdyBvbmx5IGRlZmF1bHQgY2hhcnQgdHlwZXMKKyAgICAgICAg dGhpcy5fZmlsdGVyKCdkZWZhdWx0Jyk7CiAgICAgfSwKICAgID0yMAogICAgIC8vIHZhbHVlCgpk aWZmIC1yIGJmYzExYTEzNzQyN2JiMWIwNDcxZjk3YzUzZDhjNGQyZWEwNTQwYTMgLXIgYzExMzc3 MWRiNmIyZjUwODAwZjA0NWU9CjdiNzRhOGQ2NTBjMDQ3NGU4IGNvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3Mvdmlld3Bvcj0KdC5qcwotLS0gYS9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL3ZpZXdzL3ZpZXdwb3J0LmpzCisr KyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3Mvdmll d3BvcnQuanMKQEAgLTI1NCwxMCArMjU0LDkgQEAKICAgICAgICAgICAgICAgICB2YXIgY29sdW1u X3NldHRpbmdzID0zRCBzZWxmLmNoYXJ0X2RlZmluaXRpb24uY29sdW1uc1tjb2x1PQptbl9rZXld OwogICAgICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAgICAgLy8gYWRkIHRvIGNvbHVtbnMK LSAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl9rZXldID0zRCB7Ci0gICAgICAgICAgICAg ICAgICAgIGluZGV4ICAgICAgIDogZ3JvdXAuZ2V0KGNvbHVtbl9rZXkpLAotICAgICAgICAgICAg ICAgICAgICBpc19sYWJlbCAgICA6IGNvbHVtbl9zZXR0aW5ncy5pc19sYWJlbAotICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl9rZXldID0zRCBVdGlscy5t ZXJnZSAoeworICAgICAgICAgICAgICAgICAgICBpbmRleCA6IGdyb3VwLmdldChjb2x1bW5fa2V5 KQorICAgICAgICAgICAgICAgIH0sIGNvbHVtbl9zZXR0aW5ncyk7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgID0yMAogICAgICAgICAgICAgLy8gYWRkIGdyb3VwIGRhdGEKCmRpZmYgLXIgYmZj MTFhMTM3NDI3YmIxYjA0NzFmOTdjNTNkOGM0ZDJlYTA1NDBhMyAtciBjMTEzNzcxZGI2YjJmNTA4 MDBmMDQ1ZT0KN2I3NGE4ZDY1MGMwNDc0ZTggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv Y2hhcnRzL3RlbXBsYXRlcy9jaGFydHMubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9jaGFydHMvdGVtcGxhdGVzL2NoYXJ0cy5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy90ZW1wbGF0ZXMvY2hhcnRzLm1ha28KQEAgLTI2LDkgKzI2 LDggQEAKICAgICAgICAgJHtoLnN0eWxlc2hlZXRfbGluayggYXBwX3Jvb3QgKyAicGx1Z2lucy9u dmQzL252LmQzLmNzcyIgKX0KPTIwCiAgICAgICAgICMjIGluc3RhbGwgaGlnaGNoYXJ0cyBtb2R1 bGUKLSAgICAgICAgJHtoLmphdmFzY3JpcHRfbGluayggYXBwX3Jvb3QgKyAicGx1Z2lucy9oaWdo Y2hhcnRzL2hpZ2hjaGFydHMuanMiPQogKX0KLSAgICAgICAgJHtoLmphdmFzY3JpcHRfbGluaygg YXBwX3Jvb3QgKyAicGx1Z2lucy9oaWdoY2hhcnRzL2hpZ2hjaGFydHMtbW9yPQplLmpzIiApfQot ICAgICAgICAke2guamF2YXNjcmlwdF9saW5rKCBhcHBfcm9vdCArICJwbHVnaW5zL2hpZ2hjaGFy dHMvaGVhdG1hcC5qcyIgKX0KKyAgICAgICAgJHtoLmphdmFzY3JpcHRfbGluayggImh0dHA6Ly9j b2RlLmhpZ2hjaGFydHMuY29tL2hpZ2hjaGFydHMuanMiICl9CisgICAgICAgICR7aC5qYXZhc2Ny aXB0X2xpbmsoICJodHRwOi8vY29kZS5oaWdoY2hhcnRzLmNvbS9tb2R1bGVzL2hlYXRtYXAuaj0K cyIgKX0KICAgICAgICA9MjAKICAgICAgICAgIyMgaW5zdGFsbCBib3hwbG90IG1vZHVsZQogICAg ICAgICAjIyR7aC5qYXZhc2NyaXB0X2xpbmsoIGFwcF9yb290ICsgInBsdWdpbnMvYm94LmpzIiAp fQoKUmVwb3NpdG9yeSBVUkw6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvCgotLQoKVGhpcyBpcyBhIGNvbW1pdCBub3RpZmljYXRpb24gZnJvbSBiaXRidWNrZXQu b3JnLiBZb3UgYXJlIHJlY2VpdmluZwp0aGlzIGJlY2F1c2UgeW91IGhhdmUgdGhlIHNlcnZpY2Ug ZW5hYmxlZCwgYWRkcmVzc2luZyB0aGUgcmVjaXBpZW50IG9mCnRoaXMgZW1haWwuCg
participants (1)
-
commits-noreply@bitbucket.org