Greasy Fork

Find The Correct Watch Order And All Related Entries+Live-Actions+Doramas + Copy Entry Title

The script shows you the Correct Watch Order And All Related Entries. The script can also auto find if an anime has any Live-Action or Drama adaptations, and the script can Copy The Anime/Manga Title.

目前为 2021-01-20 提交的版本。查看 最新版本

// ==UserScript==
// @name         Find The Correct Watch Order And All Related Entries+Live-Actions+Doramas + Copy Entry Title
// @namespace    Search for Live-Actions\Doramas\All Related Entries + Correct Watch Order + Copy Entry Title
// @version      2.0.0.16
// @description  The script shows you the Correct Watch Order And All Related Entries. The script can also auto find if an anime has any Live-Action or Drama adaptations, and the script can Copy The Anime/Manga Title.
// @author       hacker09
// @include      /^https:\/\/myanimelist\.net\/anime\/[\d]+(\/.*)?/
// @include      /^https:\/\/myanimelist\.net\/manga\/[\d]+(\/.*)?/
// @icon         https://www.google.com/s2/favicons?domain=myanimelist.net
// @grant        none
// @run-at       document-end
// ==/UserScript==

//The lines below are the beginning of the function
(function() {
  var AllChiakiAnimeTitles = []; //Creates a new blank array
  var titleElem = document.querySelector("[itemprop*='name']"); //Select the entry title element
  var findButton = document.createElement("a"); //Creates an "a" element to show a button later
  var copyButton = document.createElement("a"); //Creates an "a" element so the button will appear
  var chiakiButton = document.createElement("a"); //Creates an "a" element so the button will appear
  var animeid = location.pathname.match(/\d+/)[0]; //Get the anime id to add on the chiaki website url
  var ChiakiAnimeTitle, ChiakiAnimeTitleWithSymbols, Chiaki_Anime_Franchise_TV_Title_With_Symbols, Chiaki_Anime_Franchise_TV_Title, response2, html2, MyDramaListDocument, response3, html3, AsianWikiDocument, MyDramaListText, AsianWikiText, MyDramaListCheck, AsianWikiCheck, MalClubText, ChiakiDocument, FranchiseHasTVType, Websites, LineBeak, Space; //Make these variables global

  if (document.querySelector("a.header-profile-link").innerText === 'alshu') { //Check the script user MAL username
    return; //Make the script not work
  }; //Finishes the if condition

  if (document.querySelector(".title-name") !== null) //On anime pages ".title-name" usually exists. If this element exists
  { //Starts the if condition
    titleElem = document.querySelector(".title-name"); //Select the entry title element
  } //Finishes the if condition
  if (document.querySelector(".title-english") !== null && document.querySelector(".title-name") === null) //On manga pages ".title-name" usually doesn't exists
  { //Starts the if condition
    var SaveEngTitle = document.querySelector(".title-english").innerText; //Save the english title to a variable
    document.querySelector("[itemprop*='name']").firstElementChild.remove(); //Remove Line Break <br>
    document.querySelector(".title-english").remove(); //Remove the Eng title
    setTimeout(function() { //Starts the setTimeout
      titleElem.insertAdjacentHTML('beforeend', '<br><span class="title-english">' + SaveEngTitle + '</span>'); //ReAdd the english title and line break to the page when the script finishes
    }, 0); //Finishes the setTimeout
  } //Finishes the if condition

  copyButton.addEventListener("click", () => {
    navigator.clipboard.writeText(titleElem.textContent); //Copy the entry title with symbols
  }); //Detect the single mouse click
  copyButton.addEventListener("dblclick", () => {
    navigator.clipboard.writeText(titleElem.textContent.replace(/[^a-zA-Z0-9]+/g, " ")); //Copy the entry title without symbols
  }); //Detect the double mouse click
  copyButton.setAttribute("title", "1 Click To Copy Entry Title (+ Symbols)\n2 Clicks To Copy Entry Title (Without Symbols)"); //Detects a mouse hover on the button and shows a explanation text
  copyButton.setAttribute("style", "cursor: pointer;margin-left: 13px;height: 10px;width: 10px;background-size: cover;display: inline-block;transform: scale(1.8);vertical-align: top;margin-top: 7px;"); //The CSS for the copy button
  titleElem.appendChild(copyButton); //Append the button close to the title element
  copyButton.style.backgroundImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAQAAAAm93DmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfkBhcOBQkNughZAAADCUlEQVRIx6XWS2hcVRzH8c90Jklji5qkmKipolFb2iBDQSw+KhXBRbEKLYqIiCi+4kLoJrgQfKAgiChN8UEXCr6KFVxUcFFQa6TpWDNGKUpcqKAMTU2lNdpEZ66LmTtz53FnbvQ3i5lz7r3f+/v//mcOJyWibPlrk11uNiCJin70lgnHIY909OoQ3GSvrc5KhGOFftdb53OnKCDT4G/Ey9bhmO8UpTrgAqtsMuRWcx7xt3pgpdzTcqY879cE/gJpV3nVqB1edwQ1D5X8unQJ/JWw4LIeskfKmD35msMKrtd6a2WiL6rTvBm/hfFXn5u1aKX+8kwmgrvauC3ObpPckq894wDZCjIvSyCIdinUdd52m34Z6dhPr8322hkx0aSwKed6yqUCn/jIHy09lgx7zGqDduP9msvWwM2uwQH3OhFb8HoPWk17ZAjcqEfRm2VcqzdnyVSdR5CNCjPsxVI8rlJ0LfxBu8tZxgHLSrXBcUIhMho0YUcnYHsd94ZSZHyeF1wZl2E0q3i9YpX7DVZsZFzsdjMdgNhgq+66mcC0Q0oWPO0dl+kSWONZQ0aJLutWwDVec23TbMF2OQRmzVYKHjcU6XwscGV5W2xQv75ow7KkpRrdtQb+4nF36GqYnTQpkZqBgX32N3Q/8E8yXOumUFRsNZ1NAFzOOvzPDm+0XXdz3CAlcNh7lpIDz/eS0bYm7vazT5OXHLTOL6JSuzuaHRaMuUVP25Knlpdh4jWXrOT/qdbrsLvNiwKLywOucJc7G3abeuAhLzodGQ/oxp9xwAs96ZK2Vd1gysdV3AXukXbGsbgMF/zUIaaCuervDd61DV84HOdw3gO26InFleRNV0cjRvCDJ/weB1TdQpOo5KTPPCcXTkSBqfLum+9IydbuznnUt87UnguB8+hxuYPJNikMG8D3viwPQxsh8KiT+oyZkUtwcuUi4/ootyJaUwic9oH7jNrvKwsdgIGMja7AER82XkxVM1lrwrZl/RW/8bDJxszTVE7/pxy0aNg5CaCBOfvschR15xP+BXLUxMa/tU5OAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA2LTIzVDE0OjA1OjAzKzAwOjAw5sMT7QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wNi0yM1QxNDowNTowMyswMDowMJeeq1EAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC)"; //The copy button image converted to DATA URI
  //********************************************************************************************************************************************************************
  if (window.location.pathname.split('/')[1] === 'anime') // Show the buttons to search for adaptations, and the chiaki site button only if the user is in an anime entry
  { //Starts the if function
    var Array2 = []; //Creates a new blank array

    async function GetAnimeTitle() //Creates a function to Process and Get the Anime Title
    { //Starts the function
      const response = await fetch('https://api.allorigins.win/raw?url=https://chiaki.site/?/tools/watch_order/id/' + animeid); //Fetch
      const html = await response.text(); //Gets the fetch response
      ChiakiDocument = new DOMParser().parseFromString(html, 'text/html'); //Parses the fetch response
      ChiakiAnimeTitle = ChiakiDocument.querySelector("h2").innerText.split(' Watch Order')[0].replace(/[^a-zA-Z0-9]+/g, " ").trim(); //Get the anime title on the h2 element and remove the Watch Order text, and remove any symbols that the title might have, also removes the first and last whitespaces if existent
      ChiakiAnimeTitleWithSymbols = ChiakiDocument.querySelector("h2").innerText.split(' Watch Order')[0].trim(); //Get the anime title on the h2 element (with symbols) and remove the Watch Order text, also removes the first and last whitespaces if existent
      Array.from(ChiakiDocument.querySelectorAll("span.wo_title")).forEach(link => AllChiakiAnimeTitles.push(link.innerText)); //Add all anime titles of the anime franchise to the array AllChiakiAnimeTitles
      FranchiseHasTVType = false; //Define the variable as false
      if ([...ChiakiDocument.querySelectorAll('span.uk-text-muted.uk-text-small')].find(e => e.innerText.includes('TV')) !== undefined) { //Starts the if condition
        FranchiseHasTVType = true; //Define the variable as true
        Chiaki_Anime_Franchise_TV_Title_With_Symbols = [...ChiakiDocument.querySelectorAll('span.uk-text-muted.uk-text-small')].find(e => e.innerText.includes('TV')).parentElement.querySelector("span.wo_title").innerText; //Add the first tv type Chiaki Anime Title with symbols to a variable
        Chiaki_Anime_Franchise_TV_Title = Chiaki_Anime_Franchise_TV_Title_With_Symbols.replace(/[^a-zA-Z0-9]+/g, " "); //Remove any symbols that the title might have
        if (ChiakiAnimeTitle.match('Watch Order') !== null) //If the h2 element on chiaki.site doesn't have the anime title
        { //Starts the if condition
          ChiakiAnimeTitle = Chiaki_Anime_Franchise_TV_Title; //Replace the variable ChiakiAnimeTitle contents with the variable Chiaki_Anime_Franchise_TV_Title
          ChiakiAnimeTitleWithSymbols = Chiaki_Anime_Franchise_TV_Title_With_Symbols; //Replace the variable ChiakiAnimeTitleWithSymbols contents with the variable Chiaki_Anime_Franchise_TV_Title_With_Symbols contents
        } //Finishes the if condition
      } //Finishes the if condition

      response2 = await fetch("https://api.allorigins.win/raw?url=https://mydramalist.com/search?q=" + ChiakiAnimeTitle); //Fetch
      html2 = await response2.text(); //Gets the fetch response
      MyDramaListDocument = new DOMParser().parseFromString(html2, 'text/html'); //Parses the fetch response

      if (MyDramaListDocument.body.innerText.search(' found for: ') > -1) //If MyDramaList returned any results
      { //Starts the if condition
        MyDramaListText = '\nMyDramaList'; //Display to the user that MyDramaList website will be opened if Ok is clicked
        MyDramaListCheck = '👍 Found on MyDramaList.'; //Display the confirmation that the anime has adaptations found on MyDramaList
      } //Finishes the if condition
      else { //Starts the else condition
        MyDramaListText = ''; //Display to the user that MyDramaList Won't be opened if Ok is clicked
        MyDramaListCheck = '✖ NOT Found on MyDramaList.'; //Display the confirmation that the anime doesn't have any adaptations found on MyDramaList
      } //Finishes the else condition

      response3 = await fetch("https://api.allorigins.win/raw?url=https://asianwiki.com/Special:Search/" + ChiakiAnimeTitle); //
      html3 = await response3.text(); //Gets the fetch response
      AsianWikiDocument = new DOMParser().parseFromString(html3, 'text/html'); //Parses the fetch response

      if (AsianWikiDocument.body.innerText.search('There were no results matching the query.') > -1) //If AsianWiki didn't return any results
      { //Starts the if condition
        AsianWikiText = ''; //Display to the user that AsianWiki Won't be opened if Ok is clicked
        AsianWikiCheck = '✖ NOT Found on AsianWiki.'; //Display the confirmation that the anime doesn't have any adaptations found on AsianWiki
      } //Finishes the if condition
      else { //Starts the else condition
        AsianWikiText = '\nAsianWiki'; //Display to the user that AsianWiki website will be opened if Ok is clicked
        AsianWikiCheck = '👍 Found on AsianWiki.'; //Display the confirmation that the anime has adaptations found on AsianWiki
      } //Finishes the else condition

      Websites = ''; //Creates a new blank variable
      LineBeak = ''; //Creates a new blank variable
      Space = ' '; //Creates a variable to add spaces to the text
      if (MyDramaListCheck.match('NOT') === null || AsianWikiCheck.match('NOT') === null) //If AsianWiki or MyDramaList returned any results
      { //Starts the if condition
        Websites = ' the following websites:\n'; //Display a message in plural
        LineBeak = '\n'; //Creates a variable to add Line Breaks to the text
        Space = ''; //Creates a new blank variable
      } //Finishes the if condition
      //*************************************************************************************************************************************************
      var TextElement = ChiakiDocument.querySelectorAll("span.uk-text-muted.uk-text-small"); //Creates a variable to loop though the elements after
      var TotalTimesRun = 0; //Creates a variable with the value of 0
      var increaseby = 1; //Creates a variable with the value of 1
      for (var i = 0; i < TextElement.length; i++) { //Starts the for condition
        if (document.querySelector("a.header-profile-link").innerText !== '_cjessop19_') { // If the user isn't _cjessop19_
          var TotalRawDuration = TextElement[i].textContent.split("×")[1].split("|")[0].trim(); //Creates a variable to hold the total unprocessed times
          var ALLChiakiTitles = ChiakiDocument.querySelectorAll("span.wo_title")[i].innerText; //Creates a variable to get all the anime titles on chiaki site
          var TotalEpisodes = TextElement[i].textContent.split("|")[2].match(/\d+|\?/g)[0]; //Creates a variable to hold the total episodes
          var EpisodeType = TextElement[i].textContent.split("|")[1].trim(); //Creates a variable to get the episode types
          var eps = ' eps'; //Create a variable called eps
          var Duration = ''; //Creates a blank variable
          var PerEp = ' per ep'; //Create a variable called PerEp
          if (TotalEpisodes === '1') { //If the entry has only 1 ep
            var eps = ' ' + EpisodeType; //Change the variable called eps
            var PerEp = ''; //Change the variable called PerEp
          } //Finishes the if condition
          if (EpisodeType !== 'TV') { //If the entry type isn't TV
            if (TotalEpisodes !== '1') { //If the entry doesn't have only 1 ep
              var eps = ' ' + EpisodeType + 's'; //Change the variable called eps
            } //Finishes the if condition
            var Duration = ' of ' + TotalRawDuration + PerEp; //Defines the Duration variable if the episode type isn't TV
          } //Finishes the if condition
          Array2.push(ALLChiakiTitles + ',, ' + TotalEpisodes + eps + Duration + ',' + '\n'); //Add Everything to an Array
        } //Finishes the if condition
        else //If the user is _cjessop19_
        { //Starts the else condition
          TotalTimesRun += increaseby; //Sum the amount of times the for condition was executed
          var ALLChiakiInfo = TextElement[i].textContent.split("★")[0].trim().replace(/\n/g, ' '); //Creates a variable to hold ALLChiakiInfo
          var ALLChiakiTitles = ChiakiDocument.querySelectorAll("span.wo_title")[i].innerText; //Creates a variable to get all the anime titles on chiaki site
          var AnimeLinks = TextElement[0].firstElementChild.href; //Store the anime links in a variable
          if (ALLChiakiInfo.split("× ")[0].split(' |')[2].match(/\d+|\?/g)[0] === '1') //If there's only 1 episode
          { //Starts the if condition
            ALLChiakiInfo = ALLChiakiInfo.replace('episodes', 'episode'); //Replace episodes with episode
          } //Finishes the if condition
          Array2.push('1-' + TotalTimesRun + ' [url=' + AnimeLinks + ']' + ALLChiakiTitles + '[/url]\n' + ALLChiakiInfo + '  rated.' + '\n\n'); //Add Everything to an Array
        } //Finishes the else condition
      } //Finishes the for condition
    } //Finishes the async function
    GetAnimeTitle(); //Call the GetAnimeTitle function

    copyButton.addEventListener("contextmenu", (e) => {
      navigator.clipboard.writeText(Array2.join('').trim()); //Copy the array to the clipboard
      e.preventDefault(); //Don't show the right click default contextmenu
    }); //Detect the mouse right click
    copyButton.setAttribute("title", "1 Click To Copy Entry Title (+ Symbols)\n2 Clicks To Copy Entry Title (Without Symbols)\n\nRight click to Copy ALL Entry Titles In The Correct Watch Order With EP Numbers, Duration Times and Entry Types"); //Detects a mouse hover on the button and shows a explanation text

    findButton.addEventListener("click", () => { //Detect the mouse click and search for the anime title
      async function CheckWithAMALClub() //Creates a function to Check With A MAL Club
      { //Starts the function
        if (FranchiseHasTVType === true) //If the Franchise has at least 1 entry that the type is TV
        { //Starts the if condition
          const response = await fetch('https://myanimelist.net/clubs.php?cid=5450'); //Fetch
          const html = await response.text(); //Gets the fetch response
          const newDocument = new DOMParser().parseFromString(html, 'text/html'); //Parses the fetch response
          var content = newDocument.querySelector("#content > table > tbody > tr > td:nth-child(2) > div"); //Get the Anime titles related to the MALClub

          newDocument.body.innerText.search(ChiakiAnimeTitleWithSymbols) > -1 ? MalClubText = '👍 Found on this MAL Club bit.ly/38KZxwH' : MalClubText = '✖ NOT found on this MAL Club bit.ly/38KZxwH'; //If the title is found on the MALClub, display the confirmation whether or not the anime has adaptations found on the MALClub

          if (confirm('Franchise Title: ' + ChiakiAnimeTitle + '\n\n' + MyDramaListCheck + '\n' + MalClubText + '\n' + AsianWikiCheck + '\n\nDo you want to open' + Websites + Space + 'IMDB' + AsianWikiText + MyDramaListText + LineBeak + Space + 'to confirm that information and get more detailed info?')) //Show the confimation alert box text
          { //Starts the if condition
            window.open("https://www.imdb.com/find?q=" + ChiakiAnimeTitle + "&s=tt&ref_=fn_al_tt_mr", "_blank"); //Open IMDB on a new tab
            if (MyDramaListCheck.match('NOT') === null) {
              window.open("https://mydramalist.com/search?q=" + ChiakiAnimeTitle, "_blank"); //Open MyDramaList on a new tab
            } //Open MyDramaList on a new tab only if any results were found on the website
            if (AsianWikiCheck.match('NOT') === null) { //Open AsianWiki on a new tab
              window.open("http://asianwiki.com/index.php?title=Special%3ASearch&search=" + ChiakiAnimeTitle, "_blank"); //Open AsianWiki on a new tab
            } //Open AsianWiki on a new tab only if any results were found on the website
          } //Finishes the if condition
        } //Finishes the if condition
        else //If the anime doesn't have any entry type = TV
        { //Starts the else condition
          alert("This Franchise doesn't even have any TV type entries, it's very likely that there's no adaptations of any kind for this Franchise, so there's no need to search."); //Show a message to the user
        } //Finishes the else condition
      } //Finishes the async function
      CheckWithAMALClub(); //Calls the function CheckWithAMALClub
    }); //Finishes the advent listener
    findButton.setAttribute("title", "Search for Live-Actions/Doramas"); //Detects a mouse hover on the button and show the text Find Live-Actions
    findButton.setAttribute("style", "cursor: pointer;margin-left: 15px;height: 10px;width: 10px;background-size: cover;display: inline-block;transform: scale(1.8);vertical-align: top;margin-top: 7px;"); //The CSS for the findButton
    titleElem.appendChild(findButton); //Append the button close to the title element
    findButton.style.backgroundImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAQAAAAm93DmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfkBhcOEyPKmXRYAAACrElEQVRIx+3U32uVdRzA8de2s01d82wQ2GhotNYYSgqlzhSpIVhasF1IkP9ABbsLcdqFuIu6KOxyN120C5EIEemHlLSIkOEyWkRSHofb9NDaGQo7nZ7mtm8X6WmLneec7XTp+7n58nwe3t/P5/t5Pl8eUC4VBSMN2rRpUitr3FXXRavfZqMjhmSF/DPlU4clV5Nhwit6bXbHZd8Z85ekVjttk/CFE4ZWlttaJ0Wy+m1XveQAXnZBMOHQSnQJJy1I6cY6B7zrvDOeuBdd7y05GV2lCw+LpOzGbhfMCiKjduTjlXpErtlSmm6Tn2R1o9stwVde86wWVUtqeE8woKYU4RFBP3a5KedogZ42+9GMvcV1DYbcsd0anwiOx/yhbwpOFRfulPWlavtEvtEY8+VTpg1rWD5YmV+1qXPFXc+p9bHbMcIbUh7TVEzYhDG0mzMSW0tOWr2HiwlrESFlyGiscEGkqlCfE/lVFkn0WWsqVlil3l25YsJxtCIrK56kjW77vVjJV2XsuNfdpPoYYZsWv/qtmPC6y7bag6QB78fMQpd1LvqjmDByWsIb6s3JmBYK6LZ5Vdo5JbDe54JjqFlydS2m0TlBXyk66DAh6/VFeS+lQb9g0IZShRyS8ae3l52Drc4KfvB0zJwvQ5drgit6tHtIpQoJjTq8Y0Iw6BknfKDV4x4pVbnFgBnBpG+d8aGzvjcjuKXPBgmnBSlpP+speNb/ocZepwybEpmVkzboeP6e3mzMghHTZh0rVflPC9rt0alDi7pF7580acSjXnJzpcrlaZaS8SIO/j/KCkfNG/dCXtm76E5YFWv0mTORzzJr//1Q1aqEcy4JDnjeLz5TZ79RX5cjZN4l8w7qVGefTT4yXF7RUK3XjCC4qPnfAy6HhE67TDovXX5+D7jP32Dw0Zd65WyaAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA2LTIzVDE0OjE5OjI4KzAwOjAwfVN/JAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wNi0yM1QxNDoxOToyOCswMDowMAwOx5gAAAAASUVORK5CYII=)"; //The find button image converted to DATA URI
    //********************************************************************************************************************************************************************
    chiakiButton.setAttribute("href", "https://chiaki.site/?/tools/watch_order/id/" + animeid); //Detects the mouse click, and open chiaki.site on a new tab to show all the related anime entries on MAL on the correct watch order for the anime franchise
    chiakiButton.setAttribute("target", "_blank"); //Specifies that chiaki.site should be opened on a new tab
  } //Finishes the if condition

  if (window.location.pathname.split('/')[1] === 'manga') //If the user is in an manga entry
  { //Starts the if function
    chiakiButton.setAttribute("href", "http://www.relatedanime.com/manga/" + animeid); //Detects the mouse click, and Open relatedanime.com on a new tab to show all the related anime entries on MAL on the correct watch order for the anime franchise, including mangas,one shot's, Light Novels and these things...
    chiakiButton.setAttribute("target", "_blank"); //Specifies that relatedanime.com should be opened on a new tab
  } //Finishes the if condition

  chiakiButton.addEventListener("contextmenu", (e) => {
    window.open("http://www.relatedanime.com/anime/" + animeid, "_blank"); //Open relatedanime.com on a new tab to show all the related anime entries on MAL on the correct watch order for the anime franchise, including mangas,one shot's, Light Novels and these things...
    e.preventDefault(); //Don't show the right click default contextmenu
  }); //Detect the mouse right click
  chiakiButton.setAttribute("title", "Click to Find Related Entries + Correct Watch Order\nRight Click to Find Related Entries + Correct Watch Order. (Including mangas,one shot's, Light Novels etc...)"); //Detects a mouse hover on the button and show the text Find Related Entries + Correct Watch Order
  chiakiButton.setAttribute("style", "margin-left: 15px;height: 10px;width: 10px;background-size: cover;display: inline-block;transform: scale(1.8);vertical-align: top;margin-top: 7px;"); //The CSS for the chiakiButton
  titleElem.appendChild(chiakiButton); //Append the button close to the title element
  chiakiButton.style.backgroundImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAeFBMVEUAAADfceLecePYcefycdTMcfHZcefPce7tcdfQce3tcdffceLQce3tcdfeceLmcdziceDycdPLcfDYceflcd3KcfHycdPzcdPUce3tcdricePxtPDlkev0w/Pjg+ftf97ae+v10fboqvLvourvm+ftieHkm+/ah+6xZFdBAAAAGHRSTlMAFypl7u3s3t21tYlzc/Dv6MPCwsKJiWWHdugpAAAA1klEQVQY013Q2XLCMAwFUMehCQkJe4sW2wlZyv//YWVVzAD3yT5zNV6cxndNDVA3nXfPFOX5CzTVpSzMvpWMd8WHERDtVUs1U8mxlDPOLz3N1bvuvziOMIZAKREeetcAPCZmDpAip3kZCFtXg1Q4hpHCPXKcecCtk9HfKd6nKaWMLIgZH7kZkjRlIYYynrtMRIGXNfKCMt4YSuZZWMZb11UAlJIYDuuKOOCmd/5id8ZnTl6eWb3b5pY/ZLdXI7OfwqkeDczsk68Ho9NNzOL7div3a3uv2z/lrx6iZfibGQAAAABJRU5ErkJggg==)"; //The copy button image converted to DATA URI
})(); //Finish the whole function