<!Doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="lib/esl.js"></script>
    <script src="lib/uglify.js"></script>

    <style type="text/css">
        body {
            margin: 0;
            text-align: center;
        }
        #log {
            height: 500px;
            overflow-y: scroll;

            width: 600px;
            text-align: left;
            margin: 0 auto;

            line-height: 18px;
        }
    </style>
</head>
<body>

    <h1 id="tip">
        Building ....
    </h1>
    <div id="log"></div>

    <script>

        var search = window.location.search;

        var BUILD_CONFIG = {};
        if (search) {
            search = search.slice(search.indexOf('?') + 1);
            var params = search.split('&');
            for (var i = 0; i < params.length; i++) {
                var keyValue = params[i].split('=');
                var key = decodeURIComponent(keyValue[0]);
                var value = decodeURIComponent(keyValue[1]);
                BUILD_CONFIG[key.toLowerCase()] = parseURIValue(value);
            }
        }

        BUILD_CONFIG.version = BUILD_CONFIG.version || 'latest';

        var postfix = BUILD_CONFIG.dev ? '-dev' : '';

        require.config({
            paths: {
                'rollup': 'lib/rollup.browser',
                'transformDev': 'lib/transform-dev-bundle'
            },
            urlArgs: 'v=1611146952541'
        });

        require(['build']);

        function parseURIValue(value) { // for XSS
            return value.replace(/[^0-9a-zA-Z-_,.]/g, '');
        }

    </script>
</body>
</html>