{"version":3,"sources":["node_modules/browser-pack/_prelude.js","_src/js/crate.js","_src/js/elementor.js","_src/js/vendor/vendor.js"],"names":[],"mappings":"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","file":"../crate.js","sourceRoot":"../../","preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJfc3JjL2pzL2NyYXRlLmpzIiwiX3NyYy9qcy9lbGVtZW50b3IuanMiLCJfc3JjL2pzL3ZlbmRvci92ZW5kb3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7Ozs7Ozs7O0FBRUEsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQUQsQ0FBZjs7QUFDQSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUUsYUFBRixDQUF2QjtBQUVBOzs7OztJQUdNLFc7QUFFRix5QkFBYztBQUFBOztBQUNWO0FBQ0EsU0FBSyxHQUFMO0FBQ0EsU0FBSyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUssT0FBTCxHQUFlLEVBQWY7QUFDQSxTQUFLLFVBQUwsR0FBa0IsSUFBbEI7O0FBQ0EsUUFBSyxDQUFDLENBQUUscUJBQUYsQ0FBRCxDQUEyQixNQUFoQyxFQUF5QztBQUNyQyxXQUFLLE9BQUw7QUFDQSxXQUFLLHdCQUFMO0FBQ0EsV0FBSyxZQUFMO0FBQ0g7QUFDSixHLENBRUQ7Ozs7O21DQUNlO0FBQ1gsVUFBSSxpQkFBaUIsR0FBRyxLQUF4QjtBQUNBLFVBQUksSUFBSSxHQUFHLElBQVg7QUFDQSxNQUFBLENBQUMsQ0FBRSxvQ0FBRixDQUFELENBQTBDLEVBQTFDLENBQThDLFFBQTlDLEVBQXdELFVBQUUsS0FBRixFQUFhO0FBQ2pFLFFBQUEsSUFBSSxDQUFDLGFBQUw7QUFDSCxPQUZEO0FBSUEsVUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVAsQ0FBa0Isb0JBQWxCLENBQW5COztBQUVBLGVBQVMsZ0JBQVQsQ0FBMkIsS0FBM0IsRUFBbUM7QUFDL0IsWUFBSyxLQUFLLENBQUMsT0FBWCxFQUFxQjtBQUNqQixVQUFBLENBQUMsQ0FBRSw2QkFBRixDQUFELENBQW1DLElBQW5DLENBQXlDLFNBQXpDLEVBQW9ELEtBQXBEO0FBQ0EsVUFBQSxDQUFDLENBQUUsNkJBQUYsQ0FBRCxDQUFt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QUZhLENBQWpCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHJlcXVpcmUoJ2pRdWVyeScpO1xudmFyIGVsZW1lbnRvciA9IHJlcXVpcmUoICcuL2VsZW1lbnRvcicgKTtcblxuLyoqXG4gKiBIYW5kbGUgdGhlIGxvY2F0aW9uIG1hcCB0aGF0IGxvYWRzIG9uIHRoZSBob21lcGFnZSBhbmQgb24gdGhlIC9sb2NhdGlvbiBwYWdlXG4gKi9cbmNsYXNzIExvY2F0aW9uTWFwIHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBQcm9wZXJ0aWVzXG4gICAgICAgIHRoaXMubWFwO1xuICAgICAgICB0aGlzLm1hcFR5cGUgPSAnJztcbiAgICAgICAgdGhpcy5tYXJrZXJzID0gW107XG4gICAgICAgIHRoaXMuaW5mb1dpbmRvdyA9IG51bGw7XG4gICAgICAgIGlmICggJCggJy5yZWdpb24tY2hhcHRlci1tYXAnICkubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5pbml0TWFwKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkSG9tZXBhZ2VNYXJrZXJzTGlzdCgpO1xuICAgICAgICAgICAgdGhpcy5pbml0SGFuZGxlcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZXJzXG4gICAgaW5pdEhhbmRsZXJzKCkge1xuICAgICAgICB2YXIgYWxyZWFkeV91bmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAkKCAnI2NoYXB0ZXItbWFwLCAjdHJhaW5pbmctY2VudGVyLW1hcCcgKS5vbiggJ2NoYW5nZScsICggZXZlbnQgKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZpbHRlck1hcmtlcnMoKTtcbiAgICAgICAgfSApO1xuXG4gICAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogNDgwcHgpJyk7XG5cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTWFwQ2hhbmdlcyggZXZlbnQgKSB7XG4gICAgICAgICAgICBpZiAoIGV2ZW50Lm1hdGNoZXMgKSB7XG4gICAgICAgICAgICAgICAgJCggJyNjaGFwdGVyLW1hcCwgI2NoYXB0ZXItbGlzdCcgKS5wcm9wKCAnY2hlY2tlZCcsIGZhbHNlICk7XG4gICAgICAgICAgICAgICAgJCggJyNjaGFwdGVyLW1hcCwgI2NoYXB0ZXItbGlzdCcgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xuICAgICAgICAgICAgICAgIGFscmVhZHlfdW5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIG9ubHkgZmlyZSB0aGlzIG9uY2UgcGVyIHJlc2l6ZVxuICAgICAgICAgICAgICAgIGlmICggZmFsc2UgPT09IGFscmVhZHlfdW5jaGVja2VkICkge1xuICAgICAgICAgICAgICAgICAgICAkKCAnI2NoYXB0ZXItbWFwLCAjY2hhcHRlci1saXN0JyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApO1xuICAgICAgICAgICAgICAgICAgICAkKCAnI2NoYXB0ZXItbWFwLCAjY2hhcHRlci1saXN0JyApLnRyaWdnZXIoICdjaGFuZ2UnICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFscmVhZHlfdW5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG1lZGlhUXVlcnkuYWRkTGlzdGVuZXIoIGhhbmRsZU1hcENoYW5nZXMgKTtcbiAgICAgICAgaGFuZGxlTWFwQ2hhbmdlcyggbWVkaWFRdWVyeSApO1xuICAgIH1cblxuICAgIC8vIFByaXZhdGUgbWV0aG9kc1xuICAgIGluaXRNYXAoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgLy8gSW5pdFxuICAgICAgICB2YXIgbWFwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNlbnRlcjoge2xhdDogMzguNjkwMjQsIGxuZzogLTk1LjcxMjg5MX0sXG4gICAgICAgICAgICB6b29tOiA0LFxuICAgICAgICAgICAgc2Nyb2xsd2hlZWw6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH07XG5cbiAgICAgICAgbWFwT3B0aW9ucy5zdHlsZXMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcIndhdGVyXCIsXG4gICAgICAgICAgICAgICAgXCJzdHlsZXJzXCI6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmZmZmZmZcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJzaW1wbGlmaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcImxhbmRzY2FwZS5uYXR1cmFsXCIsXG4gICAgICAgICAgICAgICAgXCJzdHlsZXJzXCI6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCI6IFwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICAvLyBDcmVhdGUgbWFwXG4gICAgICAgIHNlbGYubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcCggZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy5yZWdpb24tY2hhcHRlci1tYXAnICksIG1hcE9wdGlvbnMgKTtcbiAgICB9O1xuXG4gICAgYnVpbGRIb21lcGFnZU1hcmtlcnNMaXN0KCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBtYXAgPSBzZWxmLm1hcDtcblxuICAgICAgICB2YXIgYm91bmRzID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpO1xuICAgICAgICAkLmVhY2goIGNyYXRlLmxvY2F0aW9ucywgKCBpbmRleCwgdmFsdWUgKSA9PiB7XG4gICAgICAgICAgICB2YXIgaWNvbl9pbWFnZSA9IGNyYXRlLmNoYXB0ZXJfbWFya2VyO1xuXG4gICAgICAgICAgICBpZiAoICdyZWdpb24nID09PSB2YWx1ZS50eXBlICkge1xuICAgICAgICAgICAgICAgIGljb25faW1hZ2UgPSBjcmF0ZS50cmFpbmluZ19jZW50ZXJfbWFya2VyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbG9jYXRpb25fYXJlYSA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoIHZhbHVlLmxvY2F0aW9uLmxhdCwgdmFsdWUubG9jYXRpb24ubG5nICk7XG4gICAgICAgICAgICBib3VuZHMuZXh0ZW5kKCBsb2NhdGlvbl9hcmVhICk7XG5cbiAgICAgICAgICAgIHZhciBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA6IHtcbiAgICAgICAgICAgICAgICAgICAgbGF0IDogcGFyc2VGbG9hdCggdmFsdWUubG9jYXRpb24ubGF0ICksXG4gICAgICAgICAgICAgICAgICAgIGxuZyA6IHBhcnNlRmxvYXQoIHZhbHVlLmxvY2F0aW9uLmxuZyApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWFwIDogbWFwLFxuICAgICAgICAgICAgICAgIGljb246IGljb25faW1hZ2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tIDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlIDogdmFsdWUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaW5mb1dpbmRvdyA6IGA8aDQgY2xhc3M9XCJtYXAtbG9jYXRpb25cIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9bm9vcGVuZXJcIiBocmVmPVwiJHsgdmFsdWUucGVybWFsaW5rIH1cIj4keyB2YWx1ZS5uYW1lIH08L2E+PC9oND48c3BhbiBjbGFzcz1cInNlcnZpY2VzXCI+JHsgdmFsdWUuc2VydmljZXMgfTwvc3Bhbj48c3BhbiBjbGFzcz1cImxvY2F0aW9uXCI+JHsgdmFsdWUubG9jYXRpb24uYWRkcmVzcyB9PC9zcGFuPmBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmluZm9XaW5kb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmZvV2luZG93LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYuaW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbWFya2VyLmN1c3RvbS5pbmZvV2luZG93XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2VsZi5pbmZvV2luZG93Lm9wZW4oIG1hcCwgbWFya2VyICk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2VsZi5tYXJrZXJzLnB1c2goIG1hcmtlciApO1xuICAgICAgICB9ICk7XG5cbiAgICAgICAgaWYgKCBjcmF0ZS5sb2NhdGlvbnMubGVuZ3RoID4gMSApIHtcbiAgICAgICAgICAgIG1hcC5maXRCb3VuZHMoIGJvdW5kcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFwLnNldENlbnRlciggbmV3IGdvb2dsZS5tYXBzLkxhdExuZyggY3JhdGUubG9jYXRpb25zWzBdLmxvY2F0aW9uLmxhdCwgY3JhdGUubG9jYXRpb25zWzBdLmxvY2F0aW9uLmxuZyApICk7XG4gICAgICAgIH1cblxuICAgICAgICBnb29nbGUubWFwcy5ldmVudC50cmlnZ2VyKCBtYXAsICdyZXNpemUnICk7XG4gICAgfVxuXG4gICAgZmlsdGVyTWFya2VycygpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB2YXIgbWFwID0gc2VsZi5tYXAsXG4gICAgICAgICAgICBtYXJrZXJzID0gc2VsZi5tYXJrZXJzLFxuICAgICAgICAgICAgc2hvd1JlZ2lvbnMgPSAkKCAnI3RyYWluaW5nLWNlbnRlci1tYXAnICkuaXMoICc6Y2hlY2tlZCcgKSxcbiAgICAgICAgICAgIHNob3dDaGFwdGVycyA9ICQoJyAjY2hhcHRlci1tYXAnICkuaXMoICc6Y2hlY2tlZCcgKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBtYXJrZXIgPSBtYXJrZXJzW2ldO1xuICAgICAgICAgICAgbWFya2VyLnNldE1hcChudWxsKTtcbiAgICAgICAgICAgIHN3aXRjaCAoIG1hcmtlci5jdXN0b20udHlwZSApIHtcbiAgICAgICAgICAgICAgICBjYXNlICdyZWdpb24nIDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBzaG93UmVnaW9ucyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRNYXAoIG1hcCApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoYXB0ZXInIDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBzaG93Q2hhcHRlcnMgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0TWFwKCBtYXAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBIYW5kbGUgdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgbG9hZCBob21lcGFnZSBhbmQgb24gdGhlIC9sb2NhdGlvbiBwYWdlXG4gKi9cbmNsYXNzIExvY2F0aW9uTGlzdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYnVpbGRMb2NhdGlvbnNMaXN0KCk7XG4gICAgICAgIHRoaXMuaW5pdEhhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgYnVpbGRMb2NhdGlvbnNMaXN0KCkge1xuICAgICAgICB2YXIgJGxpc3RfY29udGFpbmVyID0gJCggJy5yZWdpb24tY2hhcHRlci1saXN0JyApO1xuXG4gICAgICAgIGlmICggJGxpc3RfY29udGFpbmVyLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICQuZWFjaCggY3JhdGUubG9jYXRpb25zLCAoIGluZGV4LCB2YWx1ZSApID0+IHtcbiAgICAgICAgICAgIHZhciBpY29uX2ltYWdlID0gY3JhdGUuY2hhcHRlcl9tYXJrZXI7XG5cbiAgICAgICAgICAgIGlmICggJ3JlZ2lvbicgPT09IHZhbHVlLnR5cGUgKSB7XG4gICAgICAgICAgICAgICAgaWNvbl9pbWFnZSA9IGNyYXRlLnRyYWluaW5nX2NlbnRlcl9tYXJrZXI7XG4gICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBgPGRpdiBjbGFzcz1cImxpc3QtbG9jYXRpb24gJHsgdmFsdWUudHlwZSB9XCI+PGltZyBjbGFzcz1cImxvY2F0aW9uLW1hcmtlclwiIHNyYz1cIiR7IGljb25faW1hZ2UgfVwiPjxoNCBjbGFzcz1cIm1hcC1sb2NhdGlvblwiPjxhIHRhcmdldD1cIl9ibGFua1wiIHJlbD1ub29wZW5lclwiIGhyZWY9XCIkeyB2YWx1ZS5wZXJtYWxpbmsgfVwiIGFyaWEtbGFiZWw9XCJHbyB0byB0aGUgJHsgdmFsdWUubmFtZSB9IHBhZ2UgdG8gbGVhcm4gbW9yZSB0aGUgc2VydmljZXMgaW4gdGhlIHJlZ2lvblwiPiR7IHZhbHVlLm5hbWUgfTwvYT48L2g0PmA7XG5cbiAgICAgICAgICAgICAgICAkbGlzdF9jb250YWluZXIuYXBwZW5kKCBodG1sICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICBpbml0SGFuZGxlcnMoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgJCggJyNjaGFwdGVyLWxpc3QsICN0cmFpbmluZy1jZW50ZXItbGlzdCcgKS5vbiggJ2NoYW5nZScsICggZXZlbnQgKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZpbHRlckxpc3QoKTtcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIGZpbHRlckxpc3QoKSB7XG4gICAgICAgIHZhciBzaG93UmVnaW9ucyA9ICQoICcjdHJhaW5pbmctY2VudGVyLWxpc3QnICkuaXMoICc6Y2hlY2tlZCcgKSxcbiAgICAgICAgICAgIHNob3dDaGFwdGVycyA9ICQoJyAjY2hhcHRlci1saXN0JyApLmlzKCAnOmNoZWNrZWQnICk7XG5cbiAgICAgICAgaWYgKCBzaG93UmVnaW9ucyApIHtcbiAgICAgICAgICAgICQoICcubGlzdC1sb2NhdGlvbi5yZWdpb24nICkuc2hvdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCggJy5saXN0LWxvY2F0aW9uLnJlZ2lvbicgKS5oaWRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHNob3dDaGFwdGVycyApIHtcbiAgICAgICAgICAgICQoICcubGlzdC1sb2NhdGlvbi5jaGFwdGVyJyApLnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQoICcubGlzdC1sb2NhdGlvbi5jaGFwdGVyJyApLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG4vKipcbiAqIE9wZW4gZXh0ZXJuYWwgbGlua3MgaW4gbmV3IHRhYlxuICovXG5mdW5jdGlvbiB1cGRhdGVFeHRlcm5hbExpbmtzVG9PcGVuSW5OZXdUYWIoKSB7XG4gICAgY29uc3QgbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnYScgKTtcblxuICAgIGxpbmtzLmZvckVhY2goICggbGluaywgaW5kZXggKSA9PiB7XG4gICAgICAgIGlmICggbGluay5vcmlnaW4gPT09ICB3aW5kb3cubG9jYXRpb24ub3JpZ2luIHx8ICdwMnAub25lY2F1c2UuY29tJyA9PT0gbGluay5ob3N0bmFtZSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICAgIGxpbmsucmVsID0gJ25vb3BlbmVyJztcbiAgICB9ICk7XG59XG5cbiggZnVuY3Rpb24gKCAkICkge1xuICAgICQoIGRvY3VtZW50ICkucmVhZHkoICggJCApID0+IHtcbiAgICAgICAgZWxlbWVudG9yLmRvY3VtZW50TG9hZCgpO1xuICAgICAgICBpZiAoIGdvb2dsZSAmJiBnb29nbGUuaGFzT3duUHJvcGVydHkoICdtYXBzJyApICkge1xuICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIoIHdpbmRvdywgJ2xvYWQnLCAgbmV3IExvY2F0aW9uTWFwKCkgKTtcbiAgICAgICAgfVxuICAgICAgICBuZXcgTG9jYXRpb25MaXN0KCk7XG4gICAgICAgIHVwZGF0ZUV4dGVybmFsTGlua3NUb09wZW5Jbk5ld1RhYigpO1xuICAgIH0gKTtcbiAgICAkKCB3aW5kb3cgKS5yZWFkeSggKCAkICkgPT4ge1xuICAgICAgICBlbGVtZW50b3Iud2luZG93TG9hZCgpO1xuICAgIH0gKTtcbn0gKSggalF1ZXJ5ICk7XG5cblxuLy9cbi8vIC8qIGV4YW1wbGUgb2YgcmVxdWlyaW5nIGEgSlMgcGFja2FnZSBhbmQgaW1wbGVtZW50aW5nIGl0ICovXG4vLyB2YXIgaW1hZ2VzTG9hZGVkID0gcmVxdWlyZSgnaW1hZ2VzbG9hZGVkJyk7XG4vLyBpbWFnZXNMb2FkZWQoICdib2R5JywgeyBiYWNrZ3JvdW5kOiB0cnVlIH0sIGZ1bmN0aW9uKCkge1xuLy8gICBjb25zb2xlLmxvZygnc2l0ZSBpbWFnZXMgbG9hZGVkJyk7XG4vLyB9KTsiLCJ2YXIgJCA9IHJlcXVpcmUoJ2pRdWVyeScpO1xuaW1wb3J0IHsgZGVib3VuY2UsIGlzX21vYmlsZSwgYXV0b1RleHRTaXplX1VzZU1heEhlaWdodCB9IGZyb20gJy4vdmVuZG9yL3ZlbmRvcic7XG5cbi8qKlxuICogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIExhbmRpbmcgcGFnZSBDYWxsb3V0cyB3aWRnZXQgaW1hZ2UgdG8gZXF1YWwgaGVpZ2h0cy5cbiAqL1xuZnVuY3Rpb24gbGFuZGluZ19wYWdlX2NhbGxvdXRzKCkge1xuICAgIHZhciAkaW1hZ2VfYm94ID0gJCggJy5sYW5kaW5nLXBhZ2UtY3RhIC5sYW5kaW5nLXBhZ2UtaW1hZ2UnICk7XG4gICAgdmFyICR0ZXh0X2JveCA9ICQoICcubGFuZGluZy1wYWdlLWN0YSAubGFuZGluZy1wYWdlLWNvbnRlbnQnICk7XG4gICAgdmFyICR0ZXh0X2JveCA9ICQoICcubGFuZGluZy1wYWdlLWN0YSAubGFuZGluZy1wYWdlLWNvbnRlbnQnICk7XG5cbiAgICAkaW1hZ2VfYm94Lm1hdGNoSGVpZ2h0KCB7XG4gICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICB9ICk7XG5cbiAgICAvLyBkaXNhYmxlZCBkdXJpbmcgdGhlIHJlYnJhbmRpbmcgdXBkYXRlc1xuXG4gICAgJHRleHRfYm94Lm1hdGNoSGVpZ2h0KCB7XG4gICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICB9ICk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIExhbmRpbmcgcGFnZSBDYWxsb3V0cyB3aWRnZXQgaW1hZ2UgdG8gZXF1YWwgaGVpZ2h0cy5cbiAqL1xuZnVuY3Rpb24gbGFuZGluZ19wYWdlX2NhbGxvdXRzMigpIHtcbiAgICB2YXIgJHRleHRfYm94ID0gJCggJy5sYW5kaW5nLXBhZ2UtY3RhLTIgLmxhbmRpbmctcGFnZS10ZXh0JyApO1xuICAgIHZhciAkd3JhcHBlciA9ICQoICcubGFuZGluZy1wYWdlLWN0YS0yIC5sYW5kaW5nLXBhZ2UtY29udGVudCcgKTtcbiAgICB2YXIgJHRpdGxlID0gJCggJy5sYW5kaW5nLXBhZ2UtY3RhLTIgLmxhbmRpbmctcGFnZS10aXRsZScgKTtcbiAgICB2YXIgJGJ1dHRvbiA9ICQoICcubGFuZGluZy1wYWdlLWN0YS0yIC5sYW5kaW5nLXBhZ2UtYnV0dG9uJyApO1xuXG4gICAgLy8kdGl0bGUuZml0VGV4dCgpO1xuICAgIC8vJGJ1dHRvbi5maXRUZXh0KDEuMik7XG4gICAgLy8kYnV0dG9uLmNzcyggJ2Rpc3BsYXknLCAnaW5saW5lLWJsb2NrJyApO1xuXG4gICAgJHRleHRfYm94Lm1hdGNoSGVpZ2h0KCB7XG4gICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICB9ICk7XG5cbiAgICAkd3JhcHBlci5tYXRjaEhlaWdodCgge1xuICAgICAgICBieVJvdzogZmFsc2UsXG4gICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICByZW1vdmU6IGZhbHNlXG4gICAgfSApO1xufVxuXG4vKipcbiAqIFNldCB0aGUgaGVpZ2h0IG9mIHRoZSBDYWxsLXRvLUFjdGlvbiB3aWRnZXQgaW1hZ2UgdG8gZXF1YWwgaGVpZ2h0cy5cbiAqL1xuZnVuY3Rpb24gY2FsbF90b19hY3Rpb24oKSB7XG4gICAgdmFyICRpbWFnZV9ib3ggPSAkKCAnLmNjaS1jYWxsLXRvLWFjdGlvbiAuY3RhLWltYWdlJyApO1xuXG4gICAgJGltYWdlX2JveC5tYXRjaEhlaWdodCgge1xuICAgICAgICBieVJvdzogdHJ1ZSxcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICB9ICk7XG59XG5cbi8qKlxuICogQWZ0ZXIgdXBkYXRpbmcgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIG5vdyBvZiBlcXVhbCB3aXRoIGVhY2ggb3RoZXIsIGFkZCBhIGNsYXNzIHRvIHNldCB0aGUgaW1hZ2Ugd2l0aCB0aGUgb2JqZWN0LWZpdDogY292ZXJcbiAqL1xuZnVuY3Rpb24gYWZ0ZXJfZXF1YWxfaGVpZ2h0KCkge1xuICAgICQuZm4ubWF0Y2hIZWlnaHQuX2FmdGVyVXBkYXRlID0gZnVuY3Rpb24oZXZlbnQsIGdyb3Vwcykge1xuICAgICAgICBpZiAoIGdyb3Vwcy5sZW5ndGggJiYgZ3JvdXBzWzBdLmhhc093blByb3BlcnR5KCAnZWxlbWVudHMnICkgKSB7XG4gICAgICAgICAgICB2YXIgdXBkYXRlZF9lbGVtZW50cyA9ICQoIGdyb3Vwc1swXS5lbGVtZW50cyApO1xuICAgICAgICAgICAgdXBkYXRlZF9lbGVtZW50cy5hZGRDbGFzcyggJ29iamVjdC1maXQnICk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQWx0ZXIgdGhlIHNsaWRlciBiZWhhdmlvciBvZiB0aGUgRWxlbWVudG9yIFBvc3RzIGNhcm91c2VsIHdpZGdldCBzaW5jZSB0aGUgZnJlZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gZG9lcyBub3QgbGV0XG4gKiB5b3Ugc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHBvc3RzIHRvIHNob3cgaW4gdGhlIENhcm91c2VsXG4gKi9cbmZ1bmN0aW9uIG1vZGlmeV9wb3N0c19zbGlkZXIoKSB7XG4gICAgLy8gaWRlbnRpZnkgYW4gZWxlbWVudCB0byBvYnNlcnZlXG4gICAgY29uc3QgZWxlbWVudFRvT2JzZXJ2ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHk6bm90KC5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSkgLmxhZS1wb3N0cy1jYXJvdXNlbCcgKTtcblxuICAgIGlmICggbnVsbCA9PSBlbGVtZW50VG9PYnNlcnZlICkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHNsaWRlc1RvU2Nyb2xsID0gMTtcblxuICAgIGlmICggd2luZG93LmlubmVyV2lkdGggPiA4ODUgKSB7XG4gICAgICAgIHNsaWRlc1RvU2Nyb2xsID0gMztcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBoaWRlIHRoZSBzbGlkZXIgdW50aWwgMSBwb3N0IGlzIHNob3duIHBlciBzbGlkZVxuICAgICAgICB2YXIgJHNsaWNrID0gJCggJy5sYWUtcG9zdHMtY2Fyb3VzZWwnICkuc2xpY2soICdzbGlja1NldE9wdGlvbicsJ3NsaWRlc1RvU2hvdycsIDEgKS5zbGljayggJ3NsaWNrU2V0T3B0aW9uJywnc2xpZGVzVG9TY3JvbGwnLCBzbGlkZXNUb1Njcm9sbCApLmFkZENsYXNzKCAnY3JhdGUtY3VzdG9tLXN0eWxlcycgKTtcbiAgICB9ICk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKCBlbGVtZW50VG9PYnNlcnZlLCB7IHN1YnRyZWU6IGZhbHNlLCBjaGlsZExpc3Q6IGZhbHNlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnIF0gfSApO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgcGFkZGluZyBmcm9tIHRoZSBjb2x1bW4gb2YgYSBmdWxsIHdpZHRoIHNlY3Rpb24gaWYgdGhhdCBjb2x1bW4gaXMgdGhlIG9ubHkgY29sdW1uXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZV9wYWRkaW5nX2Zyb21fb25seV9jb2x1bW4oKSB7XG4gICAgdmFyICRjb2x1bW5zID0gJCggJy5lbGVtZW50b3Itc2VjdGlvbi1mdWxsX3dpZHRoIC5lbGVtZW50b3ItY29sdW1uJyApO1xuXG4gICAgJC5lYWNoKCAkY29sdW1ucywgKCBpbmRleCwgbm9kZSApID0+IHtcbiAgICAgICAgdmFyICRjb2x1bW4gPSAkKCBub2RlICk7XG5cbiAgICAgICAgaWYgKCAhICRjb2x1bW4uc2libGluZ3MoICcuZWxlbWVudG9yLWNvbHVtbicgKS5sZW5ndGggKSB7XG4gICAgICAgICAgICAkY29sdW1uLmFkZENsYXNzKCAncmVtb3ZlLWNvbHVtbi1wYWRkaW5nJyApO1xuICAgICAgICB9XG4gICAgfSApO1xufVxuXG5cbmZ1bmN0aW9uIGdhbGFfc2VjdGlvbl9uYXZpZ2F0aW9uKCkge1xuICAgIHZhciAkbmF2ID0gJCggJy5nYWxhLW1lbnUnICk7XG5cbiAgICBpZiAoICEgJG5hdi5sZW5ndGggfHwgISAgJCgnLmdhbGEtYnV0dG9uLWRvbmF0ZSBhJyApLmxlbmd0aCApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICQoICcuZ2FsYS1tZW51IHVsJyApLmFwcGVuZCggYDxsaSBjbGFzcz1cImdhbGEtbWVudS1kb25hdGUtYnV0dG9uXCI+JHsgJCgnLmdhbGEtYnV0dG9uLWRvbmF0ZSBhJyApLnBhcmVudCgpLmh0bWwoKSB9PC9saT5gICk7XG5cbiAgICAkbmF2LmhjT2ZmY2FudmFzTmF2KCB7XG4gICAgICAgIGRpc2FibGVBdDogOTAwLFxuICAgICAgICBwdXNoQ29udGVudDogJCggJy5lbGVtZW50b3InICksXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgICAgd2lkdGg6ICQoIHdpbmRvdyApLndpZHRoKCksXG4gICAgICAgIGN1c3RvbVRvZ2dsZTogJCggJy5tb2JpbGUtbWVudS1pY29uIC5mYXMnICkubGVuZ3RoID8gJCggJy5tb2JpbGUtbWVudS1pY29uIC5mYXMnICkgOiBudWxsLFxuICAgIH0gKVxufVxuXG4vKipcbiAqIE1hdGNoIHRoZSBoZWlnaHQgb2YgdGhlIHNsaWRlciBpbWFnZXNcbiAqL1xuZnVuY3Rpb24gc2xpZGVyX2ltYWdlX3Jlc2l6ZSgpIHtcbiAgICB2YXIgJGNhcm91c2VscyA9ICQoICcuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1jYXJvdXNlbCcgKTtcblxuICAgICQuZWFjaCggJGNhcm91c2VscywgKCBpbmRleCwgbm9kZSApID0+IHtcbiAgICAgICAgdmFyICRjYXJvdXNlbCA9ICQoIG5vZGUgKTtcbiAgICAgICAgdmFyICRpbWFnZXMgPSAkY2Fyb3VzZWwuZmluZCggJy5zd2lwZXItc2xpZGUtaW1hZ2UnICk7XG5cbiAgICAgICAgJGltYWdlcy5tYXRjaEhlaWdodCgge1xuICAgICAgICAgICAgYnlSb3c6IHRydWUsXG4gICAgICAgICAgICBwcm9wZXJ0eTogJ2hlaWdodCcsXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICByZW1vdmU6IGZhbHNlXG4gICAgICAgIH0gKTtcbiAgICB9ICk7XG59XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBVUkwgZm9yIHRoZSBwbGFubmVkIGdpdmluZyBidXR0b24gd2hlbiBvbiBhIG1vYmlsZSBkZXZpY2VcbiAqL1xuZnVuY3Rpb24gcGxhbm5lZF9naXZpbmdfYnV0dG9uX3JlZGlyZWN0KCkge1xuICAgIHZhciBidXR0b24gPSAkKCAnI3BsYW5uZWQtZ2l2aW5nIC5lbGVtZW50b3ItYnV0dG9uJyApO1xuXG4gICAgaWYgKCAhIGJ1dHRvbi5sZW5ndGggKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcmVndWxhcl9saW5rID0gYnV0dG9uLmF0dHIoICdocmVmJyApO1xuICAgIHZhciBtb2JpbGVfbGluayA9ICdodHRwczovL20tY2NpLmdpZnRsZWdhY3kuY29tLyc7XG5cbiAgICAkKCB3aW5kb3cgKS5vbiggJ3Jlc2l6ZScsIGRlYm91bmNlKCAoICkgPT4ge1xuICAgICAgICBpZiAoIGlzX21vYmlsZSgpICkge1xuICAgICAgICAgICAgYnV0dG9uLmF0dHIoICdocmVmJywgbW9iaWxlX2xpbmsgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1dHRvbi5hdHRyKCAnaHJlZicsIHJlZ3VsYXJfbGluayApO1xuICAgICAgICB9XG4gICAgfSwgMjAwICkgKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgdGhlIGNsaWNrcyBvbiB0aGUgdGFiIGxpc3QgdGFiIGl0ZW1zXG4gKiBAcGFyYW0gZXZlbnRcbiAqIEBwYXJhbSB0YWJzXG4gKiBAcGFyYW0gdGFiQ29udGVudFxuICovXG5mdW5jdGlvbiB0YWJMaXN0U2hvd0l0ZW0oZXZlbnQsIHRhYnMsIHRhYkNvbnRlbnQpIHtcbiAgICB2YXIgaWQgPSBldmVudC5jdXJyZW50VGFyZ2V0LmRhdGFzZXQuaWQ7XG5cbiAgICAvLyBVbmhpZ2hsaWdodCBhbGwgdGFic1xuICAgIHRhYnMuZm9yRWFjaCggZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgfSk7XG5cbiAgICAvLyBIaWdobGlnaHQgdGhlIGNsaWNrZWQgdGFiXG4gICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG5cbiAgICAvLyBVbmhpZ2hsaWdodCBhbGwgdGhlIHRhYiBjb250ZW50c1xuICAgIHRhYkNvbnRlbnQuZm9yRWFjaCggZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpe1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgICB9KTtcblxuICAgIC8vIEhpZ2hsaWdodCB0aGUgY2xpY2tlZCB0YWIgY29udGVudFxuICAgIHZhciBzZWxlY3RvciA9ICdsaS50YWItbGlzdC1jb250ZW50LWl0ZW1bZGF0YS1pZD1cIicgKyBpZCArICdcIl0nO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTtcbiAgICAkKCBkb2N1bWVudCApLnRyaWdnZXIoICd0YWJsaXN0LWNoYW5nZScsIFsgJ3Nob3cnLCBldmVudC5jdXJyZW50VGFyZ2V0LCBpZCBdICk7XG59XG5cbi8qKlxuICogQWRkIGV2ZW50IGxpc3RlbmVycyBmb3IgdGhlIHRhYiBsaXN0XG4gKi9cbmZ1bmN0aW9uIHRhYkxpc3QoKSB7XG4gICAgdmFyIHRhYnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWItbGlzdC10YWItaXRlbScpO1xuXG4gICAgaWYgKCB0eXBlb2YodGFicykgPT09ICd1bmRlZmluZWQnIHx8IHRhYnMgPT09IG51bGwgfHwgdGFicy5sZW5ndGggPT09IDAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGFiQ29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYi1saXN0LWNvbnRlbnQtaXRlbScpO1xuXG4gICAgdGFicyA9IEFycmF5LmZyb20odGFicyk7XG4gICAgdGFiQ29udGVudCA9IEFycmF5LmZyb20odGFiQ29udGVudCk7XG5cbiAgICB0YWJzLmZvckVhY2goIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oZXZlbnQpIHsgdGFiTGlzdFNob3dJdGVtKGV2ZW50LCB0YWJzLCB0YWJDb250ZW50KSB9LCB0cnVlICk7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldmVudCkgeyB0YWJMaXN0U2hvd0l0ZW0oZXZlbnQsIHRhYnMsIHRhYkNvbnRlbnQpIH0sIHRydWUgKTtcbiAgICB9KTtcblxuICAgIC8vIFRyaWdnZXIgY2xpY2sgb24gZmlyc3QgaXRlbVxuICAgIHRhYnNbMF0uY2xpY2soKTtcblxuICAgIHZhciAkdGFiX2NvbnRlbnQgPSAkKCAnLnRhYi1saXN0LWNvbnRlbnQtaXRlbSBpbWcsIC50YWItbGlzdC1jb250ZW50LWl0ZW0gcGljdHVyZSwgLnRhYi1saXN0LWNvbnRlbnQtaXRlbSB2aWRlbywgLnRhYi1saXN0LWNvbnRlbnQtaXRlbSBpZnJhbWUnICk7XG4gICAgdmFyICR0YWJfaXRlbSA9ICQoICcudGFiLWxpc3QtY29udGVudC1pdGVtJyApO1xuXG4gICAgJCggd2luZG93ICkucmVhZHkoIGZ1bmN0aW9uKCkge1xuICAgICAgICAkdGFiX2NvbnRlbnQubWF0Y2hIZWlnaHQoIHtcbiAgICAgICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICAgICAgfSApO1xuXG4gICAgICAgIC8vIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBpZnJhbWVkIFlvdVR1YmUgdmlkZW8gdG8gYmUgdGhlIHNhbWUgaGVpZ2h0IGFzIG9uZSBvZiB0aGUgaW1hZ2UgdGFicyBzbyB0aGF0IHRoZSB0YWIgY29udGVudFxuICAgICAgICAvLyBpcyB2aWV3YWJsZSBvbiBtb2JpbGVcbiAgICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA4OTlweCknKTtcblxuICAgICAgICAvKmlmICggbWVkaWFRdWVyeS5tYXRjaGVzICkge1xuICAgICAgICAgICAgdmFyICR0YWJfaW1hZ2UgPSAkKCAnLnRhYi1saXN0LWZpZ3VyZS5pbWFnZSAudGFiLWltYWdlJyApO1xuICAgICAgICAgICAgdmFyIGxhcmdlc3RfaW1hZ2UgPSAwO1xuICAgICAgICAgICAgJC5lYWNoKCAkdGFiX2ltYWdlLCBmdW5jdGlvbiggaW5kZXgsIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAkdGFiX2ltYWdlLm91dGVySGVpZ2h0KCkgPiBsYXJnZXN0X2ltYWdlICkge1xuICAgICAgICAgICAgICAgICAgICBsYXJnZXN0X2ltYWdlID0gJHRhYl9pbWFnZS5vdXRlckhlaWdodCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gKTtcblxuICAgICAgICAgICAgaWYgKCBsYXJnZXN0X2ltYWdlID4gMzUwICkge1xuICAgICAgICAgICAgICAgICQoICcudGFiLWxpc3QtZmlndXJlLnZpZGVvJyApLmhlaWdodCggbGFyZ2VzdF9pbWFnZSApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKCAnLnRhYi1saXN0LWZpZ3VyZS52aWRlbycgKS5oZWlnaHQoIDQwMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9Ki9cblxuICAgICAgICAvKlxuICAgICAgICAkdGFiX2l0ZW0ubWF0Y2hIZWlnaHQoIHtcbiAgICAgICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICAgICAgfSApOyovXG4gICAgfSApO1xufVxuXG5mdW5jdGlvbiB0YWJTY3JvbGwoKSB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA4OTlweCknKTtcblxuICAgICQoIGRvY3VtZW50ICkub24oICd0YWJsaXN0LWNoYW5nZScsIGZ1bmN0aW9uKCBldmVudCwgZXZlbnRfdHlwZSwgdGFiLCB0YWJfaWQgKSB7XG4gICAgICAgIGlmICggbWVkaWFRdWVyeS5tYXRjaGVzICkge1xuICAgICAgICAgICAgdmFyIHZpc2libGVfdGFiID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy50YWItbGlzdC1jb250ZW50LWl0ZW0uc2hvdycgKTtcblxuICAgICAgICAgICAgaWYgKCBudWxsICE9PSB2aXNpYmxlX3RhYiApIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlX3RhYi5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IFwic3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lOiBcInN0YXJ0XCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gKTtcbn1cblxuZnVuY3Rpb24gdGFiVmlkZW9zKCkge1xuICAgIHZhciAkdmlkZW9zID0gJCggJy50YWItdmlkZW8tcGxheWVyJyApO1xuICAgIHZhciB2aWRlb19saXN0ID0gW107XG5cbiAgICB2YXIgJGlmcmFtZWRfdmlkZW9zID0gICQoICcudGFiLWlmcmFtZS1lbWJlZCcgKTtcbiAgICBpZiAoICRpZnJhbWVkX3ZpZGVvcy5sZW5ndGggKSB7XG4gICAgICAgIGlmICggdHlwZW9mIFBseXIgPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgUGx5ciBjbGFzcyBleGlzdHMgYW5kIGNhbiBiZSBpbnN0YW50aXRhdGVkIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gZGVsZXRlIHRoZSBkZWZhdWx0IFlvdVR1YmUgZW1iZWRzXG4gICAgICAgICAgICAkaWZyYW1lZF92aWRlb3MucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoICR2aWRlb3MubGVuZ3RoICkge1xuICAgICAgICAkLmVhY2goICR2aWRlb3MsIGZ1bmN0aW9uKCBpbmRleCwgZWxlbWVudCApIHtcbiAgICAgICAgICAgIHZhciAkdmlkZW9fY29udGFpbmVyID0gJCggZWxlbWVudCApO1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gJ2h0bWw1JztcblxuICAgICAgICAgICAgaWYgKCAkdmlkZW9fY29udGFpbmVyLmRhdGEoICdwbHlyLXByb3ZpZGVyJyApICkge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gJHZpZGVvX2NvbnRhaW5lci5kYXRhKCAncGx5ci1wcm92aWRlcicgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBseXJfcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIG11dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZvbHVtZTogMCxcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ29udGV4dE1lbnU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhpZGVDb250cm9sczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGlja1RvUGxheTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250cm9sczogWyAncGxheS1sYXJnZScgXSxcbiAgICAgICAgICAgICAgICBsb29wOiB7IGFjdGl2ZTogdHJ1ZSB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoICd5b3V0dWJlJyA9PT0gcHJvdmlkZXIgKSB7XG4gICAgICAgICAgICAgICAgcGx5cl9wYXJhbXMueW91dHViZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICBzaG93aW5mbzogMCxcbiAgICAgICAgICAgICAgICAgICAgZWN2ZXI6IDIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiAwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCAndmltZW8nID09PSBwcm92aWRlciApIHtcbiAgICAgICAgICAgICAgICBwbHlyX3BhcmFtcy52aW1lbyA9e1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wYXVzZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHZpZGVvX3BsYXllciA9IG5ldyBQbHlyKCBgIyR7ZWxlbWVudC5pZH1gLCBwbHlyX3BhcmFtcyAgKTtcbiAgICAgICAgICAgICAgICB2aWRlb19wbGF5ZXIub24oICdyZWFkeScsIGZ1bmN0aW9uKCBldmVudCApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllciA9IGV2ZW50LmRldGFpbC5wbHlyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGNvbnRhaW5lciA9ICQoIHBsYXllci5lbGVtZW50cy5jb250YWluZXIgKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyICR0YWJfY29udGVudCA9ICRjb250YWluZXIuY2xvc2VzdCggJy50YWItbGlzdC1jb250ZW50LWl0ZW0nICk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHBsYXllciBpcyBjdXJyZW50bHkgdmlzaWJsZSBvbiBwYWdlIGxvYWQsIHRoZW4gYXV0b3BsYXkgdGhlIHZpZGVvXG4gICAgICAgICAgICAgICAgICAgIGlmICggJHRhYl9jb250ZW50LmlzKCAnOnZpc2libGUnICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIudm9sdW1lID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllci5tdXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIucGxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSApO1xuXG4gICAgICAgICAgICAgICAgdmlkZW9fbGlzdC5wdXNoKCB2aWRlb19wbGF5ZXIgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHZpZGVvX2VsZW1lbnQgPSAkdmlkZW9fY29udGFpbmVyLmZpbmQoICd2aWRlbycgKTtcblxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgPGJvZHk+IHRhZyBmcm9tIGFyb3VuZCA8dmlkZW8+IGVsZW1lbnRzLiBUaGlzIGlzIGR1ZSB0byB0aGUgc2V0X2lubmVyX2h0bWwgZnVuY3Rpb24gY2FsbGVkIGJ5IERPTURPQ1VNRU5UXG4gICAgICAgICAgICAgICAgaWYgKCAkdmlkZW9fZWxlbWVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgICAgICR2aWRlb19jb250YWluZXIuaHRtbCggJHZpZGVvX2VsZW1lbnQuZ2V0KCAwICkub3V0ZXJIVE1MICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKTtcblxuICAgICAgICAkKCBkb2N1bWVudCApLm9uKCAndGFibGlzdC1jaGFuZ2UnLCBmdW5jdGlvbiggZXZlbnQsIGV2ZW50X3R5cGUsIHRhYiwgdGFiX2lkICkge1xuXG4gICAgICAgICAgICBpZiAoIHZpZGVvX2xpc3QubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSB0YWIgaXMgY2hhbmdlZCwgcGF1c2UgYWxsIHZpZGVvcyBleGNlcHQgZm9yIHRoZSB2aWRlbyBpbiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCB0YWJcbiAgICAgICAgICAgICAgICB2aWRlb19saXN0LmZvckVhY2goIGZ1bmN0aW9uKCB2aWRlb19saXN0X3BsYXllciApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICR0YWJfY29udGVudCA9ICQoIHZpZGVvX2xpc3RfcGxheWVyLmVsZW1lbnRzLmNvbnRhaW5lciApLmNsb3Nlc3QoICcudGFiLWxpc3QtY29udGVudC1pdGVtJyApO1xuXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvX2xpc3RfcGxheWVyLnZvbHVtZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvX2xpc3RfcGxheWVyLm11dGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoICR0YWJfY29udGVudC5sZW5ndGggJiYgdGFiX2lkID09PSAkdGFiX2NvbnRlbnQuZGF0YSggJ2lkJyApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fbGlzdF9wbGF5ZXIucGxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fbGlzdF9wbGF5ZXIucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgUGx5ciBjb3VsZCBub3QgYmUgbG9hZGVkIGluIGEgYnJvd3NlciwgdGhlbiBhc3N1bWUgd2UgYXJlIGRlYWxpbmcgd2l0aCBIVE1MNSB2aWRlb3MgYW5kIHBsYXkgYW5kIHBhdXNlIHRoZSB2aWRlb3NcbiAgICAgICAgICAgICAgICB2YXIgdmlkZW9zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYi1saXN0LWNvbnRlbnQgdmlkZW8nICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIHZpZGVvcyAhPT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9zLmZvckVhY2goICggdmlkZW8sIGluZGV4ICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyICR2aWRlbyA9ICQoIHZpZGVvICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkdGFiX2NvbnRlbnQgPSAkdmlkZW8uY2xvc2VzdCggJy50YWItbGlzdC1jb250ZW50LWl0ZW0nICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRhYl9jb250ZW50Lmxlbmd0aCAmJiB0YWJfaWQgPT09ICR0YWJfY29udGVudC5kYXRhKCAnaWQnICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3BhdXNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYWNjZXNzaWJsZVBvc3RTbGlkZXIoKSB7XG4gICAgdmFyICRjYXJvdXNlbHMgPSAkKCAnLmFjY2Vzc2libGUtY2Fyb3VzZWwnICk7XG5cbiAgICBpZiAoICEgJGNhcm91c2Vscy5sZW5ndGggKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAkLmVhY2goICRjYXJvdXNlbHMsIGZ1bmN0aW9uICggaW5kZXgsIGVsZW1lbnQgKSB7XG4gICAgICAgIHZhciAkY2Fyb3VzZWwgPSAkKCBlbGVtZW50ICk7XG4gICAgICAgIHZhciB2aXNpYmxlID0gJGNhcm91c2VsLmRhdGEoICd2aXNpYmxlJyApO1xuICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBbXTtcblxuICAgICAgICBpZiAoICEgJC5pc051bWVyaWMoIHZpc2libGUgKSApIHtcbiAgICAgICAgICAgIHZpc2libGUgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB2aXNpYmxlID4gMSApIHtcbiAgICAgICAgICAgIGJyZWFrcG9pbnRzID0gW3tcbiAgICAgICAgICAgICAgICBicmVha3BvaW50OiA3NjgsXG4gICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAyLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYnJlYWtwb2ludDogNDgwLFxuICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfVxuXG4gICAgICAgICRjYXJvdXNlbC5zbGljaygge1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB2aXNpYmxlLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRydWUsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogdmlzaWJsZSxcbiAgICAgICAgICAgIHJlc3BvbnNpdmU6IGJyZWFrcG9pbnRzLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgfSApO1xuXG4gICAgICAgIHZhciAkY2Fyb3VzZWxfaW1hZ2UgPSAkKCAnLmFjY2Vzc2libGUtY2Fyb3VzZWwtcG9zdCAud3AtcG9zdC1pbWFnZScgKTtcblxuICAgICAgICAkY2Fyb3VzZWxfaW1hZ2UubWF0Y2hIZWlnaHQoIHtcbiAgICAgICAgICAgIGJ5Um93OiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgICAgIHJlbW92ZTogZmFsc2VcbiAgICAgICAgfSApO1xuICAgIH0gKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZG9jdW1lbnRMb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgcmVtb3ZlX3BhZGRpbmdfZnJvbV9vbmx5X2NvbHVtbigpO1xuICAgIGFmdGVyX2VxdWFsX2hlaWdodCgpO1xuICAgIGxhbmRpbmdfcGFnZV9jYWxsb3V0cygpO1xuICAgIGxhbmRpbmdfcGFnZV9jYWxsb3V0czIoKTtcbiAgICBjYWxsX3RvX2FjdGlvbigpO1xuICAgIG1vZGlmeV9wb3N0c19zbGlkZXIoKTtcbiAgICBzbGlkZXJfaW1hZ2VfcmVzaXplKCk7XG4gICAgZ2FsYV9zZWN0aW9uX25hdmlnYXRpb24oKTtcbiAgICBwbGFubmVkX2dpdmluZ19idXR0b25fcmVkaXJlY3QoKTtcbiAgICB0YWJMaXN0KCk7XG4gICAgdGFiVmlkZW9zKCk7XG4gICAgdGFiU2Nyb2xsKCk7XG4gICAgYWNjZXNzaWJsZVBvc3RTbGlkZXIoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMud2luZG93TG9hZCA9IGZ1bmN0aW9uKCkge1xuXG59IiwiLyoqXG4gKiBUaGlyZC1wYXJ0eSBmdW5jdGlvbnMgZnJvbSB2YXJpb3VzIHBsYWNlc1xuICovXG5cbmZ1bmN0aW9uIGRlYm91bmNlKCBmdW5jLCB3YWl0LCBpbW1lZGlhdGUgKSB7XG4gICAgdmFyIHRpbWVvdXQ7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7XG4gICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApO1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTtcbiAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGlzX21vYmlsZSgpIHtcbiAgICBsZXQgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShcIm9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweClcIikubWF0Y2hlcztcblxuICAgIHJldHVybiBpc01vYmlsZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZGVib3VuY2UsXG4gICAgaXNfbW9iaWxlXG59OyJdfQ=="}