/**
 * This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018
 * @version v0.8.0
 * @version v0.8.0
 * @link https://github.com/Virginia-iGEM/igem-wikibrick
 * @license MIT
 */
var radius = 18;
var circumference = 2 * radius * Math.PI;
console.log(circumference);
function getOffsetTop(element) {
    var distfromtop = 0;
    while(element) {
        distfromtop += (element.offsetTop - element.scrollTop + element.clientTop);
        element = element.offsetParent;
    }

    return distfromtop;
}
function setProgressCollab(percent) {
    if(percent>99.8) {
        percent = 100;
        $(".collab-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "85px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
    }
    else if(percent<-0.5) {
        $(".collab-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "85px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
        percent = 0;
    }
    else {

        $(".collab-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "#484EFF",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "85px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        }) 
    }
    var offset = circumference - percent / 100 * circumference;
    //console.log(offset);
    $(".progress-ring__circle-collab").css({
        "transition": "0s stroke-dashoffset",
        // axis compensation
        "transform": "rotate(-90deg)",
        "transform-origin": "50% 50%",
        "stroke-dasharray": `${circumference} ${circumference}`,
        "stroke-dashoffset": `${offset}`
    });

}
function setProgressFeed(percent) {
    if(percent>99.8) {
        percent = 100;
        $(".feed-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "68px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
    }
    else if(percent<-0.5) {
        $(".feed-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "68px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
        percent = 0;
    }
    else {

        $(".feed-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "#484EFF",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "68px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        }) 
    }
    var offset = circumference - percent / 100 * circumference;
    //console.log(offset);
    $(".progress-ring__circle-feed").css({
        "transition": "0s stroke-dashoffset",
        // axis compensation
        "transform": "rotate(-90deg)",
        "transform-origin": "50% 50%",
        "stroke-dasharray": `${circumference} ${circumference}`,
        "stroke-dashoffset": `${offset}`
    });

}
function setProgressArt(percent) {
    if(percent>99.8) {
        percent = 100;
        $(".art-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "70px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
    }
    else if(percent<-0.5) {
        $(".art-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "white",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "70px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        })
        percent = 0;
    }
    else {

        $(".art-link").css({
            "font-family": "Arial Rounded MT Bold",
            "float": "left",
            "color": "#484EFF",
            "padding-top": "20px",
            "padding-bottom": "20px",
            "padding-right": "70px",
            "text-decoration": "none",
            "display": "block",
            "text-align": "left"
        }) 
    }
    var offset = circumference - percent / 100 * circumference;
    //console.log(offset);
    $(".progress-ring__circle-art").css({
        "transition": "0s stroke-dashoffset",
        // axis compensation
        "transform": "rotate(-90deg)",
        "transform-origin": "50% 50%",
        "stroke-dasharray": `${circumference} ${circumference}`,
        "stroke-dashoffset": `${offset}`
    });

}
var getMax = function(){
        return $(document).height() - $(window).height();
}
$(document).ready(function(){
    
    
    //console.log(getMax);
    var getValue = function(){
        return $(window).scrollTop();
    }
    
    if('max' in document.createElement('progress')){
        // Browser supports progress element
        var progressBar = $('progress');
        
        // Set the Max attr for the first time
        progressBar.attr({ max: getMax() });

        $(document).on('scroll', function(){
            // On scroll only Value attr needs to be calculated
            progressBar.attr({ value: getValue() });
        });
      
        $(window).resize(function(){
            // On resize, both Max/Value attr needs to be calculated
            progressBar.attr({ max: getMax(), value: getValue() });
        });   
    }
    else {
        var progressBar = $('.progress-bar'), 
            max = getMax(), 
            value, width;
        
        var getWidth = function(){
            // Calculate width in percentage
            value = getValue();            
            width = (value/max) * 100;
            width = width + '%';
            return width;
        }
        
        var setWidth = function(){
            progressBar.css({ width: getWidth() });
        }
        
        $(document).on('scroll', setWidth);
        $(window).on('resize', function(){
            // Need to reset the Max attr
            max = getMax();
            setWidth();
        });
    }
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();
        var target = this.hash,
        $target = $(target);
        $('html, body').stop().animate({
            'scrollTop': $target.offset().top-90
        }, 1200)
    });
    $(".progress-ring__circle").css({
        "transition": "0.35s stroke-dashoffset",
        // axis compensation
        "transform": "rotate(-90deg)",
        "transform-origin": "50% 50%",
        "stroke-dasharray": `${circumference} ${circumference}`,
        "stroke-dashoffset": `${circumference}`
    });
    //console.log(document.getElementById("outreach-team").offsetTop); //this needs to be from TOP of page, but not working
});
//CIRCLE STUFF BELOW
$(document).scroll(function() {

    var collabelement = document.querySelector('#collab');

    var feedelement = document.querySelector('#feed');

    var artelement = document.querySelector('#art');

    var outerelement = document.querySelector('#outer');
    //detect when user scroll to top and set position to absolute else sets position to fixed
    $(".fixed-index").css({
        "top": $(this).scrollTop() > 700 ? $(this).scrollTop() > getOffsetTop(outerelement)-650 ? getOffsetTop(outerelement)-450 : "210px" : "900px", //THESE MUST BE 600px APART
        "left": "0",
        "position": $(this).scrollTop() > 700 ? $(this).scrollTop() > getOffsetTop(outerelement)-650 ? "absolute" : "fixed" : "absolute"
    });
    //console.log($(this).scrollTop()-getOffsetTop(element));
    //console.log(100*($(this).scrollTop()-getOffsetTop(collabelement)+90)/(getOffsetTop(feedelement)-getOffsetTop(collabelement)));
    //console.log($(this).scrollTop()); 
    //console.log(getOffsetTop(referenceselement));
    //console.log("next is this top");
    //console.log($(this).scrollTop());
    setProgressCollab(100*($(this).scrollTop()-getOffsetTop(collabelement)+90)/(getOffsetTop(feedelement)-getOffsetTop(collabelement)));

    setProgressFeed(100*($(this).scrollTop()-getOffsetTop(feedelement)+90)/(getOffsetTop(artelement)-getOffsetTop(feedelement)));

    setProgressArt(100*($(this).scrollTop()-getOffsetTop(artelement)+90)/(getOffsetTop(outerelement)-getOffsetTop(artelement)));

    //setProgress(100*getOffsetTop($(this))/getMax()); //this doesn;t wrok
    //console.log("hi");
    //circle
    
});
$(window).on('resize', function(){
    var collabelement = document.querySelector('#collab');

    var feedelement = document.querySelector('#feed');

    var artelement = document.querySelector('#art');

    var outerelement = document.querySelector('#outer');
    var wind = $(this)
    if(wind.width()<=1000) {
        $(".fixed-index").css({
            "display": "none"
        });
        $("#content").css({
            "padding-left": "0px"
        });
    }
    else {
        $(".fixed-index").css({
            "display": "block",
            "top": $(this).scrollTop() > 700 ? $(this).scrollTop() > getOffsetTop(outerelement)-650 ? "2533px" : "300px" : "900px", //THESE MUST BE 600px APART
            "left": "0",
            "position": $(this).scrollTop() > 700 ? $(this).scrollTop() > getOffsetTop(outerelement)-650 ? "absolute" : "fixed" : "absolute",

            "padding-left": "7%"
        });
        $("#content").css({
            "padding-left": "30%"
        });
    }
});

/*var circle = document.querySelector('cicle');
var radius = circle.r.baseVal.value;
var circumference = radius * 2 * Math.PI;*/
/*$(".progress-ring__circle").css({
    "transition": "0.35s stroke-dashoffset",
    // axis compensation
    "transform": "rotate(-90deg)",
    "transform-origin": "50% 50%",
    "stroke-dasharray": "${circumference} ${circumference}",
    "stroke-dashoffset": "${circumference}"
});*/


/*position:fixed;
  left:0;
  top: 500px;*/
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJjb2xsYWJvcmF0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmFkaXVzID0gMTg7XG52YXIgY2lyY3VtZmVyZW5jZSA9IDIgKiByYWRpdXMgKiBNYXRoLlBJO1xuY29uc29sZS5sb2coY2lyY3VtZmVyZW5jZSk7XG5mdW5jdGlvbiBnZXRPZmZzZXRUb3AoZWxlbWVudCkge1xuICAgIHZhciBkaXN0ZnJvbXRvcCA9IDA7XG4gICAgd2hpbGUoZWxlbWVudCkge1xuICAgICAgICBkaXN0ZnJvbXRvcCArPSAoZWxlbWVudC5vZmZzZXRUb3AgLSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50VG9wKTtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiBkaXN0ZnJvbXRvcDtcbn1cbmZ1bmN0aW9uIHNldFByb2dyZXNzQ29sbGFiKHBlcmNlbnQpIHtcbiAgICBpZihwZXJjZW50Pjk5LjgpIHtcbiAgICAgICAgcGVyY2VudCA9IDEwMDtcbiAgICAgICAgJChcIi5jb2xsYWItbGlua1wiKS5jc3Moe1xuICAgICAgICAgICAgXCJmb250LWZhbWlseVwiOiBcIkFyaWFsIFJvdW5kZWQgTVQgQm9sZFwiLFxuICAgICAgICAgICAgXCJmbG9hdFwiOiBcImxlZnRcIixcbiAgICAgICAgICAgIFwiY29sb3JcIjogXCJ3aGl0ZVwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLXRvcFwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1ib3R0b21cIjogXCIyMHB4XCIsXG4gICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogXCI4NXB4XCIsXG4gICAgICAgICAgICBcInRleHQtZGVjb3JhdGlvblwiOiBcIm5vbmVcIixcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcImJsb2NrXCIsXG4gICAgICAgICAgICBcInRleHQtYWxpZ25cIjogXCJsZWZ0XCJcbiAgICAgICAgfSlcbiAgICB9XG4gICAgZWxzZSBpZihwZXJjZW50PC0wLjUpIHtcbiAgICAgICAgJChcIi5jb2xsYWItbGlua1wiKS5jc3Moe1xuICAgICAgICAgICAgXCJmb250LWZhbWlseVwiOiBcIkFyaWFsIFJvdW5kZWQgTVQgQm9sZFwiLFxuICAgICAgICAgICAgXCJmbG9hdFwiOiBcImxlZnRcIixcbiAgICAgICAgICAgIFwiY29sb3JcIjogXCJ3aGl0ZVwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLXRvcFwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1ib3R0b21cIjogXCIyMHB4XCIsXG4gICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogXCI4NXB4XCIsXG4gICAgICAgICAgICBcInRleHQtZGVjb3JhdGlvblwiOiBcIm5vbmVcIixcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcImJsb2NrXCIsXG4gICAgICAgICAgICBcInRleHQtYWxpZ25cIjogXCJsZWZ0XCJcbiAgICAgICAgfSlcbiAgICAgICAgcGVyY2VudCA9IDA7XG4gICAgfVxuICAgIGVsc2Uge1xuXG4gICAgICAgICQoXCIuY29sbGFiLWxpbmtcIikuY3NzKHtcbiAgICAgICAgICAgIFwiZm9udC1mYW1pbHlcIjogXCJBcmlhbCBSb3VuZGVkIE1UIEJvbGRcIixcbiAgICAgICAgICAgIFwiZmxvYXRcIjogXCJsZWZ0XCIsXG4gICAgICAgICAgICBcImNvbG9yXCI6IFwiIzQ4NEVGRlwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLXRvcFwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1ib3R0b21cIjogXCIyMHB4XCIsXG4gICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogXCI4NXB4XCIsXG4gICAgICAgICAgICBcInRleHQtZGVjb3JhdGlvblwiOiBcIm5vbmVcIixcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcImJsb2NrXCIsXG4gICAgICAgICAgICBcInRleHQtYWxpZ25cIjogXCJsZWZ0XCJcbiAgICAgICAgfSkgXG4gICAgfVxuICAgIHZhciBvZmZzZXQgPSBjaXJjdW1mZXJlbmNlIC0gcGVyY2VudCAvIDEwMCAqIGNpcmN1bWZlcmVuY2U7XG4gICAgLy9jb25zb2xlLmxvZyhvZmZzZXQpO1xuICAgICQoXCIucHJvZ3Jlc3MtcmluZ19fY2lyY2xlLWNvbGxhYlwiKS5jc3Moe1xuICAgICAgICBcInRyYW5zaXRpb25cIjogXCIwcyBzdHJva2UtZGFzaG9mZnNldFwiLFxuICAgICAgICAvLyBheGlzIGNvbXBlbnNhdGlvblxuICAgICAgICBcInRyYW5zZm9ybVwiOiBcInJvdGF0ZSgtOTBkZWcpXCIsXG4gICAgICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcIjUwJSA1MCVcIixcbiAgICAgICAgXCJzdHJva2UtZGFzaGFycmF5XCI6IGAke2NpcmN1bWZlcmVuY2V9ICR7Y2lyY3VtZmVyZW5jZX1gLFxuICAgICAgICBcInN0cm9rZS1kYXNob2Zmc2V0XCI6IGAke29mZnNldH1gXG4gICAgfSk7XG5cbn1cbmZ1bmN0aW9uIHNldFByb2dyZXNzRmVlZChwZXJjZW50KSB7XG4gICAgaWYocGVyY2VudD45OS44KSB7XG4gICAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgICAgICQoXCIuZmVlZC1saW5rXCIpLmNzcyh7XG4gICAgICAgICAgICBcImZvbnQtZmFtaWx5XCI6IFwiQXJpYWwgUm91bmRlZCBNVCBCb2xkXCIsXG4gICAgICAgICAgICBcImZsb2F0XCI6IFwibGVmdFwiLFxuICAgICAgICAgICAgXCJjb2xvclwiOiBcIndoaXRlXCIsXG4gICAgICAgICAgICBcInBhZGRpbmctdG9wXCI6IFwiMjBweFwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1yaWdodFwiOiBcIjY4cHhcIixcbiAgICAgICAgICAgIFwidGV4dC1kZWNvcmF0aW9uXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwiYmxvY2tcIixcbiAgICAgICAgICAgIFwidGV4dC1hbGlnblwiOiBcImxlZnRcIlxuICAgICAgICB9KVxuICAgIH1cbiAgICBlbHNlIGlmKHBlcmNlbnQ8LTAuNSkge1xuICAgICAgICAkKFwiLmZlZWQtbGlua1wiKS5jc3Moe1xuICAgICAgICAgICAgXCJmb250LWZhbWlseVwiOiBcIkFyaWFsIFJvdW5kZWQgTVQgQm9sZFwiLFxuICAgICAgICAgICAgXCJmbG9hdFwiOiBcImxlZnRcIixcbiAgICAgICAgICAgIFwiY29sb3JcIjogXCJ3aGl0ZVwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLXRvcFwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1ib3R0b21cIjogXCIyMHB4XCIsXG4gICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogXCI2OHB4XCIsXG4gICAgICAgICAgICBcInRleHQtZGVjb3JhdGlvblwiOiBcIm5vbmVcIixcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcImJsb2NrXCIsXG4gICAgICAgICAgICBcInRleHQtYWxpZ25cIjogXCJsZWZ0XCJcbiAgICAgICAgfSlcbiAgICAgICAgcGVyY2VudCA9IDA7XG4gICAgfVxuICAgIGVsc2Uge1xuXG4gICAgICAgICQoXCIuZmVlZC1saW5rXCIpLmNzcyh7XG4gICAgICAgICAgICBcImZvbnQtZmFtaWx5XCI6IFwiQXJpYWwgUm91bmRlZCBNVCBCb2xkXCIsXG4gICAgICAgICAgICBcImZsb2F0XCI6IFwibGVmdFwiLFxuICAgICAgICAgICAgXCJjb2xvclwiOiBcIiM0ODRFRkZcIixcbiAgICAgICAgICAgIFwicGFkZGluZy10b3BcIjogXCIyMHB4XCIsXG4gICAgICAgICAgICBcInBhZGRpbmctYm90dG9tXCI6IFwiMjBweFwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLXJpZ2h0XCI6IFwiNjhweFwiLFxuICAgICAgICAgICAgXCJ0ZXh0LWRlY29yYXRpb25cIjogXCJub25lXCIsXG4gICAgICAgICAgICBcImRpc3BsYXlcIjogXCJibG9ja1wiLFxuICAgICAgICAgICAgXCJ0ZXh0LWFsaWduXCI6IFwibGVmdFwiXG4gICAgICAgIH0pIFxuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gY2lyY3VtZmVyZW5jZSAtIHBlcmNlbnQgLyAxMDAgKiBjaXJjdW1mZXJlbmNlO1xuICAgIC8vY29uc29sZS5sb2cob2Zmc2V0KTtcbiAgICAkKFwiLnByb2dyZXNzLXJpbmdfX2NpcmNsZS1mZWVkXCIpLmNzcyh7XG4gICAgICAgIFwidHJhbnNpdGlvblwiOiBcIjBzIHN0cm9rZS1kYXNob2Zmc2V0XCIsXG4gICAgICAgIC8vIGF4aXMgY29tcGVuc2F0aW9uXG4gICAgICAgIFwidHJhbnNmb3JtXCI6IFwicm90YXRlKC05MGRlZylcIixcbiAgICAgICAgXCJ0cmFuc2Zvcm0tb3JpZ2luXCI6IFwiNTAlIDUwJVwiLFxuICAgICAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogYCR7Y2lyY3VtZmVyZW5jZX0gJHtjaXJjdW1mZXJlbmNlfWAsXG4gICAgICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogYCR7b2Zmc2V0fWBcbiAgICB9KTtcblxufVxuZnVuY3Rpb24gc2V0UHJvZ3Jlc3NBcnQocGVyY2VudCkge1xuICAgIGlmKHBlcmNlbnQ+OTkuOCkge1xuICAgICAgICBwZXJjZW50ID0gMTAwO1xuICAgICAgICAkKFwiLmFydC1saW5rXCIpLmNzcyh7XG4gICAgICAgICAgICBcImZvbnQtZmFtaWx5XCI6IFwiQXJpYWwgUm91bmRlZCBNVCBCb2xkXCIsXG4gICAgICAgICAgICBcImZsb2F0XCI6IFwibGVmdFwiLFxuICAgICAgICAgICAgXCJjb2xvclwiOiBcIndoaXRlXCIsXG4gICAgICAgICAgICBcInBhZGRpbmctdG9wXCI6IFwiMjBweFwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1yaWdodFwiOiBcIjcwcHhcIixcbiAgICAgICAgICAgIFwidGV4dC1kZWNvcmF0aW9uXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwiYmxvY2tcIixcbiAgICAgICAgICAgIFwidGV4dC1hbGlnblwiOiBcImxlZnRcIlxuICAgICAgICB9KVxuICAgIH1cbiAgICBlbHNlIGlmKHBlcmNlbnQ8LTAuNSkge1xuICAgICAgICAkKFwiLmFydC1saW5rXCIpLmNzcyh7XG4gICAgICAgICAgICBcImZvbnQtZmFtaWx5XCI6IFwiQXJpYWwgUm91bmRlZCBNVCBCb2xkXCIsXG4gICAgICAgICAgICBcImZsb2F0XCI6IFwibGVmdFwiLFxuICAgICAgICAgICAgXCJjb2xvclwiOiBcIndoaXRlXCIsXG4gICAgICAgICAgICBcInBhZGRpbmctdG9wXCI6IFwiMjBweFwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1yaWdodFwiOiBcIjcwcHhcIixcbiAgICAgICAgICAgIFwidGV4dC1kZWNvcmF0aW9uXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwiYmxvY2tcIixcbiAgICAgICAgICAgIFwidGV4dC1hbGlnblwiOiBcImxlZnRcIlxuICAgICAgICB9KVxuICAgICAgICBwZXJjZW50ID0gMDtcbiAgICB9XG4gICAgZWxzZSB7XG5cbiAgICAgICAgJChcIi5hcnQtbGlua1wiKS5jc3Moe1xuICAgICAgICAgICAgXCJmb250LWZhbWlseVwiOiBcIkFyaWFsIFJvdW5kZWQgTVQgQm9sZFwiLFxuICAgICAgICAgICAgXCJmbG9hdFwiOiBcImxlZnRcIixcbiAgICAgICAgICAgIFwiY29sb3JcIjogXCIjNDg0RUZGXCIsXG4gICAgICAgICAgICBcInBhZGRpbmctdG9wXCI6IFwiMjBweFwiLFxuICAgICAgICAgICAgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjIwcHhcIixcbiAgICAgICAgICAgIFwicGFkZGluZy1yaWdodFwiOiBcIjcwcHhcIixcbiAgICAgICAgICAgIFwidGV4dC1kZWNvcmF0aW9uXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwiYmxvY2tcIixcbiAgICAgICAgICAgIFwidGV4dC1hbGlnblwiOiBcImxlZnRcIlxuICAgICAgICB9KSBcbiAgICB9XG4gICAgdmFyIG9mZnNldCA9IGNpcmN1bWZlcmVuY2UgLSBwZXJjZW50IC8gMTAwICogY2lyY3VtZmVyZW5jZTtcbiAgICAvL2NvbnNvbGUubG9nKG9mZnNldCk7XG4gICAgJChcIi5wcm9ncmVzcy1yaW5nX19jaXJjbGUtYXJ0XCIpLmNzcyh7XG4gICAgICAgIFwidHJhbnNpdGlvblwiOiBcIjBzIHN0cm9rZS1kYXNob2Zmc2V0XCIsXG4gICAgICAgIC8vIGF4aXMgY29tcGVuc2F0aW9uXG4gICAgICAgIFwidHJhbnNmb3JtXCI6IFwicm90YXRlKC05MGRlZylcIixcbiAgICAgICAgXCJ0cmFuc2Zvcm0tb3JpZ2luXCI6IFwiNTAlIDUwJVwiLFxuICAgICAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogYCR7Y2lyY3VtZmVyZW5jZX0gJHtjaXJjdW1mZXJlbmNlfWAsXG4gICAgICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogYCR7b2Zmc2V0fWBcbiAgICB9KTtcblxufVxudmFyIGdldE1heCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiAkKGRvY3VtZW50KS5oZWlnaHQoKSAtICQod2luZG93KS5oZWlnaHQoKTtcbn1cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG4gICAgXG4gICAgXG4gICAgLy9jb25zb2xlLmxvZyhnZXRNYXgpO1xuICAgIHZhciBnZXRWYWx1ZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7XG4gICAgfVxuICAgIFxuICAgIGlmKCdtYXgnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Byb2dyZXNzJykpe1xuICAgICAgICAvLyBCcm93c2VyIHN1cHBvcnRzIHByb2dyZXNzIGVsZW1lbnRcbiAgICAgICAgdmFyIHByb2dyZXNzQmFyID0gJCgncHJvZ3Jlc3MnKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFNldCB0aGUgTWF4IGF0dHIgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgICAgIHByb2dyZXNzQmFyLmF0dHIoeyBtYXg6IGdldE1heCgpIH0pO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLm9uKCdzY3JvbGwnLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgLy8gT24gc2Nyb2xsIG9ubHkgVmFsdWUgYXR0ciBuZWVkcyB0byBiZSBjYWxjdWxhdGVkXG4gICAgICAgICAgICBwcm9ncmVzc0Jhci5hdHRyKHsgdmFsdWU6IGdldFZhbHVlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgXG4gICAgICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIC8vIE9uIHJlc2l6ZSwgYm90aCBNYXgvVmFsdWUgYXR0ciBuZWVkcyB0byBiZSBjYWxjdWxhdGVkXG4gICAgICAgICAgICBwcm9ncmVzc0Jhci5hdHRyKHsgbWF4OiBnZXRNYXgoKSwgdmFsdWU6IGdldFZhbHVlKCkgfSk7XG4gICAgICAgIH0pOyAgIFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHByb2dyZXNzQmFyID0gJCgnLnByb2dyZXNzLWJhcicpLCBcbiAgICAgICAgICAgIG1heCA9IGdldE1heCgpLCBcbiAgICAgICAgICAgIHZhbHVlLCB3aWR0aDtcbiAgICAgICAgXG4gICAgICAgIHZhciBnZXRXaWR0aCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgd2lkdGggaW4gcGVyY2VudGFnZVxuICAgICAgICAgICAgdmFsdWUgPSBnZXRWYWx1ZSgpOyAgICAgICAgICAgIFxuICAgICAgICAgICAgd2lkdGggPSAodmFsdWUvbWF4KSAqIDEwMDtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKyAnJSc7XG4gICAgICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHZhciBzZXRXaWR0aCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBwcm9ncmVzc0Jhci5jc3MoeyB3aWR0aDogZ2V0V2lkdGgoKSB9KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJChkb2N1bWVudCkub24oJ3Njcm9sbCcsIHNldFdpZHRoKTtcbiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUnLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgLy8gTmVlZCB0byByZXNldCB0aGUgTWF4IGF0dHJcbiAgICAgICAgICAgIG1heCA9IGdldE1heCgpO1xuICAgICAgICAgICAgc2V0V2lkdGgoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgICQoJ2FbaHJlZl49XCIjXCJdJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmhhc2gsXG4gICAgICAgICR0YXJnZXQgPSAkKHRhcmdldCk7XG4gICAgICAgICQoJ2h0bWwsIGJvZHknKS5zdG9wKCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAnc2Nyb2xsVG9wJzogJHRhcmdldC5vZmZzZXQoKS50b3AtOTBcbiAgICAgICAgfSwgMTIwMClcbiAgICB9KTtcbiAgICAkKFwiLnByb2dyZXNzLXJpbmdfX2NpcmNsZVwiKS5jc3Moe1xuICAgICAgICBcInRyYW5zaXRpb25cIjogXCIwLjM1cyBzdHJva2UtZGFzaG9mZnNldFwiLFxuICAgICAgICAvLyBheGlzIGNvbXBlbnNhdGlvblxuICAgICAgICBcInRyYW5zZm9ybVwiOiBcInJvdGF0ZSgtOTBkZWcpXCIsXG4gICAgICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcIjUwJSA1MCVcIixcbiAgICAgICAgXCJzdHJva2UtZGFzaGFycmF5XCI6IGAke2NpcmN1bWZlcmVuY2V9ICR7Y2lyY3VtZmVyZW5jZX1gLFxuICAgICAgICBcInN0cm9rZS1kYXNob2Zmc2V0XCI6IGAke2NpcmN1bWZlcmVuY2V9YFxuICAgIH0pO1xuICAgIC8vY29uc29sZS5sb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvdXRyZWFjaC10ZWFtXCIpLm9mZnNldFRvcCk7IC8vdGhpcyBuZWVkcyB0byBiZSBmcm9tIFRPUCBvZiBwYWdlLCBidXQgbm90IHdvcmtpbmdcbn0pO1xuLy9DSVJDTEUgU1RVRkYgQkVMT1dcbiQoZG9jdW1lbnQpLnNjcm9sbChmdW5jdGlvbigpIHtcblxuICAgIHZhciBjb2xsYWJlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbGxhYicpO1xuXG4gICAgdmFyIGZlZWRlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZlZWQnKTtcblxuICAgIHZhciBhcnRlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FydCcpO1xuXG4gICAgdmFyIG91dGVyZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNvdXRlcicpO1xuICAgIC8vZGV0ZWN0IHdoZW4gdXNlciBzY3JvbGwgdG8gdG9wIGFuZCBzZXQgcG9zaXRpb24gdG8gYWJzb2x1dGUgZWxzZSBzZXRzIHBvc2l0aW9uIHRvIGZpeGVkXG4gICAgJChcIi5maXhlZC1pbmRleFwiKS5jc3Moe1xuICAgICAgICBcInRvcFwiOiAkKHRoaXMpLnNjcm9sbFRvcCgpID4gNzAwID8gJCh0aGlzKS5zY3JvbGxUb3AoKSA+IGdldE9mZnNldFRvcChvdXRlcmVsZW1lbnQpLTY1MCA/IGdldE9mZnNldFRvcChvdXRlcmVsZW1lbnQpLTQ1MCA6IFwiMjEwcHhcIiA6IFwiOTAwcHhcIiwgLy9USEVTRSBNVVNUIEJFIDYwMHB4IEFQQVJUXG4gICAgICAgIFwibGVmdFwiOiBcIjBcIixcbiAgICAgICAgXCJwb3NpdGlvblwiOiAkKHRoaXMpLnNjcm9sbFRvcCgpID4gNzAwID8gJCh0aGlzKS5zY3JvbGxUb3AoKSA+IGdldE9mZnNldFRvcChvdXRlcmVsZW1lbnQpLTY1MCA/IFwiYWJzb2x1dGVcIiA6IFwiZml4ZWRcIiA6IFwiYWJzb2x1dGVcIlxuICAgIH0pO1xuICAgIC8vY29uc29sZS5sb2coJCh0aGlzKS5zY3JvbGxUb3AoKS1nZXRPZmZzZXRUb3AoZWxlbWVudCkpO1xuICAgIC8vY29uc29sZS5sb2coMTAwKigkKHRoaXMpLnNjcm9sbFRvcCgpLWdldE9mZnNldFRvcChjb2xsYWJlbGVtZW50KSs5MCkvKGdldE9mZnNldFRvcChmZWVkZWxlbWVudCktZ2V0T2Zmc2V0VG9wKGNvbGxhYmVsZW1lbnQpKSk7XG4gICAgLy9jb25zb2xlLmxvZygkKHRoaXMpLnNjcm9sbFRvcCgpKTsgXG4gICAgLy9jb25zb2xlLmxvZyhnZXRPZmZzZXRUb3AocmVmZXJlbmNlc2VsZW1lbnQpKTtcbiAgICAvL2NvbnNvbGUubG9nKFwibmV4dCBpcyB0aGlzIHRvcFwiKTtcbiAgICAvL2NvbnNvbGUubG9nKCQodGhpcykuc2Nyb2xsVG9wKCkpO1xuICAgIHNldFByb2dyZXNzQ29sbGFiKDEwMCooJCh0aGlzKS5zY3JvbGxUb3AoKS1nZXRPZmZzZXRUb3AoY29sbGFiZWxlbWVudCkrOTApLyhnZXRPZmZzZXRUb3AoZmVlZGVsZW1lbnQpLWdldE9mZnNldFRvcChjb2xsYWJlbGVtZW50KSkpO1xuXG4gICAgc2V0UHJvZ3Jlc3NGZWVkKDEwMCooJCh0aGlzKS5zY3JvbGxUb3AoKS1nZXRPZmZzZXRUb3AoZmVlZGVsZW1lbnQpKzkwKS8oZ2V0T2Zmc2V0VG9wKGFydGVsZW1lbnQpLWdldE9mZnNldFRvcChmZWVkZWxlbWVudCkpKTtcblxuICAgIHNldFByb2dyZXNzQXJ0KDEwMCooJCh0aGlzKS5zY3JvbGxUb3AoKS1nZXRPZmZzZXRUb3AoYXJ0ZWxlbWVudCkrOTApLyhnZXRPZmZzZXRUb3Aob3V0ZXJlbGVtZW50KS1nZXRPZmZzZXRUb3AoYXJ0ZWxlbWVudCkpKTtcblxuICAgIC8vc2V0UHJvZ3Jlc3MoMTAwKmdldE9mZnNldFRvcCgkKHRoaXMpKS9nZXRNYXgoKSk7IC8vdGhpcyBkb2Vzbjt0IHdyb2tcbiAgICAvL2NvbnNvbGUubG9nKFwiaGlcIik7XG4gICAgLy9jaXJjbGVcbiAgICBcbn0pO1xuJCh3aW5kb3cpLm9uKCdyZXNpemUnLCBmdW5jdGlvbigpe1xuICAgIHZhciBjb2xsYWJlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbGxhYicpO1xuXG4gICAgdmFyIGZlZWRlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZlZWQnKTtcblxuICAgIHZhciBhcnRlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FydCcpO1xuXG4gICAgdmFyIG91dGVyZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNvdXRlcicpO1xuICAgIHZhciB3aW5kID0gJCh0aGlzKVxuICAgIGlmKHdpbmQud2lkdGgoKTw9MTAwMCkge1xuICAgICAgICAkKFwiLmZpeGVkLWluZGV4XCIpLmNzcyh7XG4gICAgICAgICAgICBcImRpc3BsYXlcIjogXCJub25lXCJcbiAgICAgICAgfSk7XG4gICAgICAgICQoXCIjY29udGVudFwiKS5jc3Moe1xuICAgICAgICAgICAgXCJwYWRkaW5nLWxlZnRcIjogXCIwcHhcIlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgICQoXCIuZml4ZWQtaW5kZXhcIikuY3NzKHtcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcImJsb2NrXCIsXG4gICAgICAgICAgICBcInRvcFwiOiAkKHRoaXMpLnNjcm9sbFRvcCgpID4gNzAwID8gJCh0aGlzKS5zY3JvbGxUb3AoKSA+IGdldE9mZnNldFRvcChvdXRlcmVsZW1lbnQpLTY1MCA/IFwiMjUzM3B4XCIgOiBcIjMwMHB4XCIgOiBcIjkwMHB4XCIsIC8vVEhFU0UgTVVTVCBCRSA2MDBweCBBUEFSVFxuICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMFwiLFxuICAgICAgICAgICAgXCJwb3NpdGlvblwiOiAkKHRoaXMpLnNjcm9sbFRvcCgpID4gNzAwID8gJCh0aGlzKS5zY3JvbGxUb3AoKSA+IGdldE9mZnNldFRvcChvdXRlcmVsZW1lbnQpLTY1MCA/IFwiYWJzb2x1dGVcIiA6IFwiZml4ZWRcIiA6IFwiYWJzb2x1dGVcIixcblxuICAgICAgICAgICAgXCJwYWRkaW5nLWxlZnRcIjogXCI3JVwiXG4gICAgICAgIH0pO1xuICAgICAgICAkKFwiI2NvbnRlbnRcIikuY3NzKHtcbiAgICAgICAgICAgIFwicGFkZGluZy1sZWZ0XCI6IFwiMzAlXCJcbiAgICAgICAgfSk7XG4gICAgfVxufSk7XG5cbi8qdmFyIGNpcmNsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NpY2xlJyk7XG52YXIgcmFkaXVzID0gY2lyY2xlLnIuYmFzZVZhbC52YWx1ZTtcbnZhciBjaXJjdW1mZXJlbmNlID0gcmFkaXVzICogMiAqIE1hdGguUEk7Ki9cbi8qJChcIi5wcm9ncmVzcy1yaW5nX19jaXJjbGVcIikuY3NzKHtcbiAgICBcInRyYW5zaXRpb25cIjogXCIwLjM1cyBzdHJva2UtZGFzaG9mZnNldFwiLFxuICAgIC8vIGF4aXMgY29tcGVuc2F0aW9uXG4gICAgXCJ0cmFuc2Zvcm1cIjogXCJyb3RhdGUoLTkwZGVnKVwiLFxuICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcIjUwJSA1MCVcIixcbiAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogXCIke2NpcmN1bWZlcmVuY2V9ICR7Y2lyY3VtZmVyZW5jZX1cIixcbiAgICBcInN0cm9rZS1kYXNob2Zmc2V0XCI6IFwiJHtjaXJjdW1mZXJlbmNlfVwiXG59KTsqL1xuXG5cbi8qcG9zaXRpb246Zml4ZWQ7XG4gIGxlZnQ6MDtcbiAgdG9wOiA1MDBweDsqLyJdLCJmaWxlIjoiY29sbGFib3JhdGlvbnMuanMifQ==