fix(ui): go-to-line popover, selection overlap, copy icon, date and checkout layout

- Go to line: themed popover under the file toolbar (line or line:column,
  range check) instead of Ace's unthemed prompt
- Code selection: no per-box outline, so multi-line selections no longer
  overlap at the joins; single-line matches keep an inset outline
- My work: copy-link is an icon button (URL in the tooltip); phone cards
  drop the URL row and truncate long names
- Date fields: drop WebKit's native button styling so they fit their column
- Submit bar: the checkout note gets its own line under the button

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Thomas DurieuxandClaude Opus 5.5 committed 2026-11-09 10:33:06 +00:00
1 parent aaf47da4dc
commit 2600bfa2f6
8 files changed
+124 -30

No files matched your search

+2 -2
View File
@@ -1,8 +1,8 @@
{
"core.min.js": "core.d23af1c652.min.js",
"vendor.min.js": "vendor.b8035c37ee.min.js",
"vendor.min.js": "vendor.6e02155922.min.js",
"mermaid.min.js": "mermaid.a7356d5ed1.min.js",
"all.min.css": "all.fa085d4104.min.css",
"all.min.css": "all.799f8ceeb8.min.css",
"markdown.min.js": "markdown.6c8dfb7b1d.min.js",
"pdf.min.js": "pdf.4d9cc6ff49.min.js",
"notebook.min.js": "notebook.c3144c18ae.min.js",
+1 -1
View File
@@ -6,4 +6,4 @@
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unsLine truncated
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{contentLine truncated
*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{contentLine truncated
+64
View File
@@ -12458,3 +12458,67 @@ span.redact, .hero-mock .redact { vertical-align: -.12em !important; }
.paper-table-dashboard .cell-actions > .ended-row { grid-area: link; display: flex; justify-content: space-between; width: 100%; margin: 0; padding: 6px 6px 6px 12px; border-radius: 8px; border: 1px dashed var(--border-color); }
.paper-table-dashboard .paper-table-row.repo-inactive .cell-expires { display: none !important; }
}
/* ── Fix: date fields on iOS Safari ──
WebKit draws <input type=date> as a native button with its own height, centred text and an
intrinsic min-width, so it ignores width:100% and overflows its column. Make it a plain field. */
input.form-control[type="date"] {
-webkit-appearance: none; appearance: none;
display: block; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%;
height: 40px; min-height: 40px; line-height: 1.25; text-align: left;
}
input.form-control[type="date"]::-webkit-date-and-time-value { text-align: left; margin: 0; min-height: 1.25em; }
input.form-control[type="date"]::-webkit-datetime-edit { padding: 0; }
.hosting-date > input.form-control[type="date"] { justify-self: stretch; }
/* My work: the copy-link control is an icon button like Open and Edit (the URL is in its tooltip). */
.paper-table-dashboard .cell-actions > .copy-url {
display: inline-flex !important; align-items: center !important; justify-content: center !important;
width: 36px !important; height: 36px !important; min-width: 0 !important; max-width: none !important;
padding: 0 !important; margin: 0 !important; border: 0 !important; border-radius: 8px !important;
background: transparent !important; color: var(--ink-soft) !important; box-shadow: none !important;
}
.paper-table-dashboard .cell-actions > .copy-url:hover { background: rgba(0, 0, 0, .05) !important; color: var(--color) !important; }
.dark-mode .paper-table-dashboard .cell-actions > .copy-url:hover { background: rgba(255, 255, 255, .07) !important; }
.paper-table-dashboard .cell-actions > .copy-url .project-type-svg { width: 18px; height: 18px; margin: 0 !important; }
@media (max-width: 767px) {
.paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto auto auto !important; grid-template-areas: "name copy edit more" "meta meta meta meta" !important; }
.paper-table.paper-table-dashboard .paper-table-row.repo-inactive { grid-template-areas: "name copy edit more" "meta meta meta meta" "link link link link" !important; }
.paper-table-dashboard .cell-actions > .copy-url { grid-area: copy; align-self: start; width: 40px !important; height: 40px !important; margin-top: -4px !important; justify-self: auto !important; }
}
.paper-table-dashboard .cell-actions > .copy-url .project-type-svg { width: 16px !important; height: 16px !important; }
@media (max-width: 767px) {
.paper-table-dashboard .anon-title { min-width: 0; }
.paper-table.paper-table-dashboard .anon-title .repo-name { display: block !important; min-width: 0 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; word-break: normal !important; overflow-wrap: normal !important; }
}
/* Code viewer selection: Ace draws a multi-line selection as several boxes. An outline (box-shadow)
on each box overlaps its neighbours and darkens the joins, so multi-line selections are a plain
fill; a single-line selection (e.g. the current find match, ace_br15) keeps an inset outline. */
.ace_editor .ace_marker-layer .ace_selection, .dark-mode .ace_editor .ace_marker-layer .ace_selection { box-shadow: none !important; border-radius: 0 !important; }
.ace_editor .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(170, 115, 15, .75) !important; border-radius: 3px !important; }
.dark-mode .ace_editor .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; }
.ace_editor.ace-chrome .ace_marker-layer .ace_selection, .ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { box-shadow: none !important; border-radius: 0 !important; }
.ace_editor.ace-chrome .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(170, 115, 15, .75) !important; border-radius: 3px !important; }
.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; border-radius: 3px !important; }
/* Go to line popover (replaces Ace's unthemed prompt). */
.file-card .file-card-head { position: relative; }
.file-card:not(.is-code) .file-card-head { position: sticky; }
.goto-pop { position: absolute; z-index: 30; top: calc(100% + 6px); right: 12px; width: 260px; max-width: calc(100vw - 24px); margin: 0;
padding: 12px; display: grid; gap: 6px; background: var(--paper-card, #fff); border: 1px solid var(--border-color); border-radius: 10px;
box-shadow: 0 12px 32px rgba(26, 24, 21, .16); }
.dark-mode .goto-pop { box-shadow: 0 12px 32px rgba(0, 0, 0, .5); }
.goto-label { margin: 0; font: 600 12.5px var(--font-sans); color: var(--color); }
.goto-input { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--control-border, var(--border-color)); border-radius: 7px;
background: var(--bg-color, transparent); color: var(--color); font: 500 14px var(--font-mono, ui-monospace, monospace); outline: none; }
.goto-input:focus { border-color: var(--accent, #1F6B66); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #1F6B66) 22%, transparent); }
.goto-input[aria-invalid="true"] { border-color: #b91c1c; }
.goto-hint { font-size: 12px; color: var(--ink-soft); }
.goto-hint.is-error { color: #b91c1c; }
.dark-mode .goto-input[aria-invalid="true"] { border-color: #f87171; }
.dark-mode .goto-hint.is-error { color: #f87171; }
/* Submit bar: the checkout note gets its own line under the button instead of a one-word column. */
.anonymize-form-col .anonymize-submit-bar:has(> .checkout-return-note) { flex-wrap: wrap !important; row-gap: 6px !important; }
.anonymize-submit-bar .checkout-return-note { order: 3; flex: 1 0 100%; margin: 0 !important; font-size: 12px; text-align: center; white-space: normal; }
+2 -2
View File
@@ -129,7 +129,7 @@
Expires <svg class="project-type-svg sort-direction" aria-hidden="true" v-if="isSortedBy(&#x27;options.expirationDate&#x27;)" :class="{'ascending': !sortDesc()}"><use href="#project-icon-arrow"></use></svg>
</button>
</div>
<div role="columnheader" class="col-link">Link</div>
<div role="columnheader" class="col-link"><span class="sr-only">Actions</span></div>
</div>
<!-- Loading skeleton: keeps the layout stable while the three lists load -->
@@ -190,7 +190,7 @@
<button type="button" class="ended-action" v-if="item?.status == 'removed'" @click.stop="refreshItem(item)">Enable</button>
<button type="button" class="ended-action" v-if="item?.status == 'expired'" @click.stop="extendItem(item)">Extend</button>
</div>
<button type="button" class="copy-url" v-if="item._viewUrl &amp;&amp; !(item?._statusKey == 'expired' || item?._statusKey == 'removed')" @click.stop="copyLink(item)" :disabled="!!copyingId" :title="'Copy anonymous link: ' + item._viewUrl" :aria-label="'Copy anonymous link for ' + item._label"><span class="copy-url-text">{{ copyingId === item._type + ':' + item._id ? 'Copied' : item._viewUrl.replace(/^https?:\/\/[^/]+/, '').replace(/\/$/, '') }}</span><svg class="project-type-svg" aria-hidden="true"><use :href="copyingId === item._type + ':' + item._id ? '#ui-icon-check' : '#project-icon-copy'"></use></svg></button>
<button type="button" class="copy-url" v-if="item._viewUrl &amp;&amp; !(item?._statusKey == 'expired' || item?._statusKey == 'removed')" @click.stop="copyLink(item)" :disabled="!!copyingId" :title="'Copy link: ' + item._viewUrl" :aria-label="'Copy anonymous link for ' + item._label"><span class="sr-only" aria-live="polite">{{ copyingId === item._type + ':' + item._id ? 'Link copied' : '' }}</span><svg class="project-type-svg" aria-hidden="true"><use :href="copyingId === item._type + ':' + item._id ? '#ui-icon-check' : '#project-icon-copy'"></use></svg></button>
<button type="button" class="project-details-button" v-if="item._broken" @click.stop="showProjectDetails(item)" :data-project-actions="encodeURIComponent(item._type + ':' + item._id)" :aria-controls="projectDetailsId(item)" :aria-expanded="selectedProject === item">Details</button>
<a class="row-edit row-open" v-if="item._viewUrl &amp;&amp; !(item?._statusKey == 'expired' || item?._statusKey == 'removed')" :href="safeUrl(item._viewUrl)" target="_blank" rel="noopener" :title="'Open what reviewers see'" :aria-label="'Open anonymous page for ' + item._label"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-external-link"></use></svg></a>
<a class="row-edit" v-if="item?._editUrl &amp;&amp; !item?._broken" :href="safeUrl(item._editUrl)" :title="'Edit ' + item._name" :aria-label="'Edit ' + item._name"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-edit"></use></svg></a>
+5
View File
@@ -83,6 +83,11 @@
</div>
</div>
</div>
<form class="goto-pop" v-if="gotoOpen &amp;&amp; type != 'html'" role="dialog" aria-label="Go to line" @submit.prevent="submitGoto()">
<label class="goto-label" for="goto-input">Go to line</label>
<input id="goto-input" class="goto-input" type="text" inputmode="numeric" autocomplete="off" spellcheck="false" :placeholder="'1–' + fmt?.number(typeof content === 'string' ? content.split('\n').length : 1)" :aria-invalid="gotoError ? 'true' : 'false'" v-model="gotoValue" @keydown.esc.prevent.stop="closeGoto()">
<span class="goto-hint" :class="{ 'is-error': gotoError }">{{ gotoError || 'Line, or line:column' }}</span>
</form>
</header>
<div class="file-card-body" v-if="type != 'html'" v-code-editor="{ content: content, options: aceOption }"></div>
<div class="md-find-bar" v-if="type == 'html' &amp;&amp; mdFindOpen" role="search">
+23 -2
View File
@@ -2646,11 +2646,13 @@ export const exploreController = function (state, http, location, params, html,
if (state.symbolsOpen && !e.target.closest?.(".symbols")) state.symbolsOpen = false;
if (state.moreOpen && !e.target.closest?.(".tb-more")) state.moreOpen = false;
if (state.tocOpen && !e.target.closest?.(".tb-toc-m")) state.tocOpen = false;
// The ⋯ menu item that opens it is removed on click, so ignore detached targets.
if (state.gotoOpen && e.target.isConnected && !e.target.closest?.(".goto-pop, .btn-goto, .tb-more")) state.gotoOpen = false;
if (state.accountOpen && !e.target.closest?.(".acct")) state.accountOpen = false;
if (state.helpOpen && !e.target.closest?.(".vb-help")) state.helpOpen = false;
});
listen(document, "keydown", (e) => {
if (e.key === "Escape") { state.symbolsOpen = false; state.moreOpen = false; state.tocOpen = false; state.accountOpen = false; state.helpOpen = false; }
if (e.key === "Escape") { state.symbolsOpen = false; state.moreOpen = false; state.tocOpen = false; state.gotoOpen = false; state.accountOpen = false; state.helpOpen = false; }
if ((e.ctrlKey || e.metaKey) && !e.altKey && e.key && e.key.toLowerCase() === "f" && state.type === "html" && window.document.querySelector(".reading-layout")) {
e.preventDefault();
state.toggleMdFind(true);
@@ -3085,11 +3087,30 @@ export const exploreController = function (state, http, location, params, html,
window.dispatchEvent(new HashChangeEvent("hashchange"));
};
// Go to line: a small popover in the file header (Ace's own prompt ignores the site theme).
state.gotoLine = function () {
if (!state.codeEditor) return;
state.moreOpen = false;
state.gotoError = "";
state.gotoValue = String(state.codeEditor.getCursorPosition().row + 1);
state.gotoOpen = true;
setTimeout(() => { const el = window.document.getElementById("goto-input"); if (el) { el.focus(); el.select(); } }, 0);
};
state.closeGoto = function () {
state.gotoOpen = false;
state.gotoError = "";
state.codeEditor?.focus();
};
state.submitGoto = function () {
const editor = state.codeEditor;
if (!editor) return;
const m = /^\s*:?\s*(\d+)\s*(?:[:,]\s*(\d+))?\s*$/.exec(state.gotoValue || "");
const lines = editor.session.getLength();
if (!m || +m[1] < 1 || +m[1] > lines) { state.gotoError = "Enter a line from 1 to " + lines; return; }
editor.gotoLine(+m[1], m[2] ? Math.max(0, +m[2] - 1) : 0, true);
state.gotoOpen = false;
state.gotoError = "";
editor.focus();
editor.execCommand("gotoline");
};
// Root listing above the README: folders first, then files.
state.rootEntries = function () {
+3
View File
@@ -8,6 +8,9 @@ export function initializeTemplate(name, state) {
state.dirExpanded = false;
state.moreOpen = false;
state.tocOpen = false;
state.gotoOpen = false;
state.gotoValue = "";
state.gotoError = "";
state.mdFindOpen = false;
state.mdFindQuery = "";
state.mdFindTotal = 0;
+24 -23
View File
@@ -1,34 +1,34 @@
"use strict";(()=>{var Rd=Object.defineProperty;var Dd=(e,t)=>{for(var o in t)Rd(e,o,{get:t[o],enumerable:!0})};var pe=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var fe={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};function Si(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ni(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,p,f,g,y,b,m=!0,E,P=i.defer(),k=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(L=>L.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let v=()=>m&&e.user?.username===b;function S(){m=!1,r=p=f=void 0,P.resolve(),s.clearTimeout(E)}e.on("dispose",S),e.on("routeLeave",S),e.watch(()=>e.user?.username,L=>{!b&&L?b=L:b&&L!==b&&(S(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let _=()=>({timeout:P.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":f}}),M=L=>L?.status===404?"Artifact linking is not available on this server.":L?.status===401?"Sign in, then open a new artifact link from your submission.":L?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!m||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;b=e.user.username;let L=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(L)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,p=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(E),y||(y=k());try{let q=(await o.get("/api/review-consent/csrf",{timeout:P.promise})).data;if(!v())return;if(f=q.csrf,e.handoffEnabled=q.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(f||""))throw new Error("invalid_csrf");let G=(await o.post("/api/review-consent/preview",{repositoryId:L,intent:{...r,requestId:y}},_())).data;if(!v())return;if(!G||typeof G.ticket!="string"||!G.ticket||G.ticket.length>8192||typeof G.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(G.policy?.access)||!Number.isSafeInteger(G.policy.version)||!Number.isFinite(Date.parse(G.policy.retainUntil))||!Number.isFinite(Date.parse(G.expiresAt))||Date.parse(G.expiresAt)<=Date.now()||Date.parse(G.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");p=G.ticket,g=k(),e.preview={repositoryName:G.repositoryName,policy:{...G.policy},expiresAt:G.expiresAt},E=s.setTimeout(()=>{m&&(e.expired=!0)},Math.max(0,Date.parse(G.expiresAt)-Date.now()))}catch(q){v()&&(e.error=M(q))}finally{v()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!v()||e.busy||e.saved||!p||!e.acceptAccesLine truncated
`))),e[zt]=An(s);let r=i||s.props&&s.props.type==="number";nn(e,t?"change":"input",a=>{a.target.composing||e[zt](xs(e.value,o,r))}),(o||r)&&nn(e,"change",()=>{e.value=xs(e.value,o,r)}),t||(nn(e,"compositionstart",Ac),nn(e,"compositionend",ca),nn(e,"change",ca))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[xo];delete e[xo],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[zt](xs(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[zt]=An(a),e.composing)return;let p=(r||e.type==="number")&&!/^0\d/.test(e.value)?En(e.value):e.value,f=t??"";if(p===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===f)||(e.value=f)}},ti={deep:!0,created(e,t,o){e[zt]=An(o),nn(e,"change",()=>{let i=e._modelValue,s=vo(e),r=e.checked,a=e[zt];if(ge(i)){let p=Do(i,s),f=p!==-1;if(r&&!f)a(i.concat(s));else if(!r&&f){let g=[...i];g.splice(p,1),a(g)}}else if(St(i)){let p=new Set(i);r?p.add(s):p.delete(s),a(p)}else a(ga(e,r))})},mounted:pa,beforeUpdate(e,t,o){e[zt]=An(o),pa(e,t,o)}};function pa(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(ge(t))s=Do(t,i.props.value)>-1;else if(St(t))s=t.has(i.props.value);else{if(t===o)return;s=Nt(t,ga(e,!0))}e.checked!==s&&(e.checked=s)}var fn={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,nn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>o?En(vo(f)):vo(f)),r=e.multiple,a=r?St(e._modelValue)?new Set(s):s:s[0],p=e._pendingValue=[r,r?ge(a)?s.slice():s:a];try{e[zt](a)}finally{Ge(()=>{e._pendingValue===p&&(e._pendingValue=void 0)})}}),e[zt]=An(i)},mounted(e,{value:t}){fa(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[zt]=An(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!Oc(t,o[1],o[0]))&&fa(e,t)}};function Oc(e,t,o){if(!o)return Nt(e,t);if(ge(e))return Nt(e,t);if(St(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function fa(e,t){let o=e.multiple,i=ge(t);if(!(o&&!i&&!St(t))){for(let s=0,r=e.options.length;s<r;s++){let a=e.options[s],p=vo(a);if(o)if(i){let f=typeof p;f==="string"||f==="number"?a.selected=t.some(g=>String(g)===String(p)):a.selected=Do(t,p)>-1}else a.selected=t.has(p);else if(Nt(vo(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function vo(e){return"_value"in e?e._value:e.value}function ga(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var Pc=["ctrl","shift","alt","meta"],Ic={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Pc.some(o=>e[`${o}Key`]&&!t.includes(o))},ae=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a<t.length;a++){let p=Ic[t[a]];if(p&&p(s,t))return}return e(s,...r)}))},Mc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},yt=(e,t)=>{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Pt(s.key);if(t.some(a=>a===r||Mc[a]===r))return e(s)}))},Vc=je({patchProp:Dc},cc),ma;function qc(){return ma||(ma=Kr(Vc))}var ya=((...e)=>{let t=qc().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=$c(i);if(!s)return;let r=t._component;!ke(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,Lc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function Lc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function $c(e){return $e(e)?document.querySelector(e):e}var vn=typeof document<"u";function wa(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&wa(e.default)}var Oe=Object.assign;function ts(e,t){let o={};for(let i in t){let s=t[i];o[i]=Ct(s)?s.map(e):e(s)}return o}var Pn=()=>{},Ct=Array.isArray;function si(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var ka=/#/g,Fc=/&/g,Bc=/\//g,zc=/=/g,Hc=/\?/g,Ca=/\+/g,jc=/%5B/g,Gc=/%5D/g,Ea=/%5E/g,Wc=/%60/g,Sa=/%7B/g,Kc=/%7C/g,Na=/%7D/g,Yc=/%20/g;function ii(e){return e==null?"":encodeURI(""+e).replace(Kc,"|").replace(jc,"[").replace(Gc,"]")}function Ra(e){return ii(e).replace(Sa,"{").replace(Na,"}").replace(Ea,"^")}function ni(e){return ii(e).replace(Ca,"%2B").replace(Yc,"+").replace(ka,"%23").replace(Fc,"%26").replace(Wc,"`").replace(Sa,"{").replace(Na,"}").replace(Ea,"^")}function Jc(e){return ni(e).replace(zc,"%3D")}function Qc(e){return iLine truncated
"use strict";(()=>{var Rd=Object.defineProperty;var Dd=(e,t)=>{for(var o in t)Rd(e,o,{get:t[o],enumerable:!0})};var pe=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var fe={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",editor:"/script/editor.4f142d3adc.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js"};function Si(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ni(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,p,f,g,y,b,m=!0,E,P=i.defer(),k=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(L=>L.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let v=()=>m&&e.user?.username===b;function S(){m=!1,r=p=f=void 0,P.resolve(),s.clearTimeout(E)}e.on("dispose",S),e.on("routeLeave",S),e.watch(()=>e.user?.username,L=>{!b&&L?b=L:b&&L!==b&&(S(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let _=()=>({timeout:P.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":f}}),M=L=>L?.status===404?"Artifact linking is not available on this server.":L?.status===401?"Sign in, then open a new artifact link from your submission.":L?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!m||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;b=e.user.username;let L=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(L)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,p=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(E),y||(y=k());try{let q=(await o.get("/api/review-consent/csrf",{timeout:P.promise})).data;if(!v())return;if(f=q.csrf,e.handoffEnabled=q.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(f||""))throw new Error("invalid_csrf");let G=(await o.post("/api/review-consent/preview",{repositoryId:L,intent:{...r,requestId:y}},_())).data;if(!v())return;if(!G||typeof G.ticket!="string"||!G.ticket||G.ticket.length>8192||typeof G.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(G.policy?.access)||!Number.isSafeInteger(G.policy.version)||!Number.isFinite(Date.parse(G.policy.retainUntil))||!Number.isFinite(Date.parse(G.expiresAt))||Date.parse(G.expiresAt)<=Date.now()||Date.parse(G.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");p=G.ticket,g=k(),e.preview={repositoryName:G.repositoryName,policy:{...G.policy},expiresAt:G.expiresAt},E=s.setTimeout(()=>{m&&(e.expired=!0)},Math.max(0,Date.parse(G.expiresAt)-Date.now()))}catch(q){v()&&(e.error=M(q))}finally{v()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!v()||e.busy||e.saved||!p||!e.acceptAccesLine truncated
`))),e[zt]=An(s);let r=i||s.props&&s.props.type==="number";nn(e,t?"change":"input",a=>{a.target.composing||e[zt](xs(e.value,o,r))}),(o||r)&&nn(e,"change",()=>{e.value=xs(e.value,o,r)}),t||(nn(e,"compositionstart",Ac),nn(e,"compositionend",ca),nn(e,"change",ca))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[xo];delete e[xo],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[zt](xs(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[zt]=An(a),e.composing)return;let p=(r||e.type==="number")&&!/^0\d/.test(e.value)?En(e.value):e.value,f=t??"";if(p===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===f)||(e.value=f)}},ti={deep:!0,created(e,t,o){e[zt]=An(o),nn(e,"change",()=>{let i=e._modelValue,s=vo(e),r=e.checked,a=e[zt];if(ge(i)){let p=Do(i,s),f=p!==-1;if(r&&!f)a(i.concat(s));else if(!r&&f){let g=[...i];g.splice(p,1),a(g)}}else if(St(i)){let p=new Set(i);r?p.add(s):p.delete(s),a(p)}else a(ga(e,r))})},mounted:pa,beforeUpdate(e,t,o){e[zt]=An(o),pa(e,t,o)}};function pa(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(ge(t))s=Do(t,i.props.value)>-1;else if(St(t))s=t.has(i.props.value);else{if(t===o)return;s=Nt(t,ga(e,!0))}e.checked!==s&&(e.checked=s)}var fn={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,nn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>o?En(vo(f)):vo(f)),r=e.multiple,a=r?St(e._modelValue)?new Set(s):s:s[0],p=e._pendingValue=[r,r?ge(a)?s.slice():s:a];try{e[zt](a)}finally{Ge(()=>{e._pendingValue===p&&(e._pendingValue=void 0)})}}),e[zt]=An(i)},mounted(e,{value:t}){fa(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[zt]=An(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!Oc(t,o[1],o[0]))&&fa(e,t)}};function Oc(e,t,o){if(!o)return Nt(e,t);if(ge(e))return Nt(e,t);if(St(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function fa(e,t){let o=e.multiple,i=ge(t);if(!(o&&!i&&!St(t))){for(let s=0,r=e.options.length;s<r;s++){let a=e.options[s],p=vo(a);if(o)if(i){let f=typeof p;f==="string"||f==="number"?a.selected=t.some(g=>String(g)===String(p)):a.selected=Do(t,p)>-1}else a.selected=t.has(p);else if(Nt(vo(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function vo(e){return"_value"in e?e._value:e.value}function ga(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var Pc=["ctrl","shift","alt","meta"],Ic={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Pc.some(o=>e[`${o}Key`]&&!t.includes(o))},ae=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a<t.length;a++){let p=Ic[t[a]];if(p&&p(s,t))return}return e(s,...r)}))},Mc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ct=(e,t)=>{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Pt(s.key);if(t.some(a=>a===r||Mc[a]===r))return e(s)}))},Vc=je({patchProp:Dc},cc),ma;function qc(){return ma||(ma=Kr(Vc))}var ya=((...e)=>{let t=qc().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=$c(i);if(!s)return;let r=t._component;!ke(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,Lc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function Lc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function $c(e){return $e(e)?document.querySelector(e):e}var vn=typeof document<"u";function wa(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&wa(e.default)}var Oe=Object.assign;function ts(e,t){let o={};for(let i in t){let s=t[i];o[i]=Ct(s)?s.map(e):e(s)}return o}var Pn=()=>{},Ct=Array.isArray;function si(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var ka=/#/g,Fc=/&/g,Bc=/\//g,zc=/=/g,Hc=/\?/g,Ca=/\+/g,jc=/%5B/g,Gc=/%5D/g,Ea=/%5E/g,Wc=/%60/g,Sa=/%7B/g,Kc=/%7C/g,Na=/%7D/g,Yc=/%20/g;function ii(e){return e==null?"":encodeURI(""+e).replace(Kc,"|").replace(jc,"[").replace(Gc,"]")}function Ra(e){return ii(e).replace(Sa,"{").replace(Na,"}").replace(Ea,"^")}function ni(e){return ii(e).replace(Ca,"%2B").replace(Yc,"+").replace(ka,"%23").replace(Fc,"%26").replace(Wc,"`").replace(Sa,"{").replace(Na,"}").replace(Ea,"^")}function Jc(e){return ni(e).replace(zc,"%3D")}function Qc(e){return iLine truncated
${JSON.stringify(e)}${t?`
while being at
`+JSON.stringify(t):""}`},[Be.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${ip(t)}" via a navigation guard.`},[Be.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[Be.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[Be.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function hn(e,t){return Oe(new Error,{type:e,[Va]:!0},t)}function Ht(e,t){return e instanceof Error&&Va in e&&(t==null||!!(e.type&t))}var sp=["params","query","hash"];function ip(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of sp)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function qa(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;i<o.length;++i){let s=o[i].replace(Ca," "),r=s.indexOf("="),a=On(r<0?s:s.slice(0,r)),p=r<0?null:On(s.slice(r+1));if(a in t){let f=t[a];Ct(f)||(f=t[a]=[f]),f.push(p)}else t[a]=p}return t}function ui(e){let t="";for(let o in e){let i=e[o];if(o=Jc(o),i==null){i!==void 0&&(t+=(t.length?"&":"")+o);continue}(Ct(i)?i.map(s=>s&&ni(s)):[i&&ni(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function La(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=Ct(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var $a=Symbol(""),ci=Symbol(""),is=Symbol(""),rs=Symbol(""),as=Symbol("");function In(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function Xt(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((p,f)=>{let g=m=>{m===!1?f(hn(Be.NAVIGATION_ABORTED,{from:o,to:t})):m instanceof Error?f(m):op(m)?f(hn(Be.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(a&&i.enterCallbacks[s]===a&&typeof m=="function"&&a.push(m),p())},y=r(()=>e.call(i&&i.instances[s],t,o,g)),b=Promise.resolve(y);e.length<3&&(b=b.then(g)),b.catch(m=>f(m))})}function ls(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let p in a.components){let f=a.components[p];if(!(t!=="beforeRouteEnter"&&!a.instances[p]))if(wa(f)){let g=(f.__vccOpts||f)[t];g&&r.push(Xt(g,o,i,a,p,s))}else{let g=f();r.push(()=>g.then(y=>{if(!y)throw new Error(`Couldn't resolve component "${p}" at "${a.path}"`);let b=Uc(y)?y.default:y;a.mods[p]=y,a.components[p]=b;let m=(b.__vccOpts||b)[t];return m&&Xt(m,o,i,a,p,s)()}))}}return r}function Ua(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;a<r;a++){let p=t.matched[a];p&&(e.matched.find(g=>mn(g,p))?i.push(p):o.push(p));let f=e.matched[a];f&&(t.matched.find(g=>mn(g,f))||s.push(f))}return[o,i,s]}var rp=()=>location.protocol+"//"+location.host;function Qa(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,p=s.slice(a);return p[0]!=="/"&&(p="/"+p),ri(p,"")}return ri(o,e)+i+s}function ap(e,t,o,i){let s=[],r=[],a=null,p=({state:m})=>{let E=Qa(e,location),P=o.value,k=t.value,v=0;if(m){if(o.value=E,t.value=m,a&&a===P){a=null;return}v=k?m.position-k.position:0}else i(E);s.forEach(S=>{S(o.value,P,{delta:v,type:os.pop,direction:v?v>0?ss.forward:ss.back:ss.unknown})})};function f(){a=o.value}function g(m){s.push(m);let E=()=>{let P=s.indexOf(m);P>-1&&s.splice(P,1)};return r.push(E),E}function y(){if(document.visibilityState==="hidden"){let{history:m}=window;if(!m.state)return;m.replaceState(Oe({},m.state,{scroll:go()}),"")}}function b(){for(let m of r)m();r=[],window.removeEventListener("popstate",p),window.removeEventListener("pagehide",y),document.removeEventListener("visibilitychange",y)}return window.addEventListener("popstate",p),window.addEventListener("pagehide",y),document.addEventListener("visibilitychange",y),{pauseListeners:f,listen:g,destroy:b}}function Fa(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?go():null}}function lp(e){let{history:t,location:o}=window,i={value:Qa(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(f,g,y){let b=e.indexOf("#"),m=b>-1?(o.host&&document.querySelector("base")?e:e.slice(b))+f:rp()+e+f;try{t[y?"replaceState":"pushState"](g,"",m),s.value=g}catch(E){console.error(E),o[y?"replace":"assign"](m)}}function a(f,g){r(f,Oe({},t.state,Fa(s.value.back,f,s.value.forward,!0),g,{position:s.value.position}),!0),i.value=f}function p(f,g){let y=Oe({},s.value,t.state,{forward:f,scroll:go()});r(y.current,y,!0),r(f,Oe({},Fa(i.value,f,null),{position:y.position+1},g),!1),i.value=f}return{location:i,state:s,push:p,replace:a}}function Xa(e){e=Aa(e);let t=lp(e),o=ap(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=Oe({locatLine truncated
`+JSON.stringify(t):""}`},[Be.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${ip(t)}" via a navigation guard.`},[Be.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[Be.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[Be.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function hn(e,t){return Oe(new Error,{type:e,[Va]:!0},t)}function Ht(e,t){return e instanceof Error&&Va in e&&(t==null||!!(e.type&t))}var sp=["params","query","hash"];function ip(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of sp)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function qa(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;i<o.length;++i){let s=o[i].replace(Ca," "),r=s.indexOf("="),a=On(r<0?s:s.slice(0,r)),p=r<0?null:On(s.slice(r+1));if(a in t){let f=t[a];Ct(f)||(f=t[a]=[f]),f.push(p)}else t[a]=p}return t}function ui(e){let t="";for(let o in e){let i=e[o];if(o=Jc(o),i==null){i!==void 0&&(t+=(t.length?"&":"")+o);continue}(Ct(i)?i.map(s=>s&&ni(s)):[i&&ni(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function La(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=Ct(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var $a=Symbol(""),ci=Symbol(""),is=Symbol(""),rs=Symbol(""),as=Symbol("");function In(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function Xt(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((p,f)=>{let g=m=>{m===!1?f(hn(Be.NAVIGATION_ABORTED,{from:o,to:t})):m instanceof Error?f(m):op(m)?f(hn(Be.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(a&&i.enterCallbacks[s]===a&&typeof m=="function"&&a.push(m),p())},y=r(()=>e.call(i&&i.instances[s],t,o,g)),b=Promise.resolve(y);e.length<3&&(b=b.then(g)),b.catch(m=>f(m))})}function ls(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let p in a.components){let f=a.components[p];if(!(t!=="beforeRouteEnter"&&!a.instances[p]))if(wa(f)){let g=(f.__vccOpts||f)[t];g&&r.push(Xt(g,o,i,a,p,s))}else{let g=f();r.push(()=>g.then(y=>{if(!y)throw new Error(`Couldn't resolve component "${p}" at "${a.path}"`);let b=Uc(y)?y.default:y;a.mods[p]=y,a.components[p]=b;let m=(b.__vccOpts||b)[t];return m&&Xt(m,o,i,a,p,s)()}))}}return r}function Ua(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;a<r;a++){let p=t.matched[a];p&&(e.matched.find(g=>mn(g,p))?i.push(p):o.push(p));let f=e.matched[a];f&&(t.matched.find(g=>mn(g,f))||s.push(f))}return[o,i,s]}var rp=()=>location.protocol+"//"+location.host;function Qa(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,p=s.slice(a);return p[0]!=="/"&&(p="/"+p),ri(p,"")}return ri(o,e)+i+s}function ap(e,t,o,i){let s=[],r=[],a=null,p=({state:m})=>{let E=Qa(e,location),P=o.value,k=t.value,v=0;if(m){if(o.value=E,t.value=m,a&&a===P){a=null;return}v=k?m.position-k.position:0}else i(E);s.forEach(S=>{S(o.value,P,{delta:v,type:os.pop,direction:v?v>0?ss.forward:ss.back:ss.unknown})})};function f(){a=o.value}function g(m){s.push(m);let E=()=>{let P=s.indexOf(m);P>-1&&s.splice(P,1)};return r.push(E),E}function y(){if(document.visibilityState==="hidden"){let{history:m}=window;if(!m.state)return;m.replaceState(Oe({},m.state,{scroll:go()}),"")}}function b(){for(let m of r)m();r=[],window.removeEventListener("popstate",p),window.removeEventListener("pagehide",y),document.removeEventListener("visibilitychange",y)}return window.addEventListener("popstate",p),window.addEventListener("pagehide",y),document.addEventListener("visibilitychange",y),{pauseListeners:f,listen:g,destroy:b}}function Fa(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?go():null}}function lp(e){let{history:t,location:o}=window,i={value:Qa(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(f,g,y){let b=e.indexOf("#"),m=b>-1?(o.host&&document.querySelector("base")?e:e.slice(b))+f:rp()+e+f;try{t[y?"replaceState":"pushState"](g,"",m),s.value=g}catch(E){console.error(E),o[y?"replace":"assign"](m)}}function a(f,g){r(f,Oe({},t.state,Fa(s.value.back,f,s.value.forward,!0),g,{position:s.value.position}),!0),i.value=f}function p(f,g){let y=Oe({},s.value,t.state,{forward:f,scroll:go()});r(y.current,y,!0),r(f,Oe({},Fa(i.value,f,null),{position:y.position+1},g),!1),i.value=f}return{location:i,state:s,push:p,replace:a}}function Xa(e){e=Aa(e);let t=lp(e),o=ap(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=Oe({locatLine truncated
`)),e.options=Object.assign({},e.options,y.options),a.restore()})}p();let f=null;e.saveDefault=g=>{if(g&&g.preventDefault&&g.preventDefault(),e.saving)return;let y=a.checkpoint(),b={terms:e.terms.split(`
`).map(m=>m.trim()).filter(m=>m.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",b).then(()=>{a.accept(y),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",f&&i.cancel(f),f=i(()=>{e.message=null},2500)},m=>{e.saving=!1;let E=m&&m.data&&m.data.error,P="Unable to save your defaults. Please try again.";Promise.all([o("ERRORS."+E),o("ERRORS.unknown_error")]).then(([k,v])=>{e.error=E&&k!==v?k:P},()=>{e.error=P})})},e.deleteAccount=()=>{e.deletingAccount||!e.confirmDeleteAccount||e.deleteUsername!==e.user?.username||(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},cl=function(e,t,o){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(i=>{o.url("/dashboard")},i=>{e.error=i.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},pl=function(e,t,o,i,s){e.user&&!e.user.status&&o.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&o.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(p){e.feature=p},e.featureHref=function(p){return p.needsUser&&!e.user?"/signin":p.href},e.featureTarget=function(p){return p.needsUser&&!e.user?"_self":p.target||void 0},e.featureKeydown=function(p,f){let g={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[p.key];if(g===void 0)return;p.preventDefault();let y=e.features.length,b=g==="first"?0:g==="last"?y-1:(f+g+y)%y;e.feature=e.features[b].key,s(()=>{let m=i.document.getElementById("feature-tab-"+e.feature);m&&m.focus()})},e.demoText=`# DeepLearnUtils
Developed by Jane Smith at MIT CSAIL.
See Smith et al., "Attention That Works," 2026.
Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let p=(e.demoTerms||"").split(/[,\n]/).map(m=>m.trim()).filter(Boolean).sort((m,E)=>E.length-m.length),f=m=>m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!p.length)return[{text:e.demoText}];let g=new RegExp("("+p.map(f).join("|")+")","gi"),y={},b=0;return(e.demoText||"").split(g).filter(m=>m!=="").map(m=>{let E=p.find(P=>P.toLowerCase()===m.toLowerCase());return E?(y[E.toLowerCase()]||(y[E.toLowerCase()]=++b),{text:String(y[E.toLowerCase()]),redacted:!0,original:m}):{text:m}})},e.demoCount=()=>e.demoParts().filter(p=>p.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function r(){t.get("/api/stat/").then(p=>{e.stat=p.data,e.cards[0].total=p.data.nbRepositories,e.cards[1].total=p.data.nbUsers,e.cards[2].total=p.data.nbPageViews,e.cards[3].total=p.data.nbPullRequests}).catch(()=>{})}r();function a(p){let f={series:p,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!p||p.length<2)return f;let g=new Array(p.length-1);for(let k=1;k<p.length;k++)g[k-1]=p[k]-p[k-1];let y=g.length,b=Math.max.apply(null,g),m=Math.min.apply(null,g),E=Math.min(0,m),P=b-E||1;f.viewW=y*2,f.bars=new Array(y);for(let k=0;k<y;k++){let v=(g[k]-E)/P,S=Math.max(1.5,v*34);f.bars[k]={x:(k*2+.25).toFixed(2),y:(36-S).toFixed(2),w:"1.5",h:S.toFixed(2)}}if(f.deltaToday=g[y-1],y>=2){let k=g[y-2];k&&(f.pctChange=(f.deltaToday-k)/k*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(p=>{let f=p.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}}).catch(()=>{})},fl=function(e,t,o,i,s,r){let a=ct();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ge(()=>document.querySelector(".dashboard-quota > summary")?.focus())},xt()(document,"click",R=>{e.quotaExpanded&&!R.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=R=>R.status==="error"||R._broken||f(R.status)==="progress"&&R._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=R=>{e.projectView=R,R==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=R=>"project-details-"+encodeURIComponent(R._type+":"+(R._id||R._source||"unknown")),e.showProjectDetails=async R=>{e.selectedProject=R,e.projectName=R.projectName||"",e.nameError="",e.nameMessage="",await Ge();let K=document.getElementById(e.projectDetailsId(R));K?.focus(),K?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=R=>{e.selectedProject=null,Ge(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(R._type+":"+R._id)}"]`)?.focus())},e.saveProjectName=async R=>{if(e.nameSaving||!R._id)return;let K=e.projectName.trim();if(K.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let te=await t.post("/api/user/project-name",{type:R._type,id:R._id,name:K});R.projectName=te.data.name,R._label=R.projectName||R._fallbackLabel,e.selectedProject===R&&(e.nameMessage=K?"Project name saved.":"Default project name restored."),_||(e.dashboardCursor=null,await L(),e.selectedProject===R&&(e.selectedProject=e.items.find(ve=>ve._type===R._type&&ve._id===R._id)||null))}catch{e.selectedProject===R&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async R=>{if(!R._viewUrl||e.copyingId)return;let K=new URL(R._viewUrl,s.location.origin).href;e.copyingId=R._type+":"+R._id;try{await al(K),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:K})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let p=["queue","download","downloaded","preparing","anonymizing"];function f(R){return R==="ready"||R==="error"?R:R==="expired"||R==="expiring"?"expired":R==="removed"||R==="removing"?"removed":(p.indexOf(R)>-1,"progress")}let g=7200*1e3,y="dashboard.filterPrefs",b={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,e Line truncated
Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let p=(e.demoTerms||"").split(/[,\n]/).map(m=>m.trim()).filter(Boolean).sort((m,E)=>E.length-m.length),f=m=>m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!p.length)return[{text:e.demoText}];let g=new RegExp("("+p.map(f).join("|")+")","gi"),y={},b=0;return(e.demoText||"").split(g).filter(m=>m!=="").map(m=>{let E=p.find(P=>P.toLowerCase()===m.toLowerCase());return E?(y[E.toLowerCase()]||(y[E.toLowerCase()]=++b),{text:String(y[E.toLowerCase()]),redacted:!0,original:m}):{text:m}})},e.demoCount=()=>e.demoParts().filter(p=>p.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function r(){t.get("/api/stat/").then(p=>{e.stat=p.data,e.cards[0].total=p.data.nbRepositories,e.cards[1].total=p.data.nbUsers,e.cards[2].total=p.data.nbPageViews,e.cards[3].total=p.data.nbPullRequests}).catch(()=>{})}r();function a(p){let f={series:p,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!p||p.length<2)return f;let g=new Array(p.length-1);for(let k=1;k<p.length;k++)g[k-1]=p[k]-p[k-1];let y=g.length,b=Math.max.apply(null,g),m=Math.min.apply(null,g),E=Math.min(0,m),P=b-E||1;f.viewW=y*2,f.bars=new Array(y);for(let k=0;k<y;k++){let v=(g[k]-E)/P,S=Math.max(1.5,v*34);f.bars[k]={x:(k*2+.25).toFixed(2),y:(36-S).toFixed(2),w:"1.5",h:S.toFixed(2)}}if(f.deltaToday=g[y-1],y>=2){let k=g[y-2];k&&(f.pctChange=(f.deltaToday-k)/k*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(p=>{let f=p.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}}).catch(()=>{})},fl=function(e,t,o,i,s,r){let a=pt();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ge(()=>document.querySelector(".dashboard-quota > summary")?.focus())},xt()(document,"click",R=>{e.quotaExpanded&&!R.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=R=>R.status==="error"||R._broken||f(R.status)==="progress"&&R._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=R=>{e.projectView=R,R==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=R=>"project-details-"+encodeURIComponent(R._type+":"+(R._id||R._source||"unknown")),e.showProjectDetails=async R=>{e.selectedProject=R,e.projectName=R.projectName||"",e.nameError="",e.nameMessage="",await Ge();let K=document.getElementById(e.projectDetailsId(R));K?.focus(),K?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=R=>{e.selectedProject=null,Ge(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(R._type+":"+R._id)}"]`)?.focus())},e.saveProjectName=async R=>{if(e.nameSaving||!R._id)return;let K=e.projectName.trim();if(K.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let te=await t.post("/api/user/project-name",{type:R._type,id:R._id,name:K});R.projectName=te.data.name,R._label=R.projectName||R._fallbackLabel,e.selectedProject===R&&(e.nameMessage=K?"Project name saved.":"Default project name restored."),_||(e.dashboardCursor=null,await L(),e.selectedProject===R&&(e.selectedProject=e.items.find(ve=>ve._type===R._type&&ve._id===R._id)||null))}catch{e.selectedProject===R&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async R=>{if(!R._viewUrl||e.copyingId)return;let K=new URL(R._viewUrl,s.location.origin).href;e.copyingId=R._type+":"+R._id;try{await al(K),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:K})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let p=["queue","download","downloaded","preparing","anonymizing"];function f(R){return R==="ready"||R==="error"?R:R==="expired"||R==="expiring"?"expired":R==="removed"||R==="removing"?"removed":(p.indexOf(R)>-1,"progress")}let g=7200*1e3,y="dashboard.filterPrefs",b={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,e Line truncated
`)),e.options=Object.assign({},e.options,D.options),e.options.expirationDate=D.options&&D.options.expirationDate?new Date(D.options.expirationDate):G(),!i.repoId&&!i.pullRequestId&&!i.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),w&&w()})}function x(w,A,D){e.anonymize&&e.anonymize[w]&&e.anonymize[w].setValidity(A,D)}function ue(w){try{let A=parseGithubUrl(w);if(A&&A.owner&&A.repo)return A.owner+"/"+A.repo}catch{}return null}e.accessRepairAllowed=!1,e.repairingGitHubAccess=!1,e.accessRepairMessage="",e.repairGitHubAccess=async()=>{if(!e.accessRepairAllowed||e.repairingGitHubAccess||!e.githubConnections?.appEnabled||!i.repoId||e.role!=="owner"||e.githubConnection!=="github-app"||ue(e.sourceUrl)!==e._originalFullName)return;e.repairingGitHubAccess=!0,e.accessRepairMessage="";let w=m();try{let A=await t.get("/github/connections");if(e.githubConnections=A.data,!A.data.appEnabled)return;let D=await t.post("/github/connections/migrate",{type:"repository",id:i.repoId,connection:"github-app"},{headers:{"X-CSRF-Token":A.data.csrf}});if(!b(w))return;e.error=null,D.data.fullName&&(e._originalFullName=D.data.fullName,e.source.fullName=D.data.fullName,e.sourceUrl="https://github.com/"+D.data.fullName),e.accessRepairMessage="GitHub access repaired. Your anonymous URL and published commit are unchanged.",await e.urlSelected(!0)}catch{b(w)&&(e.accessRepairMessage="Unable to repair GitHub access. Check the App's repository permissions in Manage access, then retry. Your published snapshot has not been replaced.")}finally{e.repairingGitHubAccess=!1,E(w)}},e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await be()}catch{}}};function he(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:ue(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function Ee(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function ye(){let w=new URLSearchParams(window.location.search).get("billingDraft");if(w){v.restore();try{let D=(await t.get("/api/billing/draft/"+encodeURIComponent(w))).data;if(D.path!==s.path())throw new Error("Wrong task");S=D.values.conference||null;for(let I of["sourceUrl","terms","repoId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(D.values,I)&&(e[I]=D.values[I]);return e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),_=D.id,M=JSON.stringify(v.checkpoint()),e.draftRestored=!0,e.hostingReview=!0,e.sourceUrl&&await Ee(),s.replace?.(s.path()),!0}catch{e.billingError="The checkout draft could not be restored. Retry by reloading this page; any local draft is still available."}}let A;try{A=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!A||A.path!==s.path()||Date.now()-A.savedAt>=30*6e4)return v.restore()?(e.sourceUrl&&await Ee(),!0):!1;v.restore();for(let D of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(A.draft,D)&&(e[D]=A.draft[D]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await Ee(),sessionStorage.removeItem("github-access-draft"),!0}ve(()=>{!i.repoId&&!i.pullRequestId&&!i.gistId&&a(ye,0),i.repoId&&i.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=i.repoId,t.get("/api/repo/"+e.repoId).then(async w=>{e.accessRepairAllowed=!["removed","archived","preparing","queue","download","removing","expiring"].includes(w.data.status),e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.fullName,e._originalFullName=w.data.source.fullName,e.terms=w.data.options.terms.filter(A=>A).join(`
`),e.source=w.data.source,e.role=w.data.role||"owner",e._existingNever=w.data.options.expirationMode==="never",e.coauthors=w.data.coauthors||[],e._originalBranch=w.data.source.branch,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,e.repositoryID=w.data.source.repositoryID,e._originalRepositoryID=w.data.source.repositoryID,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye()&&(await Promise.all([be(),Le()]),z())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async w=>{if(e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.repositoryFullName+"/pull/"+w.data.source.pullRequestId,e.terms=w.data.options.terms.filter(A=>A).join(`
`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye())try{await Z()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async w=>{e.sourceUrl="https://gist.github.com/"+w.data.source.gistId,e.terms=w.data.options.terms.filter(A=>A).join(`
`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye()&&await Q()},()=>{s.url("/404")}))}),t.get("/github/connections").then(w=>{e.githubConnections=w.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&w.data.appEnabled&&w.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&Ee())}).catch(()=>{}),e.urlSelected=async(w=!1)=>{let A=++f;e.previousConfigurations=[],e.previousConfigurationId="";let D;try{D=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,Me.cancel(),U.cancel(),de.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",x("sourceUrl","github",!1);return}let I=k(D),B=w||P===I;P=I,e.sourceUrlError="",x("sourceUrl","github",!0);let F=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let ie=window.document.getElementById("sourceUrl");if(ie){try{ie.setSelectionRange(0,0)}catch{}ie.scrollLeft=0}},50),F&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!B&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],B||(e.source={type:"GitHubStream",branch:"",commit:""}),Me.cancel(),U.cancel(),de.cancel(),J.clear(),H.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=B;try{D.gistId&&!D.repo?(e.detectedType="gist",e.source={gistId:D.gistId},await Q()):D.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:D.owner+"/"+D.repo,pullRequestId:D.pullRequestId},await Z()):(e.detectedType="repo",te(),await Promise.all([be(),Le()]),z())}catch{}finally{A===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let w=e.branches.filter(D=>D.name==e.source.branch)[0];if(!w)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w.commit),e.readme=w.readme,await Le(),z()}),e.getBranches=async w=>{let A=parseGithubUrl(e.sourceUrl),D=m();try{let I=await t.get(`/api/repo/${A.owner}/${A.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0||e.reconnectingSource?"1":"0",repositoryID:he()}});if(!b(D))return;e.branches=I.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let B=e.branches.filter(F=>F.name==e.source.branch);B.length>0&&(!(!e.reconnectingSource&&!w&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=B[0].commit),e.readme=B[0].readme,await Le(w))}catch(I){if(!b(D))return;e.branches=[],e.sourceUnreachable=I&&(I.status===404||I.data&&I.data.error==="repo_not_found");let B=I&&I.data&&I.data.error||(I&&I.status===404?"repo_not_found":"unknown_error");r("ERRORS."+B).then(F=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:F}),e.error=F},console.error),typeof x=="function"&&x("sourceUrl","missing",!1)}finally{E(D)}};async function be(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N();let D=await t.get(`/api/repo/${w.owner}/${w.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:he(),force:"1"}});if(!b(A))return;e.details=D.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(D){if(!b(A))return;throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}async function Le(w){if(e.readme&&!w)return e.readme;let A=parseGithubUrl(e.sourceUrl),D=m();try{let I=await t.get(`/api/repo/${A.owner}/${A.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0?"1":"0",branch:e.source.branch,repositoryID:he()}});b(D,!0)&&(e.readme=I.data)}catch{b(D,!0)&&(e.readme="")}finally{E(D)}}function ze(){let w={terms:e.terms?e.terms.split(`
`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(w.branchName=e.source.branch);try{let A=parseGithubUrl(e.sourceUrl);w.repoName=`${A.owner}/${A.repo}`}catch{}return w}function He(w,A,D){let I=null,B=0,F=()=>{if(e.detectedType!==w)return;I&&a.cancel(I);let ie=++B;e.previewStatus="loading",I=a(()=>{I=null;let X=A();if(!X){e.previewStatus="idle";return}t.post("/api/anonymize-preview",X).then(le=>{ie===B&&(D(le.data,X),e.previewStatus="ready")}).catch(()=>{ie===B&&(e.previewStatus="error")})},200)};return F.cancel=()=>{B++,I&&a.cancel(I),I=null},e.on("dispose",F.cancel),F}e.retryPreview=()=>{e.detectedType==="repo"&&Me(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()};let Me=He("repo",()=>e.readme?{content:e.readme,options:ze()}:null,w=>{if(typeof w?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=w.content;let A="";try{let I=parseGithubUrl(e.sourceUrl),B=e.source.branch||e.details&&e.details.defaultBranch||"main";A=`https://github.com/${I.owner}/${I.repo}/raw/${B}/`}catch{}let D=renderMD(e.anonymize_readme,A);e.html_readme=D,a(Prism.highlightAll,150)});function z(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),Me())}async function Z(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N();let D=await t.get(`/api/pr/${w.owner}/${w.repo}/${w.pullRequestId}`,{params:{connection:e.githubConnection}});if(!b(A))return;e.details=D.data,e.pullRequestId||(e.pullRequestId=w.repo+"-PR"+w.pullRequestId+"-"+generateRandomId(4))}catch(D){if(!b(A))return;throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}let J=Ue(new Map);function ne(){let w=new Set,A=e.details&&e.details.pullRequest;if(!A)return w;typeof A.title=="string"&&w.add(A.title),typeof A.body=="string"&&w.add(A.body),typeof A.diff=="string"&&w.add(A.diff);let D=A.comments||[];for(let I of D)typeof I.author=="string"&&w.add(I.author),typeof I.body=="string"&&w.add(I.body);return w}let U=He("pr",()=>{let w=ne(),A=Array.from(w);return A.length===0?null:{contents:A,options:ze()}},(w,A)=>{if(!Array.isArray(w?.contents)||w.contents.length!==A.contents.length||w.contents.some(B=>typeof B!="string"))throw Error("Invalid preview response");let D=A.contents,I=new Map;for(let B=0;B<D.length&&B<w.contents.length;B++)I.set(D[B],w.contents[B]);J.clear(),I.forEach((B,F)=>J.set(F,B))});e.anonymizePrContent=function(w){return w&&(J.has(w)?J.get(w):"")};async function Q(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let D=await t.get(`/api/gist/source/${w.gistId}`);if(!b(A))return;e.details=D.data,e.gistId||(e.gistId="gist-"+w.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(D){if(!b(A))return;if(D.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,x("sourceUrl","missing",!1);return}if(D.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,x("sourceUrl","missing",!1);return}throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}let H=Ue(new Map);function re(){let w=new Set,A=e.details&&e.details.gist;if(!A)return w;typeof A.description=="string"&&w.add(A.description),typeof A.ownerLogin=="string"&&w.add(A.ownerLogin);let D=A.files||[];for(let B of D)typeof B.filename=="string"&&w.add(B.filename),typeof B.content=="string"&&w.add(B.content);let I=A.comments||[];for(let B of I)typeof B.author=="string"&&w.add(B.author),typeof B.body=="string"&&w.add(B.body);return w}let de=He("gist",()=>{let w=re(),A=Array.from(w);return A.length===0?null:{contents:A,options:ze()}},(w,A)=>{if(!Array.isArray(w?.contents)||w.contents.length!==A.contents.length||w.contents.some(B=>typeof B!="string"))throw Error("Invalid preview response");let D=A.contents,I=new Map;for(let B=0;B<D.length&&B<w.contents.length;B++)I.set(D[B],w.contents[B]);H.clear(),I.forEach((B,F)=>H.set(F,B)),Ne()});e.anonymizeGistContent=function(w){return w&&(H.has(w)?H.get(w):"")},e.previewGistFiles=[];function Ne(){let w=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=w.map(A=>({filename:e.anonymizeGistContent(A.filename),content:e.anonymizeGistContent(A.content),language:A.language}))}e.watch("details.gist.files",Ne,!0),e.watch("terms",Ne);function C(){let w=e.conference;if(e.conference_data=null,!w)return;let A=w===S||e.isUpdate&&w===e._originalConference;w!==S&&(S=null),t.get("/api/conferences/"+w).then(D=>{e.conference===w&&(e.conference_data=D.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!A&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.optio Line truncated
`).filter(F=>F),connection:e.githubConnection,fullName:`${D.owner}/${D.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(I.options.pageSource=e.details.pageSource),N();let B=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/status/"+e.repoId},F=>{F.data&&(r("ERRORS."+F.data.error).then(ie=>{e.error=ie},console.error),j(F.data.error),["quota_exceeded","subscription_required_for_never_expiration"].includes(F.data.error)&&(F.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,Ge(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}))))}).finally(()=>{A.disabled=!1})},e.anonymizeGist=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let A=w.currentTarget||w.target.closest?.("button")||w.target;A.disabled=!0;let D=parseGithubUrl(e.sourceUrl),I={gistId:e.gistId,terms:e.terms.trim().split(`
`).filter(F=>F),source:{gistId:D.gistId},options:e.options,conference:e.conference};N();let B=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/gist/"+e.gistId},F=>{F.data&&(r("ERRORS."+F.data.error).then(ie=>{e.error=ie},console.error),j(F.data.error))}).finally(()=>{A.disabled=!1})},e.anonymizePullRequest=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let A=w.currentTarget||w.target.closest?.("button")||w.target;A.disabled=!0;let D=parseGithubUrl(e.sourceUrl),I={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(`
`).filter(F=>F),source:{repositoryFullName:`${D.owner}/${D.repo}`,pullRequestId:D.pullRequestId},options:e.options,conference:e.conference};N();let B=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/pr/"+e.pullRequestId},F=>{F.data&&(r("ERRORS."+F.data.error).then(ie=>{e.error=ie},console.error),j(F.data.error))}).finally(()=>{A.disabled=!1})},e.watch("conference",()=>{C()}),e.watch("terms",()=>{e.detectedType==="repo"&&z(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("options.image",()=>{e.detectedType==="repo"&&z(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("options.link",()=>{e.detectedType==="repo"&&z(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("details",()=>{e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()},!0)},gi=function(e,t,o,i,s,r){let a=ct();il();let p=xt();e.on("dark-mode",(z,Z)=>{e.aceOption&&(Z?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=null,y=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function b(){g&&(g.resolve(),g=null),y&&(a.timeout.cancel(y),y=null)}let m=!1;e.on("dispose",()=>{m=!0,f++,b(),E&&E.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,p(document,"click",z=>{e.symbolsOpen&&!z.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!z.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.tocOpen&&!z.target.closest?.(".tb-toc-m")&&(e.tocOpen=!1),e.accountOpen&&!z.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!z.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),p(document,"keydown",z=>{z.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.tocOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(z.ctrlKey||z.metaKey)&&!z.altKey&&z.key&&z.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(z.preventDefault(),e.toggleMdFind(!0))}),p(document,"keydown",function(z){if((z.metaKey||z.ctrlKey)&&z.key==="k"){z.preventDefault();var Z=document.querySelector(".tree-search-input");Z&&(Z.focus(),Z.select())}});var E=null;e.onFileSearchChange=function(){E&&(E.resolve(),E=null);let z=e.fileSearchQuery;if(!z||z.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let Z=r.defer();E=Z,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(z)}`,{timeout:Z.promise}).then(function(J){if(!(m||E!==Z)){E=null,e.fileSearchLoading=!1;var ne={};e.files.forEach(function(I){ne[(I.path||"")+"/"+I.name]=!0});for(var U=[],Q={},H=0;H<J.data.length;H++){var re=J.data[H];if(re.path)for(var de=re.path.split("/"),Ne="",C=0;C<de.length;C++){var N=Ne;Ne=Ne?Ne+"/"+de[C]:de[C];var V=N+"/"+de[C];!ne[V]&&!Q[V]&&(Q[V]=!0,U.push({name:de[C],path:N}))}}U.sort(function(I,B){return(I.path||"").split("/").length-(B.path||"").split("/").length}),U.length>0&&e.files.push.apply(e.files,U);for(var j=[],w=0;w<J.data.length;w++){var A=J.data[w],D=(A.path||"")+"/"+A.name;!ne[D]&&A.size!=null&&(j.push(A),ne[D]=!0)}j.length>0&&e.files.push.apply(e.files,j),e.fileSearchResults=J.data}},function(){!m&&E===Z&&(E=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let P={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},k=["license","txt"],v=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],S=["wav","mp3","ogg","wma","flac","aac","m4a"],_=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(z,Z){if(e.repoId!=i.repoId)return Me();if((i.path||"")!=e.filePath){window.matchMedia?.("(max-width: 767px)").matches&&(e.sidebarCollapsed=!0),e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(J=>J&&J.trim().length>0),He();for(let J=0;J<e.paths.length-1;J++){let ne=J>0?e.paths.slice(0,J).join("/"):"";e.files.some(Q=>Q.path===ne)||e.getFiles(ne)}}});function M(){if(e.paths[0]!="")return;let z=["readme.md","readme.txt","readme.org","readme.1st","readme"],Z={};for(let ne of e.files)ne.name.toLowerCase().indexOf("readme")>-1&&(Z[ne.name.toLowerCase()]=ne.name);let J=null;for(let ne of z)if(Z[ne]){J=ne;break}if(!J&&Object.keys(Z).length>0&&(J=Object.keys(Z)[0]),J){let ne=o.url();ne[ne.length-1]!="/"&&(ne+="/"),o.url(ne+encodePathForUrl(Z[J]))}}e.fileCounts=null;let L=0,q=new Set,G=!1;e.getFiles=function(z,Z=!1){let J=e.repoId,ne=L;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(z)}&v=${e.options.lastUpdateDate}`).then(function(U){if(m||J!==e.repoId||ne!==L)return[];let Q=z||"";return e.files=e.files.filter(H=>H.path!==Q),e.files.push(...U.data),se(Q,ne),U.data},function(U){if(m||J!==e.repoId||ne!==L)return[];Z||(e.type="error",e.content=vi(U),e.files=[])})};function se(z,Z){if(G||q.has(z))return;q.add(z);let J=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts?path=${encodeURIComponent(z)}`).then(funct Line truncated
`).forEach((Z,J)=>{for(let[ne,U]of ue){let Q=ne.exec(Z);if(Q&&!/^(if|for|while|switch|return|catch)$/.test(Q[1])){z.push({name:Q[1],kind:U,line:J+1});break}}}),he={content:e.content,list:z.slice(0,300)},he.list},e.goToSymbol=function(z){e.symbolsOpen=!1;let Z=e.codeEditor;Z&&(Z.scrollToLine(z-1,!0,!0,()=>{}),Z.gotoLine(z,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+z),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){let z=e.codeEditor;z&&(z.focus(),z.execCommand("gotoline"))},e.rootEntries=function(){return[...e.files||[]].sort((z,Z)=>{let J=z.size==null,ne=Z.size==null;return J!==ne?J?-1:1:z.name.localeCompare(Z.name)})},e.formatSize=function(z){if(z==null)return"";if(z<1024)return z+" B";let Z=z/1024;return Z<1024?Z.toFixed(1)+" KB":(Z/1024).toFixed(1)+" MB"},e.fileSize=function(z){if(!z)return null;let Z=z.replace(/^\/+/,""),J=(e.files||[]).find(ne=>(ne.path?ne.path+"/":"")+ne.name===Z);return J&&J.size!=null?J.size:null},e.revealFolder=function(z){e.sidebarHidden=!1,e.sidebarCollapsed=!1,Ge(()=>{let Z=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(z):z)+'"]');Z&&(Z.closest("li")?.classList.contains("open")||Z.click(),Z.scrollIntoView({block:"nearest"}),Z.focus())})},e.redactionCount=function(){return typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(bo)||[]).length},e.renderRedacted=sl;let Ee=z=>z.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(z){let Z=e.renderRedacted(z);if(!Z||typeof window.DOMParser!="function")return Z;let J=new window.DOMParser().parseFromString("<div>"+Z+"</div>","text/html"),ne={};return J.querySelectorAll("h1, h2, h3").forEach(U=>{let Q=U.id||Ee(U.textContent);ne[Q]?Q+="-"+ ++ne[Q]:ne[Q]=1,U.id=Q}),J.body.firstChild.innerHTML};let ye={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(ye.content===e.content)return ye.list;let Z=[...new window.DOMParser().parseFromString("<div>"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"</div>","text/html").querySelectorAll("h2, h3")].map(J=>({id:J.id,text:J.textContent.trim(),level:J.tagName==="H3"?3:2})).slice(0,40);return ye={content:e.content,list:Z},Z},e.activeHeading=null,p(window,"scroll",()=>{let z=e.readmeToc?e.readmeToc():[];if(!z.length)return;let Z=150,J="",ne="";for(let U of z){let Q=window.document.getElementById(U.id);if(!Q)continue;let H=Q.getBoundingClientRect().top;H<Z?J=U.id:!ne&&H<window.innerHeight-80&&(ne=U.id)}ne&&(J=ne),e.activeHeading!==J&&(e.activeHeading=J)},{capture:!0,passive:!0}),e.scrollToHeading=function(z){if(!z){(window.document.querySelector(".explorer-content, .file-card-body, .main-pane")||window).scrollTo({top:0,behavior:"smooth"}),e.activeHeading="";return}let Z=window.document.getElementById(z);Z&&Z.scrollIntoView({behavior:"smooth",block:"start"}),e.activeHeading=z},e.redactParts=function(z){let Z=[],J=0,ne,U=/\bXXXX-(\d+)\b/g;for(z=String(z||"");ne=U.exec(z);)ne.index>J&&Z.push({t:z.slice(J,ne.index)}),Z.push({n:ne[1]}),J=ne.index+ne[0].length;return J<z.length&&Z.push({t:z.slice(J)}),Z},e.pathCopied=!1,e.copyPath=async function(){window.navigator.clipboard?.writeText&&(await window.navigator.clipboard.writeText(e.filePath||""),e.pathCopied=!0,setTimeout(()=>{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let z=e.content;if(e.type==="html"&&e.url)try{z=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(z),e.contentCopied=!0,setTimeout(()=>{e.contentCopied=!1},1600)};function be(z){return P[z]?P[z]:z}function Le(z){return z=="pdf"?"pdf":z=="html"||z=="htm"?"html-doc":z=="md"?"md":z=="org"?"org":z=="ipynb"?"IPython":k.indexOf(z)>-1?"text":v.indexOf(z)>-1?"image":_.indexOf(z)>-1?"media":S.indexOf(z)>-1?"audio":"code"}function ze(z,Z){let J=f;if(!z){e.type="error",e.content="no_file_selected";return}let ne=e.type;(ne==="code"||ne==="text")&&ko().catch(()=>{}),e.type="loading",e.content="loading",e.fileLoadingSlow=!1,e.fileReceivedBytes=0;let U=r.defer();g=U,y=a.timeout(()=>{!m&&J===f&&e.type==="loading"&&(e.fileLoadingSlow=!0)},1500);let Q=Z&&Z.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(z)}?v=`+Q,{timeout:U.promise,onDownloadProgress:H=>{!m&&J===f&&(e.fileReceivedBytes=H)},transformResponse:H=>H}).then(H=>{if(!(m||J!==f)){if(b(),e.type=ne,e.content=H.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(H.data,o.url()+"/../"),e.type="html"),e.type=="org"){let de=contentAbs2Relative(H.data);var re=new Org.Parser().parse(de).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(re.toString()),e.type="h Line truncated
`),e.source=w.data.source,e.role=w.data.role||"owner",e._existingNever=w.data.options.expirationMode==="never",e.coauthors=w.data.coauthors||[],e._originalBranch=w.data.source.branch,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,e.repositoryID=w.data.source.repositoryID,e._originalRepositoryID=w.data.source.repositoryID,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye()&&(await Promise.all([be(),Le()]),F())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async w=>{if(e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.repositoryFullName+"/pull/"+w.data.source.pullRequestId,e.terms=w.data.options.terms.filter(A=>A).join(`
`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye())try{await X()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async w=>{e.sourceUrl="https://gist.github.com/"+w.data.source.gistId,e.terms=w.data.options.terms.filter(A=>A).join(`
`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),P=k(parseGithubUrl(e.sourceUrl)),!await ye()&&await Q()},()=>{s.url("/404")}))}),t.get("/github/connections").then(w=>{e.githubConnections=w.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&w.data.appEnabled&&w.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&Ee())}).catch(()=>{}),e.urlSelected=async(w=!1)=>{let A=++f;e.previousConfigurations=[],e.previousConfigurationId="";let D;try{D=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,Me.cancel(),U.cancel(),de.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",x("sourceUrl","github",!1);return}let I=k(D),z=w||P===I;P=I,e.sourceUrlError="",x("sourceUrl","github",!0);let B=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let ie=window.document.getElementById("sourceUrl");if(ie){try{ie.setSelectionRange(0,0)}catch{}ie.scrollLeft=0}},50),B&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!z&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],z||(e.source={type:"GitHubStream",branch:"",commit:""}),Me.cancel(),U.cancel(),de.cancel(),J.clear(),H.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=z;try{D.gistId&&!D.repo?(e.detectedType="gist",e.source={gistId:D.gistId},await Q()):D.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:D.owner+"/"+D.repo,pullRequestId:D.pullRequestId},await X()):(e.detectedType="repo",te(),await Promise.all([be(),Le()]),F())}catch{}finally{A===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let w=e.branches.filter(D=>D.name==e.source.branch)[0];if(!w)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w.commit),e.readme=w.readme,await Le(),F()}),e.getBranches=async w=>{let A=parseGithubUrl(e.sourceUrl),D=m();try{let I=await t.get(`/api/repo/${A.owner}/${A.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0||e.reconnectingSource?"1":"0",repositoryID:he()}});if(!b(D))return;e.branches=I.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let z=e.branches.filter(B=>B.name==e.source.branch);z.length>0&&(!(!e.reconnectingSource&&!w&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=z[0].commit),e.readme=z[0].readme,await Le(w))}catch(I){if(!b(D))return;e.branches=[],e.sourceUnreachable=I&&(I.status===404||I.data&&I.data.error==="repo_not_found");let z=I&&I.data&&I.data.error||(I&&I.status===404?"repo_not_found":"unknown_error");r("ERRORS."+z).then(B=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:B}),e.error=B},console.error),typeof x=="function"&&x("sourceUrl","missing",!1)}finally{E(D)}};async function be(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N();let D=await t.get(`/api/repo/${w.owner}/${w.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:he(),force:"1"}});if(!b(A))return;e.details=D.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(D){if(!b(A))return;throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}async function Le(w){if(e.readme&&!w)return e.readme;let A=parseGithubUrl(e.sourceUrl),D=m();try{let I=await t.get(`/api/repo/${A.owner}/${A.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&ue(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0?"1":"0",branch:e.source.branch,repositoryID:he()}});b(D,!0)&&(e.readme=I.data)}catch{b(D,!0)&&(e.readme="")}finally{E(D)}}function ze(){let w={terms:e.terms?e.terms.split(`
`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(w.branchName=e.source.branch);try{let A=parseGithubUrl(e.sourceUrl);w.repoName=`${A.owner}/${A.repo}`}catch{}return w}function He(w,A,D){let I=null,z=0,B=()=>{if(e.detectedType!==w)return;I&&a.cancel(I);let ie=++z;e.previewStatus="loading",I=a(()=>{I=null;let Z=A();if(!Z){e.previewStatus="idle";return}t.post("/api/anonymize-preview",Z).then(le=>{ie===z&&(D(le.data,Z),e.previewStatus="ready")}).catch(()=>{ie===z&&(e.previewStatus="error")})},200)};return B.cancel=()=>{z++,I&&a.cancel(I),I=null},e.on("dispose",B.cancel),B}e.retryPreview=()=>{e.detectedType==="repo"&&Me(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()};let Me=He("repo",()=>e.readme?{content:e.readme,options:ze()}:null,w=>{if(typeof w?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=w.content;let A="";try{let I=parseGithubUrl(e.sourceUrl),z=e.source.branch||e.details&&e.details.defaultBranch||"main";A=`https://github.com/${I.owner}/${I.repo}/raw/${z}/`}catch{}let D=renderMD(e.anonymize_readme,A);e.html_readme=D,a(Prism.highlightAll,150)});function F(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),Me())}async function X(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N();let D=await t.get(`/api/pr/${w.owner}/${w.repo}/${w.pullRequestId}`,{params:{connection:e.githubConnection}});if(!b(A))return;e.details=D.data,e.pullRequestId||(e.pullRequestId=w.repo+"-PR"+w.pullRequestId+"-"+generateRandomId(4))}catch(D){if(!b(A))return;throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}let J=Ue(new Map);function ne(){let w=new Set,A=e.details&&e.details.pullRequest;if(!A)return w;typeof A.title=="string"&&w.add(A.title),typeof A.body=="string"&&w.add(A.body),typeof A.diff=="string"&&w.add(A.diff);let D=A.comments||[];for(let I of D)typeof I.author=="string"&&w.add(I.author),typeof I.body=="string"&&w.add(I.body);return w}let U=He("pr",()=>{let w=ne(),A=Array.from(w);return A.length===0?null:{contents:A,options:ze()}},(w,A)=>{if(!Array.isArray(w?.contents)||w.contents.length!==A.contents.length||w.contents.some(z=>typeof z!="string"))throw Error("Invalid preview response");let D=A.contents,I=new Map;for(let z=0;z<D.length&&z<w.contents.length;z++)I.set(D[z],w.contents[z]);J.clear(),I.forEach((z,B)=>J.set(B,z))});e.anonymizePrContent=function(w){return w&&(J.has(w)?J.get(w):"")};async function Q(){let w=parseGithubUrl(e.sourceUrl),A=m();try{N(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let D=await t.get(`/api/gist/source/${w.gistId}`);if(!b(A))return;e.details=D.data,e.gistId||(e.gistId="gist-"+w.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(D){if(!b(A))return;if(D.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,x("sourceUrl","missing",!1);return}if(D.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,x("sourceUrl","missing",!1);return}throw D.data&&(r("ERRORS."+D.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(D.data.error)),x("sourceUrl","missing",!1),D}finally{E(A)}}let H=Ue(new Map);function re(){let w=new Set,A=e.details&&e.details.gist;if(!A)return w;typeof A.description=="string"&&w.add(A.description),typeof A.ownerLogin=="string"&&w.add(A.ownerLogin);let D=A.files||[];for(let z of D)typeof z.filename=="string"&&w.add(z.filename),typeof z.content=="string"&&w.add(z.content);let I=A.comments||[];for(let z of I)typeof z.author=="string"&&w.add(z.author),typeof z.body=="string"&&w.add(z.body);return w}let de=He("gist",()=>{let w=re(),A=Array.from(w);return A.length===0?null:{contents:A,options:ze()}},(w,A)=>{if(!Array.isArray(w?.contents)||w.contents.length!==A.contents.length||w.contents.some(z=>typeof z!="string"))throw Error("Invalid preview response");let D=A.contents,I=new Map;for(let z=0;z<D.length&&z<w.contents.length;z++)I.set(D[z],w.contents[z]);H.clear(),I.forEach((z,B)=>H.set(B,z)),Ne()});e.anonymizeGistContent=function(w){return w&&(H.has(w)?H.get(w):"")},e.previewGistFiles=[];function Ne(){let w=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=w.map(A=>({filename:e.anonymizeGistContent(A.filename),content:e.anonymizeGistContent(A.content),language:A.language}))}e.watch("details.gist.files",Ne,!0),e.watch("terms",Ne);function C(){let w=e.conference;if(e.conference_data=null,!w)return;let A=w===S||e.isUpdate&&w===e._originalConference;w!==S&&(S=null),t.get("/api/conferences/"+w).then(D=>{e.conference===w&&(e.conference_data=D.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!A&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.optio Line truncated
`).filter(B=>B),connection:e.githubConnection,fullName:`${D.owner}/${D.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(I.options.pageSource=e.details.pageSource),N();let z=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(z,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/status/"+e.repoId},B=>{B.data&&(r("ERRORS."+B.data.error).then(ie=>{e.error=ie},console.error),j(B.data.error),["quota_exceeded","subscription_required_for_never_expiration"].includes(B.data.error)&&(B.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,Ge(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}))))}).finally(()=>{A.disabled=!1})},e.anonymizeGist=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let A=w.currentTarget||w.target.closest?.("button")||w.target;A.disabled=!0;let D=parseGithubUrl(e.sourceUrl),I={gistId:e.gistId,terms:e.terms.trim().split(`
`).filter(B=>B),source:{gistId:D.gistId},options:e.options,conference:e.conference};N();let z=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(z,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/gist/"+e.gistId},B=>{B.data&&(r("ERRORS."+B.data.error).then(ie=>{e.error=ie},console.error),j(B.data.error))}).finally(()=>{A.disabled=!1})},e.anonymizePullRequest=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let A=w.currentTarget||w.target.closest?.("button")||w.target;A.disabled=!0;let D=parseGithubUrl(e.sourceUrl),I={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(`
`).filter(B=>B),source:{repositoryFullName:`${D.owner}/${D.repo}`,pullRequestId:D.pullRequestId},options:e.options,conference:e.conference};N();let z=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(z,I,{headers:{"Content-Type":"application/json"}}).then(()=>{v.clear(),window.location.href="/pr/"+e.pullRequestId},B=>{B.data&&(r("ERRORS."+B.data.error).then(ie=>{e.error=ie},console.error),j(B.data.error))}).finally(()=>{A.disabled=!1})},e.watch("conference",()=>{C()}),e.watch("terms",()=>{e.detectedType==="repo"&&F(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("options.image",()=>{e.detectedType==="repo"&&F(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("options.link",()=>{e.detectedType==="repo"&&F(),e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()}),e.watch("details",()=>{e.detectedType==="pr"&&U(),e.detectedType==="gist"&&de()},!0)},gi=function(e,t,o,i,s,r){let a=pt();il();let p=xt();e.on("dark-mode",(F,X)=>{e.aceOption&&(X?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=null,y=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function b(){g&&(g.resolve(),g=null),y&&(a.timeout.cancel(y),y=null)}let m=!1;e.on("dispose",()=>{m=!0,f++,b(),E&&E.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,p(document,"click",F=>{e.symbolsOpen&&!F.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!F.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.tocOpen&&!F.target.closest?.(".tb-toc-m")&&(e.tocOpen=!1),e.gotoOpen&&F.target.isConnected&&!F.target.closest?.(".goto-pop, .btn-goto, .tb-more")&&(e.gotoOpen=!1),e.accountOpen&&!F.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!F.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),p(document,"keydown",F=>{F.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.tocOpen=!1,e.gotoOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(F.ctrlKey||F.metaKey)&&!F.altKey&&F.key&&F.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(F.preventDefault(),e.toggleMdFind(!0))}),p(document,"keydown",function(F){if((F.metaKey||F.ctrlKey)&&F.key==="k"){F.preventDefault();var X=document.querySelector(".tree-search-input");X&&(X.focus(),X.select())}});var E=null;e.onFileSearchChange=function(){E&&(E.resolve(),E=null);let F=e.fileSearchQuery;if(!F||F.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let X=r.defer();E=X,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(F)}`,{timeout:X.promise}).then(function(J){if(!(m||E!==X)){E=null,e.fileSearchLoading=!1;var ne={};e.files.forEach(function(I){ne[(I.path||"")+"/"+I.name]=!0});for(var U=[],Q={},H=0;H<J.data.length;H++){var re=J.data[H];if(re.path)for(var de=re.path.split("/"),Ne="",C=0;C<de.length;C++){var N=Ne;Ne=Ne?Ne+"/"+de[C]:de[C];var V=N+"/"+de[C];!ne[V]&&!Q[V]&&(Q[V]=!0,U.push({name:de[C],path:N}))}}U.sort(function(I,z){return(I.path||"").split("/").length-(z.path||"").split("/").length}),U.length>0&&e.files.push.apply(e.files,U);for(var j=[],w=0;w<J.data.length;w++){var A=J.data[w],D=(A.path||"")+"/"+A.name;!ne[D]&&A.size!=null&&(j.push(A),ne[D]=!0)}j.length>0&&e.files.push.apply(e.files,j),e.fileSearchResults=J.data}},function(){!m&&E===X&&(E=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let P={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},k=["license","txt"],v=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],S=["wav","mp3","ogg","wma","flac","aac","m4a"],_=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(F,X){if(e.repoId!=i.repoId)return Me();if((i.path||"")!=e.filePath){window.matchMedia?.("(max-width: 767px)").matches&&(e.sidebarCollapsed=!0),e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(J=>J&&J.trim().length>0),He();for(let J=0;J<e.paths.length-1;J++){let ne=J>0?e.paths.slice(0,J).join("/"):"";e.files.some(Q=>Q.path===ne)||e.getFiles(ne)}}});function M(){if(e.paths[0]!="")return;let F=["readme.md","readme.txt","readme.org","readme.1st","readme"],X={};for(let ne of e.files)ne.name.toLowerCase().indexOf("readme")>-1&&(X[ne.name.toLowerCase()]=ne.name);let J=null;for(let ne of F)if(X[ne]){J=ne;break}if(!J&&Object.keys(X).length>0&&(J=Object.keys(X)[0]),J){let ne=o.url();ne[ne.length-1]!="/"&&(ne+="/"),o.url(ne+encodePathForUrl(X[J]))}}e.fileCounts=null;let L=0,q=new Set,G=!1;e.getFiles=function(F,X=!1){let J=e.repoId,ne=L;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(F)}&v=${e.options.lastUpdateDate}`).then(function(U){if(m||J!==e.repoId||ne!==L)return[];let Q=F||"";return e.files=e.files.filter(H=>H.path!==Q),e.files.push(...U.data),se(Q,ne),U.data},function(U){if(m||J!==e.repoId||ne!==L)return[];X||(e.type="error",e.content=vi(U),e.files=[])})};function se(F,X){if(G||q.has Line truncated
`).forEach((X,J)=>{for(let[ne,U]of ue){let Q=ne.exec(X);if(Q&&!/^(if|for|while|switch|return|catch)$/.test(Q[1])){F.push({name:Q[1],kind:U,line:J+1});break}}}),he={content:e.content,list:F.slice(0,300)},he.list},e.goToSymbol=function(F){e.symbolsOpen=!1;let X=e.codeEditor;X&&(X.scrollToLine(F-1,!0,!0,()=>{}),X.gotoLine(F,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+F),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){e.codeEditor&&(e.moreOpen=!1,e.gotoError="",e.gotoValue=String(e.codeEditor.getCursorPosition().row+1),e.gotoOpen=!0,setTimeout(()=>{let F=window.document.getElementById("goto-input");F&&(F.focus(),F.select())},0))},e.closeGoto=function(){e.gotoOpen=!1,e.gotoError="",e.codeEditor?.focus()},e.submitGoto=function(){let F=e.codeEditor;if(!F)return;let X=/^\s*:?\s*(\d+)\s*(?:[:,]\s*(\d+))?\s*$/.exec(e.gotoValue||""),J=F.session.getLength();if(!X||+X[1]<1||+X[1]>J){e.gotoError="Enter a line from 1 to "+J;return}F.gotoLine(+X[1],X[2]?Math.max(0,+X[2]-1):0,!0),e.gotoOpen=!1,e.gotoError="",F.focus()},e.rootEntries=function(){return[...e.files||[]].sort((F,X)=>{let J=F.size==null,ne=X.size==null;return J!==ne?J?-1:1:F.name.localeCompare(X.name)})},e.formatSize=function(F){if(F==null)return"";if(F<1024)return F+" B";let X=F/1024;return X<1024?X.toFixed(1)+" KB":(X/1024).toFixed(1)+" MB"},e.fileSize=function(F){if(!F)return null;let X=F.replace(/^\/+/,""),J=(e.files||[]).find(ne=>(ne.path?ne.path+"/":"")+ne.name===X);return J&&J.size!=null?J.size:null},e.revealFolder=function(F){e.sidebarHidden=!1,e.sidebarCollapsed=!1,Ge(()=>{let X=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(F):F)+'"]');X&&(X.closest("li")?.classList.contains("open")||X.click(),X.scrollIntoView({block:"nearest"}),X.focus())})},e.redactionCount=function(){return typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(bo)||[]).length},e.renderRedacted=sl;let Ee=F=>F.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(F){let X=e.renderRedacted(F);if(!X||typeof window.DOMParser!="function")return X;let J=new window.DOMParser().parseFromString("<div>"+X+"</div>","text/html"),ne={};return J.querySelectorAll("h1, h2, h3").forEach(U=>{let Q=U.id||Ee(U.textContent);ne[Q]?Q+="-"+ ++ne[Q]:ne[Q]=1,U.id=Q}),J.body.firstChild.innerHTML};let ye={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(ye.content===e.content)return ye.list;let X=[...new window.DOMParser().parseFromString("<div>"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"</div>","text/html").querySelectorAll("h2, h3")].map(J=>({id:J.id,text:J.textContent.trim(),level:J.tagName==="H3"?3:2})).slice(0,40);return ye={content:e.content,list:X},X},e.activeHeading=null,p(window,"scroll",()=>{let F=e.readmeToc?e.readmeToc():[];if(!F.length)return;let X=150,J="",ne="";for(let U of F){let Q=window.document.getElementById(U.id);if(!Q)continue;let H=Q.getBoundingClientRect().top;H<X?J=U.id:!ne&&H<window.innerHeight-80&&(ne=U.id)}ne&&(J=ne),e.activeHeading!==J&&(e.activeHeading=J)},{capture:!0,passive:!0}),e.scrollToHeading=function(F){if(!F){(window.document.querySelector(".explorer-content, .file-card-body, .main-pane")||window).scrollTo({top:0,behavior:"smooth"}),e.activeHeading="";return}let X=window.document.getElementById(F);X&&X.scrollIntoView({behavior:"smooth",block:"start"}),e.activeHeading=F},e.redactParts=function(F){let X=[],J=0,ne,U=/\bXXXX-(\d+)\b/g;for(F=String(F||"");ne=U.exec(F);)ne.index>J&&X.push({t:F.slice(J,ne.index)}),X.push({n:ne[1]}),J=ne.index+ne[0].length;return J<F.length&&X.push({t:F.slice(J)}),X},e.pathCopied=!1,e.copyPath=async function(){window.navigator.clipboard?.writeText&&(await window.navigator.clipboard.writeText(e.filePath||""),e.pathCopied=!0,setTimeout(()=>{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let F=e.content;if(e.type==="html"&&e.url)try{F=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(F),e.contentCopied=!0,setTimeout(()=>{e.contentCopied=!1},1600)};function be(F){return P[F]?P[F]:F}function Le(F){return F=="pdf"?"pdf":F=="html"||F=="htm"?"html-doc":F=="md"?"md":F=="org"?"org":F=="ipynb"?"IPython":k.indexOf(F)>-1?"text":v.indexOf(F)>-1?"image":_.indexOf(F)>-1?"media":S.indexOf(F)>-1?"audio":"code"}function ze(F,X){let J=f;if(!F){e.type="error",e.content="no_file_selected";return}let ne=e.type;(ne==="code"||ne==="text")&&ko().catch(()=>{}),e.type="loading",e.content="loading",e.fileLoadingSlow=!1,e.fileReceivedBytes=0;let U=r.defer();g=U,y=a.timeout(()=>{!m&&J===f&&e.type==="loading"&&(e.fileLoadingSlow=!0)},1500);let Q=X&&X.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePaLine truncated
`+k.join(`
`)],{type:"text/csv"}),S=document.createElement("a");S.href=URL.createObjectURL(v),S.download=i.username+"-repositories.csv",S.click()},e.showStatusMessage=m=>{let E=m.statusMessage||"(no message)";window.prompt(`Status message for ${m.repoId} (${m.status}):`,E)},e.fetchGithubInfo=m=>{let E=window.open("","_blank");E&&E.document.write("<pre>Loading GitHub info for "+m.repoId+"...</pre>"),t.get("/api/admin/repos/"+m.repoId+"/github").then(P=>{E&&(E.document.open(),E.document.write('<pre style="font:13px monospace;padding:16px;white-space:pre-wrap">'+JSON.stringify(P.data,null,2).replace(/[<>]/g,k=>k==="<"?"&lt;":"&gt;")+"</pre>"),E.document.close())},P=>{let k=P&&P.data?JSON.stringify(P.data,null,2):String(P);E&&(E.document.body.innerHTML='<pre style="color:#B42318;padding:16px">'+k+"</pre>")})};function f(m){t.get("/api/admin/users/"+m+"/repos",{}).then(E=>{e.repositories=E.data},E=>{console.error(E)})}function g(m){t.get("/api/admin/users/"+m,{}).then(E=>{e.userInfo=E.data},E=>{console.error(E)})}g(i.username),f(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>g(i.username),m=>console.error(m))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>g(i.username),m=>console.error(m))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>g(i.username),m=>console.error(m))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>g(i.username),m=>console.error(m))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function y(){t.get("/api/admin/tokens").then(m=>{e.tokens=m.data||[]},m=>{m.status!==401&&m.status!==403&&console.error(m)})}y(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(m=>{e.tokenForm.plaintext=m.data.token,e.tokenForm.name="",y()},m=>console.error(m))},e.revokeToken=m=>{confirm(`Revoke token "${m.name}"?`)&&t.delete("/api/admin/tokens/"+m.id).then(()=>y(),E=>console.error(E))},e.removeCache=m=>{confirm("Remove cached files for "+m.repoId+"?")&&t.delete("/api/admin/repos/"+m.repoId).then(()=>f(i.username),E=>console.error(E))},e.removeRepository=m=>{confirm("Remove repository "+m.repoId+"?")&&t.delete("/api/repo/"+m.repoId+"/").then(()=>f(i.username),E=>console.error(E))},e.updateRepository=m=>{let E=Ue({title:`Refreshing ${m.repoId}...`,date:new Date,body:`The repository ${m.repoId} is going to be refreshed.`});e.toasts.push(E),t.post(`/api/repo/${m.repoId}/refresh`).then(P=>{P.data.status=="ready"?E.title=`${m.repoId} is refreshed.`:E.title=`Refreshing of ${m.repoId}.`},P=>{E.title=`Error during the refresh of ${m.repoId}.`,E.body=P.body})},e.getGitHubRepositories=m=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(E=>{e.userInfo.repositories=E.data})};let b=null;e.watch("query",()=>{s.timeout.cancel(b),b=s.timeout(()=>{f(i.username)},500)},!0)},Sl=function(e,t,o){let i=ct(),s=xt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=P=>{if(P.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){P.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=P=>{P==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[P]="",e.query.page=1},e.chips=[];let a=()=>{let P=[];(e.query.dateFrom||e.query.dateTo)&&P.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=P};e.statusCountFor=P=>{let k=(e.statusCounts||[]).find(v=>v._id===P);return k?k.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=P=>{e.query.sort===P?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=P,e.query.direction="desc"),e.query.page=1},e.sortIcon=P=>e.query.sort===P?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let p="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(p)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.search&&(e.query.search=y.search);let b="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let P=window.prompt("Preset name:");if(!P)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(v=>v.name!==P),e.presets.push({name:P,query:k}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=P=>{Object.assign(e.query,P.query,{page:1})},e.deletePreset=P=>{e.presets=(e.presets||[]).filter(k=>k.name!==P.name),localStorage.setItem(b,JS Line truncated
`)],{type:"text/csv"}),S=document.createElement("a");S.href=URL.createObjectURL(v),S.download=i.username+"-repositories.csv",S.click()},e.showStatusMessage=m=>{let E=m.statusMessage||"(no message)";window.prompt(`Status message for ${m.repoId} (${m.status}):`,E)},e.fetchGithubInfo=m=>{let E=window.open("","_blank");E&&E.document.write("<pre>Loading GitHub info for "+m.repoId+"...</pre>"),t.get("/api/admin/repos/"+m.repoId+"/github").then(P=>{E&&(E.document.open(),E.document.write('<pre style="font:13px monospace;padding:16px;white-space:pre-wrap">'+JSON.stringify(P.data,null,2).replace(/[<>]/g,k=>k==="<"?"&lt;":"&gt;")+"</pre>"),E.document.close())},P=>{let k=P&&P.data?JSON.stringify(P.data,null,2):String(P);E&&(E.document.body.innerHTML='<pre style="color:#B42318;padding:16px">'+k+"</pre>")})};function f(m){t.get("/api/admin/users/"+m+"/repos",{}).then(E=>{e.repositories=E.data},E=>{console.error(E)})}function g(m){t.get("/api/admin/users/"+m,{}).then(E=>{e.userInfo=E.data},E=>{console.error(E)})}g(i.username),f(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>g(i.username),m=>console.error(m))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>g(i.username),m=>console.error(m))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>g(i.username),m=>console.error(m))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>g(i.username),m=>console.error(m))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function y(){t.get("/api/admin/tokens").then(m=>{e.tokens=m.data||[]},m=>{m.status!==401&&m.status!==403&&console.error(m)})}y(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(m=>{e.tokenForm.plaintext=m.data.token,e.tokenForm.name="",y()},m=>console.error(m))},e.revokeToken=m=>{confirm(`Revoke token "${m.name}"?`)&&t.delete("/api/admin/tokens/"+m.id).then(()=>y(),E=>console.error(E))},e.removeCache=m=>{confirm("Remove cached files for "+m.repoId+"?")&&t.delete("/api/admin/repos/"+m.repoId).then(()=>f(i.username),E=>console.error(E))},e.removeRepository=m=>{confirm("Remove repository "+m.repoId+"?")&&t.delete("/api/repo/"+m.repoId+"/").then(()=>f(i.username),E=>console.error(E))},e.updateRepository=m=>{let E=Ue({title:`Refreshing ${m.repoId}...`,date:new Date,body:`The repository ${m.repoId} is going to be refreshed.`});e.toasts.push(E),t.post(`/api/repo/${m.repoId}/refresh`).then(P=>{P.data.status=="ready"?E.title=`${m.repoId} is refreshed.`:E.title=`Refreshing of ${m.repoId}.`},P=>{E.title=`Error during the refresh of ${m.repoId}.`,E.body=P.body})},e.getGitHubRepositories=m=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(E=>{e.userInfo.repositories=E.data})};let b=null;e.watch("query",()=>{s.timeout.cancel(b),b=s.timeout(()=>{f(i.username)},500)},!0)},Sl=function(e,t,o){let i=pt(),s=xt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=P=>{if(P.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){P.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=P=>{P==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[P]="",e.query.page=1},e.chips=[];let a=()=>{let P=[];(e.query.dateFrom||e.query.dateTo)&&P.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=P};e.statusCountFor=P=>{let k=(e.statusCounts||[]).find(v=>v._id===P);return k?k.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=P=>{e.query.sort===P?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=P,e.query.direction="desc"),e.query.page=1},e.sortIcon=P=>e.query.sort===P?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let p="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(p)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.search&&(e.query.search=y.search);let b="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let P=window.prompt("Preset name:");if(!P)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(v=>v.name!==P),e.presets.push({name:P,query:k}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=P=>{Object.assign(e.query,P.query,{page:1})},e.deletePreset=P=>{e.presets=(e.presets||[]).filter(k=>k.name!==P.name),localStorage.setItem(b,JS Line truncated
`).map((Ee,ye)=>ye===0?Ee:he+Ee).join(`
`)}else typeof R=="number"||typeof R=="boolean"?ue=String(R):ue=JSON.stringify(R);se.push(`${ve}${ue}${x}`)}),se.push("}"),se.join(`
`)}function g(S){let _=[],M="",L=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,G;for(;G=L.exec(S);)M+=S.slice(q,G.index),q=L.lastIndex,_.push({key:G[1],op:G[2]||"=",val:G[3]});return M+=S.slice(q),{filters:_,free:M.trim().toLowerCase()}}function y(S,_){for(let M of _.filters){let L=(G,se,ee)=>{let R=parseFloat(G),K=parseFloat(se);return ee==="="?String(G)===String(se):ee==="!="?String(G)!==String(se):ee===">="?R>=K:ee==="<="?R<=K:ee===">"?R>K:ee==="<"?R<K:!0},q;if(M.key==="code")q=S.displayMessage;else if(M.key==="module")q=S.module;else if(M.key==="status")q=S._status;else if(M.key==="url")q=S._url;else if(M.key==="repo")q=S._repoId;else if(M.key==="level")q=S.level;else continue;if(q==null||!L(q,M.val,M.op))return!1}return!(_.free&&((S.displayMessage||"")+" "+(S.module||"")+" "+(S._url||"")+" "+JSON.stringify(S.raw||[])).toLowerCase().indexOf(_.free)===-1)}function b(){let S=g(e.query.search||"");e.parsedFilterCount=S.filters.length;let _=e.query.bucket,M=e.entries.filter(ee=>_&&ee._bucket!==_?!1:y(ee,S)),L=e.query.group;if(L){let ee=te=>L==="module"?te.module:te.displayMessage||te.message||"_",R=new Map;for(let te of M){let ve=ee(te);if(R.has(ve)){let x=R.get(ve);x.count++,x._related.push(te),new Date(te.ts)>new Date(x.ts)&&(x.ts=te.ts,x._url=te._url,x._status=te._status),new Date(te.ts)<new Date(x._firstSeen)&&(x._firstSeen=te.ts)}else{let x=Object.assign({},te);x._key=`${L}:${ve}`,x._related=[te],x._firstSeen=te.ts,x._lastHourCount=0,x.count=1,R.set(ve,x)}}let K=Date.now()-3600*1e3;for(let te of R.values())te._lastHourCount=te._related.filter(ve=>new Date(ve.ts).getTime()>=K).length;M=Array.from(R.values())}else M=M.map((ee,R)=>(ee._key="row:"+R+":"+ee.ts,ee._related=[ee],ee._firstSeen=ee.ts,ee._lastHourCount=0,ee.count=1,ee));let q=ee=>({error:0,warn:1,info:2})[ee._bucket]??1;e.query.sort==="count"?M.sort((ee,R)=>q(ee)-q(R)||R.count-ee.count||new Date(R.ts)-new Date(ee.ts)):M.sort((ee,R)=>q(ee)-q(R)||new Date(R.ts)-new Date(ee.ts)),e.visible=M;let G=!!(e.query.bucket||(e.query.search||"").trim()),se=!G&&(e.stats?.severity?.error||0)>0&&!M.some(ee=>ee._bucket==="error")&&e.entries.length<1500;(G&&!M.length||se)&&e.canLoadMore?.()&&!e._autoLoading&&e.entries.length<2500&&(e._autoLoading=!0,m(!0))}function m(S){let _=S?e.entries.length:0,M=S?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:_,limit:M}}).then(L=>{let q=(L.data.entries||[]).map(p);e.entries=S?e.entries.concat(q):q,e.available=!!L.data.available,e.cap=L.data.max||e.cap,e.total=L.data.total||e.entries.length,e._autoLoading=!1,b()},L=>{e._autoLoading=!1,console.error(L)})}e.loadMore=()=>m(!0),e.canLoadMore=()=>e.entries.length<e.total;function E(){t.get("/api/admin/errors/stats").then(S=>{let _=S.data||{},M=_.prev24h?Math.round((_.last24h-_.prev24h)/_.prev24h*100):0;e.stats={last24h:_.last24h||0,prev24h:_.prev24h||0,delta:M,severity:_.severity||{error:0,warn:0,info:0},unique:_.unique||{error:0,warn:0,info:0},buckets:_.buckets||[],dropped:_.dropped||0},b()},S=>console.error(S))}function P(){m(),E()}e.barPx=(S,_)=>{let M=e.stats.buckets||[],L=0,q=0;for(let R of M)L=Math.max(L,(R.error||0)+(R.warn||0)),q=Math.max(q,R.info||0);let G=S[_]||0;if(!G)return 0;if(_==="info")return q?Math.max(2,Math.round(G/q*(L?16:60))):0;let se=(S.error||0)+(S.warn||0),ee=Math.round(se/L*44);return Math.max(4,Math.round(G/se*ee))},e.bucketTitle=S=>`${new Date(S.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${S.error||0} err \xB7 ${S.warn||0} warn \xB7 ${S.info||0} info`,e.toggle=S=>{e.expanded[S._key]=!e.expanded[S._key]},e.setBucket=S=>{e.query.bucket=S},e.refreshNow=P,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(P,S=>console.error(S))},e.exportCsv=()=>{let S=["ts","level","module","displayMessage","_status","_url","_repoId"],_=[S.join(",")];for(let G of e.visible)_.push(S.map(se=>{let ee=G[se]==null?"":String(G[se]);return/[",\n]/.test(ee)?`"${ee.replace(/"/g,'""')}"`:ee}).join(","));let M=new Blob([_.join(`
`)],{type:"text/csv;charset=utf-8"}),L=URL.createObjectURL(M),q=document.createElement("a");q.href=L,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(L)};function k(S){e.copyHint=`${S} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=S=>{navigator.clipboard.writeText(S._detailJson).then(()=>k("JSON"))},e.copyCurl=S=>{if(!S._url)return;let M=`curl -X ${S._method||"GET"} '${window.location.origin}${S._url}'`;navigator.clipboard.writeText(M).then(()=>k("curl"))},P();let v=i(()=>{e.query.autoRefresh&&P()},15e3);e.on("dispose",()=>i.cancel(v)),e.watch("query.search",b),e.watch("query.bucket",b),e.watch("query.sort",b),e.watch("query.group",b)},Dl=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all",e.ovView=["performance","cache"].includes((window.location.hash||"").slice(1))?window.location.hash.slice(1):"summary",e.setOvView=function(v){e.ovView=v;try{window.history.replaceState(null,"",v==="summary"?window.location.pathname:"#"+v)}catch{}};var s=!1;e.loadCache=function(){if(!s){s=!0;var v=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:v}}).then(function(S){v===e.cacheMinutes&&(e.cacheReport=S.data,e.cacheError=S.data.available?null:S.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,v!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(v){return e.cacheTraffic==="all"||v.traffic===e.cacheTraffic})},e.cacheRate=function(v,S){var _=e.cacheRows(),M=function(G){return _.filter(function(se){return se.name===G}).reduce(function(se,ee){return se+ee[S]},0)},L=M(v+"_hit"),q=M(v+"_miss");return L+q?(100*L/(L+q)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(v){return v.replaceAll("_"," ")},e.cacheP95=function(v){var S=0,_=e.cacheReport?.latencyBucketsMs||[];if(!v.count)return"No samples";if(!v.ms)return"Not timed";for(var M=0;M<=_.length;M++)if(S+=v["b"+M]||0,S>=Math.ceil(v.count*.95))return M<_.length?"\u2264 "+_[M]+" ms":"> 10 s";return"No samples"},e.performanceError=null,e.formatMs=function(v){return v==null?"":v<1e3?v+" ms":+(v/1e3).toFixed(1)+" s"},e.latencyBound=function(v,S){return v.count?v[S]==null?"> 60 s":"\u2264 "+e.formatMs(v[S]):"No samples"},e.firstByteBound=function(v){return e.latencyBound({count:v.firstByteCount,p95UpperMs:v.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(v){return Math.max(0,Math.round((Date.now()-v.sampledAt)/1e3))},e.peakRss=function(v){return(e.performance.runtimeSeries||[]).filter(function(S){return S.instance===v.instance}).reduce(function(S,_){return Math.max(S,_.rss)},v.memory.rss)},e.performanceWarning=function(v){return e.sampleAge(v)>45||v.droppedBatches||v.droppedMetrics||v.sockets?.closeWait>0||v.eventLoop?.p95Ms>100||v.memoryLimitBytes&&v.memory.rss>v.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var v=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==v&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:v}}).then(function(S){v===e.performanceMinutes&&(e.performance=S.data,e.performanceError=S.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){v===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,v!==e.performanceMinutes&&e.loadPerformance()}))};function a(v){if(v==null)return"\u2014";for(var S=["B","KB","MB","GB","TB"],_=0,M=v;M>=1024&&_<S.length-1;)M/=1024,_++;return M.toFixed(_>0?1:0)+" "+S[_]}e.humanBytes=a;function p(v){if(!v)return"\u2014";var S=Math.floor(v/86400),_=Math.floor(v%86400/3600),M=Math.floor(v%3600/60);return S>0?S+"d "+(_<10?"0":"")+_+"h":_>0?_+"h "+(M<10?"0":"")+M+"m":M+"m"}e.humanDuration=p;function f(v){return v==null?"\u2014":v>=1e6?(v/1e6).toFixed(1)+"M":v>=1e3?(v/1e3).toFixed(1)+"K":String(v)}e.humanNum=f,e.queueTotal=function(v){return v?(v.waiting||0)+(v.active||0)+(v.delayed||0)+(v.failed||0):0},e.statusCount=function(v){if(!e.data||!e.data.repos)return 0;for(var S=e.data.repos.statusBreakdown||[],_=0;_<S.length;_++)if(S[_]._id===v)return S[_].count;return 0},e.barPct=function(v){var S=e.data&&e.data.repos?e.data.repos.total:0;if(!S)return 0;var _=[v];v==="expired"&&_.push("expiring"),v==="removed"&&_.push("removing"),v==="preparing"&&_.push("download");var M=0;return _.forEach(function(L){M+=e.statusCount(L)}),Math.max(.4,M/S*100)},e.errPct=function(v){if(!e.data||!e.data.errors)return 0;var S=Math.max(e.data.errors.severity.error,e.data.errors.severity.warn,e.data.erro Line truncated
`)],{type:"text/csv;charset=utf-8"}),L=URL.createObjectURL(M),q=document.createElement("a");q.href=L,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(L)};function k(S){e.copyHint=`${S} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=S=>{navigator.clipboard.writeText(S._detailJson).then(()=>k("JSON"))},e.copyCurl=S=>{if(!S._url)return;let M=`curl -X ${S._method||"GET"} '${window.location.origin}${S._url}'`;navigator.clipboard.writeText(M).then(()=>k("curl"))},P();let v=i(()=>{e.query.autoRefresh&&P()},15e3);e.on("dispose",()=>i.cancel(v)),e.watch("query.search",b),e.watch("query.bucket",b),e.watch("query.sort",b),e.watch("query.group",b)},Dl=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all",e.ovView=["performance","cache"].includes((window.location.hash||"").slice(1))?window.location.hash.slice(1):"summary",e.setOvView=function(v){e.ovView=v;try{window.history.replaceState(null,"",v==="summary"?window.location.pathname:"#"+v)}catch{}};var s=!1;e.loadCache=function(){if(!s){s=!0;var v=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:v}}).then(function(S){v===e.cacheMinutes&&(e.cacheReport=S.data,e.cacheError=S.data.available?null:S.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,v!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(v){return e.cacheTraffic==="all"||v.traffic===e.cacheTraffic})},e.cacheRate=function(v,S){var _=e.cacheRows(),M=function(G){return _.filter(function(se){return se.name===G}).reduce(function(se,ee){return se+ee[S]},0)},L=M(v+"_hit"),q=M(v+"_miss");return L+q?(100*L/(L+q)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(v){return v.replaceAll("_"," ")},e.cacheP95=function(v){var S=0,_=e.cacheReport?.latencyBucketsMs||[];if(!v.count)return"No samples";if(!v.ms)return"Not timed";for(var M=0;M<=_.length;M++)if(S+=v["b"+M]||0,S>=Math.ceil(v.count*.95))return M<_.length?"\u2264 "+_[M]+" ms":"> 10 s";return"No samples"},e.performanceError=null,e.formatMs=function(v){return v==null?"":v<1e3?v+" ms":+(v/1e3).toFixed(1)+" s"},e.latencyBound=function(v,S){return v.count?v[S]==null?"> 60 s":"\u2264 "+e.formatMs(v[S]):"No samples"},e.firstByteBound=function(v){return e.latencyBound({count:v.firstByteCount,p95UpperMs:v.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(v){return Math.max(0,Math.round((Date.now()-v.sampledAt)/1e3))},e.peakRss=function(v){return(e.performance.runtimeSeries||[]).filter(function(S){return S.instance===v.instance}).reduce(function(S,_){return Math.max(S,_.rss)},v.memory.rss)},e.performanceWarning=function(v){return e.sampleAge(v)>45||v.droppedBatches||v.droppedMetrics||v.sockets?.closeWait>0||v.eventLoop?.p95Ms>100||v.memoryLimitBytes&&v.memory.rss>v.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var v=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==v&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:v}}).then(function(S){v===e.performanceMinutes&&(e.performance=S.data,e.performanceError=S.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){v===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,v!==e.performanceMinutes&&e.loadPerformance()}))};function a(v){if(v==null)return"\u2014";for(var S=["B","KB","MB","GB","TB"],_=0,M=v;M>=1024&&_<S.length-1;)M/=1024,_++;return M.toFixed(_>0?1:0)+" "+S[_]}e.humanBytes=a;function p(v){if(!v)return"\u2014";var S=Math.floor(v/86400),_=Math.floor(v%86400/3600),M=Math.floor(v%3600/60);return S>0?S+"d "+(_<10?"0":"")+_+"h":_>0?_+"h "+(M<10?"0":"")+M+"m":M+"m"}e.humanDuration=p;function f(v){return v==null?"\u2014":v>=1e6?(v/1e6).toFixed(1)+"M":v>=1e3?(v/1e3).toFixed(1)+"K":String(v)}e.humanNum=f,e.queueTotal=function(v){return v?(v.waiting||0)+(v.active||0)+(v.delayed||0)+(v.failed||0):0},e.statusCount=function(v){if(!e.data||!e.data.repos)return 0;for(var S=e.data.repos.statusBreakdown||[],_=0;_<S.length;_++)if(S[_]._id===v)return S[_].count;return 0},e.barPct=function(v){var S=e.data&&e.data.repos?e.data.repos.total:0;if(!S)return 0;var _=[v];v==="expired"&&_.push("expiring"),v==="removed"&&_.push("removing"),v==="preparing"&&_.push("download");var M=0;return _.forEach(function(L){M+=e.statusCount(L)}),Math.max(.4,M/S*100)},e.errPct=function(v){if(!e.data||!e.data.errors)return 0;var S=Math.max(e.data.errors.severity.error,e.data.errors.severity.warn,e.data.erro Line truncated
MIT CSAIL
jane.smith@example.org`},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[86]||(t[86]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",iN,[t[83]||(t[83]=n("summary",null,"Regex & replacement syntax",-1)),t[84]||(t[84]=h()),n("small",rN,[t[77]||(t[77]=h("Regex is supported. Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[78]||(t[78]=h(", or use ",-1)),t[79]||(t[79]=n("code",null,"term=>replacement",-1)),t[80]||(t[80]=h(" to pick your own (e.g. ",-1)),t[81]||(t[81]=n("code",null,"Anonymous=>ABC",-1)),t[82]||(t[82]=h(").",-1))])]),T(n("div",aN,"Regex characters detected. Escape them if unintentional.",512),[[Y,e.termsRegexWarning]]),T(n("div",lN,"Terms are in an invalid format.",512),[[Y,e.anonymize?.terms?.errors?.format]])])],512),[[Y,e.detectedType]]),T(n("section",dN,[t[107]||(t[107]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),T(n("div",null,[n("div",uN,[T(n("input",cN,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",pN,[T(n("input",fN,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",mN,[T(n("input",hN,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",vN,[T(n("input",gN,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",yN,[T(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,bN),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[92]||(t[92]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?c("v-if",!0):(l(),d("small",wN,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",kN,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):c("v-if",!0)])],512),[[Y,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",CN,[...t[93]||(t[93]=[h("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):c("v-if",!0),T(n("div",null,[n("div",EN,[T(n("input",SN,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[94]||(t[94]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",NN,[T(n("input",RN,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[95]||(t[95]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",DN,[T(n("input",TN,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[96]||(t[96]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",_N,[T(n("input",AN,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[97]||(t[97]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",ON,[T(n("input",PN,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[98]||(t[98]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",IN,[T(n("input",MN,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[99]||(t[99]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[Y,e.detectedType==="gist"]]),T(n("div",null,[n("div",VN,[T(n("input",qN,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[100]||(t[100]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",LN,[T(n("input",$N,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[101]||(t[101]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",UN,[T(n("input",FN,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.op Line truncated
jane.smith@example.org`},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[86]||(t[86]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",iN,[t[83]||(t[83]=n("summary",null,"Regex & replacement syntax",-1)),t[84]||(t[84]=h()),n("small",rN,[t[77]||(t[77]=h("Regex is supported. Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[78]||(t[78]=h(", or use ",-1)),t[79]||(t[79]=n("code",null,"term=>replacement",-1)),t[80]||(t[80]=h(" to pick your own (e.g. ",-1)),t[81]||(t[81]=n("code",null,"Anonymous=>ABC",-1)),t[82]||(t[82]=h(").",-1))])]),T(n("div",aN,"Regex characters detected. Escape them if unintentional.",512),[[Y,e.termsRegexWarning]]),T(n("div",lN,"Terms are in an invalid format.",512),[[Y,e.anonymize?.terms?.errors?.format]])])],512),[[Y,e.detectedType]]),T(n("section",dN,[t[107]||(t[107]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),T(n("div",null,[n("div",uN,[T(n("input",cN,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",pN,[T(n("input",fN,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",mN,[T(n("input",hN,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",vN,[T(n("input",gN,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",yN,[T(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,bN),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[92]||(t[92]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?c("v-if",!0):(l(),d("small",wN,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",kN,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):c("v-if",!0)])],512),[[Y,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",CN,[...t[93]||(t[93]=[h("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):c("v-if",!0),T(n("div",null,[n("div",EN,[T(n("input",SN,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[94]||(t[94]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",NN,[T(n("input",RN,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[95]||(t[95]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",DN,[T(n("input",TN,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[96]||(t[96]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",_N,[T(n("input",AN,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[97]||(t[97]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",ON,[T(n("input",PN,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[98]||(t[98]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",IN,[T(n("input",MN,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[99]||(t[99]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[Y,e.detectedType==="gist"]]),T(n("div",null,[n("div",VN,[T(n("input",qN,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[100]||(t[100]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",LN,[T(n("input",$N,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[101]||(t[101]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",UN,[T(n("input",FN,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.op Line truncated
anonymous_github`)])])])])]),c(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),h("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),c(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),h("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Repository data is used to provide the anonymization service. If you purchase a plan, Stripe processes payment and billing information. When a repository is removed or expires, only its configuration is retained. This makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[h("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),h(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),c(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),h("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[h(" Yes. Line truncated
anonymized repository often think it is about the paper, so the
label names the service and the tooltip says who to contact. `),t[26]||(t[26]=me('<li class="nav-item d-none d-lg-block"><a class="nav-link" target="_blank" rel="noopener" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" title="Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors." data-offset="30"><svg class="ui-icon d-lg-none mr-1" aria-hidden="true"><use href="#ui-icon-bug"></use></svg>Report a bug </a></li><li class="nav-item nav-support-item d-none d-lg-block"><a class="nav-link nav-support-inline" href="https://ko-fi.com/tdurieux" target="_blank" rel="noopener" title="Donate on Ko-fi to help cover hosting costs"><svg class="ui-icon nav-heart" aria-hidden="true"><use href="#ui-icon-heart"></use></svg>Support </a></li>',2)),e.isDarkMode?c("v-if",!0):(l(),d("li",G5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to dark mode","aria-label":"Switch to dark mode",onClick:t[1]||(t[1]=o=>{e.darkMode(!0)})},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",W5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to light mode","aria-label":"Switch to light mode",onClick:t[2]||(t[2]=o=>{e.darkMode(!1)})},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):c("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",K5,[...t[21]||(t[21]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),h(" Sign in ")],-1)])])):c("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",Y5,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[3]||(t[3]=ae(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):c("v-if",!0),e.user?(l(),d("li",J5,[n("a",Q5,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,X5)):c("v-if",!0),n("span",Z5,u(e.user?.username),1)]),n("div",x5,[n("h6",e8,"Signed in as @"+u(e.user?.username),1),t[23]||(t[23]=me('<a class="dropdown-item" href="/profile"><svg class="ui-icon" aria-hidden="true"><use href="#project-icon-filter"></use></svg><span>Settings<small>Defaults, quotas, account</small></span></a><a class="dropdown-item" href="/connections"><i class="fab fa-github" aria-hidden="true"></i><span>GitHub connections<small>Repository access and OAuth</small></span></a><a class="dropdown-item" href="/claim"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-link"></use></svg><span>Claim an anonymization<small>Attach an existing mirror to your account</small></span></a><div class="dropdown-divider"></div><a class="dropdown-item" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-bug"></use></svg><span>Report a bug<small>About this service, not a paper</small></span></a><a class="dropdown-item um-extra" href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener"><i class="fab fa-github" aria-hidden="true"></i><span>Source code</span></a>',6)),e.headerShowSupport?(l(),d("a",t8,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",null,"Support the project",-1)])])):c("v-if",!0),t[24]||(t[24]=n("div",{class:"dropdown-divider"},null,-1)),t[25]||(t[25]=n("a",{class:"dropdown-item",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),n("span",null,"Sign out")],-1))])])):c("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,n8)):c("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[8]||(t[8]=ae(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[7]||(t[7]=ae(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[29]||(t[29]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[30]||(t[30]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[31]||(t[31]=n("label",{for:"email-prompt-address"},"Email address",-1)),T(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[4]||(t[4]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,o8),[[it,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",s8,u(e.emailPromptError),1)):c("v-if",!0),n("div",i8,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEma Line truncated
python experiments/run.py`),n("p",null,[h("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),c(" Live stats "),n("section",h8,[t[9]||(t[9]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),h(" Live \xB7 last 60 days \xB7 updated daily")]),n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA")],-1)),n("div",v8,[(l(!0),d(W,null,oe(e.cards,(o,i)=>(l(),d("div",{class:"paper-stat-card",key:o?.key},[n("div",{class:O(["paper-stat-value",{"is-pending":!e.stat}])},u(e.stat?e.fmt?.bigNum(o?.total):"\u2014"),3),n("div",g8,u(o?.label),1),e.history[o?.key].bars?.length>1?(l(),d("div",y8," +"+u(e.fmt?.number(e.history[o?.key].deltaToday))+" today ",1)):c("v-if",!0)]))),128))])]),c(" Before / after "),t[25]||(t[25]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[h("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",b8,[n("div",w8,[t[10]||(t[10]=n("label",{for:"demo-terms"},[h("Terms to redact "),n("span",null,"comma-separated, try adding your own")],-1)),T(n("input",{id:"demo-terms",type:"text","onUpdate:modelValue":t[0]||(t[0]=o=>e.demoTerms=o),spellcheck:"false",autocomplete:"off"},null,512),[[it,e.demoTerms]])]),n("div",k8,[n("div",C8,[t[12]||(t[12]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},[h("Your repository "),n("span",{class:"pane-edit-hint"},"\xB7 editable")]),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",E8,[n("div",S8,[(l(!0),d(W,null,oe(e.demoParts(),(o,i)=>(l(),d(W,{key:i},[o.redacted?(l(),d("mark",N8,u(o.original),1)):(l(),d(W,{key:1},[h(u(o.text),1)],64))],64))),128)),t[11]||(t[11]=h("\u200B",-1))]),T(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[1]||(t[1]=o=>e.demoText=o),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[it,e.demoText]])])]),n("div",R8,[n("div",D8,[t[13]||(t[13]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",T8,[n("span",_8,u(e.demoCount())+" redacted",1)])]),n("div",A8,[(l(!0),d(W,null,oe(e.demoParts(),(o,i)=>(l(),d(W,{key:i},[o.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+o.original+"\u201D"},u(o.text),9,O8)):(l(),d(W,{key:1},[h(u(o.text),1)],64))],64))),128))])])])]),c(" What you get: one screenshot, three tabs "),t[26]||(t[26]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,"Anonymize, review, manage.")]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",P8,[n("div",I8,[(l(!0),d(W,null,oe(e.features,(o,i)=>(l(),d("div",{class:O(["paper-feature",{"is-on":e.feature===o?.key}]),key:o?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(o.key),onKeydown:s=>e.featureKeydown(s,i),id:"feature-tab-"+o?.key,"aria-controls":"feature-panel-"+o?.key,"aria-selected":e.feature===o?.key,tabindex:e.feature===o?.key?0:-1},[n("span",V8,u(o?.num)+" \xB7 "+u(o?.eyebrow),1),n("span",q8,u(o?.title)+" "+u(o?.accent),1)],40,M8),n("div",L8,[n("span",$8,u(o?.title)+" "+u(o?.accent),1),n("p",null,u(o?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(o)),target:e.featureTarget(o)},u(o?.cta)+" \u2192",9,U8)])],2))),128))]),n("div",F8,[(l(!0),d(W,null,oe(e.features,(o,i)=>T((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:o?.key,id:"feature-panel-"+o?.key,"aria-labelledby":"feature-tab-"+o?.key},[n("div",z8,[n("div",H8,[t[14]||(t[14]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",j8,u(o?.url),1)]),n("div",{class:O(["feat-mock","is-"+o?.key]),role:"img","aria-label":o?.alt},[o?.key==="anonymize"?(l(),d("div",W8,[...t[15]||(t[15]=[me('<div class="fm-label">GitHub repository</div><div class="fm-input">github.com/jane-smith/DeepLearnUtils</div><div class="fm-label">Terms to redact</div><div class="fm-chips"><span>Jane Smith</span><span>MIT CSAIL</span><span>jane.smith@mit.edu</span><span class="fm-chip-add">+ Add term</span></div><div class="fm-row"><div><div class="fm-label">Reviewers can see</div><div class="fm-toggles"><span class="is-on">Images</span><span class="is-on">PDFs</span><span>Links</span><span class="is-on">Notebooks</span></div></div><div><div class="fm-label">Expires</div><div class="fm-input fm-input-sm">Mar 31, 2027</div></div></div><div class="fm-actions"><span class="fm-share">anonymous.4open.science/r/paper-7f2a</span><span class="fm-btn"> Line truncated
label names the service and the tooltip says who to contact. `),t[26]||(t[26]=me('<li class="nav-item d-none d-lg-block"><a class="nav-link" target="_blank" rel="noopener" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" title="Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors." data-offset="30"><svg class="ui-icon d-lg-none mr-1" aria-hidden="true"><use href="#ui-icon-bug"></use></svg>Report a bug </a></li><li class="nav-item nav-support-item d-none d-lg-block"><a class="nav-link nav-support-inline" href="https://ko-fi.com/tdurieux" target="_blank" rel="noopener" title="Donate on Ko-fi to help cover hosting costs"><svg class="ui-icon nav-heart" aria-hidden="true"><use href="#ui-icon-heart"></use></svg>Support </a></li>',2)),e.isDarkMode?c("v-if",!0):(l(),d("li",G5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to dark mode","aria-label":"Switch to dark mode",onClick:t[1]||(t[1]=o=>{e.darkMode(!0)})},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",W5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to light mode","aria-label":"Switch to light mode",onClick:t[2]||(t[2]=o=>{e.darkMode(!1)})},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):c("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",K5,[...t[21]||(t[21]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),h(" Sign in ")],-1)])])):c("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",Y5,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[3]||(t[3]=ae(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):c("v-if",!0),e.user?(l(),d("li",J5,[n("a",Q5,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,X5)):c("v-if",!0),n("span",Z5,u(e.user?.username),1)]),n("div",x5,[n("h6",e8,"Signed in as @"+u(e.user?.username),1),t[23]||(t[23]=me('<a class="dropdown-item" href="/profile"><svg class="ui-icon" aria-hidden="true"><use href="#project-icon-filter"></use></svg><span>Settings<small>Defaults, quotas, account</small></span></a><a class="dropdown-item" href="/connections"><i class="fab fa-github" aria-hidden="true"></i><span>GitHub connections<small>Repository access and OAuth</small></span></a><a class="dropdown-item" href="/claim"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-link"></use></svg><span>Claim an anonymization<small>Attach an existing mirror to your account</small></span></a><div class="dropdown-divider"></div><a class="dropdown-item" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-bug"></use></svg><span>Report a bug<small>About this service, not a paper</small></span></a><a class="dropdown-item um-extra" href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener"><i class="fab fa-github" aria-hidden="true"></i><span>Source code</span></a>',6)),e.headerShowSupport?(l(),d("a",t8,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",null,"Support the project",-1)])])):c("v-if",!0),t[24]||(t[24]=n("div",{class:"dropdown-divider"},null,-1)),t[25]||(t[25]=n("a",{class:"dropdown-item",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),n("span",null,"Sign out")],-1))])])):c("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,n8)):c("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[8]||(t[8]=ae(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[7]||(t[7]=ae(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[29]||(t[29]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[30]||(t[30]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[31]||(t[31]=n("label",{for:"email-prompt-address"},"Email address",-1)),T(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[4]||(t[4]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,o8),[[ot,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",s8,u(e.emailPromptError),1)):c("v-if",!0),n("div",i8,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEma Line truncated
python experiments/run.py`),n("p",null,[h("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),c(" Live stats "),n("section",h8,[t[9]||(t[9]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),h(" Live \xB7 last 60 days \xB7 updated daily")]),n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA")],-1)),n("div",v8,[(l(!0),d(W,null,oe(e.cards,(o,i)=>(l(),d("div",{class:"paper-stat-card",key:o?.key},[n("div",{class:O(["paper-stat-value",{"is-pending":!e.stat}])},u(e.stat?e.fmt?.bigNum(o?.total):"\u2014"),3),n("div",g8,u(o?.label),1),e.history[o?.key].bars?.length>1?(l(),d("div",y8," +"+u(e.fmt?.number(e.history[o?.key].deltaToday))+" today ",1)):c("v-if",!0)]))),128))])]),c(" Before / after "),t[25]||(t[25]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[h("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",b8,[n("div",w8,[t[10]||(t[10]=n("label",{for:"demo-terms"},[h("Terms to redact "),n("span",null,"comma-separated, try adding your own")],-1)),T(n("input",{id:"demo-terms",type:"text","onUpdate:modelValue":t[0]||(t[0]=o=>e.demoTerms=o),spellcheck:"false",autocomplete:"off"},null,512),[[ot,e.demoTerms]])]),n("div",k8,[n("div",C8,[t[12]||(t[12]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},[h("Your repository "),n("span",{class:"pane-edit-hint"},"\xB7 editable")]),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",E8,[n("div",S8,[(l(!0),d(W,null,oe(e.demoParts(),(o,i)=>(l(),d(W,{key:i},[o.redacted?(l(),d("mark",N8,u(o.original),1)):(l(),d(W,{key:1},[h(u(o.text),1)],64))],64))),128)),t[11]||(t[11]=h("\u200B",-1))]),T(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[1]||(t[1]=o=>e.demoText=o),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[ot,e.demoText]])])]),n("div",R8,[n("div",D8,[t[13]||(t[13]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",T8,[n("span",_8,u(e.demoCount())+" redacted",1)])]),n("div",A8,[(l(!0),d(W,null,oe(e.demoParts(),(o,i)=>(l(),d(W,{key:i},[o.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+o.original+"\u201D"},u(o.text),9,O8)):(l(),d(W,{key:1},[h(u(o.text),1)],64))],64))),128))])])])]),c(" What you get: one screenshot, three tabs "),t[26]||(t[26]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,"Anonymize, review, manage.")]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",P8,[n("div",I8,[(l(!0),d(W,null,oe(e.features,(o,i)=>(l(),d("div",{class:O(["paper-feature",{"is-on":e.feature===o?.key}]),key:o?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(o.key),onKeydown:s=>e.featureKeydown(s,i),id:"feature-tab-"+o?.key,"aria-controls":"feature-panel-"+o?.key,"aria-selected":e.feature===o?.key,tabindex:e.feature===o?.key?0:-1},[n("span",V8,u(o?.num)+" \xB7 "+u(o?.eyebrow),1),n("span",q8,u(o?.title)+" "+u(o?.accent),1)],40,M8),n("div",L8,[n("span",$8,u(o?.title)+" "+u(o?.accent),1),n("p",null,u(o?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(o)),target:e.featureTarget(o)},u(o?.cta)+" \u2192",9,U8)])],2))),128))]),n("div",F8,[(l(!0),d(W,null,oe(e.features,(o,i)=>T((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:o?.key,id:"feature-panel-"+o?.key,"aria-labelledby":"feature-tab-"+o?.key},[n("div",z8,[n("div",H8,[t[14]||(t[14]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",j8,u(o?.url),1)]),n("div",{class:O(["feat-mock","is-"+o?.key]),role:"img","aria-label":o?.alt},[o?.key==="anonymize"?(l(),d("div",W8,[...t[15]||(t[15]=[me('<div class="fm-label">GitHub repository</div><div class="fm-input">github.com/jane-smith/DeepLearnUtils</div><div class="fm-label">Terms to redact</div><div class="fm-chips"><span>Jane Smith</span><span>MIT CSAIL</span><span>jane.smith@mit.edu</span><span class="fm-chip-add">+ Add term</span></div><div class="fm-row"><div><div class="fm-label">Reviewers can see</div><div class="fm-toggles"><span class="is-on">Images</span><span class="is-on">PDFs</span><span>Links</span><span class="is-on">Notebooks</span></div></div><div><div class="fm-label">Expires</div><div class="fm-input fm-input-sm">Mar 31, 2027</div></div></div><div class="fm-actions"><span class="fm-share">anonymous.4open.science/r/paper-7f2a</span><span class="fm-btn"> Line truncated
<span class="ln">2</span><span class="c"># Author: <span class="redact">XXXX-1</span>, <span class="redact">XXXX-2</span></span>
<span class="ln">3</span><span class="k">import</span> torch
<span class="ln">4</span><span class="k">from</span> utils <span class="k">import</span> load_config
@@ -37,13 +37,14 @@ python experiments/run.py`),n("p",null,[h("Contact: "),n("span",{class:"redact",
<span class="ln">7</span> model = build_model(config)
<span class="ln">8</span> <span class="k">for</span> epoch <span class="k">in</span> range(config.epochs):
<span class="ln">9</span> loss = step(model)
<span class="ln">10</span> log(<span class="s">&quot;epoch %d: %.3f&quot;</span>, epoch, loss)</pre></div>`,2)])])):(l(),d("div",Y8,[...t[17]||(t[17]=[me('<div class="fm-dash-head"><span>Project</span><span>Status</span><span>Views</span><span>Expires</span></div><div class="fm-dash-row"><span><b>DeepLearnUtils</b><i>paper-7f2a \xB7 ICSE 2027</i></span><span class="st is-ready">Ready</span><span>41</span><span>Mar 31, 2027</span></div><div class="fm-dash-row"><span><b>vision-bench#212</b><i>pull request \xB7 FSE 2027</i></span><span class="st is-ready">Ready</span><span>12</span><span>Never</span></div><div class="fm-dash-row"><span><b>graph-repair</b><i>gr-91ab</i></span><span class="st is-progress">Updating</span><span>5</span><span>Jan 5, 2027</span></div><div class="fm-dash-row is-muted"><span><b>JarSift</b><i>OOPSLA 2025</i></span><span class="st is-expired">Expired</span><span>72</span><span>Sep 28, 2026</span></div>',5)])]))],10,G8)])],8,B8)),[[Y,e.feature===o?.key]])),128))])]),c(" FAQ teaser "),t[27]||(t[27]=me('<section class="paper-qa paper-wrap" aria-labelledby="qa-heading"><div><div class="paper-eyebrow">Before you sign in</div><h2 id="qa-heading">The questions that come up most.</h2><a class="paper-link-arrow" href="/faq">Read the full FAQ \u2192</a></div><div><div class="q"><a href="/faq#permissions">What access does GitHub sign-in require?</a><p> The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories. </p></div><div class="q"><a href="/faq#formats">Which file formats are supported?</a><p> Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged. </p></div><div class="q"><a href="/faq#expiration">What happens when an anonymized repository expires?</a><p> You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over. </p></div></div></section><section class="paper-cta paper-wrap" aria-labelledby="cta-heading"><div><h2 id="cta-heading">Ready for review?</h2><p>Create an anonymous mirror in a couple of minutes. Reviewers just open the link.</p></div><div class="paper-cta-actions"><a class="btn-hero" href="/signin" target="_self"><i class="fab fa-github" aria-hidden="true"></i> Sign in with GitHub</a><a class="paper-link-arrow" href="/faq">Read the FAQ \u2192</a></div></section>',2)),n("footer",J8,[n("div",Q8,[t[21]||(t[21]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[h("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",X8,[t[18]||(t[18]=n("div",{class:"paper-footer-head"},"Product",-1)),t[19]||(t[19]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",Z8,"My work")):c("v-if",!0),e.user?(l(),d("a",x8,"Conferences")):c("v-if",!0),t[20]||(t[20]=n("a",{href:"/faq"},"FAQ",-1))]),t[22]||(t[22]=me('<div class="paper-footer-col"><div class="paper-footer-head">Project</div><a href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener">Source code</a><a href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener">Report a bug</a><a href="https://github.com/sponsors/tdurieux/" target="_blank" rel="noopener">Support</a></div><div class="paper-footer-col"><div class="paper-footer-head">Contact</div><a href="mailto:tdurieux@anonymous.4open.science">Email maintainer</a><a href="https://github.com/tdurieux" target="_blank" rel="noopener">@tdurieux</a></div>',2))]),t[24]||(t[24]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",eM,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[23]||(t[23]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var tM={class:"paper-empty"},nM={class:"paper-empty-inner"},oM={key:0,class:"paper-eyebrow"},sM={key:1,class:"paper-eyebrow"},iM={key:2,class:"paper-empty-title"},rM=["textContent"];function Xl(e,t){return l(),d("div",tM,[n("div",nM,[e.error?c("v-if",!0):(l(),d("div",oM,"Working")),e.error?(l(),d("div",sM,"Error")):c("v-if",!0),e.error?c("v-if",!0):(l(),d("h1",iM,[...t[0]||(t[0]=[h(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,rM)):c("v-if",!0)])])}var aM={class:"container paper-page paper-settings"},lM={class:"paper-crumbs"},dM={class:"here"},uM={class:"paper-page-title"},cM={class:"paper-settings-body"},pM={class:"paper-settings-toc"},fM={href:"#conf-billing"},mM={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},hM={id:"conf-basics",class:"paper-settings-section"},vM={class:"form-group"},gM={class:"invalLine truncated
`).length))+" lines",1)):c("v-if",!0),e.type=="html"&&e.fileSize(e.filePath)!=null?(l(),d("span",TV,u(e.formatSize(e.fileSize(e.filePath))),1)):c("v-if",!0),e.redactionCount()?(l(),d("b",_V,u(e.redactionCount())+" redacted",1)):c("v-if",!0)]),T(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy file path",title:e.pathCopied?"Path copied":"Copy file path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",OV,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,PV)]))],8,AV),[[Y,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",IV,[e.languageName?(l(),d(W,{key:0},[h(u(e.languageName),1),t[34]||(t[34]=n("span",{class:"sep"},"\xB7",-1))],64)):c("v-if",!0),h(u(e.fmt?.number(e.content.split(`
`).length))+" lines",1),n("span",MV,[t[35]||(t[35]=n("span",{class:"sep"},"\xB7",-1)),h(u(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),e.redactionCount()?(l(),d(W,{key:1},[t[36]||(t[36]=n("span",{class:"sep"},"\xB7",-1)),n("span",VV,u(e.redactionCount())+" redacted",1)],64)):c("v-if",!0)])):c("v-if",!0),e.type=="html"?(l(),d("span",qV,[t[39]||(t[39]=h("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(W,{key:0},[t[37]||(t[37]=n("span",{class:"sep"},"\xB7",-1)),h(u(e.formatSize(e.fileSize(e.filePath))),1)],64)):c("v-if",!0),e.redactionCount()?(l(),d(W,{key:1},[t[38]||(t[38]=n("span",{class:"sep"},"\xB7",-1)),n("span",LV,u(e.redactionCount())+" redacted",1)],64)):c("v-if",!0)])):c("v-if",!0),n("div",$V,[e.type!="html"&&e.symbols().length>1?(l(),d("div",UV,[n("button",{type:"button",class:O(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[3]||(t[3]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,FV),e.symbolsOpen?(l(),d("div",BV,[n("div",zV,u(e.symbols().length)+" "+u(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(W,null,oe(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:p=>e.goToSymbol(a.line)},[n("span",{class:O(["symbols-kind","is-"+a.kind])},u(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",jV,u(a.name),1),n("span",GV,u(a.line),1)],8,HV))),128))])):c("v-if",!0)])):c("v-if",!0),e.type=="html"?(l(),d("button",{key:1,type:"button",class:O(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[4]||(t[4]=a=>e.toggleMdFind())},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,WV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[5]||(t[5]=a=>e.findInFile())},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,KV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:3,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[6]||(t[6]=a=>e.gotoLine())},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,YV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:4,type:"button",class:O(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap long lines",title:"Wrap long lines (Alt+Z)",onClick:t[7]||(t[7]=a=>e.toggleWrap())},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,JV)):c("v-if",!0),n("div",QV,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,XV),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[8]||(t[8]=a=>e.copyContent())},[(l(),d("svg",xV,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,e6)]))],8,ZV)):c("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,t6)]),typeof e.content=="string"?(l(),d("button",{key:5,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[9]||(t[9]=a=>e.copyContent())},[(l(),d("svg",o6,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,s6)]))],8,n6)):c("v-if",!0),e.type=="html"&&e.readmeToc().length>=3?(l(),d("div",i6,[n("button",{type:"button",class:O(["btn btn-sm btn-icon-only btn-ghost tb-toc-btn",{"is-on":e.tocOpen}]),"aria-label":"On this page",title:"On this page","aria-haspopup":"true","aria-expanded":e.tocOpen?"true":"false",onClick:t[10]||(t[10]=ae(a=>{e.tocOpen=!e.tocOpen,e.moreOpen=!1},["stop"]))},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-outline"})],-1)])],10,r6),e.tocOpen?(l(),d("div",{key:0,class:"tb-menu tb-toc-menu",role:"menu",onClick:t[12]||(t[12]=a=>e.tocOpen=!1)},[t[47]||(t[47]=n("div",{class:"tb-menu-label"},"On this page",-1)),n("button Line truncated
`).length))+" lines",1)],64)):c("v-if",!0),h(" \xB7 "+u(e.type=="html"&&e.fileSize(e.filePath)!=null?e.formatSize(e.fileSize(e.filePath)):e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)])):c("v-if",!0),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",f6)):c("v-if",!0),e.type=="html"?(l(),d("button",{key:3,type:"button",role:"menuitem",onClick:t[14]||(t[14]=a=>e.toggleMdFind())},[...t[50]||(t[50]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),h("Find in file",-1)])])):c("v-if",!0),e.type=="html"?(l(),d("div",m6)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:5,type:"button",role:"menuitem",onClick:t[15]||(t[15]=a=>e.findInFile())},[...t[51]||(t[51]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),h("Find in file",-1)])])):c("v-if",!0),e.type!="html"?(l(),d("button",{key:6,type:"button",role:"menuitem",onClick:t[16]||(t[16]=a=>e.gotoLine())},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1),h("Go to line",-1)])])):c("v-if",!0),e.type!="html"?(l(),d("button",{key:7,type:"button",role:"menuitemcheckbox","aria-checked":e.wrapLines?"true":"false",onClick:t[17]||(t[17]=a=>e.toggleWrap())},[t[53]||(t[53]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)),t[54]||(t[54]=h("Wrap lines",-1)),e.wrapLines?(l(),d("span",v6,"\u2713")):c("v-if",!0)],8,h6)):c("v-if",!0),e.type!="html"?(l(),d("div",g6)):c("v-if",!0),e.type=="html"?(l(),d("a",{key:9,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),h("View raw",-1)])],8,y6)):c("v-if",!0),e.type!="html"?(l(),d("a",{key:10,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[56]||(t[56]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),h("View raw",-1)])],8,b6)):c("v-if",!0),n("a",{role:"menuitem",target:"_self",href:e.safeUrl(e.url+"&download=true")},[...t[57]||(t[57]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),h("Download file",-1)])],8,w6),e.options?.hasWebsite?(l(),d("a",{key:11,role:"menuitem",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),h("Open website",-1)])],8,k6)):c("v-if",!0),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:12,role:"menuitem",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),h("Edit anonymization",-1)])],8,C6)):c("v-if",!0),e.options?.download?(l(),d("a",{key:13,role:"menuitem",target:"_self",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),h("Download ZIP",-1)])],8,E6)):c("v-if",!0),n("button",{type:"button",role:"menuitem",onClick:t[18]||(t[18]=a=>e.copyPath())},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-link"})],-1),h("Copy file path",-1)])]),t[62]||(t[62]=n("div",{class:"tb-menu-sep"},null,-1)),t[63]||(t[63]=n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),h("FAQ")],-1)),t[64]||(t[64]=n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),h("Report a bug")],-1))])):c("v-if",!0)])])]),e.type!="html"?T((l(),d("div",S6,null,512)),[[r,{content:e.content,options:e.aceOption}]]):c("v-if",!0),e.type=="html"&&e.mdFindOpen?(l(),d("div",N6,[n("input",{type:"search",class:"md-find-input",placeholder:"Find on this page","aria-label":"Find on this page",value:e.mdFindQuery,onInput:t[20]||(t[20]=a=>{e.mdFindQuery=a.target.value,e.runMdFind()}),onKeydown:[t[21]||(t[21]=yt(ae(a=>a.shiftKey?e.stepMdFind(-1):e.stepMdFind(1),["prevent"]),["enter"])),t[22]||(t[22]=yt(ae(a=>e.toggleMdFind(!1),["prevent"]),["esc"]))]},null,40,R6),n("span",D6,[n("button",{type:"button","aria-label":"Previous match",onClick:t[23]||(t[23]=a=>e.stepMdFind(-1)),disabled:!e.mdFindTotal},[...t[65]||(t[65]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,T6),n("button",{type:"button","aria-label":"Next match",onClick:t[24]||(t[24]=a=>e.stepMdFind(1)),disabled:!e.mdFindTotal},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,_6)]),n("span",A6,u(e.mdFindQuery?e.mdFindTotal?e.mdFindIndex+1+" of "+e.mdFindTotal:"No results":""),1),n("button",{type:"button",class:O(["md-find-opt",{"is-on":e.mdFindCase}]),"aria-pressed":e. Line truncated
<span class="ln">10</span> log(<span class="s">&quot;epoch %d: %.3f&quot;</span>, epoch, loss)</pre></div>`,2)])])):(l(),d("div",Y8,[...t[17]||(t[17]=[me('<div class="fm-dash-head"><span>Project</span><span>Status</span><span>Views</span><span>Expires</span></div><div class="fm-dash-row"><span><b>DeepLearnUtils</b><i>paper-7f2a \xB7 ICSE 2027</i></span><span class="st is-ready">Ready</span><span>41</span><span>Mar 31, 2027</span></div><div class="fm-dash-row"><span><b>vision-bench#212</b><i>pull request \xB7 FSE 2027</i></span><span class="st is-ready">Ready</span><span>12</span><span>Never</span></div><div class="fm-dash-row"><span><b>graph-repair</b><i>gr-91ab</i></span><span class="st is-progress">Updating</span><span>5</span><span>Jan 5, 2027</span></div><div class="fm-dash-row is-muted"><span><b>JarSift</b><i>OOPSLA 2025</i></span><span class="st is-expired">Expired</span><span>72</span><span>Sep 28, 2026</span></div>',5)])]))],10,G8)])],8,B8)),[[Y,e.feature===o?.key]])),128))])]),c(" FAQ teaser "),t[27]||(t[27]=me('<section class="paper-qa paper-wrap" aria-labelledby="qa-heading"><div><div class="paper-eyebrow">Before you sign in</div><h2 id="qa-heading">The questions that come up most.</h2><a class="paper-link-arrow" href="/faq">Read the full FAQ \u2192</a></div><div><div class="q"><a href="/faq#permissions">What access does GitHub sign-in require?</a><p> The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories. </p></div><div class="q"><a href="/faq#formats">Which file formats are supported?</a><p> Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged. </p></div><div class="q"><a href="/faq#expiration">What happens when an anonymized repository expires?</a><p> You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over. </p></div></div></section><section class="paper-cta paper-wrap" aria-labelledby="cta-heading"><div><h2 id="cta-heading">Ready for review?</h2><p>Create an anonymous mirror in a couple of minutes. Reviewers just open the link.</p></div><div class="paper-cta-actions"><a class="btn-hero" href="/signin" target="_self"><i class="fab fa-github" aria-hidden="true"></i> Sign in with GitHub</a><a class="paper-link-arrow" href="/faq">Read the FAQ \u2192</a></div></section>',2)),n("footer",J8,[n("div",Q8,[t[21]||(t[21]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[h("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",X8,[t[18]||(t[18]=n("div",{class:"paper-footer-head"},"Product",-1)),t[19]||(t[19]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",Z8,"My work")):c("v-if",!0),e.user?(l(),d("a",x8,"Conferences")):c("v-if",!0),t[20]||(t[20]=n("a",{href:"/faq"},"FAQ",-1))]),t[22]||(t[22]=me('<div class="paper-footer-col"><div class="paper-footer-head">Project</div><a href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener">Source code</a><a href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener">Report a bug</a><a href="https://github.com/sponsors/tdurieux/" target="_blank" rel="noopener">Support</a></div><div class="paper-footer-col"><div class="paper-footer-head">Contact</div><a href="mailto:tdurieux@anonymous.4open.science">Email maintainer</a><a href="https://github.com/tdurieux" target="_blank" rel="noopener">@tdurieux</a></div>',2))]),t[24]||(t[24]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",eM,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[23]||(t[23]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var tM={class:"paper-empty"},nM={class:"paper-empty-inner"},oM={key:0,class:"paper-eyebrow"},sM={key:1,class:"paper-eyebrow"},iM={key:2,class:"paper-empty-title"},rM=["textContent"];function Xl(e,t){return l(),d("div",tM,[n("div",nM,[e.error?c("v-if",!0):(l(),d("div",oM,"Working")),e.error?(l(),d("div",sM,"Error")):c("v-if",!0),e.error?c("v-if",!0):(l(),d("h1",iM,[...t[0]||(t[0]=[h(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,rM)):c("v-if",!0)])])}var aM={class:"container paper-page paper-settings"},lM={class:"paper-crumbs"},dM={class:"here"},uM={class:"paper-page-title"},cM={class:"paper-settings-body"},pM={class:"paper-settings-toc"},fM={href:"#conf-billing"},mM={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},hM={id:"conf-basics",class:"paper-settings-section"},vM={class:"form-group"},gM={class:"invalLine truncated
`).length))+" lines",1)):c("v-if",!0),e.type=="html"&&e.fileSize(e.filePath)!=null?(l(),d("span",TV,u(e.formatSize(e.fileSize(e.filePath))),1)):c("v-if",!0),e.redactionCount()?(l(),d("b",_V,u(e.redactionCount())+" redacted",1)):c("v-if",!0)]),T(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy file path",title:e.pathCopied?"Path copied":"Copy file path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",OV,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,PV)]))],8,AV),[[Y,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",IV,[e.languageName?(l(),d(W,{key:0},[h(u(e.languageName),1),t[37]||(t[37]=n("span",{class:"sep"},"\xB7",-1))],64)):c("v-if",!0),h(u(e.fmt?.number(e.content.split(`
`).length))+" lines",1),n("span",MV,[t[38]||(t[38]=n("span",{class:"sep"},"\xB7",-1)),h(u(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),e.redactionCount()?(l(),d(W,{key:1},[t[39]||(t[39]=n("span",{class:"sep"},"\xB7",-1)),n("span",VV,u(e.redactionCount())+" redacted",1)],64)):c("v-if",!0)])):c("v-if",!0),e.type=="html"?(l(),d("span",qV,[t[42]||(t[42]=h("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(W,{key:0},[t[40]||(t[40]=n("span",{class:"sep"},"\xB7",-1)),h(u(e.formatSize(e.fileSize(e.filePath))),1)],64)):c("v-if",!0),e.redactionCount()?(l(),d(W,{key:1},[t[41]||(t[41]=n("span",{class:"sep"},"\xB7",-1)),n("span",LV,u(e.redactionCount())+" redacted",1)],64)):c("v-if",!0)])):c("v-if",!0),n("div",$V,[e.type!="html"&&e.symbols().length>1?(l(),d("div",UV,[n("button",{type:"button",class:O(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[3]||(t[3]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,FV),e.symbolsOpen?(l(),d("div",BV,[n("div",zV,u(e.symbols().length)+" "+u(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(W,null,oe(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:p=>e.goToSymbol(a.line)},[n("span",{class:O(["symbols-kind","is-"+a.kind])},u(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",jV,u(a.name),1),n("span",GV,u(a.line),1)],8,HV))),128))])):c("v-if",!0)])):c("v-if",!0),e.type=="html"?(l(),d("button",{key:1,type:"button",class:O(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[4]||(t[4]=a=>e.toggleMdFind())},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,WV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[5]||(t[5]=a=>e.findInFile())},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,KV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:3,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[6]||(t[6]=a=>e.gotoLine())},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,YV)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:4,type:"button",class:O(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap long lines",title:"Wrap long lines (Alt+Z)",onClick:t[7]||(t[7]=a=>e.toggleWrap())},[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,JV)):c("v-if",!0),n("div",QV,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,XV),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[8]||(t[8]=a=>e.copyContent())},[(l(),d("svg",xV,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,e6)]))],8,ZV)):c("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[48]||(t[48]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,t6)]),typeof e.content=="string"?(l(),d("button",{key:5,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[9]||(t[9]=a=>e.copyContent())},[(l(),d("svg",o6,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,s6)]))],8,n6)):c("v-if",!0),e.type=="html"&&e.readmeToc().length>=3?(l(),d("div",i6,[n("button",{type:"button",class:O(["btn btn-sm btn-icon-only btn-ghost tb-toc-btn",{"is-on":e.tocOpen}]),"aria-label":"On this page",title:"On this page","aria-haspopup":"true","aria-expanded":e.tocOpen?"true":"false",onClick:t[10]||(t[10]=ae(a=>{e.tocOpen=!e.tocOpen,e.moreOpen=!1},["stop"]))},[...t[49]||(t[49]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-outline"})],-1)])],10,r6),e.tocOpen?(l(),d("div",{key:0,class:"tb-menu tb-toc-menu",role:"menu",onClick:t[12]||(t[12]=a=>e.tocOpen=!1)},[t[50]||(t[50]=n("div",{class:"tb-menu-label"},"On this page",-1)),n("button Line truncated
`).length))+" lines",1)],64)):c("v-if",!0),h(" \xB7 "+u(e.type=="html"&&e.fileSize(e.filePath)!=null?e.formatSize(e.fileSize(e.filePath)):e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)])):c("v-if",!0),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",f6)):c("v-if",!0),e.type=="html"?(l(),d("button",{key:3,type:"button",role:"menuitem",onClick:t[14]||(t[14]=a=>e.toggleMdFind())},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),h("Find in file",-1)])])):c("v-if",!0),e.type=="html"?(l(),d("div",m6)):c("v-if",!0),e.type!="html"?(l(),d("button",{key:5,type:"button",role:"menuitem",onClick:t[15]||(t[15]=a=>e.findInFile())},[...t[54]||(t[54]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),h("Find in file",-1)])])):c("v-if",!0),e.type!="html"?(l(),d("button",{key:6,type:"button",role:"menuitem",onClick:t[16]||(t[16]=a=>e.gotoLine())},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1),h("Go to line",-1)])])):c("v-if",!0),e.type!="html"?(l(),d("button",{key:7,type:"button",role:"menuitemcheckbox","aria-checked":e.wrapLines?"true":"false",onClick:t[17]||(t[17]=a=>e.toggleWrap())},[t[56]||(t[56]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)),t[57]||(t[57]=h("Wrap lines",-1)),e.wrapLines?(l(),d("span",v6,"\u2713")):c("v-if",!0)],8,h6)):c("v-if",!0),e.type!="html"?(l(),d("div",g6)):c("v-if",!0),e.type=="html"?(l(),d("a",{key:9,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),h("View raw",-1)])],8,y6)):c("v-if",!0),e.type!="html"?(l(),d("a",{key:10,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),h("View raw",-1)])],8,b6)):c("v-if",!0),n("a",{role:"menuitem",target:"_self",href:e.safeUrl(e.url+"&download=true")},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),h("Download file",-1)])],8,w6),e.options?.hasWebsite?(l(),d("a",{key:11,role:"menuitem",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),h("Open website",-1)])],8,k6)):c("v-if",!0),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:12,role:"menuitem",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[62]||(t[62]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),h("Edit anonymization",-1)])],8,C6)):c("v-if",!0),e.options?.download?(l(),d("a",{key:13,role:"menuitem",target:"_self",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[63]||(t[63]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),h("Download ZIP",-1)])],8,E6)):c("v-if",!0),n("button",{type:"button",role:"menuitem",onClick:t[18]||(t[18]=a=>e.copyPath())},[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-link"})],-1),h("Copy file path",-1)])]),t[65]||(t[65]=n("div",{class:"tb-menu-sep"},null,-1)),t[66]||(t[66]=n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),h("FAQ")],-1)),t[67]||(t[67]=n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),h("Report a bug")],-1))])):c("v-if",!0)])]),e.gotoOpen&&e.type!="html"?(l(),d("form",{key:2,class:"goto-pop",role:"dialog","aria-label":"Go to line",onSubmit:t[22]||(t[22]=ae(a=>e.submitGoto(),["prevent"]))},[t[68]||(t[68]=n("label",{class:"goto-label",for:"goto-input"},"Go to line",-1)),T(n("input",{id:"goto-input",class:"goto-input",type:"text",inputmode:"numeric",autocomplete:"off",spellcheck:"false",placeholder:"1\u2013"+e.fmt?.number(typeof e.content=="string"?e.content.split(`
`).length:1),"aria-invalid":e.gotoError?"true":"false","onUpdate:modelValue":t[20]||(t[20]=a=>e.gotoValue=a),onKeydown:t[21]||(t[21]=ct(ae(a=>e.closeGoto(),["prevent","stop"]),["esc"]))},null,40,S6),[[ot,e.gotoValue]]),n("span",{class:O(["goto-hint",{"is-error":e.gotoError}])},u(e.gotoError||"Line, or line:column"),3)],32)):c("v-if",!0)]),e.type!="html"?T((l(),d("div",N6,null,512)),[[r,{content:e.content,options:e.aceOption}]]):c("v-if",!0),e.type=="html"&&e.mdFindOpen?(l(),d("div",R6,[n("input",{type:"search",class:"md-find-input",placeholder:"Find on this page","aria-label":"Find on this page",value:e.mdFindQuery,onInput:t[23]||(t[23]=a=>{e.mdFindQuery=a.target.value,e.runMdFind()}),onKeydown:[t[24]||(t[24]=ct(ae(a=>a.shiftKey?e.stepMdFind(-1):e.stepMdFind(1),["prevent"]),["enter"])),t[25]||(t[25]=ct(ae(a=>e.toggleMdFind(!1),["prevent"]),["esc"]))]},null,40,D6),n("span",T6,[n("button",{type:"button","aria-label":"Previous match",onClick:t[26]||(t[26]=a=>e.stepMdFind(-1)),disabled:!e.mdFindTotal},[...t[69]||(t[69]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,_6),n("button",{type:"button","aria-label":"Next match",onClick:t[27]||(t[27]=a=>e.stepMdFind(1)),disabled:!e.mdFindTotal},[...t[70]||(t[70]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,A6)]),n("span",O6,u(e.mdFindQuery?e.mdFindTotal?e.mdFindIndex+1+" of "+e.mdFindTotal:"No results":""),1),n("button",{type:"button",class:O(["md-find-opt",{"is-on":e.mdFindCase}]),"aria-pressed":e.mdFindCase?"true":"false",title:"Match case","aria-label":"Match case",onClick:t[28]||(t[28]=a=>{e.mdFindCase=!e.mdFindCase,e.runMdFind()})},"Aa",10,P6),n("button",{type:"button",class:"md-find-close","aria-label":"Close find",onClick:t[29]||(t[29]=a=>e.toggleMdFind(!1))},"\xD7")])):c("v-if",!0),e.type=="html"?(l(),d("div",I6,[n("div",{class:"file-content markdown-body",innerHTML:e.renderReadme(e.sanitize(e.content))},null,8,M6),e.readmeToc().length>=3?(l(),d("aside",V6,[t[71]||(t[71]=n("div",{class:"readme-toc-head"},"On this page",-1)),n("nav",q6,[n("a",{href:"#",class:O(["lvl-2 toc-top",{"is-active":!e.activeHeading}]),onClick:t[30]||(t[30]=ae(a=>e.scrollToHeading(null),["prevent"]))},"Introduction",2),(l(!0),d(W,null,oe(e.readmeToc(),(a,p)=>(l(),d("a",{key:a.id,href:"#"+a.id,class:O(["lvl-"+a.level,{"is-active":e.activeHeading===a.id}]),onClick:ae(f=>e.scrollToHeading(a.id),["prevent"])},u(a.text),11,L6))),128))])])):c("v-if",!0)])):c("v-if",!0)],2)):c("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),Bt(o,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):c("v-if",!0),e.type=="image"?(l(),d("img",{key:3,class:"image-content",src:e.safeUrl(e.url)},null,8,$6)):c("v-if",!0),e.type=="media"?(l(),d("iframe",{key:4,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,U6)):c("v-if",!0),e.type=="pdf"?(l(),Bt(i,{key:5,src:e.safeUrl(e.url)},null,8,["src"])):c("v-if",!0),e.type=="audio"?(l(),d("div",F6,[n("audio",B6,[n("source",{src:e.safeUrl(e.url)},null,8,z6)])])):c("v-if",!0),e.type=="IPython"?(l(),d("div",H6,[De(s,{file:e.url,content:e.content},null,8,["file","content"])])):c("v-if",!0),e.type=="rate_limited"?(l(),d("div",j6,[n("div",G6,[t[74]||(t[74]=me('<div class="paper-ratelimit-head"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-hourglass"></use></svg><div><div class="paper-error-eyebrow">Temporarily paused</div><div class="paper-error-title">GitHub API rate limit reached</div></div></div>',1)),n("p",W6,[t[72]||(t[72]=h("This repository will be available in ",-1)),n("strong",null,u(e.rateLimitCountdown),1),t[73]||(t[73]=h(". The page will reload automatically.",-1))])])])):c("v-if",!0),e.type=="error"?(l(),d("div",K6,[n("section",Y6,[n("h1",J6,u(e.fmt.translate(e.isSourceAccessError()?"VIEWER_ERRORS.access_title":"VIEWER_ERRORS.title")),1),n("p",null,u(e.fmt.translate("ERRORS."+e.content)),1),e.isSourceAccessError()?(l(),d(W,{key:0},[n("p",null,u(e.fmt.translate("VIEWER_ERRORS.reader_help")),1),n("p",null,u(e.fmt.translate("VIEWER_ERRORS.owner_help")),1)],64)):c("v-if",!0),n("div",Q6,[e.isSourceAccessError()?c("v-if",!0):(l(),d("a",X6,"Back to home")),e.isSourceAccessError()?c("v-if",!0):(l(),d("a",Z6,"Read the FAQ")),n("button",{type:"button",class:"btn btn-primary",onClick:t[31]||(t[31]=a=>e.retryContent())},u(e.fmt.translate("VIEWER_ERRORS.retry")),1),e.isSourceAccessError()?(l(),d("a",x6,u(e.fmt.translate("VIEWER_ERRORS.dashboard")),1)):c("v-if",!0)])])])):c("v-if",!0),e.type=="loading"&&!e.error?(l(),d("section",eq,[n("div",tq,[n("strong",null,u(e.fmt.translate(e.fileReceivedBytes?"VIEWER_LOADING.receiving":"VIEWER_LOADING.loading")),1),n("span",nq,u(e.filePath),1),e.fileLoadingSlow?(l(),d("p",oq,u(e.fmt.translate("VIEWER_LOADING.slow")),1)):c("v-if",!0)]),n("div",sq,[(l(),d(W,null,oe(10,a=>n("span",{key:a})),64))])])):c("v-if",!0),e.type== Line truncated
MIT CSAIL
jane.smith@example.org`},yL={class:"settings-syntax"},bL={class:"invalid-feedback"},wL={class:"settings-row"},kL={class:"settings-checks"},CL={class:"settings-check"},EL={class:"form-check-input",type:"checkbox",id:"link",name:"link"},SL={class:"settings-check"},NL={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},RL={class:"settings-check"},DL={class:"form-check-input",type:"checkbox",id:"image",name:"image"},TL={class:"settings-check"},_L={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},AL={class:"settings-check"},OL={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},PL={class:"settings-check"},IL={class:"form-check-input",type:"checkbox",id:"page",name:"page"},ML={class:"settings-row"},VL={class:"settings-check"},qL={class:"form-check-input",type:"checkbox",id:"update",name:"update"},LL={class:"settings-row"},$L={class:"form-control",id:"expiration",name:"expiration"},UL={class:"settings-help"},FL={class:"settings-save"},BL={class:"settings-save-status draft-status",role:"status"},zL={key:0},HL={key:1},jL={key:2},GL=["disabled"],WL={key:1,class:"settings-save-error",role:"alert"},KL=["aria-busy"],YL={key:0,role:"status"},JL={key:1,class:"settings-notice",role:"alert"},QL=["disabled"],XL={key:2,class:"settings-notice",role:"status"},ZL={key:3,class:"settings-notice",role:"status"},xL=["disabled"],e$={class:"settings-row"},t$={class:"settings-inline"},n$={key:0,class:"settings-help"},o$={key:0,class:"settings-help"},s$={id:"settings-quota"},i$={key:1,role:"status"},r$={key:1,class:"settings-notice"},a$={key:2,class:"settings-notice"},l$={key:3,class:"settings-notice"},d$={key:4,class:"settings-help"},u$={key:5,class:"settings-plan billing-plan"},c$={class:"settings-comparison"},p$={class:"settings-cycles"},f$=["checked","onChange"],m$={class:"settings-help"},h$={class:"settings-actions"},v$=["disabled"],g$={key:6,class:"settings-help"},y$={class:"settings-row"},b$={key:0,class:"settings-inline"},w$=["disabled"],k$={key:1,class:"settings-help"},C$=["disabled"],E$={key:4,class:"settings-row"},S$={class:"settings-inline"},N$=["disabled"],R$={key:0,class:"settings-pass"},D$={class:"settings-help"},T$=["disabled"],_$={key:5,class:"settings-row"},A$={class:"settings-help"},O$={id:"settings-account",class:"settings-account-panel"},P$={class:"paper-account-card"},I$=["src"],M$={class:"paper-account-identity"},V$={class:"paper-account-name"},q$=["disabled"],L$={key:0,role:"status"},$$={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},U$=["disabled"],F$={key:3,role:"status"},B$={class:"paper-danger-zone"},z$={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},H$=["textContent"],j$=["disabled"],G$={key:1,class:"settings-delete-confirm"},W$={for:"delete-username"},K$={class:"settings-actions"},Y$=["disabled"],J$=["disabled"];function td(e,t){let o=We("quota-usage"),i=we("field"),s=we("form");return l(),d("div",cL,[n("header",pL,[t[20]||(t[20]=n("h1",null,"Settings",-1)),n("div",fL,[n("span",null,"@"+u(e.user?.username),1)])]),n("nav",mL,[(l(),d(W,null,oe([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},u(r.label),9,hL)),64))]),T(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),T((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[1]||(t[1]=ae(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",vL,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[T(n("textarea",gL,null,512),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",yL,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=h("Matches become ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=h(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=h(" for a custom replacement. Regex is supported.",-1))])]),T(n("div",bL,"Terms are in an invalid format.",512),[[Y,e.defaultsForm?.terms?.errors?.format]])])]),n("section",wL,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",kL,[n("label",CL,[T(n("input",EL,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=h("Keep links",-1))]),n("label",SL,[T(n("input",NL,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=h("Render notebooks",-1))]),n("label",RL,[T(n("input",DL,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image Line truncated
`);for(let b=0;b<y.length;b++){let m=y[b];if(m.startsWith("diff --git")){g(),f();continue}if(m.startsWith("--- ")){r&&r.lines.length&&g(),f().oldPath=m.replace(/^--- (a\/)?/,"").trim();continue}if(m.startsWith("+++ ")){f().newPath=m.replace(/^\+\+\+ (b\/)?/,"").trim();continue}if(!(m.startsWith("index ")||m.startsWith("similarity index")||m.startsWith("rename ")||m.startsWith("new file mode")||m.startsWith("deleted file mode")||m.startsWith("Binary files"))){if(m.startsWith("@@")){let E=m.match(/@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);E&&(a=parseInt(E[1],10),p=parseInt(E[2],10)),f().lines.push({kind:"hunk",oldNo:"",newNo:"",text:m});continue}r&&(m.startsWith("+")?(r.lines.push({kind:"add",oldNo:"",newNo:p,text:m.slice(1)}),p++):m.startsWith("-")?(r.lines.push({kind:"remove",oldNo:a,newNo:"",text:m.slice(1)}),a++):(r.lines.push({kind:"ctx",oldNo:a,newNo:p,text:m.startsWith(" ")?m.slice(1):m}),a++,p++))}}return o(s,r),s.join("")}})({trustAsHtml:e=>e});function vF(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function gF(e){return String(e??"").toUpperCase()}function yF(e,t,o=0){return(e||[]).slice(o,o+t)}function bF(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function wF(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let p=r.split(".").reduce((g,y)=>g?.[y],i),f=r.split(".").reduce((g,y)=>g?.[y],s);if(typeof p=="string"&&(p=p.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),p!==f)return(p==null?-1:f==null?1:p<f?-1:1)*a}return 0})}function kF(e,t){if(!e)return"";let o=new Date(e);if(isNaN(o))return String(e);if(!t||t==="mediumDate")return o.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"});let i={yyyy:o.getFullYear(),MMM:o.toLocaleDateString(void 0,{month:"short"}),MM:String(o.getMonth()+1).padStart(2,"0"),dd:String(o.getDate()).padStart(2,"0"),d:o.getDate(),HH:String(o.getHours()).padStart(2,"0"),mm:String(o.getMinutes()).padStart(2,"0"),ss:String(o.getSeconds()).padStart(2,"0")};return t.replace(/yyyy|MMM|MM|dd|HH|mm|ss|d/g,s=>i[s])}function CF(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var dd={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Ft(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let p=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&p.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",p.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let f="";e.baseUrl&&(f='<base href="'+e.baseUrl.replace(/&/g,"&amp;").replace(/"/g,"&quot;")+'">'),a.srcdoc=f+r}Fe(()=>e.content,s,{immediate:!0}),Fe(()=>e.baseUrl,s,{immediate:!0}),Fe(()=>e.allowScripts,s,{immediate:!0})}),()=>Se("html-doc",{ref:t})}};var ud={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Ft(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let p=null,f=[],g=!1,y=null,b=1,m=1,E=0,P=0,k=612/792,v=0,S=null,_=new Map,M=0;function L(C){let N=_.get(C);N&&(N.cancelled=!0,N.task?.cancel?.(),_.delete(C));let V=C.querySelector("canvas");V&&(V.width=0,V.height=0),C.innerHTML="",delete C.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let G=document.createElement("div");G.className="pdf-pages",G.tabIndex=0,G.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(G);function se(C,N,V){let j=document.createElement("button");return j.type="button",j.className="pdf-toolbar-btn",j.title=N,j.setAttribute("aria-label",N),j.innerHTML='<i class="fas '+C+'"></i>',j.addEventListener("click",V),j}let ee=se("fa-chevron-up","Previous page",function(){ze(m-1)}),R=se("fa-chevron-down","Next page",function(){ze(m+1)}),K=document.createElement("input");K.type="text",K.className="pdf-toolbar-page",K.setAttribute("aria-label","Page number"),K.title="Page number \u2014 type a page and press Enter",K.addEventListener("keydown",function(C){C.key==="Enter"&&(ze(parseInt(K.value,10)),K.blur())}),K.addEventListener("blur",function(){K.value=String(m)});let te=document.createElement("span");te.className="pdf-toolbar-count";let ve=se("fa-search-minus","Zoom out",function(){re(s[Math.max(0,ye()-1)])}),x=se("fa-search-plus","Zoom in",function(){re(s[Math.min(s.length-1,ye()+1)])}),ue=document.createElement("button");ue.type="button",ue.className="pdf-toolbar-btn pdf-toolbar-zoom",ue.title="Reset zoom to fit the width",ue.setAttribute("aria-label","Reset zoom to fit the width"),ue.addEventListener("click",function(){re(1)}),q.appendChild(ee),q.appendChild(R);let he=document.createElement("span");he.className="pdf-toolbar-group",he.appendC Line truncated
jane.smith@example.org`},bL={class:"settings-syntax"},wL={class:"invalid-feedback"},kL={class:"settings-row"},CL={class:"settings-checks"},EL={class:"settings-check"},SL={class:"form-check-input",type:"checkbox",id:"link",name:"link"},NL={class:"settings-check"},RL={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},DL={class:"settings-check"},TL={class:"form-check-input",type:"checkbox",id:"image",name:"image"},_L={class:"settings-check"},AL={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},OL={class:"settings-check"},PL={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},IL={class:"settings-check"},ML={class:"form-check-input",type:"checkbox",id:"page",name:"page"},VL={class:"settings-row"},qL={class:"settings-check"},LL={class:"form-check-input",type:"checkbox",id:"update",name:"update"},$L={class:"settings-row"},UL={class:"form-control",id:"expiration",name:"expiration"},FL={class:"settings-help"},BL={class:"settings-save"},zL={class:"settings-save-status draft-status",role:"status"},HL={key:0},jL={key:1},GL={key:2},WL=["disabled"],KL={key:1,class:"settings-save-error",role:"alert"},YL=["aria-busy"],JL={key:0,role:"status"},QL={key:1,class:"settings-notice",role:"alert"},XL=["disabled"],ZL={key:2,class:"settings-notice",role:"status"},xL={key:3,class:"settings-notice",role:"status"},e$=["disabled"],t$={class:"settings-row"},n$={class:"settings-inline"},o$={key:0,class:"settings-help"},s$={key:0,class:"settings-help"},i$={id:"settings-quota"},r$={key:1,role:"status"},a$={key:1,class:"settings-notice"},l$={key:2,class:"settings-notice"},d$={key:3,class:"settings-notice"},u$={key:4,class:"settings-help"},c$={key:5,class:"settings-plan billing-plan"},p$={class:"settings-comparison"},f$={class:"settings-cycles"},m$=["checked","onChange"],h$={class:"settings-help"},v$={class:"settings-actions"},g$=["disabled"],y$={key:6,class:"settings-help"},b$={class:"settings-row"},w$={key:0,class:"settings-inline"},k$=["disabled"],C$={key:1,class:"settings-help"},E$=["disabled"],S$={key:4,class:"settings-row"},N$={class:"settings-inline"},R$=["disabled"],D$={key:0,class:"settings-pass"},T$={class:"settings-help"},_$=["disabled"],A$={key:5,class:"settings-row"},O$={class:"settings-help"},P$={id:"settings-account",class:"settings-account-panel"},I$={class:"paper-account-card"},M$=["src"],V$={class:"paper-account-identity"},q$={class:"paper-account-name"},L$=["disabled"],$$={key:0,role:"status"},U$={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},F$=["disabled"],B$={key:3,role:"status"},z$={class:"paper-danger-zone"},H$={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},j$=["textContent"],G$=["disabled"],W$={key:1,class:"settings-delete-confirm"},K$={for:"delete-username"},Y$={class:"settings-actions"},J$=["disabled"],Q$=["disabled"];function td(e,t){let o=We("quota-usage"),i=we("field"),s=we("form");return l(),d("div",pL,[n("header",fL,[t[20]||(t[20]=n("h1",null,"Settings",-1)),n("div",mL,[n("span",null,"@"+u(e.user?.username),1)])]),n("nav",hL,[(l(),d(W,null,oe([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},u(r.label),9,vL)),64))]),T(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),T((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[1]||(t[1]=ae(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",gL,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[T(n("textarea",yL,null,512),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",bL,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=h("Matches become ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=h(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=h(" for a custom replacement. Regex is supported.",-1))])]),T(n("div",wL,"Terms are in an invalid format.",512),[[Y,e.defaultsForm?.terms?.errors?.format]])])]),n("section",kL,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",CL,[n("label",EL,[T(n("input",SL,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=h("Keep links",-1))]),n("label",NL,[T(n("input",RL,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=h("Render notebooks",-1))]),n("label",DL,[T(n("input",TL,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image Line truncated
`);for(let b=0;b<y.length;b++){let m=y[b];if(m.startsWith("diff --git")){g(),f();continue}if(m.startsWith("--- ")){r&&r.lines.length&&g(),f().oldPath=m.replace(/^--- (a\/)?/,"").trim();continue}if(m.startsWith("+++ ")){f().newPath=m.replace(/^\+\+\+ (b\/)?/,"").trim();continue}if(!(m.startsWith("index ")||m.startsWith("similarity index")||m.startsWith("rename ")||m.startsWith("new file mode")||m.startsWith("deleted file mode")||m.startsWith("Binary files"))){if(m.startsWith("@@")){let E=m.match(/@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);E&&(a=parseInt(E[1],10),p=parseInt(E[2],10)),f().lines.push({kind:"hunk",oldNo:"",newNo:"",text:m});continue}r&&(m.startsWith("+")?(r.lines.push({kind:"add",oldNo:"",newNo:p,text:m.slice(1)}),p++):m.startsWith("-")?(r.lines.push({kind:"remove",oldNo:a,newNo:"",text:m.slice(1)}),a++):(r.lines.push({kind:"ctx",oldNo:a,newNo:p,text:m.startsWith(" ")?m.slice(1):m}),a++,p++))}}return o(s,r),s.join("")}})({trustAsHtml:e=>e});function gF(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function yF(e){return String(e??"").toUpperCase()}function bF(e,t,o=0){return(e||[]).slice(o,o+t)}function wF(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function kF(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let p=r.split(".").reduce((g,y)=>g?.[y],i),f=r.split(".").reduce((g,y)=>g?.[y],s);if(typeof p=="string"&&(p=p.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),p!==f)return(p==null?-1:f==null?1:p<f?-1:1)*a}return 0})}function CF(e,t){if(!e)return"";let o=new Date(e);if(isNaN(o))return String(e);if(!t||t==="mediumDate")return o.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"});let i={yyyy:o.getFullYear(),MMM:o.toLocaleDateString(void 0,{month:"short"}),MM:String(o.getMonth()+1).padStart(2,"0"),dd:String(o.getDate()).padStart(2,"0"),d:o.getDate(),HH:String(o.getHours()).padStart(2,"0"),mm:String(o.getMinutes()).padStart(2,"0"),ss:String(o.getSeconds()).padStart(2,"0")};return t.replace(/yyyy|MMM|MM|dd|HH|mm|ss|d/g,s=>i[s])}function EF(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var dd={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Ft(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let p=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&p.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",p.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let f="";e.baseUrl&&(f='<base href="'+e.baseUrl.replace(/&/g,"&amp;").replace(/"/g,"&quot;")+'">'),a.srcdoc=f+r}Fe(()=>e.content,s,{immediate:!0}),Fe(()=>e.baseUrl,s,{immediate:!0}),Fe(()=>e.allowScripts,s,{immediate:!0})}),()=>Se("html-doc",{ref:t})}};var ud={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Ft(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let p=null,f=[],g=!1,y=null,b=1,m=1,E=0,P=0,k=612/792,v=0,S=null,_=new Map,M=0;function L(C){let N=_.get(C);N&&(N.cancelled=!0,N.task?.cancel?.(),_.delete(C));let V=C.querySelector("canvas");V&&(V.width=0,V.height=0),C.innerHTML="",delete C.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let G=document.createElement("div");G.className="pdf-pages",G.tabIndex=0,G.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(G);function se(C,N,V){let j=document.createElement("button");return j.type="button",j.className="pdf-toolbar-btn",j.title=N,j.setAttribute("aria-label",N),j.innerHTML='<i class="fas '+C+'"></i>',j.addEventListener("click",V),j}let ee=se("fa-chevron-up","Previous page",function(){ze(m-1)}),R=se("fa-chevron-down","Next page",function(){ze(m+1)}),K=document.createElement("input");K.type="text",K.className="pdf-toolbar-page",K.setAttribute("aria-label","Page number"),K.title="Page number \u2014 type a page and press Enter",K.addEventListener("keydown",function(C){C.key==="Enter"&&(ze(parseInt(K.value,10)),K.blur())}),K.addEventListener("blur",function(){K.value=String(m)});let te=document.createElement("span");te.className="pdf-toolbar-count";let ve=se("fa-search-minus","Zoom out",function(){re(s[Math.max(0,ye()-1)])}),x=se("fa-search-plus","Zoom in",function(){re(s[Math.min(s.length-1,ye()+1)])}),ue=document.createElement("button");ue.type="button",ue.className="pdf-toolbar-btn pdf-toolbar-zoom",ue.title="Reset zoom to fit the width",ue.setAttribute("aria-label","Reset zoom to fit the width"),ue.addEventListener("click",function(){re(1)}),q.appendChild(ee),q.appendChild(R);let he=document.createElement("span");he.className="pdf-toolbar-group",he.appendC Line truncated
/*! Bundled license information:
@vue/shared/dist/shared.esm-bundler.js: