2011’den Beri GüvenleOn beş yıla yaklaşan üretim ve fitoterapi birikimi
%100 Analiz Edilmiş HammaddeHer parti aflatoksin, ağır metal ve pestisit taramasından geçer
Sinameki ve İlave Şeker İçermezBağırsak dostu, katkısız ve şekersiz formül
PGxpbmsgcmVsPSJwcmVsb2FkIiBhcz0ic2NyaXB0IiBocmVmPSJ7eyB0aGVtZUFzc2V0KCdqYXZhc2NyaXB0L3RoZW1lLmpzJykgfX0iPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7eyB0aGVtZUFzc2V0KCdqYXZhc2NyaXB0L3RoZW1lLmpzJykgfX0iPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7eyB0aGVtZUFzc2V0KCdqYXZhc2NyaXB0L25hdmlnYXRpb24tbWVudS5qcycpIH19Ij48L3NjcmlwdD4KeyUgaWYgdGhlbWUuc2V0dGluZ3MudXNlX2xhenlfbG9hZCAlfQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgdGhlbWVBc3NldCgnamF2YXNjcmlwdC9sYXp5bG9hZC5taW4uanMnKSB9fSI+PC9zY3JpcHQ+CnslIGVuZGlmICV9Cgp7IyBLYWxpdGUgdmUgR3V2ZW4gc2F5ZmFzaSAtIGtheWRpcm1hbGkgc2FobmUuIFNhZGVjZSAua2c1IHZhcnNhIGNhbGlzaXIuICN9CjxzY3JpcHQ+CiAgICAoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBrb2sgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIua2c1Iik7CiAgICAgICAgaWYgKCFrb2spIHJldHVybjsKCiAgICAgICAgLy8gdGFtIGdlbmlzbGlrIGhlc2FiaSBpY2luIGtheWRpcm1hIGN1YnVndSBnZW5pc2xpZ2kKICAgICAgICBmdW5jdGlvbiBjdWJ1a09sYygpIHsKICAgICAgICAgICAgdmFyIGcgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWtnNS1jdWJ1ayIsIGcgKyAicHgiKTsKICAgICAgICB9CiAgICAgICAgY3VidWtPbGMoKTsKICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBjdWJ1a09sYyk7CgogICAgICAgIHZhciBzYWhuZSA9IGtvay5xdWVyeVNlbGVjdG9yKCIua2c1LXNhaG5lIik7CiAgICAgICAgdmFyIHlhcGlza2FuID0gc2FobmUgJiYgc2FobmUucXVlcnlTZWxlY3RvcigiLmtnNS15YXBpc2thbiIpOwogICAgICAgIGlmIChzYWhuZSAmJiB5YXBpc2thbikgewogICAgICAgICAgICB2YXIgYmFzbGlrbGFyID0gc2FobmUucXVlcnlTZWxlY3RvckFsbCgiLmtnNS1hc2FtYS1iYXNsaWsgaDIiKTsKICAgICAgICAgICAgdmFyIG1ldGlubGVyID0gc2FobmUucXVlcnlTZWxlY3RvckFsbCgiLmtnNS1hc2FtYS1tZXRpbiA+IGRpdiIpOwogICAgICAgICAgICB2YXIgaWtvbmxhciA9IHNhaG5lLnF1ZXJ5U2VsZWN0b3JBbGwoIi5rZzUtaGFsa2Etb3J0YSAua2c1LWlrb24iKTsKICAgICAgICAgICAgdmFyIGFkbGFyID0gc2FobmUucXVlcnlTZWxlY3RvckFsbCgiLmtnNS1zZXJpdCAua2c1LWFkbGFyIGIiKTsKICAgICAgICAgICAgdmFyIGFzYW1hTm8gPSBzYWhuZS5xdWVyeVNlbGVjdG9yKCIua2c1LWFzYW1hLW5vIik7CiAgICAgICAgICAgIHZhciB5dXpkZSA9IHNhaG5lLnF1ZXJ5U2VsZWN0b3IoIi5rZzUteXV6ZGUiKTsKICAgICAgICAgICAgdmFyIGFkZXQgPSBiYXNsaWtsYXIubGVuZ3RoOwogICAgICAgICAgICB2YXIgc29uSW5kZWtzID0gLTE7CgogICAgICAgICAgICB2YXIgY2l6ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGtheWRpcmlsYWJpbGlyID0gc2FobmUub2Zmc2V0SGVpZ2h0IC0geWFwaXNrYW4ub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICAgICAgdmFyIHAgPSBrYXlkaXJpbGFiaWxpciA+IDAgPyAoLXNhaG5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkgLyBrYXlkaXJpbGFiaWxpciA6IDA7CiAgICAgICAgICAgICAgICBwID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgcCkpOwogICAgICAgICAgICAgICAgeWFwaXNrYW4uc3R5bGUuc2V0UHJvcGVydHkoIi0tcCIsIHApOwoKICAgICAgICAgICAgICAgIHZhciBpbmRla3MgPSBNYXRoLm1pbihhZGV0IC0gMSwgTWF0aC5mbG9vcihwICogYWRldCkpOwogICAgICAgICAgICAgICAgaWYgKGluZGVrcyAhPT0gc29uSW5kZWtzKSB7CiAgICAgICAgICAgICAgICAgICAgc29uSW5kZWtzID0gaW5kZWtzOwogICAgICAgICAgICAgICAgICAgIFtiYXNsaWtsYXIsIG1ldGlubGVyLCBpa29ubGFyLCBhZGxhcl0uZm9yRWFjaChmdW5jdGlvbiAoZ3J1cCkgewogICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGdydXAsIGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1ZHIGVsZW1hbmxhcmluZGEgY2xhc3NOYW1lIGJpciBzdHJpbmcgZGVnaWwgKFNWR0FuaW1hdGVkU3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1IHl1emRlbiBjbGFzc0xpc3Qga3VsbGFuaWxpeW9yLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnRvZ2dsZSgiYWt0aWYiLCBOdW1iZXIoZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKSkgPT09IGluZGVrcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGlmIChhc2FtYU5vKSBhc2FtYU5vLnRleHRDb250ZW50ID0gIkHFn2FtYSAwIiArIChpbmRla3MgKyAxKSArICIgLyAwIiArIGFkZXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoeXV6ZGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IFN0cmluZyhNYXRoLnJvdW5kKHAgKiAxMDApKTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAocy5sZW5ndGggPCAzKSB7IHMgPSAiMCIgKyBzOyB9CiAgICAgICAgICAgICAgICAgICAgeXV6ZGUudGV4dENvbnRlbnQgPSAiWyAiICsgcyArICIgJSBdIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHZhciBiZWtsaXlvciA9IGZhbHNlOwogICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoYmVrbGl5b3IpIHJldHVybjsKICAgICAgICAgICAgICAgIGJla2xpeW9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IGNpeigpOyBiZWtsaXlvciA9IGZhbHNlOyB9KTsKICAgICAgICAgICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwogICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBjaXopOwogICAgICAgICAgICBjaXooKTsKICAgICAgICB9CgogICAgICAgIC8vICJpY2luZGUgbmUgeW9rIiBsaXN0ZXNpIHNpcmF5bGEgY2l6aWxzaW4KICAgICAgICB2YXIgbGlzdGUgPSBrb2sucXVlcnlTZWxlY3RvckFsbCgiLmtnNS15b2stbGlzdGUgbGkiKTsKICAgICAgICBpZiAod2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKSB7CiAgICAgICAgICAgIHZhciBnID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChnaXJpc2xlcikgewogICAgICAgICAgICAgICAgZ2lyaXNsZXIuZm9yRWFjaChmdW5jdGlvbiAoZ2lyaXMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWdpcmlzLmlzSW50ZXJzZWN0aW5nKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gZ2lyaXMudGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIHZhciBzaXJhID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChsaXN0ZSwgZWwpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBlbC5jbGFzc0xpc3QuYWRkKCJnb3J1bmR1Iik7IH0sIHNpcmEgKiAxMTApOwogICAgICAgICAgICAgICAgICAgIGcudW5vYnNlcnZlKGVsKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LCB7IHRocmVzaG9sZDogMC41IH0pOwogICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGxpc3RlLCBmdW5jdGlvbiAoZWwpIHsgZy5vYnNlcnZlKGVsKTsgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChsaXN0ZSwgZnVuY3Rpb24gKGVsKSB7IGVsLmNsYXNzTGlzdC5hZGQoImdvcnVuZHUiKTsgfSk7CiAgICAgICAgfQogICAgfSkoKTsKPC9zY3JpcHQ+Cgp7IyBHb3JzZWxzaXogS2FsaXRlIHZlIEd1dmVuIHNheWZhc2kgLSBib2x1bWxlciBrYXlkaXJkaWtjYSBnaXJzaW4gI30KPHNjcmlwdD4KICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGtvayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rZzIiKTsKICAgICAgICBpZiAoIWtvaykgcmV0dXJuOwogICAgICAgIHZhciBoZWRlZmxlciA9IGtvay5xdWVyeVNlbGVjdG9yQWxsKCIua2cyLWdpciIpOwogICAgICAgIGlmICghd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKSB7CiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoaGVkZWZsZXIsIGZ1bmN0aW9uIChlKSB7IGUuY2xhc3NMaXN0LmFkZCgiZ29ydW5kdSIpOyB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgZyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbiAoZ2lyaXNsZXIpIHsKICAgICAgICAgICAgZ2lyaXNsZXIuZm9yRWFjaChmdW5jdGlvbiAoZ2lyaXMpIHsKICAgICAgICAgICAgICAgIGlmICghZ2lyaXMuaXNJbnRlcnNlY3RpbmcpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciBlbCA9IGdpcmlzLnRhcmdldDsKICAgICAgICAgICAgICAgIHZhciBrYXJkZXNsZXIgPSBlbC5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSA+IC5rZzItZ2lyIik7CiAgICAgICAgICAgICAgICB2YXIgc2lyYSA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoa2FyZGVzbGVyLCBlbCk7CiAgICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAoc2lyYSA+IDAgPyBNYXRoLm1pbihzaXJhLCA1KSAqIDAuMDkgOiAwKSArICJzIjsKICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoImdvcnVuZHUiKTsKICAgICAgICAgICAgICAgIGcudW5vYnNlcnZlKGVsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUsIHJvb3RNYXJnaW46ICIwcHggMHB4IC02MHB4IDBweCIgfSk7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChoZWRlZmxlciwgZnVuY3Rpb24gKGUpIHsgZy5vYnNlcnZlKGUpOyB9KTsKICAgIH0pKCk7Cjwvc2NyaXB0PgoKeyMgQ2F5IEJ1bHVjdSB0ZXN0aS4gU2FkZWNlIC5jYiB2YXJzYSBjYWxpc2lyLiAjfQo8c2NyaXB0PgogICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIga29rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNiIik7CiAgICAgICAgaWYgKCFrb2spIHJldHVybjsKCiAgICAgICAgLyogdGFtIGdlbmlzbGlrIGhlc2FiaSBpY2luIGtheWRpcm1hIGN1YnVndSBnZW5pc2xpZ2kgKi8KICAgICAgICBmdW5jdGlvbiBjYkN1YnVrT2xjKCkgewogICAgICAgICAgICB2YXIgZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0ta2c1LWN1YnVrIiwgZyArICJweCIpOwogICAgICAgIH0KICAgICAgICBjYkN1YnVrT2xjKCk7CiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgY2JDdWJ1a09sYyk7CgogICAgICAgIHZhciBVUlVOTEVSID0gewogICAgICAgICAgICAiRnVsbEZhc3QiOiB7IGlkOiAyMCwgYWQ6ICJUaGVyYWxpbmUgRnVsbCAmYW1wOyBGYXN0IiwgZGVzYzogIkRpeWV0IHPDvHJlw6dsZXJpbml6ZGUgbGV6emV0bGkgYmlyIHlvbCBhcmthZGHFn8SxLiBNYXRlIHZlIHllxZ9pbCDDp2F5xLFuIGRvxJ9hbCBzaW5lcmppc2l5bGUgYmVzbGVubWUgcnV0aW5pbml6aSBrb25mb3JsdSBiacOnaW1kZSBkZW5nZWxlbWVuaXplIHlhcmTEsW1jxLEgb2x1ci4iLCB1cmw6ICIvdXJ1bi90aGVyYWxpbmUtZnVsbC1mYXN0IiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDIwL2YtZi0xMjAweDEyMDBweF9taW4uanBnIiB9LAogICAgICAgICAgICAiRGlhQmFsYW5jZSI6IHsgaWQ6IDI0LCBhZDogIlRoZXJhbGluZSBEaWEgJmFtcDsgQmFsYW5jZSIsIGRlc2M6ICJHw7xubMO8ayBiZXNsZW5tZSBkZW5nZXNpbmkga29ydW1hayBpc3RleWVubGVyIGnDp2luLiBLYXJib25oaWRyYXQgb2Rha2zEsSDDtsSfw7xubGVyaW4gYXJkxLFuZGFuIHlhxZ9hbSBrYWxpdGVuaXppIHZlIHppbmRlbGnEn2luaXppIGRlc3Rla2xlci4iLCB1cmw6ICIvdXJ1bi90aGVyYWxpbmUtZGlhLWJhbGFuY2UiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wMjQvZC1iLTEyMDB4MTIwMHB4X21pbi5qcGciIH0sCiAgICAgICAgICAgICJFYXN5RGlnZXN0IjogeyBpZDogMjMsIGFkOiAiVGhlcmFsaW5lIEVhc3kgJmFtcDsgRGlnZXN0IiwgZGVzYzogIlNpbmRpcmltIHNpc3RlbWluaW4gZml6eW9sb2ppayBkZW5nZXNpbmkgZGVzdGVrbGV5ZW4gYml0a2kgc2XDp2tpc2kuIEfDvG4gacOnaW5kZSBrZW5kaW5pemkgaGFmaWYgdmUga29uZm9ybHUgaGlzc2V0bWVuaXplIGthdGvEsSBzYcSfbGFyLiIsIHVybDogIi91cnVuL3RoZXJhbGluZS1lYXN5LWRpZ2VzdCIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzAyMy9lLWQtMTIwMHgxMjAwcHhfbWluLmpwZyIgfSwKICAgICAgICAgICAgIkdhc0Jsb2F0aW5nIjogeyBpZDogMTYsIGFkOiAiVGhlcmFsaW5lIEdhcyAmYW1wOyBCbG9hdGluZyIsIGRlc2M6ICLDlnplbCBiZXNsZW5tZSBkw7ZuZW1sZXJpbmRlIGhhc3NhcyBzxLF2xLEgZGVzdGXEn2kuIFJlemVuZSB2ZSB0xLFiYmkgbmFuZW5pbiBiaWxpbmVuIGZlcmFobGF0xLFjxLEgZXRraXNpeWxlIHbDvGN1ZHVudXp1IHlvcm1hZGFuIHJhaGF0bGF0xLFyLiIsIHVybDogIi91cnVuL3RoZXJhbGluZS1nYXMtYmxvYXRpbmctZ2F6LXByb2JsZW1pLW9sYW5sYXItaWNpbi1nYXotZ2lkZXJpY2kiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wMTYvZy1iLTEyMDB4MTIwMHB4X21pbi5qcGciIH0sCiAgICAgICAgICAgICJFZGVtYVN3ZWxsIjogeyBpZDogMjUsIGFkOiAiVGhlcmFsaW5lIEVkZW1hICZhbXA7IFN3ZWxsIiwgZGVzYzogIkFrdGlmIHlhxZ9hbSB2ZSB5b8SfdW4gZ8O8bmxlcmluIGFyZMSxbmRhbiB0b3Bhcmxhbm1hIGRlc3RlxJ9pLiBTcG9yIHNvbnJhc8SxIHPEsXbEsSB2ZSBtaW5lcmFsIGRlbmdlbml6aSBrb3J1bWF5YSB5YXJkxLFtY8SxIG9sdXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLWVkZW1hLXN3ZWxsIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDI1L2Utcy0xMjAweDEyMDBweF9taW4uanBnIiB9LAogICAgICAgICAgICAiQ2FsbVJlbGF4IjogeyBpZDogMjIsIGFkOiAiVGhlcmFsaW5lIENhbG0gJmFtcDsgUmVsYXgiLCBkZXNjOiAiWW/En3VuIHRlbXBvZGEgZGluZ2luIGJpciBtb2xhLiBEb8SfYWwgYml0a2kgYXJvbWFsYXLEsXlsYSB6aWhuaW5pemkgc2FraW5sZcWfdGlybWV5ZSB2ZSBnw7xuw7xuIHnDvGvDvG7DvCBoYWZpZmxldG1leWUga2F0a8SxIHNhxJ9sYXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLWNhbG0tcmVsYXgiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wMjIvYy1yLTEyMDB4MTIwMHB4X21pbi5qcGciIH0sCiAgICAgICAgICAgICJTbGVlcERyZWFtIjogeyBpZDogMTgsIGFkOiAiVGhlcmFsaW5lIFNsZWVwICZhbXA7IERyZWFtIiwgZGVzYzogIkdlY2UgcnV0aW5pbml6aSB0YcOnbGFuZMSxcmFuIGh1enVybHUgYmlyIGthcGFuxLHFny4gS2FsaXRlbGkgYmlyIGRpbmxlbm1lIGTDtm5lbWkgZ2XDp2lybWVuaXogdmUgeWVuaSBnw7xuZSB6aW5kZSBiYcWfbGFtYW7EsXogacOnaW4gaWRlYWxkaXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDE4L3MtZC0xMjAweDEyMDBweF9taW4uanBnIiB9LAogICAgICAgICAgICAiUmljaExhY3RhIjogeyBpZDogMjYsIGFkOiAiVGhlcmFsaW5lIFJpY2ggJmFtcDsgTGFjdGEiLCBkZXNjOiAiQW5uZWxlciBpw6dpbiBlbiBoYXNzYXMgZMO2bmVtZGUgc8SxdsSxIHZlIGVuZXJqaSBkZXN0ZcSfaS4gQXJ0YW4gc8SxdsSxIGlodGl5YWPEsW7EsSBkb8SfYW7EsW4gZW4gZ8O8dmVubGkgYml0a2lsZXJpeWxlIGthcsWfxLFsYXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLXJpY2gtbGFjdGEiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wMjYvci1sLTEyMDB4MTIwMHB4X21pbi5qcGciIH0sCiAgICAgICAgICAgICJGb3JtRGV0b3giOiB7IGlkOiAxNSwgYWQ6ICJUaGVyYWxpbmUgRm9ybSAmYW1wOyBEZXRveCIsIGRlc2M6ICJWw7xjdWR1bnV6dSBkw7ZuZW1zZWwgb2xhcmFrIGhhZmlmbGV0bWVrIHZlIHRhemVsZW1layBpw6dpbiBhcsSxbmTEsXLEsWPEsSBoYXJtYW4uIEfDvG5lIGVuZXJqaWsgdmUgemluZGUgYmlyIGJhxZ9sYW5nxLHDpyB5YXBtYW7EsXrEsSBkZXN0ZWtsZXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLWZvcm0tZGV0b3gtYml0a2ktY2F5aS1zdXplbi1wb3NldC0yMC1hZGV0IiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDE1L2YtZC0xMjAweDEyMDBweF9taW4uanBnIiB9LAogICAgICAgICAgICAiV2ludGVyQ29tZm9ydCI6IHsgaWQ6IDE5LCBhZDogIlRoZXJhbGluZSBXaW50ZXIgJmFtcDsgQ29tZm9ydCIsIGRlc2M6ICJNZXZzaW0gZ2XDp2nFn2xlcmluZGUgacOnIMSxc8SxdGFuIGRlc3Rlay4gRG/En2FsIGFudGlva3NpZGFubGFyIHZlIG1lbnRvbCBldGtpc2l5bGUgbmVmZXNpbml6aSBmZXJhaGxhdMSxciwgdsO8Y3V0IGRpcmVuw6dpbml6aSBkZXN0ZWtsZXIuIiwgdXJsOiAiL3VydW4vdGhlcmFsaW5lLXdpbnRlci1jb21mb3J0IiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDE5L3ctYy0xMjAweDEyMDBweF9taW4uanBnIiB9LAogICAgICAgICAgICAiSGVwYUNhcmUiOiB7IGlkOiAxNywgYWQ6ICJUaGVyYWxpbmUgSGVwYSAmYW1wOyBDYXJlIiwgZGVzYzogIkdlbmVsIHbDvGN1dCB6aW5kZWxpxJ9pbml6aSB2ZSBpw6cgZGVuZ2VuaXppIMOnZXZyZXNlbCBmYWt0w7ZybGVyZSBrYXLFn8SxIGtvcnVtYXnEsSBoZWRlZmxleWVuIMO2emVsIGJpdGtpIGthcsSxxZ/EsW3EsS4iLCB1cmw6ICIvdXJ1bi90aGVyYWxpbmUtaGVwYS1jYXJlIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDE3L2gtYy0xMjAweDEyMDBweF9taW4uanBnIiB9CiAgICAgICAgfTsKCgogICAgICAgIC8qIElraWxpIHNldGxlcjogaWtpIHRla2xpIGNheWluIGJpciBhcmFkYSBzYXRpbGRpZ2kgdXJ1bmxlci4KICAgICAgICAgICBBbmFodGFyICJTb3J1MXxTb3J1MiIgc2lyYXNpeWxhLiBFc2xlc21lIHlva3NhIHRla2xpIG9uZXJpeWUgZHVzdWx1ci4gKi8KICAgICAgICB2YXIgSUtJTElfU0VUTEVSID0gewogICAgICAgICAgICAiRGlhQmFsYW5jZXxSaWNoTGFjdGEiOiB7IGFkOiAiRGlhICZhbXA7IEJhbGFuY2UgKyBSaWNoICZhbXA7IExhY3RhIGlraWxpIHNldGkiLCBpZDogMzQ1LCB1cmw6ICIvdXJ1bi9kaWEtYmFsYW5jZS1yaWNoLWxhY3RhIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMzQ1L3doYXRzYXBwLWltYWdlLTIwMjYtMDgtMTAtYXQtMjItMDYtNDQtMV9taW4uanBlZyIgfSwKICAgICAgICAgICAgIkVhc3lEaWdlc3R8RWRlbWFTd2VsbCI6IHsgYWQ6ICJFYXN5ICZhbXA7IERpZ2VzdCArIEVkZW1hICZhbXA7IFN3ZWxsIGlraWxpIHNldGkiLCBpZDogMzQ2LCB1cmw6ICIvdXJ1bi9lYXN5LWRpZ2VzdC1lZGVtYS1zd2VsbCIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzM0Ni93aGF0c2FwcC1pbWFnZS0yMDI2LTA4LTEwLWF0LTIyLTA2LTQ0LTJfbWluLmpwZWciIH0sCiAgICAgICAgICAgICJFYXN5RGlnZXN0fFJpY2hMYWN0YSI6IHsgYWQ6ICJFYXN5ICZhbXA7IERpZ2VzdCArIFJpY2ggJmFtcDsgTGFjdGEgaWtpbGkgc2V0aSIsIGlkOiAzNDcsIHVybDogIi91cnVuL2Vhc3ktZGlnZXN0LXJpY2gtbGFjdGEiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8zNDcvd2hhdHNhcHAtaW1hZ2UtMjAyNi0wOC0xMC1hdC0yMi0wNi00NC0zX21pbi5qcGVnIiB9LAogICAgICAgICAgICAiRWFzeURpZ2VzdHxTbGVlcERyZWFtIjogeyBhZDogIkVhc3kgJmFtcDsgRGlnZXN0ICsgU2xlZXAgJmFtcDsgRHJlYW0gaWtpbGkgc2V0aSIsIGlkOiAzNDgsIHVybDogIi91cnVuL2Vhc3ktZGlnZXN0LXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMzQ4L3doYXRzYXBwLWltYWdlLTIwMjYtMDgtMTAtYXQtMjItMDYtNDQtNF9taW4uanBlZyIgfSwKICAgICAgICAgICAgIkZ1bGxGYXN0fFJpY2hMYWN0YSI6IHsgYWQ6ICJGdWxsICZhbXA7IEZhc3QgKyBSaWNoICZhbXA7IExhY3RhIGlraWxpIHNldGkiLCBpZDogMzQ5LCB1cmw6ICIvdXJ1bi9mdWxsLWZhc3QtcmljaC1sYWN0YSIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzM0OS93aGF0c2FwcC1pbWFnZS0yMDI2LTA4LTEwLWF0LTIyLTA2LTQ0LTVfbWluLmpwZWciIH0sCiAgICAgICAgICAgICJGdWxsRmFzdHxTbGVlcERyZWFtIjogeyBhZDogIkZ1bGwgJmFtcDsgRmFzdCArIFNsZWVwICZhbXA7IERyZWFtIGlraWxpIHNldGkiLCBpZDogMzUwLCB1cmw6ICIvdXJ1bi9mdWxsLWZhc3Qtc2xlZXAtZHJlYW0iLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8zNTAvd2hhdHNhcHAtaW1hZ2UtMjAyNi0wOC0xMC1hdC0yMi0wNi00NC02X21pbi5qcGVnIiB9LAogICAgICAgICAgICAiR2FzQmxvYXRpbmd8Q2FsbVJlbGF4IjogeyBhZDogIkdhcyAmYW1wOyBCbG9hdGluZyArIENhbG0gJmFtcDsgUmVsYXggaWtpbGkgc2V0aSIsIGlkOiAzNTEsIHVybDogIi91cnVuL2dhcy1ibG9hdGluZy1jYWxtLXJlbGF4IiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMzUxL3doYXRzYXBwLWltYWdlLTIwMjYtMDgtMTAtYXQtMjItMDYtNDVfbWluLmpwZWciIH0sCiAgICAgICAgICAgICJHYXNCbG9hdGluZ3xFZGVtYVN3ZWxsIjogeyBhZDogIkdhcyAmYW1wOyBCbG9hdGluZyArIEVkZW1hICZhbXA7IFN3ZWxsIGlraWxpIHNldGkiLCBpZDogMzUyLCB1cmw6ICIvdXJ1bi9nYXMtYmxvYXRpbmctZWRlbWEtc3dlbGwiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8zNTIvd2hhdHNhcHAtaW1hZ2UtMjAyNi0wOC0xMC1hdC0yMi0wNi00NS0xX21pbi5qcGVnIiB9LAogICAgICAgICAgICAiR2FzQmxvYXRpbmd8UmljaExhY3RhIjogeyBhZDogIkdhcyAmYW1wOyBCbG9hdGluZyArIFJpY2ggJmFtcDsgTGFjdGEgaWtpbGkgc2V0aSIsIGlkOiAzNTMsIHVybDogIi91cnVuL2dhcy1ibG9hdGluZy1yaWNoLWxhY3RhIiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMzUzL3doYXRzYXBwLWltYWdlLTIwMjYtMDgtMTAtYXQtMjItMDYtNDUtMl9taW4uanBlZyIgfSwKICAgICAgICAgICAgIkdhc0Jsb2F0aW5nfFNsZWVwRHJlYW0iOiB7IGFkOiAiR2FzICZhbXA7IEJsb2F0aW5nICsgU2xlZXAgJmFtcDsgRHJlYW0gaWtpbGkgc2V0aSIsIGlkOiAzNTQsIHVybDogIi91cnVuL2dhcy1ibG9hdGluZy1zbGVlcC1kcmVhbSIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzM1NC93aGF0c2FwcC1pbWFnZS0yMDI2LTA4LTEwLWF0LTIyLTA2LTQ0X21pbi5qcGVnIiB9LAogICAgICAgICAgICAiRnVsbEZhc3R8RWRlbWFTd2VsbCI6ICAgeyBhZDogIkVkZW1hICZhbXA7IFN3ZWxsICsgRnVsbCAmYW1wOyBGYXN0IGlraWxpIHNldGkiLCBpZDogNjYsIHVybDogIi91cnVuL2VkZW1hLXN3ZWxsLWZ1bGwtZmFzdCIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA2Ni9lLXMtZi1mLTEyMDB4MTIwMHB4LmpwZyIgfSwKICAgICAgICAgICAgIkZ1bGxGYXN0fENhbG1SZWxheCI6ICAgIHsgYWQ6ICJDYWxtICZhbXA7IFJlbGF4ICsgRnVsbCAmYW1wOyBGYXN0IGlraWxpIHNldGkiLCBpZDogNjIsIHVybDogIi91cnVuL2NhbG0tcmVsYXgtZnVsbC1mYXN0IiwgZ29yc2VsOiAiL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDYyL2Mtci1mLWYtMTIwMHgxMjAwcHguanBnIiB9LAogICAgICAgICAgICAiRGlhQmFsYW5jZXxFZGVtYVN3ZWxsIjogeyBhZDogIkRpYSAmYW1wOyBCYWxhbmNlICsgRWRlbWEgJmFtcDsgU3dlbGwgaWtpbGkgc2V0aSIsIGlkOiAzNywgdXJsOiAiL3VydW4vZGlhLWJhbGFuY2UtdmUtZWRlbWEtc3dlbGwiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wMzcvZC1iLWUtcy0xMjAweDEyMDBweC5qcGciIH0sCiAgICAgICAgICAgICJEaWFCYWxhbmNlfENhbG1SZWxheCI6ICB7IGFkOiAiRGlhICZhbXA7IEJhbGFuY2UgKyBDYWxtICZhbXA7IFJlbGF4IGlraWxpIHNldGkiLCBpZDogNDcsIHVybDogIi91cnVuL2RpYS1iYWxhbmNlLXZlLWNhbG0tcmVsYXgiLCBnb3JzZWw6ICIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNDcvZC1iLWMtci0xMjAweDEyMDBweC5qcGciIH0sCiAgICAgICAgICAgICJEaWFCYWxhbmNlfFNsZWVwRHJlYW0iOiB7IGFkOiAiRGlhICZhbXA7IEJhbGFuY2UgKyBTbGVlcCAmYW1wOyBEcmVhbSBpa2lsaSBzZXRpIiwgaWQ6IDM5LCB1cmw6ICIvdXJ1bi9kaWEtYmFsYW5jZS12ZS1zbGVlcC1kcmVhbSIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzAzOS9kLWItcy1kLTEyMDB4MTIwMHB4LmpwZyIgfSwKICAgICAgICAgICAgIkVhc3lEaWdlc3R8Q2FsbVJlbGF4IjogIHsgYWQ6ICJDYWxtICZhbXA7IFJlbGF4ICsgRWFzeSAmYW1wOyBEaWdlc3QgaWtpbGkgc2V0aSIsIGlkOiA0MCwgdXJsOiAiL3VydW4vY2FsbS1yZWxheC12ZS1lYXN5LWRpZ2VzdCIsIGdvcnNlbDogIi9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA0MC9jLXItZS1kLTEyMDB4MTIwMHB4LmpwZyIgfQogICAgICAgIH07CgogICAgICAgICAgICAvKiBVY3VuIGRlIGNldmFiaW5pIGt1bGxhbmFuIHVjbHUgc2V0bGVyIHZlIGthcHNheWljaSBkb3J0bHUgc2V0bGVyICovCiAgICAgICAgICAgIHZhciBLT0QyVE9LID0geyBGdWxsRmFzdDoiZmFzdHxmdWxsIiwgRGlhQmFsYW5jZToiYmFsYW5jZXxkaWEiLCBFYXN5RGlnZXN0OiJkaWdlc3R8ZWFzeSIsIEdhc0Jsb2F0aW5nOiJibG9hdGluZ3xnYXMiLCBFZGVtYVN3ZWxsOiJlZGVtYXxzd2VsbCIsIENhbG1SZWxheDoiY2FsbXxyZWxheCIsIFNsZWVwRHJlYW06ImRyZWFtfHNsZWVwIiwgUmljaExhY3RhOiJsYWN0YXxyaWNoIiwgRm9ybURldG94OiJkZXRveHxmb3JtIiwgRGFpbHlEZWZlbmNlOiJkYWlseXxkZWZlbmNlIiwgV2ludGVyQ29tZm9ydDoiY29tZm9ydHx3aW50ZXIiLCBIZXBhQ2FyZToiY2FyZXxoZXBhIiB9OwogICAgICAgICAgICBmdW5jdGlvbiBjYlRva2VubGVyKGxpc3RlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBwID0gKEtPRDJUT0tbbGlzdGVbaV1dIHx8ICIiKS5zcGxpdCgifCIpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcC5sZW5ndGg7IGsrKykgeyBpZiAocFtrXSkgdC5wdXNoKHBba10pOyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5zb3J0KCkuam9pbigifCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBVQ0xVX1NFVExFUiA9IHsKICAgICAgICAgICAgICAgICJjYWxtfGRyZWFtfGVkZW1hfHJlbGF4fHNsZWVwfHN3ZWxsIjogeyBhZDogIsOcw6dsw7wgQmVkZW5zZWwgWWVuaWxlbm1lICZhbXA7IEdlY2UgRGluZ2lubGlrIFNldGkiLCBpZDogMjksIHVybDogIi91cnVuLzMtbHUtdGVtaXpsaWstemFtYW5pIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzAyOS9lLXMtYy1yLXMtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5NjkiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxjYWxtfGRpYXxlZGVtYXxyZWxheHxzd2VsbCI6IHsgYWQ6ICLDnMOnbMO8IEJlZGVuc2VsIEhhZmlmbGlrICZhbXA7IMSww6dzZWwgRGluZ2lubGlrIFNldGkiLCBpZDogNzIsIHVybDogIi91cnVuL2VkZW1hLXN3ZWxsLWRpYS1iYWxhbmNlLWNhbG0tcmVsYXgiLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDcyL2Utcy1kLWItYy1yLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI1MDAwNSIgfSwKICAgICAgICAgICAgICAgICJjYWxtfGVkZW1hfGZhc3R8ZnVsbHxyZWxheHxzd2VsbCI6IHsgYWQ6ICLDnMOnbMO8IEFrdGlmIFlhxZ9hbSBQZXJmb3JtYW5zICZhbXA7IMSwxZ90YWggRGVuZ2VzaSBTZXRpIiwgaWQ6IDczLCB1cmw6ICIvdXJ1bi9lZGVtYS1zd2VsbC1mdWxsLWZhc3QtY2FsbS1yZWxheCIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNzMvZS1zLWYtZi1jLXItMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjUwMDA2IiB9LAogICAgICAgICAgICAgICAgImNhbG18ZGlnZXN0fGVhc3l8ZWRlbWF8cmVsYXh8c3dlbGwiOiB7IGFkOiAiw5zDp2zDvCBGaXppa3NlbCBIYWZpZmxpayAmYW1wOyBTaW5kaXJpbSBTaXN0ZW1pIEtvbmZvciBTZXRpIiwgaWQ6IDQ5LCB1cmw6ICIvdXJ1bi9lZGVtYS1zd2VsbC1jYWxtLXJlbGF4LWVhc3ktZGlnZXN0IiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA0OS9lLXMtYy1yLWUtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5ODUiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxjYXJlfGRldG94fGRpYXxmb3JtfGhlcGEiOiB7IGFkOiAiw5zDp2zDvCBZYcWfYW0gUml0bWksIETEscWfICZhbXA7IMSww6cgRGVuZ2VsaSBZYcWfYW0gU2V0aSIsIGlkOiAzNTYsIHVybDogIi91cnVuL3VjbHUteWFzYW0tcml0bWktZGlzLWljLWRlbmdlbGkteWFzYW0tc2V0aSIsIGdvcnNlbDogIiIgfSwKICAgICAgICAgICAgICAgICJjYXJlfGNvbWZvcnR8ZGFpbHl8ZGVmZW5jZXxoZXBhfHdpbnRlciI6IHsgYWQ6ICLDnMOnbMO8IELDvHTDvG5zZWwgU2F2dW5tYSAmYW1wOyDEsMOnIFppbmRlbGlrIFNldGkiLCBpZDogMzU4LCB1cmw6ICIvdXJ1bi91Y2x1LWJ1dHVuc2VsLXNhdnVubWEtaWMtemluZGVsaWstc2V0aSIsIGdvcnNlbDogIiIgfSwKICAgICAgICAgICAgICAgICJjb21mb3J0fGRhaWx5fGRlZmVuY2V8ZGV0b3h8Zm9ybXx3aW50ZXIiOiB7IGFkOiAiw5zDp2zDvCBEb8SfYWwgVsO8Y3V0IERpcmVuY2kgJmFtcDsgRm9ybSBLb3J1bWEgU2V0aSIsIGlkOiAzNTksIHVybDogIi91cnVuL3VjbHUtZG9nYWwtdnVjdXQtZGlyZW5jaS1mb3JtLWtvcnVtYS1zZXRpIiwgZ29yc2VsOiAiIiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkaWF8ZmFzdHxmdWxsfHJlbGF4IjogeyBhZDogIsOcw6dsw7wgQmVzbGVubWUgJmFtcDsgRGVuZ2VsaSBZYcWfYW0gUnV0aW4gU2V0aSIsIGlkOiA0NCwgdXJsOiAiL3VydW4vZGlhLWJhbGFuY2EtZnVsbC1mYXN0LXZlLWNhbG0tcmVsYXgiLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDQ0L2QtYi1mLWYtYy1yLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI0OTk4MSIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGNhbG18ZGlhfGRyZWFtfHJlbGF4fHNsZWVwIjogeyBhZDogIsOcw6dsw7wgR8O8biBTb251IERpbmdpbmxpayAmYW1wOyBEZW5nZWxpIFlhxZ9hbSBTZXRpIiwgaWQ6IDQ1LCB1cmw6ICIvdXJ1bi9kaWEtYmFsYW5jZS1jYWxtLXJlbGF4LXZlLXNsZXBwLWRyZWFtIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA0NS9kLWItYy1yLXMtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5ODIiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxibG9hdGluZ3xjYWxtfGRpYXxnYXN8cmVsYXgiOiB7IGFkOiAiw5zDp2zDvCBTaW5kaXJpbSBLb25mb3J1ICZhbXA7IMSww6cgRGVuZ2UgU2V0aSIsIGlkOiA3MSwgdXJsOiAiL3VydW4vZGlhLWJhbGFuY2UtY2FsbS1yZWxheC1nYXMtYmxvYXRpbmciLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDcxL2QtYi1jLWYtZy1iLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI1MDAwNCIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGRldG94fGRpYXxkcmVhbXxmb3JtfHNsZWVwIjogeyBhZDogIsOcw6dsw7wgTWV0YWJvbGlrIERlbmdlbGkgWWHFn2FtICZhbXA7IEdlY2UgUnV0aW4gU2V0aSIsIGlkOiA1MCwgdXJsOiAiL3VydW4vZm9ybS1kZXRveC1kaWEtYmFsYW5jZS1zbGVlcC1kcmVhbSIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNTAvZi1kLWQtYi1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjQ5OTg2IiB9LAogICAgICAgICAgICAgICAgImRldG94fGRyZWFtfGZhc3R8Zm9ybXxmdWxsfHNsZWVwIjogeyBhZDogIsOcw6dsw7wgR8O8bmzDvGsgWmluZGVsaWsgJmFtcDsgR2VjZSBEaW5sZW5tZSBTZXRpIiwgaWQ6IDY5LCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWZ1bGwtZmFzdC1zbGVlcC1kcmVhbSIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNjkvZi1kLWYtZi1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjUwMDAyIiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkZXRveHxkaWF8Zm9ybXxyZWxheCI6IHsgYWQ6ICLDnMOnbMO8IEJlc2xlbm1lIERlbmdlc2kgJmFtcDsgxLDDp3NlbCBTYWvEsW5saWsgU2V0aSIsIGlkOiA1MSwgdXJsOiAiL3VydW4vZm9ybS1kZXRveC1kaWEtYmFsYW5jZS1jYWxtLXJlbGF4IiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA1MS9mLWQtZC1iLWMtci0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5ODYiIH0sCiAgICAgICAgICAgICAgICAiY2FsbXxkZXRveHxkaWdlc3R8ZWFzeXxmb3JtfHJlbGF4IjogeyBhZDogIsOcw6dsw7wgRml6aWtzZWwgSGFmaWZsaWsgJmFtcDsgU2luZGlyaW0gRGVuZ2VzaSBTZXRpIiwgaWQ6IDQ4LCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWNhbG0tcmVsYXgtZWFzeS1kaWdlc3QiLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDQ4L2YtZC1jLXItZS1kLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI0OTk4NCIgfSwKICAgICAgICAgICAgICAgICJibG9hdGluZ3xjYWxtfGdhc3xsYWN0YXxyZWxheHxyaWNoIjogeyBhZDogIsOcw6dsw7wgSGFzc2FzIEFubmUgR8O8bmzDvGsgU8SxdsSxIERlbmdlc2kgJmFtcDsgSHV6dXIgU2V0aSIsIGlkOiAzNjMsIHVybDogIi91cnVuL3VjbHUtaGFzc2FzLWFubmUtZ3VubHVrLXNpdmktZGVuZ2VzaS1odXp1ci1zZXRpIiwgZ29yc2VsOiAiIiB9LAogICAgICAgICAgICAgICAgImJsb2F0aW5nfGNhbG18ZGlnZXN0fGVhc3l8Z2FzfHJlbGF4IjogeyBhZDogIsOcw6dsw7wgT2ZpcyDDh2FsxLHFn2FubGFyxLEgxLDDpyBLb25mb3IgU2V0aSIsIGlkOiAzNjQsIHVybDogIi91cnVuL3VjbHUtb2Zpcy1jYWxpc2FubGFyaS1pYy1rb25mb3Itc2V0aSIsIGdvcnNlbDogIiIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGRpYXxkaWdlc3R8ZWFzeXxmYXN0fGZ1bGwiOiB7IGFkOiAiw5zDp2zDvCBCZXNsZW5tZSBLb3J1bWEgJmFtcDsgU2luZGlyaW0gRGVuZ2VzaSBTZXRpIiwgaWQ6IDM2NywgdXJsOiAiL3VydW4vdWNsdS1iZXNsZW5tZS1rb3J1bWEtc2luZGlyaW0tZGVuZ2VzaS1zZXRpIiwgZ29yc2VsOiAiIiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8ZGV0b3h8ZGlhfGZhc3R8Zm9ybXxmdWxsIjogeyBhZDogIsOcw6dsw7wgUG9yc2l5b24gS29udHJvbMO8ICZhbXA7IEJlc2xlbm1lIEfDvHZlbmxpxJ9pIFNldGkiLCBpZDogMzIsIHVybDogIi91cnVuL2Zvcm0tZGV0b3gtZnVsbC1mYXN0LXZlLWRpYS1iYWxhbmNlIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzAzMi9mLWQtZi1mLWQtYi0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5NzEiIH0sCiAgICAgICAgICAgICAgICAiZGV0b3h8ZGlnZXN0fGVhc3l8ZmFzdHxmb3JtfGZ1bGwiOiB7IGFkOiAiw5zDp2zDvCBGb3JtICZhbXA7IFNpbmRpcmltIFNpc3RlbWkgUnV0aW4gU2V0aSIsIGlkOiA2OCwgdXJsOiAiL3VydW4vZm9ybS1kZXRveC1mdWxsLWZhc3QtZWFzeS1kaWdlc3QiLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDY4L2YtZC1mLWYtZS1kLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI1MDAwMSIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGRldG94fGRpYXxkaWdlc3R8ZWFzeXxmb3JtIjogeyBhZDogIsOcw6dsw7wgQmVzbGVubWUsIEtvcnVtYSAmYW1wOyBTaW5kaXJpbSBEZW5nZXNpIFNldGkiLCBpZDogMzY3LCB1cmw6ICIvdXJ1bi91Y2x1LWJlc2xlbm1lLWtvcnVtYS1zaW5kaXJpbS1kZW5nZXNpLXNldGkiLCBnb3JzZWw6ICIiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxibG9hdGluZ3xkZXRveHxkaWF8Zm9ybXxnYXMiOiB7IGFkOiAiw5zDp2zDvCBTxLF2xLEgRGVuZ2VzaSAmYW1wOyDDlsSfw7xuIFNvbnJhc8SxIFJhaGF0bGFtYSBTZXRpIiwgaWQ6IDcwLCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWRpYS1iYWxhbmNlLWdhcy1ibG9hdGluZyIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNzAvZi1kLWQtYi1nLWItMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjUwMDAzIiB9LAogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgRE9SVExVX1NFVExFUiA9IHsKICAgICAgICAgICAgICAgICJiYWxhbmNlfGNhbG18ZGlhfGRyZWFtfGVkZW1hfHJlbGF4fHNsZWVwfHN3ZWxsIjogeyBhZDogIkTDtnJ0bMO8IEZpemlrc2VsIEhhZmlmbGlrICZhbXA7IEJlc2xlbm1lIERlbmdlIFNldGkiLCBpZDogNTcsIHVybDogIi91cnVuL2VkZW1hLXN3ZWxsLWRpYS1iYWxhbmNlLWNhbG0tcmVsYXgtc2xlZXAtZHJlYW0iLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDU3L2Utcy1kLWItYy1yLXMtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5OTIiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxjYWxtfGRpYXxlZGVtYXxmYXN0fGZ1bGx8cmVsYXh8c3dlbGwiOiB7IGFkOiAiRMO2cnRsw7wgQXRsZXRpayBGb3JtICZhbXA7IEZpemlrc2VsIERlbmdlIFNldGkiLCBpZDogMzQ0LCB1cmw6ICIvdXJ1bi9lZGVtYS1zd2VsbC1mdWxsLWZhc3QtY2FsbS1yZWxheC1kaWEtYmFsYW5jZSIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8zNDQvZTZjY2Q1MWYtOWRlMC00NzkyLWIzM2ItYTViZDNkZWU4ZGM1X21pbi5qcGc/cmV2aXNpb249MTc4NzI1MDAxMyIgfSwKICAgICAgICAgICAgICAgICJjYWxtfGRpZ2VzdHxlYXN5fGVkZW1hfGZhc3R8ZnVsbHxyZWxheHxzd2VsbCI6IHsgYWQ6ICJEw7ZydGzDvCBBa3RpZiBZYcWfYW0gUGVyZm9ybWFucyAmYW1wOyBTaW5kaXJpbSBTZXRpIiwgaWQ6IDM0MywgdXJsOiAiL3VydW4vZWRlbWEtc3dlbGwtZnVsbC1mYXN0LWNhbG0tcmVsYXgtZWFzeS1kaWdlc3QiLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMzQzL2Utcy1mLWYtYy1yLWUtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNTAwMTIiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxjYWxtfGRpYXxkaWdlc3R8ZWFzeXxlZGVtYXxyZWxheHxzd2VsbCI6IHsgYWQ6ICJEw7ZydGzDvCBGaXppa3NlbCBSZWNvdmVyeSAmYW1wOyBCZXNsZW5tZSBEZW5nZSBTZXRpIiwgaWQ6IDc4LCB1cmw6ICIvdXJ1bi9lZGVtYS1zd2VsbC1kaWEtYmFsYW5jZS1jYWxtLXJlbGF4LWVhc3ktZGlnZXN0IiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA3OC9lLXMtZC1iLWMtci1lLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjUwMDExIiB9LAogICAgICAgICAgICAgICAgImNhcmV8Y29tZm9ydHxkYWlseXxkZWZlbmNlfGRldG94fGZvcm18aGVwYXx3aW50ZXIiOiB7IGFkOiAiRMO2cnRsw7wgQsO8dMO8bnNlbCBTYXZ1bm1hLCBEZXRva3MgJmFtcDsgxLDDpyBaaW5kZWxpayBTZXRpIiwgaWQ6IDM2MCwgdXJsOiAiL3VydW4vZG9ydGx1LWJ1dHVuc2VsLXNhdnVubWEtZGV0b2tzLWljLXppbmRlbGlrLXNldGkiLCBnb3JzZWw6ICIiIH0sCiAgICAgICAgICAgICAgICAiY2FyZXxkZXRveHxlZGVtYXxmYXN0fGZvcm18ZnVsbHxoZXBhfHN3ZWxsIjogeyBhZDogIkTDtnJ0bMO8IEF0bGV0aWsgUmVjb3ZlcnkgJmFtcDsgQsO8dMO8bnNlbCBIYWZpZmxpayBTZXRpIiwgaWQ6IDM2MSwgdXJsOiAiL3VydW4vZG9ydGx1LWF0bGV0aWstcmVjb3ZlcnktYnV0dW5zZWwtaGFmaWZsaWstc2V0aSIsIGdvcnNlbDogIiIgfSwKICAgICAgICAgICAgICAgICJkZXRveHxkcmVhbXxlZGVtYXxmYXN0fGZvcm18ZnVsbHxzbGVlcHxzd2VsbCI6IHsgYWQ6ICJEw7ZydGzDvCAyNCBTYWF0IMSwZGVhbCBIYWZpZmxpayAmYW1wOyBGb3JtIFJ1dGluaSBTZXRpIiwgaWQ6IDM2MiwgdXJsOiAiL3VydW4vZG9ydGx1LTI0LXNhYXQtaWRlYWwtaGFmaWZsaWstZm9ybS1ydXRpbmktc2V0aSIsIGdvcnNlbDogIiIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGNhbG18ZGlhfGRyZWFtfGZhc3R8ZnVsbHxyZWxheHxzbGVlcCI6IHsgYWQ6ICJEw7ZydGzDvCBNYWtzaW1vIEJlc2xlbm1lICZhbXA7IERlbmdlbGkgWWHFn2FtIFNldGkiLCBpZDogNTIsIHVybDogIi91cnVuL2RpYS1iYWxhbmNlLWZ1bGwtZmFzdC1jYWxtLXJlbGF4LXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA1Mi9kLWItZi1mLWMtci1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3NTM1NjgzIiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkaWF8ZGlnZXN0fGRyZWFtfGVhc3l8cmVsYXh8c2xlZXAiOiB7IGFkOiAiRMO2cnRsw7wgxLDDp3NlbCBTZXlpciAmYW1wOyBTaW5kaXJpbSBEZW5nZXNpIFNldGkiLCBpZDogNTMsIHVybDogIi91cnVuL2RpYS1iYWxhbmNlLWVhc3ktZGlnZXN0LWNhbG0tcmVsYXgtc2xlZXAtZHJlYW0iLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDUzL2QtYi1jLXItcy1kLWUtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODc1MzU2ODUiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxkaWF8ZGlnZXN0fGRyZWFtfGVhc3l8ZmFzdHxmdWxsfHNsZWVwIjogeyBhZDogIkTDtnJ0bMO8IEthcHNhbWzEsSBCZXNsZW5tZSAmYW1wOyBTaW5kaXJpbSBZw7ZuZXRpbSBTZXRpIiwgaWQ6IDc0LCB1cmw6ICIvdXJ1bi9kaWEtYmFsYW5jZS1mdWxsLWZhc3QtZWFzeS1kaWdlc3Qtc2xlZXAtZHJlYW0iLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDc0L2QtYi1mLWYtZS1kLXMtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODc1MzU2ODYiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxibG9hdGluZ3xjYWxtfGRpYXxkcmVhbXxnYXN8cmVsYXh8c2xlZXAiOiB7IGFkOiAiRMO2cnRsw7wgU2luZGlyaW0gS29uZm9ydSAmYW1wOyBHw7xuIFNvbnUgUmFoYXRsYW1hIFNldGkiLCBpZDogNzUsIHVybDogIi91cnVuL2RpYS1iYWxhbmNlLWNhbG0tcmVsYXgtZ2FzLWJsb2F0aW5nLXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA3NS9kLWItYy1yLWctYi1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3NTM1Njg3IiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkZXRveHxkaWF8ZHJlYW18Zm9ybXxyZWxheHxzbGVlcCI6IHsgYWQ6ICJEw7ZydGzDvCBGaXppa3NlbCBIYWZpZmxpayAmYW1wOyBNZXRhYm9saWsgRMO2bmfDvCBTZXRpIiwgaWQ6IDU0LCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWRpYS1iYWxhbmNlLWNhbG0tcmVsYXgtc2xlZXAtZHJlYW0iLCBnb3JzZWw6ICIvL3d3dy50aGVyYWxpbmUuY29tLnRyL2lkZWEvc24vNDQvbXlhc3NldHMvcHJvZHVjdHMvMDU0L2YtZC1kLWItYy1yLXMtZC0xMjAweDEyMDBweF9taW4uanBnP3JldmlzaW9uPTE3ODcyNDk5ODkiIH0sCiAgICAgICAgICAgICAgICAiYmFsYW5jZXxkZXRveHxkaWF8ZGlnZXN0fGVhc3l8ZmFzdHxmb3JtfGZ1bGwiOiB7IGFkOiAiRMO2cnRsw7wgTWFrc2ltdW0gRm9ybSAmYW1wOyBTaW5kaXJpbSBZw7ZuZXRpbSBTZXRpIiwgaWQ6IDc2LCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWZ1bGwtZmFzdC1kaWEtYmFsYW5jZS1lYXN5LWRpZ2VzdCIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNzYvZi1kLWYtZi1kLWItZS1kLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzUzNTY4OCIgfSwKICAgICAgICAgICAgICAgICJiYWxhbmNlfGRldG94fGRpYXxkcmVhbXxmYXN0fGZvcm18ZnVsbHxzbGVlcCI6IHsgYWQ6ICJEw7ZydGzDvCAyNCBTYWF0IEtlc2ludGlzaXogQmVzbGVubWUgUnV0aW5pIFNldGkiLCBpZDogNzcsIHVybDogIi91cnVuL2Zvcm0tZGV0b3gtZnVsbC1mYXN0LWRpYS1iYWxhbmNlLXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA3Ny9mLWQtZi1mLWQtYi1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjU0MDI4IiB9LAogICAgICAgICAgICAgICAgImNhbG18ZGV0b3h8ZGlnZXN0fGRyZWFtfGVhc3l8Zm9ybXxyZWxheHxzbGVlcCI6IHsgYWQ6ICJEw7ZydGzDvCBHw7xuIFNvbnUgRGVuZ2VsaSBZYcWfYW0gJmFtcDsgU2FraW5saWsgU2V0aSIsIGlkOiA1NiwgdXJsOiAiL3VydW4vZm9ybS1kZXRveC1jYWxtLXJlbGF4LWVhc3ktZGlnZXN0LXNsZWVwLWRyZWFtIiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA1Ni9mLWQtYy1yLWUtZC1zLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3NTM1Njg0IiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkaWF8ZGlnZXN0fGVhc3l8ZmFzdHxmdWxsfHJlbGF4IjogeyBhZDogIkTDtnJ0bMO8IFNpbmRpcmltIEtvbmZvcnUgJmFtcDsgQWvEsWxsxLEgRGl5ZXQgRGVzdGVrIFNldGkiLCBpZDogMzY1LCB1cmw6ICIvdXJ1bi9kb3J0bHUtc2luZGlyaW0ta29uZm9ydS1ha2lsbGktZGl5ZXQtZGVzdGVrLXNldGkiLCBnb3JzZWw6ICIiIH0sCiAgICAgICAgICAgICAgICAiY2FsbXxkZXRveHxkaWdlc3R8ZWFzeXxmYXN0fGZvcm18ZnVsbHxyZWxheCI6IHsgYWQ6ICJEw7ZydGzDvCBCw7x0w7xuc2VsIEhhZmlmbGlrICZhbXA7IMSwxZ90YWggRGVuZ2VzaSBTZXRpIiwgaWQ6IDYwLCB1cmw6ICIvdXJ1bi9mb3JtLWRldG94LWNhbG0tcmVsYXgtZnVsbC1mYXN0LXZlLWVhc3ktZGlnZXN0IiwgZ29yc2VsOiAiLy93d3cudGhlcmFsaW5lLmNvbS50ci9pZGVhL3NuLzQ0L215YXNzZXRzL3Byb2R1Y3RzLzA2MC9mLWQtZi1mLWMtci1lLWQtMTIwMHgxMjAwcHhfbWluLmpwZz9yZXZpc2lvbj0xNzg3MjQ5OTk0IiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkZXRveHxkaWF8ZmFzdHxmb3JtfGZ1bGx8cmVsYXgiOiB7IGFkOiAiRMO2cnRsw7wgS2Fwc2FtbMSxIE1ldnNpbXNlbCBGb3JtICZhbXA7IMSww6cgRGVuZ2UgU2V0aSIsIGlkOiAzNjYsIHVybDogIi91cnVuL2RvcnRsdS1rYXBzYW1saS1tZXZzaW1zZWwtZm9ybS1pYy1kZW5nZS1zZXRpIiwgZ29yc2VsOiAiIiB9LAogICAgICAgICAgICAgICAgImJhbGFuY2V8Y2FsbXxkZXRveHxkaWF8ZGlnZXN0fGVhc3l8Zm9ybXxyZWxheCI6IHsgYWQ6ICJEw7ZydGzDvCBCw7x0w7xuc2VsIMSww6cgS29uZm9yICZhbXA7IFJlY292ZXJ5IFNldGkiLCBpZDogNTUsIHVybDogIi91cnVuL2Zvcm0tZGV0b3gtZGlhLWJhbGFuY2UtY2FsbS1yZWxheC1lYXN5LWRpZ2VzdCIsIGdvcnNlbDogIi8vd3d3LnRoZXJhbGluZS5jb20udHIvaWRlYS9zbi80NC9teWFzc2V0cy9wcm9kdWN0cy8wNTUvZi1kLWYtZi1jLXItZS1kLTEyMDB4MTIwMHB4X21pbi5qcGc/cmV2aXNpb249MTc4NzI0OTk5MCIgfSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZnVuY3Rpb24gY2JEb3J0bHVCdWwoYW5haHRhcikgewogICAgICAgICAgICAgICAgdmFyIHNlYyA9IGFuYWh0YXIuc3BsaXQoInwiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGRrIGluIERPUlRMVV9TRVRMRVIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZHQgPSBkay5zcGxpdCgifCIpLCBoZXBzaSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeiA9IDA7IHogPCBzZWMubGVuZ3RoOyB6KyspIHsgaWYgKGR0LmluZGV4T2Yoc2VjW3pdKSA8IDApIHsgaGVwc2kgPSBmYWxzZTsgYnJlYWs7IH0gfQogICAgICAgICAgICAgICAgICAgIGlmIChoZXBzaSkgeyByZXR1cm4gRE9SVExVX1NFVExFUltka107IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgIHZhciBzb3J1bGFyID0ga29rLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYi1zb3J1Iik7CiAgICAgICAgdmFyIHNvbnVjID0ga29rLnF1ZXJ5U2VsZWN0b3IoIi5jYi1zb251YyIpOwogICAgICAgIHZhciBiYXIgPSBrb2sucXVlcnlTZWxlY3RvcigiLmNiLWJhciBzcGFuIik7CiAgICAgICAgdmFyIGFkaW1ObyA9IGtvay5xdWVyeVNlbGVjdG9yKCIuY2ItYWRpbS1ubyIpOwogICAgICAgIHZhciBnZXJpID0ga29rLnF1ZXJ5U2VsZWN0b3IoIi5jYi1nZXJpIik7CiAgICAgICAgdmFyIGNpa3RpID0ga29rLnF1ZXJ5U2VsZWN0b3IoIi5jYi1jaWt0aSIpOwogICAgICAgIHZhciB0b3BsYW0gPSBzb3J1bGFyLmxlbmd0aDsKICAgICAgICB2YXIgY2V2YXBsYXIgPSBbXTsKCiAgICAgICAgZnVuY3Rpb24gZ29zdGVyKGkpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0b3BsYW07IG4rKykgeyBzb3J1bGFyW25dLmNsYXNzTGlzdC50b2dnbGUoImFrdGlmIiwgbiA9PT0gaSk7IH0KICAgICAgICAgICAgc29udWMuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYiKTsKICAgICAgICAgICAgYWRpbU5vLnRleHRDb250ZW50ID0gIkFkxLFtICIgKyAoaSArIDEpICsgIiAvICIgKyB0b3BsYW07CiAgICAgICAgICAgIGJhci5zdHlsZS53aWR0aCA9ICgoaSArIDEpIC8gdG9wbGFtICogMTAwKSArICIlIjsKICAgICAgICAgICAgZ2VyaS5oaWRkZW4gPSBpID09PSAwOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc2V0S2FydCh1LCByb3pldCwgYWNpa2xhbWEpIHsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJjYi11cnVuIGNiLXVydW4tc2V0Ij4nICsKICAgICAgICAgICAgICAgICAgICc8YSBocmVmPSInICsgdS51cmwgKyAnIj48aW1nIHNyYz0iJyArIHUuZ29yc2VsICsgJyIgYWx0PSInICsgdS5hZCArICciIGxvYWRpbmc9ImxhenkiPjwvYT4nICsKICAgICAgICAgICAgICAgICAgICc8c3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2Itcm96ZXQiPicgKyAocm96ZXQgfHwgIsSwa2lsaSBzZXQiKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAnPGEgY2xhc3M9ImNiLXVydW4tYWQiIGhyZWY9IicgKyB1LnVybCArICciPicgKyB1LmFkICsgJzwvYT4nICsKICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2ItdXJ1bi1kZXNjIj4nICsgKGFjaWtsYW1hIHx8ICLEsGtpIGhhcm1hbsSxIGJpciBhcmFkYSwgdGVrIHBha2V0dGUuIFJ1dGluaW5pemkgZWtzaWtzaXoga3VybWFuxLFuIGVuIHByYXRpayB5b2x1LiIpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz0iY2Itc2VwZXQgYWRkLXRvLWNhcnQtYnV0dG9uIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiJyArCiAgICAgICAgICAgICAgICAgICAnIGRhdGEtc2VsZWN0b3I9ImFkZC10by1jYXJ0IiBkYXRhLWNvbnRleHQ9InNob3djYXNlIiBkYXRhLXByb2R1Y3QtaWQ9IicgKyB1LmlkICsgJyI+U2VwZXRlIGVrbGU8L2E+JyArCiAgICAgICAgICAgICAgICAgICAnPGEgY2xhc3M9ImNiLXVydW4tZ2l0IiBocmVmPSInICsgdS51cmwgKyAnIj7DnHLDvG4gc2F5ZmFzxLEgJnJhcnI7PC9hPicgKwogICAgICAgICAgICAgICAgICAgJzwvc3Bhbj48L2Rpdj4nOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24ga2FydChhbmFodGFyKSB7CiAgICAgICAgICAgIHZhciB1ID0gVVJVTkxFUlthbmFodGFyXTsKICAgICAgICAgICAgaWYgKCF1KSByZXR1cm4gIiI7CiAgICAgICAgICAgIC8qIFNlcGV0ZSBla2xlOiB0ZW1hbmluIGRldnJlZGlsbWlzIFtkYXRhLXNlbGVjdG9yPWFkZC10by1jYXJ0XSBpc2xleWljaXNpIHlha2FsaXlvci4gKi8KICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJjYi11cnVuIj4nICsKICAgICAgICAgICAgICAgICAgICc8YSBocmVmPSInICsgdS51cmwgKyAnIj48aW1nIHNyYz0iJyArIHUuZ29yc2VsICsgJyIgYWx0PSInICsgdS5hZCArICciIGxvYWRpbmc9ImxhenkiPjwvYT4nICsKICAgICAgICAgICAgICAgICAgICc8c3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz0iY2ItdXJ1bi1hZCIgaHJlZj0iJyArIHUudXJsICsgJyI+JyArIHUuYWQgKyAnPC9hPicgKwogICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJjYi11cnVuLWRlc2MiPicgKyB1LmRlc2MgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJjYi1zZXBldCBhZGQtdG8tY2FydC1idXR0b24iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSInICsKICAgICAgICAgICAgICAgICAgICcgZGF0YS1zZWxlY3Rvcj0iYWRkLXRvLWNhcnQiIGRhdGEtY29udGV4dD0ic2hvd2Nhc2UiIGRhdGEtcHJvZHVjdC1pZD0iJyArIHUuaWQgKyAnIj5TZXBldGUgZWtsZTwvYT4nICsKICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz0iY2ItdXJ1bi1naXQiIGhyZWY9IicgKyB1LnVybCArICciPsOccsO8biBzYXlmYXPEsSAmcmFycjs8L2E+JyArCiAgICAgICAgICAgICAgICAgICAnPC9zcGFuPjwvZGl2Pic7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiaXRpcigpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0b3BsYW07IG4rKykgeyBzb3J1bGFyW25dLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmIik7IH0KICAgICAgICAgICAgLyogQmVsZ2VkZWtpIGt1cmd1ZGEgMi4gc29ydSBzb251Y2EgaGljIGdpcm1peW9yZHU7IGJ1cmFkYSB1Y3UgZGUga3VsbGFuaWxpeW9yOgogICAgICAgICAgICAgICAxLiB2ZSAyLiBzb3J1IGlraWxpIGtvbWJpbmFzeW9udSwgMy4gc29ydSBtZXZzaW1zZWwgZWsgb25lcml5aSB2ZXJpeW9yLiAqLwogICAgICAgICAgICB2YXIgdWNBbmFodGFyID0gY2JUb2tlbmxlcihjZXZhcGxhcik7CiAgICAgICAgICAgIHZhciB1YyA9IFVDTFVfU0VUTEVSW3VjQW5haHRhcl07CiAgICAgICAgICAgIHZhciBkb3J0ID0gY2JEb3J0bHVCdWwodWNBbmFodGFyKTsKICAgICAgICAgICAgdmFyIHNldCA9IElLSUxJX1NFVExFUltjZXZhcGxhclswXSArICJ8IiArIGNldmFwbGFyWzFdXTsKICAgICAgICAgICAgdmFyIGh0bWwgPSAiIjsKICAgICAgICAgICAgaWYgKHVjKSB7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJjYi1ncnVwLWJhc2kiPlNpemluIGnDp2luIGVuIGRvxJ9ydSDDvMOnbMO8IHNldDwvZGl2PicgKyBzZXRLYXJ0KHVjLCAiw5zDp2zDvCBzZXQiLCAiw5zDpyBoYXJtYW7EsSBiaXIgYXJhZGEsIHRlayBwYWtldHRlLiBHw7xuIGJveXUgZWtzaWtzaXogYmlyIHJ1dGluLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzZXQpIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNiLWdydXAtYmFzaSI+JyArICh1YyA/ICLEsGtpbGkgc2V0IG9sYXJhayBkYSBhbGFiaWxpcnNpbml6IiA6ICJTaXppbiBpw6dpbiBlbiBkb8SfcnUgaWtpbGkgc2V0IikgKyAnPC9kaXY+JyArIHNldEthcnQoc2V0LCAixLBraWxpIHNldCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNiLWdydXAtYmFzaSI+VGVrbGkgb2xhcmFrIGRhIGFsYWJpbGlyc2luaXo8L2Rpdj4nICsga2FydChjZXZhcGxhclswXSkgKyBrYXJ0KGNldmFwbGFyWzFdKSArIGthcnQoY2V2YXBsYXJbMl0pOwogICAgICAgICAgICBpZiAoZG9ydCkgewogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iY2ItZ3J1cC1iYXNpIj5EYWhhIGthcHNhbWzEsSBiaXIgcnV0aW4gaXN0ZXJzZW5pejwvZGl2PicgKyBzZXRLYXJ0KGRvcnQsICJEw7ZydGzDvCBzZXQiLCAiU2XDp3RpxJ9pbml6IMO8w6cgaGFybWFuYSBiaXIgdGFtYW1sYXnEsWPEsSBkYWhhIGVrbGV5ZW4ga2Fwc2FtbMSxIHNldC4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgaWRsZXIgPSBbXTsKICAgICAgICAgICAgaWYgKHVjKSB7IGlkbGVyLnB1c2godWMuaWQpOyB9CiAgICAgICAgICAgIGVsc2UgaWYgKHNldCkgeyBpZGxlci5wdXNoKHNldC5pZCk7IH0KICAgICAgICAgICAgZm9yICh2YXIgcSA9IDA7IHEgPCBjZXZhcGxhci5sZW5ndGg7IHErKykgewogICAgICAgICAgICAgICAgdmFyIHVxID0gVVJVTkxFUltjZXZhcGxhcltxXV07CiAgICAgICAgICAgICAgICBpZiAodXEgJiYgaWRsZXIuaW5kZXhPZih1cS5pZCkgPT09IC0xKSB7IGlkbGVyLnB1c2godXEuaWQpOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaHRtbCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjYi1rb21iaW4iIGRhdGEtaWRsZXI9IicgKyBpZGxlci5qb2luKCIsIikgKyAnIj4nICsKICAgICAgICAgICAgICAgICfDlm5lcmlsZW4ga29tYmluaSBzZXBldGUgZWtsZSAoJyArIGlkbGVyLmxlbmd0aCArICcgw7xyw7xuKTwvYnV0dG9uPic7CiAgICAgICAgICAgIGNpa3RpLmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgICAgIHNvbnVjLmNsYXNzTGlzdC5hZGQoImFrdGlmIik7CiAgICAgICAgICAgIGFkaW1Oby50ZXh0Q29udGVudCA9ICJTb251w6ciOwogICAgICAgICAgICBiYXIuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgICAgIGdlcmkuaGlkZGVuID0gZmFsc2U7CiAgICAgICAgICAgIGtvay5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAic21vb3RoIiwgYmxvY2s6ICJzdGFydCIgfSk7CiAgICAgICAgfQoKICAgICAgICBrb2suYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgZCA9IGUudGFyZ2V0LmNsb3Nlc3QoIi5jYi1zZWNlbmVrIik7CiAgICAgICAgICAgIGlmIChkICYmIGtvay5jb250YWlucyhkKSkgewogICAgICAgICAgICAgICAgdmFyIGFkaW0gPSBOdW1iZXIoZC5jbG9zZXN0KCIuY2Itc29ydSIpLmdldEF0dHJpYnV0ZSgiZGF0YS1hZGltIikpIC0gMTsKICAgICAgICAgICAgICAgIGNldmFwbGFyW2FkaW1dID0gZC5nZXRBdHRyaWJ1dGUoImRhdGEtdXJ1biIpOwogICAgICAgICAgICAgICAgY2V2YXBsYXIubGVuZ3RoID0gYWRpbSArIDE7CiAgICAgICAgICAgICAgICBpZiAoYWRpbSArIDEgPCB0b3BsYW0pIHsgZ29zdGVyKGFkaW0gKyAxKTsgfSBlbHNlIHsgYml0aXIoKTsgfQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCIuY2ItZ2VyaSIpKSB7CiAgICAgICAgICAgICAgICB2YXIgYWt0aWYgPSBrb2sucXVlcnlTZWxlY3RvcigiLmNiLXNvcnUuYWt0aWYiKTsKICAgICAgICAgICAgICAgIHZhciBzdSA9IGFrdGlmID8gTnVtYmVyKGFrdGlmLmdldEF0dHJpYnV0ZSgiZGF0YS1hZGltIikpIC0gMSA6IHRvcGxhbTsKICAgICAgICAgICAgICAgIGlmIChzdSA+IDApIHsgY2V2YXBsYXIubGVuZ3RoID0gc3UgLSAxOyBnb3N0ZXIoc3UgLSAxKTsgfQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBrb21iaW4gPSBlLnRhcmdldC5jbG9zZXN0KCIuY2Ita29tYmluIik7CiAgICAgICAgICAgIGlmIChrb21iaW4pIHsKICAgICAgICAgICAgICAgIHZhciBsaXN0ZSA9IChrb21iaW4uZ2V0QXR0cmlidXRlKCJkYXRhLWlkbGVyIikgfHwgIiIpLnNwbGl0KCIsIikuZmlsdGVyKEJvb2xlYW4pOwogICAgICAgICAgICAgICAga29tYmluLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGtvbWJpbi50ZXh0Q29udGVudCA9ICJTZXBldGUgZWtsZW5peW9yLi4uIjsKICAgICAgICAgICAgICAgIC8qIHRlbWFuaW4ga2VuZGkgc2VwZXQgaXNsZXlpY2lzaW5pIGhlciB1cnVuIGljaW4gc2lyYXlsYSB0ZXRpa2xlICovCiAgICAgICAgICAgICAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uIChwaWQsIHNpcmEpIHsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdlY2ljaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZ2VjaWNpLmNsYXNzTmFtZSA9ICJhZGQtdG8tY2FydC1idXR0b24iOwogICAgICAgICAgICAgICAgICAgICAgICBnZWNpY2kuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgZ2VjaWNpLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJqYXZhc2NyaXB0OnZvaWQoMCkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZ2VjaWNpLnNldEF0dHJpYnV0ZSgiZGF0YS1zZWxlY3RvciIsICJhZGQtdG8tY2FydCIpOwogICAgICAgICAgICAgICAgICAgICAgICBnZWNpY2kuc2V0QXR0cmlidXRlKCJkYXRhLWNvbnRleHQiLCAic2hvd2Nhc2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZ2VjaWNpLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9kdWN0LWlkIiwgcGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAga29rLmFwcGVuZENoaWxkKGdlY2ljaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGdlY2ljaS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgZ2VjaWNpLnJlbW92ZSgpOyB9LCAzMDApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lyYSA9PT0gbGlzdGUubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga29tYmluLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga29tYmluLnRleHRDb250ZW50ID0gIlNlcGV0ZSBla2xlbmRpIFx1MjcxMyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMjAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHNpcmEgKiA5MDApOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNsb3Nlc3QoIi5jYi10ZWtyYXIiKSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgY2V2YXBsYXIgPSBbXTsKICAgICAgICAgICAgICAgIGNpa3RpLmlubmVySFRNTCA9ICIiOwogICAgICAgICAgICAgICAgZ29zdGVyKDApOwogICAgICAgICAgICAgICAga29rLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICJzbW9vdGgiLCBibG9jazogInN0YXJ0IiB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBnb3N0ZXIoMCk7CiAgICB9KSgpOwo8L3NjcmlwdD4KCnsjIFNpa2NhIFNvcnVsYW4gU29ydWxhciAtIGFrb3JkZW9uLiBTYWRlY2UgLnNzcyB2YXJzYSBjYWxpc2lyLiAjfQo8c2NyaXB0PgogICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIga29rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNzcyIpOwogICAgICAgIGlmICgha29rKSByZXR1cm47CiAgICAgICAga29rLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdmFyIHNvcnUgPSBlLnRhcmdldC5jbG9zZXN0KCIuc3NzLXNvcnUiKTsKICAgICAgICAgICAgaWYgKCFzb3J1IHx8ICFrb2suY29udGFpbnMoc29ydSkpIHJldHVybjsKICAgICAgICAgICAgdmFyIG9nZSA9IHNvcnUuY2xvc2VzdCgiLnNzcy1vZ2UiKTsKICAgICAgICAgICAgdmFyIGNldmFwID0gb2dlLnF1ZXJ5U2VsZWN0b3IoIi5zc3MtY2V2YXAiKTsKICAgICAgICAgICAgdmFyIGFjaWt0aSA9IG9nZS5jbGFzc0xpc3QuY29udGFpbnMoImFjaWsiKTsKCiAgICAgICAgICAgIC8qIGF5bmkgYm9sdW1kZWtpIGRpZ2VybGVyaW5pIGthcGF0ICovCiAgICAgICAgICAgIHZhciBib2x1bSA9IG9nZS5jbG9zZXN0KCIuc3NzLWJvbHVtIikgfHwga29rOwogICAgICAgICAgICBib2x1bS5xdWVyeVNlbGVjdG9yQWxsKCIuc3NzLW9nZS5hY2lrIikuZm9yRWFjaChmdW5jdGlvbiAoZCkgewogICAgICAgICAgICAgICAgaWYgKGQgPT09IG9nZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgZC5jbGFzc0xpc3QucmVtb3ZlKCJhY2lrIik7CiAgICAgICAgICAgICAgICB2YXIgYyA9IGQucXVlcnlTZWxlY3RvcigiLnNzcy1jZXZhcCIpOwogICAgICAgICAgICAgICAgaWYgKGMpIGMuc3R5bGUubWF4SGVpZ2h0ID0gIjBweCI7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGQucXVlcnlTZWxlY3RvcigiLnNzcy1zb3J1Iik7CiAgICAgICAgICAgICAgICBpZiAoYikgYi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBvZ2UuY2xhc3NMaXN0LnRvZ2dsZSgiYWNpayIsICFhY2lrdGkpOwogICAgICAgICAgICBzb3J1LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsIFN0cmluZyghYWNpa3RpKSk7CiAgICAgICAgICAgIGNldmFwLnN0eWxlLm1heEhlaWdodCA9IGFjaWt0aSA/ICIwcHgiIDogY2V2YXAuc2Nyb2xsSGVpZ2h0ICsgInB4IjsKICAgICAgICB9KTsKCiAgICAgICAgLyogcGVuY2VyZSBib3l1dHUgZGVnaXNpbmNlIGFjaWsgY2V2YXBsYXJpbiB5dWtzZWtsaWdpbmkgdGF6ZWxlICovCiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBrb2sucXVlcnlTZWxlY3RvckFsbCgiLnNzcy1vZ2UuYWNpayAuc3NzLWNldmFwIikuZm9yRWFjaChmdW5jdGlvbiAoYykgewogICAgICAgICAgICAgICAgYy5zdHlsZS5tYXhIZWlnaHQgPSBjLnNjcm9sbEhlaWdodCArICJweCI7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSkoKTsKPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyogLS0tIEJ1bHRlbiBrYXlkaSBiYXNhcmlsaSBvbHVyc2EgaW5kaXJpbSBrb2R1bnUgZWtyYW5kYSBnb3N0ZXIgLS0tICovCiAgICAoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBhbGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld3NsZXR0ZXItZW1haWwiKTsKICAgICAgICBpZiAoIWFsYW4pIHsgcmV0dXJuOyB9CiAgICAgICAgdmFyIGZvcm0gPSBhbGFuLmNsb3Nlc3QoImZvcm0iKTsKICAgICAgICBpZiAoIWZvcm0pIHsgcmV0dXJuOyB9CgogICAgICAgIHZhciBERVNFTiA9IC9eW15cc0BdK0BbXlxzQC5dK1wuW15cc0AuXXsyLH0kLzsKICAgICAgICB2YXIgSEFUQV9JWkxFUkkgPSBbImdlY2VybGkiLCAiaGF0YSIsICJ6YXRlbiIsICJiYXNhcmlzaXoiXTsKCiAgICAgICAgZnVuY3Rpb24gc2FkZWxlc3RpcihzKSB7CiAgICAgICAgICAgIHJldHVybiAocyB8fCAiIikudG9Mb3dlckNhc2UoKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcdTAwZTdcdTAwYzddL2csICJjIikucmVwbGFjZSgvW1x1MDExZlx1MDExZV0vZywgImciKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcdTAxMzFcdTAxMzBdL2csICJpIikucmVwbGFjZSgvW1x1MDBmNlx1MDBkNl0vZywgIm8iKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcdTAxNWZcdTAxNWVdL2csICJzIikucmVwbGFjZSgvW1x1MDBmY1x1MDBkY10vZywgInUiKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdvc3RlcktvZCgpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5iay1rb2QiKSkgeyByZXR1cm47IH0KICAgICAgICAgICAgdmFyIGsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgay5jbGFzc05hbWUgPSAiYmsta29kIjsKICAgICAgICAgICAgay5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9ImJrLWtvZC1iYXNsaWsiPlx1MDEzMG5kaXJpbSBrb2R1bnV6IGhhelx1MDEzMXI8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWtvZC1kZWdlciI+SE9TR0VMRElOMTA8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWtvZC1ub3QiPlx1MDBkY3llIGdpcmlcdTAxNWZpIHlhcHRcdTAxMzFrdGFuIHNvbnJhIHNlcGV0dGUga3VsbGFuYWJpbGlyc2luaXouPC9zcGFuPic7CiAgICAgICAgICAgIGZvcm0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaywgZm9ybS5uZXh0U2libGluZyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkZW5lbWV5ZUJhc2xhKCkgewogICAgICAgICAgICBpZiAoIURFU0VOLnRlc3QoKGFsYW4udmFsdWUgfHwgIiIpLnRyaW0oKSkpIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuYmsta29kIikpIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHZhciBpcHRhbCA9IGZhbHNlOwogICAgICAgICAgICB2YXIgZ296ID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKGtheWl0bGFyKSB7CiAgICAgICAgICAgICAgICBrYXlpdGxhci5mb3JFYWNoKGZ1bmN0aW9uIChrYXlpdCkgewogICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGtheWl0LmFkZGVkTm9kZXMpLmZvckVhY2goZnVuY3Rpb24gKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ubm9kZVR5cGUgIT09IDEpIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZXRpbiA9IHNhZGVsZXN0aXIobi50ZXh0Q29udGVudCkuc2xpY2UoMCwgMzAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBIQVRBX0laTEVSSS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGluLmluZGV4T2YoSEFUQV9JWkxFUklbal0pID49IDApIHsgaXB0YWwgPSB0cnVlOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZ296Lm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGdvei5kaXNjb25uZWN0KCk7CiAgICAgICAgICAgICAgICBpZiAoIWlwdGFsKSB7IGdvc3RlcktvZCgpOyB9CiAgICAgICAgICAgIH0sIDIwMDApOwogICAgICAgIH0KCiAgICAgICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCBkZW5lbWV5ZUJhc2xhKTsKICAgICAgICB2YXIgZHVnbWUgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbiIpOwogICAgICAgIGlmIChkdWdtZSkgeyBkdWdtZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGRlbmVtZXllQmFzbGEpOyB9CiAgICAgICAgYWxhbi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgZnVuY3Rpb24gKGUpIHsgaWYgKGUua2V5ID09PSAiRW50ZXIiKSB7IGRlbmVtZXllQmFzbGEoKTsgfSB9KTsKICAgIH0pKCk7Cjwvc2NyaXB0PgoKeyUgaWYgdmlzaXRvci5pc01lbWJlciBhbmQgdmlzaXRvci5tZW1iZXIubWVtYmVyR3JvdXAuaWQgPT0gMiAlfQo8ZGl2IGNsYXNzPSJ1enAta29rIiBkYXRhLXV5ZT0ie3sgdmlzaXRvci5tZW1iZXIuaWQgfX0iIGhpZGRlbj4KICAgIDxkaXYgY2xhc3M9InV6cCI+CiAgICAgICAgPGRpdiBjbGFzcz0idXpwLXVzdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1enAtcm96ZXQiPlRoZXJhbGluZSBSZXNtw64gVXptYW4gT3J0YcSfxLE8L3NwYW4+CiAgICAgICAgICAgIDxoMiBjbGFzcz0idXpwLWJhc2xpayI+U2F5xLFuIG1lc2xla3RhxZ/EsW3EsXosIGhvxZ8gZ2VsZGluaXo8L2gyPgogICAgICAgICAgICA8cCBjbGFzcz0idXpwLWFsdCI+RGFuxLHFn2FubGFyxLFuxLF6xLFuIGfDvG5sw7xrIHJ1dGlubGVyaW5pIGRlc3Rla2xlbWVrdGUgc2l6aW5sZSBiaXJsaWt0ZSBvbG1ha3RhbiBtZW1udW5peWV0IGR1eXV5b3J1ei48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idXpwLWdvdmRlIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InV6cC1rdXR1Ij4KICAgICAgICAgICAgICAgIDxoMz5EYW7EscWfYW4gaW5kaXJpbSBrb2R1bnV6PC9oMz4KICAgICAgICAgICAgICAgIDxwPkRhbsSxxZ9hbmxhcsSxbsSxesSxbiBzZXBldGxlcmluZGUgZ2XDp2VybGksIHNpemUgw7Z6ZWwgPGI+JTEwPC9iPiBpbmRpcmltIGtvZHU6PC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXpwLWtvZCIgaWQ9InV6cEtvZCI+4oCUPC9kaXY+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InV6cC1rb3B5YWxhIiBpZD0idXpwS29weWFsYSI+S29kdSBrb3B5YWxhPC9idXR0b24+CiAgICAgICAgICAgICAgICA8c21hbGw+RGFuxLHFn2FubGFyxLFuxLF6IGJ1IGtvZHUgYmlyZGVuIGZhemxhIHNpcGFyacWfdGUga3VsbGFuYWJpbGlyLjwvc21hbGw+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InV6cC1rdXR1Ij4KICAgICAgICAgICAgICAgIDxoMz5OdW11bmUgdmUga2F0YWxvZyB0YWxlYmk8L2gzPgogICAgICAgICAgICAgICAgPHA+S2xpbmnEn2luaXpkZSBkYW7EscWfYW5sYXLEsW7EsXphIHN1bm1hayDDvHplcmUgZGVuZW1lIHBvxZ9ldGxlcmkgdmUgw7xyw7xuIGthdGFsb8SfdSBpc3RleWViaWxpcnNpbml6LiBZxLFsZGEgaWtpIGtlei48L3A+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0idXpwLWJ0biIgaWQ9InV6cE51bXVuZSIgaHJlZj0ibWFpbHRvOmRlc3Rla0B0aGVyYWxpbmUuY29tLnRyIj5OdW11bmUgS2l0aSDEsHN0ZTwvYT4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InV6cC1kaXAiPlRoZXJhbGluZSDDvHLDvG5sZXJpIGFuYWxpeiBlZGlsbWnFnyBzdGFuZGFyZGl6ZSBoYW1tYWRkZSBpbGUgw7xyZXRpbGlyOyBzaW5hbWVraSB2ZSBpbGF2ZSDFn2VrZXIgacOnZXJtZXouPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgogICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIga29rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnV6cC1rb2siKTsKICAgICAgICBpZiAoIWtvaykgeyByZXR1cm47IH0KICAgICAgICBpZiAoIS9eXC9oZXNhYmltLy50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lKSkgeyBrb2sucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrb2spOyByZXR1cm47IH0KCiAgICAgICAgdmFyIE9aRUxfS09EID0ge307CiAgICAgICAgdmFyIHV5ZSA9IGtvay5nZXRBdHRyaWJ1dGUoImRhdGEtdXllIik7CiAgICAgICAgdmFyIGtvZCA9IE9aRUxfS09EW3V5ZV0gfHwgKCJVWk0tIiArIHV5ZSk7CgogICAgICAgIHZhciBrdXR1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInV6cEtvZCIpOwogICAgICAgIGlmIChrdXR1KSB7IGt1dHUudGV4dENvbnRlbnQgPSBrb2Q7IH0KCiAgICAgICAgdmFyIGtvcHlhbGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXpwS29weWFsYSIpOwogICAgICAgIGlmIChrb3B5YWxhICYmIG5hdmlnYXRvci5jbGlwYm9hcmQpIHsKICAgICAgICAgICAga29weWFsYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGtvZCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAga29weWFsYS50ZXh0Q29udGVudCA9ICJLb3B5YWxhbmRcdTAxMzEiOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBrb3B5YWxhLnRleHRDb250ZW50ID0gIktvZHUga29weWFsYSI7IH0sIDIwMDApOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAoa29weWFsYSkgewogICAgICAgICAgICBrb3B5YWxhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoa29weWFsYSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgbnVtdW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInV6cE51bXVuZSIpOwogICAgICAgIGlmIChudW11bmUpIHsKICAgICAgICAgICAgbnVtdW5lLmhyZWYgPSAibWFpbHRvOmRlc3Rla0B0aGVyYWxpbmUuY29tLnRyIiArCiAgICAgICAgICAgICAgICAiP3N1YmplY3Q9IiArIGVuY29kZVVSSUNvbXBvbmVudCgiTnVtdW5lIHZlIGthdGFsb2cgdGFsZWJpIC0gIiArIGtvZCkgKwogICAgICAgICAgICAgICAgIiZib2R5PSIgKyBlbmNvZGVVUklDb21wb25lbnQoIk1lcmhhYmEsXG5cbktsaW5pXHUwMTFmaW1kZSBrdWxsYW5tYWsgXHUwMGZjemVyZSBudW11bmUgdmUga2F0YWxvZyB0YWxlcCBlZGl5b3J1bS5cblxuVXptYW4ga29kdTogIiArIGtvZCArICJcbkFkIFNveWFkOiBcbktsaW5pazogXG5BZHJlczogXG4iKTsKICAgICAgICB9CgogICAgICAgIHZhciBoZWRlZiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hY2NvdW50LWNvbnRlbnQsIC5tZW1iZXItY29udGVudCwgLmNvbnRlbnQsIG1haW4iKSB8fCBkb2N1bWVudC5ib2R5OwogICAgICAgIGhlZGVmLmluc2VydEJlZm9yZShrb2ssIGhlZGVmLmZpcnN0Q2hpbGQpOwogICAgICAgIGtvay5oaWRkZW4gPSBmYWxzZTsKICAgIH0pKCk7Cjwvc2NyaXB0Pgp7JSBlbmRpZiAlfQoKPHNjcmlwdD4KICAgIC8qIC0tLSBVem1hbiBiYXN2dXJ1IHNheWZhc2k6IGthZGVtZWxpIGFkaW1sYXIgKyBoYXppciBXaGF0c0FwcCBtZXNhamkgKHV6Yi13YSkgLS0tICovCiAgICAoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBrb2sgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudXpiIik7CiAgICAgICAgaWYgKCFrb2spIHsgcmV0dXJuOyB9CgogICAgICAgIHZhciB3YSA9IGtvay5xdWVyeVNlbGVjdG9yKCJhW2hyZWYqPSd3YS5tZSddIik7CiAgICAgICAgaWYgKHdhKSB7CiAgICAgICAgICAgIHZhciBzYXRpciA9IFsKICAgICAgICAgICAgICAgICJUaGVyYWxpbmUgU2HEn2zEsWsgVXptYW7EsSBCYcWfdnVydXN1IiwgIiIsCiAgICAgICAgICAgICAgICAiQWQgU295YWQ6ICIsICJNZXNsZWs6ICIsICJEaXBsb21hIC8gTWV6dW5peWV0IEJlbGdlIE5vOiAiLAogICAgICAgICAgICAgICAgIktsaW5payBBZMSxOiAiLCAixZ5laGlyIC8gxLBsw6dlOiAiLCAiQWRyZXM6ICIsCiAgICAgICAgICAgICAgICAiQ2VwIFRlbGVmb251OiAiLCAiw5x5ZWxpayBlLXBvc3RhIGFkcmVzaW06ICIsICIiLAogICAgICAgICAgICAgICAgIkRpcGxvbWEgZ8O2cnNlbGltaSBidSBtZXNhamEgZWtsaXlvcnVtLiIKICAgICAgICAgICAgXS5qb2luKCJcbiIpOwogICAgICAgICAgICB3YS5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiaHR0cHM6Ly93YS5tZS85MDUzMjI2NTIxMDE/dGV4dD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHNhdGlyKSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgYWRpbWxhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGtvay5xdWVyeVNlbGVjdG9yQWxsKCIudXpiLWFkaW0iKSk7CiAgICAgICAgaWYgKGFkaW1sYXIubGVuZ3RoIDwgMykgeyByZXR1cm47IH0KCiAgICAgICAgdmFyIGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGJhci5jbGFzc05hbWUgPSAidXpiLWlsZXJsZW1lIjsKICAgICAgICBiYXIuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJ1emItaWxlcmxlbWUteWF6aSI+QURJTSA8Yj4xPC9iPiAvIDM8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0idXpiLWN1YnVrIj48aT48L2k+PC9zcGFuPic7CiAgICAgICAgYWRpbWxhclswXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShiYXIsIGFkaW1sYXJbMF0pOwoKICAgICAgICBmdW5jdGlvbiBnb3N0ZXIobiwga2F5ZGlyKSB7CiAgICAgICAgICAgIGFkaW1sYXIuZm9yRWFjaChmdW5jdGlvbiAoYSwgaikgewogICAgICAgICAgICAgICAgaWYgKGogPT09IG4pIHsgYS5jbGFzc0xpc3QucmVtb3ZlKCJ1emItZ2l6bGkiKTsgfSBlbHNlIHsgYS5jbGFzc0xpc3QuYWRkKCJ1emItZ2l6bGkiKTsgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYmFyLnF1ZXJ5U2VsZWN0b3IoImIiKS50ZXh0Q29udGVudCA9IFN0cmluZyhuICsgMSk7CiAgICAgICAgICAgIGJhci5xdWVyeVNlbGVjdG9yKCJpIikuc3R5bGUud2lkdGggPSAoKG4gKyAxKSAvIDMgKiAxMDApICsgIiUiOwogICAgICAgICAgICBpZiAoa2F5ZGlyKSB7IGJhci5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6ICJzbW9vdGgiLCBibG9jazogImNlbnRlciJ9KTsgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2VyaUVrbGUobikgewogICAgICAgICAgICB2YXIgZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwogICAgICAgICAgICBnLnR5cGUgPSAiYnV0dG9uIjsKICAgICAgICAgICAgZy5jbGFzc05hbWUgPSAidXpiLWdlcmkiOwogICAgICAgICAgICBnLnRleHRDb250ZW50ID0gIuKGkCBHZXJpIjsKICAgICAgICAgICAgZy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgZ29zdGVyKG4gLSAxLCB0cnVlKTsgfSk7CiAgICAgICAgICAgIGFkaW1sYXJbbl0ucXVlcnlTZWxlY3RvcigiLnV6Yi1pYyIpLmFwcGVuZENoaWxkKGcpOwogICAgICAgIH0KICAgICAgICBnZXJpRWtsZSgxKTsgZ2VyaUVrbGUoMik7CgogICAgICAgIHZhciBzMSA9IGFkaW1sYXJbMF0ucXVlcnlTZWxlY3RvckFsbCgiYS51emItYnRuIik7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzMSwgZnVuY3Rpb24gKGQpIHsKICAgICAgICAgICAgdmFyIGggPSBkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIHx8ICIiOwogICAgICAgICAgICBpZiAoaC5pbmRleE9mKCJ1eWUtb2wiKSA+PSAwKSB7CiAgICAgICAgICAgICAgICBkLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwgIl9ibGFuayIpOwogICAgICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoInJlbCIsICJub29wZW5lciIpOwogICAgICAgICAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGdvc3RlcigxLCB0cnVlKTsgfSwgMjAwKTsgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBnb3N0ZXIoMSwgdHJ1ZSk7IH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHZhciBzMiA9IGFkaW1sYXJbMV0ucXVlcnlTZWxlY3RvckFsbCgiYS51emItYnRuIik7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzMiwgZnVuY3Rpb24gKGQpIHsKICAgICAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGdvc3RlcigyLCB0cnVlKTsgfSwgNDAwKTsgfSk7CiAgICAgICAgfSk7CgogICAgICAgIGdvc3RlcigwLCBmYWxzZSk7CiAgICB9KSgpOwo8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAvKiAtLS0gSWxldGlzaW0gc2F5ZmFzaTogSUJBTiBrb3B5YWxhIC0tLSAqLwogICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbHRLb3B5YWxhIik7CiAgICAgICAgdmFyIGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWx0SWJhbiIpOwogICAgICAgIGlmICghZCB8fCAhaykgeyByZXR1cm47IH0KICAgICAgICBpZiAoIW5hdmlnYXRvci5jbGlwYm9hcmQpIHsgZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpOyByZXR1cm47IH0KICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgaWJhbiA9IGsudGV4dENvbnRlbnQucmVwbGFjZSgvXHMrL2csICIiKTsKICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaWJhbikudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgZXNraSA9IGQudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICBkLnRleHRDb250ZW50ID0gIktvcHlhbGFuZFx1MDEzMSBcdTI3MTMiOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGQudGV4dENvbnRlbnQgPSBlc2tpOyB9LCAyMDAwKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9KSgpOwo8L3NjcmlwdD4KCnsjIE51bXVuZSAvIGJhc3Z1cnUgbWFpbHRvIGR1Z21lbGVyaTogcG9zdGEgcHJvZ3JhbWkgdGFuaW1saSBvbG1heWFuIHRhcmF5aWNpZGEKICAgdGlrbGFtYSBzZXNzaXoga2FsaXlvcmR1LiBUaWtsYW1heWkgeWFrYWxheWlwIG1ldG5pIGdvc3RlcmVuIGt1dHUuICN9CjxzY3JpcHQ+CiAgICAoZnVuY3Rpb24gKCkgewogICAgICAgIGZ1bmN0aW9uIGNveihhKSB7CiAgICAgICAgICAgIHZhciBoID0gYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJzsKICAgICAgICAgICAgdmFyIHMgPSBoLmluZGV4T2YoJz8nKTsKICAgICAgICAgICAgdmFyIHAgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHMgPCAwID8gJycgOiBoLnNsaWNlKHMgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBhbGljaTogaC5zbGljZSg3LCBzIDwgMCA/IGgubGVuZ3RoIDogcyksCiAgICAgICAgICAgICAgICBrb251OiBwLmdldCgnc3ViamVjdCcpIHx8ICcnLAogICAgICAgICAgICAgICAgbWV0aW46IHAuZ2V0KCdib2R5JykgfHwgJycsCiAgICAgICAgICAgICAgICBoYW06IGgKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGt1dHVBYyh2KSB7CiAgICAgICAgICAgIHZhciBlc2tpID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnV6cG0tb3J0Jyk7CiAgICAgICAgICAgIGlmIChlc2tpKSB7IGVza2kucmVtb3ZlKCk7IH0KCiAgICAgICAgICAgIHZhciB3YSA9ICdodHRwczovL3dhLm1lLzkwNTMyMjY1MjEwMT90ZXh0PScgKyBlbmNvZGVVUklDb21wb25lbnQodi5tZXRpbik7CiAgICAgICAgICAgIHZhciBnbWFpbCA9ICdodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsLz92aWV3PWNtJmZzPTEmdG89JyArIGVuY29kZVVSSUNvbXBvbmVudCh2LmFsaWNpKSArCiAgICAgICAgICAgICAgICAnJnN1PScgKyBlbmNvZGVVUklDb21wb25lbnQodi5rb251KSArICcmYm9keT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHYubWV0aW4pOwoKICAgICAgICAgICAgdmFyIG9ydCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBvcnQuY2xhc3NOYW1lID0gJ3V6cG0tb3J0JzsKICAgICAgICAgICAgb3J0LmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0idXpwbS1rdXR1IiByb2xlPSJkaWFsb2ciIGFyaWEtbW9kYWw9InRydWUiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InV6cG0ta2FwYXQiIGFyaWEtbGFiZWw9IkthcGF0Ij4mdGltZXM7PC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InV6cG0tYmFzbGlrIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHAgY2xhc3M9InV6cG0tbm90Ij5NZXRpbiBoYXrEsXIuIEJvxZ9sdWtsYXLEsSBkb2xkdXJ1cCBhxZ9hxJ/EsWRha2kga2FuYWxsYXJkYW4gYmlyaXlsZSBnw7ZuZGVyaW4uPC9wPicgKwogICAgICAgICAgICAgICAgICAgICc8dGV4dGFyZWEgY2xhc3M9InV6cG0tbWV0aW4iIHJvd3M9IjEwIiBzcGVsbGNoZWNrPSJmYWxzZSI+PC90ZXh0YXJlYT4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0idXpwbS1kdWdtZWxlciI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz0idXpwbS1idG4gdXpwbS1idG4teWVzaWwiIGRhdGEta2FuYWw9IndhIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+V2hhdHNBcHAgaWxlIGfDtm5kZXI8L2E+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz0idXpwbS1idG4gdXpwbS1idG4tY2l6Z2kiIGRhdGEta2FuYWw9ImdtYWlsIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+R21haWwgaWxlIGfDtm5kZXI8L2E+JyArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ1enBtLWFkcmVzIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG9ydCk7CgogICAgICAgICAgICBvcnQucXVlcnlTZWxlY3RvcignLnV6cG0tYmFzbGlrJykudGV4dENvbnRlbnQgPSB2LmtvbnUgfHwgJ01lc2FqJzsKICAgICAgICAgICAgb3J0LnF1ZXJ5U2VsZWN0b3IoJy51enBtLW1ldGluJykudmFsdWUgPSB2Lm1ldGluOwogICAgICAgICAgICBvcnQucXVlcnlTZWxlY3RvcignLnV6cG0tYWRyZXMnKS50ZXh0Q29udGVudCA9CiAgICAgICAgICAgICAgICAnRS1wb3N0YTogJyArIHYuYWxpY2kgKyAnICBcdTAwYjcgIFdoYXRzQXBwOiAwNTMyIDI2NSAyMSAwMSc7CiAgICAgICAgICAgIG9ydC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1rYW5hbD0id2EiXScpLnNldEF0dHJpYnV0ZSgnaHJlZicsIHdhKTsKICAgICAgICAgICAgb3J0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWthbmFsPSJnbWFpbCJdJykuc2V0QXR0cmlidXRlKCdocmVmJywgZ21haWwpOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7CgogICAgICAgICAgICBmdW5jdGlvbiBrYXBhdCgpIHsKICAgICAgICAgICAgICAgIG9ydC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJzsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGVzYyhlKSB7IGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsga2FwYXQoKTsgfSB9CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2MpOwogICAgICAgICAgICBvcnQucXVlcnlTZWxlY3RvcignLnV6cG0ta2FwYXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGthcGF0KTsKICAgICAgICAgICAgb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBvcnQpIHsga2FwYXQoKTsgfSB9KTsKCiAgICAgICAgICAgIC8vIEt1bGxhbmljaSBtZXRuaSBkdXplbmxlcnNlIGthbmFsbGFyIGd1bmNlbCBtZXRuaSB0YXNpc2luLgogICAgICAgICAgICBvcnQucXVlcnlTZWxlY3RvcignLnV6cG0tbWV0aW4nKS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBtID0gdGhpcy52YWx1ZTsKICAgICAgICAgICAgICAgIG9ydC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1rYW5hbD0id2EiXScpLnNldEF0dHJpYnV0ZSgnaHJlZicsCiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vd2EubWUvOTA1MzIyNjUyMTAxP3RleHQ9JyArIGVuY29kZVVSSUNvbXBvbmVudChtKSk7CiAgICAgICAgICAgICAgICBvcnQucXVlcnlTZWxlY3RvcignW2RhdGEta2FuYWw9ImdtYWlsIl0nKS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLAogICAgICAgICAgICAgICAgICAgICdodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsLz92aWV3PWNtJmZzPTEmdG89JyArIGVuY29kZVVSSUNvbXBvbmVudCh2LmFsaWNpKSArCiAgICAgICAgICAgICAgICAgICAgJyZzdT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHYua29udSkgKyAnJmJvZHk9JyArIGVuY29kZVVSSUNvbXBvbmVudChtKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgaCA9IGUudGFyZ2V0OwogICAgICAgICAgICB2YXIgYSA9IG51bGw7CiAgICAgICAgICAgIHdoaWxlIChoICYmIGggIT09IGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoaC50YWdOYW1lID09PSAnQScgJiYgKGguY2xhc3NMaXN0LmNvbnRhaW5zKCd1enAtYnRuJykgfHwgaC5jbGFzc0xpc3QuY29udGFpbnMoJ3V6Yi1idG4tYWx0aW4nKSkpIHsgYSA9IGg7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBoID0gaC5wYXJlbnROb2RlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghYSkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKChhLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKS5zbGljZSgwLCA3KSAhPT0gJ21haWx0bzonKSB7IHJldHVybjsgfQogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGt1dHVBYyhjb3ooYSkpOwogICAgICAgIH0pOwogICAgfSkoKTsKPC9zY3JpcHQ+Cgp7IyBLYXRlZ29yaSBzYXlmYXNpIHZhcnNheWlsYW4gc2lyYWxhbWFzaTogdWN1emRhbiBwYWhhbGl5YSAodGVrbGkgPiBpa2lsaSA+IHVjbHUgPiBkb3J0bHUpICN9CjxzY3JpcHQ+CihmdW5jdGlvbigpewogIHRyeSB7CiAgICBpZiAoIS9eXC9rYXRlZ29yaVwvLy50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lKSkgcmV0dXJuOwogICAgdmFyIHAgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICBpZiAocC5oYXMoJ3NpcmFsYW1hJykpIHJldHVybjsKICAgIHAuc2V0KCdzb3J0JywgJ3ByaWNlLWFzYycpOwogICAgcC5zZXQoJ3NpcmFsYW1hJywgJ3ByaWNlLWFzYycpOwogICAgbG9jYXRpb24ucmVwbGFjZShsb2NhdGlvbi5wYXRobmFtZSArICc/JyArIHAudG9TdHJpbmcoKSArIGxvY2F0aW9uLmhhc2gpOwogIH0gY2F0Y2ggKGUpIHt9Cn0pKCk7Cjwvc2NyaXB0PgoKeyMgQmlsZ2kgS3VsdWJ1IHRhbml0aW1pOiBibG9nIGxpc3Rlc2luaW4gdXN0dW5lIHRhc2luaXlvciAjfQo8c2NyaXB0PgooZnVuY3Rpb24gKCkgewogICAgaWYgKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygiY3VycmVudC1wYWdlLWJsb2ctbGlzdCIpKSB7IHJldHVybjsgfQogICAgdmFyIGthcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jb250ZW50Ym94LWJvZHkiKTsKICAgIGlmICgha2FwIHx8IGthcC5xdWVyeVNlbGVjdG9yKCIuYmtsIikpIHsgcmV0dXJuOyB9CiAgICB2YXIgeCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgeC5vcGVuKCJHRVQiLCAiL3NheWZhL2JpbGdpLWt1bHVidSIsIHRydWUpOwogICAgeC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIGQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHgucmVzcG9uc2VUZXh0LCAidGV4dC9odG1sIik7CiAgICAgICAgICAgIHZhciBiID0gZC5xdWVyeVNlbGVjdG9yKCIuYmtsIik7CiAgICAgICAgICAgIGlmICghYikgeyByZXR1cm47IH0KICAgICAgICAgICAgdmFyIHcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgdy5jbGFzc05hbWUgPSAiYmtsLWJsb2ctdXN0IjsKICAgICAgICAgICAgdy5hcHBlbmRDaGlsZChiKTsKICAgICAgICAgICAgdmFyIGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgaC5jbGFzc05hbWUgPSAiYmtsLXlhemktYmFzaSI7CiAgICAgICAgICAgIGgudGV4dENvbnRlbnQgPSAiWWF6xLFsYXIiOwogICAgICAgICAgICBrYXAuaW5zZXJ0QmVmb3JlKGgsIGthcC5maXJzdENoaWxkKTsKICAgICAgICAgICAga2FwLmluc2VydEJlZm9yZSh3LCBrYXAuZmlyc3RDaGlsZCk7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgIH07CiAgICB4LnNlbmQoKTsKfSkoKTsKPC9zY3JpcHQ+Cg==
ideasoft e-ticaret paketleri ile hazırlandı.