doctype html
head
    meta(charset='utf-8')
    meta(name="robots" content="noindex")
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='viewport', content='width=device-width, initial-scale=1', user-scalable="no")
    link(rel='shortcut icon', href='#{cdnPayRoot}/#{ecWWWLang}/images/favicon.png?_v_=#{cdnPayVersion}')
    style.
        html, body {
            margin: 0;
            padding: 0
        }
        .main {
            text-align: center;
            margin: auto;
            position: absolute;
            top: 50%;
            font-weight: normal;
        }
        .content {
            transform: translate(-50%, -50%);
        }
body
    div.main
        div.content
            div
                span 请访问 Apache ECharts 的官网 &nbsp;
                a(id="a1", href="https://echarts.apache.org/zh/index.html") https://echarts.apache.org
            div
                span Please visit the official Apache ECharts Website at
                a(id="a2", href="https://echarts.apache.org/zh/index.html") https://echarts.apache.org
    script(type="text/javascript").
        document.getElementById('a1').setAttribute('href', 'https://echarts.apache.org/zh/index.html'+((!location.pathname||location.pathname==='/')?'':location.pathname+(!location.search?'':location.search)+(!location.hash?'':location.hash)));
        document.getElementById('a2').setAttribute('href', document.getElementById('a1').getAttribute('href'));

