diff --git a/.gitignore b/.gitignore index a53d73ae..5c48c555 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,8 @@ fuzz-*-input fuzz-*-output fuzz-logs/ doc/papers + +# Coverage files +_coverage/ +*.coverage +bisect*.coverage diff --git a/_coverage/bisect180549166.coverage b/_coverage/bisect180549166.coverage deleted file mode 100644 index 45168b55..00000000 --- a/_coverage/bisect180549166.coverage +++ /dev/null @@ -1 +0,0 @@ -BISECT-COVERAGE-4 1 27 src/cbor/containers_cbor.ml 232 576 748 727 717 703 782 666 936 915 905 891 1012 849 305 340 385 433 463 493 525 585 623 808 1038 285 1150 1278 1293 1324 1311 1250 1436 1537 1529 1628 1640 1596 1721 1681 1818 1779 1915 1876 2057 2005 2014 1964 2325 2364 2405 2584 2540 2219 2201 2276 2257 2299 2337 2376 2417 2441 2446 2451 2495 2180 3325 3318 3387 3380 3479 3451 3426 3376 3350 3314 3553 3530 3166 3699 3820 3922 3936 4011 4081 4224 4208 4470 4463 4339 4374 4360 4193 4249 4167 4634 4618 4878 4871 4748 4782 4769 4603 4658 4577 4972 4992 5023 5199 5357 5437 5423 5530 5514 5607 5223 5249 5274 5294 5339 5319 5370 5451 5544 5620 5625 5630 5671 3802 3857 3957 4026 4095 4505 4911 5043 3673 5978 6266 6006 6117 6062 6081 6135 6038 6023 6338 5912 6292 5890 5845 6413 6442 6384 1398 6511 6501 6484 6564 6552 6770 6711 6668 6809 7008 7120 7108 7073 7226 7191 7340 7302 7388 7356 7270 7242 7159 7137 7041 7022 6984 6947 6940 7777 7742 7803 7709 7691 7667 7947 7920 8012 7999 8025 8186 8162 8106 8093 8119 8271 8256 8284 8370 8355 8383 8457 8469 8572 8739 8734 8701 8794 8789 8769 8595 8560 8536 7493 7528 7562 7591 7625 7860 7958 8054 8216 8314 8413 8488 7471 8830 6615 6594 232 4 0 0 0 0 0 0 2 1 1 2 1 1 0 1 3 0 5 10 4 2 0 1 6 32 22 174 174 0 174 174 82 61 61 233 233 233 13 13 7 7 10 10 41 41 0 41 13 13 7 0 13 0 220 164 220 13 13 7 10 0 0 0 13 220 3 3 5 5 1 2 3 5 8 3 8 3 11 220 100 6 6 9 34 57 16 8 8 47 39 39 16 8 16 10 5 3 3 8 5 5 5 3 5 8 8 8 31 3 11 11 5 5 7 1 2 1 1 3 26 11 5 7 0 0 0 0 100 6 9 34 24 8 8 31 220 2 2 6 4 2 2 0 4 4 41 2 41 41 43 15 15 15 82 0 0 0 46 46 112 112 112 1 90 9 9 9 2 2 2 2 1 1 2 3 2 5 9 14 90 104 104 2 2 0 2 2 1 1 1 8 8 8 10 10 5 5 5 24 24 24 5 5 5 7 7 4 0 0 0 4 4 4 0 4 51 1 1 1 1 3 1 8 5 24 5 7 55 112 46 46 46 \ No newline at end of file diff --git a/_coverage/bisect849246342.coverage b/_coverage/bisect849246342.coverage deleted file mode 100644 index 45168b55..00000000 --- a/_coverage/bisect849246342.coverage +++ /dev/null @@ -1 +0,0 @@ -BISECT-COVERAGE-4 1 27 src/cbor/containers_cbor.ml 232 576 748 727 717 703 782 666 936 915 905 891 1012 849 305 340 385 433 463 493 525 585 623 808 1038 285 1150 1278 1293 1324 1311 1250 1436 1537 1529 1628 1640 1596 1721 1681 1818 1779 1915 1876 2057 2005 2014 1964 2325 2364 2405 2584 2540 2219 2201 2276 2257 2299 2337 2376 2417 2441 2446 2451 2495 2180 3325 3318 3387 3380 3479 3451 3426 3376 3350 3314 3553 3530 3166 3699 3820 3922 3936 4011 4081 4224 4208 4470 4463 4339 4374 4360 4193 4249 4167 4634 4618 4878 4871 4748 4782 4769 4603 4658 4577 4972 4992 5023 5199 5357 5437 5423 5530 5514 5607 5223 5249 5274 5294 5339 5319 5370 5451 5544 5620 5625 5630 5671 3802 3857 3957 4026 4095 4505 4911 5043 3673 5978 6266 6006 6117 6062 6081 6135 6038 6023 6338 5912 6292 5890 5845 6413 6442 6384 1398 6511 6501 6484 6564 6552 6770 6711 6668 6809 7008 7120 7108 7073 7226 7191 7340 7302 7388 7356 7270 7242 7159 7137 7041 7022 6984 6947 6940 7777 7742 7803 7709 7691 7667 7947 7920 8012 7999 8025 8186 8162 8106 8093 8119 8271 8256 8284 8370 8355 8383 8457 8469 8572 8739 8734 8701 8794 8789 8769 8595 8560 8536 7493 7528 7562 7591 7625 7860 7958 8054 8216 8314 8413 8488 7471 8830 6615 6594 232 4 0 0 0 0 0 0 2 1 1 2 1 1 0 1 3 0 5 10 4 2 0 1 6 32 22 174 174 0 174 174 82 61 61 233 233 233 13 13 7 7 10 10 41 41 0 41 13 13 7 0 13 0 220 164 220 13 13 7 10 0 0 0 13 220 3 3 5 5 1 2 3 5 8 3 8 3 11 220 100 6 6 9 34 57 16 8 8 47 39 39 16 8 16 10 5 3 3 8 5 5 5 3 5 8 8 8 31 3 11 11 5 5 7 1 2 1 1 3 26 11 5 7 0 0 0 0 100 6 9 34 24 8 8 31 220 2 2 6 4 2 2 0 4 4 41 2 41 41 43 15 15 15 82 0 0 0 46 46 112 112 112 1 90 9 9 9 2 2 2 2 1 1 2 3 2 5 9 14 90 104 104 2 2 0 2 2 1 1 1 8 8 8 10 10 5 5 5 24 24 24 5 5 5 7 7 4 0 0 0 4 4 4 0 4 51 1 1 1 1 3 1 8 5 24 5 7 55 112 46 46 46 \ No newline at end of file diff --git a/_coverage/html/coverage.css b/_coverage/html/coverage.css deleted file mode 100644 index 35bb22a7..00000000 --- a/_coverage/html/coverage.css +++ /dev/null @@ -1,500 +0,0 @@ -:root, .light:root { - --main-background: #fff; - --code-background: transparent; - --line-numbers-background: rgba(0, 0, 0, 0.025); - --navbar-background: #eee; - - --meter-unvisited-color: #f9c3c3; - --meter-visited-color: #9ed09f; - --meter-separator-color: white; - - --color: #000; - --dirname-color: #bbb; - --stats-color: #aaa; - --underline-color: #ddd; - --visited-color: #eaffea; - --visited-number-color: rgba(64, 192, 64, 0.2); - --unvisited-color: #ffecec; - --unvisited-number-color: rgba(255, 128, 128, 0.5); - --somevisited-color: #ffd; - --highlight-color: #a0fbff; - --line-number-color: rgba(0, 0, 0, 0.4); - --unvisited-margin-color: #d69e9e; - --border: #eee; - --navbar-border: #ddd; - --code-color: #000; - --hljs-link: #6a737d; - --hljs-keyword: #d73a49; - --hljs-regexp: #032f62; - --hljs-title: #900; - --hljs-type: #6f42c1; - --hljs-meta: #22863a; - --hljs-variable: #005cc5; -} - -.dark:root { - --main-background: #202020; - --code-background: #222; - --line-numbers-background: rgba(0, 0, 0, 0.125); - --navbar-background: #202020; - - --meter-unvisited-color: #622; - --meter-visited-color: #252; - --meter-separator-color: black; - - --color: #bebebe; - --dirname-color: #666; - --stats-color: #555; - --underline-color: #444; - --visited-color: #002800; - --visited-number-color: #252; - --unvisited-color: #380000; - --unvisited-number-color: #822; - --somevisited-color: #303000; - --highlight-color: #303e3f; - --line-number-color: rgba(230, 230, 230, 0.3); - --unvisited-margin-color: #622; - --border: #333; - --navbar-border: #333; - --code-color: #ccc; - --hljs-link: #999; - --hljs-keyword: #cda869; - --hljs-regexp: #f9ee98; - --hljs-title: #dcdcaa; - --hljs-type: #ac885b; - --hljs-meta: #82aaff; - --hljs-variable: #cf6a4c; -} - -@media (prefers-color-scheme: dark) { - :root { - --main-background: #202020; - --code-background: #222; - --line-numbers-background: rgba(0, 0, 0, 0.125); - --navbar-background: #202020; - - --meter-unvisited-color: #622; - --meter-visited-color: #252; - --meter-separator-color: black; - - --color: #bebebe; - --dirname-color: #666; - --underline-color: #444; - --visited-color: #002800; - --visited-number-color: #252; - --unvisited-color: #380000; - --unvisited-number-color: #822; - --somevisited-color: #303000; - --highlight-color: #303e3f; - --line-number-color: rgba(230, 230, 230, 0.3); - --unvisited-margin-color: #622; - --border: #333; - --navbar-border: #333; - --code-color: #ccc; - --hljs-link: #999; - --hljs-keyword: #cda869; - --hljs-regexp: #f9ee98; - --hljs-title: #dcdcaa; - --hljs-type: #ac885b; - --hljs-meta: #82aaff; - --hljs-variable: #cf6a4c; - } -} - -body { - margin: 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 1.5em; - background-color: var(--main-background); -} - -pre { - margin: 0; - font-family: "Fira Code", "Cascadia Code", Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 13px; - color: var(--code-color); - cursor: text; -} - -code { - font-family: inherit; -} - -a { - text-decoration: none; - color: inherit; -} - -a:visited { - color: inherit; -} - -#header { - color: var(--color); -} - -h1 { - display: inline-block; - margin: 1.5em 1.5em 0.75em 1.5em; -} - -.dirname { - color: var(--dirname-color); -} - -h2 { - display: inline-block; - position: relative; - top: -1px; -} - -#footer { - margin: 1em 0 1em 4em; - color: #aaa; - font-size: 12px; -} - -#footer a { - color: #666; - border-bottom: 1px solid #ccc; -} - -#footer a:visited { - color: #666; -} - -#navbar { - position: fixed; - top: 0; - left: 0; - width: 1em; - height: 100%; - background-color: var(--navbar-background); - border-right: 1px solid var(--navbar-border); - cursor: pointer; -} - -#navbar span { - display: block; - position: absolute; - width: 100%; - height: 5px; -} - -#navbar .unvisited, #navbar .some-visited { - background-color: var(--unvisited-margin-color); -} - -#report { - border-top: 1px solid var(--border); - border-bottom: 1px solid var(--border); - overflow: hidden; -} - -#lines-layer { - position: absolute; - z-index: -100; - width: 100%; - background-color: var(--code-background); -} - -#lines-layer span { - display: inline-block; - width: 100%; -} - -a[id] { - display: block; - position: relative; - top: -5.5em; -} - -#lines-layer .unvisited { - background-color: var(--unvisited-color); -} - -#lines-layer .visited { - background-color: var(--visited-color); -} - -#lines-layer .some-visited { - background-color: var(--somevisited-color); -} - -a[id]:target + span { - -webkit-animation: highlight-blank 0.5s; - -moz-animation: highlight-blank 0.5s; - -o-animation: highlight-blank 0.5s; - animation: highlight-blank 0.5s; -} - -a[id]:target + .unvisited { - -webkit-animation: highlight-unvisited 0.5s; - -moz-animation: highlight-unvisited 0.5s; - -o-animation: highlight-unvisited 0.5s; - animation: highlight-unvisited 0.5s; -} - -a[id]:target + .visited { - -webkit-animation: highlight-visited 0.5s; - -moz-animation: highlight-visited 0.5s; - -o-animation: highlight-visited 0.5s; - animation: highlight-visited 0.5s; -} - -a[id]:target + .some-visited { - -webkit-animation: highlight-some-visited 0.5s; - -moz-animation: highlight-some-visited 0.5s; - -o-animation: highlight-some-visited 0.5s; - animation: highlight-some-visited 0.5s; -} - -@-webkit-keyframes highlight-blank { - from { background-color: var(--highlight-color); } - to { background-color: transparent; } -} - -@-moz-keyframes highlight-blank { - from { background-color: var(--highlight-color); } - to { background-color: transparent; } -} - -@-o-keyframes highlight-blank { - from { background-color: var(--highlight-color); } - to { background-color: transparent; } -} - -@keyframes highlight-blank { - from { background-color: var(--highlight-color); } - to { background-color: transparent; } -} - -@-webkit-keyframes highlight-unvisited { - from { background-color: var(--highlight-color); } - to { background-color: var(--unvisited-color); } -} - -@-moz-keyframes highlight-unvisited { - from { background-color: var(--highlight-color); } - to { background-color: var(--unvisited-color); } -} - -@-o-keyframes highlight-unvisited { - from { background-color: var(--highlight-color); } - to { background-color: var(--unvisited-color); } -} - -@keyframes highlight-unvisited { - from { background-color: var(--highlight-color); } - to { background-color: var(--unvisited-color); } -} - -@-webkit-keyframes highlight-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--visited-color); } -} - -@-moz-keyframes highlight-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--visited-color); } -} - -@-o-keyframes highlight-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--visited-color); } -} - -@keyframes highlight-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--visited-color); } -} - -@-webkit-keyframes highlight-some-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--somevisited-color); } -} - -@-moz-keyframes highlight-some-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--somevisited-color); } -} - -@-o-keyframes highlight-some-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--somevisited-color); } -} - -@keyframes highlight-some-visited { - from { background-color: var(--highlight-color); } - to { background-color: var(--somevisited-color); } -} - -#line-numbers { - float: left; - border-right: 1px solid var(--border); - margin-right: 1em; - color: var(--line-number-color); - background-color: var(--line-numbers-background); - text-align: right; -} - -#line-numbers a { - display: inline-block; - padding-left: 2.35em; - padding-right: 1em; - text-decoration: none; - color: var(--line-number-color); -} - -#line-numbers .unvisited { - background-color: var(--unvisted-number-color); -} - -#line-numbers .visited { - background-color: var(--visted-number-color); -} - -code span[data-count] { - background-color: var(--visited-number-color); -} - -code span[data-count="0"] { - background-color: var(--unvisited-number-color); -} - -#tool-tip { - display: none; - position: fixed; - padding: 0 0.25em; - background-color: black; - color: white; -} - -#tool-tip.visible { - display: block; -} - -#files { - padding: 1.5em 4em; - background-color: var(--code-background); - border-top: 1px solid var(--border); - border-bottom: 1px solid var(--border); -} - -.meter { - display: inline-block; - position: relative; - top: 3px; - width: 5em; - height: 1em; - background-color: var(--meter-unvisited-color); -} - -.covered { - display: inline-block; - position: absolute; - width: 50%; - height: 100%; - background-color: var(--meter-visited-color); - border-right: 1px solid var(--meter-separator-color); -} - -#files div { - display: flex; -} - -summary { - cursor: pointer; - display: flex; -} - -.summary-indicator { - display: inline-block; - width: 1em; - color: var(--color); -} - -/* Adds indentation to the directory tree */ -details > details, details > div { - margin-left: 1em; -} - -details > summary > .summary-indicator { - text-align: center; - font-weight: bold; -} - -details > summary > .summary-indicator::before { - content: "+"; -} - -details[open] > summary > .summary-indicator::before { - content: "-"; -} - -.percentage { - display: inline-block; - min-width: 7.5em; - margin: 0 0.5em; - font-size: 90%; - color: var(--color); -} - -.stats { - display: inline-block; - font-size: 70%; - color: var(--stats-color); -} - -#files a { - text-decoration: none; - border-bottom: 1px solid var(--underline-color); - color: var(--color); -} - -.hljs-link, -.hljs-comment, -.hljs-quote { - color: var(--hljs-link); -} - -.hljs-built_in, -.hljs-builtin-name, -.hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: var(--hljs-keyword); -} - -.hljs-number, -.hljs-literal, -.hljs-variable, -.hljs-template-variable, -.hljs-tag .hljs-attr { - color: var(--hljs-variable); -} - -.hljs-regexp, -.hljs-string, -.hljs-doctag { - color: var(--hljs-regexp); -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: var(--hljs-title); -} - -.hljs-type, -.hljs-class .hljs-title { - color: var(--hljs-type); -} - -.hljs-meta, -.hljs-tag, -.hljs-name, -.hljs-attribute { - color: var(--hljs-meta); -} diff --git a/_coverage/html/coverage.js b/_coverage/html/coverage.js deleted file mode 100644 index ef272543..00000000 --- a/_coverage/html/coverage.js +++ /dev/null @@ -1,164 +0,0 @@ -function tool_tip_element() -{ - var element = document.querySelector("#tool-tip"); - if (element === null) { - element = document.createElement("div"); - element.id = "tool-tip"; - document.querySelector("body").appendChild(element); - } - - return element; -}; - -var tool_tip = tool_tip_element(); -var html = document.getElementsByTagName("html")[0]; - -function attach_tool_tip() -{ - document.querySelector("body").onmousemove = function (event) - { - var element = event.target; - if (element.dataset.count === undefined) - element = event.target.parentNode; - - if (element.dataset.count && element.dataset.count !== "0") { - tool_tip.textContent = element.dataset.count; - tool_tip.classList.add("visible"); - - if (event.clientY < html.clientHeight - 48) - tool_tip.style.top = event.clientY + 7 + "px"; - else - tool_tip.style.top = event.clientY - 32 + "px"; - - tool_tip.style.left = event.clientX + 7 + "px"; - } - else - tool_tip.classList.remove("visible"); - } -}; - -attach_tool_tip(); - -function move_line_to_cursor(cursor_y, line_number) -{ - var id = "L" + line_number; - - var line_anchor = - document.querySelector("a[id=" + id + "] + span"); - if (line_anchor === null) - return; - - var line_y = line_anchor.getBoundingClientRect().top + 18; - - var y = window.scrollY; - window.location = "#" + id; - window.scrollTo(0, y + line_y - cursor_y); -}; - -function handle_navbar_clicks() -{ - var line_count = document.querySelectorAll("a[id]").length; - var navbar = document.querySelector("#navbar"); - - if (navbar === null) - return; - - navbar.onclick = function (event) - { - event.preventDefault(); - - var line_number = - Math.floor(event.clientY / navbar.clientHeight * line_count + 1); - - move_line_to_cursor(event.clientY, line_number); - }; -}; - -handle_navbar_clicks(); - -function handle_line_number_clicks() -{ - document.querySelector("body").onclick = function (event) - { - if (event.target.tagName != "A") - return; - - var line_number_location = event.target.href.search(/#L[0-9]+\$/); - if (line_number_location === -1) - return; - - var anchor = event.target.href.slice(line_number_location); - - event.preventDefault(); - - var y = window.scrollY; - window.location = anchor; - window.scrollTo(0, y); - }; -}; - -handle_line_number_clicks(); - -function handle_collapsible_click() -{ - document.querySelectorAll("summary").forEach( - function (summary) - { - summary.onclick = function (event) - { - var details = summary.parentElement; - - var all_open = function (sub_details) { - var all_are_open = true; - for (let details of sub_details) { - all_are_open = - all_are_open && - details.hasAttribute('open'); - } - return all_are_open; - }; - - var all_toggle = function (sub_details, toggle) { - for (let details of sub_details) { - if (toggle) - details.removeAttribute('open'); - else - details.setAttribute('open', ''); - } - }; - - // ctrl-click toggles the state of the folder and all sub-folders, recursively: - // - if all sub-folders are opened, then all sub-folders are closed - // - if at least one sub-folder is closed (or the folder itself), - // then all sub-folders are opened - if (event.ctrlKey) { - var sub_details = Array.prototype.slice.call( - details.querySelectorAll("details") - ); - sub_details.push(details); - all_toggle(sub_details, all_open(sub_details)); - return false; - } - - // shift-click toggles the state of all immediate sub-folders: - // - if the folder is closed, just open it - // - if the folder is opened: - // - if all sub-folders are opened, then all sub-folders are closed - // - if at least one sub-folder is closed, then all sub-folders are opened - if (event.shiftKey && details.hasAttribute('open')) { - details.setAttribute('open', ''); - var sub_details = - Array.prototype.filter.call( - details.querySelectorAll("details"), - function (sub_details) { - return sub_details.parentNode === details; - } - ); - all_toggle(sub_details, all_open(sub_details)); - return false; - } - }; - }); -} - -handle_collapsible_click(); diff --git a/_coverage/html/highlight.pack.js b/_coverage/html/highlight.pack.js deleted file mode 100644 index 2e55d491..00000000 --- a/_coverage/html/highlight.pack.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! highlight.js v9.15.8 | BSD3 License | git.io/hljslicense */ -!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var f=[],u=Object.keys,N={},c={},n=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"
":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){a+=""}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("reasonml",function(r){var e="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(r){return r.split("").map(function(r){return"\\"+r}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",t={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},i="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={cN:"number",r:0,v:[{b:i},{b:"\\(\\-"+i+"\\)"}]},b={cN:"operator",r:0,b:c},o=[{cN:"identifier",r:0,b:e},b,s],l=[r.QSM,b,{cN:"module",b:"\\b"+a,rB:!0,e:".",c:[{cN:"identifier",b:a,r:0}]}],u=[{cN:"module",b:"\\b"+a,rB:!0,e:".",r:0,c:[{cN:"identifier",b:a,r:0}]}],_={cN:"function",r:0,k:t,v:[{b:"\\s(\\(\\.?.*?\\)|"+e+")\\s*=>",e:"\\s*=>",rB:!0,r:0,c:[{cN:"params",v:[{b:e},{b:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,r:0,c:[{cN:"params",r:0,v:[{b:e,e:"(,|\\n|\\))",r:0,c:[b,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,r:0,c:u}]}]}]},{b:"\\(\\.\\s"+e+"\\)\\s*=>"}]};l.push(_);var N={cN:"constructor",b:a+"\\(",e:"\\)",i:"\\n",k:t,c:[r.QSM,b,{cN:"params",b:"\\b"+e}]},d={cN:"pattern-match",b:"\\|",rB:!0,k:t,e:"=>",r:0,c:[N,b,{r:0,cN:"constructor",b:a}]},z={cN:"module-access",k:t,rB:!0,v:[{b:"\\b("+a+"\\.)+"+e},{b:"\\b("+a+"\\.)+\\(",e:"\\)",rB:!0,c:[_,{b:"\\(",e:"\\)",skip:!0}].concat(l)},{b:"\\b("+a+"\\.)+{",e:"}"}],c:l};return u.push(z),{aliases:["re"],k:t,i:"(:\\-|:=|\\${|\\+=)",c:[r.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",r:0},r.QSM,{cN:"literal",b:"\\(\\)",r:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",r:0,c:o},{cN:"literal",b:"\\[",e:"\\]",r:0,c:o},N,{cN:"operator",b:n,i:"\\-\\->",r:0},s,r.CLCM,d,_,{cN:"module-def",b:"\\bmodule\\s+"+e+"\\s+"+a+"\\s+=\\s+{",e:"}",rB:!0,k:t,r:0,c:[{cN:"module",r:0,b:a},{b:"{",e:"}",skip:!0}].concat(l)},z]}}); \ No newline at end of file