1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ 2"use strict"; 3 4Object.defineProperty(exports, "__esModule", { 5 value: true 6}); 7 8function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 9 10var renderTweet = function renderTweet(altTwitterEmbedsAPI, showMetrics, data, container) { 11 var tweetText = data.text, 12 tweetUrl = "https://twitter.com/" + data.users[0].username + "/status/" + data.id, 13 entities = null, 14 verifiedBadge = data.users[0].verified ? '<svg role="img" aria-label="Verified user" class="tweet-verified-user-badge" viewBox="0 0 24 24" aria-label="Verified account" class="r-13gxpu9 r-4qtqp9 r-yyyyoo r-1xvli5t r-9cviqr r-dnmrzs r-bnwqim r-1plcrui r-lrvibr"><g><path d="M22.5 12.5c0-1.58-.875-2.95-2.148-3.6.154-.435.238-.905.238-1.4 0-2.21-1.71-3.998-3.818-3.998-.47 0-.92.084-1.336.25C14.818 2.415 13.51 1.5 12 1.5s-2.816.917-3.437 2.25c-.415-.165-.866-.25-1.336-.25-2.11 0-3.818 1.79-3.818 4 0 .494.083.964.237 1.4-1.272.65-2.147 2.018-2.147 3.6 0 1.495.782 2.798 1.942 3.486-.02.17-.032.34-.032.514 0 2.21 1.708 4 3.818 4 .47 0 .92-.086 1.335-.25.62 1.334 1.926 2.25 3.437 2.25 1.512 0 2.818-.916 3.437-2.25.415.163.865.248 1.336.248 2.11 0 3.818-1.79 3.818-4 0-.174-.012-.344-.033-.513 1.158-.687 1.943-1.99 1.943-3.484zm-6.616-3.334l-4.334 6.5c-.145.217-.382.334-.625.334-.143 0-.288-.04-.416-.126l-.115-.094-2.415-2.415c-.293-.293-.293-.768 0-1.06s.768-.294 1.06 0l1.77 1.767 3.825-5.74c.23-.345.696-.436 1.04-.207.346.23.44.696.21 1.04z"></path></g></svg>' : "", 15 renderedTweetHTML = "<div class=\"card w-100\">\n <div class=\"tweet-body-wrapper card-body pt-4\">\n <div class=\"card-text\">\n <div class=\"row no-gutters mb-1\">"; 16 if (data.users[0].profile_image_url) { 17 renderedTweetHTML += "<div class=\"col-2 col-sm-1 col-md-1\">\n <a href=\"https://twitter.com/" + data.users[0].username + "\" class=\"text-decoration-none\"><img title=\"Profile image\" alt=\"Profile image of @" + data.users[0].username + "\" loading=\"lazy\" class=\"rounded-circle border\" width=\"48\" height=\"48\" src=\"" + data.users[0].profile_image_url + "\"></a>\n </div>"; 18 } 19 renderedTweetHTML += "<div class=\"tweet-author " + (data.users[0].profile_image_url ? "col-9 col-sm-10 col-md-10 pl-2" : "col-11 col-sm-11 col-md-11") + " pb-3\">\n <p class=\"font-weight-bold mb-0 mt-0\"><a class=\"text-dark text-decoration-none\" href=\"https://twitter.com/" + data.users[0].username + "\">" + data.users[0].name + verifiedBadge + "</a></p>\n <p class=\"mb-1 mb-md-2 mt-0\"><a class=\"text-muted text-decoration-none\" href=\"https://twitter.com/" + data.users[0].username + "\">@" + data.users[0].username + "</a></p>\n </div>\n <div class=\"col-1 text-right\">\n <a href=\"" + tweetUrl + "\" target=\"_blank\"><svg role=\"img\" aria-label=\"Twitter logo\" style=\"width: 24px;\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M512 97.248c-19.04 8.352-39.328 13.888-60.48 16.576 21.76-12.992 38.368-33.408 46.176-58.016-20.288 12.096-42.688 20.64-66.56 25.408C411.872 60.704 384.416 48 354.464 48c-58.112 0-104.896 47.168-104.896 104.992 0 8.32.704 16.32 2.432 23.936-87.264-4.256-164.48-46.08-216.352-109.792-9.056 15.712-14.368 33.696-14.368 53.056 0 36.352 18.72 68.576 46.624 87.232-16.864-.32-33.408-5.216-47.424-12.928v1.152c0 51.008 36.384 93.376 84.096 103.136-8.544 2.336-17.856 3.456-27.52 3.456-6.72 0-13.504-.384-19.872-1.792 13.6 41.568 52.192 72.128 98.08 73.12-35.712 27.936-81.056 44.768-130.144 44.768-8.608 0-16.864-.384-25.12-1.44C46.496 446.88 101.6 464 161.024 464c193.152 0 298.752-160 298.752-298.688 0-4.64-.16-9.12-.384-13.568 20.832-14.784 38.336-33.248 52.608-54.496z\" fill=\"#03a9f4\"/></svg></a>\n </div>\n </div>\n <div class=\"tweet-body\">"; 20 if (data.entities) { 21 if (data.entities.urls) {
22 data.entities.urls.forEach(function (url) { 23 if (url.display_url.indexOf("pic.twitter.com") === -1) { 24 tweetText = tweetText.replace(RegExp(url.url, "ig"), "<a href=\"" + url.expanded_url + "\" target=\"_blank\">" + url.display_url + "</a>"); 25 } else { 26 tweetText = tweetText.replace(url.url, ""); 27 } 28 }); 29 } 30 if (data.entities.mentions) { 31 data.entities.mentions.forEach(function (mention) { 32 tweetText = tweetText.replace(RegExp("@" + mention.username, "ig"), "<a href=\"https://twitter.com/" + mention.username + "\" target=\"_blank\">@" + mention.username + "</a>"); 33 }); 34 } 35 if (data.entities.hashtags) { 36 data.entities.hashtags.forEach(function (hashtag) { 37 tweetText = tweetText.replace(RegExp("#" + hashtag.tag, "ig"), "<a href=\"https://twitter.com/hashtag/" + hashtag.tag + "\" target=\"_blank\">#" + hashtag.tag + "</a>"); 38 }); 39 } 40 } 41 if (data.media && data.media.length) { 42 tweetText += "<div data-media-length=\"" + data.media.length + "\" class=\"tweet-media row mt-3 no-gutters\">"; 43 data.media.forEach(function (media, index) { 44 if (data.media.length === 1) { 45 tweetText += "<div data-media-type=\"" + media.type + "\" class=\"text-center col-sm-12 col-md-12 col-lg-12\">"; 46 } else if (data.media.length === 3) { 47 if (index === 2) { 48 tweetText += "<div data-media-type=\"" + media.type + "\" class=\"text-center col-sm-12 col-md-12 col-lg-12\">"; 49 } else { 50 tweetText += "<div data-media-type=\"" + media.type + "\" class=\"text-center col-sm-12 col-md-6 col-lg-6\">"; 51 } 52 } else if (data.media.length > 1 && data.media.length < 5) { 53 tweetText += "<div data-media-type=\"" + media.type + "\" class=\"text-center col-sm-12 col-md-6 col-lg-6\">"; 54 } else { 55 tweetText += "<div data-media-type=\"" + media.type + "\" class=\"text-center col-sm-12 col-md-3 col-lg-3\">"; 56 } 57 if (media.type === "animated_gif") { 58 tweetText += "<video class=\"w-100 mt-0\" controls loop><source src=\"" + media.preview_image_url.replace("pbs.twimg.com/tweet_video_thumb", "video.twimg.com/tweet_video").replace(".jpg", ".mp4").replace(".png", ".mp4") + "\" type=\"video/mp4\"></video>"; 59 } else if (media.type === "video") { 60 if (media.variants) { 61 var variant = null; 62 for (var _index = media.variants.length - 1; _index >= 0; _index--) { 63 var element = media.variants[_index]; 64 if (element.content_type == "video/mp4") { 65 variant = element; 66 break; 67 } 68 } 69 70 tweetText += "<video class=\"w-100 mt-0\" poster=" + media.preview_image_url + " controls loop><source src=\"" + variant.url + "\" type=\"" + variant.content_type + "\"></video>"; 71 } else { 72 tweetText += "<a class=\"tweet-video-placeholder\" href=\"" + tweetUrl + "\" target=\"_blank\"><img alt=\"" + (media.alt_text || '') + "\" loading=\"lazy\" width=\"" + media.width + "\" height=\"" + media.height + "\" class=\"w-100 rounded border\" src=\"" + media.preview_image_url + "\"></a>"; 73 } 74 } else if (media.type === "photo") { 75 tweetText += "<a href=\"" + tweetUrl + "\" target=\"_blank\"><img alt=\"" + (media.alt_text || '') + "\" loading=\"lazy\" width=\"" + media.width + "\" height=\"" + media.height + "\" class=\"w-100 rounded border\" src=\"" + media.url + "\"></a>"; 76 } 77 tweetText += "</div>"; 78 }); 79 80 tweetText += "</div>"; 81 } 82 83 if (data.polls && data.polls.length) { 84 tweetText += '<div class="mt-0">'; 85 86 data.polls.forEach(function (poll) { 87 if (poll.options && poll.options.length) { 88 var voteCounts = poll.options.map(function (option) { 89 return option.votes; 90 }); 91 92 var voteCountMax = Math.max.apply(Math, _toConsumableArray(voteCounts)); 93 var votesTotal = voteCounts.reduce(function (total, num) { 94 return total + num; 95 }); 96 97 tweetText += "<div id=\"poll-" + poll.id + "\" class=\"row\" role=\"list\">"; 98 99 poll.options.forEach(function (option, index) { 100 var votesPortion = option.votes / votesTotal * 100; 101 tweetText += "\n <div class=\"tweet-poll-results col-9\" style=\"height:60px;\" role=\"listitem\">\n <div class=\"progress position-relative mt-n4 " + (option.votes === voteCountMax ? " border border-primary " : "") + "\" style=\"height:30px;\">\n <div class=\"progress-bar\"\n style=\"width: " + votesPortion + "%\"\n ></div>
101\n <span id=\"poll-" + poll.id + "-option-" + (index + 1) + "\" class=\"pl-2 d-flex position-absolute w-100\" style=\"font-size: 1rem; line-height: 30px;\">" + option.label + "</span>\n </div>\n </div>\n <div class=\"col-3 mt-n4 text-right\" style=\"height:60px;\">\n <span class=\"w-100\">" + Math.round(option.votes / votesTotal * 100) + "%</span>\n </div>"; 102 }); 103 104 tweetText += "<div class=\"col-12 mt-3 d-table\">\n <p class=\"text-muted\">" + votesTotal.toLocaleString() + " votes</p>\n </div>\n </div>"; 105 } 106 }); 107 108 tweetText += "</div>"; 109 } 110 111 var tweetDate = new Date(data.created_at).toLocaleDateString(navigator.language, { month: "long", year: "numeric", day: "numeric" }); 112 113 renderedTweetHTML += tweetText + "</div>\n </div>\n </div>\n <div class=\"card-footer pb-4\">"; 114 115 if (!container) { 116 if (showMetrics && data.public_metrics) { 117 renderedTweetHTML += "\n <span class=\"tweet-icon\" role=\"img\" aria-label=\"Retweets\">\uD83D\uDD01</span><a class=\"text-muted\" href=\"" + tweetUrl + "\" target=\"_blank\">" + data.public_metrics.retweet_count.toLocaleString() + "</a> |\n <span class=\"tweet-icon\"role=\"img\" aria-label=\"Likes\">\u2764\uFE0F</span> <a class=\"text-muted\" href=\"" + tweetUrl + "\" target=\"_blank\">" + data.public_metrics.like_count.toLocaleString() + "</a> | "; 118 } 119 120 renderedTweetHTML += "<a class=\"text-muted\" href=\"" + tweetUrl + "\" target=\"_blank\">" + tweetDate + "</a>"; 121 } 122 123 renderedTweetHTML += "</div></div>"; 124 125 var renderedTweet = document.createElement("div"); 126 renderedTweet.className = "twitter-tweet twitter-tweet-rendered w-100"; 127 renderedTweet.innerHTML = renderedTweetHTML; 128 129 var lastUrl = ""; 130 131 if (data.entities && data.entities.urls && data.entities.urls.length) { 132 lastUrl = data.entities.urls[data.entities.urls.length - 1]; 133 } 134 135 if (data.media && data.media.length || data.extended_entities && data.extended_entities.media && data.extended_entities.media.length) { 136 lastUrl = ""; 137 } 138 139 if (lastUrl) { 140 renderedTweet.dataset.urlAttachment = lastUrl.expanded_url; 141 renderedTweet.dataset.urlAttachmentProcessed = "false"; 142 } 143 if (container) { 144 var tweetContainer = container.querySelector(".tweet-body a:last-of-type"); 145 if (tweetContainer) { 146 tweetContainer.parentNode.replaceChild(renderedTweet, tweetContainer); 147 } 148 } else { 149 var tweet = document.querySelector("[data-tweet-id=\"" + data.id + "\"]"); 150 if (tweet) { 151 tweet.parentNode.replaceChild(renderedTweet, tweet); 152 } 153 } 154}; 155 156exports.renderTweet = renderTweet; 157 158},{}]},{},[1]) 159//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvc2NyaXB0cy9yZW5kZXJUd2VldC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0FDQUEsSUFBTSxjQUFjLFNBQWQsV0FBYyxDQUFDLG1CQUFELEVBQXNCLFdBQXRCLEVBQW1DLElBQW5DLEVBQXlDLFNBQXpDLEVBQXVEO0FBQ3ZFLE1BQUksWUFBWSxLQUFLLElBQXJCO0FBQUEsTUFDRSxvQ0FBa0MsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLFFBQWhELGdCQUFtRSxLQUFLLEVBRDFFO0FBQUEsTUFFRSxXQUFXLElBRmI7QUFBQSxNQUdFLGdCQUFnQixLQUFLLEtBQUwsQ0FBVyxDQUFYLEVBQWMsUUFBZCxHQUNaLGtnQ0FEWSxHQUVaLEVBTE47QUFBQSxNQU1FLHFPQU5GO0FBVUEsTUFBSSxLQUFLLEtBQUwsQ0FBVyxDQUFYLEVBQWMsaUJBQWxCLEVBQXFDO0FBQ25DLDJIQUMrQyxLQUFLLEtBQUwsQ0FBVyxDQUFYLEVBQWMsUUFEN0QsK0ZBQ3lKLEtBQUssS0FBTCxDQUFXLENBQVgsRUFBYyxRQUR2Syw2RkFDNlAsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLGlCQUQzUTtBQUdEO0FBQ0QsdURBQ0UsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLGlCQUFkLEdBQ0ksZ0NBREosR0FFSSw0QkFITixvSkFNZ0IsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLFFBTjlCLFdBT21CLEtBQUssS0FBTCxDQUFXLENBQVgsRUFBYyxJQVBqQyxHQU93QyxhQVB4QywySUFTZ0IsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLFFBVDlCLFlBVW9CLEtBQUssS0FBTCxDQUFXLENBQVgsRUFBYyxRQVZsQyxvSEFheUIsUUFiekI7QUFpQkEsTUFBSSxLQUFLLFFBQVQsRUFBbUI7QUFDakIsUUFBSSxLQUFLLFFBQUwsQ0FBYyxJQUFsQixFQUF3QjtB
159QUN0QixXQUFLLFFBQUwsQ0FBYyxJQUFkLENBQW1CLE9BQW5CLENBQTJCLFVBQUMsR0FBRCxFQUFTO0FBQ2xDLFlBQUksSUFBSSxXQUFKLENBQWdCLE9BQWhCLENBQXdCLGlCQUF4QixNQUErQyxDQUFDLENBQXBELEVBQXVEO0FBQ3JELHNCQUFZLFVBQVUsT0FBVixDQUNWLE9BQU8sSUFBSSxHQUFYLEVBQWdCLElBQWhCLENBRFUsaUJBRUUsSUFBSSxZQUZOLDZCQUV1QyxJQUFJLFdBRjNDLFVBQVo7QUFJRCxTQUxELE1BS087QUFDTCxzQkFBWSxVQUFVLE9BQVYsQ0FBa0IsSUFBSSxHQUF0QixFQUEyQixFQUEzQixDQUFaO0FBQ0Q7QUFDRixPQVREO0FBVUQ7QUFDRCxRQUFJLEtBQUssUUFBTCxDQUFjLFFBQWxCLEVBQTRCO0FBQzFCLFdBQUssUUFBTCxDQUFjLFFBQWQsQ0FBdUIsT0FBdkIsQ0FBK0IsVUFBQyxPQUFELEVBQWE7QUFDMUMsb0JBQVksVUFBVSxPQUFWLENBQ1YsYUFBVyxRQUFRLFFBQW5CLEVBQStCLElBQS9CLENBRFUscUNBRXNCLFFBQVEsUUFGOUIsOEJBRTRELFFBQVEsUUFGcEUsVUFBWjtBQUlELE9BTEQ7QUFNRDtBQUNELFFBQUksS0FBSyxRQUFMLENBQWMsUUFBbEIsRUFBNEI7QUFDMUIsV0FBSyxRQUFMLENBQWMsUUFBZCxDQUF1QixPQUF2QixDQUErQixVQUFDLE9BQUQsRUFBYTtBQUMxQyxvQkFBWSxVQUFVLE9BQVYsQ0FDVixhQUFXLFFBQVEsR0FBbkIsRUFBMEIsSUFBMUIsQ0FEVSw2Q0FFOEIsUUFBUSxHQUZ0Qyw4QkFFK0QsUUFBUSxHQUZ2RSxVQUFaO0FBSUQsT0FMRDtBQU1EO0FBQ0Y7QUFDRCxNQUFJLEtBQUssS0FBTCxJQUFjLEtBQUssS0FBTCxDQUFXLE1BQTdCLEVBQXFDO0FBQ25DLCtDQUF3QyxLQUFLLEtBQUwsQ0FBVyxNQUFuRDtBQUNBLFNBQUssS0FBTCxDQUFXLE9BQVgsQ0FBbUIsVUFBQyxLQUFELEVBQVEsS0FBUixFQUFrQjtBQUNuQyxVQUFJL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VLEVBQVY7QUFDRDs7QUFFRCxNQUFJLE9BQUosRUFBYTtBQUNYLGtCQUFjLE9BQWQsQ0FBc0IsYUFBdEIsR0FBc0MsUUFBUSxZQUE5QztBQUNBLGtCQUFjLE9BQWQsQ0FBc0Isc0JBQXRCLEdBQStDLE9BQS9DO0FBQ0Q7QUFDRCxNQUFJLFNBQUosRUFBZTtBQUNiLFFBQU0saUJBQWlCLFVBQVUsYUFBVixDQUNyQiw0QkFEcUIsQ0FBdkI7QUFHQSxRQUFJLGNBQUosRUFBb0I7QUFDbEIscUJBQWUsVUFBZixDQUEwQixZQUExQixDQUF1QyxhQUF2QyxFQUFzRCxjQUF0RDtBQUNEO0FBQ0YsR0FQRCxNQU9PO0FBQ0wsUUFBTSxRQUFRLFNBQVMsYUFBVCx1QkFBMEMsS0FBSyxFQUEvQyxTQUFkO0FBQ0EsUUFBSSxLQUFKLEVBQVc7QUFDVCxZQUFNLFVBQU4sQ0FBaUIsWUFBakIsQ0FBOEIsYUFBOUIsRUFBNkMsS0FBN0M7QUFDRDtBQUNGO0FBQ0YsQ0FwT0g7O1FBc09XLFcsR0FBQSxXIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiY29uc3QgcmVuZGVyVHdlZXQgPSAoYWx0VHdpdHRlckVtYmVkc0FQSSwgc2hvd01ldHJpY3MsIGRhdGEsIGNvbnRhaW5lcikgPT4ge1xuICAgIGxldCB0d2VldFRleHQgPSBkYXRhLnRleHQsXG4gICAgICB0d2VldFVybCA9IGBodHRwczovL3R3aXR0ZXIuY29tLyR7ZGF0YS51c2Vyc1swXS51c2VybmFtZX0vc3RhdHVzLyR7ZGF0YS5pZH1gLFxuICAgICAgZW50aXRpZXMgPSBudWxsLFxuICAgICAgdmVyaWZpZWRCYWRnZSA9IGRhdGEudXNlcnNbMF0udmVyaWZpZWRcbiAgICAgICAgPyAnPHN2ZyByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIlZlcmlmaWVkIHVzZXJcIiBjbGFzcz1cInR3ZWV0LXZlcmlmaWVkLXVzZXItYmFkZ2VcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgYXJpYS1sYWJlbD1cIlZlcmlmaWVkIGFjY291bnRcIiBjbGFzcz1cInItMTNneHB1OSByLTRxdHFwOSByLXl5eXlvbyByLTF4dmxpNXQgci05Y3ZpcXIgci1kbm1yenMgci1ibndxaW0gci0xcGxjcnVpIHItbHJ2aWJyXCI+PGc+PHBhdGggZD1cIk0yMi41IDEyLjVjMC0xLjU4LS44NzUtMi45NS0yLjE0OC0zLjYuMTU0LS40MzUuMjM4LS45MDUuMjM4LTEuNCAwLTIuMjEtMS43MS0zLjk5OC0zLjgxOC0zLjk5OC0uNDcgMC0uOTIuMDg0LTEuMzM2LjI1QzE0LjgxOCAyLjQxNSAxMy41MSAxLjUgMTIgMS41cy0yLjgxNi45MTctMy40MzcgMi4yNWMtLjQxNS0uMTY1LS44NjYtLjI1LTEuMzM2LS4yNS0yLjExIDAtMy44MTggMS43OS0zLjgxOCA0IDAgLjQ5NC4wODMuOTY0LjIzNyAxLjQtMS4yNzIuNjUtMi4xNDcgMi4wMTgtMi4xNDcgMy42IDAgMS40OTUuNzgyIDIuNzk4IDEuOTQyIDMuNDg2LS4wMi4xNy0uMDMyLjM0LS4wMzIuNTE0IDAgMi4yMSAxLjcwOCA0IDMuODE4IDQgLjQ3IDAgLjkyLS4wODYgMS4zMzUtLjI1LjYyIDEuMzM0IDEuOTI2IDIuMjUgMy40MzcgMi4yNSAxLjUxMiAwIDIuODE4LS45MTYgMy40MzctMi4yNS40MTUuMTYzLjg2NS4yNDggMS4zMzYuMjQ4IDIuMTEgMCAzLjgxOC0xLjc5IDMuODE4LTQgMC0uMTc0LS4wMTItLjM0NC0uMDMzLS41MTMgMS4xNTgtLjY4NyAxLjk0My0xLjk5IDEuOTQzLTMuNDg0em0tNi42MTYtMy4zMzRsLTQuMzM0IDYuNWMtLjE0NS4yMTctLjM4Mi4zMzQtLjYyNS4zMzQtLjE0MyAwLS4yODgtLjA0LS40MTYtLjEyNmwtLjExNS0uMDk0LTIuNDE1LTIuNDE1Yy0uMjkzLS4yOTMtLjI5My0uNzY4IDAtMS4wNnMuNzY4LS4yOTQgMS4wNiAwbDEuNzcgMS43NjcgMy44MjUtNS43NGMuMjMtLjM0NS42OTYtLjQzNiAxLjA0LS4yMDcuMzQ2LjIzLjQ0LjY5Ni4yMSAxLjA0elwiPjwvcGF0aD48L2c+PC9zdmc+J1xuICAgICAgICA6IFwiXCIsXG4gICAgICByZW5kZXJlZFR3ZWV0SFRNTCA9IGA8ZGl2IGNsYXNzPVwiY2FyZCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3ZWV0LWJvZHktd3JhcHBlciBjYXJkLWJvZHkgcHQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBuby1ndXR0ZXJzIG1iLTFcIj5gO1xuICAgIGlmIChkYXRhLnVzZXJzWzBdLnByb2ZpbGVfaW1hZ2VfdXJsKSB7XG4gICAgICByZW5kZXJlZFR3ZWV0SFRNTCArPSBgPGRpdiBjbGFzcz1cImNvbC0yIGNvbC1zbS0xIGNvbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vdHdpdHRlci5jb20vJHtkYXRhLnVzZXJzWzBdLnVzZXJuYW1lfVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmVcIj48aW1nIHRpdGxlPVwiUHJvZmlsZSBpbWFnZVwiIGFsdD1cIlByb2ZpbGUgaW1hZ2Ugb2YgQCR7ZGF0YS51c2Vyc1swXS51c2VybmFtZX1cIiBsb2FkaW5nPVwibGF6eVwiIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgYm9yZGVyXCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgc3JjPVwiJHtkYXRhLnVzZXJzWzBdLnByb2ZpbGVfaW1hZ2VfdXJsfVwiPjwvYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIHJlbmRlcmVkVHdlZXRIVE1MICs9IGA8ZGl2IGNsYXNzPVwidHdlZXQtYXV0aG9yICR7XG4gICAgICBkYXRhLnVzZXJzWzBdLnByb2ZpbGVfaW1hZ2VfdXJsXG4gICAgICAgID8gXCJjb2wtOSBjb2wtc20tMTAgY29sLW1kLT
159EwIHBsLTJcIlxuICAgICAgICA6IFwiY29sLTExIGNvbC1zbS0xMSBjb2wtbWQtMTFcIlxuICAgIH0gcGItM1wiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIG1iLTAgbXQtMFwiPjxhIGNsYXNzPVwidGV4dC1kYXJrIHRleHQtZGVjb3JhdGlvbi1ub25lXCIgaHJlZj1cImh0dHBzOi8vdHdpdHRlci5jb20vJHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51c2Vyc1swXS51c2VybmFtZVxuICAgICAgICAgICAgICAgICAgfVwiPiR7ZGF0YS51c2Vyc1swXS5uYW1lfSR7dmVyaWZpZWRCYWRnZX08L2E+PC9wPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0xIG1iLW1kLTIgbXQtMFwiPjxhIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LWRlY29yYXRpb24tbm9uZVwiIGhyZWY9XCJodHRwczovL3R3aXR0ZXIuY29tLyR7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXNlcnNbMF0udXNlcm5hbWVcbiAgICAgICAgICAgICAgICAgIH1cIj5AJHtkYXRhLnVzZXJzWzBdLnVzZXJuYW1lfTwvYT48L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiR7dHdlZXRVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHN2ZyByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIlR3aXR0ZXIgbG9nb1wiIHN0eWxlPVwid2lkdGg6IDI0cHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjxwYXRoIGQ9XCJNNTEyIDk3LjI0OGMtMTkuMDQgOC4zNTItMzkuMzI4IDEzLjg4OC02MC40OCAxNi41NzYgMjEuNzYtMTIuOTkyIDM4LjM2OC0zMy40MDggNDYuMTc2LTU4LjAxNi0yMC4yODggMTIuMDk2LTQyLjY4OCAyMC42NC02Ni41NiAyNS40MDhDNDExLjg3MiA2MC43MDQgMzg0LjQxNiA0OCAzNTQuNDY0IDQ4Yy01OC4xMTIgMC0xMDQuODk2IDQ3LjE2OC0xMDQuODk2IDEwNC45OTIgMCA4LjMyLjcwNCAxNi4zMiAyLjQzMiAyMy45MzYtODcuMjY0LTQuMjU2LTE2NC40OC00Ni4wOC0yMTYuMzUyLTEwOS43OTItOS4wNTYgMTUuNzEyLTE0LjM2OCAzMy42OTYtMTQuMzY4IDUzLjA1NiAwIDM2LjM1MiAxOC43MiA2OC41NzYgNDYuNjI0IDg3LjIzMi0xNi44NjQtLjMyLTMzLjQwOC01LjIxNi00Ny40MjQtMTIuOTI4djEuMTUyYzAgNTEuMDA4IDM2LjM4NCA5My4zNzYgODQuMDk2IDEwMy4xMzYtOC41NDQgMi4zMzYtMTcuODU2IDMuNDU2LTI3LjUyIDMuNDU2LTYuNzIgMC0xMy41MDQtLjM4NC0xOS44NzItMS43OTIgMTMuNiA0MS41NjggNTIuMTkyIDcyLjEyOCA5OC4wOCA3My4xMi0zNS43MTIgMjcuOTM2LTgxLjA1NiA0NC43NjgtMTMwLjE0NCA0NC43NjgtOC42MDggMC0xNi44NjQtLjM4NC0yNS4xMi0xLjQ0QzQ2LjQ5NiA0NDYuODggMTAxLjYgNDY0IDE2MS4wMjQgNDY0YzE5My4xNTIgMCAyOTguNzUyLTE2MCAyOTguNzUyLTI5OC42ODggMC00LjY0LS4xNi05LjEyLS4zODQtMTMuNTY4IDIwLjgzMi0xNC43ODQgMzguMzM2LTMzLjI0OCA1Mi42MDgtNTQuNDk2elwiIGZpbGw9XCIjMDNhOWY0XCIvPjwvc3ZnPjwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR3ZWV0LWJvZHlcIj5gO1xuICAgIGlmIChkYXRhLmVudGl0aWVzKSB7XG4gICAgICBpZiAoZGF0YS5lbnRpdGllcy51cmxzKSB7XG4gICAgICAgIGRhdGEuZW50aXRpZXMudXJscy5mb3JFYWNoKCh1cmwpID0+IHtcbiAgICAgICAgICBpZiAodXJsLmRpc3BsYXlfdXJsLmluZGV4T2YoXCJwaWMudHdpdHRlci5jb21cIikgPT09IC0xKSB7XG4gICAgICAgICAgICB0d2VldFRleHQgPSB0d2VldFRleHQucmVwbGFjZShcbiAgICAgICAgICAgICAgUmVnRXhwKHVybC51cmwsIFwiaWdcIiksXG4gICAgICAgICAgICAgIGA8YSBocmVmPVwiJHt1cmwuZXhwYW5kZWRfdXJsfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dXJsLmRpc3BsYXlfdXJsfTwvYT5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0d2VldFRleHQgPSB0d2VldFRleHQucmVwbGFjZSh1cmwudXJsLCBcIlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEuZW50aXRpZXMubWVudGlvbnMpIHtcbiAgICAgICAgZGF0YS5lbnRpdGllcy5tZW50aW9ucy5mb3JFYWNoKChtZW50aW9uKSA9PiB7XG4gICAgICAgICAgdHdlZXRUZXh0ID0gdHdlZXRUZXh0LnJlcGxhY2UoXG4gICAgICAgICAgICBSZWdFeHAoYEAke21lbnRpb24udXNlcm5hbWV9YCwgXCJpZ1wiKSxcbiAgICAgICAgICAgIGA8YSBocmVmPVwiaHR0cHM6Ly90d2l0dGVyLmNvbS8ke21lbnRpb24udXNlcm5hbWV9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+QCR7bWVudGlvbi51c2VybmFtZX08L2E+YFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEuZW50aXRpZXMuaGFzaHRhZ3MpIHtcbiAgICAgICAgZGF0YS5lbnRpdGllcy5oYXNodGFncy5mb3JFYWNoKChoYXNodGFnKSA9PiB7XG4gICAgICAgICAgdHdlZXRUZXh0ID0gdHdlZXRUZXh0LnJlcGxhY2UoXG4gICAgICAgICAgICBSZWdFeHAoYCMke2hhc2h0YWcudGFnfWAsIFwiaWdcIiksXG4gICAgICAgICAgICBgPGEgaHJlZj1cImh0dHBzOi8vdHdpdHRlci5jb20vaGFzaHRhZy8ke2hhc2h0YWcudGFnfVwiIHRhcmdldD1cIl9ibGFua1wiPiMke2hhc2h0YWcudGFnfTwvYT5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLm1lZGlhICYmIGRhdGEubWVkaWEubGVuZ3RoKSB7XG4gICAgICB0d2VldFRleHQgKz0gYDxkaXYgZGF0YS1tZWRpYS1sZW5ndGg9XCIke2RhdGEubWVkaWEubGVuZ3RofVwiIGNsYXNzPVwidHdlZXQtbWVkaWEgcm93IG10LTMgbm8tZ3V0dGVyc1wiPmA7XG4gICAgICBkYXRhLm1lZGlhLmZvckVhY2goKG1lZGlhLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5tZWRpYS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0d2VldFRleHQgKz0gYDxkaXYgZGF0YS1tZWRpYS10eXBlPVwiJHttZWRpYS50eXBlfVwiIGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTJcIj5gO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEubWVkaWEubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSAyKSB7XG4gICAgICAgICAgICB0d2VldFRleHQgKz0gYDxkaXYgZGF0YS1tZWRpYS10eXBlPVwiJHttZWRpYS50eXBlfVwiIGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTJcIj5gO1xuICAgICAgICAgI
159H0gZWxzZSB7XG4gICAgICAgICAgICB0d2VldFRleHQgKz0gYDxkaXYgZGF0YS1tZWRpYS10eXBlPVwiJHttZWRpYS50eXBlfVwiIGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLXNtLTEyIGNvbC1tZC02IGNvbC1sZy02XCI+YDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5tZWRpYS5sZW5ndGggPiAxICYmIGRhdGEubWVkaWEubGVuZ3RoIDwgNSkge1xuICAgICAgICAgIHR3ZWV0VGV4dCArPSBgPGRpdiBkYXRhLW1lZGlhLXR5cGU9XCIke21lZGlhLnR5cGV9XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTZcIj5gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHR3ZWV0VGV4dCArPSBgPGRpdiBkYXRhLW1lZGlhLXR5cGU9XCIke21lZGlhLnR5cGV9XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtc20tMTIgY29sLW1kLTMgY29sLWxnLTNcIj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZWRpYS50eXBlID09PSBcImFuaW1hdGVkX2dpZlwiKSB7XG4gICAgICAgICAgdHdlZXRUZXh0ICs9IGA8dmlkZW8gY2xhc3M9XCJ3LTEwMCBtdC0wXCIgY29udHJvbHMgbG9vcD48c291cmNlIHNyYz1cIiR7bWVkaWEucHJldmlld19pbWFnZV91cmxcbiAgICAgICAgICAgIC5yZXBsYWNlKFxuICAgICAgICAgICAgICBcInBicy50d2ltZy5jb20vdHdlZXRfdmlkZW9fdGh1bWJcIixcbiAgICAgICAgICAgICAgXCJ2aWRlby50d2ltZy5jb20vdHdlZXRfdmlkZW9cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGxhY2UoXCIuanBnXCIsIFwiLm1wNFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoXCIucG5nXCIsIFwiLm1wNFwiKX1cIiB0eXBlPVwidmlkZW8vbXA0XCI+PC92aWRlbz5gO1xuICAgICAgICB9IGVsc2UgaWYgKG1lZGlhLnR5cGUgPT09IFwidmlkZW9cIikge1xuICAgICAgICAgIGlmIChtZWRpYS52YXJpYW50cykge1xuICAgICAgICAgICAgdmFyIHZhcmlhbnQgPSBudWxsO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBtZWRpYS52YXJpYW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBtZWRpYS52YXJpYW50c1tpbmRleF07XG4gICAgICAgICAgICAgIGlmIChlbGVtZW50LmNvbnRlbn
159RfdHlwZSA9PSBcInZpZGVvL21wNFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFudCA9ZWxlbWVudDtcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdHdlZXRUZXh0ICs9IGA8dmlkZW8gY2xhc3M9XCJ3LTEwMCBtdC0wXCIgcG9zdGVyPSR7bWVkaWEucHJldmlld19pbWFnZV91cmx9IGNvbnRyb2xzIGxvb3A+PHNvdXJjZSBzcmM9XCIke1xuICAgICAgICAgICAgICB2YXJpYW50LnVybFxuICAgICAgICAgICAgfVwiIHR5cGU9XCIke1xuICAgICAgICAgICAgICB2YXJpYW50LmNvbnRlbnRfdHlwZVxuICAgICAgICAgICAgfVwiPjwvdmlkZW8+YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHdlZXRUZXh0ICs9IGA8YSBjbGFzcz1cInR3ZWV0LXZpZGVvLXBsYWNlaG9sZGVyXCIgaHJlZj1cIiR7dHdlZXRVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGltZyBhbHQ9XCIke21lZGlhLmFsdF90ZXh0IHx8ICcnfVwiIGxvYWRpbmc9XCJsYXp5XCIgd2lkdGg9XCIke21lZGlhLndpZHRofVwiIGhlaWdodD1cIiR7bWVkaWEuaGVpZ2h0fVwiIGNsYXNzPVwidy0xMDAgcm91bmRlZCBib3JkZXJcIiBzcmM9XCIke21lZGlhLnByZXZpZXdfaW1hZ2VfdXJsfVwiPjwvYT5gO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChtZWRpYS50eXBlID09PSBcInBob3RvXCIpIHtcbiAgICAgICAgICB0d2VldFRleHQgKz0gYDxhIGhyZWY9XCIke3R3ZWV0VXJsfVwiIHRhcmdldD1cIl9ibGFua1wiPjxpbWcgYWx0PVwiJHttZWRpYS5hbHRfdGV4dCB8fCAnJ31cIiBsb2FkaW5nPVwibGF6eVwiIHdpZHRoPVwiJHttZWRpYS53aWR0aH1cIiBoZWlnaHQ9XCIke21lZGlhLmhlaWdodH1cIiBjbGFzcz1cInctMTAwIHJvdW5kZWQgYm9yZGVyXCIgc3JjPVwiJHttZWRpYS51cmx9XCI+PC9hPmA7XG4gICAgICAgIH1cbiAgICAgICAgdHdlZXRUZXh0ICs9IFwiPC9kaXY+XCI7XG4gICAgICB9KTtcbiAgXG4gICAgICB0d2VldFRleHQgKz0gXCI8L2Rpdj5cIjtcbiAgICB9XG4gIFxuICAgIGlmIChkYXRhLnBvbGxzICYmIGRhdGEucG9sbHMubGVuZ3RoKSB7XG4gICAgICB0d2VldFRleHQgKz0gJzxkaXYgY2xhc3M9XCJtdC0wXCI+JztcbiAgXG4gICAgICBkYXRhLnBvbGxzLmZvckVhY2goKHBvbGwpID0+IHtcbiAgICAgICAgaWYgKHBvbGwub3B0aW9ucyAmJiBwb2xsLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgdm90ZUNvdW50cyA9IHBvbGwub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52b3RlcztcbiAgICAgICAgICB9KTtcbiAgXG4gICAgICAgICAgY29uc3Qgdm90ZUNvdW50TWF4ID0gTWF0aC5tYXgoLi4udm90ZUNvdW50cyk7XG4gICAgICAgICAgY29uc3Qgdm90ZXNUb3RhbCA9IHZvdGVDb3VudHMucmVkdWNlKCh0b3RhbCwgbnVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBudW07XG4gICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgIHR3ZWV0VGV4dCArPSBgPGRpdiBpZD1cInBvbGwtJHtwb2xsLmlkfVwiIGNsYXNzPVwicm93XCIgcm9sZT1cImxpc3RcIj5gO1xuICBcbiAgICAgICAgICBwb2xsLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdm90ZXNQb3J0aW9uID0gKG9wdGlvbi52b3RlcyAvIHZvdGVzVG90YWwpICogMTAwO1xuICAgICAgICAgICAgdHdlZXRUZXh0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3ZWV0LXBvbGwtcmVzdWx0cyBjb2wtOVwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgcm9sZT1cImxpc3RpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgcG9zaXRpb24tcmVsYXRpdmUgbXQtbjQgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZvdGVzID09PSB2b3RlQ291bnRNYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiIGJvcmRlciBib3JkZXItcHJpbWFyeSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIHN0eWxlPVwiaGVpZ2h0OjMwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAke3ZvdGVzUG9ydGlvbn0lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicG9sbC0ke3BvbGwuaWR9LW9wdGlvbi0ke1xuICAgICAgICAgICAgICBpbmRleCArIDFcbiAgICAgICAgICAgIH1cIiBjbGFzcz1cInBsLTIgZC1mbGV4IHBvc2l0aW9uLWFic29sdXRlIHctMTAwXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAzMHB4O1wiPiR7XG4gICAgICAgICAgICAgIG9wdGlvbi5sYWJlbFxuICAgICAgICAgICAgfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIG10LW40IHRleHQtcmlnaHRcIiBzdHlsZT1cImhlaWdodDo2MHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LTEwMFwiPiR7TWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbi52b3RlcyAvIHZvdGVzVG90YWwpICogMTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgIHR3ZWV0VGV4dCArPSBgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0zIGQtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+JHt2b3Rlc1RvdGFsLnRvTG9jYWxlU3RyaW5nKCl9IHZvdGVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIFxuICAgICAgdHdlZXRUZXh0ICs9IFwiPC9kaXY+XCI7XG4gICAgfVxuICBcbiAgICBjb25zdCB0d2VldERhdGUgPSBuZXcgRGF0ZShkYXRhLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZyhcbiAgICAgIG5hdmlnYXRvci5sYW5ndWFnZSxcbiAgICAgIHsgbW9udGg6IFwibG9uZ1wiLCB5ZWFyOiBcIm51bWVyaWNcIiwgZGF5OiBcIm51bWVyaWNcIiB9XG4gICAgKTtcbiAgXG4gICAgcmVuZGVyZWRUd2VldEhUTUwgKz1cbiAgICAgIHR3ZWV0VGV4dCArXG4gICAgICBgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBwYi00XCI+YDtcbiAgXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGlmIChzaG93TWV0cmljcyAmJiBkYXRhLnB1YmxpY19tZXRyaWNzKSB7XG4gICAgICAgI
159HJlbmRlcmVkVHdlZXRIVE1MICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3ZWV0LWljb25cIiByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIlJldHdlZXRzXCI+8J+UgTwvc3Bhbj48YSBjbGFzcz1cInRleHQtbXV0ZWRcIiBocmVmPVwiJHt0d2VldFVybH1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke2RhdGEucHVibGljX21ldHJpY3MucmV0d2VldF9jb3VudC50b0xvY2FsZVN0cmluZygpfTwvYT4gfFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHdlZXQtaWNvblwicm9sZT1cImltZ1wiIGFyaWEtbGFiZWw9XCJMaWtlc1wiPuKdpO+4jzwvc3Bhbj4gPGEgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgaHJlZj1cIiR7dHdlZXRVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHtkYXRhLnB1YmxpY19tZXRyaWNzLmxpa2VfY291bnQudG9Mb2NhbGVTdHJpbmcoKX08L2E+IHwgYDtcbiAgICAgIH1cbiAgXG4gICAgICByZW5kZXJlZFR3ZWV0SFRNTCArPSBgPGEgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgaHJlZj1cIiR7dHdlZXRVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHt0d2VldERhdGV9PC9hPmA7XG4gICAgfVxuICBcbiAgICByZW5kZXJlZFR3ZWV0SFRNTCArPSBcIjwvZGl2PjwvZGl2PlwiO1xuICBcbiAgICBsZXQgcmVuZGVyZWRUd2VldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgcmVuZGVyZWRUd2VldC5jbGFzc05hbWUgPSBgdHdpdHRlci10d2VldCB0d2l0dGVyLXR3ZWV0LXJlbmRlcmVkIHctMTAwYDtcbiAgICByZW5kZXJlZFR3ZWV0LmlubmVySFRNTCA9IHJlbmRlcmVkVHdlZXRIVE1MO1xuICBcbiAgICBsZXQgbGFzdFVybCA9IFwiXCI7XG4gIFxuICAgIGlmIChkYXRhLmVudGl0aWVzICYmIGRhdGEuZW50aXRpZXMudXJscyAmJiBkYXRhLmVudGl0aWVzLnVybHMubGVuZ3RoKSB7XG4gICAgICBsYXN0VXJsID0gZGF0YS5lbnRpdGllcy51cmxzW2RhdGEuZW50aXRpZXMudXJscy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIFxuICAgIGlmIChcbiAgICAgIChkYXRhLm1lZGlhICYmIGRhdGEubWVkaWEubGVuZ3RoKSB8fFxuICAgICAgKGRhdGEuZXh0ZW5kZWRfZW50aXRpZXMgJiZcbiAgICAgICAgZGF0YS5leHRlbmRlZF9lbnRpdGllcy5tZWRpYSAmJlxuICAgICAgICBkYXRhLmV4dGVuZGVkX2VudGl0aWVzLm1lZGlhLmxlbmd0aClcbiAgICApIHtcbiAgICAgIGxhc3RVcmwgPSBcIlwiO1xuICAgIH1cbiAgXG4gICAgaWYgKGxhc3RVcmwpIHtcbiAgICAgIHJlbmRlcmVkVHdlZXQuZGF0YXNldC51cmxBdHRhY2htZW50ID0gbGFzdFVybC5leHBhbmRlZF91cmw7XG4gICAgICByZW5kZXJlZFR3ZWV0LmRhdGFzZXQudXJsQXR0YWNobWVudFByb2Nlc3NlZCA9IFwiZmFsc2VcIjtcbiAgICB9XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29uc3QgdHdlZXRDb250YWluZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICAgXCIudHdlZXQtYm9keSBhOmxhc3Qtb2YtdHlwZVwiXG4gICAgICApO1xuICAgICAgaWYgKHR3ZWV0Q29udGFpbmVyKSB7XG4gICAgICAgIHR3ZWV0Q29udGFpbmVyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHJlbmRlcmVkVHdlZXQsIHR3ZWV0Q29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHdlZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS10d2VldC1pZD1cIiR7ZGF0YS5pZH1cIl1gKTtcbiAgICAgIGlmICh0d2VldCkge1xuICAgICAgICB0d2VldC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyZW5kZXJlZFR3ZWV0LCB0d2VldCk7XG4gICAgICB9IFxuICAgIH1cbiAgfTtcbiAgXG4gIGV4cG9ydCB7IHJlbmRlclR3ZWV0IH07XG4gICJdfQ==
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.