(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/iYYUlpKPd');
  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 legacyElementClassName = 'highcharts-iYYUlpKPd';
  var elementClassName = 'everviz-iYYUlpKPd';
  var externalCSS = [
    "https://app.everviz.com/static/fonts/gordita/style.css",
    "https://app.everviz.com/resources/css/highcharts-data-table.css"
  ];

  var extraScripts = [
  "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>\t</div>","align":"left","x":10,"useHTML":true},"subtitle":{"text":"","align":"left","x":10},"colors":["#e50084","#2f818e","#01373f","#757575","#24CBE5","#64E572","#FF9655","#FFF263","#6AF9C4"],"legend":{"align":"center","verticalAlign":"bottom","itemMarginBottom":10,"x":0,"symbolRadius":2,"itemStyle":{"fontFamily":"'Fort', sans-serif","fontSize":14,"color":"#333333","cursor":"pointer","fontWeight":"bold","textOverflow":"ellipsis"},"layout":"horizontal","floating":false,"reversed":false,"rtl":false},"plotOptions":{"series":{"marker":{"enabled":false},"lineWidth":3,"allowPointSelect":true,"states":{"select":{"color":"#EFFFEF","borderColor":"black","dashStyle":"dot"}},"label":{"enabled":false},"dataLabels":{"style":{"fontSize":14}}},"line":{"lineWidth":4}},"chart":{"type":"line","style":{"fontFamily":"'Fort', sans-serif","fontWeight":"700","fontSize":"12px"}},"series":[{"turboThreshold":0,"type":"line","name":"Top 0.01%","data":[]},{"turboThreshold":0,"type":"line","name":"0.01%–0.1%","data":[]},{"turboThreshold":0,"type":"line","name":"0.1%–0.5%","data":[]},{"turboThreshold":0,"type":"line","name":"0.5%–1%","data":[]}],"credits":{"text":"everviz.com","href":"https://everviz.com","enabled":false},"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"],"thousandsSep":","},"tooltip":{"valueDecimals":0,"headerFormat":"<div><span style=\"font-size: 10px;\">{point.key}</span></div>","pointFormat":"<div>● {series.name}: <strong>${point.y}</strong></div>","footerFormat":"","useHTML":true,"shared":true,"style":{"color":"#39393a","fontSize":15}},"everviz":{"tooltip":{"useEvervizHelper":true}},"stockTools":{"gui":{"enabled":false}},"navigation":{"bindingsClassName":"tools-container","events":{}},"exporting":{"url":"https://api.everviz.com/export"},"annotations":[],"xAxis":{"labels":{"style":{"fontSize":14,"color":"#39393a"}},"title":{"style":{"fontSize":15,"color":"#39393a"}},"tickColor":"#39393a","lineColor":"#39393a"},"yAxis":{"title":{"useHTML":true,"text":""},"labels":{"style":{"fontSize":14,"color":"#39393a"}}},"data":{"csv":"\"Year\";\"Top 0.01%\";\"0.01%–0.1%\";\"0.1%–0.5%\";\"0.5%–1%\"\n1950;3323315.636;959831.8806;339165.9595;187969.3801\n1951;3585766.433;811515.362;324594.8309;182387.7881\n1952;3125066.953;746381.2096;309228.247;175393.7516\n1953;2884684.019;692392.4189;295932.7741;171850.2069\n1954;3482544.372;768828.5218;314502.9208;182401.831\n1955;4229469.305;856124.217;341129.9543;198866.4829\n1956;4029230.792;855569.2089;354756.5147;199711.6105\n1957;3529022.716;793429.9884;339006.3644;196552.0645\n1958;3533644.117;775835.998;330815.6641;191962.2678\n1959;4178198.276;876950.705;373158.3973;205158.3597\n1960;4127677.283;809632.0276;340793.3999;204136.4889\n1961;4973247.564;907047.1305;360237.5355;214740.8395\n1962;4272066.675;831596.6106;355293.7368;213042.447\n1963;4334509.076;840122.9164;364128.0166;220732.2353\n1964;5187440.5;916386.3687;399643.6107;246499.0733\n1965;6222702.26;1005439.869;425113.7506;264632.0688\n1966;5602273.49;1011210.037;416260.0417;256803.3426\n1967;6373813.291;1130372.859;449771.6687;275655.6846\n1968;7586339.792;1256842.018;483403.8819;288794.2848\n1969;7312520.88;1113562.421;440217.1585;272729.8554\n1970;4605866.437;913865.9051;401710.4998;256512.0685\n1971;5184776.929;969370.5926;416190.9658;263992.8088\n1972;5752155.835;1056578.116;446030.8476;279038.0167\n1973;4668436.769;1002110.002;439343.3704;283520.551\n1974;4184533.899;978393.5658;425977.2563;268118.5157\n1975;3815983.111;860401.0754;394789.8658;252851.3193\n1976;3991000.871;894586.2123;403090.9365;259153.6809\n1977;4333158.777;930107.0048;411572.3435;263476.9927\n1978;4094238.473;951710.1007;419918.9348;266700.7733\n1979;6636709.555;1109944.299;443454.9536;275468.677\n1980;5986356.137;1111489.364;438435.5436;269377.1654\n1981;6334171.98;1133774.504;425158.5154;258185.1144\n1982;7898669.02;1236105.916;431570.7486;257922.7908\n1983;8630367.677;1392821.671;459153.9071;267928.9605\n1984;10209067.98;1489373.546;480941.449;279712.7628\n1985;10893987.43;1668200.585;524574.509;296569.8873\n1986;17459240.3;2351138.285;681793.7015;344022.3403\n1987;9488856.554;1653058.594;565683.5136;319685.1459\n1988;14956586.6;2285282.086;691307.8435;355488.2437\n1989;12715408.46;2040192.812;657802.2522;353021.2008\n1990;11864130.04;1972101.4;650747.8926;344238.4889\n1991;9617767.355;1728689.546;597455.8963;331731.1277\n1992;12240562.06;1970408.016;642018.2418;345068.5308\n1993;11417536.27;1867692.135;621359.698;340866.3903\n1994;11477710.72;1894689.522;628999.0532;349891.253\n1995;12731240.32;2149728.54;693162.5366;378784.1214\n1996;16431015.47;2496711.965;761237.4482;406208.2307\n1997;20041507.46;2942376.733;848893.6866;438344.0315\n1998;23654862.8;3398791.146;932054.6564;471408.915\n1999;26612594.7;3794782.264;1012655.33;506232.9357\n2000;32851640.1;4176159.606;1064942.285;526610.5604\n2001;22299442.7;3126609.548;897251.2247;469614.2094\n2002;17960933.48;2667018.872;814158.4819;437533.3699\n2003;19846471;2762769.207;824662.9274;438418.3199\n2004;25939495.66;3400584.377;937483.9605;479241.4422\n2005;31979551.44;4057727.796;1058137.752;516986.1183\n2006;34945455.75;4357870.428;1124366.839;538646.4388\n2007;40058053.47;4600585.296;1167862.154;556007.9059\n2008;30099762.21;3564987.507;966702.2358;487790.7431\n2009;21338488.51;2679640.699;802385.2544;434770.3335\n2010;26734754.85;3032686.264;863047.5632;451341.2893\n2011;23995759.69;3049900.661;871803.3699;455264.2976\n2012;34049393.59;3841860.678;1007389.777;496766.0624\n2013;25417410.79;3139708.528;907195.5395;477956.596\n2014;29736684;3575418.889;989251.7862;504500.6719\n2015;31616430.96;3984217.95;1054964.635;534494.7749","seriesMapping":[{"x":0,"y":1},{"x":0,"y":2},{"x":0,"y":3},{"x":0,"y":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')) {
          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.yAxis && options.yAxis.length === 1) options.yAxis = options.yAxis[0];
    if (options.xAxis && options.xAxis.length === 1) options.xAxis = options.xAxis[0];
    if (options.zAxis && options.zAxis.length === 1) options.zAxis = options.zAxis[0];

    Highcharts.merge(true, options, {
  chart: {style: {fontFamily: "'Fort', sans-serif", fontWeight: "700",}},
  legend: {itemStyle: {fontFamily: "'Fort', sans-serif", fontSize: 14,}},
  plotOptions: {series: {dataLabels: {style: {fontSize: 14,}}}},
  tooltip: {style: {color: "#39393a", fontSize: 15,}},
  xAxis: {labels: {style: {fontSize: 14, color: "#39393a",}}, title: {style: {fontSize: 15, color: "#39393a",}}},
  yAxis: {labels: {style: {fontSize: 14, color: "#39393a",}}},
});



      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: {'iYYUlpKPd': 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['iYYUlpKPd']) {

        window.HighchartsCloud.projectUUIDs['iYYUlpKPd'] = 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();
      }
    }
  }

}());
