<sub id=tCF1></sub>>>><button hidden=false id=tCF7>><video crossorigin="" poster="http://localhost:8080/misc/resources/compass.jpg">><style>
.c29:nth-child(n + 2) { -webkit-locale: "zh_CN";</style><script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
docElement = document.body ? document.body : document.documentElement;
function initCF() {
try { tCF44 = document.createElementNS("http://www.w3.org/1999/xhtml", "multicol"); } catch(e) {}
try { tCF44.setAttribute("class", "c29"); } catch(e) {}
try { docElement.appendChild(tCF44); } catch(e) {}
setTimeout("CFcrash()", 400);
}
window.onload = initCF;
function editFuzz() {
}
function CFcrash() {
try { if (tCF1 != docElement) tCF1.parentNode.removeChild(tCF1); } catch(e) {}
window.scrollBy(-484, -400);
try { tCF7.innerText = tCF44.textContent; } catch(e) {}
if (window.testRunner)
    testRunner.notifyDone();
}</script>
