(function () {
  //Inject code v5.2

  var highcharts = document.createElement('script');
  var injectVersion = 5;
  var cdn = 'https://code.highcharts.com/';
  var loaded = 0;  
  var encodedUrl = encodeURI('https://https://app.everviz.com//show/A-8iI0PU6');
  var chartCreated = false;
  var chart = false;
  var delayGen = 0;
  var scripts = [
    "highcharts.js",
    "modules/stock.js",
    "highcharts-more.js",
    "highcharts-3d.js",
    "modules/data.js",
    "modules/exporting.js",
    "modules/funnel.js",
    "modules/solid-gauge.js",
    "modules/export-data.js",
    "modules/accessibility.js"
  ];

  var inEverviz = window.location.origin === 'https://app.everviz.com';

  var legacyElementClassName = 'highcharts-A-8iI0PU6';
  var elementClassName = 'everviz-A-8iI0PU6';
  var externalCSS = [
    "https://app.everviz.com/static/fonts/radio-grotesk/style.css",
    "https://app.everviz.com/static/fonts/gordita/style.css",
    "https://app.everviz.com/resources/css/highcharts-data-table.css"
  ];

  var extraScripts = [
  "https://code.highcharts.com/modules/series-label.js",
  "https://app.everviz.com/resources/js/everviz-tooltip-helper.js",
  "https://app.everviz.com/resources/js/highcharts-scroll-animation.js",
  "https://app.everviz.com/resources/js/everviz-utils.js",
  "https://app.everviz.com/resources/js/highcharts-overrides.js"
  ];

  var options = {"title":{"text":"<div><br></div><div><span style=\"color: rgb(0, 71, 133);\">Countries moving away and towards Democracy since 1975</span></div>","align":"center","x":10,"useHTML":true},"subtitle":{"text":"","align":"left","x":10},"colors":["#235A61","#f23a3a","#2A2383","#24CBE5","#64E572","#FF9655","#FFF263","#27f1a6"],"legend":{"align":"center","verticalAlign":"top","itemMarginBottom":10,"x":0,"symbolRadius":2,"layout":"horizontal","itemStyle":{"fontFamily":"Default","color":"#004785","fontSize":"12px","fontWeight":"bold","fontStyle":"normal","cursor":"pointer","textOverflow":"ellipsis"}},"plotOptions":{"series":{"marker":{"enabled":false},"lineWidth":3,"allowPointSelect":true,"states":{"select":{"color":"#EFFFEF","borderColor":"black","dashStyle":"dot"}},"label":{"enabled":true},"groupPadding":0.5,"opacity":1,"pointInterval":1}},"chart":{"type":"column","inverted":false,"polar":false,"width":1000,"style":{"fontFamily":"Arial","color":"#333","fontSize":"12px","fontWeight":"normal","fontStyle":"normal"},"alignTicks":true,"borderColor":"#335cad00"},"series":[{"data":[],"turboThreshold":0,"_colorIndex":0,"_symbolIndex":0,"type":"column","color":"#f50707","dataLabels":{"enabled":false,"format":"{point.y}"},"borderWidth":1,"borderColor":"#f50707","colorByPoint":false,"pointWidth":10},{"data":[],"turboThreshold":0,"_colorIndex":1,"_symbolIndex":0,"type":"column","color":"#27f1a6","negativeColor":"#00000007","colorByPoint":false,"borderColor":"#27f1a6","borderWidth":1,"pointWidth":10,"rounded":false}],"credits":{"text":"Powered by everviz","href":"https://app.everviz.com/share/A-8iI0PU6","style":{"fontSize":14,"fontFamily":"RadioGrotesk Regular","color":"#172B4C"},"useHTML":true,"enabled":true},"lang":{"shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"months":["January","February","March","April","May","June","July","August","September","October","November","December"],"numericSymbols":["k","M","G","T","P","E"]},"tooltip":{"shared":false,"headerFormat":"<div>{x}</div>","pointFormat":"<div>{point.extra}</div>","footerFormat":"","useHTML":true},"everviz":{"tooltip":{"useEvervizHelper":true}},"stockTools":{"gui":{"enabled":false}},"navigation":{"bindingsClassName":"tools-container"},"exporting":{"url":"https://api.everviz.com/export"},"annotations":[],"xAxis":{"title":{"useHTML":true,"text":"﻿Source: International IDEA, The Global State of Democracy Indices, 1975-2020 (2021)"}},"yAxis":{"index":0,"opposite":false,"gridLineWidth":0,"title":{"align":"middle","useHTML":true,"text":"\n"},"type":"linear","labels":{"format":" "}},"data":{"csv":"\"null\";\"Countries moving away from Democracy\";\"Countries\";\"Countries moving towards Democracy\";\"Countries\"\n1976;-2;\"Argentina, Thailand\";1;\"Portugal\"\n1977;-1;\"Sri Lanka\";2;\"Spain, Cyprus\"\n1978;0;;3;\"Senegal, Burkina Faso, Dominican Republic\"\n1979;0;;4;\"Ecuador, Ghana, Zimbabwe, Bangladesh\"\n1980;-3;\"Burkina Faso, Zimbabwe, Turkey\";3;\"Honduras, Peru, Nigeria\"\n1981;-3;\"Ghana, Turkey, Bangladesh\";0;\n1982;0;;4;\"Mexico, Honduras, Zimbabwe, Thailand\"\n1983;-2;\"Nigeria, Zimbabwe\";3;\"Argentina, Turkey, Thailand\"\n1984;-1;\"Nigeria\";1;\"Uruguay\"\n1985;0;;6;\"El Salvador, Nicaragua, Brazil, Bolivia, Uruguay, Republic of Korea\"\n1986;-1;\"Malaysia\";5;\"Guatemala, Sudan, Bangladesh, The Philippines\"\n1987;-1;\"Fiji\";2;\"Zimbabwe, The Philippines\"\n1988;-1;\"Fiji\";3;\"Taiwan, Republic of Korea, Pakistan\"\n1989;-2;\"Zimbabwe, Sudan\";3;\"Chile, Poland, Sri Lanka\"\n1990;0;;13;\"Haiti, Nicaragua, Panama, Paraguay, Chile, East Germany, Hungary, Czechia, Bulgaria, Romania, Zimbabwe, Mongolia, Bangladesh\"\n1991;-1;\"Thailand\";6;\"Albania, Russia, Cape Verde, Benin, Zambia, Nepal\"\n1992;-1;\"Peru\";14;\"Albania, Croatia, Serbia, Romania, Lithuania, Azerbaijan, Mali, Burkina Faso, Republic of Congo, Kenya, Madagascar, Jordan, Thailand, Fiji\"\n1993;0;;9;\"Russia, Niger, Ghana, Central African Republic, Burundi, Lesotho, Madagascar, Yemen, Cambodia\"\n1994;-3;\"Dominican Republic, Gambia, Burundi\";6;\"North Macedonia, Moldova, Ukraine, Belarus, Togo, Malawi\"\n1995;-4;\"Belarus, Azerbaijan, Lesotho, Yemen\";3;\"Guinea Bissau, Tanzania, South Africa \"\n1996;-2;\"Albania, Niger\";7;\"Dominican Republic, Bosnia and Herzegovina, Cote d'Ivoire, Sierra Leone, Ghana, Palestine, Taiwan\"\n1997;-1;\"Republic of Congo\";3;\"Albania, Niger, Liberia\"\n1998;-3;\"Guinea Bissau, Sierra Leone, Togo\";1;\"Lesotho\"\n1999;-4;\"Haiti, Cote d'Ivoire, Lesotho, Pakistan\";4;\"Niger, Nigeria, Malaysia, Indonesia\"\n2000;-5;\"Belarus, Zimbabwe, Jordan, Pakistan, Fiji\";6;\"Mexico, Serbia, Guinea Bissau, Senegal, Cote d'Ivoire, Lebanon\"\n2001;0;;2;\"Peru, Fiji\"\n2002;-2;\"Guinea Bissau, Nepal\";4;\"Sierra Leone, Kenya, Lesotho, Algeria\"\n2003;-4;\"Cote d'Ivoire, Algeria, Central African Republic, Fiji\";1;\"Jordan\"\n2004;-3;\"Haiti, Russia, Liberia\";1;\"Georgia\"\n2005;0;;4;\"Guinea Bissau, Togo, Burundi, Iraq, Kuwait\"\n2006;-2;\"Thailand, Fiji\";5;\"Haiti, Mauritania, Liberia, Afghanistan, Kyrgyzstan\"\n2007;-3;\"Kyrgyzstan, Bangladesh, Thailand\";1;\"Democratic Republic of Congo\"\n2008;-5;\"Venezuela, Georgia, Mauritania, Kenya, Palestine, \";4;\"Pakistan, Bangladesh, Nepal, Thailand\"\n2009;-6;\"Honduras, Niger, Mozambique, Madagascar, Jordan, Cambodia\";2;\"Gabon, Mauritania\"\n2010;-5;\"Haiti, Guinea Bissau, Niger, Burundi, Sri Lanka\";2;\"Angola, Kyrgyzstan\"\n2011;-2;\"Burundi, Russia\";6;\"Niger, Guinea, Nigeria, Tunisia, Jordan, Thailand\"\n2012;-3;\"Guinea Bissau, Mali, Mauritania, \";9;\"Kosovo, Russia, Georgia, Cote d'Ivoire, Burundi, Lybia, Egypt, Myanmar, Cambodia\"\n2013;-3;\"Democratic Republic of Congo, Burundi, Cambodia\";6;\"Honduras, Mali, Cameroon, Kenya, Zimbabwe, Madagascar\"\n2014;-4;\"Lybia, Egypt, Bangladesh, Thailand\";2;\"Guinea Bissau, Mauritania\"\n2015;0;;5;\"Burkina Faso, Central African Republic, Myanmar, Sri Lanka, Fiji\"\n2016;-4;\"Nicaragua, Niger, Zambia, Afghanistan\";0;\n2017;-3;\"Honduras, Nicaragua, Venezuela\";1;\"The Gambia\"\n2018;-4;\"Mauritania, Cameroon, Zimbabwe, Turkey\";2;\"Armenia, Malaysia\"\n2019;-2;\"Bolivia, Benin\";1;\"Democratic Republic of Congo\"\n2020;-4;\"Serbia, Mali, Cote d'Ivoire, Democratic Republic of Congo\";2;\"Afghanistan, Bolivia\"","seriesMapping":[{"x":0,"y":1,"extra":2},{"x":0,"y":3,"extra":4}]}};
  var optionsStub;
  
  var templateDataSettings = {};

  var pluginCode = {};;

  function isScriptAlreadyIncluded(src){

    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
      if (scripts[i].hasAttribute('src')) {
        const scriptTag = scripts[i].getAttribute('src') || '';
        if ((scriptTag.indexOf(src) >= 0) || 
            (scriptTag.indexOf('highcharts.src.js') > -1 && src === 'highcharts.js') ||
            ((scriptTag.indexOf('stock/highstock.js') > -1) && src === 'modules/highstock.js') ||
             (inEverviz && src === 'highcharts.js')) {
          return true;
        }
      }
    }
    return false;
  }

  function loadCSS() {
    var cssLength = externalCSS.length;
    for(var i=0; i < cssLength; i++) {
      var css = document.createElement('link');
      css.rel  = 'stylesheet';
      css.type = "text/css";
      css.href = externalCSS[i];
      document.body.appendChild(css);
    }
  }

  function allScriptsIncluded(){
    var allScripts = scripts.concat(extraScripts);
    var haveAllScriptsBeenIncluded = true;
    var scriptsToUse = document.getElementsByTagName("script");
    for(var n=0;n<allScripts.length;n++) {
      if (!isScriptAlreadyIncluded(allScripts[n], scriptsToUse)) {
        haveAllScriptsBeenIncluded = false;
        break;
      }
    }
    return haveAllScriptsBeenIncluded;
  }

  function modifyOptions(){
    if (options.data) {
      options.data.complete = function(options) {
        const keys = Object.keys(templateDataSettings || {});
        keys.forEach(function(key) {
          const serie = options.series[key];
          (serie.data || []).forEach(function(d, i) {
            if (templateDataSettings[key].data && templateDataSettings[key].data[i]) {
              window["everviz"].merge(d, templateDataSettings[key].data[i]);
            }
          })
        })  
        return options;
      }
    }
    
    optionsStub = window["everviz"].createStub(options);
    window["everviz"].merge(options, pluginCode);
    if ('Chart' === 'Map') window["everviz"].modifyMapType(options);
  }

  function createChart() {
    if(chartCreated) return;

    var hasProj4 = extraScripts.indexOf('https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.6/proj4.js') > -1;

    if (!allScriptsIncluded() || 
      (hasProj4 && !window.proj4) || 
      !window["everviz"].merge ||
      !window["everviz"].createStub) {
      setTimeout(createChart, 200);
      return;
    }  

    modifyOptions();

    if (hasProj4) delayGen = 100;

    if (typeof window['Highcharts'] !== 'undefined') {
      
    if (window['everviz'] && window['everviz'].tooltipFormatter && 
        options.everviz && options.everviz.tooltip){
      if (!options.tooltip) options.tooltip = {};
      options.tooltip.formatter = window['everviz'].tooltipFormatter;
    }


      if (options && (options.lang || options.global)) {
        Highcharts.setOptions({
          global: options.global || {},
          lang: options.lang || {}
        });
      }

      if (Highcharts.Annotation) {
        Highcharts.Annotation.ControlPoint.prototype.redraw = function (animation) {
          this.graphic[animation ? 'animate' : 'attr'](
              this.options.positioner ? this.options.positioner.call(this, this.target) : null
          );
        };
      }

      chartCreated = true;
      window.HighchartsCloud.hasLoaded = true; 
      setTimeout(function(){
          if (window["everviz"] && window["everviz"].pendingAnim) {
            //TODO: change to using classes instead.
            //Bit of work to do there due to backward compatibility
            const elements = document.querySelectorAll(
              '#' + elementClassName + 
              ', #' + legacyElementClassName
            );
            const elementsArray = Array.prototype.slice.call(elements);
            elementsArray.forEach(function(element, elementIndex) {

              window["everviz"].updateRenderTo(optionsStub, element);
              chart = new Highcharts.Chart(optionsStub);

              window["everviz"].pendingAnim({
                id: element.id + '-' + elementIndex, 
                loaded: false,
                options: options,
                appear:function(){
                  chart.destroy();

                  window["everviz"].updateRenderTo(options, element);
                  chart = new Highcharts.Chart(options); 

                },
                element: element
              });
            });

          } else {
            const element = document.querySelector('#' + legacyElementClassName);
            if (element) new Highcharts.Chart(legacyElementClassName, options);  
            else new Highcharts.Chart(elementClassName, options);  
            
          }
      }, delayGen);
    }
  }

  function check(scripts, cb) {
    if (loaded === scripts.length) {
      if (cb) {
        cb();
      } else {


        //Create first project
        if (!window.HighchartsCloud.versions ||
           (window.HighchartsCloud.versions && window.HighchartsCloud.versions.length !== window.HighchartsCloud.ondone.length)) {
             
          for (var i = 0; i < window.HighchartsCloud.ondone.length; i++) {
            try {
              window.HighchartsCloud.ondone[i]();
            } catch(e) {
              console.error(e);
            }
          }
        } else {
          if (window.HighchartsCloud.stack.length) {
            window.HighchartsCloud.stack[0]();
            window.HighchartsCloud.stack.shift();
            const shouldRenderNextChart = window.HighchartsCloud.stack.length > 0;
            if (shouldRenderNextChart) {
              window.HighchartsCloud.stack[0](true);
            }
          }
        }
        
      }
    }
  }

  function loadScript(s, scripts, cb) {
    if (!s) next();
    
    function next() {
      ++loaded;
      if (loaded < scripts.length) {
        loadScript(scripts[loaded], scripts, cb);
      }
      check(scripts, cb);
    }

    if (isScriptAlreadyIncluded(s)) {
      return next();
    }

    var n = document.createElement('script');

    n.onload = function () {
      next();
    };

    if (s.indexOf('https') >= 0) {
      n.src = s;
    } else {
      n.src = cdn + s;
    }
    document.body.appendChild(n);
  }

  function loadExtraScripts(){
    if (extraScripts.length > 0) {
      loaded = 0;
      loadScript(extraScripts[0], extraScripts);
    } else {
      check(scripts);
    }
  }

  function loadExtraScriptsAndMakeChart(isUsingStack){
    loaded = 0;
    loadCSS();
    if (extraScripts.length > 0) {
      if (isUsingStack) {
        window.HighchartsCloud.stack[0] = createChart;
        loadScript(extraScripts[0], extraScripts);
      }
      else loadScript(extraScripts[0], extraScripts, createChart);
    } else {
      check(extraScripts);
    }
  }

  function getAllScripts(){
    var evervizScripts = [];
    var allScripts = scripts.map(function(script) {
      return 'highcharts/'+ script.replace('highcharts/highcharts.js', 'highcharts.js').replace('.js', '');
    }).concat(
      extraScripts.map(function(script) {
        if (script.indexOf('https://code.highcharts.com/') > -1) {
          return 'highcharts/'+ script.replace('https://code.highcharts.com/', '').replace('.js', '');
        } else if (script.indexOf('https://app.everviz.com/') > -1) {
          evervizScripts.push(script);
          return null;
        } else return script;
      }).filter(function(s) {
        return s !== null;
      })
    );

    allScripts.forEach(function(script) {
      if (window.HighchartsCloud.allScripts)
        window.HighchartsCloud.allScripts[script] = 1
    });

    return {
      allHighchartsScripts: allScripts,
      evervizScripts: evervizScripts
    }
  }

  function loadRequireJSScript(){
    require.config({
      packages: [{
        name: 'highcharts',
        main: 'highcharts'
      }],
      paths: {
        'highcharts': 'https://code.highcharts.com'
      }
    });

    const allScripts = getAllScripts();

    require(
      allScripts.allHighchartsScripts,
      function (Highcharts) {
        //Attach highcharts to the window for use in the everviz scripts
        window.Highcharts = Highcharts;
        if (allScripts && allScripts.evervizScripts.length) {
          require(allScripts.evervizScripts, function(){
            createChart();
            loadCSS();
          })
        } else {
          createChart();
          loadCSS();
        }
      }
    );
  }

  function loadInitialScript(){
    if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
      loadRequireJSScript();
    } else {
      getAllScripts()
      loadScript(scripts[0], scripts, loadExtraScripts);
      loadCSS();
    }
  }

  if (typeof window['HighchartsCloud'] === 'undefined') {
    window.HighchartsCloud = {
      ondone: [createChart],
      stack: [createChart],
      hasWrapped: false,
      hasLoaded: false,
      externalCSS: externalCSS,
      versions: [injectVersion],
      types: ['chart'],
      allScripts: {},
      projectUUIDs: {'A-8iI0PU6': 1},
    };

    loadInitialScript();

  } else {
    if (window.HighchartsCloud.externalCSS) window.HighchartsCloud.externalCSS.push(externalCSS);
    if (!window.HighchartsCloud.hasLoaded) {
      if (!window.HighchartsCloud.projectUUIDs) window.HighchartsCloud.projectUUIDs = {};

      if (!window.HighchartsCloud.projectUUIDs['A-8iI0PU6']) {

        window.HighchartsCloud.projectUUIDs['A-8iI0PU6'] = 1;
        window.HighchartsCloud.ondone.push(loadExtraScriptsAndMakeChart);
        if (window.HighchartsCloud.stack) {
          window.HighchartsCloud.stack.push(loadExtraScriptsAndMakeChart);
          window.HighchartsCloud.versions.push(injectVersion);
          window.HighchartsCloud.types.push('chart');
        }

      }
      if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
        getAllScripts()
        loadRequireJSScript();
      }
    }
    else {
      if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
        loadRequireJSScript();
      } else {
        getAllScripts()
        loadExtraScriptsAndMakeChart();
      }
    }
  }

}());
