forked from sheetjs/docs.sheetjs.com
5161 lines
1.4 MiB
5161 lines
1.4 MiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>SheetJS Community Edition</title>
|
|
<link rel="icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAKCgr/FRUX/xYWGP8YGBr/GRkb/xsbHP8dHR7/Hh4f/x4eIP8fHyD/ICAh/yMjJP8kJCX/JiYo/ygoKv8pKSr/LCwu/y0tLv80NDT/QUFC/0ZGR/9MTE7/UFBR/1JSUv9bW1v/XFxc/2BgYP9hYWP/aGhp/2xsbP9ycnL/d3d3/3l5e/98fHz/f3+A/2dn/P9z3a//cNX8/4CAgP+Xl5f/nZ2e/56en/+fn5//n5+h/6amp/+rq6v/rKys/7CvsP+zs7T/uLi5/7u7u/+8vLz/wMDA/8fHx//Kysr/zc3N/9HR0f/d3d3/3t7e/+Xl5f/q6ur/6+vr/+3t7f/z8/P/9fX1//b29v/39/f/+Pj4//n5+f/6+vr/+/v7//z8/P/9/f3//v7+//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NCYmJiYmJiYmJiYmJiYmNCZKSkpKSkpKSkpKSkpKSiYmSkpKRisdRkMbMklKSkomJkpKSSEiNUhEEQwpSUpKJiZKSi8LHhhAPAwBDDZKSiYmSkoWACA7SEc6HAEaSkomJkpKBxI/SkpKSj4ICkpKJiZKSgUTR0pKSkpGDwZKSiYmSkoTED1KSkpKOQQVSkomJkpKKgowMy4sNycIMUpKJiZKSkEZDgkDAgsNH0VKSiYmSkpKQigUBgkXLUhKSkomJkpKSkpKSkpKSkpKSkpKJiYmJiYmJiYmJiYmJiYmJiYmIyUkNDQ0NDQ0NDQ0NDQmOCYmJiYmJiYmJiYmJiYmOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" />
|
|
<link rel="stylesheet" href="/__/grip/static/octicons/octicons.css" />
|
|
<style>
|
|
[data-color-mode=light][data-light-theme=light_high_contrast],[data-color-mode=dark][data-dark-theme=light_high_contrast]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #ffffff;--color-marketing-icon-primary: #1168e3;--color-marketing-icon-secondary: #368cf9;--color-diff-blob-addition-num-text: #0E1116;--color-diff-blob-addition-fg: #ffffff;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #055d20;--color-diff-blob-deletion-num-text: #0E1116;--color-diff-blob-deletion-fg: #ffffff;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #fff0ee;--color-diff-blob-deletion-word-bg: #a0111f;--color-diff-blob-hunk-num-bg: #9cd7ff;--color-diff-blob-expander-icon: #0E1116;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(1,4,9,0.8);--color-diffstat-addition-border: rgba(1,4,9,0.8);--color-diffstat-addition-bg: #117f32;--color-search-keyword-hl: #fcf7be;--color-prettylights-syntax-comment: #66707B;--color-prettylights-syntax-constant: #023b95;--color-prettylights-syntax-entity: #622cbc;--color-prettylights-syntax-storage-modifier-import: #0E1116;--color-prettylights-syntax-entity-tag: #024c1a;--color-prettylights-syntax-keyword: #a0111f;--color-prettylights-syntax-string: #032563;--color-prettylights-syntax-variable: #702c00;--color-prettylights-syntax-brackethighlighter-unmatched: #6e011a;--color-prettylights-syntax-invalid-illegal-text: #FFFFFF;--color-prettylights-syntax-invalid-illegal-bg: #6e011a;--color-prettylights-syntax-carriage-return-text: #FFFFFF;--color-prettylights-syntax-carriage-return-bg: #a0111f;--color-prettylights-syntax-string-regexp: #024c1a;--color-prettylights-syntax-markup-list: #2e1800;--color-prettylights-syntax-markup-heading: #023b95;--color-prettylights-syntax-markup-italic: #0E1116;--color-prettylights-syntax-markup-bold: #0E1116;--color-prettylights-syntax-markup-deleted-text: #6e011a;--color-prettylights-syntax-markup-deleted-bg: #fff0ee;--color-prettylights-syntax-markup-inserted-text: #024c1a;--color-prettylights-syntax-markup-inserted-bg: #d2fedb;--color-prettylights-syntax-markup-changed-text: #702c00;--color-prettylights-syntax-markup-changed-bg: #ffc67b;--color-prettylights-syntax-markup-ignored-text: #E7ECF0;--color-prettylights-syntax-markup-ignored-bg: #023b95;--color-prettylights-syntax-meta-diff-range: #622cbc;--color-prettylights-syntax-brackethighlighter-angle: #4B535D;--color-prettylights-syntax-sublimelinter-gutter-mark: #88929D;--color-prettylights-syntax-constant-other-reference-link: #032563;--color-codemirror-text: #0E1116;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #66707B;--color-codemirror-linenumber-text: #0E1116;--color-codemirror-cursor: #0E1116;--color-codemirror-selection-bg: #368cf9;--color-codemirror-activeline-bg: #E7ECF0;--color-codemirror-matchingbracket-text: #0E1116;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #0E1116;--color-codemirror-syntax-constant: #023b95;--color-codemirror-syntax-entity: #622cbc;--color-codemirror-syntax-keyword: #a0111f;--color-codemirror-syntax-storage: #a0111f;--color-codemirror-syntax-string: #032563;--color-codemirror-syntax-support: #023b95;--color-codemirror-syntax-variable: #702c00;--color-checks-bg: #0E1116;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #FFFFFF;--color-checks-text-secondary: #88929D;--color-checks-text-link: #368cf9;--color-checks-btn-icon: #ACB6C0;--color-checks-btn-hover-icon: #FFFFFF;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #E7ECF0;--color-checks-input-placeholder-text: #88929D;--color-checks-input-focus-text: #88929D;--color-checks-input-bg: #20252C;--color-checks-input-shadow: none;--color-checks-donut-error: #d5232c;--color-checks-donut-pending: #956400;--color-checks-donut-success: #117f32;--color-checks-donut-neutral: #ACB6C0;--color-checks-dropdown-text: #ACB6C0;--color-checks-dropdown-bg: #20252C;--color-checks-dropdown-border: #343B43;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #FFFFFF;--color-checks-dropdown-hover-bg: #343B43;--color-checks-dropdown-btn-hover-text: #FFFFFF;--color-checks-dropdown-btn-hover-bg: #20252C;--color-checks-scrollbar-thumb-bg: #4B535D;--color-checks-header-label-text: #CED5DC;--color-checks-header-label-open-text: #FFFFFF;--color-checks-header-border: #20252C;--color-checks-header-icon: #88929D;--color-checks-line-text: #CED5DC;--color-checks-line-num-text: rgba(136,146,157,0.75);--color-checks-line-timestamp-text: #88929D;--color-checks-line-hover-bg: #20252C;--color-checks-line-selected-bg: rgba(17,104,227,0.15);--color-checks-line-selected-num-text: #368cf9;--color-checks-line-dt-fm-text: #0E1116;--color-checks-line-dt-fm-bg: #744500;--color-checks-gate-bg: rgba(96,55,0,0.15);--color-checks-gate-text: #CED5DC;--color-checks-gate-waiting-text: #ACB6C0;--color-checks-step-header-open-bg: #20252C;--color-checks-step-error-text: #ee5a5d;--color-checks-step-warning-text: #b58407;--color-checks-logline-text: #88929D;--color-checks-logline-num-text: rgba(136,146,157,0.75);--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #CED5DC;--color-checks-logline-error-num-text: #ee5a5d;--color-checks-logline-error-bg: rgba(134,6,29,0.15);--color-checks-logline-warning-text: #CED5DC;--color-checks-logline-warning-num-text: #b58407;--color-checks-logline-warning-bg: rgba(96,55,0,0.15);--color-checks-logline-command-text: #368cf9;--color-checks-logline-section-text: #26a148;--color-checks-ansi-black: #0E1116;--color-checks-ansi-black-bright: #20252C;--color-checks-ansi-white: #CED5DC;--color-checks-ansi-white-bright: #CED5DC;--color-checks-ansi-gray: #88929D;--color-checks-ansi-red: #ee5a5d;--color-checks-ansi-red-bright: #ff8e8a;--color-checks-ansi-green: #26a148;--color-checks-ansi-green-bright: #43c663;--color-checks-ansi-yellow: #b58407;--color-checks-ansi-yellow-bright: #d5a824;--color-checks-ansi-blue: #368cf9;--color-checks-ansi-blue-bright: #67b3fd;--color-checks-ansi-magenta: #a371f7;--color-checks-ansi-magenta-bright: #c49bff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0E1116;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(1,4,9,0.8);--color-avatar-stack-fade: #ACB6C0;--color-avatar-stack-fade-more: #CED5DC;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: #0349b4;--color-counter-border: #20252C;--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(172,182,192,0.5);--color-select-menu-tap-focus-bg: #9cd7ff;--color-overlay-shadow: 0 1px 3px rgba(1,4,9,0.12), 0 8px 24px rgba(52,59,67,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #0E1116;--color-header-divider: #ACB6C0;--color-header-logo: #ffffff;--color-header-search-bg: #0E1116;--color-header-search-border: #4B535D;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(172,182,192,0.2);--color-timeline-badge-bg: #E7ECF0;--color-ansi-black: #0E1116;--color-ansi-black-bright: #4B535D;--color-ansi-white: #66707B;--color-ansi-white-bright: #88929D;--color-ansi-gray: #66707B;--color-ansi-red: #a0111f;--color-ansi-red-bright: #86061d;--color-ansi-green: #024c1a;--color-ansi-green-bright: #055d20;--color-ansi-yellow: #3f2200;--color-ansi-yellow-bright: #4e2c00;--color-ansi-blue: #0349b4;--color-ansi-blue-bright: #1168e3;--color-ansi-magenta: #622cbc;--color-ansi-magenta-bright: #844ae7;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #0E1116;--color-btn-bg: #E7ECF0;--color-btn-border: rgba(1,4,9,0.8);--color-btn-shadow: 0 1px 0 rgba(1,4,9,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #CED5DC;--color-btn-hover-border: rgba(1,4,9,0.8);--color-btn-active-bg: #ACB6C0;--color-btn-active-border: rgba(1,4,9,0.8);--color-btn-selected-bg: #ACB6C0;--color-btn-focus-bg: #CED5DC;--color-btn-focus-border: rgba(1,4,9,0.8);--color-btn-focus-shadow: 0 0 0 3px rgba(3,73,180,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(3,73,180,0.3);--color-btn-counter-bg: rgba(1,4,9,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #055d20;--color-btn-primary-border: #013d14;--color-btn-primary-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #024c1a;--color-btn-primary-hover-border: #013d14;--color-btn-primary-selected-bg: hsla(139,95%,13%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,35,11,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(1,4,9,0.8);--color-btn-primary-focus-bg: #013d14;--color-btn-primary-focus-border: #013d14;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(1,61,20,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #023b95;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0349b4;--color-btn-outline-hover-border: #022f7a;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #022f7a;--color-btn-outline-selected-border: #022f7a;--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(2,26,74,0.2);--color-btn-outline-disabled-text: rgba(3,73,180,0.5);--color-btn-outline-disabled-bg: #E7ECF0;--color-btn-outline-disabled-counter-bg: rgba(3,73,180,0.05);--color-btn-outline-focus-border: #022f7a;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(2,59,149,0.4);--color-btn-outline-counter-bg: rgba(3,73,180,0.1);--color-btn-danger-text: #86061d;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a0111f;--color-btn-danger-hover-border: #6e011a;--color-btn-danger-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #6e011a;--color-btn-danger-selected-border: #6e011a;--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(67,0,17,0.2);--color-btn-danger-disabled-text: rgba(160,17,31,0.5);--color-btn-danger-disabled-bg: #E7ECF0;--color-btn-danger-disabled-counter-bg: rgba(160,17,31,0.05);--color-btn-danger-focus-border: #6e011a;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(134,6,29,0.4);--color-btn-danger-counter-bg: rgba(160,17,31,0.1);--color-btn-danger-icon: #86061d;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #66707B;--color-underlinenav-border-hover: rgba(172,182,192,0.2);--color-action-list-item-inline-divider: #88929D;--color-action-list-item-default-hover-bg: #E7ECF0;--color-action-list-item-default-hover-border: #88929D;--color-action-list-item-default-active-bg: #CED5DC;--color-action-list-item-default-active-border: #20252C;--color-action-list-item-default-selected-bg: #CED5DC;--color-action-list-item-danger-hover-bg: #a0111f;--color-action-list-item-danger-active-bg: #6e011a;--color-action-list-item-danger-hover-text: #ffffff;--color-fg-default: #0E1116;--color-fg-muted: #0E1116;--color-fg-subtle: #66707B;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #ffffff;--color-canvas-subtle: #E7ECF0;--color-border-default: #20252C;--color-border-muted: #88929D;--color-border-subtle: rgba(1,4,9,0.8);--color-shadow-small: 0 1px 0 rgba(1,4,9,0.04);--color-shadow-medium: 0 3px 6px rgba(136,146,157,0.15);--color-shadow-large: 0 8px 24px rgba(136,146,157,0.2);--color-shadow-extra-large: 0 12px 28px rgba(136,146,157,0.3);--color-neutral-emphasis-plus: #0E1116;--color-neutral-emphasis: #66707B;--color-neutral-muted: rgba(172,182,192,0.2);--color-neutral-subtle: #E7ECF0;--color-accent-fg: #0349b4;--color-accent-emphasis: #0349b4;--color-accent-muted: #368cf9;--color-accent-subtle: #dff7ff;--color-success-fg: #055d20;--color-success-emphasis: #055d20;--color-success-muted: #26a148;--color-success-subtle: #d2fedb;--color-attention-fg: #744500;--color-attention-emphasis: #744500;--color-attention-muted: #b58407;--color-attention-subtle: #fcf7be;--color-severe-fg: #873800;--color-severe-emphasis: #873800;--color-severe-muted: #dc6d1a;--color-severe-subtle: #fff2d5;--color-danger-fg: #a0111f;--color-danger-emphasis: #a0111f;--color-danger-muted: #ee5a5d;--color-danger-subtle: #fff0ee;--color-done-fg: #622cbc;--color-done-emphasis: #622cbc;--color-done-muted: #a371f7;--color-done-subtle: #faf0fe;--color-sponsors-fg: #971368;--color-sponsors-emphasis: #971368;--color-sponsors-muted: #ed4baf;--color-sponsors-subtle: #feeff7;--color-primer-fg-disabled: #88929D;--color-primer-canvas-backdrop: rgba(1,4,9,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #ef5b48;--color-primer-border-contrast: rgba(1,4,9,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(206,213,220,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(3,73,180,0.3);--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #FFFFFF;--color-scale-gray-1: #E7ECF0;--color-scale-gray-2: #CED5DC;--color-scale-gray-3: #ACB6C0;--color-scale-gray-4: #88929D;--color-scale-gray-5: #66707B;--color-scale-gray-6: #4B535D;--color-scale-gray-7: #343B43;--color-scale-gray-8: #20252C;--color-scale-gray-9: #0E1116;--color-scale-blue-0: #dff7ff;--color-scale-blue-1: #9cd7ff;--color-scale-blue-2: #67b3fd;--color-scale-blue-3: #368cf9;--color-scale-blue-4: #1168e3;--color-scale-blue-5: #0349b4;--color-scale-blue-6: #023b95;--color-scale-blue-7: #022f7a;--color-scale-blue-8: #032563;--color-scale-blue-9: #021a4a;--color-scale-green-0: #d2fedb;--color-scale-green-1: #82e596;--color-scale-green-2: #43c663;--color-scale-green-3: #26a148;--color-scale-green-4: #117f32;--color-scale-green-5: #055d20;--color-scale-green-6: #024c1a;--color-scale-green-7: #013d14;--color-scale-green-8: #003110;--color-scale-green-9: #00230b;--color-scale-yellow-0: #fcf7be;--color-scale-yellow-1: #f0ce53;--color-scale-yellow-2: #d5a824;--color-scale-yellow-3: #b58407;--color-scale-yellow-4: #956400;--color-scale-yellow-5: #744500;--color-scale-yellow-6: #603700;--color-scale-yellow-7: #4e2c00;--color-scale-yellow-8: #3f2200;--color-scale-yellow-9: #2e1800;--color-scale-orange-0: #fff2d5;--color-scale-orange-1: #ffc67b;--color-scale-orange-2: #f99636;--color-scale-orange-3: #dc6d1a;--color-scale-orange-4: #b45105;--color-scale-orange-5: #873800;--color-scale-orange-6: #702c00;--color-scale-orange-7: #5b2300;--color-scale-orange-8: #491b00;--color-scale-orange-9: #361200;--color-scale-red-0: #fff0ee;--color-scale-red-1: #ffc1bc;--color-scale-red-2: #ff8e8a;--color-scale-red-3: #ee5a5d;--color-scale-red-4: #d5232c;--color-scale-red-5: #a0111f;--color-scale-red-6: #86061d;--color-scale-red-7: #6e011a;--color-scale-red-8: #5a0016;--color-scale-red-9: #430011;--color-scale-purple-0: #faf0fe;--color-scale-purple-1: #e0c5ff;--color-scale-purple-2: #c49bff;--color-scale-purple-3: #a371f7;--color-scale-purple-4: #844ae7;--color-scale-purple-5: #622cbc;--color-scale-purple-6: #512598;--color-scale-purple-7: #411d7b;--color-scale-purple-8: #341763;--color-scale-purple-9: #260f49;--color-scale-pink-0: #feeff7;--color-scale-pink-1: #ffbde0;--color-scale-pink-2: #fc87ca;--color-scale-pink-3: #ed4baf;--color-scale-pink-4: #c9248e;--color-scale-pink-5: #971368;--color-scale-pink-6: #7d0c57;--color-scale-pink-7: #660847;--color-scale-pink-8: #53043a;--color-scale-pink-9: #3e022b;--color-scale-coral-0: #fff0ed;--color-scale-coral-1: #ffc2b6;--color-scale-coral-2: #ff8f7e;--color-scale-coral-3: #ef5b48;--color-scale-coral-4: #cd3425;--color-scale-coral-5: #9f1710;--color-scale-coral-6: #870706;--color-scale-coral-7: #6f0107;--color-scale-coral-8: #5b0002;--color-scale-coral-9: #430200}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=light_high_contrast]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #ffffff;--color-marketing-icon-primary: #1168e3;--color-marketing-icon-secondary: #368cf9;--color-diff-blob-addition-num-text: #0E1116;--color-diff-blob-addition-fg: #ffffff;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #055d20;--color-diff-blob-deletion-num-text: #0E1116;--color-diff-blob-deletion-fg: #ffffff;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #fff0ee;--color-diff-blob-deletion-word-bg: #a0111f;--color-diff-blob-hunk-num-bg: #9cd7ff;--color-diff-blob-expander-icon: #0E1116;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(1,4,9,0.8);--color-diffstat-addition-border: rgba(1,4,9,0.8);--color-diffstat-addition-bg: #117f32;--color-search-keyword-hl: #fcf7be;--color-prettylights-syntax-comment: #66707B;--color-prettylights-syntax-constant: #023b95;--color-prettylights-syntax-entity: #622cbc;--color-prettylights-syntax-storage-modifier-import: #0E1116;--color-prettylights-syntax-entity-tag: #024c1a;--color-prettylights-syntax-keyword: #a0111f;--color-prettylights-syntax-string: #032563;--color-prettylights-syntax-variable: #702c00;--color-prettylights-syntax-brackethighlighter-unmatched: #6e011a;--color-prettylights-syntax-invalid-illegal-text: #FFFFFF;--color-prettylights-syntax-invalid-illegal-bg: #6e011a;--color-prettylights-syntax-carriage-return-text: #FFFFFF;--color-prettylights-syntax-carriage-return-bg: #a0111f;--color-prettylights-syntax-string-regexp: #024c1a;--color-prettylights-syntax-markup-list: #2e1800;--color-prettylights-syntax-markup-heading: #023b95;--color-prettylights-syntax-markup-italic: #0E1116;--color-prettylights-syntax-markup-bold: #0E1116;--color-prettylights-syntax-markup-deleted-text: #6e011a;--color-prettylights-syntax-markup-deleted-bg: #fff0ee;--color-prettylights-syntax-markup-inserted-text: #024c1a;--color-prettylights-syntax-markup-inserted-bg: #d2fedb;--color-prettylights-syntax-markup-changed-text: #702c00;--color-prettylights-syntax-markup-changed-bg: #ffc67b;--color-prettylights-syntax-markup-ignored-text: #E7ECF0;--color-prettylights-syntax-markup-ignored-bg: #023b95;--color-prettylights-syntax-meta-diff-range: #622cbc;--color-prettylights-syntax-brackethighlighter-angle: #4B535D;--color-prettylights-syntax-sublimelinter-gutter-mark: #88929D;--color-prettylights-syntax-constant-other-reference-link: #032563;--color-codemirror-text: #0E1116;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #66707B;--color-codemirror-linenumber-text: #0E1116;--color-codemirror-cursor: #0E1116;--color-codemirror-selection-bg: #368cf9;--color-codemirror-activeline-bg: #E7ECF0;--color-codemirror-matchingbracket-text: #0E1116;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #0E1116;--color-codemirror-syntax-constant: #023b95;--color-codemirror-syntax-entity: #622cbc;--color-codemirror-syntax-keyword: #a0111f;--color-codemirror-syntax-storage: #a0111f;--color-codemirror-syntax-string: #032563;--color-codemirror-syntax-support: #023b95;--color-codemirror-syntax-variable: #702c00;--color-checks-bg: #0E1116;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #FFFFFF;--color-checks-text-secondary: #88929D;--color-checks-text-link: #368cf9;--color-checks-btn-icon: #ACB6C0;--color-checks-btn-hover-icon: #FFFFFF;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #E7ECF0;--color-checks-input-placeholder-text: #88929D;--color-checks-input-focus-text: #88929D;--color-checks-input-bg: #20252C;--color-checks-input-shadow: none;--color-checks-donut-error: #d5232c;--color-checks-donut-pending: #956400;--color-checks-donut-success: #117f32;--color-checks-donut-neutral: #ACB6C0;--color-checks-dropdown-text: #ACB6C0;--color-checks-dropdown-bg: #20252C;--color-checks-dropdown-border: #343B43;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #FFFFFF;--color-checks-dropdown-hover-bg: #343B43;--color-checks-dropdown-btn-hover-text: #FFFFFF;--color-checks-dropdown-btn-hover-bg: #20252C;--color-checks-scrollbar-thumb-bg: #4B535D;--color-checks-header-label-text: #CED5DC;--color-checks-header-label-open-text: #FFFFFF;--color-checks-header-border: #20252C;--color-checks-header-icon: #88929D;--color-checks-line-text: #CED5DC;--color-checks-line-num-text: rgba(136,146,157,0.75);--color-checks-line-timestamp-text: #88929D;--color-checks-line-hover-bg: #20252C;--color-checks-line-selected-bg: rgba(17,104,227,0.15);--color-checks-line-selected-num-text: #368cf9;--color-checks-line-dt-fm-text: #0E1116;--color-checks-line-dt-fm-bg: #744500;--color-checks-gate-bg: rgba(96,55,0,0.15);--color-checks-gate-text: #CED5DC;--color-checks-gate-waiting-text: #ACB6C0;--color-checks-step-header-open-bg: #20252C;--color-checks-step-error-text: #ee5a5d;--color-checks-step-warning-text: #b58407;--color-checks-logline-text: #88929D;--color-checks-logline-num-text: rgba(136,146,157,0.75);--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #CED5DC;--color-checks-logline-error-num-text: #ee5a5d;--color-checks-logline-error-bg: rgba(134,6,29,0.15);--color-checks-logline-warning-text: #CED5DC;--color-checks-logline-warning-num-text: #b58407;--color-checks-logline-warning-bg: rgba(96,55,0,0.15);--color-checks-logline-command-text: #368cf9;--color-checks-logline-section-text: #26a148;--color-checks-ansi-black: #0E1116;--color-checks-ansi-black-bright: #20252C;--color-checks-ansi-white: #CED5DC;--color-checks-ansi-white-bright: #CED5DC;--color-checks-ansi-gray: #88929D;--color-checks-ansi-red: #ee5a5d;--color-checks-ansi-red-bright: #ff8e8a;--color-checks-ansi-green: #26a148;--color-checks-ansi-green-bright: #43c663;--color-checks-ansi-yellow: #b58407;--color-checks-ansi-yellow-bright: #d5a824;--color-checks-ansi-blue: #368cf9;--color-checks-ansi-blue-bright: #67b3fd;--color-checks-ansi-magenta: #a371f7;--color-checks-ansi-magenta-bright: #c49bff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0E1116;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(1,4,9,0.8);--color-avatar-stack-fade: #ACB6C0;--color-avatar-stack-fade-more: #CED5DC;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: #0349b4;--color-counter-border: #20252C;--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(172,182,192,0.5);--color-select-menu-tap-focus-bg: #9cd7ff;--color-overlay-shadow: 0 1px 3px rgba(1,4,9,0.12), 0 8px 24px rgba(52,59,67,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #0E1116;--color-header-divider: #ACB6C0;--color-header-logo: #ffffff;--color-header-search-bg: #0E1116;--color-header-search-border: #4B535D;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(172,182,192,0.2);--color-timeline-badge-bg: #E7ECF0;--color-ansi-black: #0E1116;--color-ansi-black-bright: #4B535D;--color-ansi-white: #66707B;--color-ansi-white-bright: #88929D;--color-ansi-gray: #66707B;--color-ansi-red: #a0111f;--color-ansi-red-bright: #86061d;--color-ansi-green: #024c1a;--color-ansi-green-bright: #055d20;--color-ansi-yellow: #3f2200;--color-ansi-yellow-bright: #4e2c00;--color-ansi-blue: #0349b4;--color-ansi-blue-bright: #1168e3;--color-ansi-magenta: #622cbc;--color-ansi-magenta-bright: #844ae7;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #0E1116;--color-btn-bg: #E7ECF0;--color-btn-border: rgba(1,4,9,0.8);--color-btn-shadow: 0 1px 0 rgba(1,4,9,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #CED5DC;--color-btn-hover-border: rgba(1,4,9,0.8);--color-btn-active-bg: #ACB6C0;--color-btn-active-border: rgba(1,4,9,0.8);--color-btn-selected-bg: #ACB6C0;--color-btn-focus-bg: #CED5DC;--color-btn-focus-border: rgba(1,4,9,0.8);--color-btn-focus-shadow: 0 0 0 3px rgba(3,73,180,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(3,73,180,0.3);--color-btn-counter-bg: rgba(1,4,9,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #055d20;--color-btn-primary-border: #013d14;--color-btn-primary-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #024c1a;--color-btn-primary-hover-border: #013d14;--color-btn-primary-selected-bg: hsla(139,95%,13%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,35,11,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(1,4,9,0.8);--color-btn-primary-focus-bg: #013d14;--color-btn-primary-focus-border: #013d14;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(1,61,20,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #023b95;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0349b4;--color-btn-outline-hover-border: #022f7a;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #022f7a;--color-btn-outline-selected-border: #022f7a;--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(2,26,74,0.2);--color-btn-outline-disabled-text: rgba(3,73,180,0.5);--color-btn-outline-disabled-bg: #E7ECF0;--color-btn-outline-disabled-counter-bg: rgba(3,73,180,0.05);--color-btn-outline-focus-border: #022f7a;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(2,59,149,0.4);--color-btn-outline-counter-bg: rgba(3,73,180,0.1);--color-btn-danger-text: #86061d;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a0111f;--color-btn-danger-hover-border: #6e011a;--color-btn-danger-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #6e011a;--color-btn-danger-selected-border: #6e011a;--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(67,0,17,0.2);--color-btn-danger-disabled-text: rgba(160,17,31,0.5);--color-btn-danger-disabled-bg: #E7ECF0;--color-btn-danger-disabled-counter-bg: rgba(160,17,31,0.05);--color-btn-danger-focus-border: #6e011a;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(134,6,29,0.4);--color-btn-danger-counter-bg: rgba(160,17,31,0.1);--color-btn-danger-icon: #86061d;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #66707B;--color-underlinenav-border-hover: rgba(172,182,192,0.2);--color-action-list-item-inline-divider: #88929D;--color-action-list-item-default-hover-bg: #E7ECF0;--color-action-list-item-default-hover-border: #88929D;--color-action-list-item-default-active-bg: #CED5DC;--color-action-list-item-default-active-border: #20252C;--color-action-list-item-default-selected-bg: #CED5DC;--color-action-list-item-danger-hover-bg: #a0111f;--color-action-list-item-danger-active-bg: #6e011a;--color-action-list-item-danger-hover-text: #ffffff;--color-fg-default: #0E1116;--color-fg-muted: #0E1116;--color-fg-subtle: #66707B;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #ffffff;--color-canvas-subtle: #E7ECF0;--color-border-default: #20252C;--color-border-muted: #88929D;--color-border-subtle: rgba(1,4,9,0.8);--color-shadow-small: 0 1px 0 rgba(1,4,9,0.04);--color-shadow-medium: 0 3px 6px rgba(136,146,157,0.15);--color-shadow-large: 0 8px 24px rgba(136,146,157,0.2);--color-shadow-extra-large: 0 12px 28px rgba(136,146,157,0.3);--color-neutral-emphasis-plus: #0E1116;--color-neutral-emphasis: #66707B;--color-neutral-muted: rgba(172,182,192,0.2);--color-neutral-subtle: #E7ECF0;--color-accent-fg: #0349b4;--color-accent-emphasis: #0349b4;--color-accent-muted: #368cf9;--color-accent-subtle: #dff7ff;--color-success-fg: #055d20;--color-success-emphasis: #055d20;--color-success-muted: #26a148;--color-success-subtle: #d2fedb;--color-attention-fg: #744500;--color-attention-emphasis: #744500;--color-attention-muted: #b58407;--color-attention-subtle: #fcf7be;--color-severe-fg: #873800;--color-severe-emphasis: #873800;--color-severe-muted: #dc6d1a;--color-severe-subtle: #fff2d5;--color-danger-fg: #a0111f;--color-danger-emphasis: #a0111f;--color-danger-muted: #ee5a5d;--color-danger-subtle: #fff0ee;--color-done-fg: #622cbc;--color-done-emphasis: #622cbc;--color-done-muted: #a371f7;--color-done-subtle: #faf0fe;--color-sponsors-fg: #971368;--color-sponsors-emphasis: #971368;--color-sponsors-muted: #ed4baf;--color-sponsors-subtle: #feeff7;--color-primer-fg-disabled: #88929D;--color-primer-canvas-backdrop: rgba(1,4,9,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #ef5b48;--color-primer-border-contrast: rgba(1,4,9,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(206,213,220,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(3,73,180,0.3);--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #FFFFFF;--color-scale-gray-1: #E7ECF0;--color-scale-gray-2: #CED5DC;--color-scale-gray-3: #ACB6C0;--color-scale-gray-4: #88929D;--color-scale-gray-5: #66707B;--color-scale-gray-6: #4B535D;--color-scale-gray-7: #343B43;--color-scale-gray-8: #20252C;--color-scale-gray-9: #0E1116;--color-scale-blue-0: #dff7ff;--color-scale-blue-1: #9cd7ff;--color-scale-blue-2: #67b3fd;--color-scale-blue-3: #368cf9;--color-scale-blue-4: #1168e3;--color-scale-blue-5: #0349b4;--color-scale-blue-6: #023b95;--color-scale-blue-7: #022f7a;--color-scale-blue-8: #032563;--color-scale-blue-9: #021a4a;--color-scale-green-0: #d2fedb;--color-scale-green-1: #82e596;--color-scale-green-2: #43c663;--color-scale-green-3: #26a148;--color-scale-green-4: #117f32;--color-scale-green-5: #055d20;--color-scale-green-6: #024c1a;--color-scale-green-7: #013d14;--color-scale-green-8: #003110;--color-scale-green-9: #00230b;--color-scale-yellow-0: #fcf7be;--color-scale-yellow-1: #f0ce53;--color-scale-yellow-2: #d5a824;--color-scale-yellow-3: #b58407;--color-scale-yellow-4: #956400;--color-scale-yellow-5: #744500;--color-scale-yellow-6: #603700;--color-scale-yellow-7: #4e2c00;--color-scale-yellow-8: #3f2200;--color-scale-yellow-9: #2e1800;--color-scale-orange-0: #fff2d5;--color-scale-orange-1: #ffc67b;--color-scale-orange-2: #f99636;--color-scale-orange-3: #dc6d1a;--color-scale-orange-4: #b45105;--color-scale-orange-5: #873800;--color-scale-orange-6: #702c00;--color-scale-orange-7: #5b2300;--color-scale-orange-8: #491b00;--color-scale-orange-9: #361200;--color-scale-red-0: #fff0ee;--color-scale-red-1: #ffc1bc;--color-scale-red-2: #ff8e8a;--color-scale-red-3: #ee5a5d;--color-scale-red-4: #d5232c;--color-scale-red-5: #a0111f;--color-scale-red-6: #86061d;--color-scale-red-7: #6e011a;--color-scale-red-8: #5a0016;--color-scale-red-9: #430011;--color-scale-purple-0: #faf0fe;--color-scale-purple-1: #e0c5ff;--color-scale-purple-2: #c49bff;--color-scale-purple-3: #a371f7;--color-scale-purple-4: #844ae7;--color-scale-purple-5: #622cbc;--color-scale-purple-6: #512598;--color-scale-purple-7: #411d7b;--color-scale-purple-8: #341763;--color-scale-purple-9: #260f49;--color-scale-pink-0: #feeff7;--color-scale-pink-1: #ffbde0;--color-scale-pink-2: #fc87ca;--color-scale-pink-3: #ed4baf;--color-scale-pink-4: #c9248e;--color-scale-pink-5: #971368;--color-scale-pink-6: #7d0c57;--color-scale-pink-7: #660847;--color-scale-pink-8: #53043a;--color-scale-pink-9: #3e022b;--color-scale-coral-0: #fff0ed;--color-scale-coral-1: #ffc2b6;--color-scale-coral-2: #ff8f7e;--color-scale-coral-3: #ef5b48;--color-scale-coral-4: #cd3425;--color-scale-coral-5: #9f1710;--color-scale-coral-6: #870706;--color-scale-coral-7: #6f0107;--color-scale-coral-8: #5b0002;--color-scale-coral-9: #430200}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=light_high_contrast]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #ffffff;--color-marketing-icon-primary: #1168e3;--color-marketing-icon-secondary: #368cf9;--color-diff-blob-addition-num-text: #0E1116;--color-diff-blob-addition-fg: #ffffff;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #055d20;--color-diff-blob-deletion-num-text: #0E1116;--color-diff-blob-deletion-fg: #ffffff;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #fff0ee;--color-diff-blob-deletion-word-bg: #a0111f;--color-diff-blob-hunk-num-bg: #9cd7ff;--color-diff-blob-expander-icon: #0E1116;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(1,4,9,0.8);--color-diffstat-addition-border: rgba(1,4,9,0.8);--color-diffstat-addition-bg: #117f32;--color-search-keyword-hl: #fcf7be;--color-prettylights-syntax-comment: #66707B;--color-prettylights-syntax-constant: #023b95;--color-prettylights-syntax-entity: #622cbc;--color-prettylights-syntax-storage-modifier-import: #0E1116;--color-prettylights-syntax-entity-tag: #024c1a;--color-prettylights-syntax-keyword: #a0111f;--color-prettylights-syntax-string: #032563;--color-prettylights-syntax-variable: #702c00;--color-prettylights-syntax-brackethighlighter-unmatched: #6e011a;--color-prettylights-syntax-invalid-illegal-text: #FFFFFF;--color-prettylights-syntax-invalid-illegal-bg: #6e011a;--color-prettylights-syntax-carriage-return-text: #FFFFFF;--color-prettylights-syntax-carriage-return-bg: #a0111f;--color-prettylights-syntax-string-regexp: #024c1a;--color-prettylights-syntax-markup-list: #2e1800;--color-prettylights-syntax-markup-heading: #023b95;--color-prettylights-syntax-markup-italic: #0E1116;--color-prettylights-syntax-markup-bold: #0E1116;--color-prettylights-syntax-markup-deleted-text: #6e011a;--color-prettylights-syntax-markup-deleted-bg: #fff0ee;--color-prettylights-syntax-markup-inserted-text: #024c1a;--color-prettylights-syntax-markup-inserted-bg: #d2fedb;--color-prettylights-syntax-markup-changed-text: #702c00;--color-prettylights-syntax-markup-changed-bg: #ffc67b;--color-prettylights-syntax-markup-ignored-text: #E7ECF0;--color-prettylights-syntax-markup-ignored-bg: #023b95;--color-prettylights-syntax-meta-diff-range: #622cbc;--color-prettylights-syntax-brackethighlighter-angle: #4B535D;--color-prettylights-syntax-sublimelinter-gutter-mark: #88929D;--color-prettylights-syntax-constant-other-reference-link: #032563;--color-codemirror-text: #0E1116;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #66707B;--color-codemirror-linenumber-text: #0E1116;--color-codemirror-cursor: #0E1116;--color-codemirror-selection-bg: #368cf9;--color-codemirror-activeline-bg: #E7ECF0;--color-codemirror-matchingbracket-text: #0E1116;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #0E1116;--color-codemirror-syntax-constant: #023b95;--color-codemirror-syntax-entity: #622cbc;--color-codemirror-syntax-keyword: #a0111f;--color-codemirror-syntax-storage: #a0111f;--color-codemirror-syntax-string: #032563;--color-codemirror-syntax-support: #023b95;--color-codemirror-syntax-variable: #702c00;--color-checks-bg: #0E1116;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #FFFFFF;--color-checks-text-secondary: #88929D;--color-checks-text-link: #368cf9;--color-checks-btn-icon: #ACB6C0;--color-checks-btn-hover-icon: #FFFFFF;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #E7ECF0;--color-checks-input-placeholder-text: #88929D;--color-checks-input-focus-text: #88929D;--color-checks-input-bg: #20252C;--color-checks-input-shadow: none;--color-checks-donut-error: #d5232c;--color-checks-donut-pending: #956400;--color-checks-donut-success: #117f32;--color-checks-donut-neutral: #ACB6C0;--color-checks-dropdown-text: #ACB6C0;--color-checks-dropdown-bg: #20252C;--color-checks-dropdown-border: #343B43;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #FFFFFF;--color-checks-dropdown-hover-bg: #343B43;--color-checks-dropdown-btn-hover-text: #FFFFFF;--color-checks-dropdown-btn-hover-bg: #20252C;--color-checks-scrollbar-thumb-bg: #4B535D;--color-checks-header-label-text: #CED5DC;--color-checks-header-label-open-text: #FFFFFF;--color-checks-header-border: #20252C;--color-checks-header-icon: #88929D;--color-checks-line-text: #CED5DC;--color-checks-line-num-text: rgba(136,146,157,0.75);--color-checks-line-timestamp-text: #88929D;--color-checks-line-hover-bg: #20252C;--color-checks-line-selected-bg: rgba(17,104,227,0.15);--color-checks-line-selected-num-text: #368cf9;--color-checks-line-dt-fm-text: #0E1116;--color-checks-line-dt-fm-bg: #744500;--color-checks-gate-bg: rgba(96,55,0,0.15);--color-checks-gate-text: #CED5DC;--color-checks-gate-waiting-text: #ACB6C0;--color-checks-step-header-open-bg: #20252C;--color-checks-step-error-text: #ee5a5d;--color-checks-step-warning-text: #b58407;--color-checks-logline-text: #88929D;--color-checks-logline-num-text: rgba(136,146,157,0.75);--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #CED5DC;--color-checks-logline-error-num-text: #ee5a5d;--color-checks-logline-error-bg: rgba(134,6,29,0.15);--color-checks-logline-warning-text: #CED5DC;--color-checks-logline-warning-num-text: #b58407;--color-checks-logline-warning-bg: rgba(96,55,0,0.15);--color-checks-logline-command-text: #368cf9;--color-checks-logline-section-text: #26a148;--color-checks-ansi-black: #0E1116;--color-checks-ansi-black-bright: #20252C;--color-checks-ansi-white: #CED5DC;--color-checks-ansi-white-bright: #CED5DC;--color-checks-ansi-gray: #88929D;--color-checks-ansi-red: #ee5a5d;--color-checks-ansi-red-bright: #ff8e8a;--color-checks-ansi-green: #26a148;--color-checks-ansi-green-bright: #43c663;--color-checks-ansi-yellow: #b58407;--color-checks-ansi-yellow-bright: #d5a824;--color-checks-ansi-blue: #368cf9;--color-checks-ansi-blue-bright: #67b3fd;--color-checks-ansi-magenta: #a371f7;--color-checks-ansi-magenta-bright: #c49bff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0E1116;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(1,4,9,0.8);--color-avatar-stack-fade: #ACB6C0;--color-avatar-stack-fade-more: #CED5DC;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: #0349b4;--color-counter-border: #20252C;--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(172,182,192,0.5);--color-select-menu-tap-focus-bg: #9cd7ff;--color-overlay-shadow: 0 1px 3px rgba(1,4,9,0.12), 0 8px 24px rgba(52,59,67,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #0E1116;--color-header-divider: #ACB6C0;--color-header-logo: #ffffff;--color-header-search-bg: #0E1116;--color-header-search-border: #4B535D;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(172,182,192,0.2);--color-timeline-badge-bg: #E7ECF0;--color-ansi-black: #0E1116;--color-ansi-black-bright: #4B535D;--color-ansi-white: #66707B;--color-ansi-white-bright: #88929D;--color-ansi-gray: #66707B;--color-ansi-red: #a0111f;--color-ansi-red-bright: #86061d;--color-ansi-green: #024c1a;--color-ansi-green-bright: #055d20;--color-ansi-yellow: #3f2200;--color-ansi-yellow-bright: #4e2c00;--color-ansi-blue: #0349b4;--color-ansi-blue-bright: #1168e3;--color-ansi-magenta: #622cbc;--color-ansi-magenta-bright: #844ae7;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #0E1116;--color-btn-bg: #E7ECF0;--color-btn-border: rgba(1,4,9,0.8);--color-btn-shadow: 0 1px 0 rgba(1,4,9,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #CED5DC;--color-btn-hover-border: rgba(1,4,9,0.8);--color-btn-active-bg: #ACB6C0;--color-btn-active-border: rgba(1,4,9,0.8);--color-btn-selected-bg: #ACB6C0;--color-btn-focus-bg: #CED5DC;--color-btn-focus-border: rgba(1,4,9,0.8);--color-btn-focus-shadow: 0 0 0 3px rgba(3,73,180,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(3,73,180,0.3);--color-btn-counter-bg: rgba(1,4,9,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #055d20;--color-btn-primary-border: #013d14;--color-btn-primary-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #024c1a;--color-btn-primary-hover-border: #013d14;--color-btn-primary-selected-bg: hsla(139,95%,13%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,35,11,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(1,4,9,0.8);--color-btn-primary-focus-bg: #013d14;--color-btn-primary-focus-border: #013d14;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(1,61,20,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #023b95;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0349b4;--color-btn-outline-hover-border: #022f7a;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #022f7a;--color-btn-outline-selected-border: #022f7a;--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(2,26,74,0.2);--color-btn-outline-disabled-text: rgba(3,73,180,0.5);--color-btn-outline-disabled-bg: #E7ECF0;--color-btn-outline-disabled-counter-bg: rgba(3,73,180,0.05);--color-btn-outline-focus-border: #022f7a;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(2,59,149,0.4);--color-btn-outline-counter-bg: rgba(3,73,180,0.1);--color-btn-danger-text: #86061d;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a0111f;--color-btn-danger-hover-border: #6e011a;--color-btn-danger-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #6e011a;--color-btn-danger-selected-border: #6e011a;--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(67,0,17,0.2);--color-btn-danger-disabled-text: rgba(160,17,31,0.5);--color-btn-danger-disabled-bg: #E7ECF0;--color-btn-danger-disabled-counter-bg: rgba(160,17,31,0.05);--color-btn-danger-focus-border: #6e011a;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(134,6,29,0.4);--color-btn-danger-counter-bg: rgba(160,17,31,0.1);--color-btn-danger-icon: #86061d;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #66707B;--color-underlinenav-border-hover: rgba(172,182,192,0.2);--color-action-list-item-inline-divider: #88929D;--color-action-list-item-default-hover-bg: #E7ECF0;--color-action-list-item-default-hover-border: #88929D;--color-action-list-item-default-active-bg: #CED5DC;--color-action-list-item-default-active-border: #20252C;--color-action-list-item-default-selected-bg: #CED5DC;--color-action-list-item-danger-hover-bg: #a0111f;--color-action-list-item-danger-active-bg: #6e011a;--color-action-list-item-danger-hover-text: #ffffff;--color-fg-default: #0E1116;--color-fg-muted: #0E1116;--color-fg-subtle: #66707B;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #ffffff;--color-canvas-subtle: #E7ECF0;--color-border-default: #20252C;--color-border-muted: #88929D;--color-border-subtle: rgba(1,4,9,0.8);--color-shadow-small: 0 1px 0 rgba(1,4,9,0.04);--color-shadow-medium: 0 3px 6px rgba(136,146,157,0.15);--color-shadow-large: 0 8px 24px rgba(136,146,157,0.2);--color-shadow-extra-large: 0 12px 28px rgba(136,146,157,0.3);--color-neutral-emphasis-plus: #0E1116;--color-neutral-emphasis: #66707B;--color-neutral-muted: rgba(172,182,192,0.2);--color-neutral-subtle: #E7ECF0;--color-accent-fg: #0349b4;--color-accent-emphasis: #0349b4;--color-accent-muted: #368cf9;--color-accent-subtle: #dff7ff;--color-success-fg: #055d20;--color-success-emphasis: #055d20;--color-success-muted: #26a148;--color-success-subtle: #d2fedb;--color-attention-fg: #744500;--color-attention-emphasis: #744500;--color-attention-muted: #b58407;--color-attention-subtle: #fcf7be;--color-severe-fg: #873800;--color-severe-emphasis: #873800;--color-severe-muted: #dc6d1a;--color-severe-subtle: #fff2d5;--color-danger-fg: #a0111f;--color-danger-emphasis: #a0111f;--color-danger-muted: #ee5a5d;--color-danger-subtle: #fff0ee;--color-done-fg: #622cbc;--color-done-emphasis: #622cbc;--color-done-muted: #a371f7;--color-done-subtle: #faf0fe;--color-sponsors-fg: #971368;--color-sponsors-emphasis: #971368;--color-sponsors-muted: #ed4baf;--color-sponsors-subtle: #feeff7;--color-primer-fg-disabled: #88929D;--color-primer-canvas-backdrop: rgba(1,4,9,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #ef5b48;--color-primer-border-contrast: rgba(1,4,9,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(206,213,220,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(3,73,180,0.3);--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #FFFFFF;--color-scale-gray-1: #E7ECF0;--color-scale-gray-2: #CED5DC;--color-scale-gray-3: #ACB6C0;--color-scale-gray-4: #88929D;--color-scale-gray-5: #66707B;--color-scale-gray-6: #4B535D;--color-scale-gray-7: #343B43;--color-scale-gray-8: #20252C;--color-scale-gray-9: #0E1116;--color-scale-blue-0: #dff7ff;--color-scale-blue-1: #9cd7ff;--color-scale-blue-2: #67b3fd;--color-scale-blue-3: #368cf9;--color-scale-blue-4: #1168e3;--color-scale-blue-5: #0349b4;--color-scale-blue-6: #023b95;--color-scale-blue-7: #022f7a;--color-scale-blue-8: #032563;--color-scale-blue-9: #021a4a;--color-scale-green-0: #d2fedb;--color-scale-green-1: #82e596;--color-scale-green-2: #43c663;--color-scale-green-3: #26a148;--color-scale-green-4: #117f32;--color-scale-green-5: #055d20;--color-scale-green-6: #024c1a;--color-scale-green-7: #013d14;--color-scale-green-8: #003110;--color-scale-green-9: #00230b;--color-scale-yellow-0: #fcf7be;--color-scale-yellow-1: #f0ce53;--color-scale-yellow-2: #d5a824;--color-scale-yellow-3: #b58407;--color-scale-yellow-4: #956400;--color-scale-yellow-5: #744500;--color-scale-yellow-6: #603700;--color-scale-yellow-7: #4e2c00;--color-scale-yellow-8: #3f2200;--color-scale-yellow-9: #2e1800;--color-scale-orange-0: #fff2d5;--color-scale-orange-1: #ffc67b;--color-scale-orange-2: #f99636;--color-scale-orange-3: #dc6d1a;--color-scale-orange-4: #b45105;--color-scale-orange-5: #873800;--color-scale-orange-6: #702c00;--color-scale-orange-7: #5b2300;--color-scale-orange-8: #491b00;--color-scale-orange-9: #361200;--color-scale-red-0: #fff0ee;--color-scale-red-1: #ffc1bc;--color-scale-red-2: #ff8e8a;--color-scale-red-3: #ee5a5d;--color-scale-red-4: #d5232c;--color-scale-red-5: #a0111f;--color-scale-red-6: #86061d;--color-scale-red-7: #6e011a;--color-scale-red-8: #5a0016;--color-scale-red-9: #430011;--color-scale-purple-0: #faf0fe;--color-scale-purple-1: #e0c5ff;--color-scale-purple-2: #c49bff;--color-scale-purple-3: #a371f7;--color-scale-purple-4: #844ae7;--color-scale-purple-5: #622cbc;--color-scale-purple-6: #512598;--color-scale-purple-7: #411d7b;--color-scale-purple-8: #341763;--color-scale-purple-9: #260f49;--color-scale-pink-0: #feeff7;--color-scale-pink-1: #ffbde0;--color-scale-pink-2: #fc87ca;--color-scale-pink-3: #ed4baf;--color-scale-pink-4: #c9248e;--color-scale-pink-5: #971368;--color-scale-pink-6: #7d0c57;--color-scale-pink-7: #660847;--color-scale-pink-8: #53043a;--color-scale-pink-9: #3e022b;--color-scale-coral-0: #fff0ed;--color-scale-coral-1: #ffc2b6;--color-scale-coral-2: #ff8f7e;--color-scale-coral-3: #ef5b48;--color-scale-coral-4: #cd3425;--color-scale-coral-5: #9f1710;--color-scale-coral-6: #870706;--color-scale-coral-7: #6f0107;--color-scale-coral-8: #5b0002;--color-scale-coral-9: #430200}}
|
|
|
|
/*# sourceMappingURL=light_high_contrast-8ac72e260e41929b5b429417bd1f06d7d39c5749858208b0d033475623f5cc02a5faace4e56193a257e147f19d06770f1977c839513e5e123f52897b07154cf2.css.map*/
|
|
.diff-table .blob-code.blob-code-inner{padding-left:22px}.blob-code-marker::before{position:absolute;top:1px;left:8px;content:attr(data-code-marker)}.blob-code-marker-addition::before{position:absolute;top:1px;left:8px;content:"+ "}.blob-code-marker-deletion::before{position:absolute;top:1px;left:8px;content:"- "}.blob-code-marker-context::before{position:absolute;top:1px;left:8px;content:" "}.blob-code-marker-injected_context::before{position:absolute;top:1px;left:8px;content:" "}.blob-code-context,.blob-code-addition,.blob-code-deletion{padding-left:22px}.blob-code-inner.blob-code-addition,.blob-code-inner.blob-code-deletion{position:relative;padding-left:22px !important}.soft-wrap .blob-code-context,.soft-wrap .blob-code-addition,.soft-wrap .blob-code-deletion{padding-left:24px;text-indent:0}.diff-view .blob-code-marker-context::before,.diff-view .blob-code-marker-injected_context::before,.diff-view .blob-code-marker-addition::before,.diff-view .blob-code-marker-deletion::before{top:4px}.soft-wrap .add-line-comment{margin-top:0;margin-left:-24px}.add-line-comment{margin-left:-32px}
|
|
|
|
/*# sourceMappingURL=tab-size-fix-aec2b015a54f9b08d22f03b9d4a220dd66976bd39c5591eb28562529c35388cca3bb7d8500d380843b468f738efbb27cc75265869c6028732bd15c58e641b225.css.map*/
|
|
[data-color-mode=light][data-light-theme=dark_dimmed],[data-color-mode=dark][data-dark-theme=dark_dimmed]{--color-canvas-default-transparent: rgba(34,39,46,0);--color-page-header-bg: #22272e;--color-marketing-icon-primary: #6cb6ff;--color-marketing-icon-secondary: #316dca;--color-diff-blob-addition-num-text: #adbac7;--color-diff-blob-addition-fg: #adbac7;--color-diff-blob-addition-num-bg: rgba(87,171,90,0.3);--color-diff-blob-addition-line-bg: rgba(70,149,74,0.15);--color-diff-blob-addition-word-bg: rgba(70,149,74,0.4);--color-diff-blob-deletion-num-text: #adbac7;--color-diff-blob-deletion-fg: #adbac7;--color-diff-blob-deletion-num-bg: rgba(229,83,75,0.3);--color-diff-blob-deletion-line-bg: rgba(229,83,75,0.15);--color-diff-blob-deletion-word-bg: rgba(229,83,75,0.4);--color-diff-blob-hunk-num-bg: rgba(65,132,228,0.4);--color-diff-blob-expander-icon: #768390;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(205,217,229,0.1);--color-diffstat-addition-border: rgba(205,217,229,0.1);--color-diffstat-addition-bg: #57ab5a;--color-search-keyword-hl: rgba(198,144,38,0.4);--color-prettylights-syntax-comment: #768390;--color-prettylights-syntax-constant: #6cb6ff;--color-prettylights-syntax-entity: #dcbdfb;--color-prettylights-syntax-storage-modifier-import: #adbac7;--color-prettylights-syntax-entity-tag: #8ddb8c;--color-prettylights-syntax-keyword: #f47067;--color-prettylights-syntax-string: #96d0ff;--color-prettylights-syntax-variable: #f69d50;--color-prettylights-syntax-brackethighlighter-unmatched: #e5534b;--color-prettylights-syntax-invalid-illegal-text: #cdd9e5;--color-prettylights-syntax-invalid-illegal-bg: #922323;--color-prettylights-syntax-carriage-return-text: #cdd9e5;--color-prettylights-syntax-carriage-return-bg: #ad2e2c;--color-prettylights-syntax-string-regexp: #8ddb8c;--color-prettylights-syntax-markup-list: #eac55f;--color-prettylights-syntax-markup-heading: #316dca;--color-prettylights-syntax-markup-italic: #adbac7;--color-prettylights-syntax-markup-bold: #adbac7;--color-prettylights-syntax-markup-deleted-text: #ffd8d3;--color-prettylights-syntax-markup-deleted-bg: #78191b;--color-prettylights-syntax-markup-inserted-text: #b4f1b4;--color-prettylights-syntax-markup-inserted-bg: #1b4721;--color-prettylights-syntax-markup-changed-text: #ffddb0;--color-prettylights-syntax-markup-changed-bg: #682d0f;--color-prettylights-syntax-markup-ignored-text: #adbac7;--color-prettylights-syntax-markup-ignored-bg: #255ab2;--color-prettylights-syntax-meta-diff-range: #dcbdfb;--color-prettylights-syntax-brackethighlighter-angle: #768390;--color-prettylights-syntax-sublimelinter-gutter-mark: #545d68;--color-prettylights-syntax-constant-other-reference-link: #96d0ff;--color-codemirror-text: #adbac7;--color-codemirror-bg: #22272e;--color-codemirror-gutters-bg: #22272e;--color-codemirror-guttermarker-text: #22272e;--color-codemirror-guttermarker-subtle-text: #545d68;--color-codemirror-linenumber-text: #768390;--color-codemirror-cursor: #adbac7;--color-codemirror-selection-bg: rgba(65,132,228,0.4);--color-codemirror-activeline-bg: rgba(99,110,123,0.1);--color-codemirror-matchingbracket-text: #adbac7;--color-codemirror-lines-bg: #22272e;--color-codemirror-syntax-comment: #768390;--color-codemirror-syntax-constant: #6cb6ff;--color-codemirror-syntax-entity: #dcbdfb;--color-codemirror-syntax-keyword: #f47067;--color-codemirror-syntax-storage: #f47067;--color-codemirror-syntax-string: #96d0ff;--color-codemirror-syntax-support: #6cb6ff;--color-codemirror-syntax-variable: #f69d50;--color-checks-bg: #1c2128;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #adbac7;--color-checks-text-secondary: #768390;--color-checks-text-link: #539bf5;--color-checks-btn-icon: #768390;--color-checks-btn-hover-icon: #adbac7;--color-checks-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-input-text: #768390;--color-checks-input-placeholder-text: #545d68;--color-checks-input-focus-text: #adbac7;--color-checks-input-bg: #2d333b;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #e5534b;--color-checks-donut-pending: #c69026;--color-checks-donut-success: #46954a;--color-checks-donut-neutral: #768390;--color-checks-dropdown-text: #adbac7;--color-checks-dropdown-bg: #2d333b;--color-checks-dropdown-border: #444c56;--color-checks-dropdown-shadow: rgba(28,33,40,0.3);--color-checks-dropdown-hover-text: #adbac7;--color-checks-dropdown-hover-bg: rgba(99,110,123,0.1);--color-checks-dropdown-btn-hover-text: #adbac7;--color-checks-dropdown-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-scrollbar-thumb-bg: rgba(99,110,123,0.4);--color-checks-header-label-text: #768390;--color-checks-header-label-open-text: #adbac7;--color-checks-header-border: #373e47;--color-checks-header-icon: #768390;--color-checks-line-text: #768390;--color-checks-line-num-text: #545d68;--color-checks-line-timestamp-text: #545d68;--color-checks-line-hover-bg: rgba(99,110,123,0.1);--color-checks-line-selected-bg: rgba(65,132,228,0.15);--color-checks-line-selected-num-text: #539bf5;--color-checks-line-dt-fm-text: #cdd9e5;--color-checks-line-dt-fm-bg: #966600;--color-checks-gate-bg: rgba(174,124,20,0.15);--color-checks-gate-text: #768390;--color-checks-gate-waiting-text: #c69026;--color-checks-step-header-open-bg: #2d333b;--color-checks-step-error-text: #e5534b;--color-checks-step-warning-text: #c69026;--color-checks-logline-text: #768390;--color-checks-logline-num-text: #545d68;--color-checks-logline-debug-text: #986ee2;--color-checks-logline-error-text: #768390;--color-checks-logline-error-num-text: #545d68;--color-checks-logline-error-bg: rgba(229,83,75,0.15);--color-checks-logline-warning-text: #768390;--color-checks-logline-warning-num-text: #c69026;--color-checks-logline-warning-bg: rgba(174,124,20,0.15);--color-checks-logline-command-text: #539bf5;--color-checks-logline-section-text: #57ab5a;--color-checks-ansi-black: #22272e;--color-checks-ansi-black-bright: #2d333b;--color-checks-ansi-white: #909dab;--color-checks-ansi-white-bright: #909dab;--color-checks-ansi-gray: #636e7b;--color-checks-ansi-red: #f47067;--color-checks-ansi-red-bright: #ff938a;--color-checks-ansi-green: #57ab5a;--color-checks-ansi-green-bright: #6bc46d;--color-checks-ansi-yellow: #c69026;--color-checks-ansi-yellow-bright: #daaa3f;--color-checks-ansi-blue: #539bf5;--color-checks-ansi-blue-bright: #6cb6ff;--color-checks-ansi-magenta: #b083f0;--color-checks-ansi-magenta-bright: #dcbdfb;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #22272e;--color-project-sidebar-bg: #2d333b;--color-project-gradient-in: #2d333b;--color-project-gradient-out: rgba(45,51,59,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(205,217,229,0.1);--color-avatar-border: rgba(205,217,229,0.1);--color-avatar-stack-fade: #444c56;--color-avatar-stack-fade-more: #373e47;--color-avatar-child-shadow: -2px -2px 0 #22272e;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #545d68;--color-select-menu-tap-highlight: rgba(68,76,86,0.5);--color-select-menu-tap-focus-bg: #143d79;--color-overlay-shadow: 0 0 0 1px #444c56, 0 16px 32px rgba(28,33,40,0.85);--color-header-text: rgba(205,217,229,0.7);--color-header-bg: #2d333b;--color-header-divider: #768390;--color-header-logo: #cdd9e5;--color-header-search-bg: #22272e;--color-header-search-border: #444c56;--color-sidenav-selected-bg: #373e47;--color-menu-bg-active: #2d333b;--color-input-disabled-bg: rgba(99,110,123,0);--color-timeline-badge-bg: #373e47;--color-ansi-black: #545d68;--color-ansi-black-bright: #636e7b;--color-ansi-white: #909dab;--color-ansi-white-bright: #cdd9e5;--color-ansi-gray: #636e7b;--color-ansi-red: #f47067;--color-ansi-red-bright: #ff938a;--color-ansi-green: #57ab5a;--color-ansi-green-bright: #6bc46d;--color-ansi-yellow: #c69026;--color-ansi-yellow-bright: #daaa3f;--color-ansi-blue: #539bf5;--color-ansi-blue-bright: #6cb6ff;--color-ansi-magenta: #b083f0;--color-ansi-magenta-bright: #dcbdfb;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #adbac7;--color-btn-bg: #373e47;--color-btn-border: rgba(205,217,229,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #444c56;--color-btn-hover-border: #768390;--color-btn-active-bg: hsla(213,12%,27%,1);--color-btn-active-border: #636e7b;--color-btn-selected-bg: #2d333b;--color-btn-focus-bg: #373e47;--color-btn-focus-border: #768390;--color-btn-focus-shadow: 0 0 0 3px rgba(118,131,144,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(28,33,40,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(49,109,202,0.3);--color-btn-counter-bg: #444c56;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #347d39;--color-btn-primary-border: rgba(205,217,229,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #46954a;--color-btn-primary-hover-border: rgba(205,217,229,0.1);--color-btn-primary-selected-bg: #347d39;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(205,217,229,0.5);--color-btn-primary-disabled-bg: rgba(52,125,57,0.6);--color-btn-primary-disabled-border: rgba(205,217,229,0.1);--color-btn-primary-focus-bg: #347d39;--color-btn-primary-focus-border: rgba(205,217,229,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #cdd9e5;--color-btn-primary-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-text: #539bf5;--color-btn-outline-hover-text: #539bf5;--color-btn-outline-hover-bg: #444c56;--color-btn-outline-hover-border: rgba(205,217,229,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(28,33,40,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(205,217,229,0.03);--color-btn-outline-hover-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-selected-text: #cdd9e5;--color-btn-outline-selected-bg: #1b4b91;--color-btn-outline-selected-border: rgba(205,217,229,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(83,155,245,0.5);--color-btn-outline-disabled-bg: #22272e;--color-btn-outline-disabled-counter-bg: rgba(49,109,202,0.05);--color-btn-outline-focus-border: rgba(205,217,229,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(37,90,178,0.4);--color-btn-outline-counter-bg: rgba(49,109,202,0.1);--color-btn-danger-text: #e5534b;--color-btn-danger-hover-text: #cdd9e5;--color-btn-danger-hover-bg: #c93c37;--color-btn-danger-hover-border: #e5534b;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #cdd9e5;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ad2e2c;--color-btn-danger-selected-border: #f47067;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(229,83,75,0.5);--color-btn-danger-disabled-bg: #22272e;--color-btn-danger-disabled-counter-bg: rgba(201,60,55,0.05);--color-btn-danger-focus-border: #e5534b;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(229,83,75,0.4);--color-btn-danger-counter-bg: rgba(201,60,55,0.1);--color-btn-danger-icon: #e5534b;--color-underlinenav-icon: #545d68;--color-underlinenav-border-hover: rgba(99,110,123,0.4);--color-action-list-item-inline-divider: rgba(68,76,86,0.48);--color-action-list-item-default-hover-bg: rgba(144,157,171,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(144,157,171,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(144,157,171,0.08);--color-action-list-item-danger-hover-bg: rgba(229,83,75,0.16);--color-action-list-item-danger-active-bg: rgba(229,83,75,0.24);--color-action-list-item-danger-hover-text: #f47067;--color-fg-default: #adbac7;--color-fg-muted: #768390;--color-fg-subtle: #545d68;--color-fg-on-emphasis: #cdd9e5;--color-canvas-default: #22272e;--color-canvas-overlay: #2d333b;--color-canvas-inset: #1c2128;--color-canvas-subtle: #2d333b;--color-border-default: #444c56;--color-border-muted: #373e47;--color-border-subtle: rgba(205,217,229,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #1c2128;--color-shadow-large: 0 8px 24px #1c2128;--color-shadow-extra-large: 0 12px 48px #1c2128;--color-neutral-emphasis-plus: #636e7b;--color-neutral-emphasis: #636e7b;--color-neutral-muted: rgba(99,110,123,0.4);--color-neutral-subtle: rgba(99,110,123,0.1);--color-accent-fg: #539bf5;--color-accent-emphasis: #316dca;--color-accent-muted: rgba(65,132,228,0.4);--color-accent-subtle: rgba(65,132,228,0.15);--color-success-fg: #57ab5a;--color-success-emphasis: #347d39;--color-success-muted: rgba(70,149,74,0.4);--color-success-subtle: rgba(70,149,74,0.15);--color-attention-fg: #c69026;--color-attention-emphasis: #966600;--color-attention-muted: rgba(174,124,20,0.4);--color-attention-subtle: rgba(174,124,20,0.15);--color-severe-fg: #cc6b2c;--color-severe-emphasis: #ae5622;--color-severe-muted: rgba(204,107,44,0.4);--color-severe-subtle: rgba(204,107,44,0.15);--color-danger-fg: #e5534b;--color-danger-emphasis: #c93c37;--color-danger-muted: rgba(229,83,75,0.4);--color-danger-subtle: rgba(229,83,75,0.15);--color-done-fg: #986ee2;--color-done-emphasis: #8256d0;--color-done-muted: rgba(152,110,226,0.4);--color-done-subtle: rgba(152,110,226,0.15);--color-sponsors-fg: #c96198;--color-sponsors-emphasis: #ae4c82;--color-sponsors-muted: rgba(201,97,152,0.4);--color-sponsors-subtle: rgba(201,97,152,0.15);--color-primer-fg-disabled: #545d68;--color-primer-canvas-backdrop: rgba(28,33,40,0.8);--color-primer-canvas-sticky: rgba(34,39,46,0.95);--color-primer-border-active: #EC775C;--color-primer-border-contrast: rgba(205,217,229,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #143d79;--color-scale-black: #1c2128;--color-scale-white: #cdd9e5;--color-scale-gray-0: #cdd9e5;--color-scale-gray-1: #adbac7;--color-scale-gray-2: #909dab;--color-scale-gray-3: #768390;--color-scale-gray-4: #636e7b;--color-scale-gray-5: #545d68;--color-scale-gray-6: #444c56;--color-scale-gray-7: #373e47;--color-scale-gray-8: #2d333b;--color-scale-gray-9: #22272e;--color-scale-blue-0: #c6e6ff;--color-scale-blue-1: #96d0ff;--color-scale-blue-2: #6cb6ff;--color-scale-blue-3: #539bf5;--color-scale-blue-4: #4184e4;--color-scale-blue-5: #316dca;--color-scale-blue-6: #255ab2;--color-scale-blue-7: #1b4b91;--color-scale-blue-8: #143d79;--color-scale-blue-9: #0f2d5c;--color-scale-green-0: #b4f1b4;--color-scale-green-1: #8ddb8c;--color-scale-green-2: #6bc46d;--color-scale-green-3: #57ab5a;--color-scale-green-4: #46954a;--color-scale-green-5: #347d39;--color-scale-green-6: #2b6a30;--color-scale-green-7: #245829;--color-scale-green-8: #1b4721;--color-scale-green-9: #113417;--color-scale-yellow-0: #fbe090;--color-scale-yellow-1: #eac55f;--color-scale-yellow-2: #daaa3f;--color-scale-yellow-3: #c69026;--color-scale-yellow-4: #ae7c14;--color-scale-yellow-5: #966600;--color-scale-yellow-6: #805400;--color-scale-yellow-7: #6c4400;--color-scale-yellow-8: #593600;--color-scale-yellow-9: #452700;--color-scale-orange-0: #ffddb0;--color-scale-orange-1: #ffbc6f;--color-scale-orange-2: #f69d50;--color-scale-orange-3: #e0823d;--color-scale-orange-4: #cc6b2c;--color-scale-orange-5: #ae5622;--color-scale-orange-6: #94471b;--color-scale-orange-7: #7f3913;--color-scale-orange-8: #682d0f;--color-scale-orange-9: #4d210c;--color-scale-red-0: #ffd8d3;--color-scale-red-1: #ffb8b0;--color-scale-red-2: #ff938a;--color-scale-red-3: #f47067;--color-scale-red-4: #e5534b;--color-scale-red-5: #c93c37;--color-scale-red-6: #ad2e2c;--color-scale-red-7: #922323;--color-scale-red-8: #78191b;--color-scale-red-9: #5D0F12;--color-scale-purple-0: #eedcff;--color-scale-purple-1: #dcbdfb;--color-scale-purple-2: #dcbdfb;--color-scale-purple-3: #b083f0;--color-scale-purple-4: #986ee2;--color-scale-purple-5: #8256d0;--color-scale-purple-6: #6b44bc;--color-scale-purple-7: #5936a2;--color-scale-purple-8: #472c82;--color-scale-purple-9: #352160;--color-scale-pink-0: #ffd7eb;--color-scale-pink-1: #ffb3d8;--color-scale-pink-2: #fc8dc7;--color-scale-pink-3: #e275ad;--color-scale-pink-4: #c96198;--color-scale-pink-5: #ae4c82;--color-scale-pink-6: #983b6e;--color-scale-pink-7: #7e325a;--color-scale-pink-8: #69264a;--color-scale-pink-9: #551639;--color-scale-coral-0: #FFDACF;--color-scale-coral-1: #FFB9A5;--color-scale-coral-2: #F79981;--color-scale-coral-3: #EC775C;--color-scale-coral-4: #DE5B41;--color-scale-coral-5: #C2442D;--color-scale-coral-6: #A93524;--color-scale-coral-7: #8D291B;--color-scale-coral-8: #771D13;--color-scale-coral-9: #5D1008}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=dark_dimmed]{--color-canvas-default-transparent: rgba(34,39,46,0);--color-page-header-bg: #22272e;--color-marketing-icon-primary: #6cb6ff;--color-marketing-icon-secondary: #316dca;--color-diff-blob-addition-num-text: #adbac7;--color-diff-blob-addition-fg: #adbac7;--color-diff-blob-addition-num-bg: rgba(87,171,90,0.3);--color-diff-blob-addition-line-bg: rgba(70,149,74,0.15);--color-diff-blob-addition-word-bg: rgba(70,149,74,0.4);--color-diff-blob-deletion-num-text: #adbac7;--color-diff-blob-deletion-fg: #adbac7;--color-diff-blob-deletion-num-bg: rgba(229,83,75,0.3);--color-diff-blob-deletion-line-bg: rgba(229,83,75,0.15);--color-diff-blob-deletion-word-bg: rgba(229,83,75,0.4);--color-diff-blob-hunk-num-bg: rgba(65,132,228,0.4);--color-diff-blob-expander-icon: #768390;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(205,217,229,0.1);--color-diffstat-addition-border: rgba(205,217,229,0.1);--color-diffstat-addition-bg: #57ab5a;--color-search-keyword-hl: rgba(198,144,38,0.4);--color-prettylights-syntax-comment: #768390;--color-prettylights-syntax-constant: #6cb6ff;--color-prettylights-syntax-entity: #dcbdfb;--color-prettylights-syntax-storage-modifier-import: #adbac7;--color-prettylights-syntax-entity-tag: #8ddb8c;--color-prettylights-syntax-keyword: #f47067;--color-prettylights-syntax-string: #96d0ff;--color-prettylights-syntax-variable: #f69d50;--color-prettylights-syntax-brackethighlighter-unmatched: #e5534b;--color-prettylights-syntax-invalid-illegal-text: #cdd9e5;--color-prettylights-syntax-invalid-illegal-bg: #922323;--color-prettylights-syntax-carriage-return-text: #cdd9e5;--color-prettylights-syntax-carriage-return-bg: #ad2e2c;--color-prettylights-syntax-string-regexp: #8ddb8c;--color-prettylights-syntax-markup-list: #eac55f;--color-prettylights-syntax-markup-heading: #316dca;--color-prettylights-syntax-markup-italic: #adbac7;--color-prettylights-syntax-markup-bold: #adbac7;--color-prettylights-syntax-markup-deleted-text: #ffd8d3;--color-prettylights-syntax-markup-deleted-bg: #78191b;--color-prettylights-syntax-markup-inserted-text: #b4f1b4;--color-prettylights-syntax-markup-inserted-bg: #1b4721;--color-prettylights-syntax-markup-changed-text: #ffddb0;--color-prettylights-syntax-markup-changed-bg: #682d0f;--color-prettylights-syntax-markup-ignored-text: #adbac7;--color-prettylights-syntax-markup-ignored-bg: #255ab2;--color-prettylights-syntax-meta-diff-range: #dcbdfb;--color-prettylights-syntax-brackethighlighter-angle: #768390;--color-prettylights-syntax-sublimelinter-gutter-mark: #545d68;--color-prettylights-syntax-constant-other-reference-link: #96d0ff;--color-codemirror-text: #adbac7;--color-codemirror-bg: #22272e;--color-codemirror-gutters-bg: #22272e;--color-codemirror-guttermarker-text: #22272e;--color-codemirror-guttermarker-subtle-text: #545d68;--color-codemirror-linenumber-text: #768390;--color-codemirror-cursor: #adbac7;--color-codemirror-selection-bg: rgba(65,132,228,0.4);--color-codemirror-activeline-bg: rgba(99,110,123,0.1);--color-codemirror-matchingbracket-text: #adbac7;--color-codemirror-lines-bg: #22272e;--color-codemirror-syntax-comment: #768390;--color-codemirror-syntax-constant: #6cb6ff;--color-codemirror-syntax-entity: #dcbdfb;--color-codemirror-syntax-keyword: #f47067;--color-codemirror-syntax-storage: #f47067;--color-codemirror-syntax-string: #96d0ff;--color-codemirror-syntax-support: #6cb6ff;--color-codemirror-syntax-variable: #f69d50;--color-checks-bg: #1c2128;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #adbac7;--color-checks-text-secondary: #768390;--color-checks-text-link: #539bf5;--color-checks-btn-icon: #768390;--color-checks-btn-hover-icon: #adbac7;--color-checks-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-input-text: #768390;--color-checks-input-placeholder-text: #545d68;--color-checks-input-focus-text: #adbac7;--color-checks-input-bg: #2d333b;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #e5534b;--color-checks-donut-pending: #c69026;--color-checks-donut-success: #46954a;--color-checks-donut-neutral: #768390;--color-checks-dropdown-text: #adbac7;--color-checks-dropdown-bg: #2d333b;--color-checks-dropdown-border: #444c56;--color-checks-dropdown-shadow: rgba(28,33,40,0.3);--color-checks-dropdown-hover-text: #adbac7;--color-checks-dropdown-hover-bg: rgba(99,110,123,0.1);--color-checks-dropdown-btn-hover-text: #adbac7;--color-checks-dropdown-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-scrollbar-thumb-bg: rgba(99,110,123,0.4);--color-checks-header-label-text: #768390;--color-checks-header-label-open-text: #adbac7;--color-checks-header-border: #373e47;--color-checks-header-icon: #768390;--color-checks-line-text: #768390;--color-checks-line-num-text: #545d68;--color-checks-line-timestamp-text: #545d68;--color-checks-line-hover-bg: rgba(99,110,123,0.1);--color-checks-line-selected-bg: rgba(65,132,228,0.15);--color-checks-line-selected-num-text: #539bf5;--color-checks-line-dt-fm-text: #cdd9e5;--color-checks-line-dt-fm-bg: #966600;--color-checks-gate-bg: rgba(174,124,20,0.15);--color-checks-gate-text: #768390;--color-checks-gate-waiting-text: #c69026;--color-checks-step-header-open-bg: #2d333b;--color-checks-step-error-text: #e5534b;--color-checks-step-warning-text: #c69026;--color-checks-logline-text: #768390;--color-checks-logline-num-text: #545d68;--color-checks-logline-debug-text: #986ee2;--color-checks-logline-error-text: #768390;--color-checks-logline-error-num-text: #545d68;--color-checks-logline-error-bg: rgba(229,83,75,0.15);--color-checks-logline-warning-text: #768390;--color-checks-logline-warning-num-text: #c69026;--color-checks-logline-warning-bg: rgba(174,124,20,0.15);--color-checks-logline-command-text: #539bf5;--color-checks-logline-section-text: #57ab5a;--color-checks-ansi-black: #22272e;--color-checks-ansi-black-bright: #2d333b;--color-checks-ansi-white: #909dab;--color-checks-ansi-white-bright: #909dab;--color-checks-ansi-gray: #636e7b;--color-checks-ansi-red: #f47067;--color-checks-ansi-red-bright: #ff938a;--color-checks-ansi-green: #57ab5a;--color-checks-ansi-green-bright: #6bc46d;--color-checks-ansi-yellow: #c69026;--color-checks-ansi-yellow-bright: #daaa3f;--color-checks-ansi-blue: #539bf5;--color-checks-ansi-blue-bright: #6cb6ff;--color-checks-ansi-magenta: #b083f0;--color-checks-ansi-magenta-bright: #dcbdfb;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #22272e;--color-project-sidebar-bg: #2d333b;--color-project-gradient-in: #2d333b;--color-project-gradient-out: rgba(45,51,59,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(205,217,229,0.1);--color-avatar-border: rgba(205,217,229,0.1);--color-avatar-stack-fade: #444c56;--color-avatar-stack-fade-more: #373e47;--color-avatar-child-shadow: -2px -2px 0 #22272e;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #545d68;--color-select-menu-tap-highlight: rgba(68,76,86,0.5);--color-select-menu-tap-focus-bg: #143d79;--color-overlay-shadow: 0 0 0 1px #444c56, 0 16px 32px rgba(28,33,40,0.85);--color-header-text: rgba(205,217,229,0.7);--color-header-bg: #2d333b;--color-header-divider: #768390;--color-header-logo: #cdd9e5;--color-header-search-bg: #22272e;--color-header-search-border: #444c56;--color-sidenav-selected-bg: #373e47;--color-menu-bg-active: #2d333b;--color-input-disabled-bg: rgba(99,110,123,0);--color-timeline-badge-bg: #373e47;--color-ansi-black: #545d68;--color-ansi-black-bright: #636e7b;--color-ansi-white: #909dab;--color-ansi-white-bright: #cdd9e5;--color-ansi-gray: #636e7b;--color-ansi-red: #f47067;--color-ansi-red-bright: #ff938a;--color-ansi-green: #57ab5a;--color-ansi-green-bright: #6bc46d;--color-ansi-yellow: #c69026;--color-ansi-yellow-bright: #daaa3f;--color-ansi-blue: #539bf5;--color-ansi-blue-bright: #6cb6ff;--color-ansi-magenta: #b083f0;--color-ansi-magenta-bright: #dcbdfb;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #adbac7;--color-btn-bg: #373e47;--color-btn-border: rgba(205,217,229,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #444c56;--color-btn-hover-border: #768390;--color-btn-active-bg: hsla(213,12%,27%,1);--color-btn-active-border: #636e7b;--color-btn-selected-bg: #2d333b;--color-btn-focus-bg: #373e47;--color-btn-focus-border: #768390;--color-btn-focus-shadow: 0 0 0 3px rgba(118,131,144,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(28,33,40,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(49,109,202,0.3);--color-btn-counter-bg: #444c56;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #347d39;--color-btn-primary-border: rgba(205,217,229,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #46954a;--color-btn-primary-hover-border: rgba(205,217,229,0.1);--color-btn-primary-selected-bg: #347d39;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(205,217,229,0.5);--color-btn-primary-disabled-bg: rgba(52,125,57,0.6);--color-btn-primary-disabled-border: rgba(205,217,229,0.1);--color-btn-primary-focus-bg: #347d39;--color-btn-primary-focus-border: rgba(205,217,229,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #cdd9e5;--color-btn-primary-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-text: #539bf5;--color-btn-outline-hover-text: #539bf5;--color-btn-outline-hover-bg: #444c56;--color-btn-outline-hover-border: rgba(205,217,229,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(28,33,40,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(205,217,229,0.03);--color-btn-outline-hover-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-selected-text: #cdd9e5;--color-btn-outline-selected-bg: #1b4b91;--color-btn-outline-selected-border: rgba(205,217,229,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(83,155,245,0.5);--color-btn-outline-disabled-bg: #22272e;--color-btn-outline-disabled-counter-bg: rgba(49,109,202,0.05);--color-btn-outline-focus-border: rgba(205,217,229,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(37,90,178,0.4);--color-btn-outline-counter-bg: rgba(49,109,202,0.1);--color-btn-danger-text: #e5534b;--color-btn-danger-hover-text: #cdd9e5;--color-btn-danger-hover-bg: #c93c37;--color-btn-danger-hover-border: #e5534b;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #cdd9e5;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ad2e2c;--color-btn-danger-selected-border: #f47067;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(229,83,75,0.5);--color-btn-danger-disabled-bg: #22272e;--color-btn-danger-disabled-counter-bg: rgba(201,60,55,0.05);--color-btn-danger-focus-border: #e5534b;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(229,83,75,0.4);--color-btn-danger-counter-bg: rgba(201,60,55,0.1);--color-btn-danger-icon: #e5534b;--color-underlinenav-icon: #545d68;--color-underlinenav-border-hover: rgba(99,110,123,0.4);--color-action-list-item-inline-divider: rgba(68,76,86,0.48);--color-action-list-item-default-hover-bg: rgba(144,157,171,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(144,157,171,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(144,157,171,0.08);--color-action-list-item-danger-hover-bg: rgba(229,83,75,0.16);--color-action-list-item-danger-active-bg: rgba(229,83,75,0.24);--color-action-list-item-danger-hover-text: #f47067;--color-fg-default: #adbac7;--color-fg-muted: #768390;--color-fg-subtle: #545d68;--color-fg-on-emphasis: #cdd9e5;--color-canvas-default: #22272e;--color-canvas-overlay: #2d333b;--color-canvas-inset: #1c2128;--color-canvas-subtle: #2d333b;--color-border-default: #444c56;--color-border-muted: #373e47;--color-border-subtle: rgba(205,217,229,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #1c2128;--color-shadow-large: 0 8px 24px #1c2128;--color-shadow-extra-large: 0 12px 48px #1c2128;--color-neutral-emphasis-plus: #636e7b;--color-neutral-emphasis: #636e7b;--color-neutral-muted: rgba(99,110,123,0.4);--color-neutral-subtle: rgba(99,110,123,0.1);--color-accent-fg: #539bf5;--color-accent-emphasis: #316dca;--color-accent-muted: rgba(65,132,228,0.4);--color-accent-subtle: rgba(65,132,228,0.15);--color-success-fg: #57ab5a;--color-success-emphasis: #347d39;--color-success-muted: rgba(70,149,74,0.4);--color-success-subtle: rgba(70,149,74,0.15);--color-attention-fg: #c69026;--color-attention-emphasis: #966600;--color-attention-muted: rgba(174,124,20,0.4);--color-attention-subtle: rgba(174,124,20,0.15);--color-severe-fg: #cc6b2c;--color-severe-emphasis: #ae5622;--color-severe-muted: rgba(204,107,44,0.4);--color-severe-subtle: rgba(204,107,44,0.15);--color-danger-fg: #e5534b;--color-danger-emphasis: #c93c37;--color-danger-muted: rgba(229,83,75,0.4);--color-danger-subtle: rgba(229,83,75,0.15);--color-done-fg: #986ee2;--color-done-emphasis: #8256d0;--color-done-muted: rgba(152,110,226,0.4);--color-done-subtle: rgba(152,110,226,0.15);--color-sponsors-fg: #c96198;--color-sponsors-emphasis: #ae4c82;--color-sponsors-muted: rgba(201,97,152,0.4);--color-sponsors-subtle: rgba(201,97,152,0.15);--color-primer-fg-disabled: #545d68;--color-primer-canvas-backdrop: rgba(28,33,40,0.8);--color-primer-canvas-sticky: rgba(34,39,46,0.95);--color-primer-border-active: #EC775C;--color-primer-border-contrast: rgba(205,217,229,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #143d79;--color-scale-black: #1c2128;--color-scale-white: #cdd9e5;--color-scale-gray-0: #cdd9e5;--color-scale-gray-1: #adbac7;--color-scale-gray-2: #909dab;--color-scale-gray-3: #768390;--color-scale-gray-4: #636e7b;--color-scale-gray-5: #545d68;--color-scale-gray-6: #444c56;--color-scale-gray-7: #373e47;--color-scale-gray-8: #2d333b;--color-scale-gray-9: #22272e;--color-scale-blue-0: #c6e6ff;--color-scale-blue-1: #96d0ff;--color-scale-blue-2: #6cb6ff;--color-scale-blue-3: #539bf5;--color-scale-blue-4: #4184e4;--color-scale-blue-5: #316dca;--color-scale-blue-6: #255ab2;--color-scale-blue-7: #1b4b91;--color-scale-blue-8: #143d79;--color-scale-blue-9: #0f2d5c;--color-scale-green-0: #b4f1b4;--color-scale-green-1: #8ddb8c;--color-scale-green-2: #6bc46d;--color-scale-green-3: #57ab5a;--color-scale-green-4: #46954a;--color-scale-green-5: #347d39;--color-scale-green-6: #2b6a30;--color-scale-green-7: #245829;--color-scale-green-8: #1b4721;--color-scale-green-9: #113417;--color-scale-yellow-0: #fbe090;--color-scale-yellow-1: #eac55f;--color-scale-yellow-2: #daaa3f;--color-scale-yellow-3: #c69026;--color-scale-yellow-4: #ae7c14;--color-scale-yellow-5: #966600;--color-scale-yellow-6: #805400;--color-scale-yellow-7: #6c4400;--color-scale-yellow-8: #593600;--color-scale-yellow-9: #452700;--color-scale-orange-0: #ffddb0;--color-scale-orange-1: #ffbc6f;--color-scale-orange-2: #f69d50;--color-scale-orange-3: #e0823d;--color-scale-orange-4: #cc6b2c;--color-scale-orange-5: #ae5622;--color-scale-orange-6: #94471b;--color-scale-orange-7: #7f3913;--color-scale-orange-8: #682d0f;--color-scale-orange-9: #4d210c;--color-scale-red-0: #ffd8d3;--color-scale-red-1: #ffb8b0;--color-scale-red-2: #ff938a;--color-scale-red-3: #f47067;--color-scale-red-4: #e5534b;--color-scale-red-5: #c93c37;--color-scale-red-6: #ad2e2c;--color-scale-red-7: #922323;--color-scale-red-8: #78191b;--color-scale-red-9: #5D0F12;--color-scale-purple-0: #eedcff;--color-scale-purple-1: #dcbdfb;--color-scale-purple-2: #dcbdfb;--color-scale-purple-3: #b083f0;--color-scale-purple-4: #986ee2;--color-scale-purple-5: #8256d0;--color-scale-purple-6: #6b44bc;--color-scale-purple-7: #5936a2;--color-scale-purple-8: #472c82;--color-scale-purple-9: #352160;--color-scale-pink-0: #ffd7eb;--color-scale-pink-1: #ffb3d8;--color-scale-pink-2: #fc8dc7;--color-scale-pink-3: #e275ad;--color-scale-pink-4: #c96198;--color-scale-pink-5: #ae4c82;--color-scale-pink-6: #983b6e;--color-scale-pink-7: #7e325a;--color-scale-pink-8: #69264a;--color-scale-pink-9: #551639;--color-scale-coral-0: #FFDACF;--color-scale-coral-1: #FFB9A5;--color-scale-coral-2: #F79981;--color-scale-coral-3: #EC775C;--color-scale-coral-4: #DE5B41;--color-scale-coral-5: #C2442D;--color-scale-coral-6: #A93524;--color-scale-coral-7: #8D291B;--color-scale-coral-8: #771D13;--color-scale-coral-9: #5D1008}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=dark_dimmed]{--color-canvas-default-transparent: rgba(34,39,46,0);--color-page-header-bg: #22272e;--color-marketing-icon-primary: #6cb6ff;--color-marketing-icon-secondary: #316dca;--color-diff-blob-addition-num-text: #adbac7;--color-diff-blob-addition-fg: #adbac7;--color-diff-blob-addition-num-bg: rgba(87,171,90,0.3);--color-diff-blob-addition-line-bg: rgba(70,149,74,0.15);--color-diff-blob-addition-word-bg: rgba(70,149,74,0.4);--color-diff-blob-deletion-num-text: #adbac7;--color-diff-blob-deletion-fg: #adbac7;--color-diff-blob-deletion-num-bg: rgba(229,83,75,0.3);--color-diff-blob-deletion-line-bg: rgba(229,83,75,0.15);--color-diff-blob-deletion-word-bg: rgba(229,83,75,0.4);--color-diff-blob-hunk-num-bg: rgba(65,132,228,0.4);--color-diff-blob-expander-icon: #768390;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(205,217,229,0.1);--color-diffstat-addition-border: rgba(205,217,229,0.1);--color-diffstat-addition-bg: #57ab5a;--color-search-keyword-hl: rgba(198,144,38,0.4);--color-prettylights-syntax-comment: #768390;--color-prettylights-syntax-constant: #6cb6ff;--color-prettylights-syntax-entity: #dcbdfb;--color-prettylights-syntax-storage-modifier-import: #adbac7;--color-prettylights-syntax-entity-tag: #8ddb8c;--color-prettylights-syntax-keyword: #f47067;--color-prettylights-syntax-string: #96d0ff;--color-prettylights-syntax-variable: #f69d50;--color-prettylights-syntax-brackethighlighter-unmatched: #e5534b;--color-prettylights-syntax-invalid-illegal-text: #cdd9e5;--color-prettylights-syntax-invalid-illegal-bg: #922323;--color-prettylights-syntax-carriage-return-text: #cdd9e5;--color-prettylights-syntax-carriage-return-bg: #ad2e2c;--color-prettylights-syntax-string-regexp: #8ddb8c;--color-prettylights-syntax-markup-list: #eac55f;--color-prettylights-syntax-markup-heading: #316dca;--color-prettylights-syntax-markup-italic: #adbac7;--color-prettylights-syntax-markup-bold: #adbac7;--color-prettylights-syntax-markup-deleted-text: #ffd8d3;--color-prettylights-syntax-markup-deleted-bg: #78191b;--color-prettylights-syntax-markup-inserted-text: #b4f1b4;--color-prettylights-syntax-markup-inserted-bg: #1b4721;--color-prettylights-syntax-markup-changed-text: #ffddb0;--color-prettylights-syntax-markup-changed-bg: #682d0f;--color-prettylights-syntax-markup-ignored-text: #adbac7;--color-prettylights-syntax-markup-ignored-bg: #255ab2;--color-prettylights-syntax-meta-diff-range: #dcbdfb;--color-prettylights-syntax-brackethighlighter-angle: #768390;--color-prettylights-syntax-sublimelinter-gutter-mark: #545d68;--color-prettylights-syntax-constant-other-reference-link: #96d0ff;--color-codemirror-text: #adbac7;--color-codemirror-bg: #22272e;--color-codemirror-gutters-bg: #22272e;--color-codemirror-guttermarker-text: #22272e;--color-codemirror-guttermarker-subtle-text: #545d68;--color-codemirror-linenumber-text: #768390;--color-codemirror-cursor: #adbac7;--color-codemirror-selection-bg: rgba(65,132,228,0.4);--color-codemirror-activeline-bg: rgba(99,110,123,0.1);--color-codemirror-matchingbracket-text: #adbac7;--color-codemirror-lines-bg: #22272e;--color-codemirror-syntax-comment: #768390;--color-codemirror-syntax-constant: #6cb6ff;--color-codemirror-syntax-entity: #dcbdfb;--color-codemirror-syntax-keyword: #f47067;--color-codemirror-syntax-storage: #f47067;--color-codemirror-syntax-string: #96d0ff;--color-codemirror-syntax-support: #6cb6ff;--color-codemirror-syntax-variable: #f69d50;--color-checks-bg: #1c2128;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #adbac7;--color-checks-text-secondary: #768390;--color-checks-text-link: #539bf5;--color-checks-btn-icon: #768390;--color-checks-btn-hover-icon: #adbac7;--color-checks-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-input-text: #768390;--color-checks-input-placeholder-text: #545d68;--color-checks-input-focus-text: #adbac7;--color-checks-input-bg: #2d333b;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #e5534b;--color-checks-donut-pending: #c69026;--color-checks-donut-success: #46954a;--color-checks-donut-neutral: #768390;--color-checks-dropdown-text: #adbac7;--color-checks-dropdown-bg: #2d333b;--color-checks-dropdown-border: #444c56;--color-checks-dropdown-shadow: rgba(28,33,40,0.3);--color-checks-dropdown-hover-text: #adbac7;--color-checks-dropdown-hover-bg: rgba(99,110,123,0.1);--color-checks-dropdown-btn-hover-text: #adbac7;--color-checks-dropdown-btn-hover-bg: rgba(99,110,123,0.1);--color-checks-scrollbar-thumb-bg: rgba(99,110,123,0.4);--color-checks-header-label-text: #768390;--color-checks-header-label-open-text: #adbac7;--color-checks-header-border: #373e47;--color-checks-header-icon: #768390;--color-checks-line-text: #768390;--color-checks-line-num-text: #545d68;--color-checks-line-timestamp-text: #545d68;--color-checks-line-hover-bg: rgba(99,110,123,0.1);--color-checks-line-selected-bg: rgba(65,132,228,0.15);--color-checks-line-selected-num-text: #539bf5;--color-checks-line-dt-fm-text: #cdd9e5;--color-checks-line-dt-fm-bg: #966600;--color-checks-gate-bg: rgba(174,124,20,0.15);--color-checks-gate-text: #768390;--color-checks-gate-waiting-text: #c69026;--color-checks-step-header-open-bg: #2d333b;--color-checks-step-error-text: #e5534b;--color-checks-step-warning-text: #c69026;--color-checks-logline-text: #768390;--color-checks-logline-num-text: #545d68;--color-checks-logline-debug-text: #986ee2;--color-checks-logline-error-text: #768390;--color-checks-logline-error-num-text: #545d68;--color-checks-logline-error-bg: rgba(229,83,75,0.15);--color-checks-logline-warning-text: #768390;--color-checks-logline-warning-num-text: #c69026;--color-checks-logline-warning-bg: rgba(174,124,20,0.15);--color-checks-logline-command-text: #539bf5;--color-checks-logline-section-text: #57ab5a;--color-checks-ansi-black: #22272e;--color-checks-ansi-black-bright: #2d333b;--color-checks-ansi-white: #909dab;--color-checks-ansi-white-bright: #909dab;--color-checks-ansi-gray: #636e7b;--color-checks-ansi-red: #f47067;--color-checks-ansi-red-bright: #ff938a;--color-checks-ansi-green: #57ab5a;--color-checks-ansi-green-bright: #6bc46d;--color-checks-ansi-yellow: #c69026;--color-checks-ansi-yellow-bright: #daaa3f;--color-checks-ansi-blue: #539bf5;--color-checks-ansi-blue-bright: #6cb6ff;--color-checks-ansi-magenta: #b083f0;--color-checks-ansi-magenta-bright: #dcbdfb;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #22272e;--color-project-sidebar-bg: #2d333b;--color-project-gradient-in: #2d333b;--color-project-gradient-out: rgba(45,51,59,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(205,217,229,0.1);--color-avatar-border: rgba(205,217,229,0.1);--color-avatar-stack-fade: #444c56;--color-avatar-stack-fade-more: #373e47;--color-avatar-child-shadow: -2px -2px 0 #22272e;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #545d68;--color-select-menu-tap-highlight: rgba(68,76,86,0.5);--color-select-menu-tap-focus-bg: #143d79;--color-overlay-shadow: 0 0 0 1px #444c56, 0 16px 32px rgba(28,33,40,0.85);--color-header-text: rgba(205,217,229,0.7);--color-header-bg: #2d333b;--color-header-divider: #768390;--color-header-logo: #cdd9e5;--color-header-search-bg: #22272e;--color-header-search-border: #444c56;--color-sidenav-selected-bg: #373e47;--color-menu-bg-active: #2d333b;--color-input-disabled-bg: rgba(99,110,123,0);--color-timeline-badge-bg: #373e47;--color-ansi-black: #545d68;--color-ansi-black-bright: #636e7b;--color-ansi-white: #909dab;--color-ansi-white-bright: #cdd9e5;--color-ansi-gray: #636e7b;--color-ansi-red: #f47067;--color-ansi-red-bright: #ff938a;--color-ansi-green: #57ab5a;--color-ansi-green-bright: #6bc46d;--color-ansi-yellow: #c69026;--color-ansi-yellow-bright: #daaa3f;--color-ansi-blue: #539bf5;--color-ansi-blue-bright: #6cb6ff;--color-ansi-magenta: #b083f0;--color-ansi-magenta-bright: #dcbdfb;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #adbac7;--color-btn-bg: #373e47;--color-btn-border: rgba(205,217,229,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #444c56;--color-btn-hover-border: #768390;--color-btn-active-bg: hsla(213,12%,27%,1);--color-btn-active-border: #636e7b;--color-btn-selected-bg: #2d333b;--color-btn-focus-bg: #373e47;--color-btn-focus-border: #768390;--color-btn-focus-shadow: 0 0 0 3px rgba(118,131,144,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(28,33,40,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(49,109,202,0.3);--color-btn-counter-bg: #444c56;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #347d39;--color-btn-primary-border: rgba(205,217,229,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #46954a;--color-btn-primary-hover-border: rgba(205,217,229,0.1);--color-btn-primary-selected-bg: #347d39;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(205,217,229,0.5);--color-btn-primary-disabled-bg: rgba(52,125,57,0.6);--color-btn-primary-disabled-border: rgba(205,217,229,0.1);--color-btn-primary-focus-bg: #347d39;--color-btn-primary-focus-border: rgba(205,217,229,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #cdd9e5;--color-btn-primary-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-text: #539bf5;--color-btn-outline-hover-text: #539bf5;--color-btn-outline-hover-bg: #444c56;--color-btn-outline-hover-border: rgba(205,217,229,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(28,33,40,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(205,217,229,0.03);--color-btn-outline-hover-counter-bg: rgba(205,217,229,0.2);--color-btn-outline-selected-text: #cdd9e5;--color-btn-outline-selected-bg: #1b4b91;--color-btn-outline-selected-border: rgba(205,217,229,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(83,155,245,0.5);--color-btn-outline-disabled-bg: #22272e;--color-btn-outline-disabled-counter-bg: rgba(49,109,202,0.05);--color-btn-outline-focus-border: rgba(205,217,229,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(37,90,178,0.4);--color-btn-outline-counter-bg: rgba(49,109,202,0.1);--color-btn-danger-text: #e5534b;--color-btn-danger-hover-text: #cdd9e5;--color-btn-danger-hover-bg: #c93c37;--color-btn-danger-hover-border: #e5534b;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #cdd9e5;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ad2e2c;--color-btn-danger-selected-border: #f47067;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(229,83,75,0.5);--color-btn-danger-disabled-bg: #22272e;--color-btn-danger-disabled-counter-bg: rgba(201,60,55,0.05);--color-btn-danger-focus-border: #e5534b;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(229,83,75,0.4);--color-btn-danger-counter-bg: rgba(201,60,55,0.1);--color-btn-danger-icon: #e5534b;--color-underlinenav-icon: #545d68;--color-underlinenav-border-hover: rgba(99,110,123,0.4);--color-action-list-item-inline-divider: rgba(68,76,86,0.48);--color-action-list-item-default-hover-bg: rgba(144,157,171,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(144,157,171,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(144,157,171,0.08);--color-action-list-item-danger-hover-bg: rgba(229,83,75,0.16);--color-action-list-item-danger-active-bg: rgba(229,83,75,0.24);--color-action-list-item-danger-hover-text: #f47067;--color-fg-default: #adbac7;--color-fg-muted: #768390;--color-fg-subtle: #545d68;--color-fg-on-emphasis: #cdd9e5;--color-canvas-default: #22272e;--color-canvas-overlay: #2d333b;--color-canvas-inset: #1c2128;--color-canvas-subtle: #2d333b;--color-border-default: #444c56;--color-border-muted: #373e47;--color-border-subtle: rgba(205,217,229,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #1c2128;--color-shadow-large: 0 8px 24px #1c2128;--color-shadow-extra-large: 0 12px 48px #1c2128;--color-neutral-emphasis-plus: #636e7b;--color-neutral-emphasis: #636e7b;--color-neutral-muted: rgba(99,110,123,0.4);--color-neutral-subtle: rgba(99,110,123,0.1);--color-accent-fg: #539bf5;--color-accent-emphasis: #316dca;--color-accent-muted: rgba(65,132,228,0.4);--color-accent-subtle: rgba(65,132,228,0.15);--color-success-fg: #57ab5a;--color-success-emphasis: #347d39;--color-success-muted: rgba(70,149,74,0.4);--color-success-subtle: rgba(70,149,74,0.15);--color-attention-fg: #c69026;--color-attention-emphasis: #966600;--color-attention-muted: rgba(174,124,20,0.4);--color-attention-subtle: rgba(174,124,20,0.15);--color-severe-fg: #cc6b2c;--color-severe-emphasis: #ae5622;--color-severe-muted: rgba(204,107,44,0.4);--color-severe-subtle: rgba(204,107,44,0.15);--color-danger-fg: #e5534b;--color-danger-emphasis: #c93c37;--color-danger-muted: rgba(229,83,75,0.4);--color-danger-subtle: rgba(229,83,75,0.15);--color-done-fg: #986ee2;--color-done-emphasis: #8256d0;--color-done-muted: rgba(152,110,226,0.4);--color-done-subtle: rgba(152,110,226,0.15);--color-sponsors-fg: #c96198;--color-sponsors-emphasis: #ae4c82;--color-sponsors-muted: rgba(201,97,152,0.4);--color-sponsors-subtle: rgba(201,97,152,0.15);--color-primer-fg-disabled: #545d68;--color-primer-canvas-backdrop: rgba(28,33,40,0.8);--color-primer-canvas-sticky: rgba(34,39,46,0.95);--color-primer-border-active: #EC775C;--color-primer-border-contrast: rgba(205,217,229,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #143d79;--color-scale-black: #1c2128;--color-scale-white: #cdd9e5;--color-scale-gray-0: #cdd9e5;--color-scale-gray-1: #adbac7;--color-scale-gray-2: #909dab;--color-scale-gray-3: #768390;--color-scale-gray-4: #636e7b;--color-scale-gray-5: #545d68;--color-scale-gray-6: #444c56;--color-scale-gray-7: #373e47;--color-scale-gray-8: #2d333b;--color-scale-gray-9: #22272e;--color-scale-blue-0: #c6e6ff;--color-scale-blue-1: #96d0ff;--color-scale-blue-2: #6cb6ff;--color-scale-blue-3: #539bf5;--color-scale-blue-4: #4184e4;--color-scale-blue-5: #316dca;--color-scale-blue-6: #255ab2;--color-scale-blue-7: #1b4b91;--color-scale-blue-8: #143d79;--color-scale-blue-9: #0f2d5c;--color-scale-green-0: #b4f1b4;--color-scale-green-1: #8ddb8c;--color-scale-green-2: #6bc46d;--color-scale-green-3: #57ab5a;--color-scale-green-4: #46954a;--color-scale-green-5: #347d39;--color-scale-green-6: #2b6a30;--color-scale-green-7: #245829;--color-scale-green-8: #1b4721;--color-scale-green-9: #113417;--color-scale-yellow-0: #fbe090;--color-scale-yellow-1: #eac55f;--color-scale-yellow-2: #daaa3f;--color-scale-yellow-3: #c69026;--color-scale-yellow-4: #ae7c14;--color-scale-yellow-5: #966600;--color-scale-yellow-6: #805400;--color-scale-yellow-7: #6c4400;--color-scale-yellow-8: #593600;--color-scale-yellow-9: #452700;--color-scale-orange-0: #ffddb0;--color-scale-orange-1: #ffbc6f;--color-scale-orange-2: #f69d50;--color-scale-orange-3: #e0823d;--color-scale-orange-4: #cc6b2c;--color-scale-orange-5: #ae5622;--color-scale-orange-6: #94471b;--color-scale-orange-7: #7f3913;--color-scale-orange-8: #682d0f;--color-scale-orange-9: #4d210c;--color-scale-red-0: #ffd8d3;--color-scale-red-1: #ffb8b0;--color-scale-red-2: #ff938a;--color-scale-red-3: #f47067;--color-scale-red-4: #e5534b;--color-scale-red-5: #c93c37;--color-scale-red-6: #ad2e2c;--color-scale-red-7: #922323;--color-scale-red-8: #78191b;--color-scale-red-9: #5D0F12;--color-scale-purple-0: #eedcff;--color-scale-purple-1: #dcbdfb;--color-scale-purple-2: #dcbdfb;--color-scale-purple-3: #b083f0;--color-scale-purple-4: #986ee2;--color-scale-purple-5: #8256d0;--color-scale-purple-6: #6b44bc;--color-scale-purple-7: #5936a2;--color-scale-purple-8: #472c82;--color-scale-purple-9: #352160;--color-scale-pink-0: #ffd7eb;--color-scale-pink-1: #ffb3d8;--color-scale-pink-2: #fc8dc7;--color-scale-pink-3: #e275ad;--color-scale-pink-4: #c96198;--color-scale-pink-5: #ae4c82;--color-scale-pink-6: #983b6e;--color-scale-pink-7: #7e325a;--color-scale-pink-8: #69264a;--color-scale-pink-9: #551639;--color-scale-coral-0: #FFDACF;--color-scale-coral-1: #FFB9A5;--color-scale-coral-2: #F79981;--color-scale-coral-3: #EC775C;--color-scale-coral-4: #DE5B41;--color-scale-coral-5: #C2442D;--color-scale-coral-6: #A93524;--color-scale-coral-7: #8D291B;--color-scale-coral-8: #771D13;--color-scale-coral-9: #5D1008}}
|
|
|
|
/*# sourceMappingURL=dark_dimmed-2154403802cdca5f1e56ab414dc32127b0c7275612d573bc6a07e01f304510a98b0e1329098ef3ff66abd6f81846dc4731d3cccadb8c241097b53ad149887aa2.css.map*/
|
|
[data-color-mode=light][data-light-theme=dark],[data-color-mode=dark][data-dark-theme=dark]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(63,185,80,0.3);--color-diff-blob-addition-line-bg: rgba(46,160,67,0.15);--color-diff-blob-addition-word-bg: rgba(46,160,67,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(248,81,73,0.3);--color-diff-blob-deletion-line-bg: rgba(248,81,73,0.15);--color-diff-blob-deletion-word-bg: rgba(248,81,73,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #3fb950;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #ff7b72;--color-codemirror-syntax-storage: #ff7b72;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #f85149;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #2ea043;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #f85149;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(248,81,73,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #3fb950;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #ff7b72;--color-checks-ansi-red-bright: #ffa198;--color-checks-ansi-green: #3fb950;--color-checks-ansi-green-bright: #56d364;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #ff7b72;--color-ansi-red-bright: #ffa198;--color-ansi-green: #3fb950;--color-ansi-green-bright: #56d364;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #238636;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #2ea043;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #238636;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(35,134,54,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #238636;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #f85149;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #da3633;--color-btn-danger-hover-border: #f85149;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #b62324;--color-btn-danger-selected-border: #ff7b72;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(248,81,73,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(218,54,51,0.05);--color-btn-danger-focus-border: #f85149;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(248,81,73,0.4);--color-btn-danger-counter-bg: rgba(218,54,51,0.1);--color-btn-danger-icon: #f85149;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(248,81,73,0.16);--color-action-list-item-danger-active-bg: rgba(248,81,73,0.24);--color-action-list-item-danger-hover-text: #ff7b72;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #3fb950;--color-success-emphasis: #238636;--color-success-muted: rgba(46,160,67,0.4);--color-success-subtle: rgba(46,160,67,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #f85149;--color-danger-emphasis: #da3633;--color-danger-muted: rgba(248,81,73,0.4);--color-danger-subtle: rgba(248,81,73,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #aff5b4;--color-scale-green-1: #7ee787;--color-scale-green-2: #56d364;--color-scale-green-3: #3fb950;--color-scale-green-4: #2ea043;--color-scale-green-5: #238636;--color-scale-green-6: #196c2e;--color-scale-green-7: #0f5323;--color-scale-green-8: #033a16;--color-scale-green-9: #04260f;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #ffdcd7;--color-scale-red-1: #ffc1ba;--color-scale-red-2: #ffa198;--color-scale-red-3: #ff7b72;--color-scale-red-4: #f85149;--color-scale-red-5: #da3633;--color-scale-red-6: #b62324;--color-scale-red-7: #8e1519;--color-scale-red-8: #67060c;--color-scale-red-9: #490202;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=dark]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(63,185,80,0.3);--color-diff-blob-addition-line-bg: rgba(46,160,67,0.15);--color-diff-blob-addition-word-bg: rgba(46,160,67,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(248,81,73,0.3);--color-diff-blob-deletion-line-bg: rgba(248,81,73,0.15);--color-diff-blob-deletion-word-bg: rgba(248,81,73,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #3fb950;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #ff7b72;--color-codemirror-syntax-storage: #ff7b72;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #f85149;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #2ea043;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #f85149;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(248,81,73,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #3fb950;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #ff7b72;--color-checks-ansi-red-bright: #ffa198;--color-checks-ansi-green: #3fb950;--color-checks-ansi-green-bright: #56d364;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #ff7b72;--color-ansi-red-bright: #ffa198;--color-ansi-green: #3fb950;--color-ansi-green-bright: #56d364;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #238636;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #2ea043;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #238636;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(35,134,54,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #238636;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #f85149;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #da3633;--color-btn-danger-hover-border: #f85149;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #b62324;--color-btn-danger-selected-border: #ff7b72;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(248,81,73,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(218,54,51,0.05);--color-btn-danger-focus-border: #f85149;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(248,81,73,0.4);--color-btn-danger-counter-bg: rgba(218,54,51,0.1);--color-btn-danger-icon: #f85149;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(248,81,73,0.16);--color-action-list-item-danger-active-bg: rgba(248,81,73,0.24);--color-action-list-item-danger-hover-text: #ff7b72;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #3fb950;--color-success-emphasis: #238636;--color-success-muted: rgba(46,160,67,0.4);--color-success-subtle: rgba(46,160,67,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #f85149;--color-danger-emphasis: #da3633;--color-danger-muted: rgba(248,81,73,0.4);--color-danger-subtle: rgba(248,81,73,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #aff5b4;--color-scale-green-1: #7ee787;--color-scale-green-2: #56d364;--color-scale-green-3: #3fb950;--color-scale-green-4: #2ea043;--color-scale-green-5: #238636;--color-scale-green-6: #196c2e;--color-scale-green-7: #0f5323;--color-scale-green-8: #033a16;--color-scale-green-9: #04260f;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #ffdcd7;--color-scale-red-1: #ffc1ba;--color-scale-red-2: #ffa198;--color-scale-red-3: #ff7b72;--color-scale-red-4: #f85149;--color-scale-red-5: #da3633;--color-scale-red-6: #b62324;--color-scale-red-7: #8e1519;--color-scale-red-8: #67060c;--color-scale-red-9: #490202;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=dark]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(63,185,80,0.3);--color-diff-blob-addition-line-bg: rgba(46,160,67,0.15);--color-diff-blob-addition-word-bg: rgba(46,160,67,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(248,81,73,0.3);--color-diff-blob-deletion-line-bg: rgba(248,81,73,0.15);--color-diff-blob-deletion-word-bg: rgba(248,81,73,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #3fb950;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #ff7b72;--color-codemirror-syntax-storage: #ff7b72;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #f85149;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #2ea043;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #f85149;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(248,81,73,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #3fb950;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #ff7b72;--color-checks-ansi-red-bright: #ffa198;--color-checks-ansi-green: #3fb950;--color-checks-ansi-green-bright: #56d364;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #ff7b72;--color-ansi-red-bright: #ffa198;--color-ansi-green: #3fb950;--color-ansi-green-bright: #56d364;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #238636;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #2ea043;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #238636;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(35,134,54,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #238636;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #f85149;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #da3633;--color-btn-danger-hover-border: #f85149;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #b62324;--color-btn-danger-selected-border: #ff7b72;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(248,81,73,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(218,54,51,0.05);--color-btn-danger-focus-border: #f85149;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(248,81,73,0.4);--color-btn-danger-counter-bg: rgba(218,54,51,0.1);--color-btn-danger-icon: #f85149;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(248,81,73,0.16);--color-action-list-item-danger-active-bg: rgba(248,81,73,0.24);--color-action-list-item-danger-hover-text: #ff7b72;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #3fb950;--color-success-emphasis: #238636;--color-success-muted: rgba(46,160,67,0.4);--color-success-subtle: rgba(46,160,67,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #f85149;--color-danger-emphasis: #da3633;--color-danger-muted: rgba(248,81,73,0.4);--color-danger-subtle: rgba(248,81,73,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #aff5b4;--color-scale-green-1: #7ee787;--color-scale-green-2: #56d364;--color-scale-green-3: #3fb950;--color-scale-green-4: #2ea043;--color-scale-green-5: #238636;--color-scale-green-6: #196c2e;--color-scale-green-7: #0f5323;--color-scale-green-8: #033a16;--color-scale-green-9: #04260f;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #ffdcd7;--color-scale-red-1: #ffc1ba;--color-scale-red-2: #ffa198;--color-scale-red-3: #ff7b72;--color-scale-red-4: #f85149;--color-scale-red-5: #da3633;--color-scale-red-6: #b62324;--color-scale-red-7: #8e1519;--color-scale-red-8: #67060c;--color-scale-red-9: #490202;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}}
|
|
|
|
/*# sourceMappingURL=dark-65c1a68653e5c7c951fcdb2d6ccbda9fbfd808a92c375cf3f3c7efd817279d2d394ea22f9abd7fc507486093d51ce54ee5648f6cb0d21f66dd1229b9c9215775.css.map*/
|
|
:root{--border-width: 1px;--border-style: solid;--font-size-small: 12px;--font-weight-semibold: 500;--size-2: 20px}/*!
|
|
* @primer/css/product
|
|
* http://primer.style/css
|
|
*
|
|
* Released under MIT license. Copyright (c) 2019 GitHub Inc.
|
|
*/.flash{position:relative;padding:20px 16px;border-style:solid;border-width:1px;border-radius:6px}.flash p:last-child{margin-bottom:0}.flash .octicon{margin-right:12px}.flash-messages{margin-bottom:24px}.flash-close{float:right;padding:16px;margin:-16px;text-align:center;cursor:pointer;background:none;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.flash-close:hover{opacity:.7}.flash-close:active{opacity:.5}.flash-close .octicon{margin-right:0}.flash-action{float:right;margin-top:-3px;margin-left:24px;background-clip:padding-box}.flash-action.btn .octicon{margin-right:4px;color:var(--color-fg-muted)}.flash-action.btn-primary .octicon{color:inherit}.flash{color:var(--color-fg-default);background-image:linear-gradient(var(--color-accent-subtle), var(--color-accent-subtle));border-color:var(--color-accent-muted)}.flash .octicon{color:var(--color-accent-fg)}.flash-warn{color:var(--color-fg-default);background-image:linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));border-color:var(--color-attention-muted)}.flash-warn .octicon{color:var(--color-attention-fg)}.flash-error{color:var(--color-fg-default);background-image:linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));border-color:var(--color-danger-muted)}.flash-error .octicon{color:var(--color-danger-fg)}.flash-success{color:var(--color-fg-default);background-image:linear-gradient(var(--color-success-subtle), var(--color-success-subtle));border-color:var(--color-success-muted)}.flash-success .octicon{color:var(--color-success-fg)}.flash-full{margin-top:-1px;border-width:1px 0;border-radius:0}.flash-banner{position:fixed;top:0;z-index:90;width:100%;border-top:0;border-right:0;border-left:0;border-radius:0}.flash-full,.flash-banner{background-color:var(--color-canvas-default)}.warning{padding:.5em;margin-bottom:.8em;font-weight:600;background-color:var(--color-attention-subtle)}.autocomplete-results{position:absolute;z-index:99;width:100%;max-height:20em;overflow-y:auto;font-size:13px;list-style:none;background:var(--color-canvas-overlay);border:1px solid var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-medium)}.autocomplete-item{display:block;width:100%;padding:4px 8px;overflow:hidden;font-weight:600;color:var(--color-fg-default);text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background-color:var(--color-canvas-overlay);border:0}.autocomplete-item:hover{color:var(--color-fg-on-emphasis);text-decoration:none;background-color:var(--color-accent-emphasis)}.autocomplete-item:hover *{color:inherit !important}.autocomplete-item.selected,.autocomplete-item[aria-selected=true],.autocomplete-item.navigation-focus{color:var(--color-fg-on-emphasis);text-decoration:none;background-color:var(--color-accent-emphasis)}.autocomplete-item.selected *,.autocomplete-item[aria-selected=true] *,.autocomplete-item.navigation-focus *{color:inherit !important}.suggester{position:relative;top:0;left:0;min-width:180px;padding:0;margin:0;margin-top:24px;list-style:none;cursor:pointer;background:var(--color-canvas-overlay);border:1px solid var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-medium)}.suggester li{display:block;padding:4px 8px;font-weight:500;border-bottom:1px solid var(--color-border-muted)}.suggester li small{font-weight:400;color:var(--color-fg-muted)}.suggester li:last-child{border-bottom:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.suggester li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.suggester li:hover{color:var(--color-fg-on-emphasis);text-decoration:none;background:var(--color-accent-emphasis)}.suggester li:hover small{color:var(--color-fg-on-emphasis)}.suggester li:hover .octicon{color:inherit !important}.suggester li[aria-selected=true],.suggester li.navigation-focus{color:var(--color-fg-on-emphasis);text-decoration:none;background:var(--color-accent-emphasis)}.suggester li[aria-selected=true] small,.suggester li.navigation-focus small{color:var(--color-fg-on-emphasis)}.suggester li[aria-selected=true] .octicon,.suggester li.navigation-focus .octicon{color:inherit !important}.suggester-container{position:absolute;top:0;left:0;z-index:30}@media(max-width: 544px){.page-responsive .suggester-container{right:8px !important;left:8px !important}.page-responsive .suggester li{padding:8px 16px}}.avatar{display:inline-block;overflow:hidden;line-height:1;vertical-align:middle;background-color:var(--color-avatar-bg);border-radius:6px;flex-shrink:0;box-shadow:0 0 0 1px var(--color-avatar-border)}.avatar-link{float:left;line-height:1}.avatar-group-item{display:inline-block;margin-bottom:3px}.avatar-1,.avatar-2,.avatar-small{border-radius:4px}.avatar-1{width:16px;height:16px}.avatar-2{width:20px;height:20px}.avatar-3{width:24px;height:24px}.avatar-4{width:28px;height:28px}.avatar-5{width:32px;height:32px}.avatar-6{width:40px;height:40px}.avatar-7{width:48px;height:48px}.avatar-8{width:64px;height:64px}.avatar-parent-child{position:relative}.avatar-child{position:absolute;right:-15%;bottom:-9%;background-color:var(--color-canvas-default);border-radius:4px;box-shadow:var(--color-avatar-child-shadow)}.AvatarStack{position:relative;min-width:26px;height:20px}.AvatarStack .AvatarStack-body{position:absolute}.AvatarStack.AvatarStack--two{min-width:36px}.AvatarStack.AvatarStack--three-plus{min-width:46px}.AvatarStack-body{display:flex;background:var(--color-canvas-default)}.AvatarStack-body .avatar{position:relative;z-index:2;display:flex;width:20px;height:20px;box-sizing:content-box;margin-right:-11px;background-color:var(--color-canvas-default);border-right:1px solid var(--color-canvas-default);border-radius:4px;box-shadow:none;transition:margin .1s ease-in-out}.AvatarStack-body .avatar:first-child{z-index:3}.AvatarStack-body .avatar:last-child{z-index:1;border-right:0}.AvatarStack-body .avatar img{border-radius:4px}.AvatarStack-body .avatar:nth-child(n+4){display:none;opacity:0}.AvatarStack-body:hover .avatar{margin-right:3px}.AvatarStack-body:hover .avatar:nth-child(n+4){display:flex;opacity:1}.AvatarStack-body:hover .avatar-more{display:none !important}.avatar.avatar-more{z-index:1;margin-right:0;background:var(--color-canvas-subtle)}.avatar.avatar-more::before,.avatar.avatar-more::after{position:absolute;display:block;height:20px;content:"";border-radius:2px;outline:1px solid var(--color-canvas-default)}.avatar.avatar-more::before{width:17px;background:var(--color-avatar-stack-fade-more)}.avatar.avatar-more::after{width:14px;background:var(--color-avatar-stack-fade)}.AvatarStack--right .AvatarStack-body{right:0;flex-direction:row-reverse}.AvatarStack--right .AvatarStack-body:hover .avatar{margin-right:0;margin-left:3px}.AvatarStack--right .avatar.avatar-more{background:var(--color-avatar-stack-fade)}.AvatarStack--right .avatar.avatar-more::before{width:5px}.AvatarStack--right .avatar.avatar-more::after{width:2px;background:var(--color-canvas-subtle)}.AvatarStack--right .avatar{margin-right:0;margin-left:-11px;border-right:0;border-left:1px solid var(--color-canvas-default)}.CircleBadge{display:flex;align-items:center;justify-content:center;background-color:var(--color-canvas-default);border-radius:50%;box-shadow:var(--color-shadow-medium)}.CircleBadge-icon{max-width:60% !important;height:auto !important;max-height:55% !important}.CircleBadge--small{width:56px;height:56px}.CircleBadge--medium{width:96px;height:96px}.CircleBadge--large{width:128px;height:128px}.DashedConnection{position:relative}.DashedConnection::before{position:absolute;top:50%;left:0;width:100%;content:"";border-bottom:2px dashed var(--color-border-default)}.DashedConnection .CircleBadge{position:relative}.blankslate{position:relative;padding:32px;text-align:center}.blankslate p{color:var(--color-fg-muted)}.blankslate code{padding:2px 5px 3px;font-size:14px;background:var(--color-canvas-default);border:1px solid var(--color-border-muted);border-radius:6px}.blankslate img{width:56px;height:56px}.blankslate-icon{margin-right:4px;margin-bottom:8px;margin-left:4px;color:var(--color-fg-muted)}.blankslate-image{margin-bottom:16px}.blankslate-heading{margin-bottom:4px}.blankslate-action{margin-top:16px}.blankslate-action:first-of-type{margin-top:24px}.blankslate-action:last-of-type{margin-bottom:8px}.blankslate-capped{border-radius:0 0 6px 6px}.blankslate-spacious{padding:80px 40px}.blankslate-narrow{max-width:485px;margin:0 auto}.blankslate-large img{width:80px;height:80px}.blankslate-large h3{margin:16px 0;font-size:24px}.blankslate-large p{font-size:16px}.blankslate-clean-background{border:0}.branch-name{display:inline-block;padding:2px 6px;font:12px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--color-fg-muted);background-color:var(--color-accent-subtle);border-radius:6px}.branch-name .octicon{margin:1px -2px 0 0;color:var(--color-fg-muted)}a.branch-name{color:var(--color-accent-fg);background-color:var(--color-accent-subtle)}a.branch-name .octicon{color:var(--color-accent-fg)}.dropdown{position:relative}.dropdown-caret{display:inline-block;width:0;height:0;vertical-align:middle;content:"";border-style:solid;border-width:4px 4px 0;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.dropdown-menu{position:absolute;top:100%;left:0;z-index:100;width:160px;padding-top:4px;padding-bottom:4px;margin-top:2px;list-style:none;background-color:var(--color-canvas-overlay);background-clip:padding-box;border:1px solid var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-large)}.dropdown-menu::before,.dropdown-menu::after{position:absolute;display:inline-block;content:""}.dropdown-menu::before{border:8px solid transparent;border-bottom-color:var(--color-border-default)}.dropdown-menu::after{border:7px solid transparent;border-bottom-color:var(--color-canvas-overlay)}.dropdown-menu>ul{list-style:none}.dropdown-menu-no-overflow{width:auto}.dropdown-menu-no-overflow .dropdown-item{padding:4px 16px;overflow:visible;text-overflow:inherit}.dropdown-item{display:block;padding:4px 8px 4px 16px;overflow:hidden;color:var(--color-fg-default);text-overflow:ellipsis;white-space:nowrap}.dropdown-item:focus,.dropdown-item:hover{color:var(--color-fg-on-emphasis);text-decoration:none;background-color:var(--color-accent-emphasis);outline:none}.dropdown-item:focus>.octicon,.dropdown-item:hover>.octicon{color:inherit;opacity:1}.dropdown-item:focus [class*=color-text-],.dropdown-item:hover [class*=color-text-]{color:inherit !important}.dropdown-item:focus>.Label,.dropdown-item:hover>.Label{color:inherit !important;border-color:currentColor}.dropdown-item.btn-link{width:100%;text-align:left}.dropdown-signout{width:100%;text-align:left;background:none;border:0}.dropdown-divider{display:block;height:0;margin:8px 0;border-top:1px solid var(--color-border-default)}.dropdown-header{padding:4px 16px;font-size:12px;color:var(--color-fg-muted)}.dropdown-item[aria-checked=false] .octicon-check{display:none}.dropdown-menu-w{top:0;right:100%;left:auto;width:auto;margin-top:0;margin-right:8px}.dropdown-menu-w::before{top:10px;right:-16px;left:auto;border-color:transparent;border-left-color:var(--color-border-default)}.dropdown-menu-w::after{top:11px;right:-14px;left:auto;border-color:transparent;border-left-color:var(--color-canvas-overlay)}.dropdown-menu-e{top:0;left:100%;width:auto;margin-top:0;margin-left:8px}.dropdown-menu-e::before{top:10px;left:-16px;border-color:transparent;border-right-color:var(--color-border-default)}.dropdown-menu-e::after{top:11px;left:-14px;border-color:transparent;border-right-color:var(--color-canvas-overlay)}.dropdown-menu-ne{top:auto;bottom:100%;left:0;margin-bottom:3px}.dropdown-menu-ne::before,.dropdown-menu-ne::after{top:auto;right:auto}.dropdown-menu-ne::before{bottom:-8px;left:9px;border-top:8px solid var(--color-border-default);border-right:8px solid transparent;border-bottom:0;border-left:8px solid transparent}.dropdown-menu-ne::after{bottom:-7px;left:10px;border-top:7px solid var(--color-canvas-overlay);border-right:7px solid transparent;border-bottom:0;border-left:7px solid transparent}.dropdown-menu-s{right:50%;left:auto;transform:translateX(50%)}.dropdown-menu-s::before{top:-16px;right:50%;transform:translateX(50%)}.dropdown-menu-s::after{top:-14px;right:50%;transform:translateX(50%)}.dropdown-menu-sw{right:0;left:auto}.dropdown-menu-sw::before{top:-16px;right:9px;left:auto}.dropdown-menu-sw::after{top:-14px;right:10px;left:auto}.dropdown-menu-se::before{top:-16px;left:9px}.dropdown-menu-se::after{top:-14px;left:10px}.Header{z-index:32;display:flex;padding:16px;font-size:14px;line-height:1.5;color:var(--color-header-text);background-color:var(--color-header-bg);align-items:center;flex-wrap:nowrap}.Header-item{display:flex;margin-right:16px;align-self:stretch;align-items:center;flex-wrap:nowrap}.Header-item--full{flex:auto}.Header-link{font-weight:600;color:var(--color-header-logo);white-space:nowrap}.Header-link:hover,.Header-link:focus{color:var(--color-header-text);text-decoration:none}.Header-input{color:var(--color-header-text);background-color:var(--color-header-search-bg);border:1px solid var(--color-header-search-border);box-shadow:none}.Header-input::placeholder{color:rgba(255,255,255,.75)}.IssueLabel{display:inline-block;padding:0 7px;font-size:12px;font-weight:500;line-height:18px;border:1px solid transparent;border-radius:2em}.IssueLabel .g-emoji{position:relative;top:-0.05em;display:inline-block;font-size:1em;line-height:1}.IssueLabel:hover{text-decoration:none}.IssueLabel--big{padding-right:10px;padding-left:10px;line-height:22px}.labels{position:relative}.label,.Label{display:inline-block;padding:0 7px;font-size:12px;font-weight:500;line-height:18px;border:1px solid transparent;border-radius:2em;border-color:var(--color-border-default)}.label:hover,.Label:hover{text-decoration:none}.Label--large{padding-right:10px;padding-left:10px;line-height:22px}.Label--inline{display:inline;padding:.12em .5em;font-size:85%}.Label--primary{color:var(--color-fg-default);border-color:var(--color-neutral-emphasis)}.Label--secondary{color:var(--color-fg-muted);border-color:var(--color-border-default)}.Label--info,.Label--accent{color:var(--color-accent-fg);border-color:var(--color-accent-emphasis)}.Label--success{color:var(--color-success-fg);border-color:var(--color-success-emphasis)}.Label--warning,.Label--attention{color:var(--color-attention-fg);border-color:var(--color-attention-emphasis)}.Label--severe{color:var(--color-severe-fg);border-color:var(--color-severe-emphasis)}.Label--danger{color:var(--color-danger-fg);border-color:var(--color-danger-emphasis)}.Label--done{color:var(--color-done-fg);border-color:var(--color-done-emphasis)}.Label--sponsors{color:var(--color-sponsors-fg);border-color:var(--color-sponsors-emphasis)}.state,.State{display:inline-block;padding:5px 12px;font-size:14px;font-weight:500;line-height:20px;text-align:center;white-space:nowrap;border-radius:2em}.state,.State,.State--draft{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis);border:1px solid transparent}.State--open{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis)}.State--merged{color:var(--color-fg-on-emphasis);background-color:var(--color-done-emphasis)}.State--closed{color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis)}.State--small{padding:0 10px;font-size:12px;line-height:24px}.State--small .octicon{width:1em}.Counter{display:inline-block;min-width:20px;padding:0 6px;font-size:12px;font-weight:500;line-height:18px;color:var(--color-fg-default);text-align:center;background-color:var(--color-neutral-muted);border:1px solid var(--color-counter-border);border-radius:2em}.Counter:empty{display:none}.Counter .octicon{vertical-align:text-top;opacity:.8}.Counter--primary{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis)}.Counter--secondary{color:var(--color-fg-muted);background-color:var(--color-neutral-subtle)}.diffstat{font-size:12px;font-weight:600;color:var(--color-fg-muted);white-space:nowrap;cursor:default}.diffstat-block-deleted,.diffstat-block-added,.diffstat-block-neutral{display:inline-block;width:8px;height:8px;margin-left:1px;outline-offset:-1px}.diffstat-block-deleted{background-color:var(--color-danger-emphasis);outline:1px solid var(--color-border-subtle)}.diffstat-block-added{background-color:var(--color-diffstat-addition-bg);outline:1px solid var(--color-border-subtle)}.diffstat-block-neutral{background-color:var(--color-neutral-muted);outline:1px solid var(--color-border-subtle)}.AnimatedEllipsis{display:inline-block;overflow:hidden;vertical-align:bottom}.AnimatedEllipsis::after{display:inline-block;content:"...";animation:AnimatedEllipsis-keyframes 1.2s steps(4, jump-none) infinite}@keyframes AnimatedEllipsis-keyframes{0%{transform:translateX(-100%)}}.markdown-body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:var(--color-border-default);border:0}.markdown-body blockquote{padding:0 1em;color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default)}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{padding:0 .2em;font-size:inherit}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid var(--color-border-muted)}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid var(--color-border-muted)}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:var(--color-fg-muted)}.markdown-body ul,.markdown-body ol{padding-left:2em}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type="1"]{list-style-type:decimal}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;width:max-content;max-width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid var(--color-border-default)}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:var(--color-canvas-default)}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid var(--color-border-default)}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:var(--color-fg-default)}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:.2em .4em;margin:0;font-size:85%;background-color:var(--color-neutral-muted);border-radius:6px}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre{word-wrap:normal}.markdown-body pre code{font-size:100%}.markdown-body pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:var(--color-canvas-subtle);border-radius:6px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:var(--color-canvas-default);border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:600;background:var(--color-canvas-subtle);border-top:0}.markdown-body [data-footnote-ref]::before{content:"["}.markdown-body [data-footnote-ref]::after{content:"]"}.markdown-body .footnotes{font-size:12px;color:var(--color-fg-muted);border-top:1px solid var(--color-border-default)}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target::before{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-24px;pointer-events:none;content:"";border:2px solid var(--color-accent-emphasis);border-radius:6px}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.Popover{position:absolute;z-index:100}.Popover-message{position:relative;width:232px;margin-right:auto;margin-left:auto;background-color:var(--color-canvas-overlay);border:1px solid var(--color-border-default);border-radius:6px}.Popover-message::before,.Popover-message::after{position:absolute;left:50%;display:inline-block;content:""}.Popover-message::before{top:-16px;margin-left:-9px;border:8px solid transparent;border-bottom-color:var(--color-border-default)}.Popover-message::after{top:-14px;margin-left:-8px;border:7px solid transparent;border-bottom-color:var(--color-canvas-overlay)}.Popover-message--no-caret::before,.Popover-message--no-caret::after{display:none}.Popover-message--bottom::before,.Popover-message--bottom::after,.Popover-message--bottom-right::before,.Popover-message--bottom-right::after,.Popover-message--bottom-left::before,.Popover-message--bottom-left::after{top:auto;border-bottom-color:transparent}.Popover-message--bottom::before,.Popover-message--bottom-right::before,.Popover-message--bottom-left::before{bottom:-16px;border-top-color:var(--color-border-default)}.Popover-message--bottom::after,.Popover-message--bottom-right::after,.Popover-message--bottom-left::after{bottom:-14px;border-top-color:var(--color-canvas-overlay)}.Popover-message--top-right,.Popover-message--bottom-right{right:-9px;margin-right:0}.Popover-message--top-right::before,.Popover-message--top-right::after,.Popover-message--bottom-right::before,.Popover-message--bottom-right::after{left:auto;margin-left:0}.Popover-message--top-right::before,.Popover-message--bottom-right::before{right:20px}.Popover-message--top-right::after,.Popover-message--bottom-right::after{right:21px}.Popover-message--top-left,.Popover-message--bottom-left{left:-9px;margin-left:0}.Popover-message--top-left::before,.Popover-message--top-left::after,.Popover-message--bottom-left::before,.Popover-message--bottom-left::after{left:24px;margin-left:0}.Popover-message--top-left::after,.Popover-message--bottom-left::after{left:25px}.Popover-message--right::before,.Popover-message--right::after,.Popover-message--right-top::before,.Popover-message--right-top::after,.Popover-message--right-bottom::before,.Popover-message--right-bottom::after,.Popover-message--left::before,.Popover-message--left::after,.Popover-message--left-top::before,.Popover-message--left-top::after,.Popover-message--left-bottom::before,.Popover-message--left-bottom::after{top:50%;left:auto;margin-left:0;border-bottom-color:transparent}.Popover-message--right::before,.Popover-message--right-top::before,.Popover-message--right-bottom::before,.Popover-message--left::before,.Popover-message--left-top::before,.Popover-message--left-bottom::before{margin-top:-9px}.Popover-message--right::after,.Popover-message--right-top::after,.Popover-message--right-bottom::after,.Popover-message--left::after,.Popover-message--left-top::after,.Popover-message--left-bottom::after{margin-top:-8px}.Popover-message--right::before,.Popover-message--right-top::before,.Popover-message--right-bottom::before{right:-16px;border-left-color:var(--color-border-default)}.Popover-message--right::after,.Popover-message--right-top::after,.Popover-message--right-bottom::after{right:-14px;border-left-color:var(--color-canvas-overlay)}.Popover-message--left::before,.Popover-message--left-top::before,.Popover-message--left-bottom::before{left:-16px;border-right-color:var(--color-border-default)}.Popover-message--left::after,.Popover-message--left-top::after,.Popover-message--left-bottom::after{left:-14px;border-right-color:var(--color-canvas-overlay)}.Popover-message--right-top::before,.Popover-message--right-top::after,.Popover-message--left-top::before,.Popover-message--left-top::after{top:24px}.Popover-message--right-bottom::before,.Popover-message--right-bottom::after,.Popover-message--left-bottom::before,.Popover-message--left-bottom::after{top:auto}.Popover-message--right-bottom::before,.Popover-message--left-bottom::before{bottom:16px}.Popover-message--right-bottom::after,.Popover-message--left-bottom::after{bottom:17px}@media(min-width: 544px){.Popover-message--large{min-width:320px}}@media(max-width: 767.98px){.Popover{position:fixed;top:auto !important;right:0 !important;bottom:0 !important;left:0 !important}.Popover-message{top:auto;right:auto;bottom:auto;left:auto;width:auto !important;margin:8px}.Popover-message>.btn-octicon{padding:12px !important}.Popover-message::after,.Popover-message::before{display:none}}.Progress{display:flex;height:8px;overflow:hidden;background-color:var(--color-neutral-muted);border-radius:6px;outline:1px solid transparent}.Progress--large{height:10px}.Progress--small{height:5px}.Progress-item{outline:2px solid transparent}.Progress-item+.Progress-item{margin-left:2px}.SelectMenu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99;display:flex;padding:16px;pointer-events:none;flex-direction:column}@media(min-width: 544px){.SelectMenu{position:absolute;top:auto;right:auto;bottom:auto;left:auto;padding:0}}.SelectMenu::before{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;content:"";background-color:var(--color-primer-canvas-backdrop)}@media(min-width: 544px){.SelectMenu::before{display:none}}.SelectMenu-modal{position:relative;z-index:99;display:flex;max-height:66%;margin:auto 0;overflow:hidden;pointer-events:auto;flex-direction:column;background-color:var(--color-canvas-overlay);border:1px solid var(--color-select-menu-backdrop-border);border-radius:12px;box-shadow:var(--color-shadow-large);animation:SelectMenu-modal-animation .12s cubic-bezier(0, 0.1, 0.1, 1) backwards}@keyframes SelectMenu-modal-animation{0%{opacity:0;transform:scale(0.9)}}@keyframes SelectMenu-modal-animation--sm{0%{opacity:0;transform:translateY(-16px)}}@media(min-width: 544px){.SelectMenu-modal{width:300px;height:auto;max-height:480px;margin:8px 0 16px 0;font-size:12px;border-color:var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-large);animation-name:SelectMenu-modal-animation--sm}}.SelectMenu-header{display:flex;padding:16px;flex:none;align-items:center;border-bottom:1px solid var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-header{padding:7px 7px 7px 16px}}.SelectMenu-title{flex:1;font-size:14px;font-weight:600}@media(min-width: 544px){.SelectMenu-title{font-size:inherit}}.SelectMenu-closeButton{padding:16px;margin:-16px;line-height:1;color:var(--color-fg-muted);background-color:transparent;border:0}@media(min-width: 544px){.SelectMenu-closeButton{padding:8px;margin:-8px -7px}}.SelectMenu-filter{padding:16px;margin:0;border-bottom:1px solid var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-filter{padding:8px}}.SelectMenu-input{display:block;width:100%}@media(min-width: 544px){.SelectMenu-input{font-size:14px}}.SelectMenu-list{position:relative;padding:0;margin:0;margin-bottom:-1px;flex:auto;overflow-x:hidden;overflow-y:auto;background-color:var(--color-canvas-overlay);-webkit-overflow-scrolling:touch}.SelectMenu-item{display:flex;align-items:center;width:100%;padding:16px;overflow:hidden;color:var(--color-fg-default);text-align:left;cursor:pointer;background-color:var(--color-canvas-overlay);border:0;border-bottom:1px solid var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-item{padding-top:7px;padding-bottom:7px}}.SelectMenu-list--borderless .SelectMenu-item{border-bottom:0}.SelectMenu-icon{width:16px;margin-right:8px;flex-shrink:0}.SelectMenu-icon--check{visibility:hidden;transition:transform .12s cubic-bezier(0.5, 0.1, 1, 0.5),visibility 0s .12s linear;transform:scale(0)}.SelectMenu-tabs{display:flex;flex-shrink:0;overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px 0 var(--color-border-muted);-webkit-overflow-scrolling:touch}.SelectMenu-tabs::-webkit-scrollbar{display:none}@media(min-width: 544px){.SelectMenu-tabs{padding:8px 8px 0 8px}}.SelectMenu-tab{flex:1;padding:8px 16px;font-size:12px;font-weight:500;color:var(--color-fg-muted);text-align:center;background-color:transparent;border:0;box-shadow:inset 0 -1px 0 var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-tab{flex:none;padding:4px 16px;border:1px solid transparent;border-bottom-width:0;border-top-left-radius:6px;border-top-right-radius:6px}}.SelectMenu-tab[aria-selected=true]{z-index:1;color:var(--color-fg-default);cursor:default;background-color:var(--color-canvas-overlay);box-shadow:0 0 0 1px var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-tab[aria-selected=true]{border-color:var(--color-border-muted);box-shadow:none}}.SelectMenu-message{padding:7px 16px;text-align:center;background-color:var(--color-canvas-overlay);border-bottom:1px solid var(--color-border-muted)}.SelectMenu-blankslate,.SelectMenu-loading{padding:24px 16px;text-align:center;background-color:var(--color-canvas-overlay)}.SelectMenu-divider{padding:4px 16px;margin:0;font-size:12px;font-weight:500;color:var(--color-fg-muted);background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.SelectMenu-list--borderless .SelectMenu-divider{border-top:1px solid var(--color-border-muted)}.SelectMenu-list--borderless .SelectMenu-divider:empty{padding:0;border-top:0}.SelectMenu-footer{z-index:0;padding:8px 16px;font-size:12px;color:var(--color-fg-muted);text-align:center;border-top:1px solid var(--color-border-muted)}@media(min-width: 544px){.SelectMenu-footer{padding:7px 16px}}.SelectMenu--hasFilter .SelectMenu-modal{height:80%;max-height:none;margin-top:0}@media(min-width: 544px){.SelectMenu--hasFilter .SelectMenu-modal{height:auto;max-height:480px;margin-top:8px}}.SelectMenu-closeButton:focus,.SelectMenu-tab:focus,.SelectMenu-item:focus{outline:0}.SelectMenu-item:hover{text-decoration:none}.SelectMenu-item[aria-checked=true]{font-weight:500;color:var(--color-fg-default)}.SelectMenu-item[aria-checked=true] .SelectMenu-icon--check{visibility:visible;transition:transform .12s cubic-bezier(0, 0, 0.2, 1),visibility 0s linear;transform:scale(1)}.SelectMenu-item:disabled,.SelectMenu-item[aria-disabled=true]{color:var(--color-primer-fg-disabled);pointer-events:none}@media(hover: hover){body:not(.intent-mouse) .SelectMenu-closeButton:focus,.SelectMenu-closeButton:hover{color:var(--color-fg-default)}.SelectMenu-closeButton:active{color:var(--color-fg-muted)}body:not(.intent-mouse) .SelectMenu-item:focus,.SelectMenu-item:hover{background-color:var(--color-neutral-subtle)}.SelectMenu-item:active{background-color:var(--color-canvas-subtle)}body:not(.intent-mouse) .SelectMenu-tab:focus{background-color:var(--color-select-menu-tap-focus-bg)}.SelectMenu-tab:hover{color:var(--color-fg-default)}.SelectMenu-tab:not([aria-selected=true]):active{color:var(--color-fg-default);background-color:var(--color-canvas-subtle)}}@media(hover: none){.SelectMenu-item:focus,.SelectMenu-item:active{background-color:var(--color-canvas-subtle)}.SelectMenu-item{-webkit-tap-highlight-color:var(--color-select-menu-tap-highlight)}}.Subhead{display:flex;padding-bottom:8px;margin-bottom:16px;border-bottom:1px solid var(--color-border-muted);flex-flow:row wrap;justify-content:flex-end}.Subhead--spacious{margin-top:40px}.Subhead-heading{font-size:24px;font-weight:400;flex:1 1 auto}.Subhead-heading--danger{font-weight:600;color:var(--color-danger-fg)}.Subhead-description{font-size:14px;color:var(--color-fg-muted);flex:1 100%}.Subhead-actions{margin:4px 0 4px 4px;align-self:center;justify-content:flex-end}.Subhead-actions+.Subhead-description{margin-top:4px}.TimelineItem{position:relative;display:flex;padding:16px 0;margin-left:16px}.TimelineItem::before{position:absolute;top:0;bottom:0;left:0;display:block;width:2px;content:"";background-color:var(--color-border-muted)}.TimelineItem:target .TimelineItem-badge{border-color:var(--color-accent-emphasis);box-shadow:0 0 .2em var(--color-accent-muted)}.TimelineItem-badge{position:relative;z-index:1;display:flex;width:32px;height:32px;margin-right:8px;margin-left:-15px;color:var(--color-fg-muted);align-items:center;background-color:var(--color-timeline-badge-bg);border:2px solid var(--color-canvas-default);border-radius:50%;justify-content:center;flex-shrink:0}.TimelineItem-badge--success{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis);border:1px solid transparent}.TimelineItem-body{min-width:0;max-width:100%;margin-top:4px;color:var(--color-fg-muted);flex:auto}.TimelineItem-avatar{position:absolute;left:-72px;z-index:1}.TimelineItem-break{position:relative;z-index:1;height:24px;margin:0;margin-bottom:-16px;margin-left:-56px;background-color:var(--color-canvas-default);border:0;border-top:4px solid var(--color-border-default)}.TimelineItem--condensed{padding-top:4px;padding-bottom:0}.TimelineItem--condensed:last-child{padding-bottom:16px}.TimelineItem--condensed .TimelineItem-badge{height:16px;margin-top:8px;margin-bottom:8px;color:var(--color-fg-muted);background-color:var(--color-canvas-default);border:0}.Toast{display:flex;margin:8px;color:var(--color-fg-default);background-color:var(--color-canvas-default);border-radius:6px;box-shadow:inset 0 0 0 1px var(--color-border-default),var(--color-shadow-large)}@media(min-width: 544px){.Toast{width:max-content;max-width:450px;margin:16px}}.Toast-icon{display:flex;align-items:center;justify-content:center;width:48px;flex-shrink:0;color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis);border:1px solid transparent;border-right:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.Toast-content{padding:16px}.Toast-dismissButton{max-height:54px;padding:16px;color:inherit;background-color:transparent;border:0}.Toast-dismissButton:focus,.Toast-dismissButton:hover{outline:none;opacity:.7}.Toast-dismissButton:active{opacity:.5}.Toast--loading{color:var(--color-fg-default);box-shadow:inset 0 0 0 1px var(--color-border-default),var(--color-shadow-large)}.Toast--loading .Toast-icon{background-color:var(--color-neutral-emphasis)}.Toast--error{color:var(--color-fg-default);box-shadow:inset 0 0 0 1px var(--color-border-default),var(--color-shadow-large)}.Toast--error .Toast-icon{background-color:var(--color-danger-emphasis)}.Toast--warning{color:var(--color-fg-default);box-shadow:inset 0 0 0 1px var(--color-border-default),var(--color-shadow-large)}.Toast--warning .Toast-icon{background-color:var(--color-attention-emphasis)}.Toast--success{color:var(--color-fg-default);box-shadow:inset 0 0 0 1px var(--color-border-default),var(--color-shadow-large)}.Toast--success .Toast-icon{background-color:var(--color-success-emphasis)}.Toast--animateIn{animation:Toast--animateIn .18s cubic-bezier(0.22, 0.61, 0.36, 1) backwards}@keyframes Toast--animateIn{0%{opacity:0;transform:translateY(100%)}}.Toast--animateOut{animation:Toast--animateOut .18s cubic-bezier(0.55, 0.06, 0.68, 0.19) forwards}@keyframes Toast--animateOut{100%{pointer-events:none;opacity:0;transform:translateY(100%)}}.Toast--spinner{animation:Toast--spinner 1000ms linear infinite}@keyframes Toast--spinner{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.boxed-group{position:relative;margin-bottom:30px;border-radius:6px}.boxed-group .Counter{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis)}.boxed-group.flush .boxed-group-inner{padding:0}.boxed-group.condensed .boxed-group-inner{padding:0;font-size:12px}.boxed-group>h3,.boxed-group .heading{display:block;padding:9px 10px 10px;margin:0;font-size:14px;line-height:17px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-bottom:0;border-radius:6px 6px 0 0}.boxed-group>h3 a,.boxed-group .heading a{color:inherit}.boxed-group>h3 a.boxed-group-breadcrumb,.boxed-group .heading a.boxed-group-breadcrumb{font-weight:400;color:var(--color-fg-muted);text-decoration:none}.boxed-group>h3 .avatar,.boxed-group .heading .avatar{margin-top:-4px}.boxed-group .tabnav.heading{padding:0}.boxed-group .tabnav.heading .tabnav-tab.selected{border-top:0}.boxed-group .tabnav.heading li:first-child .selected{border-left-color:var(--color-canvas-default);border-top-left-radius:6px}.boxed-group .tabnav-tab{border-top:0;border-radius:0}.boxed-group code.heading{font-size:12px}.boxed-group.dangerzone>h3{color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis);border:1px solid var(--color-danger-emphasis)}.boxed-group.dangerzone .boxed-group-inner{border-top:0}.boxed-group.condensed>h3{padding:6px 6px 7px;font-size:12px}.boxed-group.condensed>h3 .octicon{padding:0 6px 0 2px}.dashboard-sidebar .boxed-group{margin-bottom:20px}.boxed-group .bleed-flush{width:100%;padding:0 10px;margin-left:-10px}.boxed-group .compact{margin-top:10px;margin-bottom:10px}.boxed-group-inner{padding:10px;color:var(--color-fg-muted);background:var(--color-canvas-default);border:1px solid var(--color-border-default);border-bottom-right-radius:6px;border-bottom-left-radius:6px}.boxed-group-inner .markdown-body{padding:20px 10px 10px;font-size:13px}.boxed-group-inner.markdown-body{padding-top:10px;padding-bottom:10px}.boxed-group-inner.seamless{padding:0}.boxed-group-inner .tabnav{padding-right:10px;padding-left:10px;margin-right:-10px;margin-left:-10px}.boxed-group-inner .tabnav-tab.selected{border-top:1px solid var(--color-border-default)}.boxed-action{float:right;margin-left:10px}.boxed-group-action{position:relative;z-index:2;float:right;margin:5px 10px 0 0}.boxed-group-action.flush{margin-top:0;margin-right:0}.field-with-errors{display:inline}.boxed-group-list{margin:0;list-style:none}.boxed-group-list:first-child>li:first-child{border-top:0}.boxed-group-list>li{display:block;padding:5px 10px;margin-right:-10px;margin-left:-10px;line-height:23px;border-bottom:1px solid var(--color-border-default)}.boxed-group-list>li:first-child{border-top:1px solid var(--color-border-default)}.boxed-group-list>li:last-of-type{border-bottom:0}.boxed-group-list>li.selected{background:var(--color-success-subtle)}.boxed-group-list>li.approved .btn-sm,.boxed-group-list>li.rejected .btn-sm{display:none}.boxed-group-list>li.rejected a{text-decoration:line-through}.boxed-group-list>li .avatar{margin-top:-2px;margin-right:4px}.boxed-group-list>li .octicon{width:24px;margin-right:4px}.boxed-group-list>li .btn-sm{float:right;margin:-1px 0 0 10px}.boxed-group-list>li .BtnGroup{float:right}.boxed-group-list>li .BtnGroup .btn-sm{float:left}.boxed-group.flush .boxed-group-list li{width:auto;padding-right:0;padding-left:0;margin-left:0}.boxed-group-list.standalone{margin-top:-1px}.boxed-group-list.standalone>li:first-child{border-top:0}.boxed-group-table{width:100%;text-align:left}.boxed-group-table tr:last-child td{border-bottom:0}.boxed-group-table th{padding:9px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.boxed-group-table td{padding:9px;vertical-align:top;border-bottom:1px solid var(--color-border-muted)}.ajax-error-message{position:fixed;top:0;left:50%;z-index:9999;width:974px;margin:0 3px;margin-left:-487px;transition:top .5s ease-in-out}.ajax-error-message>.octicon-alert{vertical-align:text-top}.container{width:980px;margin-right:auto;margin-left:auto}.container::before{display:table;content:""}.container::after{display:table;clear:both;content:""}.draft.octicon{color:var(--color-fg-muted)}.closed.octicon,.reverted.octicon{color:var(--color-danger-fg)}.open.octicon{color:var(--color-success-fg)}.closed.octicon.octicon-issue-closed,.merged.octicon{color:var(--color-done-fg)}.progress-bar{display:block;height:15px;overflow:hidden;background-color:var(--color-border-muted);border-radius:6px}.progress-bar .progress{display:block;height:100%;background-color:var(--color-success-emphasis)}.reverse-progress-container{position:relative;height:3px;background-color:var(--color-border-muted);background-image:linear-gradient(to right, var(--color-success-emphasis), var(--color-accent-emphasis), var(--color-done-emphasis), var(--color-danger-emphasis), var(--color-severe-emphasis));background-size:100% 3px}.reverse-progress-bar{position:absolute;right:0;height:100%;background-color:var(--color-border-muted)}.progress-bar-small{height:10px}.select-menu-button::after{display:inline-block;width:0;height:0;vertical-align:-2px;content:"";border:4px solid;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.select-menu-button.icon-only{padding-left:7px}.select-menu-button.primary::after{border-top-color:var(--color-fg-on-emphasis)}.select-menu-button.primary::after:active{background-color:var(--color-success-emphasis)}.select-menu-button-large::after{margin-left:.25em;border-width:.33em}.select-menu .spinner{float:left;margin:4px 0 0 -24px}.select-menu.active .select-menu-modal-holder{display:block}.select-menu.select-menu-modal-right{position:relative}.select-menu.select-menu-modal-right .select-menu-modal-holder{right:0}.select-menu .select-menu-clear-item{display:block}.select-menu .select-menu-clear-item .octicon{color:inherit}.select-menu .select-menu-clear-item+.select-menu-no-results{display:none !important}.select-menu.is-loading .select-menu-loading-overlay{display:block}.select-menu.is-loading .select-menu-modal{min-height:200px}.select-menu.has-error .select-menu-error{display:block}.select-menu-error{display:none}.select-menu-loading-overlay{position:absolute;top:0;z-index:5;display:none;width:100%;height:100%;background-color:var(--color-canvas-overlay);border:1px solid transparent;border-radius:5px}.select-menu-modal-holder{position:absolute;z-index:30;display:none}.select-menu-modal{position:relative;width:300px;margin-top:4px;margin-bottom:20px;overflow:hidden;font-size:12px;color:var(--color-fg-default);background-color:var(--color-canvas-overlay);background-clip:padding-box;border:1px solid var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-large)}.select-menu-modal-narrow{width:200px}.select-menu-header,.select-menu-divider{padding:8px 10px;line-height:16px;background:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.select-menu-header .select-menu-title,.select-menu-divider{font-weight:600;color:var(--color-fg-default)}.select-menu-divider{margin-top:-1px;border-top:1px solid var(--color-border-muted)}.select-menu-header .close-button,.select-menu-header .octicon{display:block;float:right;color:var(--color-fg-muted);cursor:pointer}.select-menu-header .close-button:hover,.select-menu-header .octicon:hover{color:var(--color-fg-default)}.select-menu-header:focus{outline:none}.select-menu-filters{background-color:var(--color-canvas-overlay)}.select-menu-text-filter{padding:10px 10px 0}.select-menu-text-filter:first-child:last-child{padding-bottom:10px;border-bottom:1px solid var(--color-border-muted)}.select-menu-text-filter input{display:block;width:100%;max-width:100%;padding:5px;border:1px solid var(--color-border-muted);border-radius:6px}.select-menu-text-filter input::placeholder{color:var(--color-fg-subtle)}.select-menu-tabs{padding:10px 10px 0;border-bottom:1px solid var(--color-border-muted)}.select-menu-tabs ul{position:relative;bottom:-1px}.select-menu-tabs .select-menu-tab{display:inline-block}.select-menu-tabs a,.select-menu-tabs .select-menu-tab-nav{display:inline-block;padding:4px 8px 2px;font-size:11px;font-weight:600;color:var(--color-fg-muted);text-decoration:none;cursor:pointer;background:transparent;border:1px solid transparent;border-radius:6px 6px 0 0}.select-menu-tabs a:hover,.select-menu-tabs .select-menu-tab-nav:hover{color:var(--color-fg-default)}.select-menu-tabs a[aria-selected=true],.select-menu-tabs a.selected,.select-menu-tabs .select-menu-tab-nav[aria-selected=true],.select-menu-tabs .select-menu-tab-nav.selected{color:var(--color-fg-default);background-color:var(--color-canvas-overlay);border-color:var(--color-border-muted);border-bottom-color:var(--color-canvas-overlay)}.select-menu-list{position:relative;max-height:400px;overflow:auto}.select-menu-list.is-showing-new-item-form .select-menu-new-item-form{display:block}.select-menu-list.is-showing-new-item-form .select-menu-no-results,.select-menu-list.is-showing-new-item-form .select-menu-clear-item{display:none}.select-menu-blankslate{padding:16px;text-align:center}.select-menu-blankslate svg{display:block;margin-right:auto;margin-bottom:9px;margin-left:auto;fill:var(--color-fg-muted)}.select-menu-blankslate h3{font-size:14px;color:var(--color-fg-default)}.select-menu-blankslate p{width:195px;margin-right:auto;margin-bottom:0;margin-left:auto}.select-menu-item{display:block;padding:8px 8px 8px 30px;overflow:hidden;color:inherit;cursor:pointer;border-bottom:1px solid var(--color-border-muted)}.select-menu-item .select-menu-item-text .octicon-x{display:none;float:right;margin:1px 10px 0 0;opacity:.6}.select-menu-item:hover{text-decoration:none}.select-menu-item.disabled,.select-menu-item[disabled],.select-menu-item[aria-disabled=true],.select-menu-item.disabled.selected{color:var(--color-fg-muted);cursor:default}.select-menu-item.disabled .description,.select-menu-item[disabled] .description,.select-menu-item[aria-disabled=true] .description,.select-menu-item.disabled.selected .description{color:var(--color-fg-muted)}.select-menu-item.disabled.opaque,.select-menu-item[disabled].opaque,.select-menu-item[aria-disabled=true].opaque,.select-menu-item.disabled.selected.opaque{opacity:.7}.select-menu-item.disabled .select-menu-item-gravatar,.select-menu-item[disabled] .select-menu-item-gravatar,.select-menu-item[aria-disabled=true] .select-menu-item-gravatar,.select-menu-item.disabled.selected .select-menu-item-gravatar{opacity:.5}.select-menu-item .octicon{vertical-align:middle}.select-menu-item .octicon-check,.select-menu-item .octicon-circle-slash,.select-menu-item input[type=radio]:not(:checked)+.octicon-check,.select-menu-item input[type=radio]:not(:checked)+.octicon-circle-slash{visibility:hidden}.select-menu-item.selected .octicon-circle-slash.select-menu-item-icon{color:var(--color-fg-muted) !important}.select-menu-item .octicon-circle-slash{color:var(--color-fg-muted)}.select-menu-item.excluded{background-color:var(--color-canvas-subtle)}.select-menu-item input[type=radio]{display:none}.select-menu-item:focus{outline:none}.select-menu-item:focus .octicon,.select-menu-item:hover .octicon{color:inherit !important}.select-menu-item:hover,.select-menu-item:hover.selected,.select-menu-item:hover.select-menu-action,.select-menu-item:hover .description-inline,.select-menu-item:focus,.select-menu-item:focus.selected,.select-menu-item:focus.select-menu-action,.select-menu-item:focus .description-inline,.select-menu-item.navigation-focus,.select-menu-item.navigation-focus.selected,.select-menu-item.navigation-focus.select-menu-action,.select-menu-item.navigation-focus .description-inline,.select-menu-item.navigation-focus[aria-checked=true],.select-menu-item[aria-checked=true]:focus,.select-menu-item[aria-checked=true]:hover,.select-menu-item[aria-selected=true]:hover,.select-menu-item[aria-selected=true]:focus,.select-menu-item[aria-selected=true].select-menu-action,.select-menu-item[aria-selected=true] .description-inline{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.select-menu-item:hover>.octicon,.select-menu-item:hover.selected>.octicon,.select-menu-item:hover.select-menu-action>.octicon,.select-menu-item:hover .description-inline>.octicon,.select-menu-item:focus>.octicon,.select-menu-item:focus.selected>.octicon,.select-menu-item:focus.select-menu-action>.octicon,.select-menu-item:focus .description-inline>.octicon,.select-menu-item.navigation-focus>.octicon,.select-menu-item.navigation-focus.selected>.octicon,.select-menu-item.navigation-focus.select-menu-action>.octicon,.select-menu-item.navigation-focus .description-inline>.octicon,.select-menu-item.navigation-focus[aria-checked=true]>.octicon,.select-menu-item[aria-checked=true]:focus>.octicon,.select-menu-item[aria-checked=true]:hover>.octicon,.select-menu-item[aria-selected=true]:hover>.octicon,.select-menu-item[aria-selected=true]:focus>.octicon,.select-menu-item[aria-selected=true].select-menu-action>.octicon,.select-menu-item[aria-selected=true] .description-inline>.octicon{color:var(--color-fg-on-emphasis)}.select-menu-item:hover .description,.select-menu-item:hover .description-warning,.select-menu-item:hover .select-menu-item-heading-warning,.select-menu-item:hover.selected .description,.select-menu-item:hover.selected .description-warning,.select-menu-item:hover.selected .select-menu-item-heading-warning,.select-menu-item:hover.select-menu-action .description,.select-menu-item:hover.select-menu-action .description-warning,.select-menu-item:hover.select-menu-action .select-menu-item-heading-warning,.select-menu-item:hover .description-inline .description,.select-menu-item:hover .description-inline .description-warning,.select-menu-item:hover .description-inline .select-menu-item-heading-warning,.select-menu-item:focus .description,.select-menu-item:focus .description-warning,.select-menu-item:focus .select-menu-item-heading-warning,.select-menu-item:focus.selected .description,.select-menu-item:focus.selected .description-warning,.select-menu-item:focus.selected .select-menu-item-heading-warning,.select-menu-item:focus.select-menu-action .description,.select-menu-item:focus.select-menu-action .description-warning,.select-menu-item:focus.select-menu-action .select-menu-item-heading-warning,.select-menu-item:focus .description-inline .description,.select-menu-item:focus .description-inline .description-warning,.select-menu-item:focus .description-inline .select-menu-item-heading-warning,.select-menu-item.navigation-focus .description,.select-menu-item.navigation-focus .description-warning,.select-menu-item.navigation-focus .select-menu-item-heading-warning,.select-menu-item.navigation-focus.selected .description,.select-menu-item.navigation-focus.selected .description-warning,.select-menu-item.navigation-focus.selected .select-menu-item-heading-warning,.select-menu-item.navigation-focus.select-menu-action .description,.select-menu-item.navigation-focus.select-menu-action .description-warning,.select-menu-item.navigation-focus.select-menu-action .select-menu-item-heading-warning,.select-menu-item.navigation-focus .description-inline .description,.select-menu-item.navigation-focus .description-inline .description-warning,.select-menu-item.navigation-focus .description-inline .select-menu-item-heading-warning,.select-menu-item.navigation-focus[aria-checked=true] .description,.select-menu-item.navigation-focus[aria-checked=true] .description-warning,.select-menu-item.navigation-focus[aria-checked=true] .select-menu-item-heading-warning,.select-menu-item[aria-checked=true]:focus .description,.select-menu-item[aria-checked=true]:focus .description-warning,.select-menu-item[aria-checked=true]:focus .select-menu-item-heading-warning,.select-menu-item[aria-checked=true]:hover .description,.select-menu-item[aria-checked=true]:hover .description-warning,.select-menu-item[aria-checked=true]:hover .select-menu-item-heading-warning,.select-menu-item[aria-selected=true]:hover .description,.select-menu-item[aria-selected=true]:hover .description-warning,.select-menu-item[aria-selected=true]:hover .select-menu-item-heading-warning,.select-menu-item[aria-selected=true]:focus .description,.select-menu-item[aria-selected=true]:focus .description-warning,.select-menu-item[aria-selected=true]:focus .select-menu-item-heading-warning,.select-menu-item[aria-selected=true].select-menu-action .description,.select-menu-item[aria-selected=true].select-menu-action .description-warning,.select-menu-item[aria-selected=true].select-menu-action .select-menu-item-heading-warning,.select-menu-item[aria-selected=true] .description-inline .description,.select-menu-item[aria-selected=true] .description-inline .description-warning,.select-menu-item[aria-selected=true] .description-inline .select-menu-item-heading-warning{color:var(--color-fg-on-emphasis)}.select-menu-item:hover.disabled,.select-menu-item[disabled]:hover,.select-menu-item[aria-disabled=true]:hover,.select-menu-item[aria-selected=true].disabled,.select-menu-item.navigation-focus.disabled{color:var(--color-fg-muted)}.select-menu-item:hover.disabled .description,.select-menu-item[disabled]:hover .description,.select-menu-item[aria-disabled=true]:hover .description,.select-menu-item[aria-selected=true].disabled .description,.select-menu-item.navigation-focus.disabled .description{color:var(--color-fg-muted)}.select-menu-item>.octicon-dash{display:none}.select-menu-item[aria-checked=mixed]>.octicon-check{display:none}.select-menu-item[aria-checked=mixed]>.octicon-dash{display:block}.select-menu-item input:checked+.octicon-check{color:inherit;visibility:visible}details-menu .select-menu-item[aria-checked=true],details-menu .select-menu-item[aria-selected=true],.select-menu-item.selected{color:var(--color-fg-default)}details-menu .select-menu-item[aria-checked=true] .description,details-menu .select-menu-item[aria-selected=true] .description,.select-menu-item.selected .description{color:var(--color-fg-muted)}details-menu .select-menu-item[aria-checked=true]>.octicon,details-menu .select-menu-item[aria-selected=true]>.octicon,.select-menu-item.selected>.octicon{color:var(--color-fg-default)}details-menu .select-menu-item[aria-checked=true] .octicon-check,details-menu .select-menu-item[aria-checked=true] .octicon-circle-slash,details-menu .select-menu-item[aria-selected=true] .octicon-check,details-menu .select-menu-item[aria-selected=true] .octicon-circle-slash,.select-menu-item.selected .octicon-check,.select-menu-item.selected .octicon-circle-slash{color:inherit;visibility:visible}details-menu .select-menu-item[aria-checked=true] .select-menu-item-text .octicon-x,details-menu .select-menu-item[aria-selected=true] .select-menu-item-text .octicon-x,.select-menu-item.selected .select-menu-item-text .octicon-x{display:block;color:inherit}.select-menu.label-select-menu .select-menu-item:active{background-color:transparent !important}.select-menu-item:hover .Label,.select-menu-item:focus .Label{color:inherit;border-color:currentColor}.select-menu-item a{color:inherit;text-decoration:none}.select-menu-item .hidden-select-button-text{display:none}.select-menu-item .css-truncate-target{max-width:100%}.select-menu-item-icon{float:left;margin-left:-20px}form.select-menu-item>div:first-child{display:none !important}.select-menu-list:last-child .select-menu-item:last-child,.select-menu-item.last-visible{border-bottom:0;border-radius:0 0 6px 6px}.select-menu-action{font-weight:400;color:var(--color-fg-default)}.select-menu-action>.octicon{color:inherit}.select-menu-action:hover{color:var(--color-accent-fg)}.select-menu-no-results{display:none;padding:9px;color:var(--color-fg-muted);cursor:auto}.select-menu-list.filterable-empty .select-menu-no-results,.select-menu-no-results:only-child{display:block}.select-menu-button-gravatar,.select-menu-item-gravatar{width:20px;overflow:hidden;line-height:0}.select-menu-button-gravatar img,.select-menu-item-gravatar img{display:inline-block;width:20px;height:20px;border-radius:6px}.select-menu-item-gravatar{float:left;width:20px;height:20px;margin-right:8px;border-radius:6px}.select-menu-button-gravatar{float:left;margin-right:5px}.select-menu-item-text{display:block;text-align:left}.select-menu-item-text .description{display:block;max-width:265px;font-size:12px;color:var(--color-fg-muted)}.select-menu-item-text .description-inline{font-size:10px;color:var(--color-fg-muted)}.select-menu-item-text .description-warning{color:var(--color-danger-fg)}.select-menu-item-text mark{font-weight:600;color:inherit;background-color:inherit}.select-menu-item-heading{display:block;margin-top:0;margin-bottom:0;font-size:14px;font-weight:600}.select-menu-item-heading.select-menu-item-heading-warning{color:var(--color-danger-fg)}.select-menu-item-heading .description{display:inline;font-weight:400}.select-menu-new-item-form{display:none}.select-menu-new-item-form .octicon{color:var(--color-accent-fg)}.table-list{display:table;width:100%;color:var(--color-fg-muted);table-layout:fixed;border-bottom:1px solid var(--color-border-default)}.table-list ol{list-style-type:decimal}.table-list-bordered{border-bottom-color:var(--color-border-default)}.table-list-bordered .table-list-cell:first-child{border-left:1px solid var(--color-border-default)}.table-list-bordered .table-list-cell:last-child{border-right:1px solid var(--color-border-default)}.table-list-item{position:relative;display:table-row;list-style:none}.table-list-item.unread .table-list-cell:first-child{box-shadow:2px 0 0 var(--color-accent-emphasis) inset}.table-list-cell{position:relative;display:table-cell;padding:8px 10px;font-size:12px;vertical-align:top;border-top:1px solid var(--color-border-default)}.table-list-cell.flush-left{padding-left:0}.table-list-cell.flush-right{padding-right:0}.table-list-cell-checkbox{width:30px;padding-right:0;padding-left:0;text-align:center}.table-list-header{position:relative;margin-top:20px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px 6px 0 0}.table-list-header::before{display:table;content:""}.table-list-header::after{display:table;clear:both;content:""}.table-list-header .btn-link{position:relative;display:inline-block;padding-top:13px;padding-bottom:13px;font-weight:400}.table-list-heading{margin-left:10px}.table-list-header-select-all{float:left;width:30px;padding:12px 10px;margin-right:5px;margin-left:-1px;text-align:center}.table-list-header-meta{display:inline-block;padding-top:13px;padding-bottom:13px;color:var(--color-fg-muted)}.table-list-header-toggle h4{padding:12px 0}.table-list-filters:first-child .table-list-header-toggle:first-child{padding-left:16px}.table-list-header-toggle.states .selected{font-weight:600}.table-list-header-toggle .btn-link{color:var(--color-fg-muted)}.table-list-header-toggle .btn-link .octicon{margin-right:4px}.table-list-header-toggle .btn-link:hover{color:var(--color-fg-default);text-decoration:none}.table-list-header-toggle .btn-link.selected,.table-list-header-toggle .btn-link.selected:hover{color:var(--color-fg-default)}.table-list-header-toggle .btn-link+.btn-link{margin-left:10px}.table-list-header-toggle .btn-link:disabled,.table-list-header-toggle .btn-link.disabled{pointer-events:none;opacity:.5}.table-list-header-toggle .select-menu{position:relative}.table-list-header-toggle .select-menu-item[aria-checked=true],.table-list-header-toggle .select-menu-item.selected{font-weight:600}.table-list-header-toggle .select-menu-button{padding-right:15px;padding-left:15px}.table-list-header-toggle .select-menu-button:hover,.table-list-header-toggle .select-menu-button.selected,.table-list-header-toggle .select-menu-button.selected:hover{color:var(--color-fg-default)}.table-list-header-toggle .select-menu-modal-holder{right:10px}.table-list-header-toggle .select-menu-modal-holder .select-menu-modal{margin-top:-1px}.table-list-header-next{margin-top:20px;margin-bottom:-1px}.table-list-header-next .table-list-header-select-all{padding-left:14px}.table-list-header-next .select-all-dropdown{padding-top:10px;padding-bottom:10px}.bulk-actions-header{position:sticky;top:0;z-index:32;height:50px}.table-list-triage{display:none}.triage-mode .table-list-filters{display:none !important}.triage-mode .table-list-triage{display:block}.breadcrumb{font-size:16px;color:var(--color-fg-muted)}.breadcrumb .separator{white-space:pre-wrap}.breadcrumb .separator::before,.breadcrumb .separator::after{content:" "}.breadcrumb strong.final-path{color:var(--color-fg-default)}.capped-cards{list-style:none}.capped-card-content{display:block;background:var(--color-canvas-subtle)}.capped-card-content::before{display:table;content:""}.capped-card-content::after{display:table;clear:both;content:""}.details-collapse .collapse{position:relative;display:none;height:0;overflow:hidden;transition:height .35s ease-in-out}.details-collapse.open .collapse{display:block;height:auto;overflow:visible}.collapsible-sidebar-widget-button{display:flex;padding:0;align-items:center;background-color:transparent;border:0;justify-content:space-between}.collapsible-sidebar-widget-indicator{transition:transform .25s;transform:translate(0, 0) translate3d(0, 0, 0)}.collapsible-sidebar-widget-loader{display:none;visibility:hidden;opacity:0;transition:opacity .25s;animation-play-state:paused}.collapsible-sidebar-widget-content{width:100%;max-height:0;overflow:hidden;opacity:0;transition:max-height .25s ease-in-out,opacity .25s ease-in-out}.collapsible-sidebar-widget-loading .collapsible-sidebar-widget-indicator{display:none}.collapsible-sidebar-widget-loading .collapsible-sidebar-widget-loader{display:block;visibility:visible;opacity:1;animation-play-state:running}.collapsible-sidebar-widget-active .collapsible-sidebar-widget-content{max-height:100%;overflow:visible;opacity:1}.collapsible-sidebar-widget-active .collapsible-sidebar-widget-indicator{display:block;transform:rotate(180deg)}.collapsible-sidebar-widget-active .collapsible-sidebar-widget-loader{display:none;visibility:hidden;opacity:0}.collapsible-sidebar-widget-active .collapsible-sidebar-widget-active-hidden{display:none;opacity:0}.comment .email-format{line-height:1.5}.previewable-edit .previewable-comment-form{display:none}.previewable-edit .previewable-comment-form::before{display:table;content:""}.previewable-edit .previewable-comment-form::after{display:table;clear:both;content:""}.previewable-edit .previewable-comment-form .tabnav-tabs{display:inline-block}.previewable-edit .previewable-comment-form .form-actions{float:right;margin-right:8px;margin-bottom:8px}.previewable-edit.is-comment-editing .timeline-comment-header{display:none !important}.is-comment-editing .previewable-comment-form{display:block}.is-comment-editing .timeline-comment-actions,.is-comment-editing .edit-comment-hide{display:none}.is-comment-loading .previewable-comment-form{opacity:.5}.comment-show-stale{display:none}.is-comment-stale .comment-show-stale{display:block}.comment-body{width:100%;padding:16px;overflow:visible;font-size:14px}.comment-body .highlight{overflow:visible !important;background-color:transparent}.comment-form-textarea{width:100%;max-width:100%;height:100px;min-height:100px;margin:0;line-height:1.6}.comment-form-textarea.dragover{border:solid 1px var(--color-accent-emphasis)}.hide-reaction-suggestion:hover::before,.hide-reaction-suggestion:hover::after,.hide-reaction-suggestion:active::before,.hide-reaction-suggestion:active::after{display:none}.reaction-suggestion[data-reaction-suggestion-message]:hover::before,.reaction-suggestion[data-reaction-suggestion-message]:hover::after{display:inline-block}.reaction-suggestion[data-reaction-suggestion-message]::before,.reaction-suggestion[data-reaction-suggestion-message]::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;animation-delay:0s}.reaction-suggestion[data-reaction-suggestion-message]::after{content:attr(data-reaction-suggestion-message)}.discussion-topic-header{position:relative;padding:8px;word-wrap:break-word}.comment-form-error{padding:16px 8px;margin:8px;color:var(--color-fg-default);background-color:var(--color-danger-subtle);border:1px solid var(--color-danger-emphasis);border-radius:6px}.email-format{line-height:1.5em !important}.email-format div{white-space:pre-wrap}.email-format .email-hidden-reply{display:none;white-space:pre-wrap}.email-format .email-hidden-reply.expanded{display:block}.email-format .email-quoted-reply,.email-format .email-signature-reply{padding:0 16px;margin:16px 0;color:var(--color-fg-muted);border-left:4px solid var(--color-border-default)}.email-format .email-hidden-toggle a{display:inline-block;height:12px;padding:0 8px;font-size:12px;font-weight:600;line-height:6px;color:var(--color-fg-default);text-decoration:none;vertical-align:middle;background:var(--color-neutral-muted);border-radius:1px}.email-format .email-hidden-toggle a:hover{background-color:var(--color-accent-muted)}.email-format .email-hidden-toggle a:active{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.comment-email-format div{white-space:normal}.comment-email-format .email-hidden-reply{display:none;white-space:normal}.comment-email-format .email-hidden-reply.expanded{display:block}.comment-email-format blockquote,.comment-email-format p{margin:0}.locked-conversation .write-tab,.locked-conversation .preview-tab{color:#c6cbd1}.write-tab:focus,.preview-tab:focus{outline:1px dotted var(--color-accent-emphasis)}.manual-file-chooser-transparent{min-height:0;overflow:hidden;opacity:.01}.manual-file-chooser-transparent::-webkit-file-upload-button{cursor:pointer}.manual-file-chooser-transparent:focus{opacity:1 !important}.markdown-body .highlight:hover .zeroclipboard-container,.markdown-body .snippet-clipboard-content:hover .zeroclipboard-container{display:block;animation:fade-in 200ms both}.markdown-body .highlight .zeroclipboard-container,.markdown-body .snippet-clipboard-content .zeroclipboard-container{display:none;animation:fade-out 200ms both}.rich-diff clipboard-copy{display:none}.commit-form{position:relative;padding:16px;border:1px solid var(--color-border-default);border-radius:6px}.commit-form::after,.commit-form::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.commit-form::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.commit-form::before{background-color:var(--color-border-default)}.commit-form .input-block{margin-top:8px;margin-bottom:8px}.commit-form-avatar{float:left;margin-left:-64px;border-radius:6px}.commit-form-actions::before{display:table;content:""}.commit-form-actions::after{display:table;clear:both;content:""}.commit-form-actions .BtnGroup{margin-right:4px}.merge-commit-message{resize:vertical}.commit-sha{padding:.2em .4em;font-size:90%;font-weight:400;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-muted);border-radius:.2em}.commit .commit-title,.commit .commit-title a{color:var(--color-fg-default)}.commit .commit-title.blank,.commit .commit-title.blank a{color:var(--color-fg-muted)}.commit .commit-title .issue-link{font-weight:600;color:var(--color-accent-fg)}.commit .sha-block,.commit .sha{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.commit.open .commit-desc{display:block}.commit-link{font-weight:400;color:var(--color-accent-fg)}.commit-ref{position:relative;display:inline-block;padding:0 4px;font:.85em/1.8 ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--color-fg-muted);white-space:nowrap;background-color:var(--color-accent-subtle);border-radius:6px}.commit-ref .user{color:var(--color-accent-fg)}a.commit-ref:hover{color:var(--color-accent-fg);text-decoration:none;background-color:var(--color-accent-subtle)}.commit-desc{display:none}.commit-desc pre{max-width:700px;margin-top:8px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:11px;line-height:1.45;color:var(--color-fg-default);white-space:pre-wrap}.commit-desc+.commit-branches{padding-top:8px;margin-top:2px;border-top:solid 1px var(--color-border-subtle)}.commit-author-section{color:var(--color-fg-default)}.commit-author-section span.user-mention{font-weight:400}.commit-tease-sha{display:inline-block;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:90%;color:var(--color-fg-default)}.commits-list-item[aria-selected=true],.commits-list-item.navigation-focus{background:#f6fbff}.commits-list-item .commit-title{margin:0;font-size:15px;font-weight:600;color:var(--color-fg-default)}.commits-list-item .commit-meta{margin-top:1px;font-weight:400;color:var(--color-fg-muted)}.commits-list-item .status .octicon{height:14px;line-height:14px}.commits-list-item .commit-author{color:var(--color-fg-muted)}.commits-list-item .octicon-arrow-right{margin:0 4px}.commits-list-item .btn-outline{margin-top:2px}.commits-list-item .commit-desc pre{margin-top:4px;margin-bottom:8px;color:var(--color-fg-muted)}.commits-list-item .commit-desc pre a{word-break:break-word}.commit-indicator{margin-left:4px}.commit-links-group{margin-right:4px}.commits-list-item+.commits-list-item{border-top:1px solid var(--color-border-default)}.full-commit{padding:8px 8px 0;margin:8px 0;font-size:14px;background:var(--color-neutral-subtle);border:1px solid var(--color-border-default);border-radius:6px}.full-commit:first-child{margin-top:0}.full-commit div.commit-title{font-size:18px;font-weight:600;color:var(--color-fg-default)}.full-commit .branches-list{display:inline;margin-right:8px;margin-left:2px;vertical-align:middle;list-style:none}.full-commit .branches-list li{display:inline-block;padding-left:4px;font-weight:600;color:var(--color-fg-default)}.full-commit .branches-list li::before{padding-right:4px;font-weight:400;content:"+"}.full-commit .branches-list li:first-child{padding-left:0}.full-commit .branches-list li:first-child::before{padding-right:0;content:""}.full-commit .branches-list li.loading{font-weight:400;color:var(--color-fg-muted)}.full-commit .branches-list li.pull-request{font-weight:400;color:var(--color-fg-muted)}.full-commit .branches-list li.pull-request::before{margin-left:-8px;content:""}.full-commit .branches-list li.pull-request-error{margin-bottom:-1px}.full-commit .branches-list li a{color:inherit}.full-commit .commit-meta{padding:8px;margin-right:-8px;margin-left:-8px;background:var(--color-canvas-default);border-top:1px solid var(--color-border-default);border-bottom-right-radius:6px;border-bottom-left-radius:6px}.full-commit .sha-block{margin-left:16px;font-size:12px;line-height:24px;color:var(--color-fg-muted)}.full-commit .sha-block>.sha{color:var(--color-fg-default)}.full-commit .sha-block>a{color:var(--color-fg-default);text-decoration:none;border-bottom:1px dotted var(--color-border-muted)}.full-commit .sha-block>a:hover{border-bottom:1px solid var(--color-border-default)}.full-commit .commit-desc{display:block;margin:-4px 0 8px}.full-commit .commit-desc pre{max-width:100%;overflow:visible;font-size:13px;word-wrap:break-word}.branches-tag-list{display:inline;margin-right:8px;margin-left:2px;vertical-align:middle;list-style:none}.branches-tag-list .more-commit-details,.branches-tag-list.open .hidden-text-expander{display:none}.branches-tag-list.open .more-commit-details{display:inline-block}.branches-tag-list li{display:inline-block;padding-left:4px}.branches-tag-list li:first-child{padding-left:0;font-weight:600;color:var(--color-fg-default)}.branches-tag-list li.loading{font-weight:400;color:var(--color-fg-muted)}.branches-tag-list li.abbrev-tags{cursor:pointer}.branches-tag-list li a{color:inherit}.commit-branches{font-size:12px;color:var(--color-fg-muted);vertical-align:middle}.commit-branches .octicon{vertical-align:middle}.commit-loader .loader-error{display:none;margin:0;font-size:12px;font-weight:600;color:var(--color-danger-fg)}.commit-loader.is-error .loader-loading{display:none}.commit-loader.is-error .loader-error{display:block}.commit-build-statuses{position:relative;display:inline-block;text-align:left}.commit-build-statuses .dropdown-menu{min-width:362.6666666667px;max-width:544px;padding-top:0;padding-bottom:0}.commit-build-statuses .dropdown-menu .merge-status-list{max-height:170px;border-bottom:0}.commit-build-statuses .dropdown-menu-w,.commit-build-statuses .dropdown-menu-e{top:-11px}.commit-build-statuses .merge-status-item:last-child{border-radius:0 0 6px 6px}.dropdown-signed-commit .dropdown-menu{width:260px;margin-top:8px;font-size:13px;line-height:1.4;white-space:normal}.dropdown-signed-commit .dropdown-menu::after{border-bottom-color:var(--color-canvas-subtle)}.dropdown-signed-commit .dropdown-menu-w{top:-28px;margin-top:0}.dropdown-signed-commit .dropdown-menu-w::after{border-bottom-color:transparent;border-left-color:var(--color-canvas-subtle)}.signed-commit-header{line-height:1.3;white-space:normal;border-collapse:separate;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default);border-top-left-radius:6px;border-top-right-radius:6px}.signed-commit-header .octicon-verified{color:var(--color-success-fg)}.signed-commit-header .octicon-unverified{color:var(--color-fg-muted)}.signed-commit-footer{font-size:12px;line-height:1.5}.signed-commit-cert-info{margin-bottom:4px}.signed-commit-cert-info td{vertical-align:top}.signed-commit-cert-info td:first-child{width:44px;padding-right:12px}.signed-commit-badge{display:inline-block;padding:1px 4px;font-size:10px;color:var(--color-fg-muted);vertical-align:middle;-webkit-user-select:none;user-select:none;background:none;border:1px solid var(--color-border-default);border-radius:6px}.signed-commit-badge:hover{text-decoration:none;border-color:var(--color-neutral-muted)}.signed-commit-badge.verified{color:var(--color-success-fg)}.signed-commit-badge.verified:hover{border-color:var(--color-success-emphasis)}.signed-commit-badge.unverified{color:var(--color-attention-fg)}.signed-commit-badge.unverified:hover{border-color:var(--color-attention-emphasis)}.signed-commit-badge-small{margin-top:-2px;margin-right:4px}.signed-commit-badge-medium{padding:4px 8px;font-size:12px;border-radius:6px}.signed-commit-badge-large{padding:4px 12px;margin-right:8px;font-size:13px;line-height:20px;border-radius:6px}.signed-commit-verified-label{color:#1e7e34}.signed-commit-signer-name{font-size:14px;text-align:left}.signed-commit-signer-name .signer{display:block;font-weight:600;color:var(--color-fg-default)}.table-of-contents{margin:16px 0}.table-of-contents li{padding:8px 0;list-style-type:none}.table-of-contents li+li{border-top:1px solid var(--color-border-muted)}.table-of-contents li>.octicon{margin-right:4px}.table-of-contents .toc-diff-stats{padding-left:16px;line-height:26px}.table-of-contents .toc-diff-stats .octicon{float:left;margin-top:4px;margin-left:-16px;color:#c6cbd1}.table-of-contents .toc-diff-stats .btn-link{font-weight:600}.table-of-contents .toc-diff-stats+.content{padding-top:4px}.table-of-contents .octicon-diff-removed{color:var(--color-danger-fg)}.table-of-contents .octicon-diff-renamed{color:var(--color-fg-muted)}.table-of-contents .octicon-diff-modified{color:var(--color-attention-fg)}.table-of-contents .octicon-diff-added{color:var(--color-success-fg)}@media(min-width: 768px){.toc-select .select-menu-modal{min-width:420px}}.toc-select .select-menu-item .css-truncate{max-width:290px}.toc-select .select-menu-item-heading,.toc-select .select-menu-item-text{color:var(--color-fg-default)}.toc-select .select-menu-item-icon.octicon-diff-removed{color:var(--color-danger-fg)}.toc-select .select-menu-item-icon.octicon-diff-renamed{color:var(--color-fg-muted)}.toc-select .select-menu-item-icon.octicon-diff-modified{color:var(--color-attention-fg)}.toc-select .select-menu-item-icon.octicon-diff-added{color:var(--color-success-fg)}.toc-select[aria-selected=true] .select-menu-item-heading,.toc-select[aria-selected=true] .select-menu-item-text,.toc-select[aria-selected=true] .color-fg-success,.toc-select[aria-selected=true] .color-fg-danger,.toc-select[aria-selected=true] .color-fg-muted,.toc-select[aria-selected=true] .octicon-diff-removed,.toc-select[aria-selected=true] .octicon-diff-renamed,.toc-select[aria-selected=true] .octicon-diff-modified,.toc-select[aria-selected=true] .octicon-diff-added,.toc-select[aria-selected=true] .diffstat,.toc-select [role^=menuitem]:focus .select-menu-item-heading,.toc-select [role^=menuitem]:focus .select-menu-item-text,.toc-select [role^=menuitem]:focus .color-fg-success,.toc-select [role^=menuitem]:focus .color-fg-danger,.toc-select [role^=menuitem]:focus .color-fg-muted,.toc-select [role^=menuitem]:focus .octicon-diff-removed,.toc-select [role^=menuitem]:focus .octicon-diff-renamed,.toc-select [role^=menuitem]:focus .octicon-diff-modified,.toc-select [role^=menuitem]:focus .octicon-diff-added,.toc-select [role^=menuitem]:focus .diffstat,.toc-select [role^=menuitem]:hover .select-menu-item-heading,.toc-select [role^=menuitem]:hover .select-menu-item-text,.toc-select [role^=menuitem]:hover .color-fg-success,.toc-select [role^=menuitem]:hover .color-fg-danger,.toc-select [role^=menuitem]:hover .color-fg-muted,.toc-select [role^=menuitem]:hover .octicon-diff-removed,.toc-select [role^=menuitem]:hover .octicon-diff-renamed,.toc-select [role^=menuitem]:hover .octicon-diff-modified,.toc-select [role^=menuitem]:hover .octicon-diff-added,.toc-select [role^=menuitem]:hover .diffstat,.toc-select .navigation-focus .select-menu-item-heading,.toc-select .navigation-focus .select-menu-item-text,.toc-select .navigation-focus .color-fg-success,.toc-select .navigation-focus .color-fg-danger,.toc-select .navigation-focus .color-fg-muted,.toc-select .navigation-focus .octicon-diff-removed,.toc-select .navigation-focus .octicon-diff-renamed,.toc-select .navigation-focus .octicon-diff-modified,.toc-select .navigation-focus .octicon-diff-added,.toc-select .navigation-focus .diffstat{color:var(--color-fg-on-emphasis) !important}.conversation-list-heading{height:0;margin:32px 0 16px;font-size:16px;font-weight:400;color:var(--color-fg-muted);text-align:center;border-bottom:1px solid var(--color-border-default)}.conversation-list-heading .inner{position:relative;top:-16px;display:inline-block;padding:0 4px;background:var(--color-canvas-default)}.copyable-terminal{position:relative;padding:8px 55px 8px 8px;background-color:var(--color-canvas-subtle);border-radius:6px}.copyable-terminal-content{overflow:auto}.copyable-terminal-button{position:absolute;top:5px;right:5px}.copyable-terminal-button .zeroclipboard-button{float:right}.copyable-terminal-button .zeroclipboard-button .octicon{padding-left:1px;margin:0 auto}.blob-wrapper{overflow-x:auto;overflow-y:hidden}.blob-wrapper table tr:nth-child(2n){background-color:transparent}.page-blob.height-full .blob-wrapper{overflow-y:auto}.page-edit-blob.height-full .CodeMirror{height:300px}.page-edit-blob.height-full .CodeMirror,.page-edit-blob.height-full .CodeMirror-scroll{display:flex;flex-direction:column;flex:1 1 auto}.blob-wrapper-embedded{max-height:240px;overflow-y:auto}.diff-table{width:100%;border-collapse:separate}.diff-table .line-comments{padding:10px;vertical-align:top;border-top:1px solid var(--color-border-default)}.diff-table .line-comments:first-child+.empty-cell{border-left-width:1px}.diff-table tr:not(:last-child) .line-comments{border-top:1px solid var(--color-border-default);border-bottom:1px solid var(--color-border-default)}.diff-view .line-alert,.diff-table .line-alert{position:absolute;left:-60px;margin:2px}.comment-body .diff-view .line-alert{left:0}.blob-num{position:relative;width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;line-height:20px;color:var(--color-fg-subtle);text-align:right;white-space:nowrap;vertical-align:top;cursor:pointer;-webkit-user-select:none;user-select:none}.blob-num:hover{color:var(--color-fg-default)}.blob-num::before{content:attr(data-line-number)}.blob-num.non-expandable{cursor:default}.blob-num.non-expandable:hover{color:var(--color-fg-subtle)}.blob-code{position:relative;padding-right:10px;padding-left:10px;line-height:20px;vertical-align:top}.blob-code-inner{overflow:visible;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;color:var(--color-fg-default);word-wrap:normal;white-space:pre}.blob-code-inner .x-first{border-top-left-radius:.2em;border-bottom-left-radius:.2em}.blob-code-inner .x-last{border-top-right-radius:.2em;border-bottom-right-radius:.2em}.blob-code-inner.highlighted,.blob-code-inner .highlighted{background-color:var(--color-attention-subtle);box-shadow:inset 2px 0 0 var(--color-attention-muted)}.blob-code-inner::selection,.blob-code-inner *::selection{background-color:var(--color-accent-muted)}.blob-code-marker::before{padding-right:8px;content:attr(data-code-marker)}.blob-code-marker-addition::before{content:"+ "}.blob-code-marker-deletion::before{content:"- "}.blob-code-marker-context::before{content:" "}.blob-code-marker-injected_context::before{content:" "}.soft-wrap .diff-table{table-layout:fixed}.soft-wrap .blob-code{padding-left:18px;text-indent:-7px}.soft-wrap .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.soft-wrap .no-nl-marker{display:none}.soft-wrap .add-line-comment{margin-left:-28px}.blob-num-hunk,.blob-code-hunk,.blob-num-expandable{color:var(--color-fg-muted);vertical-align:middle}.blob-num-hunk,.blob-num-expandable{background-color:var(--color-diff-blob-hunk-num-bg)}.blob-code-hunk{padding-top:4px;padding-bottom:4px;background-color:var(--color-accent-subtle);border-width:1px 0}.blob-expanded .blob-num:not(.blob-num-context-outside-diff),.blob-expanded .blob-code:not(.blob-code-context){background-color:var(--color-canvas-subtle)}.blob-expanded+tr.show-top-border:not(.blob-expanded) .blob-num,.blob-expanded+tr.show-top-border:not(.blob-expanded) .blob-code{border-top:1px solid var(--color-border-muted)}.blob-expanded tr.show-top-border .blob-num-hunk,.blob-expanded tr.show-top-border .blob-num{border-top:1px solid var(--color-border-muted)}tr.show-top-border+.blob-expanded .blob-num,tr.show-top-border+.blob-expanded .blob-code{border-top:1px solid var(--color-border-muted)}.blob-num-expandable{width:auto;padding:0;font-size:12px;text-align:center}.blob-num-expandable .directional-expander{display:block;width:auto;height:auto;margin-right:-1px;color:var(--color-diff-blob-expander-icon);cursor:pointer}.blob-num-expandable .single-expander{padding-top:4px;padding-bottom:4px}.blob-num-expandable .directional-expander:hover{color:var(--color-fg-on-emphasis);text-shadow:none;background-color:var(--color-accent-emphasis);border-color:var(--color-accent-emphasis)}.blob-code-addition{background-color:var(--color-diff-blob-addition-line-bg);outline:1px dotted transparent}.blob-code-addition .x{color:var(--color-diff-blob-addition-fg);background-color:var(--color-diff-blob-addition-word-bg)}.blob-num-addition{color:var(--color-diff-blob-addition-num-text);background-color:var(--color-diff-blob-addition-num-bg);border-color:var(--color-success-emphasis)}.blob-num-addition:hover{color:var(--color-fg-default)}.blob-code-deletion{background-color:var(--color-diff-blob-deletion-line-bg);outline:1px dashed transparent}.blob-code-deletion .x{color:var(--color-diff-blob-deletion-fg);background-color:var(--color-diff-blob-deletion-word-bg)}.blob-num-deletion{color:var(--color-diff-blob-deletion-num-text);background-color:var(--color-diff-blob-deletion-num-bg);border-color:var(--color-danger-emphasis)}.blob-num-deletion:hover{color:var(--color-fg-default)}.is-selecting{cursor:ns-resize !important}.is-selecting .blob-num{cursor:ns-resize !important}.is-selecting .add-line-comment,.is-selecting a{pointer-events:none;cursor:ns-resize !important}.is-selecting .is-hovered .add-line-comment{opacity:0}.is-selecting.file-diff-split{cursor:nwse-resize !important}.is-selecting.file-diff-split .blob-num{cursor:nwse-resize !important}.is-selecting.file-diff-split .empty-cell,.is-selecting.file-diff-split .add-line-comment,.is-selecting.file-diff-split a{pointer-events:none;cursor:nwse-resize !important}.selected-line{position:relative}.selected-line::after{position:absolute;top:0;left:0;display:block;width:100%;height:100%;box-sizing:border-box;pointer-events:none;content:"";background:var(--color-attention-subtle);mix-blend-mode:var(--color-diff-blob-selected-line-highlight-mix-blend-mode)}.selected-line.selected-line-top::after{border-top:1px solid var(--color-attention-muted)}.selected-line.selected-line-bottom::after{border-bottom:1px solid var(--color-attention-muted)}.selected-line:first-child::after,.selected-line.selected-line-left::after{border-left:1px solid var(--color-attention-muted)}.selected-line:last-child::after,.selected-line.selected-line-right::after{border-right:1px solid var(--color-attention-muted)}.is-commenting .selected-line.blob-code::before{position:absolute;top:0;left:-1px;display:block;width:4px;height:100%;content:"";background:var(--color-accent-emphasis)}.add-line-comment{position:relative;z-index:5;float:left;width:22px;height:22px;margin:-2px -10px -2px -20px;line-height:21px;color:var(--color-fg-on-emphasis);text-align:center;text-indent:0;cursor:pointer;background-color:var(--color-accent-emphasis);border-radius:6px;box-shadow:var(--color-shadow-medium);opacity:0;transition:transform .1s ease-in-out;transform:scale(0.8, 0.8)}.add-line-comment:hover{transform:scale(1, 1)}.is-hovered .add-line-comment,.add-line-comment:focus{opacity:1}.add-line-comment .octicon{vertical-align:text-top;pointer-events:none}.add-line-comment.octicon-check{background:#333;opacity:1}.inline-comment-form{border:1px solid #dfe2e5;border-radius:6px}.timeline-inline-comments{width:100%;table-layout:fixed}.timeline-inline-comments .inline-comments,.show-inline-notes .inline-comments{display:table-row}.inline-comments{display:none}.inline-comments.is-collapsed{display:none}.inline-comments .line-comments.is-collapsed{visibility:hidden}.inline-comments .line-comments+.blob-num{border-left-width:1px}.inline-comments .timeline-comment{margin-bottom:10px}.inline-comments .inline-comment-form,.inline-comments .inline-comment-form-container{max-width:780px}.comment-holder{max-width:780px}.line-comments+.line-comments,.empty-cell+.line-comments{border-left:1px solid var(--color-border-muted)}.inline-comment-form-container .inline-comment-form,.inline-comment-form-container.open .inline-comment-form-actions{display:none}.inline-comment-form-container .inline-comment-form-actions,.inline-comment-form-container.open .inline-comment-form{display:block}body.split-diff .container,body.split-diff .container-lg,body.split-diff .container-xl,body.full-width .container,body.full-width .container-lg,body.full-width .container-xl{width:100%;max-width:none;padding-right:20px;padding-left:20px}body.split-diff .repository-content,body.full-width .repository-content{width:100%}body.split-diff .new-pr-form,body.full-width .new-pr-form{max-width:980px}.file-diff-split{table-layout:fixed}.file-diff-split .blob-code+.blob-num{border-left:1px solid var(--color-border-muted)}.file-diff-split .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.file-diff-split .empty-cell{cursor:default;background-color:var(--color-neutral-subtle);border-right-color:var(--color-border-muted)}@media(max-width: 1280px){.file-diff-split .write-selected .comment-form-head{margin-bottom:48px !important}.file-diff-split markdown-toolbar{position:absolute;right:8px;bottom:-40px}}.submodule-diff-stats .octicon-diff-removed{color:var(--color-danger-fg)}.submodule-diff-stats .octicon-diff-renamed{color:var(--color-fg-muted)}.submodule-diff-stats .octicon-diff-modified{color:var(--color-attention-fg)}.submodule-diff-stats .octicon-diff-added{color:var(--color-success-fg)}.BlobToolbar{left:-17px}.BlobToolbar-dropdown{margin-left:-2px}.pl-token:hover,.pl-token.active{cursor:pointer;background:#ffea7f}.discussion-timeline{position:relative;float:left}.discussion-timeline::before{position:absolute;top:0;bottom:0;left:72px;z-index:0;display:block;width:2px;content:"";background-color:var(--color-border-default)}.discussion-timeline.team-discussion-timeline::before{bottom:24px;left:20px;z-index:auto;background-color:var(--color-border-default)}.discussion-timeline.team-discussion-timeline .blankslate{background:var(--color-canvas-default)}.discussion-sidebar-item{padding-top:16px;font-size:12px;color:var(--color-fg-muted)}.discussion-sidebar-item .btn .octicon{margin-right:0}.discussion-sidebar-item .muted-icon{color:var(--color-fg-muted)}.discussion-sidebar-item .muted-icon:hover{color:var(--color-accent-fg);text-decoration:none;cursor:pointer}.discussion-sidebar-item+.discussion-sidebar-item{margin-top:16px;border-top:1px solid var(--color-border-muted)}.discussion-sidebar-item .select-menu{position:relative}.discussion-sidebar-item .select-menu-modal-holder{top:25px;right:-1px;left:auto}.discussion-sidebar-heading{margin-bottom:8px;font-size:12px;color:var(--color-fg-muted)}.discussion-sidebar-toggle{padding:4px 0;margin:-4px 0 4px}.discussion-sidebar-toggle .octicon{float:right;color:var(--color-fg-muted)}.discussion-sidebar-toggle:hover{color:var(--color-accent-fg);text-decoration:none;cursor:pointer}.discussion-sidebar-toggle:hover .octicon{color:inherit}button.discussion-sidebar-toggle{display:block;width:100%;font-weight:600;text-align:left;background:none;border:0}.sidebar-progress-bar .progress-bar{height:8px;margin-bottom:2px;border-radius:6px}.sidebar-assignee .css-truncate-target{max-width:110px}.sidebar-assignee .assignee{font-weight:600;color:var(--color-fg-muted);vertical-align:middle}.sidebar-assignee .assignee:hover{color:var(--color-accent-fg);text-decoration:none}.sidebar-assignee .reviewers-status-icon{width:14px}.sidebar-assignee .octicon{margin-top:2px}.thread-subscribe-form.is-error .thread-subscribe-button{color:var(--color-danger-fg)}.sidebar-notifications{position:relative}.sidebar-notifications .thread-subscription-status{padding:0;margin:0;border:0}.sidebar-notifications .thread-subscription-status .thread-subscribe-form{display:block}.sidebar-notifications .thread-subscription-status .reason{padding:0;margin:4px 0 0}.sidebar-notifications .thread-subscription-status .btn-sm{display:block;width:100%}.participation .participant-avatar{float:left;margin:4px 0 0 4px}.participation a{color:var(--color-fg-muted)}.participation a:hover{color:var(--color-accent-fg);text-decoration:none}.participation-avatars{margin-left:-4px}.participation-avatars::before{display:table;content:""}.participation-avatars::after{display:table;clear:both;content:""}.participation-more{float:left;margin:8px 4px 0}.inline-comment-form .form-actions,.timeline-new-comment .form-actions{padding:0 8px 8px}.inline-comment-form::before{display:table;content:""}.inline-comment-form::after{display:table;clear:both;content:""}.inline-comment-form .tabnav-tabs{display:inline-block}.inline-comment-form .form-actions{float:right}.gh-header-actions{float:right;margin-top:4px}.gh-header-actions .btn-sm{float:left;margin-left:4px}.gh-header-actions .btn-sm .octicon{margin-right:0}.gh-header{background-color:var(--color-canvas-default)}.gh-header .gh-header-sticky{height:1px}.gh-header .gh-header-sticky .meta{font-size:12px}.gh-header .gh-header-sticky .sticky-content,.gh-header .gh-header-sticky .gh-header-shadow{display:none}.gh-header .gh-header-sticky.is-stuck{z-index:110;height:60px}.gh-header .gh-header-sticky.is-stuck .sticky-content{display:block}.gh-header .gh-header-sticky.is-stuck .css-truncate-target{max-width:150px}.gh-header .gh-header-sticky.is-stuck+.gh-header-shadow{position:fixed;top:0;right:0;left:0;z-index:109;display:block;height:60px;content:"";background-color:var(--color-canvas-default);border-bottom:1px solid var(--color-border-default)}.gh-header .gh-header-edit{display:none}.gh-header .gh-header-meta .base-ref{display:inline-block}.gh-header .gh-header-meta .commit-ref-dropdown{display:none}.gh-header.open .gh-header-show{display:none}.gh-header.open .gh-header-edit{display:block}.gh-header.open .gh-header-meta .base-ref{display:none}.gh-header.open .gh-header-meta .commit-ref-dropdown{display:inline-block;margin-top:-4px;vertical-align:top}.gh-header-title{margin-right:150px;margin-bottom:0;font-weight:400;line-height:1.125;word-wrap:break-word}.gh-header-no-access .gh-header-title{margin-right:0}.gh-header-number{font-weight:300;color:var(--color-fg-muted)}.gh-header-meta{padding-bottom:8px;margin-top:8px;font-size:14px;color:var(--color-fg-muted);border-bottom:1px solid var(--color-border-default)}.gh-header.issue .gh-header-meta{margin-bottom:16px}.gh-header.pull .gh-header-meta{padding-bottom:0;border-bottom:0}.gh-header-meta .commit-ref .css-truncate-target,.gh-header-meta .commit-ref:hover .css-truncate-target{max-width:80vw}.gh-header-meta .State{margin-right:8px}.gh-header-meta .avatar{float:left;margin-top:-4px;margin-right:4px}.timeline-comment-wrapper{position:relative;padding-left:56px;margin-top:16px;margin-bottom:16px}.timeline-comment-avatar{float:left;margin-left:-56px;border-radius:6px}.timeline-comment-avatar .avatar{width:40px;height:40px}.timeline-comment-avatar .avatar-child{width:20px;height:20px}.discussions-timeline-scroll-target{width:100%;padding-top:60px;margin-top:-60px;pointer-events:none !important}.discussions-timeline-scroll-target>*{pointer-events:auto}.timeline-comment{position:relative;color:var(--color-fg-default);background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.timeline-comment.will-transition-once{transition:border-color .65s ease-in-out}.timeline-comment.will-transition-once .timeline-comment-header{transition:background-color .65s ease,border-bottom-color .65s ease-in-out}.timeline-comment.will-transition-once::before,.timeline-comment.will-transition-once::after{transition:border-right-color .65s ease-in-out}.timeline-comment.current-user{border-color:var(--color-accent-muted)}.timeline-comment.current-user .timeline-comment-header{background-color:var(--color-accent-subtle);border-bottom-color:var(--color-accent-muted)}.timeline-comment.current-user .Label{border-color:var(--color-accent-muted)}.timeline-comment.current-user .previewable-comment-form .comment-form-head.tabnav{color:var(--color-accent-muted);background-color:var(--color-accent-subtle);border-bottom-color:var(--color-accent-muted)}.timeline-comment.unread-item,.timeline-comment.is-internal{border-color:var(--color-attention-muted)}.timeline-comment.unread-item .timeline-comment-header,.timeline-comment.is-internal .timeline-comment-header{background-color:var(--color-attention-subtle);border-bottom-color:var(--color-attention-muted)}.timeline-comment.unread-item .Label,.timeline-comment.is-internal .Label{border-color:var(--color-attention-muted)}.timeline-comment.unread-item .previewable-comment-form .comment-form-head.tabnav,.timeline-comment.is-internal .previewable-comment-form .comment-form-head.tabnav{color:var(--color-attention-muted);background-color:var(--color-attention-subtle);border-bottom-color:var(--color-attention-muted)}.timeline-comment:empty{display:none}.timeline-comment .comment+.comment{border-top:1px solid var(--color-border-default)}.timeline-comment .comment+.comment::before,.timeline-comment .comment+.comment::after{display:none}.timeline-comment .comment+.comment .timeline-comment-header{border-top-left-radius:0;border-top-right-radius:0}.timeline-comment--caret::after,.timeline-comment--caret::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.timeline-comment--caret::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-subtle), var(--color-canvas-subtle))}.timeline-comment--caret::before{background-color:var(--color-border-default)}.is-pending .timeline-comment--caret::after,.is-pending .timeline-comment--caret::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.is-pending .timeline-comment--caret::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle))}.is-pending .timeline-comment--caret::before{background-color:var(--color-attention-emphasis)}.timeline-comment--caret.current-user::after,.timeline-comment--caret.current-user::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.timeline-comment--caret.current-user::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-accent-subtle), var(--color-accent-subtle))}.timeline-comment--caret.current-user::before{background-color:var(--color-accent-muted)}.timeline-comment--caret.unread-item::after,.timeline-comment--caret.unread-item::before,.timeline-comment--caret.is-internal::after,.timeline-comment--caret.is-internal::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.timeline-comment--caret.unread-item::after,.timeline-comment--caret.is-internal::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle))}.timeline-comment--caret.unread-item::before,.timeline-comment--caret.is-internal::before{background-color:var(--color-attention-muted)}.timeline-comment--caret.timeline-comment--caret-nw::before,.timeline-comment--caret.timeline-comment--caret-nw::after{transform:rotate(90deg)}.timeline-comment--caret.timeline-comment--caret-nw::before{top:-12px;left:12px}.timeline-comment--caret.timeline-comment--caret-nw::after{top:-10px;left:11px}.page-responsive .timeline-comment--caret::before,.page-responsive .timeline-comment--caret::after{display:none}@media(min-width: 768px){.page-responsive .timeline-comment--caret::before,.page-responsive .timeline-comment--caret::after{display:block}}:target .timeline-comment--caret::before{background-color:var(--color-accent-emphasis)}:target .timeline-comment{z-index:2;border-color:var(--color-accent-emphasis);box-shadow:var(--color-primer-shadow-focus)}.review-comment:target{border:1px solid var(--color-accent-emphasis);border-radius:6px;box-shadow:var(--color-primer-shadow-focus)}.timeline-comment-header{display:flex;align-items:center;padding-right:16px;padding-left:16px;color:var(--color-fg-muted);flex-direction:row-reverse;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default);border-top-left-radius:6px;border-top-right-radius:6px}.timeline-comment-header:only-child{border-bottom:0;border-radius:6px}.timeline-comment-header .author{color:var(--color-fg-muted)}.timeline-comment-header code{word-break:break-all}.comment-type-icon{color:inherit}.timeline-comment-header-text{min-width:0;padding-top:8px;padding-bottom:8px;margin-bottom:1px;flex:1 1 auto}.timeline-comment-header-text code a{color:var(--color-fg-muted)}.timeline-comment-actions{float:right;margin-left:8px}.timeline-comment-actions .show-more-popover.dropdown-menu-sw{right:-6px;margin-top:-4px}.timeline-comment-action{display:inline-block;padding:8px 4px;color:var(--color-fg-muted)}.timeline-comment-action:hover,.timeline-comment-action:focus{color:var(--color-accent-fg);text-decoration:none;opacity:1}.timeline-comment-action .octicon-check{height:16px}.timeline-comment-action.disabled{color:var(--color-fg-muted);cursor:default}.timeline-comment-action.disabled:hover{color:var(--color-fg-muted)}.timeline-new-comment{margin-bottom:0}.timeline-new-comment .comment-form-head{margin-bottom:8px}.timeline-new-comment .previewable-comment-form .comment-body{padding:4px 4px 16px;border-bottom:1px solid var(--color-border-default)}.comment-form-head .toolbar-commenting{float:right}.discussion-item-icon{float:left;width:32px;height:32px;margin-top:-4px;margin-left:-39px;line-height:28px;color:var(--color-fg-muted);text-align:center;background-color:var(--color-timeline-badge-bg);border:2px solid var(--color-canvas-default);border-radius:50%}.discussion-item-header{color:var(--color-fg-muted);word-wrap:break-word}.discussion-item-header .discussion-item-private{vertical-align:-1px}.discussion-item-header:last-child{padding-bottom:0}.discussion-item-header .commit-ref{font-size:85%;vertical-align:baseline}.discussion-item-header .btn-outline{float:right;padding:4px 8px;margin-top:-4px;margin-left:8px}.discussion-item-private{color:var(--color-fg-muted)}.previewable-comment-form .comment-form-head.tabnav{padding:8px 8px 0;background:var(--color-canvas-subtle);border-radius:6px 6px 0 0}.page-responsive .previewable-comment-form .comment-form-head.tabnav .toolbar-commenting{background:var(--color-canvas-default)}@media(min-width: 1012px){.page-responsive .previewable-comment-form .comment-form-head.tabnav .toolbar-commenting{background:transparent}}@media(min-width: 768px){.page-responsive .previewable-comment-form .comment-form-head.tabnav{background:var(--color-canvas-subtle)}}.previewable-comment-form .comment{border:0}.previewable-comment-form .comment-body{padding-top:8px;padding-right:8px;padding-bottom:8px;padding-left:8px;background-color:transparent;border-bottom:1px solid var(--color-border-default)}.previewable-comment-form .timeline-comment .timeline-comment-actions{display:none}.new-discussion-timeline .composer .timeline-comment{margin-bottom:8px}.new-discussion-timeline .composer .comment-form-head.tabnav{padding-top:0;background-color:var(--color-canvas-default)}.composer.composer-responsive{padding-left:0}.composer.composer-responsive .discussion-topic-header{padding:0}.composer.composer-responsive .timeline-comment{border:0}.composer.composer-responsive .timeline-comment::before,.composer.composer-responsive .timeline-comment::after{display:none}.composer.composer-responsive .previewable-comment-form .write-content{margin:0}@media(min-width: 768px){.composer.composer-responsive{padding-left:56px}.composer.composer-responsive .timeline-comment{border:1px solid var(--color-border-default)}.composer.composer-responsive .timeline-comment::after,.composer.composer-responsive .timeline-comment::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.composer.composer-responsive .timeline-comment::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.composer.composer-responsive .timeline-comment::before{background-color:var(--color-border-default)}}.discussion-timeline-actions{background-color:var(--color-canvas-default);border-top:2px solid var(--color-border-default)}.discussion-timeline-actions .merge-pr{padding-top:0;border-top:0}.discussion-timeline-actions .thread-subscription-status{margin-top:16px}.pagination-loader-container{background-color:var(--color-canvas-default);background-image:url("/images/modules/pulls/progressive-disclosure-line.svg");background-repeat:repeat-x;background-position:center;background-size:16px}[data-color-mode=light][data-light-theme*=dark] .pagination-loader-container,[data-color-mode=dark][data-dark-theme*=dark] .pagination-loader-container{background-image:url("/images/modules/pulls/progressive-disclosure-line-dark.svg")}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark] .pagination-loader-container{background-image:url("/images/modules/pulls/progressive-disclosure-line-dark.svg")}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark] .pagination-loader-container{background-image:url("/images/modules/pulls/progressive-disclosure-line-dark.svg")}}:target .timeline-comment-group .timeline-comment{border-color:var(--color-accent-emphasis);box-shadow:var(--color-primer-shadow-focus)}.is-pending .form-actions{margin-right:8px;margin-bottom:4px}.is-pending .file,.is-pending .file-header,.is-pending .tabnav-tab.selected,.is-pending .comment-form-head.tabnav{border-color:var(--color-attention-emphasis)}.is-pending .file-header,.is-pending .comment-form-head.tabnav{background-color:var(--color-attention-subtle)}.discussion-item-icon-gray{background-color:var(--color-timeline-badge-bg) !important}.new-reactions-summary-item{width:26px;height:26px;padding:0;line-height:26px;background-color:var(--color-btn-bg)}.new-reactions-summary-item:hover{background-color:var(--color-btn-hover-bg) !important;border-color:var(--color-btn-hover-border) !important}.new-reactions-summary-item .octicon{vertical-align:text-bottom}.new-reactions-dropdown[open] .new-reactions-summary-item{background-color:var(--color-btn-selected-bg) !important;border-color:var(--color-btn-border) !important}.new-reactions-dropdown .dropdown-menu-reactions{width:auto;padding:0 2px}.new-reactions-dropdown .dropdown-menu-reactions::before,.new-reactions-dropdown .dropdown-menu-reactions::after{background-color:transparent;border:0}.new-reactions-dropdown .dropdown-item-reaction{width:32px;height:32px;padding:4px;margin:4px 2px}.new-reactions-dropdown .dropdown-item-reaction:hover{background-color:var(--color-btn-hover-bg)}.footer-octicon{color:var(--color-fg-subtle)}.footer-octicon:hover{color:var(--color-fg-muted)}.user-mention,.team-mention{font-weight:600;color:var(--color-fg-default);white-space:nowrap}@media(max-width: 543px){.notifications-component-menu-modal{margin:calc(10vh - 16px) 0}}@media(min-width: 544px){.notifications-component-menu-modal,.notifications-component-dialog,.notifications-component-dialog-modal{width:100%}}@media(min-width: 768px){.notifications-component-menu-modal,.notifications-component-dialog,.notifications-component-dialog-modal{min-width:300px}}.notifications-component-dialog:not([hidden])+.notifications-component-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:block;cursor:default;content:" ";background:transparent;background:var(--color-primer-canvas-backdrop)}@media(min-width: 544px){.notifications-component-dialog:not([hidden])+.notifications-component-dialog-overlay{display:none}}.notifications-component-dialog{z-index:99;animation:none}@keyframes notifications-component-dialog-animation--sm{0%{opacity:0;transform:translateX(16px)}}@media(min-width: 544px){.notifications-component-dialog{position:absolute;top:auto;right:auto;bottom:auto;left:auto;max-height:none;padding-top:0;margin:0;transform:none}}.notifications-component-dialog .notifications-component-dialog-modal{animation:none}.pagehead{position:relative;padding-top:24px;padding-bottom:24px;margin-bottom:24px;border-bottom:1px solid var(--color-border-default)}.pagehead.admin{background:url("/images/modules/pagehead/background-yellowhatch-v3.png") 0 0 repeat-x}.pagehead ul.pagehead-actions{position:relative;z-index:31;float:right;margin:0}.pagehead .path-divider{margin:0 .25em}.pagehead h1{min-height:32px;margin-top:0;margin-bottom:0;font-size:20px;font-weight:400}.pagehead h1 .avatar{margin-top:-2px;margin-right:8px;margin-bottom:-2px}.pagehead .underline-nav{height:69px;margin-top:-16px;margin-bottom:-16px}.pagehead-heading{color:inherit}.pagehead-actions>li{float:left;margin:0 8px 0 0;font-size:11px;color:var(--color-fg-default);list-style-type:none}.pagehead-actions>li:last-child{margin-right:0}.pagehead-actions .octicon-mute{color:var(--color-danger-fg)}.pagehead-actions .select-menu{position:relative}.pagehead-actions .select-menu::before{display:table;content:""}.pagehead-actions .select-menu::after{display:table;clear:both;content:""}.pagehead-actions .select-menu-modal-holder{top:100%}.pagehead-tabs-item{float:left;padding:8px 16px 12px;color:var(--color-fg-muted);white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:6px 6px 0 0}.pagehead-tabs-item .octicon{color:var(--color-fg-muted)}.pagehead-tabs-item:hover{color:var(--color-fg-default);text-decoration:none}.pagehead-tabs-item.selected{font-weight:600;color:var(--color-fg-default);background-color:var(--color-canvas-default);border-color:var(--color-severe-emphasis) var(--color-border-default) transparent}.pagehead-tabs-item.selected>.octicon{color:inherit}.reponav{position:relative;top:1px;margin-top:-4px}.reponav::before{display:table;content:""}.reponav::after{display:table;clear:both;content:""}.reponav-item{float:left;padding:8px 16px 8px;color:var(--color-fg-muted);white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:6px 6px 0 0}.reponav-item .octicon{color:var(--color-fg-muted)}.reponav-item:hover,.reponav-item:focus{color:var(--color-fg-default);text-decoration:none}.reponav-item.selected{color:var(--color-fg-default);background-color:var(--color-canvas-default);border-color:var(--color-severe-emphasis) var(--color-border-default) transparent}.reponav-item.selected .octicon{color:inherit}.reponav-wrapper{position:relative;z-index:2;overflow-y:hidden;background-color:var(--color-neutral-emphasis)}.reponav-wrapper .reponav{top:0;padding-right:8px;padding-left:8px;margin-top:0;-webkit-overflow-scrolling:touch;overflow-x:auto;color:rgba(255,255,255,.75)}.reponav-wrapper .reponav-item{display:inline-block;float:none;padding:4px 8px 16px;color:var(--color-fg-muted);border:0}.reponav-wrapper .reponav-item.selected{font-weight:600;color:var(--color-fg-default);background-color:transparent;border:0}.steps{display:table;width:100%;padding:0;margin:32px auto 0;overflow:hidden;list-style:none;border:1px solid #dfe2e5;border-radius:6px;box-shadow:0 1px 3px rgba(27,31,35,.05)}.steps li{display:table-cell;width:33.3%;padding:8px 16px;color:#c6cbd1;cursor:default;background-color:var(--color-canvas-subtle);border-left:1px solid #dfe2e5}.steps li.current{color:var(--color-fg-default);background-color:var(--color-canvas-default)}.steps li.current .octicon{color:var(--color-accent-fg)}.steps li .octicon{float:left;margin-right:16px;margin-bottom:4px}.steps li .step{display:block}.steps li:first-child{border-left:0}.steps .complete{color:var(--color-fg-muted)}.steps .complete .octicon{color:var(--color-success-fg)}.prose-diff .anchor{display:none}.prose-diff .show-rich-diff{color:var(--color-accent-fg);text-decoration:none;cursor:pointer}.prose-diff .show-rich-diff:hover{text-decoration:underline}.prose-diff.collapsed .rich-diff-level-zero.expandable{cursor:pointer}.prose-diff.collapsed .rich-diff-level-zero.expandable .vicinity{display:block}.prose-diff.collapsed .rich-diff-level-zero.expandable .unchanged:not(.vicinity){display:none}.prose-diff.collapsed .rich-diff-level-zero.expandable .octicon{display:block;margin:16px auto;color:var(--color-fg-muted)}.prose-diff.collapsed .rich-diff-level-zero.expandable:hover .octicon{color:var(--color-fg-muted)}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before{font-size:18px;color:var(--color-fg-muted);content:"Sorry, no visible changes to display."}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before{color:var(--color-fg-default)}.prose-diff.collapsed .rich-diff-level-zero.expandable>.removed,.prose-diff.collapsed .rich-diff-level-zero.expandable>del{display:none;text-decoration:none}.prose-diff .markdown-body{padding:32px;padding-left:16px}.prose-diff .markdown-body>ins{box-shadow:inset 4px 0 0 var(--color-success-muted)}.prose-diff .markdown-body>del{text-decoration:none;box-shadow:inset 4px 0 0 var(--color-danger-muted)}.prose-diff .markdown-body>ins,.prose-diff .markdown-body>del{display:block;border-radius:0}.prose-diff .markdown-body>ins>.rich-diff-level-zero,.prose-diff .markdown-body>ins>.rich-diff-level-one,.prose-diff .markdown-body>del>.rich-diff-level-zero,.prose-diff .markdown-body>del>.rich-diff-level-one{margin-left:16px}.prose-diff .markdown-body>ins:first-child *,.prose-diff .markdown-body>del:first-child *{margin-top:0}.prose-diff .rich-diff-level-zero.added{box-shadow:inset 4px 0 0 var(--color-success-muted)}.prose-diff .rich-diff-level-zero.removed{box-shadow:inset 4px 0 0 var(--color-danger-muted)}.prose-diff .rich-diff-level-zero.changed{box-shadow:inset 4px 0 0 var(--color-attention-muted)}.prose-diff .rich-diff-level-zero.unchanged,.prose-diff .rich-diff-level-zero.vicinity{margin-left:16px}.prose-diff .rich-diff-level-zero.added,.prose-diff .rich-diff-level-zero.removed,.prose-diff .rich-diff-level-zero.changed{display:block;border-radius:0}.prose-diff .rich-diff-level-zero.added>.rich-diff-level-one,.prose-diff .rich-diff-level-zero.removed>.rich-diff-level-one,.prose-diff .rich-diff-level-zero.changed>.rich-diff-level-one{margin-left:16px}.prose-diff .rich-diff-level-zero.added:first-child *,.prose-diff .rich-diff-level-zero.removed:first-child *,.prose-diff .rich-diff-level-zero.changed:first-child *{margin-top:0}.prose-diff :not(.changed)>:not(.github-user-ins):not(.github-user-del)>.removed,.prose-diff :not(.changed)>:not(.github-user-ins):not(.github-user-del)>del{text-decoration:none}.prose-diff .changed del,.prose-diff .changed del pre,.prose-diff .changed del code,.prose-diff .changed del>div,.prose-diff .changed .removed,.prose-diff .changed .removed pre,.prose-diff .changed .removed code,.prose-diff .changed .removed>div{color:var(--color-fg-default);text-decoration:line-through;background:var(--color-danger-subtle)}.prose-diff .changed ins,.prose-diff .changed ins code,.prose-diff .changed ins pre,.prose-diff .changed .added{color:var(--color-fg-default);background:var(--color-success-subtle);border-bottom:1px solid var(--color-success-muted)}.prose-diff>.markdown-body .github-user-ins{text-decoration:underline}.prose-diff>.markdown-body .github-user-del{text-decoration:line-through}.prose-diff>.markdown-body li ul.added{background:var(--color-success-subtle)}.prose-diff>.markdown-body li ul.removed{color:var(--color-fg-default);background:var(--color-danger-subtle)}.prose-diff>.markdown-body li ul.removed:not(.github-user-ins){text-decoration:line-through}.prose-diff>.markdown-body li.added.moved-up .octicon,.prose-diff>.markdown-body li.added.moved-down .octicon{margin-right:4px;margin-left:4px;color:var(--color-fg-muted)}.prose-diff>.markdown-body li.added.moved{background:var(--color-attention-subtle)}.prose-diff>.markdown-body li.removed.moved{display:none}.prose-diff>.markdown-body pre{padding:8px 16px}.prose-diff>.markdown-body th.changed,.prose-diff>.markdown-body td.changed{background:var(--color-attention-subtle);border-left-color:var(--color-border-default)}.prose-diff>.markdown-body :not(li.moved).removed{color:var(--color-fg-default);text-decoration:line-through;background:var(--color-danger-subtle)}.prose-diff>.markdown-body :not(.github-user-ins):not(li.moved).removed{text-decoration:line-through}.prose-diff>.markdown-body :not(li.moved).added,.prose-diff>.markdown-body li:not(.moved).added{background:var(--color-success-subtle)}.prose-diff>.markdown-body :not(.github-user-del):not(li.moved).added li:not(.moved):not(.github-user-del).added{text-decoration:none}.prose-diff>.markdown-body li:not(.moved).removed{color:var(--color-fg-default);background:var(--color-danger-subtle)}.prose-diff>.markdown-body li:not(.moved):not(.github-user-ins).removed{text-decoration:line-through}.prose-diff>.markdown-body .added,.prose-diff>.markdown-body ins+.added,.prose-diff>.markdown-body ins{border-top:0;border-bottom:0}.prose-diff>.markdown-body .added:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins+.added:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins:not(.github-user-del):not(.github-user-ins){text-decoration:none}.prose-diff>.markdown-body img.added,.prose-diff>.markdown-body img.removed{border-style:solid;border-width:1px}.prose-diff>.markdown-body ins pre:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins code:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins>div:not(.github-user-del):not(.github-user-ins){text-decoration:none}.prose-diff>.markdown-body ul>ins,.prose-diff>.markdown-body ul>del{display:block;padding:0}.prose-diff>.markdown-body .added>li,.prose-diff>.markdown-body .removed>li{margin-top:0;margin-bottom:0}span.changed_tag,em.changed_tag,strong.changed_tag,b.changed_tag,i.changed_tag,code.changed_tag{border-bottom:1px dotted var(--color-border-default);border-radius:0}a.added_href,a.changed_href,span.removed_href{border-bottom:1px dotted var(--color-border-default);border-radius:0}.diff-view .file-type-prose .rich-diff{display:none}.diff-view .display-rich-diff .rich-diff{display:block}.diff-view .display-rich-diff .file-diff{display:none}.protip{margin-top:16px;color:var(--color-fg-muted);text-align:center}.protip strong{color:var(--color-fg-default)}.protip code{padding:2px;background-color:var(--color-canvas-subtle);border-radius:6px}.add-reaction-btn{opacity:0;transition:opacity .1s ease-in-out}.page-responsive .add-reaction-btn{opacity:1}@media(min-width: 768px){.page-responsive .add-reaction-btn{opacity:0}}.reaction-popover-container[open] .add-reaction-btn{opacity:1}.add-reactions-options-item{margin-top:-1px;margin-right:-1px;line-height:29px;border:1px solid transparent}.add-reactions-options-item .emoji{display:inline-block;transition:transform .15s cubic-bezier(0.2, 0, 0.13, 2)}.add-reactions-options-item:hover .emoji,.add-reactions-options-item:focus .emoji{text-decoration:none !important;transform:scale(1.2) !important}.add-reactions-options-item:active{background-color:var(--color-accent-subtle)}.page-responsive .add-reactions-options-item{height:20vw}@media(min-width: 544px){.page-responsive .add-reactions-options-item{height:auto}}.social-reactions:not(.has-reactions) .reaction-summary-item{margin-bottom:8px !important}@media(min-width: 768px){.social-reactions:not(.has-reactions) .reaction-summary-item{margin-bottom:0}}.comment-reactions{display:none}.comment-reactions::before{display:table;content:""}.comment-reactions::after{display:table;clear:both;content:""}.comment-reactions .reaction-popover-container .reactions-menu{z-index:100}.page-responsive .comment-reactions{display:flex}@media(min-width: 768px){.page-responsive .comment-reactions{display:none}.page-responsive .comment-reactions.has-reactions{display:flex}}.comment-reactions.has-reactions:hover .add-reaction-btn,.comment-reactions.has-reactions .add-reaction-btn:focus{opacity:1}.comment-reactions.has-reactions:not(.social-reactions){border-top:1px solid var(--color-border-default)}.comment-reactions .user-has-reacted{background-color:var(--color-accent-subtle)}.comment-reactions .add-reaction-btn{border-right:0}.reaction-summary-item{float:left;padding:8px 16px 8px;line-height:18px;border-right:1px solid var(--color-border-default)}.reaction-summary-item:hover,.reaction-summary-item:focus{text-decoration:none}[data-color-mode=light][data-light-theme*=dark],[data-color-mode=dark][data-dark-theme*=dark]{--color-social-reaction-bg-hover:var(--color-scale-gray-7);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-8)}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark]{--color-social-reaction-bg-hover:var(--color-scale-gray-7);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-8)}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark]{--color-social-reaction-bg-hover:var(--color-scale-gray-7);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-8)}}:root,[data-color-mode=light][data-light-theme*=light],[data-color-mode=dark][data-dark-theme*=light]{--color-social-reaction-bg-hover:var(--color-scale-gray-1);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-1)}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=light]{--color-social-reaction-bg-hover:var(--color-scale-gray-1);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-1)}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=light]{--color-social-reaction-bg-hover:var(--color-scale-gray-1);--color-social-reaction-bg-reacted-hover:var(--color-scale-blue-1)}}.social-reaction-summary-item:not(.add-reaction-btn)+.social-reaction-summary-item{margin-left:8px}.social-reactions .comment-body{margin-left:16px !important}.social-button-emoji{display:inline-block;width:16px;height:16px;font-size:1em !important;line-height:1.25;vertical-align:-1px}.social-reaction-summary-item{height:26px;padding:0 4px !important;margin-right:0;font-size:12px;line-height:26px;background-color:transparent;border:1px solid var(--color-border-default, #d2dff0);border-radius:100px}.social-reaction-summary-item.user-has-reacted{background-color:var(--color-accent-subtle);border:1px solid var(--color-accent-emphasis) !important}.social-reaction-summary-item.user-has-reacted:hover{background-color:var(--color-social-reaction-bg-reacted-hover) !important}.social-reaction-summary-item>span{height:24px;padding:0 4px;margin-left:2px}.social-reaction-summary-item:hover{background-color:var(--color-social-reaction-bg-hover)}.social-reaction-summary-item:focus,.social-reaction-summary-item:focus-within,.social-reaction-summary-item:focus-visible{outline:0;box-shadow:var(--color-primer-shadow-focus)}.comment-reactions-options .reaction-summary-item:first-child{border-bottom-left-radius:6px}.reactions-with-gap .comment .comment-reactions{margin-left:16px;border-top:0 !important}.reactions-with-gap .comment .reaction-summary-item{margin-bottom:16px}.reactions-with-gap .reaction-summary-item:not(.add-reaction-btn){padding:0 8px;margin-right:8px;font-size:12px;line-height:26px;border:1px solid var(--color-border-default, #d2dff0);border-radius:6px}.reactions-with-gap .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:16px}.render-container{padding:32px;line-height:0;text-align:center;background:var(--color-canvas-subtle);border-bottom-right-radius:6px;border-bottom-left-radius:6px}.render-container .render-viewer{display:block;width:1px;height:1px;border:0}.render-container .octospinner{display:none}.render-container .render-viewer-error,.render-container .render-viewer-fatal,.render-container .render-viewer-invalid,.render-container .render-fullscreen{display:none}.render-container.is-render-automatic .octospinner{display:inline-block}.render-container.is-render-requested .octospinner{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer-error{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer,.render-container.is-render-requested.is-render-failed .render-viewer-fatal,.render-container.is-render-requested.is-render-failed .render-viewer-invalid,.render-container.is-render-requested.is-render-failed .octospinner{display:none}.render-container.is-render-requested.is-render-failed-fatal .render-viewer-fatal{display:inline-block}.render-container.is-render-requested.is-render-failed-fatal .render-viewer,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-error,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-invalid,.render-container.is-render-requested.is-render-failed-fatal .octospinner{display:none}.render-container.is-render-requested.is-render-failed-invalid .render-viewer-invalid{display:inline-block}.render-container.is-render-requested.is-render-failed-invalid .render-viewer,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-error,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-fatal,.render-container.is-render-requested.is-render-failed-invalid .octospinner{display:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed){height:500px;padding:0;background:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer{width:100%;height:100%}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-fullscreen{display:flex}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner{display:none}.render-needs-enrichment{margin-bottom:16px}.render-needs-enrichment .render-full-screen{width:100%;height:auto;padding:16px;overflow:auto}.render-needs-enrichment .render-expand{top:2px;right:2px}.render-needs-enrichment .render-full-screen-close{top:0;right:0;padding:4px}.render-needs-enrichment .details{margin-bottom:0}.render-needs-enrichment .render-plaintext-hidden{display:none}.render-needs-enrichment.render-error .js-render-box{display:none !important}.render-notice{padding:16px 16px;font-size:14px;color:var(--color-fg-default);background-color:var(--color-canvas-subtle);border-color:var(--color-border-subtle)}.Skeleton{color:rgba(0,0,0,0);background-image:linear-gradient(270deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.1));background-size:400% 100%;animation:skeleton-loading 8s ease-in-out infinite}.Skeleton *{visibility:hidden}.Skeleton--text{-webkit-clip-path:inset(4px 0 4px 0 round 3px 3px 3px 3px);clip-path:inset(4px 0 4px 0 round 3px 3px 3px 3px)}.is-error .Skeleton{display:none}@keyframes skeleton-loading{0%{background-position:200% 0}100%{background-position:-200% 0}}.authors-2 .AvatarStack{min-width:36px !important}.authors-3 .AvatarStack{min-width:46px !important}[aria-selected=true] .AvatarStack-body,.navigation-focus .AvatarStack-body{background:#f6fbff}.blame-commit .AvatarStack{margin-top:4px}.tracked-in-parent-pill{position:relative;cursor:default}.tracked-in-parent-pill-truncated{position:absolute;left:100%;display:none;white-space:nowrap;background:var(--color-canvas-default);border-left-width:0 !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.tracked-in-parent-pill:hover .tracked-in-parent-pill-truncated{display:block}.wizard-step-item{position:relative;padding:8px 0;margin-left:16px;flex-direction:row}.wizard-step-item::before{position:absolute;top:32px;bottom:0;left:0;display:block;width:2px;height:100%;content:"";background-color:var(--color-border-default)}.wizard-step-badge{position:relative;z-index:1;display:flex;width:32px;height:32px;margin-right:8px;margin-left:-16px;color:var(--color-fg-default);align-items:center;background-color:var(--color-border-default);border:1px solid var(--color-canvas-default);border-radius:50%;justify-content:center;flex-shrink:0}.wizard-step-body{min-width:0;max-width:100%;color:var(--color-fg-default);flex:auto}.wizard-step-body .wizard-step-buttons{display:none;margin-top:16px;justify-content:flex-end}.wizard-step-container{border:0}.wizard-step-container .wizard-step-content{display:none;width:100%;padding:16px 24px 24px 24px;overflow:visible;font-size:14px}.wizard-step-container.wizard-step-container-icon .wizard-step-content{padding:24px}.wizard-step-header{padding-top:4px;padding-left:8px}.wizard-step-header>.wizard-step-title{min-width:0;margin-bottom:4px;flex:1 1 auto;color:var(--color-fg-muted)}.wizard-step-icon{display:none;height:96px;color:var(--color-accent-fg);background-image:linear-gradient(to right, var(--color-accent-subtle), var(--color-canvas-default));justify-content:center;align-items:center;border-top-left-radius:6px;border-top-right-radius:6px}.wizard-step[data-single-page-wizard-step-complete=true] .wizard-step-badge{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.wizard-step[data-single-page-wizard-step-complete=true] .wizard-step-item::before{background-color:var(--color-accent-emphasis)}.wizard-step[data-single-page-wizard-step-complete=true] .wizard-step-title{color:var(--color-fg-default)}.wizard-step[data-single-page-wizard-last-step=true] .wizard-step-badge .wizard-step-check{display:block}.wizard-step[data-single-page-wizard-last-step=true] .wizard-step-item::before{top:0;display:block;height:16px}@media(min-width: 768px){.wizard-step[data-single-page-wizard-last-step=true] .wizard-step-item::before{display:none}}.wizard-step[data-single-page-wizard-last-step=true] .wizard-step-icon{color:var(--color-success-fg);background-image:linear-gradient(to right, var(--color-success-subtle), var(--color-canvas-default))}.wizard-step:not([data-single-page-wizard-last-step=true]) .wizard-step-badge .wizard-step-check{display:none}.wizard-step:not([data-single-page-wizard-last-step=true]) .wizard-step-badge::before{content:attr(data-single-page-wizard-step)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-badge{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.wizard-step[data-single-page-wizard-step-current=true][data-single-page-wizard-last-step=true] .wizard-step-badge{background-color:var(--color-success-emphasis)}.wizard-step[data-single-page-wizard-step-current=true][data-single-page-wizard-last-step=true] .wizard-step-item::before{top:42px;height:16px}.wizard-step[data-single-page-wizard-step-current=true][data-single-page-wizard-last-step=true] .wizard-step-container-icon::after{background-image:linear-gradient(var(--color-success-subtle), var(--color-success-subtle))}.wizard-step[data-single-page-wizard-step-current=true]:not([data-single-page-wizard-last-step=true]) .wizard-step-container-icon::after{background-image:linear-gradient(var(--color-accent-subtle), var(--color-accent-subtle))}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-icon{display:flex}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-item{flex-direction:column}@media(min-width: 768px){.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-item{flex-direction:row}}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-body{margin-top:16px;margin-left:-16px}@media(min-width: 768px){.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-body{margin-top:0;margin-left:0}}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container{position:relative;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after,.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::before{background-color:var(--color-border-default)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::before,.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after{transform:rotate(90deg)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::before{position:absolute;top:-12px;right:100%;left:12px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after{top:-10px;left:11px}@media(min-width: 768px){.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::before,.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after{top:11px;left:-8px;transform:rotate(0)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container::after{margin-left:1px}}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container .wizard-step-header{display:none}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container .wizard-step-content-header{margin-bottom:16px}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container .wizard-step-title{color:var(--color-fg-default)}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-container .wizard-step-content{display:block}.wizard-step[data-single-page-wizard-step-current=true] .wizard-step-buttons{display:flex}.sub-nav-link{position:relative}.sub-nav-link::after{position:absolute;bottom:0;left:15%;width:70%;height:1px;content:"";background-color:var(--color-fg-default);transition:transform .25s ease-in-out;transform:scale(0)}.sub-nav-link:hover::after{background-color:var(--color-accent-fg)}.sub-nav-link:hover::after,.sub-nav-link.active::after{transform:scale(1)}.sub-nav-ctas{transition:opacity .5s}.sub-nav:not(.is-stuck) .sub-nav-ctas{visibility:hidden;opacity:0}.alert-label{color:var(--color-fg-on-emphasis)}.graph-canvas .alert-label--critical{fill:var(--color-danger-emphasis)}.graph-canvas .alert-label--high{fill:var(--color-severe-emphasis)}.graph-canvas .alert-label--moderate{fill:var(--color-attention-emphasis)}.graph-canvas .alert-label--low{fill:var(--color-neutral-emphasis)}.advisory-form{background-color:var(--color-canvas-subtle);border-top:1px solid var(--color-border-default)}.advisory-form .form-control{background-color:var(--color-canvas-default)}.advisory-form .form-actions{background-color:var(--color-canvas-default)}.advisory-form .previewable-comment-form{background-color:var(--color-canvas-default)}.advisory-credit-window-min{min-height:72px}.advisory-credit-window-max{max-height:370px}.emoji-tab.UnderlineNav-item{margin-right:4px}.emoji-tab[role=tab][aria-selected=true]{font-weight:600;color:var(--color-fg-default);border-bottom-color:var(--color-severe-emphasis)}.emoji-tab[role=tab][aria-selected=true] .UnderlineNav-octicon{color:var(--color-fg-muted)}.selected-emoji{z-index:100;background-color:var(--color-accent-emphasis)}.emoji-picker-container .emoji-picker-tab g-emoji{margin-right:auto;margin-left:4px}.emoji-tab .emoji-icon{width:auto}.emoji-picker-container{z-index:1;width:395px}.emoji-picker-tab{height:136px;padding-top:8px}.emoji-picker-emoji-width{width:32px;height:28px}.emoji-picker-tab .btn-outline:not(:hover){background-color:transparent}.emoji-picker-list{list-style:none}.notification-shelf{z-index:34}.notification-shelf.is-stuck{z-index:999}.notifications-v2 .archived-notifications-tab .notifications-list-item.notification-archived{display:block}.notifications-v2 .archived-notifications-tab .notifications-list-item.notification-read,.notifications-v2 .archived-notifications-tab .notifications-list-item.notification-unread{display:none}@media(max-width: 767px){.notifications-v2 .commit-ref .css-truncate-target{word-break:break-all;white-space:normal}}.notifications-v2 .mixed-notifications-tab .notifications-list-item.notification-archived,.notifications-v2 .mixed-notifications-tab .notifications-list-item.notification-read,.notifications-v2 .mixed-notifications-tab .notifications-list-item.notification-unread{display:block !important}@media(max-width: 543px){.notifications-v2 .Box{border-right:0;border-left:0;border-radius:0}}@media(max-width: 543px){.notifications-v2 .Box .Box-header{border-right:0 !important;border-left:0 !important;border-radius:0 !important}}@media(max-width: 767px){.notifications-v2 .AvatarStack--right{width:auto !important;min-width:auto !important;margin-left:53px !important}}@media(max-width: 767px){.notifications-v2 .AvatarStack--right .AvatarStack-body{position:relative !important;right:unset !important;margin-right:8px;flex-direction:row !important}}@media(max-width: 767px){.notifications-v2 .AvatarStack-body .avatar{position:relative !important;margin-right:-12px !important;margin-left:0 !important;border-right:1px solid #fff !important;border-left:0 !important}}.notifications-v2 .thread-subscription-status{background-color:transparent !important}.notifications-v2 .notification-action-mark-archived,.notifications-v2 .notification-action-mark-unread,.notifications-v2 .notification-action-star,.notifications-v2 .notification-action-unsubscribe{display:block !important}.notifications-v2 .notification-action-mark-read,.notifications-v2 .notification-action-mark-unarchived,.notifications-v2 .notification-action-subscribe,.notifications-v2 .notification-action-unstar,.notifications-v2 .notification-is-starred-icon{display:none !important}.notifications-v2 .notification-unsubscribed .notification-action-unsubscribe{display:none !important}.notifications-v2 .notification-unsubscribed .notification-action-subscribe{display:block !important}.notifications-v2 .notification-unread .notification-action-mark-read{display:block !important}.notifications-v2 .notification-unread .notification-action-mark-unread{display:none !important}.notifications-v2 .notification-archived .notification-action-mark-archived,.notifications-v2 .notification-archived .notification-action-mark-read,.notifications-v2 .notification-archived .notification-action-mark-unread{display:none !important}.notifications-v2 .notification-archived .notification-action-mark-unarchived{display:block !important}.notifications-v2 .notification-starred .notification-action-star{display:none !important}.notifications-v2 .notification-starred .notification-is-starred-icon{display:inline-block !important}.notifications-v2 .notification-starred .notification-action-unstar{display:block !important}.notifications-v2 .unwatch-suggestions-alert.flash .octicon{margin-right:4px}.notification-navigation .menu-item{color:var(--color-fg-muted)}.notification-navigation .menu-item::before{display:none}.notification-navigation .menu-item .octicon{color:var(--color-fg-muted)}.notification-navigation .menu-item.selected{background-color:var(--color-accent-subtle)}.notification-navigation .menu-item.selected .octicon{color:var(--color-accent-fg) !important}.notification-navigation .notification-configure-filters .octicon{color:var(--color-fg-muted) !important}.notification-navigation .notification-configure-filters:hover .octicon{color:var(--color-accent-fg) !important}.notifications-list-item .notification-list-item-link{color:var(--color-fg-muted) !important}.notifications-list-item.notification-read,.notifications-list-item.notification-archived{background-color:var(--color-notifications-row-read-bg) !important}.notifications-list-item.notification-unread{background-color:var(--color-notifications-row-bg) !important}.notifications-list-item.notification-unread .notification-list-item-link{color:var(--color-fg-default) !important}.notifications-list-item.notification-unread .notification-list-item-unread-indicator{background-color:var(--color-accent-emphasis)}.notifications-list-item:hover{background-color:var(--color-accent-subtle) !important;box-shadow:2px 0 0 var(--color-accent-emphasis) inset}.notifications-list-item:hover .notification-list-item-link{color:var(--color-fg-default) !important}.notifications-list-item:hover .notification-list-item-actions{display:flex !important}@media(max-width: 767px){.notifications-list-item:hover .notification-list-item-actions{display:none !important}}.notifications-list-item:hover .notification-list-item-actions .btn{color:var(--color-fg-muted) !important;background-color:var(--color-accent-subtle) !important;border:0 !important}.notifications-list-item:hover .notification-list-item-actions .btn .octicon{color:var(--color-notifications-button-text) !important}.notifications-list-item:hover .notification-list-item-actions .btn:hover{background-color:var(--color-notifications-button-hover-bg) !important}.notifications-list-item:hover .notification-list-item-actions .btn:hover .octicon{color:var(--color-notifications-button-hover-text) !important}.notifications-list-item:hover .notification-list-item-hide-on-hover{visibility:hidden !important}.notifications-list-item:hover .AvatarStack-body{background:var(--color-accent-subtle)}.notifications-list-item.navigation-focus{background-color:var(--color-accent-subtle) !important;box-shadow:2px 0 0 var(--color-accent-emphasis) inset}.notifications-list-item.navigation-focus .notification-list-item-link{color:var(--color-fg-default) !important}.notifications-list-item:last-child{border-bottom:0 !important}.notifications-list-item .Label{font-size:12px}.notifications-list-item .notification-list-item-unread-indicator{width:8px;height:8px;background:none}.notifications-list-item.notification-archived{display:none}.notifications-v2 .thread-subscribe-form{display:none !important}.notifications .read .avatar img{opacity:.5}.notifications .read .undo{display:block}.notifications .read .delete{visibility:hidden}.notifications .read[aria-selected=true],.notifications .read.navigation-focus{background-color:#f5f9fc}.notifications .muted .unmute{display:block}.notifications .muted .mute{display:none}.notifications .unmute{display:none}.notification-thread-subscription:first-child{border-top:1px solid var(--color-border-default)}.notification-subscription-filters-repo .no-results{display:none}.notifications-list{float:left;width:100%}.thread-subscription-status{padding:8px;margin:40px 0 16px;color:var(--color-fg-muted);border:1px solid var(--color-border-default);border-radius:6px}.thread-subscription-status .btn-sm>.octicon{margin-right:1px}.thread-subscription-status .reason{display:inline-block;margin:0 8px;vertical-align:middle}.thread-subscription-status .thread-subscribe-form{display:inline-block;vertical-align:middle}.subscription .loading{opacity:.5}.progress-pjax-loader{z-index:99999;height:2px !important;background:transparent;opacity:0;transition:opacity .4s linear .4s}.progress-pjax-loader.is-loading{opacity:1;transition:none}.progress-pjax-loader>.progress-pjax-loader-bar{background-color:#79b8ff;transition:width .4s ease}.starred .starred-button-icon{color:var(--color-scale-yellow-2)}.user-lists-menu-action{color:var(--color-fg-default)}.user-lists-menu-action:hover:not(:disabled){color:var(--color-fg-default);background-color:var(--color-canvas-subtle)}.user-lists-menu-action:focus:not(:disabled){color:var(--color-fg-default);outline:2px solid var(--color-accent-emphasis);outline-offset:2px}.starring-container .BtnGroup-parent:active{z-index:auto}.shelf{padding-top:16px;margin-bottom:16px;background-color:var(--color-canvas-default);border-bottom:1px solid var(--color-border-muted)}.shelf .container{position:relative}.intro-shelf{margin-top:0;background-image:linear-gradient(180deg, var(--color-canvas-default-transparent), var(--color-canvas-default)),linear-gradient(70deg, var(--color-accent-subtle) 32%, var(--color-success-subtle))}.orgs-help-shelf{padding-top:16px;padding-bottom:16px;margin-top:-16px;margin-bottom:16px}.orgs-help-shelf .orgs-help-title{font-size:30px;font-weight:400}.orgs-help-shelf-content{width:800px;margin:50px auto;text-align:center}.orgs-help-shelf-content .orgs-help-lead{padding-right:45px;padding-left:45px;font-size:18px}.orgs-help-shelf-content .orgs-help-divider{display:block;width:150px;margin:40px auto;content:"";border-top:1px solid var(--color-border-default)}.orgs-help-lead{margin-top:8px;margin-bottom:32px;color:var(--color-fg-muted)}.orgs-help-items{margin-bottom:40px}.orgs-help-item-octicon{width:70px;height:70px;margin:0 auto 16px;text-align:center;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:50px}.orgs-help-item-octicon .octicon{margin-top:16px;color:var(--color-accent-fg)}.orgs-help-item-title{margin-bottom:8px;font-weight:400}.orgs-help-item-content{margin-top:0;font-size:14px;color:var(--color-fg-muted)}.orgs-help-dismiss{float:right;margin-top:4px;margin-right:8px;font-size:12px;color:var(--color-fg-muted)}.orgs-help-dismiss:hover{color:var(--color-accent-fg);text-decoration:none}.orgs-help-dismiss .octicon{position:relative;top:1px}.orgs-help-title{margin-top:0;margin-bottom:0}.org-sso,.business-sso{width:340px;margin:0 auto}.org-sso .sso-title,.business-sso .sso-title{font-size:24px;font-weight:300;letter-spacing:-0.5px}.org-sso .org-sso-panel,.org-sso .business-sso-panel,.business-sso .org-sso-panel,.business-sso .business-sso-panel{padding:16px;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.org-sso .sso-recovery-callout,.business-sso .sso-recovery-callout{padding:16px 8px;text-align:center;border:1px solid var(--color-border-muted);border-radius:6px}.sso-modal{padding:16px}.sso-modal .org-sso,.sso-modal .business-sso{width:auto}.sso-modal .org-sso .org-sso-panel,.sso-modal .business-sso .business-sso-panel{border:0}.sso-modal .sso-prompt-success,.sso-modal .sso-prompt-error{display:none}.sso-modal.success .sso-prompt-default{display:none}.sso-modal.success .sso-prompt-success{display:block}.sso-modal.error .sso-prompt-default{display:none}.sso-modal.error .sso-prompt-error{display:block}.sso-modal.error .flash-error{margin-right:-32px;margin-left:-32px;border-right:0;border-left:0;border-radius:0}.tag-input-container{position:relative}.tag-input-container .suggester{position:absolute;z-index:100;width:100%;margin-top:-1px}.tag-input-container ul{list-style:none}.tag-input input{float:left;padding-left:2px;margin:0;background:none;border:0;box-shadow:none}.tag-input input:focus{box-shadow:none}.task-list-item{list-style-type:none}.task-list-item label{font-weight:400}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:4px}.task-list-item .handle{display:none}.task-list-item-checkbox{margin:0 .2em .25em -1.6em;vertical-align:middle}.contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.convert-to-issue-button{top:2px;right:4px;padding:0 2px;margin-right:8px;-webkit-user-select:none;user-select:none;background-color:var(--color-canvas-subtle)}.convert-to-issue-button .octicon{fill:var(--color-fg-default)}.convert-to-issue-button:hover .octicon,.convert-to-issue-button:focus .octicon{fill:var(--color-accent-fg)}.reorderable-task-lists .markdown-body .contains-task-list{padding:0}.reorderable-task-lists .markdown-body li:not(.task-list-item){margin-left:24px}.reorderable-task-lists .markdown-body ol:not(.contains-task-list) li,.reorderable-task-lists .markdown-body ul:not(.contains-task-list) li{margin-left:0}.reorderable-task-lists .markdown-body .task-list-item{padding:2px 15px 2px 42px;margin-right:-15px;margin-left:-15px;line-height:1.5;border:0}.reorderable-task-lists .markdown-body .task-list-item+.task-list-item{margin-top:0}.reorderable-task-lists .markdown-body .task-list-item .handle{display:block;float:left;width:20px;padding:2px 0 0 2px;margin-left:-43px;opacity:0}.reorderable-task-lists .markdown-body .task-list-item .drag-handle{fill:var(--color-fg-default)}.reorderable-task-lists .markdown-body .task-list-item.hovered>.handle{opacity:1}.reorderable-task-lists .markdown-body .task-list-item.is-dragging{opacity:0}.reorderable-task-lists .markdown-body .contains-task-list:dir(rtl) .task-list-item{margin-right:0}.comment-body .reference{font-weight:600;white-space:nowrap}.comment-body .issue-link{white-space:normal}.comment-body .issue-link .issue-shorthand{font-weight:400;color:var(--color-fg-muted)}.comment-body .issue-link:hover .issue-shorthand,.comment-body .issue-link:focus .issue-shorthand{color:var(--color-accent-fg)}.review-comment-contents .markdown-body .task-list-item{padding-left:42px;margin-right:-12px;margin-left:-12px;border-top-left-radius:6px;border-bottom-left-radius:6px}.convert-to-issue-enabled .task-list-item .contains-task-list{padding:4px 15px 0 43px;margin:0 -15px 0 -42px}.convert-to-issue-enabled .task-list-item.hovered{background-color:var(--color-canvas-subtle)}.convert-to-issue-enabled .task-list-item.hovered .contains-task-list{background-color:var(--color-canvas-default)}.convert-to-issue-enabled .task-list-item.hovered>.convert-to-issue-button{z-index:20;width:auto;height:auto;overflow:visible;clip:auto}.convert-to-issue-enabled .task-list-item.hovered>.convert-to-issue-button svg{overflow:visible}.convert-to-issue-enabled .task-list-item.is-loading{color:var(--color-fg-muted);background-color:var(--color-accent-subtle);border-top:1px solid var(--color-accent-subtle);border-bottom:1px solid var(--color-canvas-default);border-left:1px solid var(--color-canvas-default)}.convert-to-issue-enabled .task-list-item.is-loading ul{color:var(--color-fg-default);background-color:var(--color-canvas-default)}.convert-to-issue-enabled .task-list-item.is-loading>.handle{opacity:0}.toolbar-commenting .dropdown-menu-s{width:100px}.toolbar-commenting .dropdown-item{font-weight:600;line-height:1em;background:none;border:0}.toolbar-commenting .dropdown-item:hover{color:var(--color-accent-fg)}.toolbar-commenting .dropdown-item:focus{color:var(--color-accent-fg);outline:none}.toolbar-item{display:block;float:left;padding:4px;cursor:pointer}.toolbar-item.dropdown,.toolbar-item.select-menu{padding:0}.toolbar-item .select-menu-modal{margin-top:2px}.toolbar-item .select-menu-item{padding-left:8px}.topic-tag{display:inline-block;padding:.3em .9em;margin:0 .5em .5em 0;white-space:nowrap;background-color:var(--color-accent-subtle);border-radius:6px}.topic-tag-link:hover{text-decoration:none;background-color:#def}.delete-topic-button,.delete-topic-link{display:inline-block;width:26px;color:var(--color-fg-muted);background-color:var(--color-accent-subtle);border-top:0;border-right:0;border-bottom:0;border-left:1px solid #b4d9ff;border-top-right-radius:6px;border-bottom-right-radius:6px}.delete-topic-button:hover,.delete-topic-link:hover{background-color:#def}.topic-tag-action:hover .delete-topic-link{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.topic-tag-outline{background:transparent;box-shadow:inset 0 0 0 1px #c8e1ff}.delete-topic-link{padding-right:8px;padding-left:8px;margin-left:8px;line-height:1.75}.delete-topic-link:hover{text-decoration:none}.invalid-topic .delete-topic-button{color:var(--color-fg-default);background-color:var(--color-danger-subtle);border-left-color:var(--color-danger-emphasis)}.invalid-topic .delete-topic-button:hover{background-color:#ffc8ce}.topic-tag-action{display:inline-flex;align-items:center;padding-left:.8em;margin:.4em .4em 0 0;background-color:var(--color-accent-subtle);border-radius:6px}.topic-tag-action.invalid-topic{color:var(--color-fg-default);background-color:var(--color-danger-subtle);border-color:var(--color-danger-emphasis)}.topic-tag-action .add-topic-button,.topic-tag-action .remove-topic-button{display:inline-block;width:26px;font-size:14px;color:var(--color-fg-muted);background-color:var(--color-accent-subtle);border-top:0;border-right:0;border-bottom:0;border-left:1px solid #b4d9ff}.topic-tag-action .add-topic-button:hover,.topic-tag-action .remove-topic-button:hover{color:var(--color-fg-on-emphasis)}.topic-tag-action .add-topic-button:hover{background-color:var(--color-success-emphasis)}.topic-tag-action .remove-topic-button{border-right:0;border-top-right-radius:6px;border-bottom-right-radius:6px}.topic-tag-action .remove-topic-button:hover{background-color:var(--color-danger-emphasis)}.topic-input-container .tag-input{width:908px;cursor:text}.topic-input-container .tag-input.org-repo-tag-input{width:100%}.topic-input-container .tag-input .tag-input-inner{min-height:26px;background-image:none}.topic-input-container .topic-tag{margin-top:2px}.topic .css-truncate-target{max-width:75%}.topic-list .topic-list-item+.topic-list-item{border-top:1px solid var(--color-border-default)}.topic-box .starred{color:var(--color-attention-fg);border:0}.topic-box .unstarred{color:var(--color-fg-muted);border:0}.user-status-suggestions{height:98px;transition:height 100ms ease-out,opacity 200ms ease-in}.user-status-suggestions.collapsed{height:0;opacity:0}.user-status-container,.user-status-container .team-mention,.user-status-container .user-mention{white-space:normal}.user-status-container{word-break:break-word;word-wrap:break-word}.user-status-container .input-group-button .btn{width:46px;height:34px;line-height:0}.user-status-container .input-group-button g-emoji{font-size:1.3em;line-height:18px}.user-status-container .team-mention,.user-status-container .user-mention{white-space:normal}.user-status-container img.emoji{width:18px;height:18px}.emoji-status-width{width:20px}.user-status-org-button .user-status-org-detail{color:var(--color-fg-muted)}.user-status-org-button:hover .user-status-org-detail,.user-status-org-button:focus .user-status-org-detail{color:var(--color-fg-on-emphasis)}.user-status-org-button.selected{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.user-status-org-button.selected .user-status-org-detail{color:var(--color-fg-on-emphasis)}.user-status-limited-availability-compact{width:8px;height:8px;background-color:var(--color-attention-emphasis)}.user-status-message-wrapper{color:var(--color-fg-default)}.toggle-user-status-edit:hover .user-status-message-wrapper,.toggle-user-status-edit:focus .user-status-message-wrapper{color:var(--color-accent-fg)}.user-status-message-wrapper div{display:inline}.user-status-header g-emoji{font-size:1.25em}.user-status-message-wrapper .g-emoji{display:inline-block}.user-status-limited-availability-container{margin-top:16px;margin-bottom:16px}@media only screen and (max-height: 560px){.user-status-suggestions{display:none}.user-status-limited-availability-container{margin-top:8px;margin-bottom:8px}}.user-status-circle-badge-container{position:absolute;bottom:0;left:100%;z-index:2;width:38px;height:38px;margin-bottom:32px;margin-left:-40px}.user-status-circle-badge-container .user-status-emoji-container{width:20px;height:20px;margin-right:0 !important}.user-status-circle-badge-container .user-status-message-wrapper{width:0;padding-top:0 !important;overflow:hidden;line-height:20px;opacity:0;transition:.1s ease}.user-status-circle-badge-container .user-status-busy{background-color:var(--color-canvas-default) !important;background-image:linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle))}.user-status-circle-badge-container.user-status-editable:hover,.user-status-circle-badge-container.user-status-has-content:hover{width:auto;max-width:544px}.user-status-circle-badge-container.user-status-editable:hover .user-status-emoji-container,.user-status-circle-badge-container.user-status-has-content:hover .user-status-emoji-container{margin-right:8px !important}.user-status-circle-badge-container.user-status-editable:hover .user-status-message-wrapper,.user-status-circle-badge-container.user-status-has-content:hover .user-status-message-wrapper{width:100%;opacity:1}.user-status-circle-badge-container.user-status-editable:hover .user-status-circle-badge,.user-status-circle-badge-container.user-status-has-content:hover .user-status-circle-badge{box-shadow:var(--color-shadow-medium)}.user-status-circle-badge-container .user-status-message-wrapper .team-mention,.user-status-circle-badge-container .user-status-message-wrapper .user-mention{white-space:nowrap}.user-status-circle-badge{background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:2em;box-shadow:var(--color-shadow-small)}.notification-focus-mode-sidebar{position:fixed;top:55px;right:-340px;z-index:100;width:340px;height:100vh}.notification-focus-mode-sidebar.active{right:40px}.notification-focus-mode-sidebar .focus-pagination-next-item{height:1px}.notification-focus-mode-sidebar .notification-focus-mode-header{z-index:101}.notification-focus-mode-sidebar .notification-focus-mode-list{height:60vh}.focus-notification-item.current-focused-item{background:var(--color-border-muted) !important}.focus-notification-item .focus-item-controls{display:none !important}.focus-notification-item.navigation-focus .focus-item-controls{display:flex !important}.focus-notification-item.navigation-focus .focus-item-metadata{display:none !important}.command-palette{box-shadow:var(--color-overlay-shadow)}.command-palette-details-summary{list-style:none}.command-palette-details-summary::-webkit-details-marker{display:none}@media(min-width: 768px){.command-palette-details-dialog{width:512px}}@media(min-width: 1012px){.command-palette-details-dialog{width:640px}}@media(min-width: 1280px){.command-palette-details-dialog{width:720px}}.item-stack-transition-height,.page-stack-transition-height{overflow-y:scroll;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);transition-duration:.2s;transition-property:max-height,min-height}.item-stack-transition-height.no-transition,.page-stack-transition-height.no-transition{transition-duration:0s}.command-palette-input-group{position:relative;z-index:0;padding-left:0;color:var(--color-fg-subtle)}.command-palette-input-group .command-palette-typeahead{position:absolute;z-index:1;padding:inherit;pointer-events:none}.command-palette-input-group .command-palette-typeahead .typeahead-segment{white-space:pre}.command-palette-input-group .command-palette-typeahead .typeahead-segment.input-mirror{opacity:0}.command-palette-input-group .typeahead-input{padding:inherit}.command-palette-input-clear-button{color:var(--color-fg-subtle)}.command-palette-input-clear-button:hover{color:var(--color-fg-muted)}@media(min-width: 1012px){.hx_actions-sidebar{max-width:320px}}.hx_text-blue-light{color:var(--color-accent-fg) !important}.hx_actions_timer_input{-moz-appearance:textfield}.hx_actions_timer_input::-webkit-outer-spin-button,.hx_actions_timer_input::-webkit-inner-spin-button{-webkit-appearance:none}.hx_anim-fade-out{animation-name:hx-fade-out;animation-duration:1s;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes hx-fade-out{0%{opacity:1}100%{opacity:0}}.AvatarStack--large{min-width:44px;height:32px}.AvatarStack--large.AvatarStack--two{min-width:48px}.AvatarStack--large.AvatarStack--three-plus{min-width:52px}.AvatarStack--large .AvatarStack-body .avatar{width:32px;height:32px;margin-right:-28px}.AvatarStack--large .AvatarStack-body:hover .avatar{margin-right:4px}.AvatarStack--large .avatar.avatar-more:before{width:32px}.AvatarStack--large .avatar.avatar-more:after{width:30px}.AvatarStack--large .avatar.avatar-more:after,.AvatarStack--large .avatar.avatar-more:before{height:32px}.hx_avatar_stack_commit .AvatarStack{height:24px;min-width:24px}.hx_avatar_stack_commit .AvatarStack .avatar{width:24px;height:24px}.hx_avatar_stack_commit .AvatarStack.AvatarStack--two{min-width:40px}.hx_avatar_stack_commit .AvatarStack.AvatarStack--three-plus{min-width:44px}.hx_flex-avatar-stack{display:flex;align-items:center}.hx_flex-avatar-stack-item{min-width:0;max-width:24px}.hx_flex-avatar-stack-item .avatar{display:block;border:2px solid var(--color-canvas-default);background-color:var(--color-canvas-default);box-shadow:none}.hx_flex-avatar-stack-item:last-of-type{flex-shrink:0;max-width:none}.Box-row--focus-gray.navigation-focus .AvatarStack-body{background-color:var(--color-canvas-subtle)}.AvatarStack-body:not(:hover){background-color:transparent}.AvatarStack--three-plus.AvatarStack--three-plus .avatar-more{display:none}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body .avatar:nth-child(n+4){display:flex;opacity:1}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover) .avatar:nth-of-type(n + 6){display:none;opacity:0}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body>.avatar:nth-of-type(1){z-index:5}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body>.avatar:nth-of-type(2){z-index:4}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body>.avatar:nth-of-type(3){z-index:3}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body>.avatar:nth-of-type(4){z-index:2}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body>.avatar:nth-of-type(5){z-index:1}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more+.avatar:nth-of-type(3) img{opacity:.5}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(4) img{opacity:.33}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(5) img{opacity:.25}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more+.avatar:nth-of-type(3){margin-right:0;margin-left:-6px}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(4){margin-right:0;margin-left:-18px}.AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(5){margin-right:0;margin-left:-18px}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--right .AvatarStack-body:not(:hover)>.avatar-more+.avatar:nth-of-type(3){margin-right:-6px;margin-left:0}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--right .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(4){margin-right:-18px;margin-left:0}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--right .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(5){margin-right:-18px;margin-left:0}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--large .AvatarStack-body:not(:hover)>.avatar-more+.avatar:nth-of-type(3){margin-right:0;margin-left:-2px}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--large .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(4){margin-right:0;margin-left:-30px}.AvatarStack--three-plus.AvatarStack--three-plus.AvatarStack--large .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(5){margin-right:0;margin-left:-30px}.hx_avatar_stack_commit .AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more+.avatar:nth-of-type(3){margin-right:0;margin-left:-10px}.hx_avatar_stack_commit .AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(4){margin-right:0;margin-left:-21px}.hx_avatar_stack_commit .AvatarStack--three-plus.AvatarStack--three-plus .AvatarStack-body:not(:hover)>.avatar-more~.avatar:nth-of-type(5){margin-right:0;margin-left:-21px}.hx_badge-search-container{cursor:text}.hx_badge-search-container .hx_badge-input{border:0;outline:0;box-shadow:none}.hx_badge-search-container .hx_badge-input:focus{border:0 !important;box-shadow:none !important}.hx_badge-search-container .hx_badge-input::placeholder{font-size:12px}.hx_badge-search-container .hx_badge-input-inline{height:30px}.hx_badge{cursor:pointer}.hx_badge[aria-pressed=true]{color:var(--color-fg-on-emphasis) !important;background-color:var(--color-accent-emphasis) !important;border-color:var(--color-accent-emphasis) !important}.hx_badge-align{height:40px !important}.hx_Box--firstRowRounded0 .Box-row:first-of-type{border-top-left-radius:0;border-top-right-radius:0}.Box-row:first-of-type{border-top-color:transparent}.hx_Box-row--with-top-border:first-of-type{border-top-color:inherit}.Box--overlay [data-close-dialog],.Box-overlay--narrow [data-close-dialog],.Box-overlay--wide [data-close-dialog]{z-index:1}.dropdown-item.btn-link:disabled,.dropdown-item.btn-link:disabled:hover,.dropdown-item.btn-link[aria-disabled=true],.dropdown-item.btn-link[aria-disabled=true]:hover{background-color:transparent}@media(hover: hover){.hx_menuitem--focus{background-color:var(--color-canvas-subtle)}}@media(-webkit-min-device-pixel-ratio: 2)and (-webkit-min-device-pixel-ratio: 0), (-webkit-min-device-pixel-ratio: 2)and (min-resolution: 0.001dpcm){g-emoji{font-size:1.25em}}.hx_create-pr-button:hover{border-right-width:0}.hx_create-pr-button:hover+.BtnGroup-parent .BtnGroup-item{border-left-width:1px}summary[type=button].btn{-webkit-appearance:none}.form-control:-webkit-autofill{box-shadow:inset 0 0 0 32px var(--color-canvas-default) !important}.form-control:-webkit-autofill:focus{box-shadow:inset 0 0 0 32px var(--color-canvas-default),var(--color-primer-shadow-focus) !important}.form-control:-webkit-autofill{-webkit-text-fill-color:var(--color-fg-default)}::-webkit-calendar-picker-indicator{filter:invert(50%)}[data-color-mode=light][data-light-theme*=dark],[data-color-mode=dark][data-dark-theme*=dark]{--color-workflow-card-connector:var(--color-scale-gray-5);--color-workflow-card-connector-bg:var(--color-scale-gray-5);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-5);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-5);--color-workflow-card-bg:var(--color-scale-gray-7);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(27, 31, 35, 0.04);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-5);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-6);--color-discussions-state-answered-icon:var(--color-scale-green-3);--color-bg-discussions-row-emoji-box:var(--color-scale-gray-6);--color-notifications-button-text:var(--color-scale-white);--color-notifications-button-hover-text:var(--color-scale-white);--color-notifications-button-hover-bg:var(--color-scale-blue-4);--color-notifications-row-read-bg:var(--color-canvas-default);--color-notifications-row-bg:var(--color-canvas-subtle);--color-icon-directory:var(--color-fg-muted);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#631c03;--color-calendar-halloween-graph-day-L2-bg:#bd561d;--color-calendar-halloween-graph-day-L3-bg:#fa7a18;--color-calendar-halloween-graph-day-L4-bg:#fddf68;--color-calendar-graph-day-bg:var(--color-scale-gray-8);--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#0e4429;--color-calendar-graph-day-L2-bg:#006d32;--color-calendar-graph-day-L3-bg:#26a641;--color-calendar-graph-day-L4-bg:#39d353;--color-calendar-graph-day-L1-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L2-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L3-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L4-border:rgba(255, 255, 255, 0.05);--color-user-mention-fg:var(--color-scale-yellow-0);--color-user-mention-bg:var(--color-scale-yellow-8);--color-text-white:var(--color-scale-white)}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark]{--color-workflow-card-connector:var(--color-scale-gray-5);--color-workflow-card-connector-bg:var(--color-scale-gray-5);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-5);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-5);--color-workflow-card-bg:var(--color-scale-gray-7);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(27, 31, 35, 0.04);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-5);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-6);--color-discussions-state-answered-icon:var(--color-scale-green-3);--color-bg-discussions-row-emoji-box:var(--color-scale-gray-6);--color-notifications-button-text:var(--color-scale-white);--color-notifications-button-hover-text:var(--color-scale-white);--color-notifications-button-hover-bg:var(--color-scale-blue-4);--color-notifications-row-read-bg:var(--color-canvas-default);--color-notifications-row-bg:var(--color-canvas-subtle);--color-icon-directory:var(--color-fg-muted);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#631c03;--color-calendar-halloween-graph-day-L2-bg:#bd561d;--color-calendar-halloween-graph-day-L3-bg:#fa7a18;--color-calendar-halloween-graph-day-L4-bg:#fddf68;--color-calendar-graph-day-bg:var(--color-scale-gray-8);--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#0e4429;--color-calendar-graph-day-L2-bg:#006d32;--color-calendar-graph-day-L3-bg:#26a641;--color-calendar-graph-day-L4-bg:#39d353;--color-calendar-graph-day-L1-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L2-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L3-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L4-border:rgba(255, 255, 255, 0.05);--color-user-mention-fg:var(--color-scale-yellow-0);--color-user-mention-bg:var(--color-scale-yellow-8);--color-text-white:var(--color-scale-white)}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark]{--color-workflow-card-connector:var(--color-scale-gray-5);--color-workflow-card-connector-bg:var(--color-scale-gray-5);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-5);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-5);--color-workflow-card-bg:var(--color-scale-gray-7);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(27, 31, 35, 0.04);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-5);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-6);--color-discussions-state-answered-icon:var(--color-scale-green-3);--color-bg-discussions-row-emoji-box:var(--color-scale-gray-6);--color-notifications-button-text:var(--color-scale-white);--color-notifications-button-hover-text:var(--color-scale-white);--color-notifications-button-hover-bg:var(--color-scale-blue-4);--color-notifications-row-read-bg:var(--color-canvas-default);--color-notifications-row-bg:var(--color-canvas-subtle);--color-icon-directory:var(--color-fg-muted);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#631c03;--color-calendar-halloween-graph-day-L2-bg:#bd561d;--color-calendar-halloween-graph-day-L3-bg:#fa7a18;--color-calendar-halloween-graph-day-L4-bg:#fddf68;--color-calendar-graph-day-bg:var(--color-scale-gray-8);--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#0e4429;--color-calendar-graph-day-L2-bg:#006d32;--color-calendar-graph-day-L3-bg:#26a641;--color-calendar-graph-day-L4-bg:#39d353;--color-calendar-graph-day-L1-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L2-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L3-border:rgba(255, 255, 255, 0.05);--color-calendar-graph-day-L4-border:rgba(255, 255, 255, 0.05);--color-user-mention-fg:var(--color-scale-yellow-0);--color-user-mention-bg:var(--color-scale-yellow-8);--color-text-white:var(--color-scale-white)}}:root,[data-color-mode=light][data-light-theme*=light],[data-color-mode=dark][data-dark-theme*=light]{--color-workflow-card-connector:var(--color-scale-gray-3);--color-workflow-card-connector-bg:var(--color-scale-gray-3);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-4);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-4);--color-workflow-card-bg:var(--color-scale-white);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(0, 0, 0, 0);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-4);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-2);--color-discussions-state-answered-icon:var(--color-scale-white);--color-bg-discussions-row-emoji-box:rgba(209, 213, 218, 0.5);--color-notifications-button-text:var(--color-fg-muted);--color-notifications-button-hover-text:var(--color-fg-default);--color-notifications-button-hover-bg:var(--color-scale-gray-2);--color-notifications-row-read-bg:var(--color-canvas-subtle);--color-notifications-row-bg:var(--color-scale-white);--color-icon-directory:var(--color-scale-blue-3);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#ffee4a;--color-calendar-halloween-graph-day-L2-bg:#ffc501;--color-calendar-halloween-graph-day-L3-bg:#fe9600;--color-calendar-halloween-graph-day-L4-bg:#03001c;--color-calendar-graph-day-bg:#ebedf0;--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#9be9a8;--color-calendar-graph-day-L2-bg:#40c463;--color-calendar-graph-day-L3-bg:#30a14e;--color-calendar-graph-day-L4-bg:#216e39;--color-calendar-graph-day-L1-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L2-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L3-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L4-border:rgba(27, 31, 35, 0.06);--color-user-mention-fg:var(--color-fg-default);--color-user-mention-bg:var(--color-attention-subtle);--color-text-white:var(--color-scale-white)}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=light]{--color-workflow-card-connector:var(--color-scale-gray-3);--color-workflow-card-connector-bg:var(--color-scale-gray-3);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-4);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-4);--color-workflow-card-bg:var(--color-scale-white);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(0, 0, 0, 0);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-4);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-2);--color-discussions-state-answered-icon:var(--color-scale-white);--color-bg-discussions-row-emoji-box:rgba(209, 213, 218, 0.5);--color-notifications-button-text:var(--color-fg-muted);--color-notifications-button-hover-text:var(--color-fg-default);--color-notifications-button-hover-bg:var(--color-scale-gray-2);--color-notifications-row-read-bg:var(--color-canvas-subtle);--color-notifications-row-bg:var(--color-scale-white);--color-icon-directory:var(--color-scale-blue-3);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#ffee4a;--color-calendar-halloween-graph-day-L2-bg:#ffc501;--color-calendar-halloween-graph-day-L3-bg:#fe9600;--color-calendar-halloween-graph-day-L4-bg:#03001c;--color-calendar-graph-day-bg:#ebedf0;--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#9be9a8;--color-calendar-graph-day-L2-bg:#40c463;--color-calendar-graph-day-L3-bg:#30a14e;--color-calendar-graph-day-L4-bg:#216e39;--color-calendar-graph-day-L1-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L2-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L3-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L4-border:rgba(27, 31, 35, 0.06);--color-user-mention-fg:var(--color-fg-default);--color-user-mention-bg:var(--color-attention-subtle);--color-text-white:var(--color-scale-white)}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=light]{--color-workflow-card-connector:var(--color-scale-gray-3);--color-workflow-card-connector-bg:var(--color-scale-gray-3);--color-workflow-card-connector-inactive:var(--color-border-default);--color-workflow-card-connector-inactive-bg:var(--color-border-default);--color-workflow-card-connector-highlight:var(--color-scale-blue-4);--color-workflow-card-connector-highlight-bg:var(--color-scale-blue-4);--color-workflow-card-bg:var(--color-scale-white);--color-workflow-card-inactive-bg:var(--color-canvas-inset);--color-workflow-card-header-shadow:rgba(0, 0, 0, 0);--color-workflow-card-progress-complete-bg:var(--color-scale-blue-4);--color-workflow-card-progress-incomplete-bg:var(--color-scale-gray-2);--color-discussions-state-answered-icon:var(--color-scale-white);--color-bg-discussions-row-emoji-box:rgba(209, 213, 218, 0.5);--color-notifications-button-text:var(--color-fg-muted);--color-notifications-button-hover-text:var(--color-fg-default);--color-notifications-button-hover-bg:var(--color-scale-gray-2);--color-notifications-row-read-bg:var(--color-canvas-subtle);--color-notifications-row-bg:var(--color-scale-white);--color-icon-directory:var(--color-scale-blue-3);--color-checks-step-error-icon:var(--color-scale-red-4);--color-calendar-halloween-graph-day-L1-bg:#ffee4a;--color-calendar-halloween-graph-day-L2-bg:#ffc501;--color-calendar-halloween-graph-day-L3-bg:#fe9600;--color-calendar-halloween-graph-day-L4-bg:#03001c;--color-calendar-graph-day-bg:#ebedf0;--color-calendar-graph-day-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L1-bg:#9be9a8;--color-calendar-graph-day-L2-bg:#40c463;--color-calendar-graph-day-L3-bg:#30a14e;--color-calendar-graph-day-L4-bg:#216e39;--color-calendar-graph-day-L1-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L2-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L3-border:rgba(27, 31, 35, 0.06);--color-calendar-graph-day-L4-border:rgba(27, 31, 35, 0.06);--color-user-mention-fg:var(--color-fg-default);--color-user-mention-bg:var(--color-attention-subtle);--color-text-white:var(--color-scale-white)}}.hx_color-icon-directory{color:var(--color-icon-directory)}:checked+.hx_theme-toggle{border-color:var(--color-accent-emphasis)}.hx_comment-box--tip:after{background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default)) !important}.hx_keyword-hl{background-color:var(--color-search-keyword-hl)}.hx_dot-fill-pending-icon{color:var(--color-attention-emphasis) !important}@media(max-width: 543px){[data-color-mode=light][data-light-theme*=dark],[data-color-mode=dark][data-dark-theme*=dark]{--color-fg-default: var(--color-scale-gray-0);--color-canvas-default: var(--color-scale-black);--color-canvas-default: var(--color-scale-gray-8)}}@media(max-width: 543px)and (prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark]{--color-fg-default: var(--color-scale-gray-0);--color-canvas-default: var(--color-scale-black);--color-canvas-default: var(--color-scale-gray-8)}}@media(max-width: 543px)and (prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark]{--color-fg-default: var(--color-scale-gray-0);--color-canvas-default: var(--color-scale-black);--color-canvas-default: var(--color-scale-gray-8)}}:root[data-color-mode=dark] .entry-content [href$="#gh-light-mode-only"],:root[data-color-mode=dark] .comment-body [href$="#gh-light-mode-only"],:root[data-color-mode=dark] .readme [href$="#gh-light-mode-only"]{display:none}:root[data-color-mode=light] .entry-content [href$="#gh-dark-mode-only"],:root[data-color-mode=light] .comment-body [href$="#gh-dark-mode-only"],:root[data-color-mode=light] .readme [href$="#gh-dark-mode-only"]{display:none}@media(prefers-color-scheme: dark){:root[data-color-mode=auto] .entry-content [href$="#gh-light-mode-only"],:root[data-color-mode=auto] .comment-body [href$="#gh-light-mode-only"],:root[data-color-mode=auto] .readme [href$="#gh-light-mode-only"]{display:none}}@media(prefers-color-scheme: light){:root[data-color-mode=auto] .entry-content [href$="#gh-dark-mode-only"],:root[data-color-mode=auto] .comment-body [href$="#gh-dark-mode-only"],:root[data-color-mode=auto] .readme [href$="#gh-dark-mode-only"]{display:none}}.dropdown-item:focus [class*=color-text-],.dropdown-item:hover [class*=color-text-]{color:inherit !important}.filter-item.selected [class*=color-text-]{color:inherit !important}body:not(.intent-mouse) .hx_focus-input:focus+.hx_focus-target{box-shadow:var(--color-btn-shadow-input-focus)}.global-focus-styles .form-control:focus,.global-focus-styles .form-control.focus,.global-focus-styles .form-select:focus,.global-focus-styles .form-select.focus{border:solid 1px transparent !important;box-shadow:unset !important}.global-focus-styles .upload-enabled.focused{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset;outline-offset:0}.global-focus-styles .upload-enabled.focused .form-control{box-shadow:none}.global-focus-styles .upload-enabled.focused .drag-and-drop{border-color:var(--color-accent-fg)}.global-focus-styles .form-group.warn .form-control:not(:focus,:focus-visible){border-color:var(--color-attention-emphasis)}.global-focus-styles .form-group.errored .form-control:not(:focus,:focus-visible){border-color:var(--color-danger-emphasis)}.global-focus-styles .header-search-wrapper.focus{outline-offset:0}.global-focus-styles .header-search-wrapper.focus:focus-within .form-control{outline:none}.global-focus-styles .input-group:focus-within button{outline-offset:0}.global-focus-styles .details-reset>summary:focus{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles .details-reset>summary:focus:not(:focus-visible){outline:solid 1px transparent}.global-focus-styles .details-reset>summary:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles .details-overlay>summary:focus{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles .details-overlay>summary:focus:not(:focus-visible){outline:solid 1px transparent}.global-focus-styles .details-overlay>summary:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles a:focus,.global-focus-styles button:focus,.global-focus-styles [role=button]:focus,.global-focus-styles input:focus,.global-focus-styles textarea:focus,.global-focus-styles select:focus{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles a:focus:not(:focus-visible),.global-focus-styles button:focus:not(:focus-visible),.global-focus-styles [role=button]:focus:not(:focus-visible),.global-focus-styles input:focus:not(:focus-visible),.global-focus-styles textarea:focus:not(:focus-visible),.global-focus-styles select:focus:not(:focus-visible){outline:solid 1px transparent}.global-focus-styles a:focus-visible,.global-focus-styles button:focus-visible,.global-focus-styles [role=button]:focus-visible,.global-focus-styles input:focus-visible,.global-focus-styles textarea:focus-visible,.global-focus-styles select:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles input:not([type=radio],[type=checkbox]):focus,.global-focus-styles input:not([type=radio],[type=checkbox]):focus-visible,.global-focus-styles textarea:focus,.global-focus-styles textarea:focus-visible,.global-focus-styles select:focus,.global-focus-styles select:focus-visible{outline-offset:0}.global-focus-styles .focus{outline:2px solid var(--color-accent-fg);outline-offset:2px;box-shadow:unset}.global-focus-styles .focus:is(input,textarea,select){outline-offset:0}@media(forced-colors: active){.global-focus-styles *:focus,.global-focus-styles *:focus-visible{outline:solid 1px transparent}.global-focus-styles input:not([type=radio],[type=checkbox]):focus,.global-focus-styles input:not([type=radio],[type=checkbox]):focus-visible,.global-focus-styles textarea:focus,.global-focus-styles textarea:focus-visible,.global-focus-styles select:focus,.global-focus-styles select:focus-visible{outline-offset:2px}}.reset-btn-override{font-weight:600;color:var(--color-fg-muted)}.reset-btn-override:hover{color:var(--color-accent-fg);text-decoration:none}.reset-btn-override:hover .reset-btn-override-icon{background-color:var(--color-accent-emphasis)}.reset-btn-override-icon{width:18px;height:18px;padding:1px;margin-right:3px;color:var(--color-fg-on-emphasis);text-align:center;background-color:var(--color-neutral-emphasis);border-radius:6px}.is-auto-complete-loading .form-control{padding-right:30px;background-image:url("/images/spinners/octocat-spinner-32.gif");background-size:16px}.hx_breadcrumb-header .header-search-wrapper{height:32px}.hx_breadcrumb-header .notification-indicator .mail-status,.hx_breadcrumb-header .feature-preview-indicator{background-image:none;background-color:var(--color-accent-emphasis)}.hx_breadcrumb-header .Header-link,.hx_breadcrumb-header .Header-current-page{color:var(--color-header-logo)}.hx_breadcrumb-header-crumbs .Header-link,.hx_breadcrumb-header-logo{transition:opacity .1s ease-out}.hx_breadcrumb-header-crumbs .Header-link:hover,.hx_breadcrumb-header-logo:hover{color:var(--color-header-text);opacity:.75}.hx_breadcrumb-header-divider{color:var(--color-header-divider)}.Header-button{background-color:var(--color-scale-gray-8);border-radius:6px;border:1px solid var(--color-scale-gray-6);transition:background-color .2s cubic-bezier(0.3, 0, 0.5, 1)}.Header-button .octicon{color:var(--color-header-logo)}.Header-button:hover,.Header-button:focus,.Header-button:active{background-color:transparent}.Header-button:hover .octicon,.Header-button:focus .octicon,.Header-button:active .octicon{color:var(--color-header-text);box-shadow:none}.hx_breadcrumb-header-dropdown::before,.hx_breadcrumb-header-dropdown::after{display:none}.hx_breadcrumb-header-dropdown .dropdown-item{transition:background-color 60ms ease-out;line-height:40px}.hx_breadcrumb-header-dropdown .dropdown-item:hover{color:var(--color-fg-default);background-color:var(--color-canvas-subtle)}.icon-sponsor,.icon-sponsoring{transition:transform .15s cubic-bezier(0.2, 0, 0.13, 2);transform:scale(1)}.btn:hover .icon-sponsor,.btn:focus .icon-sponsor,.Label:hover .icon-sponsor,.Label:focus .icon-sponsor,.btn:hover .icon-sponsoring,.btn:focus .icon-sponsoring,.Label:hover .icon-sponsoring,.Label:focus .icon-sponsoring{transform:scale(1.1)}.icon-sponsor{overflow:visible !important}.hx_kbd{border:1px solid var(--color-border-default);background-color:var(--color-canvas-default);border-radius:6px;font-size:12px;font-weight:400;display:inline-block;box-shadow:none;line-height:1.5;color:var(--color-fg-muted);text-align:center;padding:0px 4px;min-width:21px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}.hx_hit-user em,.hx_hit-package em,.hx_hit-marketplace em,.hx_hit-highlighting-wrapper em,.hx_hit-commit em,.hx_hit-issue em,.hx_hit-repo em,.hx_hit-wiki em{font-style:normal;font-weight:600}.SelectMenu-list.select-menu-list{max-height:none}@media(max-width: 543px){.SelectMenu-modal{width:unset !important}}.SelectMenu--hasFilter .SelectMenu-list{contain:content}.SelectMenu-item:disabled,.SelectMenu-item[aria-disabled=true]{color:var(--color-fg-muted);pointer-events:none}.SelectMenu .SelectMenu-item .is-filtering{color:var(--color-fg-muted)}.SelectMenu .SelectMenu-item .is-filtering b{color:var(--color-fg-default)}label.SelectMenu-item{font-weight:400}label.SelectMenu-item[aria-checked=true]{font-weight:600}.hx_SelectMenu-modal-no-animation{animation:none}.Box--responsive{margin-right:-15px;margin-left:-15px;border-left:0;border-right:0;border-radius:0}.Box--responsive .Box-row--unread{position:relative;box-shadow:none}.Box--responsive .Box-row--unread:before{width:8px;height:8px;color:#fff;background-image:linear-gradient(#54a3ff, #006eed);background-clip:padding-box;border-radius:50%;content:"";display:inline-block;top:36px;left:20px;position:absolute}.Box--responsive .Box-header{border-left-width:0;border-right-width:0;border-radius:0}@media(min-width: 544px){.Box--responsive{margin-right:0;margin-left:0;border:1px solid var(--color-border-default);border-radius:6px}.Box--responsive .Box-header{border-left-width:1px;border-right-width:1px;border-top-left-radius:6px;border-top-right-radius:6px}.Box--responsive .Box-row--unread{box-shadow:2px 0 0 var(--color-accent-emphasis) inset}.Box--responsive .Box-row--unread:before{display:none}}@media(max-width: 767px){.page-responsive .dropdown-menu,.page-responsive .dropdown-item{padding-top:8px;padding-bottom:8px}.page-responsive .hx_dropdown-fullscreen[open]>summary::before{background-color:var(--color-primer-canvas-backdrop)}.page-responsive .hx_dropdown-fullscreen .dropdown-menu{position:fixed;top:auto;right:16px !important;bottom:20%;left:16px !important;width:auto !important;max-height:calc(80% - 16px);max-width:none !important;margin:0 !important;overflow-y:auto;transform:none;-webkit-overflow-scrolling:touch;animation:dropdown-menu-animation .24s cubic-bezier(0, 0.1, 0.1, 1) backwards}.page-responsive .hx_dropdown-fullscreen .dropdown-menu::before,.page-responsive .hx_dropdown-fullscreen .dropdown-menu::after{display:none}@keyframes dropdown-menu-animation{0%{opacity:0;transform:scale(0.9)}}.page-responsive .hx_dropdown-fullscreen .dropdown-item{padding-top:16px;padding-bottom:16px}}.hx_rsm-close-button{display:none !important}@media(max-width: 767px){.page-responsive .hx_rsm[open]>summary:before{background-color:var(--color-primer-canvas-backdrop)}.page-responsive .hx_rsm .select-menu-modal,.page-responsive .hx_rsm-modal{position:fixed !important;display:flex;flex-direction:column;margin:0;width:auto;height:80%;top:75px;left:16px;right:16px !important}.page-responsive .hx_rsm--auto-height .select-menu-modal{height:auto;max-height:calc(80% - 16px);top:auto;bottom:20%}.page-responsive .hx_rsm .select-menu-header,.page-responsive .hx_rsm .select-menu-text-filter.select-menu-text-filter{padding:16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.page-responsive .hx_rsm tab-container,.page-responsive .hx_rsm-content{display:flex;flex-direction:column;flex:auto;min-height:0}.page-responsive .hx_rsm .select-menu-list{flex:auto;max-height:none;-webkit-overflow-scrolling:touch}.page-responsive .hx_rsm-content>.select-menu-item{flex-shrink:0}.page-responsive .hx_rsm .select-menu-item{padding-top:16px;padding-bottom:16px;padding-left:40px}.page-responsive .hx_rsm .close-button,.page-responsive .hx_rsm-close-button{display:block !important;position:relative}.page-responsive .hx_rsm .close-button::before,.page-responsive .hx_rsm-close-button::before{content:"";position:absolute;top:-16px;left:-16px;right:-16px;bottom:-16px}.page-responsive .hx_rsm .close-button .octicon-x,.page-responsive .hx_rsm-close-button .octicon-x{color:var(--color-fg-muted)}.page-responsive .hx_rsm .select-menu-loading-overlay{animation-delay:1s}.page-responsive .hx_rsm .select-menu-button:before,.page-responsive .hx_rsm-trigger:before{animation:hx_rsm-trigger-animation .24s cubic-bezier(0, 0, 0.2, 1) backwards}@keyframes hx_rsm-trigger-animation{0%{opacity:0}}.page-responsive .hx_rsm .select-menu-modal,.page-responsive .hx_rsm-modal{animation:hx_rsm-modal-animation .24s .12s cubic-bezier(0, 0.1, 0.1, 1) backwards}@keyframes hx_rsm-modal-animation{0%{opacity:0;transform:scale(0.9)}}.page-responsive .hx_rsm-dialog{height:auto;max-height:80%;max-width:none;transform:none}.page-responsive .hx_rsm-dialog-content{flex:1;min-height:0}}@media(max-width: 767px)and (max-height: 500px){.page-responsive .hx_rsm .select-menu-modal,.page-responsive .hx_rsm-modal{height:auto;bottom:16px}}.select-menu-modal{border-color:var(--color-border-default);box-shadow:var(--color-shadow-large)}.select-menu-header,.select-menu-filters{background:var(--color-canvas-overlay)}.select-menu-text-filter input{padding:5px 12px}.select-menu-item{text-align:left;background-color:var(--color-canvas-overlay);border-top:0;border-right:0;border-left:0}.preview-selected .tabnav--responsive{border-bottom:1px solid var(--color-border-default)}.tabnav--responsive .tabnav-tabs{z-index:1}@media(max-width: 767px){.tabnav--responsive .tabnav-tab{background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-left:0;border-radius:0}.tabnav--responsive .tabnav-tab:first-child{border-left:1px solid var(--color-border-default)}.tabnav--responsive .tabnav-tab[aria-selected=true],.tabnav--responsive .tabnav-tab.selected{border-bottom:0;background-color:var(--color-canvas-default)}}@media(max-width: 767px){.hx_sm-hide-drag-drop textarea{border-bottom:1px solid var(--color-border-default);border-bottom-left-radius:6px;border-bottom-right-radius:6px}.hx_sm-hide-drag-drop .hx_drag-and-drop{display:none !important}}@media(hover: none){.tooltipped:hover::before,.tooltipped:hover::after{display:none}}@media(hover: none){.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{visibility:visible !important}}.hx_UnderlineNav .UnderlineNav-item{padding:7px 12px 8px !important;margin:0}.hx_underlinenav-item{display:flex;align-items:center}.hx_underlinenav-item .UnderlineNav-octicon{margin-right:6px}.hx_underlinenav-item [data-content]:before{content:attr(data-content);display:block;font-weight:600;height:0;visibility:hidden}.hx_underlinenav-item-ts{letter-spacing:.01em;transition:text-shadow .3s}.hx_underlinenav-item-ts[role=tab][aria-selected=true]{font-weight:400;text-shadow:0 0 .6px var(--color-fg-default)}.min-width-lg{min-width:1012px}.min-width-xl{min-width:1280px}.min-height-0{min-height:0 !important}.ws-pre-wrap{white-space:pre-wrap}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}@media screen and (prefers-reduced-motion: no-preference){.hide-no-pref-motion{display:none !important;visibility:hidden}}@media screen and (prefers-reduced-motion: reduce){.hide-reduced-motion{display:none !important;visibility:hidden}}.line_through{text-decoration:line-through;text-decoration-thickness:1%}.starring-container .unstarred,.starring-container.on .starred{display:block}.starring-container.on .unstarred,.starring-container .starred{display:none}.starring-container.loading{opacity:.5}.user-following-container .follow,.user-following-container.on .unfollow{display:inline-block}.user-following-container.on .follow,.user-following-container .unfollow{display:none}.user-following-container.loading{opacity:.5}.btn-states .btn-state-alternate{display:none}.btn-states:hover .btn-state-default{display:none}.btn-states:hover .btn-state-alternate{display:inline-block}.hidden-when-empty:empty{display:none !important}.cm-number,.cm-atom{color:var(--color-codemirror-syntax-constant)}auto-check .is-autocheck-loading,auto-check .is-autocheck-successful,auto-check .is-autocheck-errored{padding-right:30px}auto-check .is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-16px.gif")}auto-check .is-autocheck-successful{background-image:url("/images/modules/ajax/success.png")}auto-check .is-autocheck-errored{background-image:url("/images/modules/ajax/error.png")}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){auto-check .is-autocheck-loading,auto-check .is-autocheck-successful,auto-check .is-autocheck-errored{background-size:16px 16px}auto-check .is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-32.gif")}auto-check .is-autocheck-successful{background-image:url("/images/modules/ajax/success@2x.png")}auto-check .is-autocheck-errored{background-image:url("/images/modules/ajax/error@2x.png")}}.hx_text-body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji" !important}.hx_disabled-form-checkbox-label.form-checkbox.disabled{color:var(--color-fg-muted)}.autocomplete-item{background-color:transparent}.ColorSwatch{display:inline-block;width:1em;height:1em;vertical-align:middle;border:1px solid var(--color-border-subtle);border-radius:6px}.label-select-menu .color,.ColorSwatch{border-radius:2em}.details-overlay[open]>.dropdown-item:hover{color:inherit;background:var(--color-canvas-default)}remote-input[loading] .form-control{padding-right:30px;background-image:url("/images/spinners/octocat-spinner-32.gif");background-size:16px}.hx_form-control-spinner{display:none;position:absolute;top:24px;right:24px}@media(min-width: 767px){.hx_form-control-spinner{top:18px;right:18px}}.hx_form-control-spinner-wrapper{position:relative}.hx_form-control-spinner-wrapper .is-loading.form-control{padding-right:28px}.hx_form-control-spinner-wrapper .is-loading+.hx_form-control-spinner{display:block}.hidden-radio-input{width:0;height:0;position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none}.BorderGrid{display:table;border-collapse:collapse;border-style:hidden;table-layout:fixed;width:100%}.BorderGrid{margin-top:-16px;margin-bottom:-16px}.BorderGrid .BorderGrid-cell{padding-top:16px;padding-bottom:16px}.BorderGrid--spacious{margin-top:-24px;margin-bottom:-24px}.BorderGrid--spacious .BorderGrid-cell{padding-top:24px;padding-bottom:24px}.BorderGrid-row{display:table-row}.BorderGrid-cell{display:table-cell;border:1px solid var(--color-border-muted)}.drag-and-drop{border-color:var(--color-border-default)}.input-sm{min-height:28px}.btn .octicon-triangle-down{margin-right:0}.UnderlineNav-item.selected .UnderlineNav-octicon,.UnderlineNav-item[aria-current]:not([aria-current=false]) .UnderlineNav-octicon,.UnderlineNav-item[role=tab][aria-selected=true] .UnderlineNav-octicon{color:inherit}.break-line-anywhere{line-break:anywhere !important}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{margin-top:4px}.status-indicator-success::before,.status-indicator-failed::before{content:none}.hx_status-indicator .status-indicator-spinner{display:none}.hx_status-indicator.status-indicator-loading{background-image:none}.hx_status-indicator.status-indicator-loading .status-indicator-spinner{display:inline-block}.markdown-title code{padding:2px 4px;background-color:var(--color-neutral-muted);font-size:.9em;line-height:1;border-radius:6px}.IssueLabel--big.lh-condensed{display:inline-block;padding:0 10px;font-size:12px;font-weight:500;line-height:22px !important;border:1px solid transparent;border-radius:2em}.hx_IssueLabel{--perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );--lightness-switch: max(0, min(calc((var(--perceived-lightness) - var(--lightness-threshold)) * -1000), 1))}:root .hx_IssueLabel,[data-color-mode=light][data-light-theme*=light] .hx_IssueLabel,[data-color-mode=dark][data-dark-theme*=light] .hx_IssueLabel{--lightness-threshold: 0.453;--border-threshold: 0.96;--border-alpha: max(0, min(calc((var(--perceived-lightness) - var(--border-threshold)) * 100), 1));background:rgb(var(--label-r), var(--label-g), var(--label-b));color:hsl(0, 0%, calc(var(--lightness-switch) * 100%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) - 25) * 1%), var(--border-alpha))}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=light] .hx_IssueLabel{--lightness-threshold: 0.453;--border-threshold: 0.96;--border-alpha: max(0, min(calc((var(--perceived-lightness) - var(--border-threshold)) * 100), 1));background:rgb(var(--label-r), var(--label-g), var(--label-b));color:hsl(0, 0%, calc(var(--lightness-switch) * 100%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) - 25) * 1%), var(--border-alpha))}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=light] .hx_IssueLabel{--lightness-threshold: 0.453;--border-threshold: 0.96;--border-alpha: max(0, min(calc((var(--perceived-lightness) - var(--border-threshold)) * 100), 1));background:rgb(var(--label-r), var(--label-g), var(--label-b));color:hsl(0, 0%, calc(var(--lightness-switch) * 100%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) - 25) * 1%), var(--border-alpha))}}[data-color-mode=light][data-light-theme*=dark] .hx_IssueLabel,[data-color-mode=dark][data-dark-theme*=dark] .hx_IssueLabel{--lightness-threshold: 0.6;--background-alpha: 0.18;--border-alpha: 0.3;--lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));background:rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));color:hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha))}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark] .hx_IssueLabel{--lightness-threshold: 0.6;--background-alpha: 0.18;--border-alpha: 0.3;--lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));background:rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));color:hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha))}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark] .hx_IssueLabel{--lightness-threshold: 0.6;--background-alpha: 0.18;--border-alpha: 0.3;--lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));background:rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));color:hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));border-color:hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha))}}.signed-commit-badge-small,.signed-commit-badge-medium,.signed-commit-badge-large{display:inline-block;padding:0 7px;font-size:12px;font-weight:500;line-height:18px;border:1px solid transparent;border-radius:2em;border-color:var(--color-border-default)}.signed-commit-badge-small{margin-top:0}.signed-commit-badge-large{padding-right:10px;padding-left:10px;line-height:22px}.topic-tag-action,.delete-topic-button,.topic-tag{display:inline-block;padding:0 7px;font-size:12px;font-weight:500;line-height:18px;border:1px solid transparent;border-radius:2em;padding-right:10px;padding-left:10px;line-height:22px;color:var(--color-accent-fg);background-color:var(--color-accent-subtle);border:1px solid var(--color-topic-tag-border, transparent)}.topic-tag-action:active,.topic-tag-action:hover,.delete-topic-button:active,.delete-topic-button:hover,.topic-tag:active,.topic-tag:hover{background-color:var(--color-accent-emphasis);color:var(--color-fg-on-emphasis)}.topic-tag{margin:0 .125em .333em 0}.topic-tag-outline{background:transparent}.topic-tag-action{display:inline-flex;padding-right:0;margin:.6em .5em 0 0}.delete-topic-button,.topic-tag-action .add-topic-button,.topic-tag-action .remove-topic-button{width:24px;padding:0;height:24px;color:inherit;border-color:transparent;border-left:0;border-radius:2em;display:flex;align-items:center;justify-content:center}.hx_Layout.hx_Layout--sidebar-hidden{grid-auto-flow:row;grid-template-columns:1fr !important}.hx_Layout.hx_Layout--sidebar-hidden .Layout-sidebar,.hx_Layout.hx_Layout--sidebar-hidden .Layout-divider,.hx_Layout.hx_Layout--sidebar-hidden .Layout-main{width:100% !important;grid-column:1 !important}.hx_Layout.hx_Layout--sidebar-hidden.Layout--sidebarPosition-flowRow-start .Layout-sidebar{grid-row:1}.hx_Layout.hx_Layout--sidebar-hidden.Layout--sidebarPosition-flowRow-start .Layout-main{grid-row:2/span 2}.hx_Layout.hx_Layout--sidebar-hidden.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:2/span 2}.hx_Layout.hx_Layout--sidebar-hidden.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}.hx_Layout.hx_Layout--sidebar-hidden.Layout--sidebarPosition-flowRow-none .Layout-sidebar{display:none}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided{--Layout-gutter: 0}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided .Layout-divider{height:1px;grid-row:2}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided .Layout-divider.Layout-divider--flowRow-hidden{display:none}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided .Layout-divider.Layout-divider--flowRow-shallow{height:8px;margin-right:0;background:var(--color-canvas-inset);border-color:var(--color-border-default);border-style:solid;border-width:1px 0}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided .Layout-main{grid-row:3/span 1}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:3/span 1}.hx_Layout.hx_Layout--sidebar-hidden.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}.branch-action-item.color-border-default{border-color:var(--color-border-default) !important}.user-profile-nav .UnderlineNav-item{margin-right:0 !important;line-height:30px;white-space:nowrap}.user-status-container .input-group-button .btn{height:32px}.tree-finder-input{min-height:32px}.notification-list-item-actions .btn{box-shadow:none}.reponav-item,.pagehead-tabs-item{border-radius:4px 4px 0 0}.reponav-item.selected,.pagehead-tabs-item.selected{border-top-color:#f9826c}.reponav-item .hx_reponav_item_counter{min-width:0;line-height:1.25}.auto-search-group>.octicon{top:8px}.subnav-search>button.mt-2{margin-top:6px !important}.completeness-indicator-success{background-color:var(--color-btn-primary-bg);color:var(--color-fg-on-emphasis)}.pagination-loader-container button.color-bg-default.border-0{border-top-left-radius:6px;border-top-right-radius:6px}.avatar-user{border-radius:50% !important}.user-profile-sticky-bar::after,.user-profile-mini-vcard{height:48px}.hx_remove-comment-thread-vertical-line:after{display:none !important}@media(max-width: 543px){.minimized-comment.hx_make-comment-take-up-space-on-sm-screens>details>div{padding-left:0 !important}}@media(max-width: 543px){.minimized-comment.hx_center-show-toggle-button-on-sm-screens>details>summary>div{flex-direction:column}.minimized-comment.hx_center-show-toggle-button-on-sm-screens>details>summary>div .review-comment-contents{align-left:flex-start}}.hx_add-margin-to-comment-textfield .write-content{margin:8px !important}@media(max-width: 543px){.hx_make-reply-from-action-buttons-small .form-actions button{padding:3px 8px;font-size:12px;line-height:20px}.hx_make-reply-from-action-buttons-small .form-actions button .octicon{vertical-align:text-top}}@media(max-width: 543px){.hx_remove-tab-side-borders-at-small-sizes .tabnav-tab:first-of-type{border-left:0}.hx_remove-tab-side-borders-at-small-sizes .tabnav-tab:last-of-type{border-right:0}}.hx_remove-border-bottom-on-last-post .review-comment:last-of-type{border-bottom:0 !important}.hx_details-with-rotating-caret[open]>.btn-link .hx_dropdown-caret-rotatable{border-width:0 4px 4px 4px;border-top-color:transparent;border-bottom-color:var(--color-accent-emphasis)}.hx_disabled-input{margin-right:-4px !important;margin-left:-4px !important}.hx_disabled-input sidebar-memex-input[disabled]:not(.no-pointer) *{cursor:pointer}.hx_disabled-input sidebar-memex-input:not([disabled]) .Box-row--hover-gray{background-color:var(--color-canvas-subtle)}.hx_disabled-input .Box-row--hover-gray svg.octicon-pencil{opacity:0;visibility:hidden}.hx_disabled-input .Box-row--hover-gray:hover,.hx_disabled-input .Box-row--hover-gray:focus{padding-top:8px !important;padding-bottom:8px !important}.hx_disabled-input .Box-row--hover-gray:hover svg.octicon-pencil,.hx_disabled-input .Box-row--hover-gray:focus svg.octicon-pencil{opacity:1;visibility:visible}.hx_disabled-input input:not(:disabled){margin-top:8px !important;margin-bottom:8px !important}.hx_disabled-input input[disabled],.hx_disabled-input select[disabled],.hx_disabled-input .form-control[contenteditable=false]{color:var(--color-fg-default) !important;background:transparent;padding-right:0;padding-left:0;border:0;box-shadow:none;margin-right:0;opacity:1}.hx_disabled-input text-expander input[type=text][disabled]{display:none}.hx_disabled-input text-expander input[type=text][disabled]+div.form-control{display:block}.hx_disabled-input text-expander input[type=text]+div.form-control{display:none}.hx_disabled-input input[type=date][disabled]{display:none}.hx_disabled-input input[type=date][disabled]+div.form-control{display:block}.hx_disabled-input input[type=date]+div.form-control{display:none}.hx_disabled-input input[disabled]::placeholder,.hx_disabled-input selected[disabled]::placeholder{color:var(--color-fg-default) !important}.hx_disabled-input .form-select{background-image:none !important}.hx_disabled-input .Box-row--focus-gray:focus{background:var(--color-canvas-subtle)}.summary-iteration .inline-status{display:none}.summary-iteration .block-status{display:inline-block}.list-iteration .inline-status{display:inline}.list-iteration .block-status{display:none}.hx_tabnav-in-dropdown{border-radius:5px 5px 0px 0px}.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:first-child .tabnav-tab.selected,.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:first-child .tabnav-tab[aria-selected=true],.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:first-child .tabnav-tab[aria-current]:not([aria-current=false]){border-left:0}.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:last-child .tabnav-tab.selected,.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:last-child .tabnav-tab[aria-selected=true],.hx_tabnav-in-dropdown .tabnav-tabs .hx_tabnav-in-dropdown-wrapper:last-child .tabnav-tab[aria-current]:not([aria-current=false]){border-right:0}.hx_tabnav-in-dropdown .tabnav-tab.selected,.hx_tabnav-in-dropdown .tabnav-tab[aria-selected=true],.hx_tabnav-in-dropdown .tabnav-tab[aria-current]:not([aria-current=false]){margin-top:-1px;background-color:var(--color-canvas-overlay)}.hx_tabnav-in-dropdown #cloud-tab[aria-selected=false]:after{content:"";display:inline-block;position:absolute;left:auto;right:10px;top:-14px;border:7px solid transparent;border-bottom:7px solid var(--color-canvas-subtle);z-index:10}.details-overlay-dark[open]>summary::before{z-index:111 !important}.hx_tooltip{position:absolute;z-index:1000000;padding:.5em .75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--color-fg-on-emphasis);text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;background:var(--color-neutral-emphasis-plus);border-radius:6px;opacity:0;max-width:250px;word-wrap:break-word;white-space:normal}.hx_tooltip::before{position:absolute;z-index:1000001;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.hx_tooltip::after{position:absolute;display:block;right:0;left:0;height:12px;content:""}.hx_tooltip-open,.hx_tooltip-open::before{animation-name:tooltip-appear;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;animation-delay:.4s}.hx_tooltip-s::before,.hx_tooltip-se::before,.hx_tooltip-sw::before{right:50%;bottom:100%;margin-right:-6px;border-bottom-color:var(--color-neutral-emphasis-plus)}.hx_tooltip-s::after,.hx_tooltip-se::after,.hx_tooltip-sw::after{bottom:100%}.hx_tooltip-n::before,.hx_tooltip-ne::before,.hx_tooltip-nw::before{top:100%;right:50%;margin-right:-6px;border-top-color:var(--color-neutral-emphasis-plus)}.hx_tooltip-n::after,.hx_tooltip-ne::after,.hx_tooltip-nw::after{top:100%}.hx_tooltip-se::before,.hx_tooltip-ne::before{right:auto}.hx_tooltip-sw::before,.hx_tooltip-nw::before{right:0;margin-right:6px}.hx_tooltip-w::before{top:50%;bottom:50%;left:100%;margin-top:-6px;border-left-color:var(--color-neutral-emphasis-plus)}.hx_tooltip-e::before{top:50%;right:100%;bottom:50%;margin-top:-6px;border-right-color:var(--color-neutral-emphasis-plus)}.turbo-progress-bar{z-index:2147483647}.timeline-comment .previewable-comment-form textarea{max-height:none}
|
|
|
|
/*# sourceMappingURL=behaviors-22fdd97e477e7a5ef97a8bd7989a14cb92a99facc3e3d81a97bc7e1e6527c5f3247f3b677dccfe6c8b1988c845f07055c7458496b6dcabbe4bf616f53c5d2f53.css.map*/
|
|
:root,[data-color-mode=light][data-light-theme=light],[data-color-mode=dark][data-dark-theme=light]{/*! */}:root,[data-color-mode=light][data-light-theme=light],[data-color-mode=dark][data-dark-theme=light]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #ABF2BC;--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #FFEBE9;--color-diff-blob-deletion-word-bg: rgba(255,129,130,0.4);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #2da44e;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #FFEBE9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #cf222e;--color-codemirror-syntax-storage: #cf222e;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #fa4549;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #2da44e;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #ff8182;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #ff8182;--color-checks-logline-error-bg: rgba(164,14,38,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #4ac26b;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #ff8182;--color-checks-ansi-red-bright: #ffaba8;--color-checks-ansi-green: #4ac26b;--color-checks-ansi-green-bright: #6fdd8b;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #cf222e;--color-ansi-red-bright: #a40e26;--color-ansi-green: #116329;--color-ansi-green-bright: #1a7f37;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #2da44e;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #2c974b;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(137,55%,36%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,45,17,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #2da44e;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(45,164,78,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #cf222e;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a40e26;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(356,72%,44%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(76,0,20,0.2);--color-btn-danger-disabled-text: rgba(207,34,46,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(207,34,46,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(164,14,38,0.4);--color-btn-danger-counter-bg: rgba(207,34,46,0.1);--color-btn-danger-icon: #cf222e;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(255,235,233,0.64);--color-action-list-item-danger-active-bg: #FFEBE9;--color-action-list-item-danger-hover-text: #cf222e;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #1a7f37;--color-success-emphasis: #2da44e;--color-success-muted: rgba(74,194,107,0.4);--color-success-subtle: #dafbe1;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #cf222e;--color-danger-emphasis: #cf222e;--color-danger-muted: rgba(255,129,130,0.4);--color-danger-subtle: #FFEBE9;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #dafbe1;--color-scale-green-1: #aceebb;--color-scale-green-2: #6fdd8b;--color-scale-green-3: #4ac26b;--color-scale-green-4: #2da44e;--color-scale-green-5: #1a7f37;--color-scale-green-6: #116329;--color-scale-green-7: #044f1e;--color-scale-green-8: #003d16;--color-scale-green-9: #002d11;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #FFEBE9;--color-scale-red-1: #ffcecb;--color-scale-red-2: #ffaba8;--color-scale-red-3: #ff8182;--color-scale-red-4: #fa4549;--color-scale-red-5: #cf222e;--color-scale-red-6: #a40e26;--color-scale-red-7: #82071e;--color-scale-red-8: #660018;--color-scale-red-9: #4c0014;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=light]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #ABF2BC;--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #FFEBE9;--color-diff-blob-deletion-word-bg: rgba(255,129,130,0.4);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #2da44e;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #FFEBE9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #cf222e;--color-codemirror-syntax-storage: #cf222e;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #fa4549;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #2da44e;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #ff8182;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #ff8182;--color-checks-logline-error-bg: rgba(164,14,38,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #4ac26b;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #ff8182;--color-checks-ansi-red-bright: #ffaba8;--color-checks-ansi-green: #4ac26b;--color-checks-ansi-green-bright: #6fdd8b;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #cf222e;--color-ansi-red-bright: #a40e26;--color-ansi-green: #116329;--color-ansi-green-bright: #1a7f37;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #2da44e;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #2c974b;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(137,55%,36%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,45,17,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #2da44e;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(45,164,78,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #cf222e;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a40e26;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(356,72%,44%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(76,0,20,0.2);--color-btn-danger-disabled-text: rgba(207,34,46,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(207,34,46,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(164,14,38,0.4);--color-btn-danger-counter-bg: rgba(207,34,46,0.1);--color-btn-danger-icon: #cf222e;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(255,235,233,0.64);--color-action-list-item-danger-active-bg: #FFEBE9;--color-action-list-item-danger-hover-text: #cf222e;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #1a7f37;--color-success-emphasis: #2da44e;--color-success-muted: rgba(74,194,107,0.4);--color-success-subtle: #dafbe1;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #cf222e;--color-danger-emphasis: #cf222e;--color-danger-muted: rgba(255,129,130,0.4);--color-danger-subtle: #FFEBE9;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #dafbe1;--color-scale-green-1: #aceebb;--color-scale-green-2: #6fdd8b;--color-scale-green-3: #4ac26b;--color-scale-green-4: #2da44e;--color-scale-green-5: #1a7f37;--color-scale-green-6: #116329;--color-scale-green-7: #044f1e;--color-scale-green-8: #003d16;--color-scale-green-9: #002d11;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #FFEBE9;--color-scale-red-1: #ffcecb;--color-scale-red-2: #ffaba8;--color-scale-red-3: #ff8182;--color-scale-red-4: #fa4549;--color-scale-red-5: #cf222e;--color-scale-red-6: #a40e26;--color-scale-red-7: #82071e;--color-scale-red-8: #660018;--color-scale-red-9: #4c0014;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=light]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #ABF2BC;--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #FFEBE9;--color-diff-blob-deletion-word-bg: rgba(255,129,130,0.4);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #2da44e;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #FFEBE9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #cf222e;--color-codemirror-syntax-storage: #cf222e;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #fa4549;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #2da44e;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #ff8182;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #ff8182;--color-checks-logline-error-bg: rgba(164,14,38,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #4ac26b;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #ff8182;--color-checks-ansi-red-bright: #ffaba8;--color-checks-ansi-green: #4ac26b;--color-checks-ansi-green-bright: #6fdd8b;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #cf222e;--color-ansi-red-bright: #a40e26;--color-ansi-green: #116329;--color-ansi-green-bright: #1a7f37;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #2da44e;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #2c974b;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(137,55%,36%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,45,17,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #94d3a2;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #2da44e;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(45,164,78,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #cf222e;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #a40e26;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(356,72%,44%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(76,0,20,0.2);--color-btn-danger-disabled-text: rgba(207,34,46,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(207,34,46,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(164,14,38,0.4);--color-btn-danger-counter-bg: rgba(207,34,46,0.1);--color-btn-danger-icon: #cf222e;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(255,235,233,0.64);--color-action-list-item-danger-active-bg: #FFEBE9;--color-action-list-item-danger-hover-text: #cf222e;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #1a7f37;--color-success-emphasis: #2da44e;--color-success-muted: rgba(74,194,107,0.4);--color-success-subtle: #dafbe1;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #cf222e;--color-danger-emphasis: #cf222e;--color-danger-muted: rgba(255,129,130,0.4);--color-danger-subtle: #FFEBE9;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #dafbe1;--color-scale-green-1: #aceebb;--color-scale-green-2: #6fdd8b;--color-scale-green-3: #4ac26b;--color-scale-green-4: #2da44e;--color-scale-green-5: #1a7f37;--color-scale-green-6: #116329;--color-scale-green-7: #044f1e;--color-scale-green-8: #003d16;--color-scale-green-9: #002d11;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #FFEBE9;--color-scale-red-1: #ffcecb;--color-scale-red-2: #ffaba8;--color-scale-red-3: #ff8182;--color-scale-red-4: #fa4549;--color-scale-red-5: #cf222e;--color-scale-red-6: #a40e26;--color-scale-red-7: #82071e;--color-scale-red-8: #660018;--color-scale-red-9: #4c0014;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}}
|
|
|
|
/*# sourceMappingURL=light-42dcb25d8bb7c2d2c370b98f9ecb1d1e0f26fb8cbce986ba0348b9e1c4f0adc07f2b8373d25f5840f2aff58b60c42d2dd9b59dd43848f626179d225f97b7b678.css.map*/
|
|
:root{--border-width: 1px;--border-style: solid;--font-size-small: 12px;--font-weight-semibold: 500;--size-2: 20px}:root,[data-color-mode=light][data-light-theme*=light],[data-color-mode=dark][data-dark-theme*=light]{color-scheme:light}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=light]{color-scheme:light}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=light]{color-scheme:light}}[data-color-mode=light][data-light-theme*=dark],[data-color-mode=dark][data-dark-theme*=dark]{color-scheme:dark}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark]{color-scheme:dark}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark]{color-scheme:dark}}[data-color-mode]{color:var(--color-fg-default);background-color:var(--color-canvas-default)}@media(forced-colors: active){body{--color-accent-emphasis: Highlight;--color-fg-on-emphasis: LinkText}}/*!
|
|
* @primer/css/core
|
|
* http://primer.style/css
|
|
*
|
|
* Released under MIT license. Copyright (c) 2019 GitHub Inc.
|
|
*/.ActionList{padding:8px}.ActionList--full{padding:0}.ActionList--subGroup{padding:0}.ActionList--divided .ActionList-item-label::before{position:absolute;top:-6px;display:block;width:100%;height:1px;content:"";background:var(--color-action-list-item-inline-divider)}.ActionList--divided .ActionList-item-descriptionWrap--inline::before{position:absolute;top:-6px;display:block;width:100%;height:1px;content:"";background:var(--color-action-list-item-inline-divider)}.ActionList--divided .ActionList-item-descriptionWrap--inline .ActionList-item-label::before{content:unset}.ActionList--divided .ActionList-item--navActive .ActionList-item-label::before,.ActionList--divided .ActionList-item--navActive+.ActionList-item .ActionList-item-label::before{visibility:hidden}.ActionList-item:first-of-type .ActionList-item-label::before,.ActionList-sectionDivider+.ActionList-item .ActionList-item-label::before{visibility:hidden}.ActionList-item:first-of-type .ActionList-item-descriptionWrap--inline::before,.ActionList-sectionDivider+.ActionList-item .ActionList-item-descriptionWrap--inline::before{visibility:hidden}.ActionList--tree{--ActionList-tree-depth: 1}.ActionList--tree .ActionList-item--subItem>.ActionList-content{font-size:14px}.ActionList--tree .ActionList-item.ActionList-item--singleton .ActionList-content{padding-left:32px}@media screen and (prefers-reduced-motion: no-preference){.ActionList--tree .ActionList-item[aria-expanded] .ActionList--subGroup{transition:opacity 160ms cubic-bezier(0.25, 1, 0.5, 1),transform 160ms cubic-bezier(0.25, 1, 0.5, 1)}}.ActionList--tree .ActionList-item[aria-expanded] .ActionList--subGroup .ActionList-content{padding-left:24px}.ActionList--tree .ActionList-item[aria-expanded] .ActionList-content--visual16+.ActionList--subGroup .ActionList-content{padding-left:32px}.ActionList--tree .ActionList-item[aria-expanded] .ActionList-content--visual20+.ActionList--subGroup .ActionList-content{padding-left:36px}.ActionList--tree .ActionList-item[aria-expanded] .ActionList-content--visual24+.ActionList--subGroup .ActionList-content{padding-left:40px}.ActionList--tree .ActionList-item[aria-expanded=true] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:scaleY(-1)}.ActionList--tree .ActionList-item[aria-expanded=true] .ActionList--subGroup{height:auto;overflow:visible;visibility:visible;opacity:1;transform:translateY(0)}.ActionList--tree .ActionList-item[aria-expanded=false] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:scaleY(1)}.ActionList--tree .ActionList-item[aria-expanded=false] .ActionList--subGroup{height:0;overflow:hidden;visibility:hidden;opacity:0;transform:translateY(-16px)}.ActionList--tree .ActionList-item[aria-expanded=false].ActionList-item--hasActiveSubItem{background:var(--color-action-list-item-default-selected-bg)}.ActionList--tree .ActionList-item[aria-expanded=false].ActionList-item--hasActiveSubItem::before,.ActionList--tree .ActionList-item[aria-expanded=false].ActionList-item--hasActiveSubItem+.ActionList-item::before{visibility:hidden}.ActionList--tree .ActionList-item[aria-expanded=false].ActionList-item--hasActiveSubItem::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background:var(--color-accent-fg);border-radius:6px}.ActionList--tree .ActionList-item[aria-expanded] .ActionList--subGroup{position:relative}.ActionList--tree .ActionList-item[aria-expanded] .ActionList--subGroup .ActionList-content{padding-left:calc(8px * var(--ActionList-tree-depth))}.ActionList--tree .ActionList-item[aria-expanded=true] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:rotate(0deg)}.ActionList--tree .ActionList-item[aria-expanded=false] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:rotate(-90deg)}.ActionList--tree .ActionList-item--hasSubItem .ActionList-item--subItem:not(.ActionList-item--hasSubItem) .ActionList-content>span:first-child{padding-left:24px}.ActionList--tree>[aria-level="1"].ActionList-item--hasSubItem>.ActionList--subGroup::before{position:absolute;left:16px;width:1px;height:100%;content:"";background:var(--color-action-list-item-inline-divider)}.ActionList--tree .ActionList-item--hasSubItem:not([aria-level="1"])>.ActionList--subGroup::before{position:absolute;left:calc(8px * (var(--ActionList-tree-depth)) + 7px);width:1px;height:100%;content:"";background:var(--color-action-list-item-inline-divider)}.ActionList-item{position:relative;list-style:none;background-color:transparent;border-radius:6px}.ActionList-item:hover,.ActionList-item:active{cursor:pointer}@media(hover: hover){.ActionList-item:not(.ActionList-item--hasSubItem):hover,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover{cursor:pointer;background-color:var(--color-action-list-item-default-hover-bg)}.ActionList-item:not(.ActionList-item--hasSubItem):hover:not(.ActionList-item--navActive),.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover:not(.ActionList-item--navActive){outline:solid 1px transparent;outline-offset:-1px;box-shadow:inset 0 0 0 2px var(--color-action-list-item-default-active-border)}}.ActionList-item:not(.ActionList-item--hasSubItem):active,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active{background:var(--color-action-list-item-default-active-bg)}.ActionList-item:not(.ActionList-item--hasSubItem):active:not(.ActionList-item--navActive),.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active:not(.ActionList-item--navActive){outline:solid 1px transparent;outline-offset:-1px;box-shadow:inset 0 0 0 2px var(--color-action-list-item-default-active-border)}@media screen and (prefers-reduced-motion: no-preference){.ActionList-item:not(.ActionList-item--hasSubItem):active,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active{animation:ActionList-item-active-bg 4s forwards cubic-bezier(0.33, 1, 0.68, 1)}}@keyframes ActionList-item-active-bg{50%{box-shadow:inset 0 2px 12px 6px rgba(var(--color-canvas-default), 0.4);transform:scale(1)}100%{transform:scale(0.97)}}@media(hover: hover){.ActionList-item:not(.ActionList-item--hasSubItem):hover .ActionList-item-label::before,.ActionList-item:not(.ActionList-item--hasSubItem):hover+.ActionList-item .ActionList-item-label::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover .ActionList-item-label::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover+.ActionList-item .ActionList-item-label::before{visibility:hidden}.ActionList-item:not(.ActionList-item--hasSubItem):hover .ActionList-item-descriptionWrap--inline::before,.ActionList-item:not(.ActionList-item--hasSubItem):hover+.ActionList-item .ActionList-item-descriptionWrap--inline::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover .ActionList-item-descriptionWrap--inline::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover+.ActionList-item .ActionList-item-descriptionWrap--inline::before{visibility:hidden}}.ActionList-item:not(.ActionList-item--hasSubItem):active .ActionList-item-label::before,.ActionList-item:not(.ActionList-item--hasSubItem):active+.ActionList-item .ActionList-item-label::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active .ActionList-item-label::before,.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active+.ActionList-item .ActionList-item-label::before{visibility:hidden}.ActionList-item.ActionList-item--hasSubItem>.ActionList-content{z-index:1}@media(hover: hover){.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionList-item.ActionList-item--hasSubItem>.ActionList-content:active{background-color:var(--color-action-list-item-default-active-bg)}.ActionList-item.ActionList-item--navActive:not(.ActionList-item--subItem) .ActionList-item-label{font-weight:600}.ActionList-item.ActionList-item--navActive:not(.ActionList-item--danger){background:var(--color-action-list-item-default-selected-bg)}@media(hover: hover){.ActionList-item.ActionList-item--navActive:not(.ActionList-item--danger):hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionList-item.ActionList-item--navActive:not(.ActionList-item--danger)::before,.ActionList-item.ActionList-item--navActive:not(.ActionList-item--danger)+.ActionList-item::before{visibility:hidden}.ActionList-item.ActionList-item--navActive:not(.ActionList-item--danger)::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background:var(--color-accent-fg);border-radius:6px}.ActionList-item[aria-checked=true] .ActionList-item-multiSelectCheckmark,.ActionList-item[aria-selected=true] .ActionList-item-multiSelectCheckmark{visibility:visible;opacity:1;transition:visibility 0 linear 0,opacity 50ms}.ActionList-item[aria-checked=true] .ActionList-item-singleSelectCheckmark,.ActionList-item[aria-selected=true] .ActionList-item-singleSelectCheckmark{visibility:visible}@media screen and (prefers-reduced-motion: no-preference){.ActionList-item[aria-checked=true] .ActionList-item-singleSelectCheckmark,.ActionList-item[aria-selected=true] .ActionList-item-singleSelectCheckmark{animation:checkmarkIn 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards}}.ActionList-item[aria-checked=true] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectIconRect,.ActionList-item[aria-selected=true] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectIconRect{fill:var(--color-accent-fg);stroke:var(--color-accent-fg);stroke-width:1px}.ActionList-item[aria-checked=true] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectCheckmark,.ActionList-item[aria-selected=true] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectCheckmark{fill:var(--color-fg-on-emphasis)}.ActionList-item[aria-checked=false] .ActionList-item-multiSelectCheckmark,.ActionList-item[aria-selected=false] .ActionList-item-multiSelectCheckmark{visibility:hidden;opacity:0;transition:visibility 0 linear 50ms,opacity 50ms}.ActionList-item[aria-checked=false] .ActionList-item-singleSelectCheckmark,.ActionList-item[aria-selected=false] .ActionList-item-singleSelectCheckmark{visibility:hidden;transition:visibility 0s linear 200ms;-webkit-clip-path:inset(16px 0 0 0);clip-path:inset(16px 0 0 0)}@media screen and (prefers-reduced-motion: no-preference){.ActionList-item[aria-checked=false] .ActionList-item-singleSelectCheckmark,.ActionList-item[aria-selected=false] .ActionList-item-singleSelectCheckmark{animation:checkmarkOut 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards}}.ActionList-item[aria-checked=false] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectIconRect,.ActionList-item[aria-selected=false] .ActionList-item-multiSelectIcon .ActionList-item-multiSelectIconRect{fill:var(--color-canvas-default);stroke:var(--color-border-default);stroke-width:1px}.ActionList-item[aria-checked=false] .ActionList-item-multiSelectIconRect,.ActionList-item[aria-selected=false] .ActionList-item-multiSelectIconRect{fill:var(--color-canvas-default);border:1px solid var(--color-border-default)}@keyframes checkmarkIn{from{-webkit-clip-path:inset(16px 0 0 0);clip-path:inset(16px 0 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}@keyframes checkmarkOut{from{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}to{-webkit-clip-path:inset(16px 0 0 0);clip-path:inset(16px 0 0 0)}}.ActionList-item.ActionList-item--danger .ActionList-item-label{color:var(--color-danger-fg)}.ActionList-item.ActionList-item--danger .ActionList-item-visual{color:var(--color-danger-fg)}@media(hover: hover){.ActionList-item.ActionList-item--danger:hover{background:var(--color-action-list-item-danger-hover-bg)}.ActionList-item.ActionList-item--danger:hover .ActionList-item-label{color:var(--color-action-list-item-danger-hover-text)}}.ActionList-item.ActionList-item--danger .ActionList-content:active{background:var(--color-action-list-item-danger-active-bg)}.ActionList-item .ActionList{padding:unset}.ActionList-content{position:relative;display:grid;width:100%;padding:6px 8px;font-size:14px;font-weight:400;color:var(--color-fg-default);text-align:left;-webkit-user-select:none;user-select:none;background-color:transparent;border:none;border-radius:6px;transition:background 33.333ms linear;touch-action:manipulation;touch-action:manipulation;-webkit-tap-highlight-color:transparent;grid-template-rows:min-content;grid-template-areas:"leadingAction leadingVisual label trailingVisual trailingAction";grid-template-columns:min-content min-content minmax(0, auto) min-content min-content;align-items:start}.ActionList-content>:not(:last-child){margin-right:8px}.ActionList-content:hover{text-decoration:none}.ActionList-content:focus-visible{position:relative;z-index:1;outline:none;box-shadow:0 0 0 2px var(--color-accent-fg)}.ActionList-content[aria-disabled=true] .ActionList-item-label,.ActionList-content[aria-disabled=true] .ActionList-item-description{color:var(--color-primer-fg-disabled)}.ActionList-content[aria-disabled=true] .ActionList-item-visual{fill:var(--color-primer-fg-disabled)}@media(hover: hover){.ActionList-content[aria-disabled=true]:hover{cursor:not-allowed;background-color:transparent}}@media screen and (prefers-reduced-motion: no-preference){.ActionList-content[aria-expanded]+.ActionList--subGroup{transition:opacity 160ms cubic-bezier(0.25, 1, 0.5, 1),transform 160ms cubic-bezier(0.25, 1, 0.5, 1)}}.ActionList-content[aria-expanded]+.ActionList--subGroup .ActionList-content{padding-left:24px}.ActionList-content[aria-expanded].ActionList-content--visual16+.ActionList--subGroup .ActionList-content{padding-left:32px}.ActionList-content[aria-expanded].ActionList-content--visual20+.ActionList--subGroup .ActionList-content{padding-left:36px}.ActionList-content[aria-expanded].ActionList-content--visual24+.ActionList--subGroup .ActionList-content{padding-left:40px}.ActionList-content[aria-expanded=true] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:scaleY(-1)}.ActionList-content[aria-expanded=true]+.ActionList--subGroup{height:auto;overflow:visible;visibility:visible;opacity:1;transform:translateY(0)}.ActionList-content[aria-expanded=true].ActionList-content--hasActiveSubItem>.ActionList-item-label{font-weight:600}.ActionList-content[aria-expanded=false] .ActionList-item-collapseIcon{transition:transform 120ms linear;transform:scaleY(1)}.ActionList-content[aria-expanded=false]+.ActionList--subGroup{height:0;overflow:hidden;visibility:hidden;opacity:0;transform:translateY(-16px)}.ActionList-content[aria-expanded=false].ActionList-content--hasActiveSubItem{background:var(--color-action-list-item-default-selected-bg)}.ActionList-content[aria-expanded=false].ActionList-content--hasActiveSubItem .ActionList-item-label{font-weight:600}.ActionList-content[aria-expanded=false].ActionList-content--hasActiveSubItem::before,.ActionList-content[aria-expanded=false].ActionList-content--hasActiveSubItem+.ActionList-item::before{visibility:hidden}.ActionList-content[aria-expanded=false].ActionList-content--hasActiveSubItem::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background:var(--color-accent-fg);border-radius:6px}.ActionList-content.ActionList-content--sizeMedium{padding:10px 8px}.ActionList-content.ActionList-content--sizeLarge{padding:14px 8px}.ActionList-content.ActionList-content--fontSmall{font-size:12px}@media(pointer: coarse){.ActionList-content{padding:14px 8px}}.ActionList-content.ActionList-content--blockDescription .ActionList-item-visual{place-self:start}.ActionList-item-action--leading{grid-area:leadingAction}.ActionList-item-visual--leading{grid-area:leadingVisual}.ActionList-item-label{grid-area:label}.ActionList-item-visual--trailing{grid-area:trailingVisual}.ActionList-item-action--trailing{grid-area:trailingAction}.ActionList-item-descriptionWrap{grid-area:label;display:flex;flex-direction:column}.ActionList-item-descriptionWrap .ActionList-item-description{margin-top:4px}.ActionList-item-descriptionWrap .ActionList-item-label{font-weight:600}.ActionList-item-descriptionWrap--inline{position:relative;flex-direction:row;align-items:baseline}.ActionList-item-descriptionWrap--inline .ActionList-item-description{margin-left:8px}.ActionList-item-description{font-size:12px;font-weight:400;line-height:1.5;color:var(--color-fg-muted)}.ActionList-item-visual,.ActionList-item-action{display:flex;min-height:20px;color:var(--color-fg-muted);fill:var(--color-fg-muted);align-items:center}.ActionList-item-label{position:relative;font-weight:400;line-height:20px;color:var(--color-fg-default)}.ActionList-item-label--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ActionList-item--subItem>.ActionList-content{font-size:12px}.ActionList-sectionDivider:not(:empty){display:flex;padding:6px 8px;font-size:12px;font-weight:600;color:var(--color-fg-muted);flex-direction:column}.ActionList-sectionDivider:empty{display:block;height:1px;padding:0;margin:7px -8px 8px;list-style:none;background:var(--color-action-list-item-inline-divider);border:0}.ActionList-sectionDivider .ActionList-sectionDivider-title{font-size:12px;font-weight:600;color:var(--color-fg-muted)}.ActionList-sectionDivider--filled{margin:8px -8px;background:var(--color-canvas-subtle);border-top:1px solid var(--color-action-list-item-inline-divider);border-bottom:1px solid var(--color-action-list-item-inline-divider)}.ActionList-sectionDivider--filled:empty{height:8px;box-sizing:border-box}.ActionList-sectionDivider--filled:first-child{margin-top:0}/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none !important}a{background-color:transparent}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:var(--color-attention-subtle);color:var(--color-text-primary)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:600}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}*{box-sizing:border-box}input,select,textarea,button{font-family:inherit;font-size:inherit;line-height:inherit}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;line-height:1.5;color:var(--color-fg-default);background-color:var(--color-canvas-default)}a{color:var(--color-accent-fg);text-decoration:none}a:hover{text-decoration:underline}b,strong{font-weight:600}hr,.rule{height:0;margin:15px 0;overflow:hidden;background:transparent;border:0;border-bottom:1px solid var(--color-border-muted)}hr::before,.rule::before{display:table;content:""}hr::after,.rule::after{display:table;clear:both;content:""}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}button{cursor:pointer;border-radius:0}[hidden][hidden]{display:none !important}details summary{cursor:pointer}details:not([open])>*:not(summary){display:none !important}kbd{display:inline-block;padding:3px 5px;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-subtle);border:solid 1px var(--color-neutral-muted);border-bottom-color:var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0}h1{font-size:32px;font-weight:600}h2{font-size:24px;font-weight:600}h3{font-size:20px;font-weight:600}h4{font-size:16px;font-weight:600}h5{font-size:14px;font-weight:600}h6{font-size:12px;font-weight:600}p{margin-top:0;margin-bottom:10px}small{font-size:90%}blockquote{margin:0}ul,ol{padding-left:0;margin-top:0;margin-bottom:0}ol ol,ul ol{list-style-type:lower-roman}ul ul ol,ul ol ol,ol ul ol,ol ol ol{list-style-type:lower-alpha}dd{margin-left:0}tt,code,samp{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}pre{margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.octicon{vertical-align:text-bottom}.octicon{display:inline-block;overflow:visible !important;vertical-align:text-bottom;fill:currentColor}.Box{background-color:var(--color-canvas-default);border-color:var(--color-border-default);border-style:solid;border-width:1px;border-radius:6px}.Box--condensed{line-height:1.25}.Box--condensed .Box-header{padding:8px 16px}.Box--condensed .Box-body{padding:8px 16px}.Box--condensed .Box-footer{padding:8px 16px}.Box--condensed .Box-btn-octicon.btn-octicon{padding:8px 16px;margin:-8px -16px;line-height:1.25}.Box--condensed .Box-row{padding:8px 16px}.Box--spacious .Box-header{padding:24px;line-height:1.25}.Box--spacious .Box-title{font-size:20px}.Box--spacious .Box-body{padding:24px}.Box--spacious .Box-footer{padding:24px}.Box--spacious .Box-btn-octicon.btn-octicon{padding:24px;margin:-24px -24px}.Box--spacious .Box-row{padding:24px}.Box-header{padding:16px;margin:-1px -1px 0;background-color:var(--color-canvas-subtle);border-color:var(--color-border-default);border-style:solid;border-width:1px;border-top-left-radius:6px;border-top-right-radius:6px}.Box-title{font-size:14px;font-weight:600}.Box-body{padding:16px;border-bottom:1px solid var(--color-border-default)}.Box-body:last-of-type{margin-bottom:-1px;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.Box-row{padding:16px;margin-top:-1px;list-style-type:none;border-top-color:var(--color-border-muted);border-top-style:solid;border-top-width:1px}.Box-row:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}.Box-row:last-of-type{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.Box-row.Box-row--unread,.Box-row.unread{box-shadow:inset 2px 0 0 var(--color-accent-emphasis)}.Box-row.navigation-focus .Box-row--drag-button{color:var(--color-accent-fg);cursor:grab;opacity:100}.Box-row.navigation-focus.is-dragging .Box-row--drag-button{cursor:grabbing}.Box-row.navigation-focus.sortable-chosen{background-color:var(--color-canvas-subtle)}.Box-row.navigation-focus.sortable-ghost{background-color:var(--color-canvas-subtle)}.Box-row.navigation-focus.sortable-ghost .Box-row--drag-hide{opacity:0}.Box-row--focus-gray.navigation-focus{background-color:var(--color-canvas-subtle)}.Box-row--focus-blue.navigation-focus{background-color:var(--color-accent-subtle)}.Box-row--hover-gray:hover{background-color:var(--color-canvas-subtle)}.Box-row--hover-blue:hover{background-color:var(--color-accent-subtle)}@media(min-width: 768px){.Box-row-link{color:var(--color-fg-default);text-decoration:none}.Box-row-link:hover{color:var(--color-accent-fg);text-decoration:none}}.Box-row--drag-button{opacity:0}.Box-footer{padding:16px;margin-top:-1px;border-top-color:var(--color-border-default);border-top-style:solid;border-top-width:1px;border-radius:0 0 6px 6px}.Box--scrollable{max-height:324px;overflow:scroll}.Box--blue{border-color:var(--color-accent-muted)}.Box--blue .Box-header{background-color:var(--color-accent-subtle);border-color:var(--color-accent-muted)}.Box--blue .Box-body{border-color:var(--color-accent-muted)}.Box--blue .Box-row{border-color:var(--color-accent-muted)}.Box--blue .Box-footer{border-color:var(--color-accent-muted)}.Box--danger{border-color:var(--color-danger-emphasis)}.Box--danger .Box-row:first-of-type{border-color:var(--color-danger-emphasis)}.Box--danger .Box-body:last-of-type{border-color:var(--color-danger-emphasis)}.Box-header--blue{background-color:var(--color-accent-subtle);border-color:var(--color-accent-muted)}.Box-row--yellow{background-color:var(--color-attention-subtle)}.Box-row--blue{background-color:var(--color-accent-subtle)}.Box-row--gray{background-color:var(--color-canvas-subtle)}.Box-btn-octicon.btn-octicon{padding:16px 16px;margin:-16px -16px;line-height:1.5}.Box--overlay{width:448px;margin-right:auto;margin-left:auto;background-color:var(--color-canvas-default);background-clip:padding-box;border-color:var(--color-border-default);box-shadow:0 0 18px rgba(0,0,0,.4)}.Box--overlay .Box-header{margin:0;border-width:0;border-bottom-width:1px;border-top-left-radius:6px;border-top-right-radius:6px}.Box-overlay--narrow{width:320px}.Box-overlay--wide{width:640px}.Box-body.scrollable-overlay{max-height:400px;overflow-y:scroll}.Box-body .help{padding-top:8px;margin:0;color:var(--color-fg-muted);text-align:center}.breadcrumb-item{display:inline-block;margin-left:-0.35em;white-space:nowrap;list-style:none}.breadcrumb-item::after{display:inline-block;height:.8em;margin:0 .5em;content:"";border-right:.1em solid var(--color-fg-muted);transform:rotate(15deg)}.breadcrumb-item:first-child{margin-left:0}.breadcrumb-item-selected::after,.breadcrumb-item[aria-current]:not([aria-current=false])::after{content:none}.breadcrumb-item-selected a{color:var(--color-fg-default)}.btn{position:relative;display:inline-block;padding:5px 16px;font-size:14px;font-weight:500;line-height:20px;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid;border-radius:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:hover{text-decoration:none}.btn:disabled,.btn.disabled,.btn[aria-disabled=true]{cursor:default}.btn i{font-style:normal;font-weight:500;opacity:.75}.btn .octicon{margin-right:4px;color:var(--color-fg-muted);vertical-align:text-bottom}.btn .octicon:only-child{margin-right:0}.btn .Counter{margin-left:2px;color:inherit;text-shadow:none;vertical-align:top;background-color:var(--color-btn-counter-bg)}.btn .dropdown-caret{margin-left:4px;opacity:.8}.btn{color:var(--color-btn-text);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);box-shadow:var(--color-btn-shadow),var(--color-btn-inset-shadow);transition:.2s cubic-bezier(0.3, 0, 0.5, 1);transition-property:color,background-color,border-color}.btn:hover,.btn.hover,[open]>.btn{background-color:var(--color-btn-hover-bg);border-color:var(--color-btn-hover-border);transition-duration:.1s}.btn:active{background-color:var(--color-btn-active-bg);border-color:var(--color-btn-active-border);transition:none}.btn.selected,.btn[aria-selected=true]{background-color:var(--color-btn-selected-bg);box-shadow:var(--color-primer-shadow-inset)}.btn:disabled,.btn.disabled,.btn[aria-disabled=true]{color:var(--color-primer-fg-disabled);background-color:var(--color-btn-bg);border-color:var(--color-btn-border)}.btn:disabled .octicon,.btn.disabled .octicon,.btn[aria-disabled=true] .octicon{color:var(--color-primer-fg-disabled)}.btn:focus,.btn.focus{border-color:var(--color-btn-focus-border);outline:none;box-shadow:var(--color-btn-focus-shadow)}.btn-primary{color:var(--color-btn-primary-text);background-color:var(--color-btn-primary-bg);border-color:var(--color-btn-primary-border);box-shadow:var(--color-btn-primary-shadow),var(--color-btn-primary-inset-shadow)}.btn-primary:hover,.btn-primary.hover,[open]>.btn-primary{background-color:var(--color-btn-primary-hover-bg);border-color:var(--color-btn-primary-hover-border)}.btn-primary:active,.btn-primary.selected,.btn-primary[aria-selected=true]{background-color:var(--color-btn-primary-selected-bg);box-shadow:var(--color-btn-primary-selected-shadow)}.btn-primary:disabled,.btn-primary.disabled,.btn-primary[aria-disabled=true]{color:var(--color-btn-primary-disabled-text);background-color:var(--color-btn-primary-disabled-bg);border-color:var(--color-btn-primary-disabled-border)}.btn-primary:disabled .octicon,.btn-primary.disabled .octicon,.btn-primary[aria-disabled=true] .octicon{color:var(--color-btn-primary-disabled-text)}.btn-primary:focus,.btn-primary.focus{background-color:var(--color-btn-primary-focus-bg);border-color:var(--color-btn-primary-focus-border);box-shadow:var(--color-btn-primary-focus-shadow)}.btn-primary .Counter{color:inherit;background-color:var(--color-btn-primary-counter-bg)}.btn-primary .octicon{color:var(--color-btn-primary-icon)}.btn-outline{color:var(--color-btn-outline-text)}.btn-outline:hover,[open]>.btn-outline{color:var(--color-btn-outline-hover-text);background-color:var(--color-btn-outline-hover-bg);border-color:var(--color-btn-outline-hover-border);box-shadow:var(--color-btn-outline-hover-shadow),var(--color-btn-outline-hover-inset-shadow)}.btn-outline:hover .Counter,[open]>.btn-outline .Counter{background-color:var(--color-btn-outline-hover-counter-bg)}.btn-outline:hover .octicon,[open]>.btn-outline .octicon{color:inherit}.btn-outline:active,.btn-outline.selected,.btn-outline[aria-selected=true]{color:var(--color-btn-outline-selected-text);background-color:var(--color-btn-outline-selected-bg);border-color:var(--color-btn-outline-selected-border);box-shadow:var(--color-btn-outline-selected-shadow)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline[aria-disabled=true]{color:var(--color-btn-outline-disabled-text);background-color:var(--color-btn-outline-disabled-bg);border-color:var(--color-btn-border);box-shadow:none}.btn-outline:disabled .Counter,.btn-outline.disabled .Counter,.btn-outline[aria-disabled=true] .Counter{background-color:var(--color-btn-outline-disabled-counter-bg)}.btn-outline:focus{border-color:var(--color-btn-outline-focus-border);box-shadow:var(--color-btn-outline-focus-shadow)}.btn-outline .Counter{color:inherit;background-color:var(--color-btn-outline-counter-bg)}.btn-danger{color:var(--color-btn-danger-text)}.btn-danger .octicon{color:var(--color-btn-danger-icon)}.btn-danger:hover,[open]>.btn-danger{color:var(--color-btn-danger-hover-text);background-color:var(--color-btn-danger-hover-bg);border-color:var(--color-btn-danger-hover-border);box-shadow:var(--color-btn-danger-hover-shadow),var(--color-btn-danger-hover-inset-shadow)}.btn-danger:hover .Counter,[open]>.btn-danger .Counter{background-color:var(--color-btn-danger-hover-counter-bg)}.btn-danger:hover .octicon,[open]>.btn-danger .octicon{color:var(--color-btn-danger-hover-icon)}.btn-danger:active,.btn-danger.selected,.btn-danger[aria-selected=true]{color:var(--color-btn-danger-selected-text);background-color:var(--color-btn-danger-selected-bg);border-color:var(--color-btn-danger-selected-border);box-shadow:var(--color-btn-danger-selected-shadow)}.btn-danger:disabled,.btn-danger.disabled,.btn-danger[aria-disabled=true]{color:var(--color-btn-danger-disabled-text);background-color:var(--color-btn-danger-disabled-bg);border-color:var(--color-btn-border);box-shadow:none}.btn-danger:disabled .Counter,.btn-danger.disabled .Counter,.btn-danger[aria-disabled=true] .Counter{background-color:var(--color-btn-danger-disabled-counter-bg)}.btn-danger:disabled .octicon,.btn-danger.disabled .octicon,.btn-danger[aria-disabled=true] .octicon{color:var(--color-btn-danger-disabled-text)}.btn-danger:focus{border-color:var(--color-btn-danger-focus-border);box-shadow:var(--color-btn-danger-focus-shadow)}.btn-danger .Counter{color:inherit;background-color:var(--color-btn-danger-counter-bg)}.btn-sm{padding:3px 12px;font-size:12px;line-height:20px}.btn-sm .octicon{vertical-align:text-top}.btn-large{padding:.75em 1.5em;font-size:inherit;line-height:1.5;border-radius:.5em}.btn-block{display:block;width:100%;text-align:center}.BtnGroup{display:inline-block;vertical-align:middle}.BtnGroup::before{display:table;content:""}.BtnGroup::after{display:table;clear:both;content:""}.BtnGroup+.BtnGroup,.BtnGroup+.btn{margin-left:4px}.BtnGroup-item{position:relative;float:left;border-right-width:0;border-radius:0}.BtnGroup-item:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.BtnGroup-item:last-child{border-right-width:1px;border-top-right-radius:6px;border-bottom-right-radius:6px}.BtnGroup-item.selected,.BtnGroup-item[aria-selected=true],.BtnGroup-item:focus,.BtnGroup-item:active,.BtnGroup-item:hover{border-right-width:1px}.BtnGroup-item.selected+.BtnGroup-item,.BtnGroup-item.selected+.BtnGroup-parent .BtnGroup-item,.BtnGroup-item[aria-selected=true]+.BtnGroup-item,.BtnGroup-item[aria-selected=true]+.BtnGroup-parent .BtnGroup-item,.BtnGroup-item:focus+.BtnGroup-item,.BtnGroup-item:focus+.BtnGroup-parent .BtnGroup-item,.BtnGroup-item:active+.BtnGroup-item,.BtnGroup-item:active+.BtnGroup-parent .BtnGroup-item,.BtnGroup-item:hover+.BtnGroup-item,.BtnGroup-item:hover+.BtnGroup-parent .BtnGroup-item{border-left-width:0}.BtnGroup-parent{float:left}.BtnGroup-parent:first-child .BtnGroup-item{border-top-left-radius:6px;border-bottom-left-radius:6px}.BtnGroup-parent:last-child .BtnGroup-item{border-right-width:1px;border-top-right-radius:6px;border-bottom-right-radius:6px}.BtnGroup-parent .BtnGroup-item{border-right-width:0;border-radius:0}.BtnGroup-parent.selected .BtnGroup-item,.BtnGroup-parent[aria-selected=true] .BtnGroup-item,.BtnGroup-parent:focus .BtnGroup-item,.BtnGroup-parent:active .BtnGroup-item,.BtnGroup-parent:hover .BtnGroup-item{border-right-width:1px}.BtnGroup-parent.selected+.BtnGroup-item,.BtnGroup-parent.selected+.BtnGroup-parent .BtnGroup-item,.BtnGroup-parent[aria-selected=true]+.BtnGroup-item,.BtnGroup-parent[aria-selected=true]+.BtnGroup-parent .BtnGroup-item,.BtnGroup-parent:focus+.BtnGroup-item,.BtnGroup-parent:focus+.BtnGroup-parent .BtnGroup-item,.BtnGroup-parent:active+.BtnGroup-item,.BtnGroup-parent:active+.BtnGroup-parent .BtnGroup-item,.BtnGroup-parent:hover+.BtnGroup-item,.BtnGroup-parent:hover+.BtnGroup-parent .BtnGroup-item{border-left-width:0}.BtnGroup-item:focus,.BtnGroup-item:active,.BtnGroup-parent:focus,.BtnGroup-parent:active{z-index:1}.btn-link{display:inline-block;padding:0;font-size:inherit;color:var(--color-accent-fg);text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-link:hover{text-decoration:underline}.btn-link:disabled,.btn-link:disabled:hover,.btn-link[aria-disabled=true],.btn-link[aria-disabled=true]:hover{color:var(--color-primer-fg-disabled);cursor:default}.btn-invisible{color:var(--color-accent-fg);background-color:transparent;border:0;box-shadow:none}.btn-invisible:hover,.btn-invisible.zeroclipboard-is-hover{color:var(--color-accent-fg);background-color:var(--color-btn-hover-bg);outline:none;box-shadow:none}.btn-invisible:active,.btn-invisible:focus,.btn-invisible.selected,.btn-invisible[aria-selected=true],.btn-invisible.zeroclipboard-is-active{color:var(--color-accent-fg);background-color:none;border-color:var(--color-btn-active-border);outline:none;box-shadow:var(--color-btn-focus-shadow)}.btn-invisible:active .btn-invisible.zeroclipboard-is-active{background-color:var(--color-btn-selected-bg)}.btn-invisible:disabled,.btn-invisible.disabled,.btn-invisible[aria-disabled=true]{color:var(--color-primer-fg-disabled);background-color:transparent}.btn-octicon{display:inline-block;padding:5px;margin-left:5px;line-height:1;color:var(--color-fg-muted);vertical-align:middle;background:transparent;border:0;box-shadow:none}.btn-octicon:hover{color:var(--color-accent-fg)}.btn-octicon.disabled,.btn-octicon[aria-disabled=true]{color:var(--color-primer-fg-disabled);cursor:default}.btn-octicon.disabled:hover,.btn-octicon[aria-disabled=true]:hover{color:var(--color-primer-fg-disabled)}.btn-octicon-danger:hover{color:var(--color-danger-fg)}.close-button{padding:0;color:var(--color-fg-muted);background:transparent;border:0;outline:none}.close-button:hover{color:var(--color-fg-default)}.close-button:active,.close-button:focus{color:var(--color-fg-muted);border-color:var(--color-btn-active-border);outline:none;box-shadow:var(--color-btn-focus-shadow)}.hidden-text-expander{display:block}.hidden-text-expander.inline{position:relative;top:-1px;display:inline-block;margin-left:5px;line-height:0}.hidden-text-expander a,.ellipsis-expander{display:inline-block;height:12px;padding:0 5px 5px;font-size:12px;font-weight:600;line-height:6px;color:var(--color-fg-default);text-decoration:none;vertical-align:middle;background:var(--color-neutral-muted);border:0;border-radius:1px}.hidden-text-expander a:hover,.ellipsis-expander:hover{text-decoration:none;background-color:var(--color-accent-muted)}.hidden-text-expander a:active,.ellipsis-expander:active{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.btn-with-count{float:left;border-top-right-radius:0;border-bottom-right-radius:0}.btn-with-count:focus{z-index:1}.social-count{position:relative;float:left;padding:3px 12px;font-size:12px;font-weight:600;line-height:20px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-default);border:1px solid var(--color-btn-border);border-left:0;border-top-right-radius:6px;border-bottom-right-radius:6px;box-shadow:var(--color-shadow-small),var(--color-primer-shadow-highlight)}.social-count:hover,.social-count:active{text-decoration:none}.social-count:hover{color:var(--color-accent-fg);cursor:pointer}.social-count:focus{z-index:1;outline:0;box-shadow:var(--color-primer-shadow-focus)}.TableObject{display:table}.TableObject-item{display:table-cell;width:1%;white-space:nowrap;vertical-align:middle}.TableObject-item--primary{width:99%}fieldset{padding:0;margin:0;border:0}label{font-weight:600}.form-control,.form-select{padding:5px 12px;font-size:14px;line-height:20px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-default);background-repeat:no-repeat;background-position:right 8px center;border:1px solid var(--color-border-default);border-radius:6px;outline:none;box-shadow:var(--color-primer-shadow-inset)}.form-control.focus,.form-control:focus,.form-select.focus,.form-select:focus{border-color:var(--color-accent-emphasis);outline:none;box-shadow:var(--color-primer-shadow-focus)}.form-control[disabled],.form-select[disabled]{color:var(--color-primer-fg-disabled);background-color:var(--color-input-disabled-bg);border-color:var(--color-border-default);-webkit-text-fill-color:var(--color-primer-fg-disabled);opacity:1}.form-control[disabled]::placeholder,.form-select[disabled]::placeholder{color:var(--color-primer-fg-disabled)}@supports(-webkit-touch-callout: none){.form-control,.form-select{font-size:16px}@media(min-width: 768px){.form-control,.form-select{font-size:14px}}}textarea.form-control{padding-top:8px;padding-bottom:8px;line-height:1.5}.input-contrast{background-color:var(--color-canvas-inset)}.input-contrast:focus{background-color:var(--color-canvas-default)}::placeholder{color:var(--color-fg-subtle);opacity:1}.input-sm{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px;line-height:20px}.input-lg{font-size:16px}.input-block{display:block;width:100%}.input-monospace{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.input-hide-webkit-autofill::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none !important;pointer-events:none;visibility:hidden}.form-checkbox{padding-left:20px;margin:15px 0;vertical-align:middle}.form-checkbox label em.highlight{position:relative;left:-4px;padding:2px 4px;font-style:normal;background:var(--color-attention-subtle);border-radius:6px}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{float:left;margin:5px 0 0 -20px;vertical-align:middle}.form-checkbox .note{display:block;margin:0;font-size:12px;font-weight:400;color:var(--color-fg-muted)}.form-checkbox-details{display:none}.form-checkbox-details-trigger:checked~* .form-checkbox-details,.form-checkbox-details-trigger:checked~.form-checkbox-details{display:block}.hfields{margin:15px 0}.hfields::before{display:table;content:""}.hfields::after{display:table;clear:both;content:""}.hfields .form-group{float:left;margin:0 30px 0 0}.hfields .form-group dt label,.hfields .form-group .form-group-header label{display:inline-block;margin:5px 0 0;color:var(--color-fg-muted)}.hfields .form-group dt img,.hfields .form-group .form-group-header img{position:relative;top:-2px}.hfields .btn{float:left;margin:28px 25px 0 -20px}.hfields .form-select{margin-top:5px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}.form-actions::before{display:table;content:""}.form-actions::after{display:table;clear:both;content:""}.form-actions .btn{float:right}.form-actions .btn+.btn{margin-right:5px}.form-warning{padding:8px 10px;margin:10px 0;font-size:14px;color:var(--color-attention-fg);background:var(--color-attention-subtle);border:1px solid var(--color-attention-emphasis);border-radius:6px}.form-warning p{margin:0;line-height:1.5}.form-warning a{font-weight:600}.form-select{display:inline-block;max-width:100%;height:32px;padding-right:24px;background-color:var(--color-canvas-default);background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzU4NjA2OSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=");background-repeat:no-repeat;background-position:right 4px center;background-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select::-ms-expand{opacity:0}.form-select[multiple]{height:auto}[data-color-mode=light][data-light-theme*=dark] .form-select,[data-color-mode=dark][data-dark-theme*=dark] .form-select{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzZlNzY4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=")}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme*=dark] .form-select{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzZlNzY4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=")}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme*=dark] .form-select{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzZlNzY4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=")}}.select-sm{height:28px;padding-top:3px;padding-bottom:3px;font-size:12px}.select-sm[multiple]{height:auto;min-height:0}.form-group{margin:15px 0}.form-group .form-control{width:440px;max-width:100%;margin-right:5px;background-color:var(--color-canvas-inset)}.form-group .form-control:focus{background-color:var(--color-canvas-default)}.form-group .form-control.shorter{width:130px}.form-group .form-control.short{width:250px}.form-group .form-control.long{width:100%}.form-group textarea.form-control{width:100%;height:200px;min-height:200px}.form-group textarea.form-control.short{height:50px;min-height:50px}.form-group dt,.form-group .form-group-header{margin:0 0 6px}.form-group label{position:relative}.form-group.flattened dt,.form-group.flattened .form-group-header{float:left;margin:0;line-height:32px}.form-group.flattened dd,.form-group.flattened .form-group-body{line-height:32px}.form-group dd h4,.form-group .form-group-body h4{margin:4px 0 0}.form-group dd h4.is-error,.form-group .form-group-body h4.is-error{color:var(--color-danger-fg)}.form-group dd h4.is-success,.form-group .form-group-body h4.is-success{color:var(--color-success-fg)}.form-group dd h4+.note,.form-group .form-group-body h4+.note{margin-top:0}.form-group.required dt label::after,.form-group.required .form-group-header label::after{padding-left:5px;color:var(--color-danger-fg);content:"*"}.form-group .success,.form-group .error,.form-group .indicator{display:none;font-size:12px;font-weight:600}.form-group.loading{opacity:.5}.form-group.loading .indicator{display:inline}.form-group.loading .spinner{display:inline-block;vertical-align:middle}.form-group.successful .success{display:inline;color:var(--color-success-fg)}.form-group.successed .success,.form-group.successed .warning,.form-group.successed .error,.form-group.warn .success,.form-group.warn .warning,.form-group.warn .error,.form-group.errored .success,.form-group.errored .warning,.form-group.errored .error{position:absolute;z-index:10;display:block;max-width:450px;padding:4px 8px;margin:8px 0 0;font-size:12px;font-weight:400;border-style:solid;border-width:1px;border-radius:6px}.form-group.successed .success::after,.form-group.successed .success::before,.form-group.successed .warning::after,.form-group.successed .warning::before,.form-group.successed .error::after,.form-group.successed .error::before,.form-group.warn .success::after,.form-group.warn .success::before,.form-group.warn .warning::after,.form-group.warn .warning::before,.form-group.warn .error::after,.form-group.warn .error::before,.form-group.errored .success::after,.form-group.errored .success::before,.form-group.errored .warning::after,.form-group.errored .warning::before,.form-group.errored .error::after,.form-group.errored .error::before{position:absolute;bottom:100%;left:10px;z-index:15;width:0;height:0;pointer-events:none;content:" ";border:solid transparent}.form-group.successed .success::after,.form-group.successed .warning::after,.form-group.successed .error::after,.form-group.warn .success::after,.form-group.warn .warning::after,.form-group.warn .error::after,.form-group.errored .success::after,.form-group.errored .warning::after,.form-group.errored .error::after{border-width:5px}.form-group.successed .success::before,.form-group.successed .warning::before,.form-group.successed .error::before,.form-group.warn .success::before,.form-group.warn .warning::before,.form-group.warn .error::before,.form-group.errored .success::before,.form-group.errored .warning::before,.form-group.errored .error::before{margin-left:-1px;border-width:6px}.form-group.successed .success{color:var(--color-fg-default);background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-success-subtle), var(--color-success-subtle));border-color:var(--color-success-muted)}.form-group.successed .success::after{border-bottom-color:var(--color-success-subtle)}.form-group.successed .success::before{border-bottom-color:var(--color-success-muted)}.form-group.warn .form-control{border-color:var(--color-attention-emphasis)}.form-group.warn .warning{color:var(--color-fg-default);background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));border-color:var(--color-attention-muted)}.form-group.warn .warning::after{border-bottom-color:var(--color-attention-subtle)}.form-group.warn .warning::before{border-bottom-color:var(--color-attention-muted)}.form-group.errored .form-control{border-color:var(--color-danger-emphasis)}.form-group.errored label{color:var(--color-danger-fg)}.form-group.errored .error{color:var(--color-fg-default);background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));border-color:var(--color-danger-muted)}.form-group.errored .error::after{border-bottom-color:var(--color-danger-subtle)}.form-group.errored .error::before{border-bottom-color:var(--color-danger-muted)}.note{min-height:17px;margin:4px 0 2px;font-size:12px;color:var(--color-fg-muted)}.note .spinner{margin-right:3px;vertical-align:middle}dl.form-group>dd .form-control.is-autocheck-loading,dl.form-group>dd .form-control.is-autocheck-successful,dl.form-group>dd .form-control.is-autocheck-errored,.form-group>.form-group-body .form-control.is-autocheck-loading,.form-group>.form-group-body .form-control.is-autocheck-successful,.form-group>.form-group-body .form-control.is-autocheck-errored{padding-right:30px}dl.form-group>dd .form-control.is-autocheck-loading,.form-group>.form-group-body .form-control.is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-16px.gif")}dl.form-group>dd .form-control.is-autocheck-successful,.form-group>.form-group-body .form-control.is-autocheck-successful{background-image:url("/images/modules/ajax/success.png")}dl.form-group>dd .form-control.is-autocheck-errored,.form-group>.form-group-body .form-control.is-autocheck-errored{background-image:url("/images/modules/ajax/error.png")}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){dl.form-group>dd .form-control.is-autocheck-loading,dl.form-group>dd .form-control.is-autocheck-successful,dl.form-group>dd .form-control.is-autocheck-errored,.form-group>.form-group-body .form-control.is-autocheck-loading,.form-group>.form-group-body .form-control.is-autocheck-successful,.form-group>.form-group-body .form-control.is-autocheck-errored{background-size:16px 16px}dl.form-group>dd .form-control.is-autocheck-loading,.form-group>.form-group-body .form-control.is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-32.gif")}dl.form-group>dd .form-control.is-autocheck-successful,.form-group>.form-group-body .form-control.is-autocheck-successful{background-image:url("/images/modules/ajax/success@2x.png")}dl.form-group>dd .form-control.is-autocheck-errored,.form-group>.form-group-body .form-control.is-autocheck-errored{background-image:url("/images/modules/ajax/error@2x.png")}}.status-indicator{display:inline-block;width:16px;height:16px;margin-left:5px}.status-indicator .octicon{display:none}.status-indicator-success::before{content:""}.status-indicator-success .octicon-check{display:inline-block;color:var(--color-success-fg);fill:var(--color-success-fg)}.status-indicator-success .octicon-x{display:none}.status-indicator-failed::before{content:""}.status-indicator-failed .octicon-check{display:none}.status-indicator-failed .octicon-x{display:inline-block;color:var(--color-danger-fg);fill:var(--color-danger-fg)}.status-indicator-loading{width:16px;background-image:url("/images/spinners/octocat-spinner-32-EAF2F5.gif");background-repeat:no-repeat;background-position:0 0;background-size:16px}.inline-form{display:inline-block}.inline-form .btn-plain{background-color:transparent;border:0}.drag-and-drop{padding:7px 10px;margin:0;font-size:13px;line-height:16px;color:var(--color-fg-muted);background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-top:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.drag-and-drop .default,.drag-and-drop .loading,.drag-and-drop .error{display:none}.drag-and-drop .error{color:var(--color-danger-fg)}.drag-and-drop img{vertical-align:top}.is-default .drag-and-drop .default{display:inline-block}.is-uploading .drag-and-drop .loading{display:inline-block}.is-bad-file .drag-and-drop .bad-file{display:inline-block}.is-duplicate-filename .drag-and-drop .duplicate-filename{display:inline-block}.is-too-big .drag-and-drop .too-big{display:inline-block}.is-hidden-file .drag-and-drop .hidden-file{display:inline-block}.is-empty .drag-and-drop .empty{display:inline-block}.is-bad-permissions .drag-and-drop .bad-permissions{display:inline-block}.is-repository-required .drag-and-drop .repository-required{display:inline-block}.drag-and-drop-error-info{font-weight:400;color:var(--color-fg-muted)}.drag-and-drop-error-info a{color:var(--color-accent-fg)}.is-failed .drag-and-drop .failed-request{display:inline-block}.manual-file-chooser{position:absolute;width:240px;padding:5px;margin-left:-80px;cursor:pointer;opacity:.0001}.manual-file-chooser:hover+.manual-file-chooser-text{text-decoration:underline}.btn .manual-file-chooser{top:0;padding:0;line-height:34px}.upload-enabled textarea{display:block;border-bottom:1px dashed var(--color-border-default);border-bottom-right-radius:0;border-bottom-left-radius:0}.upload-enabled.focused{border-radius:6px;box-shadow:var(--color-primer-shadow-inset),var(--color-primer-shadow-focus)}.upload-enabled.focused .form-control{box-shadow:none}.upload-enabled.focused .drag-and-drop{border-color:var(--color-accent-emphasis)}.dragover textarea,.dragover .drag-and-drop{box-shadow:#c9ff00 0 0 3px}.write-content{position:relative}.previewable-comment-form{position:relative}.previewable-comment-form .tabnav{position:relative;padding:8px 8px 0}.previewable-comment-form .comment{border:1px solid var(--color-border-default)}.previewable-comment-form .comment-form-error{margin-bottom:8px}.previewable-comment-form .write-content,.previewable-comment-form .preview-content{display:none;margin:0 8px 8px}.previewable-comment-form.write-selected .write-content,.previewable-comment-form.preview-selected .preview-content{display:block}.previewable-comment-form textarea{display:block;width:100%;min-height:100px;max-height:500px;padding:8px;resize:vertical}.form-action-spacious{margin-top:10px}div.composer{margin-top:0;border:0}.composer .comment-form-textarea{height:200px;min-height:200px}.composer .tabnav{margin:0 0 10px}h2.account{margin:15px 0 0;font-size:18px;font-weight:400;color:var(--color-fg-muted)}p.explain{position:relative;font-size:12px;color:var(--color-fg-muted)}p.explain strong{color:var(--color-fg-default)}p.explain .octicon{margin-right:5px;color:var(--color-fg-muted)}p.explain .minibutton{top:-4px;float:right}.form-group label{position:static}.input-group{display:table}.input-group .form-control{position:relative;width:100%}.input-group .form-control:focus{z-index:2}.input-group .form-control+.btn{margin-left:0}.input-group.inline{display:inline-table}.input-group .form-control,.input-group-button{display:table-cell}.input-group-button{width:1%;vertical-align:middle}.input-group .form-control:first-child,.input-group-button:first-child .btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-button:first-child .btn{margin-right:-1px}.input-group .form-control:last-child,.input-group-button:last-child .btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-button:last-child .btn{margin-left:-1px}.radio-group::before{display:table;content:""}.radio-group::after{display:table;clear:both;content:""}.radio-label{float:left;padding:6px 16px 6px 36px;margin-left:-1px;font-size:14px;line-height:20px;color:var(--color-fg-default);cursor:pointer;border:1px solid var(--color-border-default)}:checked+.radio-label{position:relative;z-index:1;border-color:var(--color-accent-emphasis)}.radio-label:first-of-type{margin-left:0;border-top-left-radius:6px;border-bottom-left-radius:6px}.radio-label:last-of-type{border-top-right-radius:6px;border-bottom-right-radius:6px}.radio-label .octicon{margin-left:4px;color:var(--color-fg-subtle)}.radio-input{z-index:3;float:left;margin:10px -32px 0 16px}.radio-input:disabled{position:relative}.radio-input:disabled+.radio-label{color:var(--color-primer-fg-disabled);cursor:default;background-color:var(--color-neutral-subtle)}.radio-input:disabled+.radio-label .octicon{color:inherit}.container-sm{max-width:544px;margin-right:auto;margin-left:auto}.container-md{max-width:768px;margin-right:auto;margin-left:auto}.container-lg{max-width:1012px;margin-right:auto;margin-left:auto}.container-xl{max-width:1280px;margin-right:auto;margin-left:auto}.col-1{width:8.33333333%}.col-2{width:16.66666666%}.col-3{width:24.99999999%}.col-4{width:33.33333332%}.col-5{width:41.66666665%}.col-6{width:49.99999998%}.col-7{width:58.33333331%}.col-8{width:66.66666664%}.col-9{width:74.99999997%}.col-10{width:83.3333333%}.col-11{width:91.66666663%}.col-12{width:100%}@media(min-width: 544px){.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666666%}.col-sm-3{width:24.99999999%}.col-sm-4{width:33.33333332%}.col-sm-5{width:41.66666665%}.col-sm-6{width:49.99999998%}.col-sm-7{width:58.33333331%}.col-sm-8{width:66.66666664%}.col-sm-9{width:74.99999997%}.col-sm-10{width:83.3333333%}.col-sm-11{width:91.66666663%}.col-sm-12{width:100%}}@media(min-width: 768px){.col-md-1{width:8.33333333%}.col-md-2{width:16.66666666%}.col-md-3{width:24.99999999%}.col-md-4{width:33.33333332%}.col-md-5{width:41.66666665%}.col-md-6{width:49.99999998%}.col-md-7{width:58.33333331%}.col-md-8{width:66.66666664%}.col-md-9{width:74.99999997%}.col-md-10{width:83.3333333%}.col-md-11{width:91.66666663%}.col-md-12{width:100%}}@media(min-width: 1012px){.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666666%}.col-lg-3{width:24.99999999%}.col-lg-4{width:33.33333332%}.col-lg-5{width:41.66666665%}.col-lg-6{width:49.99999998%}.col-lg-7{width:58.33333331%}.col-lg-8{width:66.66666664%}.col-lg-9{width:74.99999997%}.col-lg-10{width:83.3333333%}.col-lg-11{width:91.66666663%}.col-lg-12{width:100%}}@media(min-width: 1280px){.col-xl-1{width:8.33333333%}.col-xl-2{width:16.66666666%}.col-xl-3{width:24.99999999%}.col-xl-4{width:33.33333332%}.col-xl-5{width:41.66666665%}.col-xl-6{width:49.99999998%}.col-xl-7{width:58.33333331%}.col-xl-8{width:66.66666664%}.col-xl-9{width:74.99999997%}.col-xl-10{width:83.3333333%}.col-xl-11{width:91.66666663%}.col-xl-12{width:100%}}.gutter{margin-right:-16px;margin-left:-16px}.gutter>[class*=col-]{padding-right:16px !important;padding-left:16px !important}.gutter-condensed{margin-right:-8px;margin-left:-8px}.gutter-condensed>[class*=col-]{padding-right:8px !important;padding-left:8px !important}.gutter-spacious{margin-right:-24px;margin-left:-24px}.gutter-spacious>[class*=col-]{padding-right:24px !important;padding-left:24px !important}@media(min-width: 544px){.gutter-sm{margin-right:-16px;margin-left:-16px}.gutter-sm>[class*=col-]{padding-right:16px !important;padding-left:16px !important}.gutter-sm-condensed{margin-right:-8px;margin-left:-8px}.gutter-sm-condensed>[class*=col-]{padding-right:8px !important;padding-left:8px !important}.gutter-sm-spacious{margin-right:-24px;margin-left:-24px}.gutter-sm-spacious>[class*=col-]{padding-right:24px !important;padding-left:24px !important}}@media(min-width: 768px){.gutter-md{margin-right:-16px;margin-left:-16px}.gutter-md>[class*=col-]{padding-right:16px !important;padding-left:16px !important}.gutter-md-condensed{margin-right:-8px;margin-left:-8px}.gutter-md-condensed>[class*=col-]{padding-right:8px !important;padding-left:8px !important}.gutter-md-spacious{margin-right:-24px;margin-left:-24px}.gutter-md-spacious>[class*=col-]{padding-right:24px !important;padding-left:24px !important}}@media(min-width: 1012px){.gutter-lg{margin-right:-16px;margin-left:-16px}.gutter-lg>[class*=col-]{padding-right:16px !important;padding-left:16px !important}.gutter-lg-condensed{margin-right:-8px;margin-left:-8px}.gutter-lg-condensed>[class*=col-]{padding-right:8px !important;padding-left:8px !important}.gutter-lg-spacious{margin-right:-24px;margin-left:-24px}.gutter-lg-spacious>[class*=col-]{padding-right:24px !important;padding-left:24px !important}}@media(min-width: 1280px){.gutter-xl{margin-right:-16px;margin-left:-16px}.gutter-xl>[class*=col-]{padding-right:16px !important;padding-left:16px !important}.gutter-xl-condensed{margin-right:-8px;margin-left:-8px}.gutter-xl-condensed>[class*=col-]{padding-right:8px !important;padding-left:8px !important}.gutter-xl-spacious{margin-right:-24px;margin-left:-24px}.gutter-xl-spacious>[class*=col-]{padding-right:24px !important;padding-left:24px !important}}.offset-1{margin-left:8.33333333% !important}.offset-2{margin-left:16.66666666% !important}.offset-3{margin-left:24.99999999% !important}.offset-4{margin-left:33.33333332% !important}.offset-5{margin-left:41.66666665% !important}.offset-6{margin-left:49.99999998% !important}.offset-7{margin-left:58.33333331% !important}.offset-8{margin-left:66.66666664% !important}.offset-9{margin-left:74.99999997% !important}.offset-10{margin-left:83.3333333% !important}.offset-11{margin-left:91.66666663% !important}@media(min-width: 544px){.offset-sm-1{margin-left:8.33333333% !important}.offset-sm-2{margin-left:16.66666666% !important}.offset-sm-3{margin-left:24.99999999% !important}.offset-sm-4{margin-left:33.33333332% !important}.offset-sm-5{margin-left:41.66666665% !important}.offset-sm-6{margin-left:49.99999998% !important}.offset-sm-7{margin-left:58.33333331% !important}.offset-sm-8{margin-left:66.66666664% !important}.offset-sm-9{margin-left:74.99999997% !important}.offset-sm-10{margin-left:83.3333333% !important}.offset-sm-11{margin-left:91.66666663% !important}}@media(min-width: 768px){.offset-md-1{margin-left:8.33333333% !important}.offset-md-2{margin-left:16.66666666% !important}.offset-md-3{margin-left:24.99999999% !important}.offset-md-4{margin-left:33.33333332% !important}.offset-md-5{margin-left:41.66666665% !important}.offset-md-6{margin-left:49.99999998% !important}.offset-md-7{margin-left:58.33333331% !important}.offset-md-8{margin-left:66.66666664% !important}.offset-md-9{margin-left:74.99999997% !important}.offset-md-10{margin-left:83.3333333% !important}.offset-md-11{margin-left:91.66666663% !important}}@media(min-width: 1012px){.offset-lg-1{margin-left:8.33333333% !important}.offset-lg-2{margin-left:16.66666666% !important}.offset-lg-3{margin-left:24.99999999% !important}.offset-lg-4{margin-left:33.33333332% !important}.offset-lg-5{margin-left:41.66666665% !important}.offset-lg-6{margin-left:49.99999998% !important}.offset-lg-7{margin-left:58.33333331% !important}.offset-lg-8{margin-left:66.66666664% !important}.offset-lg-9{margin-left:74.99999997% !important}.offset-lg-10{margin-left:83.3333333% !important}.offset-lg-11{margin-left:91.66666663% !important}}@media(min-width: 1280px){.offset-xl-1{margin-left:8.33333333% !important}.offset-xl-2{margin-left:16.66666666% !important}.offset-xl-3{margin-left:24.99999999% !important}.offset-xl-4{margin-left:33.33333332% !important}.offset-xl-5{margin-left:41.66666665% !important}.offset-xl-6{margin-left:49.99999998% !important}.offset-xl-7{margin-left:58.33333331% !important}.offset-xl-8{margin-left:66.66666664% !important}.offset-xl-9{margin-left:74.99999997% !important}.offset-xl-10{margin-left:83.3333333% !important}.offset-xl-11{margin-left:91.66666663% !important}}.Layout{display:grid;--Layout-sidebar-width: 220px;--Layout-gutter: 16px;grid-auto-flow:column;grid-template-columns:auto 0 minmax(0, calc(100% - var(--Layout-sidebar-width) - var(--Layout-gutter)));grid-gap:var(--Layout-gutter)}@media(max-width: calc(544px - 0.02px)){.Layout{grid-auto-flow:row;grid-template-columns:1fr !important}.Layout .Layout-sidebar,.Layout .Layout-divider,.Layout .Layout-main{width:100% !important;grid-column:1 !important}.Layout.Layout--sidebarPosition-flowRow-start .Layout-sidebar{grid-row:1}.Layout.Layout--sidebarPosition-flowRow-start .Layout-main{grid-row:2/span 2}.Layout.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:2/span 2}.Layout.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}.Layout.Layout--sidebarPosition-flowRow-none .Layout-sidebar{display:none}.Layout.Layout--divided{--Layout-gutter: 0}.Layout.Layout--divided .Layout-divider{height:1px;grid-row:2}.Layout.Layout--divided .Layout-divider.Layout-divider--flowRow-hidden{display:none}.Layout.Layout--divided .Layout-divider.Layout-divider--flowRow-shallow{height:8px;margin-right:0;background:var(--color-canvas-inset);border-color:var(--color-border-default);border-style:solid;border-width:1px 0}.Layout.Layout--divided .Layout-main{grid-row:3/span 1}.Layout.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:3/span 1}.Layout.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}}@media(max-width: calc(768px - 0.02px)){.Layout.Layout--flowRow-until-md{grid-auto-flow:row;grid-template-columns:1fr !important}.Layout.Layout--flowRow-until-md .Layout-sidebar,.Layout.Layout--flowRow-until-md .Layout-divider,.Layout.Layout--flowRow-until-md .Layout-main{width:100% !important;grid-column:1 !important}.Layout.Layout--flowRow-until-md.Layout--sidebarPosition-flowRow-start .Layout-sidebar{grid-row:1}.Layout.Layout--flowRow-until-md.Layout--sidebarPosition-flowRow-start .Layout-main{grid-row:2/span 2}.Layout.Layout--flowRow-until-md.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:2/span 2}.Layout.Layout--flowRow-until-md.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}.Layout.Layout--flowRow-until-md.Layout--sidebarPosition-flowRow-none .Layout-sidebar{display:none}.Layout.Layout--flowRow-until-md.Layout--divided{--Layout-gutter: 0}.Layout.Layout--flowRow-until-md.Layout--divided .Layout-divider{height:1px;grid-row:2}.Layout.Layout--flowRow-until-md.Layout--divided .Layout-divider.Layout-divider--flowRow-hidden{display:none}.Layout.Layout--flowRow-until-md.Layout--divided .Layout-divider.Layout-divider--flowRow-shallow{height:8px;margin-right:0;background:var(--color-canvas-inset);border-color:var(--color-border-default);border-style:solid;border-width:1px 0}.Layout.Layout--flowRow-until-md.Layout--divided .Layout-main{grid-row:3/span 1}.Layout.Layout--flowRow-until-md.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:3/span 1}.Layout.Layout--flowRow-until-md.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}}@media(max-width: calc(1012px - 0.02px)){.Layout.Layout--flowRow-until-lg{grid-auto-flow:row;grid-template-columns:1fr !important}.Layout.Layout--flowRow-until-lg .Layout-sidebar,.Layout.Layout--flowRow-until-lg .Layout-divider,.Layout.Layout--flowRow-until-lg .Layout-main{width:100% !important;grid-column:1 !important}.Layout.Layout--flowRow-until-lg.Layout--sidebarPosition-flowRow-start .Layout-sidebar{grid-row:1}.Layout.Layout--flowRow-until-lg.Layout--sidebarPosition-flowRow-start .Layout-main{grid-row:2/span 2}.Layout.Layout--flowRow-until-lg.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:2/span 2}.Layout.Layout--flowRow-until-lg.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}.Layout.Layout--flowRow-until-lg.Layout--sidebarPosition-flowRow-none .Layout-sidebar{display:none}.Layout.Layout--flowRow-until-lg.Layout--divided{--Layout-gutter: 0}.Layout.Layout--flowRow-until-lg.Layout--divided .Layout-divider{height:1px;grid-row:2}.Layout.Layout--flowRow-until-lg.Layout--divided .Layout-divider.Layout-divider--flowRow-hidden{display:none}.Layout.Layout--flowRow-until-lg.Layout--divided .Layout-divider.Layout-divider--flowRow-shallow{height:8px;margin-right:0;background:var(--color-canvas-inset);border-color:var(--color-border-default);border-style:solid;border-width:1px 0}.Layout.Layout--flowRow-until-lg.Layout--divided .Layout-main{grid-row:3/span 1}.Layout.Layout--flowRow-until-lg.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-sidebar{grid-row:3/span 1}.Layout.Layout--flowRow-until-lg.Layout--divided.Layout--sidebarPosition-flowRow-end .Layout-main{grid-row:1}}.Layout .Layout-sidebar{grid-column:1}.Layout .Layout-divider{display:none}.Layout .Layout-main{grid-column:2/span 2}@media(min-width: 1012px){.Layout{--Layout-gutter: 24px}}.Layout.Layout--gutter-none{--Layout-gutter: 0px}.Layout.Layout--gutter-condensed{--Layout-gutter: 16px}@media(min-width: 1012px){.Layout.Layout--gutter-spacious{--Layout-gutter: 32px}}@media(min-width: 1280px){.Layout.Layout--gutter-spacious{--Layout-gutter: 40px}}@media(min-width: 544px){.Layout{--Layout-sidebar-width: 220px}}@media(min-width: 768px){.Layout{--Layout-sidebar-width: 256px}}@media(min-width: 1012px){.Layout{--Layout-sidebar-width: 296px}}@media(min-width: 768px){.Layout.Layout--sidebar-narrow{--Layout-sidebar-width: 240px}}@media(min-width: 1012px){.Layout.Layout--sidebar-narrow{--Layout-sidebar-width: 256px}}@media(min-width: 1012px){.Layout.Layout--sidebar-wide{--Layout-sidebar-width: 320px}}@media(min-width: 1280px){.Layout.Layout--sidebar-wide{--Layout-sidebar-width: 336px}}.Layout.Layout--sidebarPosition-start .Layout-sidebar{grid-column:1}.Layout.Layout--sidebarPosition-start .Layout-main{grid-column:2/span 2}.Layout.Layout--sidebarPosition-end{grid-template-columns:minmax(0, calc(100% - var(--Layout-sidebar-width) - var(--Layout-gutter))) 0 auto}.Layout.Layout--sidebarPosition-end .Layout-main{grid-column:1}.Layout.Layout--sidebarPosition-end .Layout-sidebar{grid-column:2/span 2}.Layout.Layout--divided .Layout-divider{display:block;grid-column:2;width:1px;margin-right:-1px;background:var(--color-border-default)}.Layout.Layout--divided .Layout-main{grid-column:3/span 1}.Layout.Layout--divided.Layout--sidebarPosition-end .Layout-sidebar{grid-column:3/span 1}.Layout.Layout--divided.Layout--sidebarPosition-end .Layout-main{grid-column:1}.Layout-divider{display:none;width:1px}.Layout-sidebar{width:var(--Layout-sidebar-width)}.Layout-main{min-width:0}.Layout-main .Layout-main-centered-md,.Layout-main .Layout-main-centered-lg,.Layout-main .Layout-main-centered-xl{margin-right:auto;margin-left:auto}.Layout-main .Layout-main-centered-md>.container-md,.Layout-main .Layout-main-centered-md>.container-lg,.Layout-main .Layout-main-centered-md>.container-xl,.Layout-main .Layout-main-centered-lg>.container-md,.Layout-main .Layout-main-centered-lg>.container-lg,.Layout-main .Layout-main-centered-lg>.container-xl,.Layout-main .Layout-main-centered-xl>.container-md,.Layout-main .Layout-main-centered-xl>.container-lg,.Layout-main .Layout-main-centered-xl>.container-xl{margin-left:0}.Layout-main .Layout-main-centered-md{max-width:calc(768px + var(--Layout-sidebar-width) + var(--Layout-gutter))}.Layout-main .Layout-main-centered-lg{max-width:calc(1012px + var(--Layout-sidebar-width) + var(--Layout-gutter))}.Layout-main .Layout-main-centered-xl{max-width:calc(1280px + var(--Layout-sidebar-width) + var(--Layout-gutter))}:root{--Layout-pane-width: 220px;--Layout-content-width: 100%;--Layout-template-columns: 1fr var(--Layout-pane-width);--Layout-template-areas: "content pane";--Layout-column-gap: 16px;--Layout-row-gap: 16px;--Layout-outer-spacing-x: 0px;--Layout-outer-spacing-y: 0px;--Layout-inner-spacing-min: 0px;--Layout-inner-spacing-max: 0px}.PageLayout{margin:var(--Layout-outer-spacing-y) var(--Layout-outer-spacing-x)}@media(min-width: 768px){.PageLayout.PageLayout--panePos-start{--Layout-template-columns: var(--Layout-pane-width) minmax(0, calc(100% - var(--Layout-pane-width) - var(--Layout-column-gap)));--Layout-template-areas: "pane content"}.PageLayout.PageLayout--panePos-end{--Layout-template-columns: minmax(0, calc(100% - var(--Layout-pane-width) - var(--Layout-column-gap))) var(--Layout-pane-width);--Layout-template-areas: "content pane"}.PageLayout .PageLayout-header--hasDivider{padding-bottom:max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));border-bottom:1px solid var(--color-border-default)}.PageLayout .PageLayout-footer--hasDivider{padding-top:max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));border-top:1px solid var(--color-border-default)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-start .PageLayout-pane{border-right:1px solid var(--color-border-default)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-start:not(.PageLayout--columnGap-none) .PageLayout-pane{padding-right:calc(var(--Layout-column-gap) - 1px);margin-right:calc(var(--Layout-column-gap) * -1)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-start:not(.PageLayout--columnGap-none) .PageLayout-content{margin-left:var(--Layout-column-gap)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-end .PageLayout-pane{border-left:1px solid var(--color-border-default)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-end:not(.PageLayout--columnGap-none) .PageLayout-pane{padding-left:calc(var(--Layout-column-gap) - 1px);margin-left:calc(var(--Layout-column-gap) * -1)}.PageLayout.PageLayout--hasPaneDivider.PageLayout--panePos-end:not(.PageLayout--columnGap-none) .PageLayout-content{margin-right:var(--Layout-column-gap)}.PageLayout.PageLayout--isPaneSticky .PageLayout-pane{position:sticky;top:0;max-height:100vh;overflow:auto}.PageLayout [class^=PageLayout-content-centered-]{max-width:calc(var(--Layout-content-width) + var(--Layout-pane-width) + var(--Layout-column-gap));margin-right:auto;margin-left:auto}.PageLayout.PageLayout--hasPaneDivider [class^=PageLayout-content-centered-]{max-width:calc(var(--Layout-content-width) + var(--Layout-pane-width) + (var(--Layout-column-gap) * 2))}.PageLayout.PageLayout--panePos-start [class^=PageLayout-content-centered-]>[class^=container-]{margin-left:0}.PageLayout.PageLayout--panePos-end [class^=PageLayout-content-centered-]>[class^=container-]{margin-right:0}.PageLayout .PageLayout-content-centered-sm{--Layout-content-width: 544px}.PageLayout .PageLayout-content-centered-md{--Layout-content-width: 768px}.PageLayout .PageLayout-content-centered-lg{--Layout-content-width: 1012px}.PageLayout .PageLayout-content-centered-xl{--Layout-content-width: 1280px}}@media(min-width: 768px)and (min-width: 544px){.PageLayout{--Layout-pane-width: 220px}}@media(min-width: 768px)and (min-width: 768px){.PageLayout{--Layout-pane-width: 256px}}@media(min-width: 768px)and (min-width: 1012px){.PageLayout{--Layout-pane-width: 296px}}@media(min-width: 768px)and (min-width: 768px){.PageLayout.PageLayout--paneWidth-narrow{--Layout-pane-width: 240px}}@media(min-width: 768px)and (min-width: 1012px){.PageLayout.PageLayout--paneWidth-narrow{--Layout-pane-width: 256px}}@media(min-width: 768px)and (min-width: 1012px){.PageLayout.PageLayout--paneWidth-wide{--Layout-pane-width: 320px}}@media(min-width: 768px)and (min-width: 1280px){.PageLayout.PageLayout--paneWidth-wide{--Layout-pane-width: 336px}}@media(max-width: 767.98px){.PageLayout.PageLayout--responsive-stackRegions{--Layout-template-columns: 1fr;--Layout-template-areas: "content" "pane"}.PageLayout.PageLayout--responsive-stackRegions.PageLayout--responsive-panePos-start{--Layout-template-areas: "pane" "content"}.PageLayout.PageLayout--responsive-separateRegions{--Layout-template-columns: 1fr;--Layout-template-areas: "content"}.PageLayout.PageLayout--responsive-separateRegions.PageLayout--responsive-primary-content{--Layout-template-areas: "content"}.PageLayout.PageLayout--responsive-separateRegions.PageLayout--responsive-primary-content .PageLayout-pane{display:none}.PageLayout.PageLayout--responsive-separateRegions.PageLayout--responsive-primary-pane{--Layout-template-areas: "pane"}.PageLayout.PageLayout--responsive-separateRegions.PageLayout--responsive-primary-pane .PageLayout-content{display:none}.PageLayout .PageLayout-region--dividerNarrow-line-before{position:relative;margin-top:var(--Layout-row-gap)}.PageLayout .PageLayout-region--dividerNarrow-line-before::before{position:absolute;left:calc(var(--Layout-outer-spacing-x) * -1);display:block;width:calc(100% + (var(--Layout-outer-spacing-x) * 2));height:1px;content:"";background-color:var(--color-border-default);top:calc(-1px - var(--Layout-row-gap))}.PageLayout .PageLayout-region--dividerNarrow-line-after{position:relative;margin-bottom:var(--Layout-row-gap)}.PageLayout .PageLayout-region--dividerNarrow-line-after::after{position:absolute;left:calc(var(--Layout-outer-spacing-x) * -1);display:block;width:calc(100% + (var(--Layout-outer-spacing-x) * 2));height:1px;content:"";background-color:var(--color-border-default);bottom:calc(-1px - var(--Layout-row-gap))}.PageLayout .PageLayout-region--dividerNarrow-filled-before{position:relative;margin-top:calc(8px + var(--Layout-row-gap))}.PageLayout .PageLayout-region--dividerNarrow-filled-before::after{position:absolute;bottom:calc(8px * -1);left:calc(var(--Layout-outer-spacing-x) * -1);display:block;width:calc(100% + (var(--Layout-outer-spacing-x) * 2));height:8px;content:"";background-color:var(--color-canvas-inset);box-shadow:inset 0 1px var(--color-border-default),inset 0 -1px var(--color-border-default);top:calc(-8px - var(--Layout-row-gap))}.PageLayout .PageLayout-region--dividerNarrow-filled-after{position:relative;margin-bottom:calc(8px + var(--Layout-row-gap))}.PageLayout .PageLayout-region--dividerNarrow-filled-after::before{position:absolute;bottom:calc(8px * -1);left:calc(var(--Layout-outer-spacing-x) * -1);display:block;width:calc(100% + (var(--Layout-outer-spacing-x) * 2));height:8px;content:"";background-color:var(--color-canvas-inset);box-shadow:inset 0 1px var(--color-border-default),inset 0 -1px var(--color-border-default);bottom:calc(-8px - var(--Layout-row-gap))}}.PageLayout-wrapper{display:grid;grid:auto-flow/1fr;row-gap:var(--Layout-row-gap)}.PageLayout-columns{display:grid;column-gap:var(--Layout-column-gap);row-gap:var(--Layout-row-gap);grid-template-columns:var(--Layout-template-columns);grid-template-rows:1fr;grid-template-areas:var(--Layout-template-areas)}.PageLayout--outerSpacing-normal{--Layout-outer-spacing-x: 16px;--Layout-outer-spacing-y: 16px}@media(min-width: 1012px){.PageLayout--outerSpacing-normal{--Layout-outer-spacing-x: 24px;--Layout-outer-spacing-y: 24px}}.PageLayout--outerSpacing-condensed{--Layout-outer-spacing-x: 16px;--Layout-outer-spacing-y: 16px}.PageLayout--innerSpacing-normal{--Layout-inner-spacing-min: 16px;--Layout-inner-spacing-max: 16px}@media(min-width: 1012px){.PageLayout--innerSpacing-normal{--Layout-inner-spacing-max: 24px}}.PageLayout--innerSpacing-condensed{--Layout-inner-spacing-min: 16px;--Layout-inner-spacing-max: 16px}.PageLayout--columnGap-normal{--Layout-column-gap: 16px}@media(min-width: 1012px){.PageLayout--columnGap-normal{--Layout-column-gap: 24px}}.PageLayout--columnGap-condensed{--Layout-column-gap: 16px}.PageLayout--columnGap-none{--Layout-column-gap: 0px}.PageLayout--rowGap-normal{--Layout-row-gap: 16px}@media(min-width: 1012px){.PageLayout--rowGap-normal{--Layout-row-gap: 24px}}.PageLayout--rowGap-none{--Layout-row-gap: 0px}.PageLayout--rowGap-condensed{--Layout-row-gap: 16px}.PageLayout-header,.PageLayout-content,.PageLayout-pane,.PageLayout-footer{padding:var(--Layout-inner-spacing-min)}.PageLayout-content{padding-right:var(--Layout-inner-spacing-max);padding-left:var(--Layout-inner-spacing-max);grid-area:content}.PageLayout-pane{grid-area:pane}.Link{color:var(--color-accent-fg)}.Link:hover{text-decoration:underline;cursor:pointer}.Link--primary{color:var(--color-fg-default) !important}.Link--primary:hover{color:var(--color-accent-fg) !important}.Link--secondary{color:var(--color-fg-muted) !important}.Link--secondary:hover{color:var(--color-accent-fg) !important}.Link--muted{color:var(--color-fg-muted) !important}.Link--muted:hover{color:var(--color-accent-fg) !important;text-decoration:none}.Link--onHover:hover{color:var(--color-accent-fg) !important;text-decoration:underline;cursor:pointer}.Link--secondary:hover [class*=color-text],.Link--primary:hover [class*=color-text],.Link--muted:hover [class*=color-text]{color:inherit !important}.menu{margin-bottom:16px;list-style:none;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.menu-item{position:relative;display:block;padding:8px 16px;color:var(--color-fg-default);border-bottom:1px solid var(--color-border-muted)}.menu-item:first-child{border-top:0;border-top-left-radius:6px;border-top-right-radius:6px}.menu-item:first-child::before{border-top-left-radius:6px}.menu-item:last-child{border-bottom:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.menu-item:last-child::before{border-bottom-left-radius:6px}.menu-item:focus{z-index:1;outline:none;box-shadow:var(--color-primer-shadow-focus)}.menu-item:hover{text-decoration:none;background-color:var(--color-neutral-subtle)}.menu-item:active{background-color:var(--color-canvas-subtle)}.menu-item.selected,.menu-item[aria-selected=true],.menu-item[aria-current]:not([aria-current=false]){cursor:default;background-color:var(--color-menu-bg-active)}.menu-item.selected::before,.menu-item[aria-selected=true]::before,.menu-item[aria-current]:not([aria-current=false])::before{position:absolute;top:0;bottom:0;left:0;width:2px;content:"";background-color:var(--color-primer-border-active)}.menu-item .octicon{width:16px;margin-right:8px;color:var(--color-fg-muted);text-align:center}.menu-item .Counter{float:right;margin-left:4px}.menu-item .menu-warning{float:right;color:var(--color-attention-fg)}.menu-item .avatar{float:left;margin-right:4px}.menu-item.alert .Counter{color:var(--color-danger-fg)}.menu-heading{display:block;padding:8px 16px;margin-top:0;margin-bottom:0;font-size:inherit;font-weight:600;color:var(--color-fg-default);border-bottom:1px solid var(--color-border-muted)}.menu-heading:hover{text-decoration:none}.menu-heading:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.menu-heading:last-child{border-bottom:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.tabnav{margin-top:0;margin-bottom:16px;border-bottom:1px solid var(--color-border-default)}.tabnav-tabs{display:flex;margin-bottom:-1px;overflow:auto}.tabnav-tab{display:inline-block;flex-shrink:0;padding:8px 16px;font-size:14px;line-height:23px;color:var(--color-fg-muted);text-decoration:none;background-color:transparent;border:1px solid transparent;border-bottom:0;transition:color .2s cubic-bezier(0.3, 0, 0.5, 1)}.tabnav-tab.selected,.tabnav-tab[aria-selected=true],.tabnav-tab[aria-current]:not([aria-current=false]){color:var(--color-fg-default);background-color:var(--color-canvas-default);border-color:var(--color-border-default);border-radius:6px 6px 0 0}.tabnav-tab.selected .octicon,.tabnav-tab[aria-selected=true] .octicon,.tabnav-tab[aria-current]:not([aria-current=false]) .octicon{color:inherit}.tabnav-tab:hover,.tabnav-tab:focus{color:var(--color-fg-default);text-decoration:none;transition-duration:.1s}.tabnav-tab:active{color:var(--color-fg-muted)}.tabnav-tab .octicon{margin-right:4px;color:var(--color-fg-muted)}.tabnav-tab .Counter{margin-left:4px;color:inherit}.tabnav-extra{display:inline-block;padding-top:10px;margin-left:10px;font-size:12px;color:var(--color-fg-muted)}.tabnav-extra>.octicon{margin-right:2px}a.tabnav-extra:hover{color:var(--color-accent-fg);text-decoration:none}.tabnav-btn{margin-left:8px}.filter-list{list-style-type:none}.filter-list.small .filter-item{padding:6px 12px;font-size:12px}.filter-list.pjax-active .filter-item{color:var(--color-fg-muted);background-color:transparent}.filter-list.pjax-active .filter-item.pjax-active{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.filter-item{position:relative;display:block;padding:8px 16px;margin-bottom:4px;overflow:hidden;font-size:14px;color:var(--color-fg-muted);text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:6px}.filter-item:hover{text-decoration:none;background-color:var(--color-canvas-subtle)}.filter-item.selected,.filter-item[aria-selected=true],.filter-item[aria-current]:not([aria-current=false]){color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.filter-item .count{float:right;font-weight:600}.filter-item .bar{position:absolute;top:2px;right:0;bottom:2px;z-index:-1;display:inline-block;background-color:var(--color-neutral-subtle)}.SideNav{background-color:var(--color-canvas-subtle)}.SideNav-item{position:relative;display:block;width:100%;padding:12px 16px;color:var(--color-fg-default);text-align:left;background-color:transparent;border:0;border-top:1px solid var(--color-border-muted)}.SideNav-item:first-child{border-top:0}.SideNav-item:last-child{box-shadow:0 1px 0 var(--color-border-default)}.SideNav-item::before{position:absolute;top:0;bottom:0;left:0;z-index:1;width:2px;pointer-events:none;content:""}.SideNav-item:focus{z-index:1;outline:none;box-shadow:var(--color-primer-shadow-focus)}.SideNav-item:hover{text-decoration:none;background-color:var(--color-neutral-subtle);outline:none}.SideNav-item:active{background-color:var(--color-canvas-subtle)}.SideNav-item[aria-current]:not([aria-current=false]),.SideNav-item[aria-selected=true]{background-color:var(--color-sidenav-selected-bg)}.SideNav-item[aria-current]:not([aria-current=false])::before,.SideNav-item[aria-selected=true]::before{background-color:var(--color-primer-border-active)}.SideNav-icon{width:16px;margin-right:8px;color:var(--color-fg-muted)}.SideNav-subItem{position:relative;display:block;width:100%;padding:4px 0;color:var(--color-accent-fg);text-align:left;background-color:transparent;border:0}.SideNav-subItem:hover,.SideNav-subItem:focus{color:var(--color-fg-default);text-decoration:none;outline:none}.SideNav-subItem[aria-current]:not([aria-current=false]),.SideNav-subItem[aria-selected=true]{font-weight:500;color:var(--color-fg-default)}.subnav{margin-bottom:20px}.subnav::before{display:table;content:""}.subnav::after{display:table;clear:both;content:""}.subnav-bordered{padding-bottom:20px;border-bottom:1px solid var(--color-border-muted)}.subnav-flush{margin-bottom:0}.subnav-item{position:relative;float:left;padding:5px 16px;font-weight:500;line-height:20px;color:var(--color-fg-default);border:1px solid var(--color-border-default)}.subnav-item+.subnav-item{margin-left:-1px}.subnav-item:hover,.subnav-item:focus{text-decoration:none;background-color:var(--color-canvas-subtle)}.subnav-item.selected,.subnav-item[aria-selected=true],.subnav-item[aria-current]:not([aria-current=false]){z-index:2;color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis);border-color:var(--color-accent-emphasis)}.subnav-item:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.subnav-item:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.subnav-search{position:relative;margin-left:12px}.subnav-search-input{width:320px;padding-left:32px;color:var(--color-fg-muted)}.subnav-search-input-wide{width:500px}.subnav-search-icon{position:absolute;top:9px;left:8px;display:block;color:var(--color-fg-muted);text-align:center;pointer-events:none}.subnav-search-context .btn{border-top-right-radius:0;border-bottom-right-radius:0}.subnav-search-context .btn:hover,.subnav-search-context .btn:focus,.subnav-search-context .btn:active,.subnav-search-context .btn.selected{z-index:2}.subnav-search-context+.subnav-search{margin-left:-1px}.subnav-search-context+.subnav-search .subnav-search-input{border-top-left-radius:0;border-bottom-left-radius:0}.subnav-search-context .select-menu-modal-holder{z-index:30}.subnav-search-context .select-menu-modal{width:220px}.subnav-search-context .select-menu-item-icon{color:inherit}.subnav-spacer-right{padding-right:12px}.UnderlineNav{display:flex;overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px 0 var(--color-border-muted);justify-content:space-between}.UnderlineNav-body{display:flex}.UnderlineNav-item{padding:8px 16px;font-size:14px;line-height:30px;color:var(--color-fg-default);text-align:center;white-space:nowrap;background-color:transparent;border:0;border-bottom:2px solid transparent}.UnderlineNav-item:hover,.UnderlineNav-item:focus{color:var(--color-fg-default);text-decoration:none;border-bottom-color:var(--color-neutral-muted);outline:1px dotted transparent;outline-offset:-1px;transition:border-bottom-color .12s ease-out}.UnderlineNav-item.selected,.UnderlineNav-item[role=tab][aria-selected=true],.UnderlineNav-item[aria-current]:not([aria-current=false]){font-weight:600;color:var(--color-fg-default);border-bottom-color:var(--color-primer-border-active);outline:1px dotted transparent;outline-offset:-1px}.UnderlineNav-item.selected .UnderlineNav-octicon,.UnderlineNav-item[role=tab][aria-selected=true] .UnderlineNav-octicon,.UnderlineNav-item[aria-current]:not([aria-current=false]) .UnderlineNav-octicon{color:var(--color-fg-muted)}.UnderlineNav--right{justify-content:flex-end}.UnderlineNav--right .UnderlineNav-actions{flex:1 1 auto}.UnderlineNav-actions{align-self:center}.UnderlineNav--full{display:block}.UnderlineNav-octicon{margin-right:4px;color:var(--color-fg-subtle)}.UnderlineNav .Counter{margin-left:4px;color:var(--color-fg-default);background-color:var(--color-neutral-muted)}.UnderlineNav .Counter--primary{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis)}.UnderlineNav-container{display:flex;justify-content:space-between}.pagination a,.pagination span,.pagination em{min-width:32px;padding:5px 10px;font-style:normal;line-height:20px;color:var(--color-fg-default);text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid transparent;border-radius:6px;transition:border-color .2s cubic-bezier(0.3, 0, 0.5, 1)}.pagination a:hover,.pagination a:focus,.pagination span:hover,.pagination span:focus,.pagination em:hover,.pagination em:focus{text-decoration:none;border-color:var(--color-border-default);outline:0;transition-duration:.1s}.pagination a:active,.pagination span:active,.pagination em:active{border-color:var(--color-border-muted);transition:none}.pagination .previous_page,.pagination .next_page{color:var(--color-accent-fg)}.pagination .current,.pagination .current:hover,.pagination [aria-current]:not([aria-current=false]){color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis);border-color:transparent}.pagination .gap,.pagination .disabled,.pagination [aria-disabled=true],.pagination .gap:hover,.pagination .disabled:hover,.pagination [aria-disabled=true]:hover{color:var(--color-primer-fg-disabled);cursor:default;border-color:transparent}@supports((-webkit-clip-path: polygon(50% 0, 100% 50%, 50% 100%)) or (clip-path: polygon(50% 0, 100% 50%, 50% 100%))){.pagination .previous_page::before,.pagination .next_page::after{display:inline-block;width:16px;height:16px;vertical-align:text-bottom;content:"";background-color:currentColor}.pagination .previous_page::before{margin-right:4px;-webkit-clip-path:polygon(9.8px 12.8px, 8.7px 12.8px, 4.5px 8.5px, 4.5px 7.5px, 8.7px 3.2px, 9.8px 4.3px, 6.1px 8px, 9.8px 11.7px, 9.8px 12.8px);clip-path:polygon(9.8px 12.8px, 8.7px 12.8px, 4.5px 8.5px, 4.5px 7.5px, 8.7px 3.2px, 9.8px 4.3px, 6.1px 8px, 9.8px 11.7px, 9.8px 12.8px)}.pagination .next_page::after{margin-left:4px;-webkit-clip-path:polygon(6.2px 3.2px, 7.3px 3.2px, 11.5px 7.5px, 11.5px 8.5px, 7.3px 12.8px, 6.2px 11.7px, 9.9px 8px, 6.2px 4.3px, 6.2px 3.2px);clip-path:polygon(6.2px 3.2px, 7.3px 3.2px, 11.5px 7.5px, 11.5px 8.5px, 7.3px 12.8px, 6.2px 11.7px, 9.9px 8px, 6.2px 4.3px, 6.2px 3.2px)}}.pagination>*{display:none}.pagination>:first-child,.pagination>:last-child,.pagination>.previous_page,.pagination>.next_page{display:inline-block}@media(min-width: 544px){.pagination>:nth-child(2),.pagination>:nth-last-child(2),.pagination>.current,.pagination>.gap{display:inline-block}}@media(min-width: 768px){.pagination>*{display:inline-block}}.paginate-container{margin-top:16px;margin-bottom:16px;text-align:center}.paginate-container .pagination{display:inline-block}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:.5em .75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--color-fg-on-emphasis);text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--color-neutral-emphasis-plus);border-radius:6px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:var(--color-neutral-emphasis-plus);pointer-events:none;content:"";border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;animation-delay:.4s}.tooltipped-no-delay:hover::before,.tooltipped-no-delay:hover::after,.tooltipped-no-delay:active::before,.tooltipped-no-delay:active::after,.tooltipped-no-delay:focus::before,.tooltipped-no-delay:focus::after{animation-delay:0s}.tooltipped-multiline:hover::after,.tooltipped-multiline:active::after,.tooltipped-multiline:focus::after{display:table-cell}.tooltipped-s::after,.tooltipped-se::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:6px}.tooltipped-s::before,.tooltipped-se::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:var(--color-neutral-emphasis-plus)}.tooltipped-se::after{right:auto;left:50%;margin-left:-16px}.tooltipped-sw::after{margin-right:-16px}.tooltipped-n::after,.tooltipped-ne::after,.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px}.tooltipped-n::before,.tooltipped-ne::before,.tooltipped-nw::before{top:-7px;right:50%;bottom:auto;margin-right:-6px;border-top-color:var(--color-neutral-emphasis-plus)}.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px}.tooltipped-nw::after{margin-right:-16px}.tooltipped-s::after,.tooltipped-n::after{transform:translateX(50%)}.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;transform:translateY(50%)}.tooltipped-w::before{top:50%;bottom:50%;left:-7px;margin-top:-6px;border-left-color:var(--color-neutral-emphasis-plus)}.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;transform:translateY(50%)}.tooltipped-e::before{top:50%;right:-7px;bottom:50%;margin-top:-6px;border-right-color:var(--color-neutral-emphasis-plus)}.tooltipped-align-right-1::after,.tooltipped-align-right-2::after{right:0;margin-right:0}.tooltipped-align-right-1::before{right:10px}.tooltipped-align-right-2::before{right:15px}.tooltipped-align-left-1::after,.tooltipped-align-left-2::after{left:0;margin-left:0}.tooltipped-align-left-1::before{left:5px}.tooltipped-align-left-2::before{left:10px}.tooltipped-multiline::after{width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate}.tooltipped-multiline.tooltipped-s::after,.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w::after,.tooltipped-multiline.tooltipped-e::after{right:100%}@media screen and (min-width: 0\0 ){.tooltipped-multiline::after{width:250px}}.tooltipped-sticky::before,.tooltipped-sticky::after{display:inline-block}.tooltipped-sticky.tooltipped-multiline::after{display:table-cell}.css-truncate.css-truncate-overflow,.css-truncate .css-truncate-overflow,.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{display:inline-block;max-width:125px;vertical-align:top}.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target,.css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target,.css-truncate.expandable:hover .css-truncate-target,.css-truncate.expandable:hover.css-truncate-target{max-width:10000px !important}.Truncate{display:inline-flex;min-width:0;max-width:100%}.Truncate>.Truncate-text{min-width:1ch;max-width:-moz-fit-content;max-width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Truncate>.Truncate-text+.Truncate-text{margin-left:4px}.Truncate>.Truncate-text.Truncate-text--primary{flex-basis:200%}.Truncate>.Truncate-text.Truncate-text--expandable:hover,.Truncate>.Truncate-text.Truncate-text--expandable:focus,.Truncate>.Truncate-text.Truncate-text--expandable:active{max-width:100% !important;flex-shrink:0;cursor:pointer}.anim-fade-in{animation-name:fade-in;animation-duration:1s;animation-timing-function:ease-in-out}.anim-fade-in.fast{animation-duration:300ms}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}.anim-fade-out{animation-name:fade-out;animation-duration:1s;animation-fill-mode:forwards;animation-timing-function:ease-out}.anim-fade-out.fast{animation-duration:.3s}@keyframes fade-out{0%{opacity:1}100%{opacity:0}}.anim-fade-up{opacity:0;animation-name:fade-up;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-delay:1s}@keyframes fade-up{0%{opacity:.8;transform:translateY(100%)}100%{opacity:1;transform:translateY(0)}}.anim-fade-down{animation-name:fade-down;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease-in}@keyframes fade-down{0%{opacity:1;transform:translateY(0)}100%{opacity:.5;transform:translateY(100%)}}.anim-grow-x{width:0%;animation-name:grow-x;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease;animation-delay:.5s}@keyframes grow-x{to{width:100%}}.anim-shrink-x{animation-name:shrink-x;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease-in-out;animation-delay:.5s}@keyframes shrink-x{to{width:0%}}.anim-scale-in{animation-name:scale-in;animation-duration:.15s;animation-timing-function:cubic-bezier(0.2, 0, 0.13, 1.5)}@keyframes scale-in{0%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}.anim-pulse{animation-name:pulse;animation-duration:2s;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes pulse{0%{opacity:.3}10%{opacity:1}100%{opacity:.3}}.anim-pulse-in{animation-name:pulse-in;animation-duration:.5s}@keyframes pulse-in{0%{transform:scale3d(1, 1, 1)}50%{transform:scale3d(1.1, 1.1, 1.1)}100%{transform:scale3d(1, 1, 1)}}.hover-grow,.anim-hover-grow{transition:transform .3s;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hover-grow:hover,.anim-hover-grow:hover{transform:scale(1.025)}.anim-rotate{animation:rotate-keyframes 1s linear infinite}@keyframes rotate-keyframes{100%{transform:rotate(360deg)}}.border-x{border-right:1px solid var(--color-border-default) !important;border-left:1px solid var(--color-border-default) !important}.border-y{border-top:1px solid var(--color-border-default) !important;border-bottom:1px solid var(--color-border-default) !important}.border{border:1px solid var(--color-border-default) !important}.border-0{border:0 !important}.border-top{border-top:1px solid var(--color-border-default) !important}.border-right{border-right:1px solid var(--color-border-default) !important}.border-bottom{border-bottom:1px solid var(--color-border-default) !important}.border-left{border-left:1px solid var(--color-border-default) !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.rounded{border-radius:6px !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:4px !important}.rounded-2{border-radius:6px !important}.rounded-3{border-radius:8px !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-top-2{border-top-left-radius:6px !important;border-top-right-radius:6px !important}.rounded-top-3{border-top-left-radius:8px !important;border-top-right-radius:8px !important}.rounded-right-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-right-1{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-right-2{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important}.rounded-right-3{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-bottom-2{border-bottom-right-radius:6px !important;border-bottom-left-radius:6px !important}.rounded-bottom-3{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important}.rounded-left-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-left-1{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.rounded-left-2{border-bottom-left-radius:6px !important;border-top-left-radius:6px !important}.rounded-left-3{border-bottom-left-radius:8px !important;border-top-left-radius:8px !important}@media(min-width: 544px){.border-sm{border:1px solid var(--color-border-default) !important}.border-sm-0{border:0 !important}.border-sm-top{border-top:1px solid var(--color-border-default) !important}.border-sm-right{border-right:1px solid var(--color-border-default) !important}.border-sm-bottom{border-bottom:1px solid var(--color-border-default) !important}.border-sm-left{border-left:1px solid var(--color-border-default) !important}.border-sm-top-0{border-top:0 !important}.border-sm-right-0{border-right:0 !important}.border-sm-bottom-0{border-bottom:0 !important}.border-sm-left-0{border-left:0 !important}.rounded-sm{border-radius:6px !important}.rounded-sm-0{border-radius:0 !important}.rounded-sm-1{border-radius:4px !important}.rounded-sm-2{border-radius:6px !important}.rounded-sm-3{border-radius:8px !important}.rounded-sm-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-sm-top-1{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-sm-top-2{border-top-left-radius:6px !important;border-top-right-radius:6px !important}.rounded-sm-top-3{border-top-left-radius:8px !important;border-top-right-radius:8px !important}.rounded-sm-right-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-sm-right-1{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-sm-right-2{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important}.rounded-sm-right-3{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important}.rounded-sm-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-sm-bottom-1{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-sm-bottom-2{border-bottom-right-radius:6px !important;border-bottom-left-radius:6px !important}.rounded-sm-bottom-3{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important}.rounded-sm-left-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-sm-left-1{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.rounded-sm-left-2{border-bottom-left-radius:6px !important;border-top-left-radius:6px !important}.rounded-sm-left-3{border-bottom-left-radius:8px !important;border-top-left-radius:8px !important}}@media(min-width: 768px){.border-md{border:1px solid var(--color-border-default) !important}.border-md-0{border:0 !important}.border-md-top{border-top:1px solid var(--color-border-default) !important}.border-md-right{border-right:1px solid var(--color-border-default) !important}.border-md-bottom{border-bottom:1px solid var(--color-border-default) !important}.border-md-left{border-left:1px solid var(--color-border-default) !important}.border-md-top-0{border-top:0 !important}.border-md-right-0{border-right:0 !important}.border-md-bottom-0{border-bottom:0 !important}.border-md-left-0{border-left:0 !important}.rounded-md{border-radius:6px !important}.rounded-md-0{border-radius:0 !important}.rounded-md-1{border-radius:4px !important}.rounded-md-2{border-radius:6px !important}.rounded-md-3{border-radius:8px !important}.rounded-md-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-md-top-1{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-md-top-2{border-top-left-radius:6px !important;border-top-right-radius:6px !important}.rounded-md-top-3{border-top-left-radius:8px !important;border-top-right-radius:8px !important}.rounded-md-right-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-md-right-1{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-md-right-2{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important}.rounded-md-right-3{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important}.rounded-md-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-md-bottom-1{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-md-bottom-2{border-bottom-right-radius:6px !important;border-bottom-left-radius:6px !important}.rounded-md-bottom-3{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important}.rounded-md-left-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-md-left-1{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.rounded-md-left-2{border-bottom-left-radius:6px !important;border-top-left-radius:6px !important}.rounded-md-left-3{border-bottom-left-radius:8px !important;border-top-left-radius:8px !important}}@media(min-width: 1012px){.border-lg{border:1px solid var(--color-border-default) !important}.border-lg-0{border:0 !important}.border-lg-top{border-top:1px solid var(--color-border-default) !important}.border-lg-right{border-right:1px solid var(--color-border-default) !important}.border-lg-bottom{border-bottom:1px solid var(--color-border-default) !important}.border-lg-left{border-left:1px solid var(--color-border-default) !important}.border-lg-top-0{border-top:0 !important}.border-lg-right-0{border-right:0 !important}.border-lg-bottom-0{border-bottom:0 !important}.border-lg-left-0{border-left:0 !important}.rounded-lg{border-radius:6px !important}.rounded-lg-0{border-radius:0 !important}.rounded-lg-1{border-radius:4px !important}.rounded-lg-2{border-radius:6px !important}.rounded-lg-3{border-radius:8px !important}.rounded-lg-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-lg-top-1{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-lg-top-2{border-top-left-radius:6px !important;border-top-right-radius:6px !important}.rounded-lg-top-3{border-top-left-radius:8px !important;border-top-right-radius:8px !important}.rounded-lg-right-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-lg-right-1{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-lg-right-2{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important}.rounded-lg-right-3{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important}.rounded-lg-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-lg-bottom-1{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-lg-bottom-2{border-bottom-right-radius:6px !important;border-bottom-left-radius:6px !important}.rounded-lg-bottom-3{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important}.rounded-lg-left-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-lg-left-1{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.rounded-lg-left-2{border-bottom-left-radius:6px !important;border-top-left-radius:6px !important}.rounded-lg-left-3{border-bottom-left-radius:8px !important;border-top-left-radius:8px !important}}@media(min-width: 1280px){.border-xl{border:1px solid var(--color-border-default) !important}.border-xl-0{border:0 !important}.border-xl-top{border-top:1px solid var(--color-border-default) !important}.border-xl-right{border-right:1px solid var(--color-border-default) !important}.border-xl-bottom{border-bottom:1px solid var(--color-border-default) !important}.border-xl-left{border-left:1px solid var(--color-border-default) !important}.border-xl-top-0{border-top:0 !important}.border-xl-right-0{border-right:0 !important}.border-xl-bottom-0{border-bottom:0 !important}.border-xl-left-0{border-left:0 !important}.rounded-xl{border-radius:6px !important}.rounded-xl-0{border-radius:0 !important}.rounded-xl-1{border-radius:4px !important}.rounded-xl-2{border-radius:6px !important}.rounded-xl-3{border-radius:8px !important}.rounded-xl-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-xl-top-1{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-xl-top-2{border-top-left-radius:6px !important;border-top-right-radius:6px !important}.rounded-xl-top-3{border-top-left-radius:8px !important;border-top-right-radius:8px !important}.rounded-xl-right-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-xl-right-1{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-xl-right-2{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important}.rounded-xl-right-3{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important}.rounded-xl-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-xl-bottom-1{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-xl-bottom-2{border-bottom-right-radius:6px !important;border-bottom-left-radius:6px !important}.rounded-xl-bottom-3{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important}.rounded-xl-left-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-xl-left-1{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.rounded-xl-left-2{border-bottom-left-radius:6px !important;border-top-left-radius:6px !important}.rounded-xl-left-3{border-bottom-left-radius:8px !important;border-top-left-radius:8px !important}}.circle{border-radius:50% !important}.border-dashed{border-style:dashed !important}.color-shadow-small{box-shadow:var(--color-shadow-small) !important}.color-shadow-medium{box-shadow:var(--color-shadow-medium) !important}.color-shadow-large{box-shadow:var(--color-shadow-large) !important}.color-shadow-extra-large{box-shadow:var(--color-shadow-extra-large) !important}.box-shadow-none{box-shadow:none !important}.color-fg-default{color:var(--color-fg-default) !important}.color-fg-muted{color:var(--color-fg-muted) !important}.color-fg-subtle{color:var(--color-fg-subtle) !important}.color-fg-accent{color:var(--color-accent-fg) !important}.color-fg-success{color:var(--color-success-fg) !important}.color-fg-attention{color:var(--color-attention-fg) !important}.color-fg-severe{color:var(--color-severe-fg) !important}.color-fg-danger{color:var(--color-danger-fg) !important}.color-fg-done{color:var(--color-done-fg) !important}.color-fg-sponsors{color:var(--color-sponsors-fg) !important}.color-fg-on-emphasis{color:var(--color-fg-on-emphasis) !important}.color-bg-default{background-color:var(--color-canvas-default) !important}.color-bg-overlay{background-color:var(--color-canvas-overlay) !important}.color-bg-inset{background-color:var(--color-canvas-inset) !important}.color-bg-subtle{background-color:var(--color-canvas-subtle) !important}.color-bg-emphasis{background-color:var(--color-neutral-emphasis-plus) !important}.color-bg-accent{background-color:var(--color-accent-subtle) !important}.color-bg-accent-emphasis{background-color:var(--color-accent-emphasis) !important}.color-bg-success{background-color:var(--color-success-subtle) !important}.color-bg-success-emphasis{background-color:var(--color-success-emphasis) !important}.color-bg-attention{background-color:var(--color-attention-subtle) !important}.color-bg-attention-emphasis{background-color:var(--color-attention-emphasis) !important}.color-bg-severe{background-color:var(--color-severe-subtle) !important}.color-bg-severe-emphasis{background-color:var(--color-severe-emphasis) !important}.color-bg-danger{background-color:var(--color-danger-subtle) !important}.color-bg-danger-emphasis{background-color:var(--color-danger-emphasis) !important}.color-bg-done{background-color:var(--color-done-subtle) !important}.color-bg-done-emphasis{background-color:var(--color-done-emphasis) !important}.color-bg-sponsors{background-color:var(--color-sponsors-subtle) !important}.color-bg-sponsors-emphasis{background-color:var(--color-sponsors-emphasis) !important}.color-border-default{border-color:var(--color-border-default) !important}.color-border-muted{border-color:var(--color-border-muted) !important}.color-border-subtle{border-color:var(--color-border-subtle) !important}.color-border-accent{border-color:var(--color-accent-muted) !important}.color-border-accent-emphasis{border-color:var(--color-accent-emphasis) !important}.color-border-success{border-color:var(--color-success-muted) !important}.color-border-success-emphasis{border-color:var(--color-success-emphasis) !important}.color-border-attention{border-color:var(--color-attention-muted) !important}.color-border-attention-emphasis{border-color:var(--color-attention-emphasis) !important}.color-border-severe{border-color:var(--color-severe-muted) !important}.color-border-severe-emphasis{border-color:var(--color-severe-emphasis) !important}.color-border-danger{border-color:var(--color-danger-muted) !important}.color-border-danger-emphasis{border-color:var(--color-danger-emphasis) !important}.color-border-done{border-color:var(--color-done-muted) !important}.color-border-done-emphasis{border-color:var(--color-done-emphasis) !important}.color-border-sponsors{border-color:var(--color-sponsors-muted) !important}.color-border-sponsors-emphasis{border-color:var(--color-sponsors-emphasis) !important}.color-fg-inherit{color:inherit !important}.details-overlay[open]>summary::before{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:block;cursor:default;content:" ";background:transparent}.details-overlay-dark[open]>summary::before{z-index:111;background:var(--color-primer-canvas-backdrop)}.details-reset>summary{list-style:none}.details-reset>summary::before{display:none}.details-reset>summary::-webkit-details-marker{display:none}.flex-row{flex-direction:row !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column{flex-direction:column !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-justify-start{justify-content:flex-start !important}.flex-justify-end{justify-content:flex-end !important}.flex-justify-center{justify-content:center !important}.flex-justify-between{justify-content:space-between !important}.flex-justify-around{justify-content:space-around !important}.flex-items-start{align-items:flex-start !important}.flex-items-end{align-items:flex-end !important}.flex-items-center{align-items:center !important}.flex-items-baseline{align-items:baseline !important}.flex-items-stretch{align-items:stretch !important}.flex-content-start{align-content:flex-start !important}.flex-content-end{align-content:flex-end !important}.flex-content-center{align-content:center !important}.flex-content-between{align-content:space-between !important}.flex-content-around{align-content:space-around !important}.flex-content-stretch{align-content:stretch !important}.flex-1{flex:1 !important}.flex-auto{flex:auto !important}.flex-grow-0{flex-grow:0 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-self-auto{align-self:auto !important}.flex-self-start{align-self:flex-start !important}.flex-self-end{align-self:flex-end !important}.flex-self-center{align-self:center !important}.flex-self-baseline{align-self:baseline !important}.flex-self-stretch{align-self:stretch !important}.flex-order-1{order:1 !important}.flex-order-2{order:2 !important}.flex-order-none{order:inherit !important}@media(min-width: 544px){.flex-sm-row{flex-direction:row !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column{flex-direction:column !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-justify-start{justify-content:flex-start !important}.flex-sm-justify-end{justify-content:flex-end !important}.flex-sm-justify-center{justify-content:center !important}.flex-sm-justify-between{justify-content:space-between !important}.flex-sm-justify-around{justify-content:space-around !important}.flex-sm-items-start{align-items:flex-start !important}.flex-sm-items-end{align-items:flex-end !important}.flex-sm-items-center{align-items:center !important}.flex-sm-items-baseline{align-items:baseline !important}.flex-sm-items-stretch{align-items:stretch !important}.flex-sm-content-start{align-content:flex-start !important}.flex-sm-content-end{align-content:flex-end !important}.flex-sm-content-center{align-content:center !important}.flex-sm-content-between{align-content:space-between !important}.flex-sm-content-around{align-content:space-around !important}.flex-sm-content-stretch{align-content:stretch !important}.flex-sm-1{flex:1 !important}.flex-sm-auto{flex:auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-self-auto{align-self:auto !important}.flex-sm-self-start{align-self:flex-start !important}.flex-sm-self-end{align-self:flex-end !important}.flex-sm-self-center{align-self:center !important}.flex-sm-self-baseline{align-self:baseline !important}.flex-sm-self-stretch{align-self:stretch !important}.flex-sm-order-1{order:1 !important}.flex-sm-order-2{order:2 !important}.flex-sm-order-none{order:inherit !important}}@media(min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column{flex-direction:column !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-justify-start{justify-content:flex-start !important}.flex-md-justify-end{justify-content:flex-end !important}.flex-md-justify-center{justify-content:center !important}.flex-md-justify-between{justify-content:space-between !important}.flex-md-justify-around{justify-content:space-around !important}.flex-md-items-start{align-items:flex-start !important}.flex-md-items-end{align-items:flex-end !important}.flex-md-items-center{align-items:center !important}.flex-md-items-baseline{align-items:baseline !important}.flex-md-items-stretch{align-items:stretch !important}.flex-md-content-start{align-content:flex-start !important}.flex-md-content-end{align-content:flex-end !important}.flex-md-content-center{align-content:center !important}.flex-md-content-between{align-content:space-between !important}.flex-md-content-around{align-content:space-around !important}.flex-md-content-stretch{align-content:stretch !important}.flex-md-1{flex:1 !important}.flex-md-auto{flex:auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-self-auto{align-self:auto !important}.flex-md-self-start{align-self:flex-start !important}.flex-md-self-end{align-self:flex-end !important}.flex-md-self-center{align-self:center !important}.flex-md-self-baseline{align-self:baseline !important}.flex-md-self-stretch{align-self:stretch !important}.flex-md-order-1{order:1 !important}.flex-md-order-2{order:2 !important}.flex-md-order-none{order:inherit !important}}@media(min-width: 1012px){.flex-lg-row{flex-direction:row !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column{flex-direction:column !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-justify-start{justify-content:flex-start !important}.flex-lg-justify-end{justify-content:flex-end !important}.flex-lg-justify-center{justify-content:center !important}.flex-lg-justify-between{justify-content:space-between !important}.flex-lg-justify-around{justify-content:space-around !important}.flex-lg-items-start{align-items:flex-start !important}.flex-lg-items-end{align-items:flex-end !important}.flex-lg-items-center{align-items:center !important}.flex-lg-items-baseline{align-items:baseline !important}.flex-lg-items-stretch{align-items:stretch !important}.flex-lg-content-start{align-content:flex-start !important}.flex-lg-content-end{align-content:flex-end !important}.flex-lg-content-center{align-content:center !important}.flex-lg-content-between{align-content:space-between !important}.flex-lg-content-around{align-content:space-around !important}.flex-lg-content-stretch{align-content:stretch !important}.flex-lg-1{flex:1 !important}.flex-lg-auto{flex:auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-self-auto{align-self:auto !important}.flex-lg-self-start{align-self:flex-start !important}.flex-lg-self-end{align-self:flex-end !important}.flex-lg-self-center{align-self:center !important}.flex-lg-self-baseline{align-self:baseline !important}.flex-lg-self-stretch{align-self:stretch !important}.flex-lg-order-1{order:1 !important}.flex-lg-order-2{order:2 !important}.flex-lg-order-none{order:inherit !important}}@media(min-width: 1280px){.flex-xl-row{flex-direction:row !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column{flex-direction:column !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-justify-start{justify-content:flex-start !important}.flex-xl-justify-end{justify-content:flex-end !important}.flex-xl-justify-center{justify-content:center !important}.flex-xl-justify-between{justify-content:space-between !important}.flex-xl-justify-around{justify-content:space-around !important}.flex-xl-items-start{align-items:flex-start !important}.flex-xl-items-end{align-items:flex-end !important}.flex-xl-items-center{align-items:center !important}.flex-xl-items-baseline{align-items:baseline !important}.flex-xl-items-stretch{align-items:stretch !important}.flex-xl-content-start{align-content:flex-start !important}.flex-xl-content-end{align-content:flex-end !important}.flex-xl-content-center{align-content:center !important}.flex-xl-content-between{align-content:space-between !important}.flex-xl-content-around{align-content:space-around !important}.flex-xl-content-stretch{align-content:stretch !important}.flex-xl-1{flex:1 !important}.flex-xl-auto{flex:auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-self-auto{align-self:auto !important}.flex-xl-self-start{align-self:flex-start !important}.flex-xl-self-end{align-self:flex-end !important}.flex-xl-self-center{align-self:center !important}.flex-xl-self-baseline{align-self:baseline !important}.flex-xl-self-stretch{align-self:stretch !important}.flex-xl-order-1{order:1 !important}.flex-xl-order-2{order:2 !important}.flex-xl-order-none{order:inherit !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}@media(min-width: 544px){.position-sm-static{position:static !important}.position-sm-relative{position:relative !important}.position-sm-absolute{position:absolute !important}.position-sm-fixed{position:fixed !important}.position-sm-sticky{position:sticky !important}}@media(min-width: 768px){.position-md-static{position:static !important}.position-md-relative{position:relative !important}.position-md-absolute{position:absolute !important}.position-md-fixed{position:fixed !important}.position-md-sticky{position:sticky !important}}@media(min-width: 1012px){.position-lg-static{position:static !important}.position-lg-relative{position:relative !important}.position-lg-absolute{position:absolute !important}.position-lg-fixed{position:fixed !important}.position-lg-sticky{position:sticky !important}}@media(min-width: 1280px){.position-xl-static{position:static !important}.position-xl-relative{position:relative !important}.position-xl-absolute{position:absolute !important}.position-xl-fixed{position:fixed !important}.position-xl-sticky{position:sticky !important}}.top-0{top:0 !important}.right-0{right:0 !important}.bottom-0{bottom:0 !important}.left-0{left:0 !important}.top-auto{top:auto !important}.right-auto{right:auto !important}.bottom-auto{bottom:auto !important}.left-auto{left:auto !important}@media(min-width: 544px){.top-sm-0{top:0 !important}.right-sm-0{right:0 !important}.bottom-sm-0{bottom:0 !important}.left-sm-0{left:0 !important}.top-sm-auto{top:auto !important}.right-sm-auto{right:auto !important}.bottom-sm-auto{bottom:auto !important}.left-sm-auto{left:auto !important}}@media(min-width: 768px){.top-md-0{top:0 !important}.right-md-0{right:0 !important}.bottom-md-0{bottom:0 !important}.left-md-0{left:0 !important}.top-md-auto{top:auto !important}.right-md-auto{right:auto !important}.bottom-md-auto{bottom:auto !important}.left-md-auto{left:auto !important}}@media(min-width: 1012px){.top-lg-0{top:0 !important}.right-lg-0{right:0 !important}.bottom-lg-0{bottom:0 !important}.left-lg-0{left:0 !important}.top-lg-auto{top:auto !important}.right-lg-auto{right:auto !important}.bottom-lg-auto{bottom:auto !important}.left-lg-auto{left:auto !important}}@media(min-width: 1280px){.top-xl-0{top:0 !important}.right-xl-0{right:0 !important}.bottom-xl-0{bottom:0 !important}.left-xl-0{left:0 !important}.top-xl-auto{top:auto !important}.right-xl-auto{right:auto !important}.bottom-xl-auto{bottom:auto !important}.left-xl-auto{left:auto !important}}.v-align-middle{vertical-align:middle !important}.v-align-top{vertical-align:top !important}.v-align-bottom{vertical-align:bottom !important}.v-align-text-top{vertical-align:text-top !important}.v-align-text-bottom{vertical-align:text-bottom !important}.v-align-baseline{vertical-align:baseline !important}.overflow-visible{overflow:visible !important}.overflow-x-visible{overflow-x:visible !important}.overflow-y-visible{overflow-y:visible !important}.overflow-hidden{overflow:hidden !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-auto{overflow:auto !important}.overflow-x-auto{overflow-x:auto !important}.overflow-y-auto{overflow-y:auto !important}.overflow-scroll{overflow:scroll !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-scroll{overflow-y:scroll !important}@media(min-width: 544px){.overflow-sm-visible{overflow:visible !important}.overflow-sm-x-visible{overflow-x:visible !important}.overflow-sm-y-visible{overflow-y:visible !important}.overflow-sm-hidden{overflow:hidden !important}.overflow-sm-x-hidden{overflow-x:hidden !important}.overflow-sm-y-hidden{overflow-y:hidden !important}.overflow-sm-auto{overflow:auto !important}.overflow-sm-x-auto{overflow-x:auto !important}.overflow-sm-y-auto{overflow-y:auto !important}.overflow-sm-scroll{overflow:scroll !important}.overflow-sm-x-scroll{overflow-x:scroll !important}.overflow-sm-y-scroll{overflow-y:scroll !important}}@media(min-width: 768px){.overflow-md-visible{overflow:visible !important}.overflow-md-x-visible{overflow-x:visible !important}.overflow-md-y-visible{overflow-y:visible !important}.overflow-md-hidden{overflow:hidden !important}.overflow-md-x-hidden{overflow-x:hidden !important}.overflow-md-y-hidden{overflow-y:hidden !important}.overflow-md-auto{overflow:auto !important}.overflow-md-x-auto{overflow-x:auto !important}.overflow-md-y-auto{overflow-y:auto !important}.overflow-md-scroll{overflow:scroll !important}.overflow-md-x-scroll{overflow-x:scroll !important}.overflow-md-y-scroll{overflow-y:scroll !important}}@media(min-width: 1012px){.overflow-lg-visible{overflow:visible !important}.overflow-lg-x-visible{overflow-x:visible !important}.overflow-lg-y-visible{overflow-y:visible !important}.overflow-lg-hidden{overflow:hidden !important}.overflow-lg-x-hidden{overflow-x:hidden !important}.overflow-lg-y-hidden{overflow-y:hidden !important}.overflow-lg-auto{overflow:auto !important}.overflow-lg-x-auto{overflow-x:auto !important}.overflow-lg-y-auto{overflow-y:auto !important}.overflow-lg-scroll{overflow:scroll !important}.overflow-lg-x-scroll{overflow-x:scroll !important}.overflow-lg-y-scroll{overflow-y:scroll !important}}@media(min-width: 1280px){.overflow-xl-visible{overflow:visible !important}.overflow-xl-x-visible{overflow-x:visible !important}.overflow-xl-y-visible{overflow-y:visible !important}.overflow-xl-hidden{overflow:hidden !important}.overflow-xl-x-hidden{overflow-x:hidden !important}.overflow-xl-y-hidden{overflow-y:hidden !important}.overflow-xl-auto{overflow:auto !important}.overflow-xl-x-auto{overflow-x:auto !important}.overflow-xl-y-auto{overflow-y:auto !important}.overflow-xl-scroll{overflow:scroll !important}.overflow-xl-x-scroll{overflow-x:scroll !important}.overflow-xl-y-scroll{overflow-y:scroll !important}}.clearfix::before{display:table;content:""}.clearfix::after{display:table;clear:both;content:""}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media(min-width: 544px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media(min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media(min-width: 1012px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media(min-width: 1280px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.width-fit{max-width:100% !important}.width-full{width:100% !important}.height-fit{max-height:100% !important}.height-full{height:100% !important}.min-width-0{min-width:0 !important}.width-auto{width:auto !important}.direction-rtl{direction:rtl !important}.direction-ltr{direction:ltr !important}@media(min-width: 544px){.width-sm-auto{width:auto !important}.direction-sm-rtl{direction:rtl !important}.direction-sm-ltr{direction:ltr !important}}@media(min-width: 768px){.width-md-auto{width:auto !important}.direction-md-rtl{direction:rtl !important}.direction-md-ltr{direction:ltr !important}}@media(min-width: 1012px){.width-lg-auto{width:auto !important}.direction-lg-rtl{direction:rtl !important}.direction-lg-ltr{direction:ltr !important}}@media(min-width: 1280px){.width-xl-auto{width:auto !important}.direction-xl-rtl{direction:rtl !important}.direction-xl-ltr{direction:ltr !important}}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mb-0{margin-bottom:0 !important}.mr-0{margin-right:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:4px !important}.mt-1{margin-top:4px !important}.mb-1{margin-bottom:4px !important}.mr-1{margin-right:4px !important}.ml-1{margin-left:4px !important}.mt-n1{margin-top:-4px !important}.mb-n1{margin-bottom:-4px !important}.mr-n1{margin-right:-4px !important}.ml-n1{margin-left:-4px !important}.mx-1{margin-right:4px !important;margin-left:4px !important}.my-1{margin-top:4px !important;margin-bottom:4px !important}.m-2{margin:8px !important}.mt-2{margin-top:8px !important}.mb-2{margin-bottom:8px !important}.mr-2{margin-right:8px !important}.ml-2{margin-left:8px !important}.mt-n2{margin-top:-8px !important}.mb-n2{margin-bottom:-8px !important}.mr-n2{margin-right:-8px !important}.ml-n2{margin-left:-8px !important}.mx-2{margin-right:8px !important;margin-left:8px !important}.my-2{margin-top:8px !important;margin-bottom:8px !important}.m-3{margin:16px !important}.mt-3{margin-top:16px !important}.mb-3{margin-bottom:16px !important}.mr-3{margin-right:16px !important}.ml-3{margin-left:16px !important}.mt-n3{margin-top:-16px !important}.mb-n3{margin-bottom:-16px !important}.mr-n3{margin-right:-16px !important}.ml-n3{margin-left:-16px !important}.mx-3{margin-right:16px !important;margin-left:16px !important}.my-3{margin-top:16px !important;margin-bottom:16px !important}.m-4{margin:24px !important}.mt-4{margin-top:24px !important}.mb-4{margin-bottom:24px !important}.mr-4{margin-right:24px !important}.ml-4{margin-left:24px !important}.mt-n4{margin-top:-24px !important}.mb-n4{margin-bottom:-24px !important}.mr-n4{margin-right:-24px !important}.ml-n4{margin-left:-24px !important}.mx-4{margin-right:24px !important;margin-left:24px !important}.my-4{margin-top:24px !important;margin-bottom:24px !important}.m-5{margin:32px !important}.mt-5{margin-top:32px !important}.mb-5{margin-bottom:32px !important}.mr-5{margin-right:32px !important}.ml-5{margin-left:32px !important}.mt-n5{margin-top:-32px !important}.mb-n5{margin-bottom:-32px !important}.mr-n5{margin-right:-32px !important}.ml-n5{margin-left:-32px !important}.mx-5{margin-right:32px !important;margin-left:32px !important}.my-5{margin-top:32px !important;margin-bottom:32px !important}.m-6{margin:40px !important}.mt-6{margin-top:40px !important}.mb-6{margin-bottom:40px !important}.mr-6{margin-right:40px !important}.ml-6{margin-left:40px !important}.mt-n6{margin-top:-40px !important}.mb-n6{margin-bottom:-40px !important}.mr-n6{margin-right:-40px !important}.ml-n6{margin-left:-40px !important}.mx-6{margin-right:40px !important;margin-left:40px !important}.my-6{margin-top:40px !important;margin-bottom:40px !important}.mt-7{margin-top:48px !important}.mb-7{margin-bottom:48px !important}.mt-n7{margin-top:-48px !important}.mb-n7{margin-bottom:-48px !important}.my-7{margin-top:48px !important;margin-bottom:48px !important}.mt-8{margin-top:64px !important}.mb-8{margin-bottom:64px !important}.mt-n8{margin-top:-64px !important}.mb-n8{margin-bottom:-64px !important}.my-8{margin-top:64px !important;margin-bottom:64px !important}.mt-9{margin-top:80px !important}.mb-9{margin-bottom:80px !important}.mt-n9{margin-top:-80px !important}.mb-n9{margin-bottom:-80px !important}.my-9{margin-top:80px !important;margin-bottom:80px !important}.mt-10{margin-top:96px !important}.mb-10{margin-bottom:96px !important}.mt-n10{margin-top:-96px !important}.mb-n10{margin-bottom:-96px !important}.my-10{margin-top:96px !important;margin-bottom:96px !important}.mt-11{margin-top:112px !important}.mb-11{margin-bottom:112px !important}.mt-n11{margin-top:-112px !important}.mb-n11{margin-bottom:-112px !important}.my-11{margin-top:112px !important;margin-bottom:112px !important}.mt-12{margin-top:128px !important}.mb-12{margin-bottom:128px !important}.mt-n12{margin-top:-128px !important}.mb-n12{margin-bottom:-128px !important}.my-12{margin-top:128px !important;margin-bottom:128px !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}@media(min-width: 544px){.m-sm-0{margin:0 !important}.mt-sm-0{margin-top:0 !important}.mb-sm-0{margin-bottom:0 !important}.mr-sm-0{margin-right:0 !important}.ml-sm-0{margin-left:0 !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.m-sm-1{margin:4px !important}.mt-sm-1{margin-top:4px !important}.mb-sm-1{margin-bottom:4px !important}.mr-sm-1{margin-right:4px !important}.ml-sm-1{margin-left:4px !important}.mt-sm-n1{margin-top:-4px !important}.mb-sm-n1{margin-bottom:-4px !important}.mr-sm-n1{margin-right:-4px !important}.ml-sm-n1{margin-left:-4px !important}.mx-sm-1{margin-right:4px !important;margin-left:4px !important}.my-sm-1{margin-top:4px !important;margin-bottom:4px !important}.m-sm-2{margin:8px !important}.mt-sm-2{margin-top:8px !important}.mb-sm-2{margin-bottom:8px !important}.mr-sm-2{margin-right:8px !important}.ml-sm-2{margin-left:8px !important}.mt-sm-n2{margin-top:-8px !important}.mb-sm-n2{margin-bottom:-8px !important}.mr-sm-n2{margin-right:-8px !important}.ml-sm-n2{margin-left:-8px !important}.mx-sm-2{margin-right:8px !important;margin-left:8px !important}.my-sm-2{margin-top:8px !important;margin-bottom:8px !important}.m-sm-3{margin:16px !important}.mt-sm-3{margin-top:16px !important}.mb-sm-3{margin-bottom:16px !important}.mr-sm-3{margin-right:16px !important}.ml-sm-3{margin-left:16px !important}.mt-sm-n3{margin-top:-16px !important}.mb-sm-n3{margin-bottom:-16px !important}.mr-sm-n3{margin-right:-16px !important}.ml-sm-n3{margin-left:-16px !important}.mx-sm-3{margin-right:16px !important;margin-left:16px !important}.my-sm-3{margin-top:16px !important;margin-bottom:16px !important}.m-sm-4{margin:24px !important}.mt-sm-4{margin-top:24px !important}.mb-sm-4{margin-bottom:24px !important}.mr-sm-4{margin-right:24px !important}.ml-sm-4{margin-left:24px !important}.mt-sm-n4{margin-top:-24px !important}.mb-sm-n4{margin-bottom:-24px !important}.mr-sm-n4{margin-right:-24px !important}.ml-sm-n4{margin-left:-24px !important}.mx-sm-4{margin-right:24px !important;margin-left:24px !important}.my-sm-4{margin-top:24px !important;margin-bottom:24px !important}.m-sm-5{margin:32px !important}.mt-sm-5{margin-top:32px !important}.mb-sm-5{margin-bottom:32px !important}.mr-sm-5{margin-right:32px !important}.ml-sm-5{margin-left:32px !important}.mt-sm-n5{margin-top:-32px !important}.mb-sm-n5{margin-bottom:-32px !important}.mr-sm-n5{margin-right:-32px !important}.ml-sm-n5{margin-left:-32px !important}.mx-sm-5{margin-right:32px !important;margin-left:32px !important}.my-sm-5{margin-top:32px !important;margin-bottom:32px !important}.m-sm-6{margin:40px !important}.mt-sm-6{margin-top:40px !important}.mb-sm-6{margin-bottom:40px !important}.mr-sm-6{margin-right:40px !important}.ml-sm-6{margin-left:40px !important}.mt-sm-n6{margin-top:-40px !important}.mb-sm-n6{margin-bottom:-40px !important}.mr-sm-n6{margin-right:-40px !important}.ml-sm-n6{margin-left:-40px !important}.mx-sm-6{margin-right:40px !important;margin-left:40px !important}.my-sm-6{margin-top:40px !important;margin-bottom:40px !important}.mt-sm-7{margin-top:48px !important}.mb-sm-7{margin-bottom:48px !important}.mt-sm-n7{margin-top:-48px !important}.mb-sm-n7{margin-bottom:-48px !important}.my-sm-7{margin-top:48px !important;margin-bottom:48px !important}.mt-sm-8{margin-top:64px !important}.mb-sm-8{margin-bottom:64px !important}.mt-sm-n8{margin-top:-64px !important}.mb-sm-n8{margin-bottom:-64px !important}.my-sm-8{margin-top:64px !important;margin-bottom:64px !important}.mt-sm-9{margin-top:80px !important}.mb-sm-9{margin-bottom:80px !important}.mt-sm-n9{margin-top:-80px !important}.mb-sm-n9{margin-bottom:-80px !important}.my-sm-9{margin-top:80px !important;margin-bottom:80px !important}.mt-sm-10{margin-top:96px !important}.mb-sm-10{margin-bottom:96px !important}.mt-sm-n10{margin-top:-96px !important}.mb-sm-n10{margin-bottom:-96px !important}.my-sm-10{margin-top:96px !important;margin-bottom:96px !important}.mt-sm-11{margin-top:112px !important}.mb-sm-11{margin-bottom:112px !important}.mt-sm-n11{margin-top:-112px !important}.mb-sm-n11{margin-bottom:-112px !important}.my-sm-11{margin-top:112px !important;margin-bottom:112px !important}.mt-sm-12{margin-top:128px !important}.mb-sm-12{margin-bottom:128px !important}.mt-sm-n12{margin-top:-128px !important}.mb-sm-n12{margin-bottom:-128px !important}.my-sm-12{margin-top:128px !important;margin-bottom:128px !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}}@media(min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0{margin-top:0 !important}.mb-md-0{margin-bottom:0 !important}.mr-md-0{margin-right:0 !important}.ml-md-0{margin-left:0 !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.m-md-1{margin:4px !important}.mt-md-1{margin-top:4px !important}.mb-md-1{margin-bottom:4px !important}.mr-md-1{margin-right:4px !important}.ml-md-1{margin-left:4px !important}.mt-md-n1{margin-top:-4px !important}.mb-md-n1{margin-bottom:-4px !important}.mr-md-n1{margin-right:-4px !important}.ml-md-n1{margin-left:-4px !important}.mx-md-1{margin-right:4px !important;margin-left:4px !important}.my-md-1{margin-top:4px !important;margin-bottom:4px !important}.m-md-2{margin:8px !important}.mt-md-2{margin-top:8px !important}.mb-md-2{margin-bottom:8px !important}.mr-md-2{margin-right:8px !important}.ml-md-2{margin-left:8px !important}.mt-md-n2{margin-top:-8px !important}.mb-md-n2{margin-bottom:-8px !important}.mr-md-n2{margin-right:-8px !important}.ml-md-n2{margin-left:-8px !important}.mx-md-2{margin-right:8px !important;margin-left:8px !important}.my-md-2{margin-top:8px !important;margin-bottom:8px !important}.m-md-3{margin:16px !important}.mt-md-3{margin-top:16px !important}.mb-md-3{margin-bottom:16px !important}.mr-md-3{margin-right:16px !important}.ml-md-3{margin-left:16px !important}.mt-md-n3{margin-top:-16px !important}.mb-md-n3{margin-bottom:-16px !important}.mr-md-n3{margin-right:-16px !important}.ml-md-n3{margin-left:-16px !important}.mx-md-3{margin-right:16px !important;margin-left:16px !important}.my-md-3{margin-top:16px !important;margin-bottom:16px !important}.m-md-4{margin:24px !important}.mt-md-4{margin-top:24px !important}.mb-md-4{margin-bottom:24px !important}.mr-md-4{margin-right:24px !important}.ml-md-4{margin-left:24px !important}.mt-md-n4{margin-top:-24px !important}.mb-md-n4{margin-bottom:-24px !important}.mr-md-n4{margin-right:-24px !important}.ml-md-n4{margin-left:-24px !important}.mx-md-4{margin-right:24px !important;margin-left:24px !important}.my-md-4{margin-top:24px !important;margin-bottom:24px !important}.m-md-5{margin:32px !important}.mt-md-5{margin-top:32px !important}.mb-md-5{margin-bottom:32px !important}.mr-md-5{margin-right:32px !important}.ml-md-5{margin-left:32px !important}.mt-md-n5{margin-top:-32px !important}.mb-md-n5{margin-bottom:-32px !important}.mr-md-n5{margin-right:-32px !important}.ml-md-n5{margin-left:-32px !important}.mx-md-5{margin-right:32px !important;margin-left:32px !important}.my-md-5{margin-top:32px !important;margin-bottom:32px !important}.m-md-6{margin:40px !important}.mt-md-6{margin-top:40px !important}.mb-md-6{margin-bottom:40px !important}.mr-md-6{margin-right:40px !important}.ml-md-6{margin-left:40px !important}.mt-md-n6{margin-top:-40px !important}.mb-md-n6{margin-bottom:-40px !important}.mr-md-n6{margin-right:-40px !important}.ml-md-n6{margin-left:-40px !important}.mx-md-6{margin-right:40px !important;margin-left:40px !important}.my-md-6{margin-top:40px !important;margin-bottom:40px !important}.mt-md-7{margin-top:48px !important}.mb-md-7{margin-bottom:48px !important}.mt-md-n7{margin-top:-48px !important}.mb-md-n7{margin-bottom:-48px !important}.my-md-7{margin-top:48px !important;margin-bottom:48px !important}.mt-md-8{margin-top:64px !important}.mb-md-8{margin-bottom:64px !important}.mt-md-n8{margin-top:-64px !important}.mb-md-n8{margin-bottom:-64px !important}.my-md-8{margin-top:64px !important;margin-bottom:64px !important}.mt-md-9{margin-top:80px !important}.mb-md-9{margin-bottom:80px !important}.mt-md-n9{margin-top:-80px !important}.mb-md-n9{margin-bottom:-80px !important}.my-md-9{margin-top:80px !important;margin-bottom:80px !important}.mt-md-10{margin-top:96px !important}.mb-md-10{margin-bottom:96px !important}.mt-md-n10{margin-top:-96px !important}.mb-md-n10{margin-bottom:-96px !important}.my-md-10{margin-top:96px !important;margin-bottom:96px !important}.mt-md-11{margin-top:112px !important}.mb-md-11{margin-bottom:112px !important}.mt-md-n11{margin-top:-112px !important}.mb-md-n11{margin-bottom:-112px !important}.my-md-11{margin-top:112px !important;margin-bottom:112px !important}.mt-md-12{margin-top:128px !important}.mb-md-12{margin-bottom:128px !important}.mt-md-n12{margin-top:-128px !important}.mb-md-n12{margin-bottom:-128px !important}.my-md-12{margin-top:128px !important;margin-bottom:128px !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}}@media(min-width: 1012px){.m-lg-0{margin:0 !important}.mt-lg-0{margin-top:0 !important}.mb-lg-0{margin-bottom:0 !important}.mr-lg-0{margin-right:0 !important}.ml-lg-0{margin-left:0 !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.m-lg-1{margin:4px !important}.mt-lg-1{margin-top:4px !important}.mb-lg-1{margin-bottom:4px !important}.mr-lg-1{margin-right:4px !important}.ml-lg-1{margin-left:4px !important}.mt-lg-n1{margin-top:-4px !important}.mb-lg-n1{margin-bottom:-4px !important}.mr-lg-n1{margin-right:-4px !important}.ml-lg-n1{margin-left:-4px !important}.mx-lg-1{margin-right:4px !important;margin-left:4px !important}.my-lg-1{margin-top:4px !important;margin-bottom:4px !important}.m-lg-2{margin:8px !important}.mt-lg-2{margin-top:8px !important}.mb-lg-2{margin-bottom:8px !important}.mr-lg-2{margin-right:8px !important}.ml-lg-2{margin-left:8px !important}.mt-lg-n2{margin-top:-8px !important}.mb-lg-n2{margin-bottom:-8px !important}.mr-lg-n2{margin-right:-8px !important}.ml-lg-n2{margin-left:-8px !important}.mx-lg-2{margin-right:8px !important;margin-left:8px !important}.my-lg-2{margin-top:8px !important;margin-bottom:8px !important}.m-lg-3{margin:16px !important}.mt-lg-3{margin-top:16px !important}.mb-lg-3{margin-bottom:16px !important}.mr-lg-3{margin-right:16px !important}.ml-lg-3{margin-left:16px !important}.mt-lg-n3{margin-top:-16px !important}.mb-lg-n3{margin-bottom:-16px !important}.mr-lg-n3{margin-right:-16px !important}.ml-lg-n3{margin-left:-16px !important}.mx-lg-3{margin-right:16px !important;margin-left:16px !important}.my-lg-3{margin-top:16px !important;margin-bottom:16px !important}.m-lg-4{margin:24px !important}.mt-lg-4{margin-top:24px !important}.mb-lg-4{margin-bottom:24px !important}.mr-lg-4{margin-right:24px !important}.ml-lg-4{margin-left:24px !important}.mt-lg-n4{margin-top:-24px !important}.mb-lg-n4{margin-bottom:-24px !important}.mr-lg-n4{margin-right:-24px !important}.ml-lg-n4{margin-left:-24px !important}.mx-lg-4{margin-right:24px !important;margin-left:24px !important}.my-lg-4{margin-top:24px !important;margin-bottom:24px !important}.m-lg-5{margin:32px !important}.mt-lg-5{margin-top:32px !important}.mb-lg-5{margin-bottom:32px !important}.mr-lg-5{margin-right:32px !important}.ml-lg-5{margin-left:32px !important}.mt-lg-n5{margin-top:-32px !important}.mb-lg-n5{margin-bottom:-32px !important}.mr-lg-n5{margin-right:-32px !important}.ml-lg-n5{margin-left:-32px !important}.mx-lg-5{margin-right:32px !important;margin-left:32px !important}.my-lg-5{margin-top:32px !important;margin-bottom:32px !important}.m-lg-6{margin:40px !important}.mt-lg-6{margin-top:40px !important}.mb-lg-6{margin-bottom:40px !important}.mr-lg-6{margin-right:40px !important}.ml-lg-6{margin-left:40px !important}.mt-lg-n6{margin-top:-40px !important}.mb-lg-n6{margin-bottom:-40px !important}.mr-lg-n6{margin-right:-40px !important}.ml-lg-n6{margin-left:-40px !important}.mx-lg-6{margin-right:40px !important;margin-left:40px !important}.my-lg-6{margin-top:40px !important;margin-bottom:40px !important}.mt-lg-7{margin-top:48px !important}.mb-lg-7{margin-bottom:48px !important}.mt-lg-n7{margin-top:-48px !important}.mb-lg-n7{margin-bottom:-48px !important}.my-lg-7{margin-top:48px !important;margin-bottom:48px !important}.mt-lg-8{margin-top:64px !important}.mb-lg-8{margin-bottom:64px !important}.mt-lg-n8{margin-top:-64px !important}.mb-lg-n8{margin-bottom:-64px !important}.my-lg-8{margin-top:64px !important;margin-bottom:64px !important}.mt-lg-9{margin-top:80px !important}.mb-lg-9{margin-bottom:80px !important}.mt-lg-n9{margin-top:-80px !important}.mb-lg-n9{margin-bottom:-80px !important}.my-lg-9{margin-top:80px !important;margin-bottom:80px !important}.mt-lg-10{margin-top:96px !important}.mb-lg-10{margin-bottom:96px !important}.mt-lg-n10{margin-top:-96px !important}.mb-lg-n10{margin-bottom:-96px !important}.my-lg-10{margin-top:96px !important;margin-bottom:96px !important}.mt-lg-11{margin-top:112px !important}.mb-lg-11{margin-bottom:112px !important}.mt-lg-n11{margin-top:-112px !important}.mb-lg-n11{margin-bottom:-112px !important}.my-lg-11{margin-top:112px !important;margin-bottom:112px !important}.mt-lg-12{margin-top:128px !important}.mb-lg-12{margin-bottom:128px !important}.mt-lg-n12{margin-top:-128px !important}.mb-lg-n12{margin-bottom:-128px !important}.my-lg-12{margin-top:128px !important;margin-bottom:128px !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}}@media(min-width: 1280px){.m-xl-0{margin:0 !important}.mt-xl-0{margin-top:0 !important}.mb-xl-0{margin-bottom:0 !important}.mr-xl-0{margin-right:0 !important}.ml-xl-0{margin-left:0 !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.m-xl-1{margin:4px !important}.mt-xl-1{margin-top:4px !important}.mb-xl-1{margin-bottom:4px !important}.mr-xl-1{margin-right:4px !important}.ml-xl-1{margin-left:4px !important}.mt-xl-n1{margin-top:-4px !important}.mb-xl-n1{margin-bottom:-4px !important}.mr-xl-n1{margin-right:-4px !important}.ml-xl-n1{margin-left:-4px !important}.mx-xl-1{margin-right:4px !important;margin-left:4px !important}.my-xl-1{margin-top:4px !important;margin-bottom:4px !important}.m-xl-2{margin:8px !important}.mt-xl-2{margin-top:8px !important}.mb-xl-2{margin-bottom:8px !important}.mr-xl-2{margin-right:8px !important}.ml-xl-2{margin-left:8px !important}.mt-xl-n2{margin-top:-8px !important}.mb-xl-n2{margin-bottom:-8px !important}.mr-xl-n2{margin-right:-8px !important}.ml-xl-n2{margin-left:-8px !important}.mx-xl-2{margin-right:8px !important;margin-left:8px !important}.my-xl-2{margin-top:8px !important;margin-bottom:8px !important}.m-xl-3{margin:16px !important}.mt-xl-3{margin-top:16px !important}.mb-xl-3{margin-bottom:16px !important}.mr-xl-3{margin-right:16px !important}.ml-xl-3{margin-left:16px !important}.mt-xl-n3{margin-top:-16px !important}.mb-xl-n3{margin-bottom:-16px !important}.mr-xl-n3{margin-right:-16px !important}.ml-xl-n3{margin-left:-16px !important}.mx-xl-3{margin-right:16px !important;margin-left:16px !important}.my-xl-3{margin-top:16px !important;margin-bottom:16px !important}.m-xl-4{margin:24px !important}.mt-xl-4{margin-top:24px !important}.mb-xl-4{margin-bottom:24px !important}.mr-xl-4{margin-right:24px !important}.ml-xl-4{margin-left:24px !important}.mt-xl-n4{margin-top:-24px !important}.mb-xl-n4{margin-bottom:-24px !important}.mr-xl-n4{margin-right:-24px !important}.ml-xl-n4{margin-left:-24px !important}.mx-xl-4{margin-right:24px !important;margin-left:24px !important}.my-xl-4{margin-top:24px !important;margin-bottom:24px !important}.m-xl-5{margin:32px !important}.mt-xl-5{margin-top:32px !important}.mb-xl-5{margin-bottom:32px !important}.mr-xl-5{margin-right:32px !important}.ml-xl-5{margin-left:32px !important}.mt-xl-n5{margin-top:-32px !important}.mb-xl-n5{margin-bottom:-32px !important}.mr-xl-n5{margin-right:-32px !important}.ml-xl-n5{margin-left:-32px !important}.mx-xl-5{margin-right:32px !important;margin-left:32px !important}.my-xl-5{margin-top:32px !important;margin-bottom:32px !important}.m-xl-6{margin:40px !important}.mt-xl-6{margin-top:40px !important}.mb-xl-6{margin-bottom:40px !important}.mr-xl-6{margin-right:40px !important}.ml-xl-6{margin-left:40px !important}.mt-xl-n6{margin-top:-40px !important}.mb-xl-n6{margin-bottom:-40px !important}.mr-xl-n6{margin-right:-40px !important}.ml-xl-n6{margin-left:-40px !important}.mx-xl-6{margin-right:40px !important;margin-left:40px !important}.my-xl-6{margin-top:40px !important;margin-bottom:40px !important}.mt-xl-7{margin-top:48px !important}.mb-xl-7{margin-bottom:48px !important}.mt-xl-n7{margin-top:-48px !important}.mb-xl-n7{margin-bottom:-48px !important}.my-xl-7{margin-top:48px !important;margin-bottom:48px !important}.mt-xl-8{margin-top:64px !important}.mb-xl-8{margin-bottom:64px !important}.mt-xl-n8{margin-top:-64px !important}.mb-xl-n8{margin-bottom:-64px !important}.my-xl-8{margin-top:64px !important;margin-bottom:64px !important}.mt-xl-9{margin-top:80px !important}.mb-xl-9{margin-bottom:80px !important}.mt-xl-n9{margin-top:-80px !important}.mb-xl-n9{margin-bottom:-80px !important}.my-xl-9{margin-top:80px !important;margin-bottom:80px !important}.mt-xl-10{margin-top:96px !important}.mb-xl-10{margin-bottom:96px !important}.mt-xl-n10{margin-top:-96px !important}.mb-xl-n10{margin-bottom:-96px !important}.my-xl-10{margin-top:96px !important;margin-bottom:96px !important}.mt-xl-11{margin-top:112px !important}.mb-xl-11{margin-bottom:112px !important}.mt-xl-n11{margin-top:-112px !important}.mb-xl-n11{margin-bottom:-112px !important}.my-xl-11{margin-top:112px !important;margin-bottom:112px !important}.mt-xl-12{margin-top:128px !important}.mb-xl-12{margin-bottom:128px !important}.mt-xl-n12{margin-top:-128px !important}.mb-xl-n12{margin-bottom:-128px !important}.my-xl-12{margin-top:128px !important;margin-bottom:128px !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-right:0 !important;padding-left:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:4px !important}.pt-1{padding-top:4px !important}.pr-1{padding-right:4px !important}.pb-1{padding-bottom:4px !important}.pl-1{padding-left:4px !important}.px-1{padding-right:4px !important;padding-left:4px !important}.py-1{padding-top:4px !important;padding-bottom:4px !important}.p-2{padding:8px !important}.pt-2{padding-top:8px !important}.pr-2{padding-right:8px !important}.pb-2{padding-bottom:8px !important}.pl-2{padding-left:8px !important}.px-2{padding-right:8px !important;padding-left:8px !important}.py-2{padding-top:8px !important;padding-bottom:8px !important}.p-3{padding:16px !important}.pt-3{padding-top:16px !important}.pr-3{padding-right:16px !important}.pb-3{padding-bottom:16px !important}.pl-3{padding-left:16px !important}.px-3{padding-right:16px !important;padding-left:16px !important}.py-3{padding-top:16px !important;padding-bottom:16px !important}.p-4{padding:24px !important}.pt-4{padding-top:24px !important}.pr-4{padding-right:24px !important}.pb-4{padding-bottom:24px !important}.pl-4{padding-left:24px !important}.px-4{padding-right:24px !important;padding-left:24px !important}.py-4{padding-top:24px !important;padding-bottom:24px !important}.p-5{padding:32px !important}.pt-5{padding-top:32px !important}.pr-5{padding-right:32px !important}.pb-5{padding-bottom:32px !important}.pl-5{padding-left:32px !important}.px-5{padding-right:32px !important;padding-left:32px !important}.py-5{padding-top:32px !important;padding-bottom:32px !important}.p-6{padding:40px !important}.pt-6{padding-top:40px !important}.pr-6{padding-right:40px !important}.pb-6{padding-bottom:40px !important}.pl-6{padding-left:40px !important}.px-6{padding-right:40px !important;padding-left:40px !important}.py-6{padding-top:40px !important;padding-bottom:40px !important}.pt-7{padding-top:48px !important}.pr-7{padding-right:48px !important}.pb-7{padding-bottom:48px !important}.pl-7{padding-left:48px !important}.py-7{padding-top:48px !important;padding-bottom:48px !important}.pt-8{padding-top:64px !important}.pr-8{padding-right:64px !important}.pb-8{padding-bottom:64px !important}.pl-8{padding-left:64px !important}.py-8{padding-top:64px !important;padding-bottom:64px !important}.pt-9{padding-top:80px !important}.pr-9{padding-right:80px !important}.pb-9{padding-bottom:80px !important}.pl-9{padding-left:80px !important}.py-9{padding-top:80px !important;padding-bottom:80px !important}.pt-10{padding-top:96px !important}.pr-10{padding-right:96px !important}.pb-10{padding-bottom:96px !important}.pl-10{padding-left:96px !important}.py-10{padding-top:96px !important;padding-bottom:96px !important}.pt-11{padding-top:112px !important}.pr-11{padding-right:112px !important}.pb-11{padding-bottom:112px !important}.pl-11{padding-left:112px !important}.py-11{padding-top:112px !important;padding-bottom:112px !important}.pt-12{padding-top:128px !important}.pr-12{padding-right:128px !important}.pb-12{padding-bottom:128px !important}.pl-12{padding-left:128px !important}.py-12{padding-top:128px !important;padding-bottom:128px !important}@media(min-width: 544px){.p-sm-0{padding:0 !important}.pt-sm-0{padding-top:0 !important}.pr-sm-0{padding-right:0 !important}.pb-sm-0{padding-bottom:0 !important}.pl-sm-0{padding-left:0 !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.p-sm-1{padding:4px !important}.pt-sm-1{padding-top:4px !important}.pr-sm-1{padding-right:4px !important}.pb-sm-1{padding-bottom:4px !important}.pl-sm-1{padding-left:4px !important}.px-sm-1{padding-right:4px !important;padding-left:4px !important}.py-sm-1{padding-top:4px !important;padding-bottom:4px !important}.p-sm-2{padding:8px !important}.pt-sm-2{padding-top:8px !important}.pr-sm-2{padding-right:8px !important}.pb-sm-2{padding-bottom:8px !important}.pl-sm-2{padding-left:8px !important}.px-sm-2{padding-right:8px !important;padding-left:8px !important}.py-sm-2{padding-top:8px !important;padding-bottom:8px !important}.p-sm-3{padding:16px !important}.pt-sm-3{padding-top:16px !important}.pr-sm-3{padding-right:16px !important}.pb-sm-3{padding-bottom:16px !important}.pl-sm-3{padding-left:16px !important}.px-sm-3{padding-right:16px !important;padding-left:16px !important}.py-sm-3{padding-top:16px !important;padding-bottom:16px !important}.p-sm-4{padding:24px !important}.pt-sm-4{padding-top:24px !important}.pr-sm-4{padding-right:24px !important}.pb-sm-4{padding-bottom:24px !important}.pl-sm-4{padding-left:24px !important}.px-sm-4{padding-right:24px !important;padding-left:24px !important}.py-sm-4{padding-top:24px !important;padding-bottom:24px !important}.p-sm-5{padding:32px !important}.pt-sm-5{padding-top:32px !important}.pr-sm-5{padding-right:32px !important}.pb-sm-5{padding-bottom:32px !important}.pl-sm-5{padding-left:32px !important}.px-sm-5{padding-right:32px !important;padding-left:32px !important}.py-sm-5{padding-top:32px !important;padding-bottom:32px !important}.p-sm-6{padding:40px !important}.pt-sm-6{padding-top:40px !important}.pr-sm-6{padding-right:40px !important}.pb-sm-6{padding-bottom:40px !important}.pl-sm-6{padding-left:40px !important}.px-sm-6{padding-right:40px !important;padding-left:40px !important}.py-sm-6{padding-top:40px !important;padding-bottom:40px !important}.pt-sm-7{padding-top:48px !important}.pr-sm-7{padding-right:48px !important}.pb-sm-7{padding-bottom:48px !important}.pl-sm-7{padding-left:48px !important}.py-sm-7{padding-top:48px !important;padding-bottom:48px !important}.pt-sm-8{padding-top:64px !important}.pr-sm-8{padding-right:64px !important}.pb-sm-8{padding-bottom:64px !important}.pl-sm-8{padding-left:64px !important}.py-sm-8{padding-top:64px !important;padding-bottom:64px !important}.pt-sm-9{padding-top:80px !important}.pr-sm-9{padding-right:80px !important}.pb-sm-9{padding-bottom:80px !important}.pl-sm-9{padding-left:80px !important}.py-sm-9{padding-top:80px !important;padding-bottom:80px !important}.pt-sm-10{padding-top:96px !important}.pr-sm-10{padding-right:96px !important}.pb-sm-10{padding-bottom:96px !important}.pl-sm-10{padding-left:96px !important}.py-sm-10{padding-top:96px !important;padding-bottom:96px !important}.pt-sm-11{padding-top:112px !important}.pr-sm-11{padding-right:112px !important}.pb-sm-11{padding-bottom:112px !important}.pl-sm-11{padding-left:112px !important}.py-sm-11{padding-top:112px !important;padding-bottom:112px !important}.pt-sm-12{padding-top:128px !important}.pr-sm-12{padding-right:128px !important}.pb-sm-12{padding-bottom:128px !important}.pl-sm-12{padding-left:128px !important}.py-sm-12{padding-top:128px !important;padding-bottom:128px !important}}@media(min-width: 768px){.p-md-0{padding:0 !important}.pt-md-0{padding-top:0 !important}.pr-md-0{padding-right:0 !important}.pb-md-0{padding-bottom:0 !important}.pl-md-0{padding-left:0 !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.p-md-1{padding:4px !important}.pt-md-1{padding-top:4px !important}.pr-md-1{padding-right:4px !important}.pb-md-1{padding-bottom:4px !important}.pl-md-1{padding-left:4px !important}.px-md-1{padding-right:4px !important;padding-left:4px !important}.py-md-1{padding-top:4px !important;padding-bottom:4px !important}.p-md-2{padding:8px !important}.pt-md-2{padding-top:8px !important}.pr-md-2{padding-right:8px !important}.pb-md-2{padding-bottom:8px !important}.pl-md-2{padding-left:8px !important}.px-md-2{padding-right:8px !important;padding-left:8px !important}.py-md-2{padding-top:8px !important;padding-bottom:8px !important}.p-md-3{padding:16px !important}.pt-md-3{padding-top:16px !important}.pr-md-3{padding-right:16px !important}.pb-md-3{padding-bottom:16px !important}.pl-md-3{padding-left:16px !important}.px-md-3{padding-right:16px !important;padding-left:16px !important}.py-md-3{padding-top:16px !important;padding-bottom:16px !important}.p-md-4{padding:24px !important}.pt-md-4{padding-top:24px !important}.pr-md-4{padding-right:24px !important}.pb-md-4{padding-bottom:24px !important}.pl-md-4{padding-left:24px !important}.px-md-4{padding-right:24px !important;padding-left:24px !important}.py-md-4{padding-top:24px !important;padding-bottom:24px !important}.p-md-5{padding:32px !important}.pt-md-5{padding-top:32px !important}.pr-md-5{padding-right:32px !important}.pb-md-5{padding-bottom:32px !important}.pl-md-5{padding-left:32px !important}.px-md-5{padding-right:32px !important;padding-left:32px !important}.py-md-5{padding-top:32px !important;padding-bottom:32px !important}.p-md-6{padding:40px !important}.pt-md-6{padding-top:40px !important}.pr-md-6{padding-right:40px !important}.pb-md-6{padding-bottom:40px !important}.pl-md-6{padding-left:40px !important}.px-md-6{padding-right:40px !important;padding-left:40px !important}.py-md-6{padding-top:40px !important;padding-bottom:40px !important}.pt-md-7{padding-top:48px !important}.pr-md-7{padding-right:48px !important}.pb-md-7{padding-bottom:48px !important}.pl-md-7{padding-left:48px !important}.py-md-7{padding-top:48px !important;padding-bottom:48px !important}.pt-md-8{padding-top:64px !important}.pr-md-8{padding-right:64px !important}.pb-md-8{padding-bottom:64px !important}.pl-md-8{padding-left:64px !important}.py-md-8{padding-top:64px !important;padding-bottom:64px !important}.pt-md-9{padding-top:80px !important}.pr-md-9{padding-right:80px !important}.pb-md-9{padding-bottom:80px !important}.pl-md-9{padding-left:80px !important}.py-md-9{padding-top:80px !important;padding-bottom:80px !important}.pt-md-10{padding-top:96px !important}.pr-md-10{padding-right:96px !important}.pb-md-10{padding-bottom:96px !important}.pl-md-10{padding-left:96px !important}.py-md-10{padding-top:96px !important;padding-bottom:96px !important}.pt-md-11{padding-top:112px !important}.pr-md-11{padding-right:112px !important}.pb-md-11{padding-bottom:112px !important}.pl-md-11{padding-left:112px !important}.py-md-11{padding-top:112px !important;padding-bottom:112px !important}.pt-md-12{padding-top:128px !important}.pr-md-12{padding-right:128px !important}.pb-md-12{padding-bottom:128px !important}.pl-md-12{padding-left:128px !important}.py-md-12{padding-top:128px !important;padding-bottom:128px !important}}@media(min-width: 1012px){.p-lg-0{padding:0 !important}.pt-lg-0{padding-top:0 !important}.pr-lg-0{padding-right:0 !important}.pb-lg-0{padding-bottom:0 !important}.pl-lg-0{padding-left:0 !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.p-lg-1{padding:4px !important}.pt-lg-1{padding-top:4px !important}.pr-lg-1{padding-right:4px !important}.pb-lg-1{padding-bottom:4px !important}.pl-lg-1{padding-left:4px !important}.px-lg-1{padding-right:4px !important;padding-left:4px !important}.py-lg-1{padding-top:4px !important;padding-bottom:4px !important}.p-lg-2{padding:8px !important}.pt-lg-2{padding-top:8px !important}.pr-lg-2{padding-right:8px !important}.pb-lg-2{padding-bottom:8px !important}.pl-lg-2{padding-left:8px !important}.px-lg-2{padding-right:8px !important;padding-left:8px !important}.py-lg-2{padding-top:8px !important;padding-bottom:8px !important}.p-lg-3{padding:16px !important}.pt-lg-3{padding-top:16px !important}.pr-lg-3{padding-right:16px !important}.pb-lg-3{padding-bottom:16px !important}.pl-lg-3{padding-left:16px !important}.px-lg-3{padding-right:16px !important;padding-left:16px !important}.py-lg-3{padding-top:16px !important;padding-bottom:16px !important}.p-lg-4{padding:24px !important}.pt-lg-4{padding-top:24px !important}.pr-lg-4{padding-right:24px !important}.pb-lg-4{padding-bottom:24px !important}.pl-lg-4{padding-left:24px !important}.px-lg-4{padding-right:24px !important;padding-left:24px !important}.py-lg-4{padding-top:24px !important;padding-bottom:24px !important}.p-lg-5{padding:32px !important}.pt-lg-5{padding-top:32px !important}.pr-lg-5{padding-right:32px !important}.pb-lg-5{padding-bottom:32px !important}.pl-lg-5{padding-left:32px !important}.px-lg-5{padding-right:32px !important;padding-left:32px !important}.py-lg-5{padding-top:32px !important;padding-bottom:32px !important}.p-lg-6{padding:40px !important}.pt-lg-6{padding-top:40px !important}.pr-lg-6{padding-right:40px !important}.pb-lg-6{padding-bottom:40px !important}.pl-lg-6{padding-left:40px !important}.px-lg-6{padding-right:40px !important;padding-left:40px !important}.py-lg-6{padding-top:40px !important;padding-bottom:40px !important}.pt-lg-7{padding-top:48px !important}.pr-lg-7{padding-right:48px !important}.pb-lg-7{padding-bottom:48px !important}.pl-lg-7{padding-left:48px !important}.py-lg-7{padding-top:48px !important;padding-bottom:48px !important}.pt-lg-8{padding-top:64px !important}.pr-lg-8{padding-right:64px !important}.pb-lg-8{padding-bottom:64px !important}.pl-lg-8{padding-left:64px !important}.py-lg-8{padding-top:64px !important;padding-bottom:64px !important}.pt-lg-9{padding-top:80px !important}.pr-lg-9{padding-right:80px !important}.pb-lg-9{padding-bottom:80px !important}.pl-lg-9{padding-left:80px !important}.py-lg-9{padding-top:80px !important;padding-bottom:80px !important}.pt-lg-10{padding-top:96px !important}.pr-lg-10{padding-right:96px !important}.pb-lg-10{padding-bottom:96px !important}.pl-lg-10{padding-left:96px !important}.py-lg-10{padding-top:96px !important;padding-bottom:96px !important}.pt-lg-11{padding-top:112px !important}.pr-lg-11{padding-right:112px !important}.pb-lg-11{padding-bottom:112px !important}.pl-lg-11{padding-left:112px !important}.py-lg-11{padding-top:112px !important;padding-bottom:112px !important}.pt-lg-12{padding-top:128px !important}.pr-lg-12{padding-right:128px !important}.pb-lg-12{padding-bottom:128px !important}.pl-lg-12{padding-left:128px !important}.py-lg-12{padding-top:128px !important;padding-bottom:128px !important}}@media(min-width: 1280px){.p-xl-0{padding:0 !important}.pt-xl-0{padding-top:0 !important}.pr-xl-0{padding-right:0 !important}.pb-xl-0{padding-bottom:0 !important}.pl-xl-0{padding-left:0 !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.p-xl-1{padding:4px !important}.pt-xl-1{padding-top:4px !important}.pr-xl-1{padding-right:4px !important}.pb-xl-1{padding-bottom:4px !important}.pl-xl-1{padding-left:4px !important}.px-xl-1{padding-right:4px !important;padding-left:4px !important}.py-xl-1{padding-top:4px !important;padding-bottom:4px !important}.p-xl-2{padding:8px !important}.pt-xl-2{padding-top:8px !important}.pr-xl-2{padding-right:8px !important}.pb-xl-2{padding-bottom:8px !important}.pl-xl-2{padding-left:8px !important}.px-xl-2{padding-right:8px !important;padding-left:8px !important}.py-xl-2{padding-top:8px !important;padding-bottom:8px !important}.p-xl-3{padding:16px !important}.pt-xl-3{padding-top:16px !important}.pr-xl-3{padding-right:16px !important}.pb-xl-3{padding-bottom:16px !important}.pl-xl-3{padding-left:16px !important}.px-xl-3{padding-right:16px !important;padding-left:16px !important}.py-xl-3{padding-top:16px !important;padding-bottom:16px !important}.p-xl-4{padding:24px !important}.pt-xl-4{padding-top:24px !important}.pr-xl-4{padding-right:24px !important}.pb-xl-4{padding-bottom:24px !important}.pl-xl-4{padding-left:24px !important}.px-xl-4{padding-right:24px !important;padding-left:24px !important}.py-xl-4{padding-top:24px !important;padding-bottom:24px !important}.p-xl-5{padding:32px !important}.pt-xl-5{padding-top:32px !important}.pr-xl-5{padding-right:32px !important}.pb-xl-5{padding-bottom:32px !important}.pl-xl-5{padding-left:32px !important}.px-xl-5{padding-right:32px !important;padding-left:32px !important}.py-xl-5{padding-top:32px !important;padding-bottom:32px !important}.p-xl-6{padding:40px !important}.pt-xl-6{padding-top:40px !important}.pr-xl-6{padding-right:40px !important}.pb-xl-6{padding-bottom:40px !important}.pl-xl-6{padding-left:40px !important}.px-xl-6{padding-right:40px !important;padding-left:40px !important}.py-xl-6{padding-top:40px !important;padding-bottom:40px !important}.pt-xl-7{padding-top:48px !important}.pr-xl-7{padding-right:48px !important}.pb-xl-7{padding-bottom:48px !important}.pl-xl-7{padding-left:48px !important}.py-xl-7{padding-top:48px !important;padding-bottom:48px !important}.pt-xl-8{padding-top:64px !important}.pr-xl-8{padding-right:64px !important}.pb-xl-8{padding-bottom:64px !important}.pl-xl-8{padding-left:64px !important}.py-xl-8{padding-top:64px !important;padding-bottom:64px !important}.pt-xl-9{padding-top:80px !important}.pr-xl-9{padding-right:80px !important}.pb-xl-9{padding-bottom:80px !important}.pl-xl-9{padding-left:80px !important}.py-xl-9{padding-top:80px !important;padding-bottom:80px !important}.pt-xl-10{padding-top:96px !important}.pr-xl-10{padding-right:96px !important}.pb-xl-10{padding-bottom:96px !important}.pl-xl-10{padding-left:96px !important}.py-xl-10{padding-top:96px !important;padding-bottom:96px !important}.pt-xl-11{padding-top:112px !important}.pr-xl-11{padding-right:112px !important}.pb-xl-11{padding-bottom:112px !important}.pl-xl-11{padding-left:112px !important}.py-xl-11{padding-top:112px !important;padding-bottom:112px !important}.pt-xl-12{padding-top:128px !important}.pr-xl-12{padding-right:128px !important}.pb-xl-12{padding-bottom:128px !important}.pl-xl-12{padding-left:128px !important}.py-xl-12{padding-top:128px !important;padding-bottom:128px !important}}.p-responsive{padding-right:16px !important;padding-left:16px !important}@media(min-width: 544px){.p-responsive{padding-right:40px !important;padding-left:40px !important}}@media(min-width: 1012px){.p-responsive{padding-right:16px !important;padding-left:16px !important}}.h1{font-size:26px !important}@media(min-width: 768px){.h1{font-size:32px !important}}.h2{font-size:22px !important}@media(min-width: 768px){.h2{font-size:24px !important}}.h3{font-size:18px !important}@media(min-width: 768px){.h3{font-size:20px !important}}.h4{font-size:16px !important}.h5{font-size:14px !important}.h6{font-size:12px !important}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:600 !important}.f1{font-size:26px !important}@media(min-width: 768px){.f1{font-size:32px !important}}.f2{font-size:22px !important}@media(min-width: 768px){.f2{font-size:24px !important}}.f3{font-size:18px !important}@media(min-width: 768px){.f3{font-size:20px !important}}.f4{font-size:16px !important}@media(min-width: 768px){.f4{font-size:16px !important}}.f5{font-size:14px !important}.f6{font-size:12px !important}.f00-light{font-size:40px !important;font-weight:300 !important}@media(min-width: 768px){.f00-light{font-size:48px !important}}.f0-light{font-size:32px !important;font-weight:300 !important}@media(min-width: 768px){.f0-light{font-size:40px !important}}.f1-light{font-size:26px !important;font-weight:300 !important}@media(min-width: 768px){.f1-light{font-size:32px !important}}.f2-light{font-size:22px !important;font-weight:300 !important}@media(min-width: 768px){.f2-light{font-size:24px !important}}.f3-light{font-size:18px !important;font-weight:300 !important}@media(min-width: 768px){.f3-light{font-size:20px !important}}.text-small{font-size:12px !important}.lead{margin-bottom:30px;font-size:20px;font-weight:300}.lh-condensed-ultra{line-height:1 !important}.lh-condensed{line-height:1.25 !important}.lh-default{line-height:1.5 !important}.lh-0{line-height:0 !important}@media(min-width: 544px){.lh-sm-condensed-ultra{line-height:1 !important}.lh-sm-condensed{line-height:1.25 !important}.lh-sm-default{line-height:1.5 !important}.lh-sm-0{line-height:0 !important}}@media(min-width: 768px){.lh-md-condensed-ultra{line-height:1 !important}.lh-md-condensed{line-height:1.25 !important}.lh-md-default{line-height:1.5 !important}.lh-md-0{line-height:0 !important}}@media(min-width: 1012px){.lh-lg-condensed-ultra{line-height:1 !important}.lh-lg-condensed{line-height:1.25 !important}.lh-lg-default{line-height:1.5 !important}.lh-lg-0{line-height:0 !important}}@media(min-width: 1280px){.lh-xl-condensed-ultra{line-height:1 !important}.lh-xl-condensed{line-height:1.25 !important}.lh-xl-default{line-height:1.5 !important}.lh-xl-0{line-height:0 !important}}.text-right{text-align:right !important}.text-left{text-align:left !important}.text-center{text-align:center !important}@media(min-width: 544px){.text-sm-right{text-align:right !important}.text-sm-left{text-align:left !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.text-md-right{text-align:right !important}.text-md-left{text-align:left !important}.text-md-center{text-align:center !important}}@media(min-width: 1012px){.text-lg-right{text-align:right !important}.text-lg-left{text-align:left !important}.text-lg-center{text-align:center !important}}@media(min-width: 1280px){.text-xl-right{text-align:right !important}.text-xl-left{text-align:left !important}.text-xl-center{text-align:center !important}}.text-normal{font-weight:400 !important}.text-bold{font-weight:600 !important}.text-semibold{font-weight:500 !important}.text-light{font-weight:300 !important}.text-italic{font-style:italic !important}.text-uppercase{text-transform:uppercase !important}.text-underline{text-decoration:underline !important}.no-underline{text-decoration:none !important}.no-wrap{white-space:nowrap !important}.ws-normal{white-space:normal !important}.wb-break-word{word-break:break-word !important;word-wrap:break-word !important;overflow-wrap:break-word !important}.wb-break-all{word-break:break-all !important}.text-emphasized{font-weight:600}.list-style-none{list-style:none !important}.text-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace !important}.user-select-none{-webkit-user-select:none !important;user-select:none !important}.d-block{display:block !important}.d-flex{display:flex !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.d-table{display:table !important}.d-table-cell{display:table-cell !important}@media(min-width: 544px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.d-sm-table{display:table !important}.d-sm-table-cell{display:table-cell !important}}@media(min-width: 768px){.d-md-block{display:block !important}.d-md-flex{display:flex !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.d-md-table{display:table !important}.d-md-table-cell{display:table-cell !important}}@media(min-width: 1012px){.d-lg-block{display:block !important}.d-lg-flex{display:flex !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.d-lg-table{display:table !important}.d-lg-table-cell{display:table-cell !important}}@media(min-width: 1280px){.d-xl-block{display:block !important}.d-xl-flex{display:flex !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.d-xl-table{display:table !important}.d-xl-table-cell{display:table-cell !important}}.v-hidden{visibility:hidden !important}.v-visible{visibility:visible !important}@media(max-width: 543.98px){.hide-sm{display:none !important}}@media(min-width: 544px)and (max-width: 767.98px){.hide-md{display:none !important}}@media(min-width: 768px)and (max-width: 1011.98px){.hide-lg{display:none !important}}@media(min-width: 1012px){.hide-xl{display:none !important}}.table-fixed{table-layout:fixed !important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);word-wrap:normal;border:0}.show-on-focus{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.show-on-focus:focus{z-index:20;width:auto;height:auto;clip:auto}.color-border-inverse{border-color:var(--color-fg-on-emphasis) !important}.bg-gray-2,.bg-gray-3{background-color:var(--color-neutral-muted) !important}.color-text-white{color:var(--color-scale-white) !important}.border-white-fade{border-color:rgba(255,255,255,.15) !important}.lead{color:var(--color-fg-muted)}.text-emphasized{color:var(--color-fg-default)}.Label.Label--orange{color:var(--color-severe-fg);border-color:var(--color-severe-emphasis)}.Label.Label--purple{color:var(--color-done-fg);border-color:var(--color-done-emphasis)}.Label.Label--pink{color:var(--color-sponsors-fg);border-color:var(--color-sponsors-emphasis)}/*!
|
|
* GitHub Light v0.5.0
|
|
* Copyright (c) 2012 - 2017 GitHub, Inc.
|
|
* Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
|
|
*/.pl-c{color:var(--color-prettylights-syntax-comment)}.pl-c1,.pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.pl-e,.pl-en{color:var(--color-prettylights-syntax-entity)}.pl-smi,.pl-s .pl-s1{color:var(--color-prettylights-syntax-storage-modifier-import)}.pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.pl-k{color:var(--color-prettylights-syntax-keyword)}.pl-s,.pl-pds,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sre,.pl-sr .pl-sra{color:var(--color-prettylights-syntax-string)}.pl-v,.pl-smw{color:var(--color-prettylights-syntax-variable)}.pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.pl-ii{color:var(--color-prettylights-syntax-invalid-illegal-text);background-color:var(--color-prettylights-syntax-invalid-illegal-bg)}.pl-c2{color:var(--color-prettylights-syntax-carriage-return-text);background-color:var(--color-prettylights-syntax-carriage-return-bg)}.pl-c2::before{content:"^M"}.pl-sr .pl-cce{font-weight:bold;color:var(--color-prettylights-syntax-string-regexp)}.pl-ml{color:var(--color-prettylights-syntax-markup-list)}.pl-mh,.pl-mh .pl-en,.pl-ms{font-weight:bold;color:var(--color-prettylights-syntax-markup-heading)}.pl-mi{font-style:italic;color:var(--color-prettylights-syntax-markup-italic)}.pl-mb{font-weight:bold;color:var(--color-prettylights-syntax-markup-bold)}.pl-md{color:var(--color-prettylights-syntax-markup-deleted-text);background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.pl-mi1{color:var(--color-prettylights-syntax-markup-inserted-text);background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.pl-mc{color:var(--color-prettylights-syntax-markup-changed-text);background-color:var(--color-prettylights-syntax-markup-changed-bg)}.pl-mi2{color:var(--color-prettylights-syntax-markup-ignored-text);background-color:var(--color-prettylights-syntax-markup-ignored-bg)}.pl-mdr{font-weight:bold;color:var(--color-prettylights-syntax-meta-diff-range)}.pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.pl-corl{text-decoration:underline;color:var(--color-prettylights-syntax-constant-other-reference-link)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:blue}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.CodeMirror-merge{position:relative;border:1px solid #ddd;white-space:pre}.CodeMirror-merge,.CodeMirror-merge .CodeMirror{height:350px}.CodeMirror-merge-2pane .CodeMirror-merge-pane{width:47%}.CodeMirror-merge-2pane .CodeMirror-merge-gap{width:6%}.CodeMirror-merge-3pane .CodeMirror-merge-pane{width:31%}.CodeMirror-merge-3pane .CodeMirror-merge-gap{width:3.5%}.CodeMirror-merge-pane{display:inline-block;white-space:normal;vertical-align:top}.CodeMirror-merge-pane-rightmost{position:absolute;right:0px;z-index:1}.CodeMirror-merge-gap{z-index:2;display:inline-block;height:100%;box-sizing:border-box;overflow:hidden;border-left:1px solid #ddd;border-right:1px solid #ddd;position:relative;background:#f8f8f8}.CodeMirror-merge-scrolllock-wrap{position:absolute;bottom:0;left:50%}.CodeMirror-merge-scrolllock{position:relative;left:-50%;cursor:pointer;color:#555;line-height:1}.CodeMirror-merge-scrolllock:after{content:"â  â"}.CodeMirror-merge-scrolllock.CodeMirror-merge-scrolllock-enabled:after{content:"ââ"}.CodeMirror-merge-copybuttons-left,.CodeMirror-merge-copybuttons-right{position:absolute;left:0;top:0;right:0;bottom:0;line-height:1}.CodeMirror-merge-copy{position:absolute;cursor:pointer;color:#44c;z-index:3}.CodeMirror-merge-copy-reverse{position:absolute;cursor:pointer;color:#44c}.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy{left:2px}.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy{right:2px}.CodeMirror-merge-r-inserted,.CodeMirror-merge-l-inserted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.CodeMirror-merge-r-deleted,.CodeMirror-merge-l-deleted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.CodeMirror-merge-r-chunk{background:#ffffe0}.CodeMirror-merge-r-chunk-start{border-top:1px solid #ee8}.CodeMirror-merge-r-chunk-end{border-bottom:1px solid #ee8}.CodeMirror-merge-r-connect{fill:#ffffe0;stroke:#ee8;stroke-width:1px}.CodeMirror-merge-l-chunk{background:#eef}.CodeMirror-merge-l-chunk-start{border-top:1px solid #88e}.CodeMirror-merge-l-chunk-end{border-bottom:1px solid #88e}.CodeMirror-merge-l-connect{fill:#eef;stroke:#88e;stroke-width:1px}.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk{background:#dfd}.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start{border-top:1px solid #4e4}.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end{border-bottom:1px solid #4e4}.CodeMirror-merge-collapsed-widget:before{content:"(...)"}.CodeMirror-merge-collapsed-widget{cursor:pointer;color:#88b;background:#eef;border:1px solid #ddf;font-size:90%;padding:0 3px;border-radius:4px}.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt{display:none}/*!
|
|
* GitHub Light v0.4.2
|
|
* Copyright (c) 2012 - 2017 GitHub, Inc.
|
|
* Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
|
|
*/.cm-s-github-light.CodeMirror{background:var(--color-codemirror-bg);color:var(--color-codemirror-text)}.cm-s-github-light .CodeMirror-gutters{background:var(--color-codemirror-gutters-bg);border-right-width:0}.cm-s-github-light .CodeMirror-guttermarker{color:var(--color-codemirror-guttermarker-text)}.cm-s-github-light .CodeMirror-guttermarker-subtle{color:var(--color-codemirror-guttermarker-subtle-text)}.cm-s-github-light .CodeMirror-linenumber{color:var(--color-codemirror-linenumber-text);padding:0 16px 0 16px}.cm-s-github-light .CodeMirror-cursor{border-left:1px solid var(--color-codemirror-cursor)}.cm-s-github-light.CodeMirror-focused .CodeMirror-selected,.cm-s-github-light .CodeMirror-line::selection,.cm-s-github-light .CodeMirror-line>span::selection,.cm-s-github-light .CodeMirror-line>span>span::selection{background:var(--color-codemirror-selection-bg, #d7d4f0)}.cm-s-github-light .CodeMirror-line::-moz-selection,.cm-s-github-light .CodeMirror-line>span::-moz-selection,.cm-s-github-light .CodeMirror-line>span>span::-moz-selection{background:var(--color-codemirror-selection-bg, #d7d4f0)}.cm-s-github-light .CodeMirror-activeline-background{background:var(--color-codemirror-activeline-bg)}.cm-s-github-light .CodeMirror-matchingbracket{text-decoration:underline;color:var(--color-codemirror-matchingbracket-text) !important}.cm-s-github-light .CodeMirror-lines{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;background:var(--color-codemirror-lines-bg);line-height:1.5}.cm-s-github-light .cm-comment{color:var(--color-codemirror-syntax-comment)}.cm-s-github-light .cm-constant{color:var(--color-codemirror-syntax-constant)}.cm-s-github-light .cm-entity{font-weight:normal;font-style:normal;text-decoration:none;color:var(--color-codemirror-syntax-entity)}.cm-s-github-light .cm-keyword{font-weight:normal;font-style:normal;text-decoration:none;color:var(--color-codemirror-syntax-keyword)}.cm-s-github-light .cm-storage{color:var(--color-codemirror-syntax-storage)}.cm-s-github-light .cm-string{font-weight:normal;font-style:normal;text-decoration:none;color:var(--color-codemirror-syntax-string)}.cm-s-github-light .cm-support{font-weight:normal;font-style:normal;text-decoration:none;color:var(--color-codemirror-syntax-support)}.cm-s-github-light .cm-variable{font-weight:normal;font-style:normal;text-decoration:none;color:var(--color-codemirror-syntax-variable)}details-dialog{position:fixed;margin:10vh auto;top:0;left:50%;transform:translateX(-50%);z-index:999;max-height:80vh;max-width:90vw;width:448px}.user-select-contain{-webkit-user-select:contain;user-select:contain}.ajax-pagination-form .ajax-pagination-btn{width:100%;padding:6px;margin-top:20px;font-weight:600;color:var(--color-accent-fg);background:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.ajax-pagination-form .ajax-pagination-btn:hover,.ajax-pagination-form .ajax-pagination-btn:focus{color:var(--color-accent-fg);background-color:var(--color-canvas-subtle)}.ajax-pagination-form.loading .ajax-pagination-btn{text-indent:-3000px;background-color:var(--color-canvas-subtle);background-image:url("/images/spinners/octocat-spinner-16px-EAF2F5.gif");background-repeat:no-repeat;background-position:center center;border-color:var(--color-border-default)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.ajax-pagination-form.loading .ajax-pagination-btn{background-image:url("/images/spinners/octocat-spinner-32-EAF2F5.gif");background-size:16px auto}}body.intent-mouse [role=button]:focus,body.intent-mouse [role=tabpanel][tabindex="0"]:focus,body.intent-mouse button:focus,body.intent-mouse summary:focus,body.intent-mouse a:focus{outline:none;box-shadow:none}body.intent-mouse [tabindex="0"]:focus,body.intent-mouse details-dialog:focus{outline:none}.CodeMirror{height:calc(100vh - 1px)}.file-editor-textarea{width:100%;padding:5px 4px;font:12px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;resize:vertical;border:0;border-radius:0;outline:none}.container-preview .tabnav-tabs{margin:-6px 0 -6px -11px}.container-preview .tabnav-tabs .tabnav-tab{padding:12px 15px;border-radius:0}.container-preview .tabnav-tabs>.selected:first-child{border-top-left-radius:6px}.container-preview .tabnav-tabs .selected{font-weight:600}.container-preview.template-editor .commit-create,.container-preview.template-editor .file-actions{display:block}.container-preview.template-editor .show-code,.container-preview.template-editor .commit-preview,.container-preview.template-editor .loading-preview-msg,.container-preview.template-editor .no-changes-preview-msg,.container-preview.template-editor .error-preview-msg{display:none !important}.container-preview.render-editor .commit-create,.container-preview.render-editor .file-actions{display:block}.container-preview.render-editor .template-editor,.container-preview.render-editor .show-code,.container-preview.render-editor .commit-preview,.container-preview.render-editor .loading-preview-msg,.container-preview.render-editor .no-changes-preview-msg,.container-preview.render-editor .error-preview-msg{display:none !important}.container-preview.show-code .commit-create,.container-preview.show-code .file-actions{display:block}.container-preview.show-code .template-editor,.container-preview.show-code .render-editor,.container-preview.show-code .commit-preview,.container-preview.show-code .loading-preview-msg,.container-preview.show-code .no-changes-preview-msg,.container-preview.show-code .error-preview-msg{display:none !important}.container-preview:not(.show-code) .commit-create,.container-preview:not(.show-code) .file-actions{display:none !important}.container-preview.loading-preview .loading-preview-msg{display:block}.container-preview.loading-preview .template-editor,.container-preview.loading-preview .render-editor,.container-preview.loading-preview .no-changes-preview-msg,.container-preview.loading-preview .error-preview-msg,.container-preview.loading-preview .commit-preview{display:none !important}.container-preview.show-preview .commit-preview{display:block}.container-preview.show-preview .template-editor,.container-preview.show-preview .render-editor,.container-preview.show-preview .loading-preview-msg,.container-preview.show-preview .no-changes-preview-msg,.container-preview.show-preview .error-preview-msg{display:none !important}.container-preview.no-changes-preview .no-changes-preview-msg{display:block}.container-preview.no-changes-preview .template-editor,.container-preview.no-changes-preview .render-editor,.container-preview.no-changes-preview .loading-preview-msg,.container-preview.no-changes-preview .error-preview-msg,.container-preview.no-changes-preview .commit-preview{display:none !important}.container-preview.error-preview .error-preview-msg{display:block}.container-preview.error-preview .template-editor,.container-preview.error-preview .render-editor,.container-preview.error-preview .loading-preview-msg,.container-preview.error-preview .no-changes-preview-msg,.container-preview.error-preview .commit-preview{display:none !important}.container-preview p.preview-msg{padding:30px;font-size:16px}.CodeMirror-merge-header{height:30px}.CodeMirror-merge-header .CodeMirror-merge-pane{height:30px;line-height:30px}.cm-s-github-light .merge-gutter{width:14px}.conflict-background+.CodeMirror-gutter-wrapper .CodeMirror-linenumber{background-color:var(--color-attention-subtle)}.conflict-gutter-marker{background-color:var(--color-attention-subtle)}.conflict-gutter-marker::after,.conflict-gutter-marker::before{position:absolute;left:-1px;content:"";background-color:var(--color-danger-fg)}.conflict-gutter-marker-start::after,.conflict-gutter-marker-end::after{width:1px;height:10px}.conflict-gutter-marker-start::before,.conflict-gutter-marker-middle::before,.conflict-gutter-marker-end::before{width:10px;height:1px}.conflict-gutter-marker-start::after{bottom:0}.conflict-gutter-marker-end::after{top:0}.conflict-gutter-marker-start::before{top:7px}.conflict-gutter-marker-end::before{bottom:7px}.conflict-gutter-marker-line::after,.conflict-gutter-marker-middle::after{width:1px;height:18px}.conflict-gutter-marker-middle::before{top:9px}.form-group .edit-action{opacity:.6}.form-group .form-field-hover{background-color:none;border:1px solid var(--color-border-default)}.form-group:hover .edit-action{cursor:pointer;opacity:.7}.form-group:hover .form-field-hover{cursor:pointer;border:1px solid var(--color-border-default)}.placeholder-box{border:1px solid var(--color-border-default)}.template-previews{max-width:768px}.template-previews .Box .expand-group{display:none;height:0}.template-previews .Box .dismiss-preview-button{display:none}.template-previews .Box.expand-preview .expand-group{display:block;height:100%;transition:height 3s}.template-previews .Box.expand-preview .preview-button{display:none}.template-previews .Box.expand-preview .dismiss-preview-button{display:inline}.template-previews .discussion-sidebar-heading{font-size:14px;color:var(--color-neutral-emphasis)}.template-previews .discussion-sidebar-heading:hover{color:var(--color-accent-emphasis)}.edit-labels{display:none}.preview-section{display:block}.edit-section{display:none}.Box .section-focus .preview-section{display:none}.Box .section-focus .edit-section{display:block}.commit-create .CodeMirror{padding-top:8px}auto-complete,details-dialog,details-menu,file-attachment,filter-input,remote-input,tab-container,text-expander,[data-catalyst]{display:block}.Details--on .Details-content--shown{display:none !important}.Details:not(.Details--on) .Details-content--hidden{display:none !important}.Details:not(.Details--on) .Details-content--hidden-not-important{display:none}.Details-element[open]>summary .Details-content--closed{display:none !important}.Details-element:not([open])>summary .Details-content--open{display:none !important}g-emoji{display:inline-block;min-width:1ch;font-family:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1em;font-style:normal !important;font-weight:400;line-height:1;vertical-align:-0.075em}g-emoji img{width:1em;height:1em}.emoji-icon{display:inline-block;width:20px;height:20px;vertical-align:middle;background-repeat:no-repeat;background-size:20px 20px}.emoji-result{display:inline-block;height:20px;font-size:18px;font-weight:400;vertical-align:middle}.gollum-editor .comment-form-head.tabnav{border:1px solid var(--color-border-muted)}.gollum-editor .gollum-editor-body{height:390px;resize:vertical}.active .gollum-editor-function-buttons{display:block !important}.auth-form{width:340px;margin:0 auto}.auth-form .form-group.warn .warning,.auth-form .form-group.warn .error,.auth-form .form-group.errored .warning,.auth-form .form-group.errored .error{max-width:274px}.auth-form-header{padding:8px 16px;margin:0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3);background-color:#829aa8;border:1px solid #768995;border-radius:6px 6px 0 0}.auth-form-header h1{font-size:16px}.auth-form-header h1 a{color:#fff}.auth-form-header .octicon{position:absolute;top:10px;right:20px;color:rgba(0,0,0,.4);text-shadow:0 1px 0 rgba(255,255,255,.1)}.auth-form-message{max-height:140px;padding:16px 16px 8px;overflow-y:scroll;border:1px solid var(--color-border-default);border-radius:6px}.auth-form-message ol,.auth-form-message ul{padding-left:inherit;margin-bottom:inherit}.auth-form-body{padding:16px;font-size:14px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-muted);border-top:0;border-radius:0 0 6px 6px}.auth-form-body .input-block{margin-top:4px;margin-bottom:16px}.auth-form-body p{margin-bottom:0}.auth-form-body ol,.auth-form-body ul{padding-left:inherit;margin-bottom:inherit}.two-factor-help{position:relative;padding:8px 8px 8px 32px;margin:60px 0 auto auto;border:1px solid var(--color-border-muted);border-radius:6px}.two-factor-help h4{margin-top:0;margin-bottom:4px}.two-factor-help .octicon-device-mobile,.two-factor-help .octicon-key,.two-factor-help .octicon-shield-lock,.two-factor-help .octicon-circle-slash{position:absolute;top:10px;left:10px}.sms-send-code-spinner{position:relative;bottom:2px;display:none;vertical-align:bottom}.loading .sms-send-code-spinner{display:inline}.auth-form-body .webauthn-form-body{padding:0}.webauthn-form-body{padding:32px 32px 16px;text-align:center}.webauthn-form-body button{margin-top:16px}.flash.sms-error,.flash.sms-success{display:none;margin:0 0 8px}.is-sent .sms-success{display:block}.is-sent .sms-error{display:none}.is-not-sent .sms-success{display:none}.is-not-sent .sms-error{display:block}.session-authentication{background-color:var(--color-canvas-default)}.session-authentication .header-logged-out{background-color:transparent;border-bottom:0}.session-authentication .header-logo{color:var(--color-fg-default)}.session-authentication .flash{padding:16px 16px;margin:0 auto;margin-bottom:8px;font-size:13px;border-style:solid;border-width:1px;border-radius:6px}.session-authentication .flash .container{width:auto}.session-authentication .flash .flash-close{height:40px}.session-authentication .flash.flash-banner{width:100%;border-top:0;border-right:0;border-left:0;border-radius:0}.session-authentication .auth-form label{display:block;margin-bottom:8px;font-weight:400;text-align:left}.session-authentication .auth-form .btn{margin-top:16px}.session-authentication .auth-form .webauthn-message{margin-bottom:0}.session-authentication .label-link{float:right;font-size:12px}.session-authentication .auth-form-header{margin-bottom:16px;color:var(--color-fg-default);text-align:center;text-shadow:none;background-color:transparent;border:0}.session-authentication .auth-form-header h1{font-size:24px;font-weight:300;letter-spacing:-0.5px}.session-authentication .auth-form-body{border-top:1px solid var(--color-border-muted);border-radius:6px}.session-authentication .auth-form-body.webauthn-form-body{padding:16px}.session-authentication .login-callout{padding:16px 16px;text-align:center;border:1px solid var(--color-border-default);border-radius:6px}.session-authentication .two-factor-help{padding:0 0 0 16px;margin-top:16px;border:0}.session-authentication .two-factor-help .octicon-device-mobile,.session-authentication .two-factor-help .octicon-key,.session-authentication .two-factor-help .octicon-shield-lock,.session-authentication .two-factor-help .octicon-circle-slash{top:4px;left:0}.session-authentication.enterprise .header-logged-out{padding:48px 0 24px;background-color:transparent}.session-authentication.hosted .header-logged-out{padding:40px 0 16px;background-color:transparent}.Header-old{z-index:32;padding-top:12px;padding-bottom:12px;color:#fff;background-color:var(--color-header-bg)}.server-stats+.Header-old{box-shadow:inset 0 1px 0 rgba(255,255,255,.075)}.Header-old .dropdown-menu{width:300px}.Header-old .notification-indicator:hover::after{content:none}@media(min-width: 1012px){.Header-old .notification-indicator:hover::after{content:attr(aria-label)}}.HeaderMenu{display:none;clear:both}@media(min-width: 1012px){.HeaderMenu{display:block;clear:none}}.open .HeaderMenu{display:block}.HeaderMenu-summary::marker,.HeaderMenu-summary::-webkit-details-marker{display:none}@keyframes dropdown-display{0%{opacity:0;transform:scale(0.98) translateY(-0.6em)}100%{opacity:1;transform:scale(1) translateY(0)}}.HeaderMenu--logged-out{z-index:100;width:300px;overflow:auto;background-color:var(--color-canvas-default);box-shadow:0 10px 50px rgba(27,31,35,.15)}@media(min-width: 1012px){.HeaderMenu--logged-out{width:auto;overflow:visible;background-color:transparent;box-shadow:none}}.HeaderMenu--logged-out .jump-to-suggestions{top:100%}.HeaderMenu--logged-out .HeaderMenu-details[open]>summary::before{position:absolute;bottom:-8px;display:block}.HeaderMenu--logged-out .header-search-key-slash{margin-right:8px !important}.HeaderMenu--logged-out .dropdown-menu{position:static;width:auto;border:0 solid transparent;box-shadow:none}.HeaderMenu--logged-out .dropdown-menu::before,.HeaderMenu--logged-out .dropdown-menu::after{display:none}@media(min-width: 1012px){.HeaderMenu--logged-out .dropdown-menu{position:absolute;width:300px;border:0;box-shadow:0 3px 12px rgba(27,31,35,.15),0 0 1px rgba(27,31,35,.2)}.HeaderMenu--logged-out .dropdown-menu::before,.HeaderMenu--logged-out .dropdown-menu::after{content:""}}.HeaderMenu--logged-out .dropdown-menu-s{transform:none}@media(min-width: 1012px){.HeaderMenu--logged-out .dropdown-menu-s{transform:translateX(50%)}}.HeaderMenu--logged-out .header-search{width:auto;border-top:0}@media(min-width: 1012px){.HeaderMenu--logged-out .header-search{width:240px}}.HeaderMenu--logged-out .header-search-wrapper{border-color:var(--color-border-muted)}@media(min-width: 1012px){.HeaderMenu--logged-out .header-search-wrapper{border-color:var(--color-header-search-border)}}@media(max-width: 1012px){.HeaderMenu--logged-out .header-search-wrapper{background-color:var(--color-canvas-default)}}.HeaderMenu--logged-out .header-search-input{padding-top:8px;padding-bottom:8px;font-size:14px;-webkit-appearance:none;color:var(--color-fg-default)}@media(min-width: 1012px){.HeaderMenu--logged-out .header-search-input{color:inherit}}.HeaderMenu--logged-out .header-search-input::placeholder{color:var(--color-fg-muted) !important}@media(min-width: 1012px){.HeaderMenu--logged-out .header-search-input::placeholder{color:rgba(255,255,255,.75) !important}}.HeaderMenu-link{color:var(--color-fg-default);white-space:nowrap;background:transparent;transition:opacity .4s}.HeaderMenu-link:hover{color:var(--color-fg-default);opacity:.75}@media(min-width: 1012px){.HeaderMenu-link{color:#fff;transition:opacity .4s}.HeaderMenu-link:hover{color:#fff;opacity:.75}}.HeaderMenu-link .icon-chevon-down-mktg{top:24px;right:0;width:14px;stroke:var(--color-fg-default);transition:stroke .4s}@media(min-width: 1012px){.HeaderMenu-link .icon-chevon-down-mktg{top:-2px;width:12px;stroke:rgba(255,255,255,.5);background:transparent}}.HeaderMenu-details[open]>summary::before{display:none}@media(min-width: 1012px){.HeaderMenu-details[open]>summary::before{position:absolute;bottom:-8px;display:block}}.HeaderMenu-details[open] .HeaderMenu-link{color:var(--color-fg-default)}@media(min-width: 1012px){.HeaderMenu-details[open] .HeaderMenu-link{color:rgba(255,255,255,.75)}}.HeaderMenu-details[open] .dropdown-menu{animation:none}@media(min-width: 1012px){.HeaderMenu-details[open] .dropdown-menu{animation:dropdown-display .4s cubic-bezier(0.73, 0.005, 0.22, 1)}}.HeaderMenu-details[open] .icon-chevon-down-mktg{stroke:var(--color-fg-default)}@media(min-width: 1012px){.HeaderMenu-details[open] .icon-chevon-down-mktg{stroke:#fff}}.header-logo-invertocat{margin:-1px 16px -1px -2px;color:#fff;white-space:nowrap}.header-logo-invertocat .octicon-mark-github{float:left}.header-logo-invertocat:hover{color:#fff;text-decoration:none}.notification-indicator .mail-status{position:absolute;top:-6px;left:6px;z-index:2;display:none;width:14px;height:14px;color:#fff;background-image:linear-gradient(#54a3ff, #006eed);background-clip:padding-box;border:2px solid var(--color-header-bg);border-radius:50%}.notification-indicator .mail-status.unread{display:inline-block}.notification-indicator:hover .mail-status{text-decoration:none;background-color:var(--color-accent-emphasis)}.header-nav-current-user{padding-bottom:0;font-size:inherit}.header-nav-current-user .css-truncate-target{max-width:100%}.header-nav-current-user .user-profile-link{color:var(--color-fg-default)}.feature-preview-indicator{position:absolute;top:0;left:13px;z-index:2;width:14px;height:14px;color:#fff;background-image:linear-gradient(#54a3ff, #006eed);background-clip:padding-box;border:2px solid var(--color-header-bg);border-radius:50%}.feature-preview-details .feature-preview-indicator{top:9px;right:10px;left:inherit;width:10px;height:10px;border:0}.unsupported-browser{color:var(--color-fg-default);background-color:var(--color-attention-subtle);border-bottom:1px solid var(--color-attention-emphasis)}.header-search-wrapper{display:table;width:100%;max-width:100%;padding:0;font-size:inherit;font-weight:400;color:var(--color-scale-white);vertical-align:middle;background-color:var(--color-header-search-bg);border:1px solid var(--color-header-search-border);box-shadow:none}.header-search-wrapper.header-search-wrapper-jump-to .header-search-scope{width:-moz-fit-content;width:fit-content}.header-search-wrapper .truncate-repo-scope{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-search-wrapper.focus{background-color:rgba(255,255,255,.175);box-shadow:none}.header-search-wrapper.focus .header-search-scope{color:var(--color-scale-white);background-color:rgba(255,255,255,.075);border-right-color:#282e34}.header-search-input{display:table-cell;width:100%;padding-top:0;padding-bottom:0;font-size:inherit;color:inherit;background:none;border:0;box-shadow:none}.header-search-input::placeholder{color:rgba(255,255,255,.75)}.header-search-input:focus{border:0;box-shadow:none}.header-search-input:focus~.header-search-key-slash{display:none !important}.header-search-input::-ms-clear{display:none}.header-search-scope{display:none;padding-right:8px;padding-left:8px;font-size:inherit;line-height:28px;color:rgba(255,255,255,.7);white-space:nowrap;vertical-align:middle;border-right:1px solid var(--color-border-muted);border-right-color:#282e34;border-top-left-radius:6px;border-bottom-left-radius:6px}.header-search-scope:empty+.header-search-input{width:100%}.header-search-scope:hover{color:var(--color-scale-white);background-color:rgba(255,255,255,.12)}.scoped-search .header-search-wrapper{display:flex}.jump-to-field-active{color:var(--color-fg-default) !important;background-color:var(--color-canvas-subtle)}.jump-to-field-active::placeholder{color:var(--color-fg-muted) !important}.jump-to-field-active~.header-search-key-slash{display:none}.jump-to-field-active.jump-to-dropdown-visible{border-bottom-right-radius:0;border-bottom-left-radius:0}.jump-to-suggestions{top:100%;left:0;z-index:35;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px;box-shadow:0 4px 10px rgba(0,0,0,.1)}.jump-to-suggestions-path{min-width:0;min-height:44px;color:var(--color-fg-default)}.jump-to-suggestions-path .jump-to-octicon{width:28px;color:var(--color-fg-muted)}.jump-to-suggestions-path .jump-to-suggestion-name{max-width:none}.jump-to-suggestions-path mark{font-weight:600;background-color:transparent}.jump-to-suggestions-results-container .navigation-item{border-bottom:1px solid var(--color-border-default)}.jump-to-suggestions-results-container .navigation-item:last-child{border-bottom:0}.jump-to-suggestions-results-container .d-on-nav-focus{display:none}.jump-to-suggestions-results-container [aria-selected=true] .jump-to-octicon,.jump-to-suggestions-results-container .navigation-focus .jump-to-octicon{color:var(--color-fg-on-emphasis)}.jump-to-suggestions-results-container [aria-selected=true] .jump-to-suggestions-path,.jump-to-suggestions-results-container .navigation-focus .jump-to-suggestions-path{color:var(--color-fg-on-emphasis);background:var(--color-accent-emphasis)}.jump-to-suggestions-results-container [aria-selected=true] mark,.jump-to-suggestions-results-container .navigation-focus mark{color:var(--color-fg-on-emphasis)}.jump-to-suggestions-results-container [aria-selected=true] .d-on-nav-focus,.jump-to-suggestions-results-container .navigation-focus .d-on-nav-focus{display:block}.header-search{max-width:100%;transition:.2s ease-in-out;transition-property:max-width,padding-bottom,padding-top}@media(min-width: 768px){.header-search{max-width:272px}}@media(min-width: 768px){.header-search:focus-within{max-width:544px}}@media(min-width: 768px){.header-search.fixed-width:focus-within{max-width:272px}}.HeaderMenu--logged-out .header-search{min-width:auto}
|
|
|
|
/*# sourceMappingURL=frameworks-8eeace8c49b9c9af301d36f17cffb1e22dc7a17ab4014d8a928e0540387601b478e9f7d39ca8ac0ff9eb8937cc93e51e7d4832ea72985ad0c714d3aee4e990a3.css.map*/
|
|
[data-color-mode=light][data-light-theme=dark_colorblind],[data-color-mode=dark][data-dark-theme=dark_colorblind]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(66,160,255,0.3);--color-diff-blob-addition-line-bg: rgba(21,133,253,0.15);--color-diff-blob-addition-word-bg: rgba(21,133,253,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(195,128,0,0.3);--color-diff-blob-deletion-line-bg: rgba(195,128,0,0.15);--color-diff-blob-deletion-word-bg: rgba(195,128,0,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #42a0ff;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #83d4ff;--color-prettylights-syntax-keyword: #d69a00;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #c38000;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #633e00;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #865401;--color-prettylights-syntax-string-regexp: #83d4ff;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #f0ec59;--color-prettylights-syntax-markup-deleted-bg: #452f00;--color-prettylights-syntax-markup-inserted-text: #a0e8ff;--color-prettylights-syntax-markup-inserted-bg: #0a2861;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #d69a00;--color-codemirror-syntax-storage: #d69a00;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #c38000;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #1585fd;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #c38000;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(195,128,0,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #42a0ff;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #d69a00;--color-checks-ansi-red-bright: #e6b716;--color-checks-ansi-green: #42a0ff;--color-checks-ansi-green-bright: #66baff;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #d69a00;--color-ansi-red-bright: #e6b716;--color-ansi-green: #42a0ff;--color-ansi-green-bright: #66baff;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #1d69e0;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #1585fd;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #1d69e0;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(29,105,224,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #1d69e0;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #c38000;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #a66900;--color-btn-danger-hover-border: #c38000;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #865401;--color-btn-danger-selected-border: #d69a00;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(195,128,0,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(166,105,0,0.05);--color-btn-danger-focus-border: #c38000;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(195,128,0,0.4);--color-btn-danger-counter-bg: rgba(166,105,0,0.1);--color-btn-danger-icon: #c38000;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(195,128,0,0.16);--color-action-list-item-danger-active-bg: rgba(195,128,0,0.24);--color-action-list-item-danger-hover-text: #d69a00;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #42a0ff;--color-success-emphasis: #1d69e0;--color-success-muted: rgba(21,133,253,0.4);--color-success-subtle: rgba(21,133,253,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #c38000;--color-danger-emphasis: #a66900;--color-danger-muted: rgba(195,128,0,0.4);--color-danger-subtle: rgba(195,128,0,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #a0e8ff;--color-scale-green-1: #83d4ff;--color-scale-green-2: #66baff;--color-scale-green-3: #42a0ff;--color-scale-green-4: #1585fd;--color-scale-green-5: #1d69e0;--color-scale-green-6: #0f53bc;--color-scale-green-7: #0b3c92;--color-scale-green-8: #0a2861;--color-scale-green-9: #041843;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #f0ec59;--color-scale-red-1: #ecd334;--color-scale-red-2: #e6b716;--color-scale-red-3: #d69a00;--color-scale-red-4: #c38000;--color-scale-red-5: #a66900;--color-scale-red-6: #865401;--color-scale-red-7: #633e00;--color-scale-red-8: #452f00;--color-scale-red-9: #292100;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=dark_colorblind]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(66,160,255,0.3);--color-diff-blob-addition-line-bg: rgba(21,133,253,0.15);--color-diff-blob-addition-word-bg: rgba(21,133,253,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(195,128,0,0.3);--color-diff-blob-deletion-line-bg: rgba(195,128,0,0.15);--color-diff-blob-deletion-word-bg: rgba(195,128,0,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #42a0ff;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #83d4ff;--color-prettylights-syntax-keyword: #d69a00;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #c38000;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #633e00;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #865401;--color-prettylights-syntax-string-regexp: #83d4ff;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #f0ec59;--color-prettylights-syntax-markup-deleted-bg: #452f00;--color-prettylights-syntax-markup-inserted-text: #a0e8ff;--color-prettylights-syntax-markup-inserted-bg: #0a2861;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #d69a00;--color-codemirror-syntax-storage: #d69a00;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #c38000;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #1585fd;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #c38000;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(195,128,0,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #42a0ff;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #d69a00;--color-checks-ansi-red-bright: #e6b716;--color-checks-ansi-green: #42a0ff;--color-checks-ansi-green-bright: #66baff;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #d69a00;--color-ansi-red-bright: #e6b716;--color-ansi-green: #42a0ff;--color-ansi-green-bright: #66baff;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #1d69e0;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #1585fd;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #1d69e0;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(29,105,224,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #1d69e0;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #c38000;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #a66900;--color-btn-danger-hover-border: #c38000;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #865401;--color-btn-danger-selected-border: #d69a00;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(195,128,0,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(166,105,0,0.05);--color-btn-danger-focus-border: #c38000;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(195,128,0,0.4);--color-btn-danger-counter-bg: rgba(166,105,0,0.1);--color-btn-danger-icon: #c38000;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(195,128,0,0.16);--color-action-list-item-danger-active-bg: rgba(195,128,0,0.24);--color-action-list-item-danger-hover-text: #d69a00;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #42a0ff;--color-success-emphasis: #1d69e0;--color-success-muted: rgba(21,133,253,0.4);--color-success-subtle: rgba(21,133,253,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #c38000;--color-danger-emphasis: #a66900;--color-danger-muted: rgba(195,128,0,0.4);--color-danger-subtle: rgba(195,128,0,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #a0e8ff;--color-scale-green-1: #83d4ff;--color-scale-green-2: #66baff;--color-scale-green-3: #42a0ff;--color-scale-green-4: #1585fd;--color-scale-green-5: #1d69e0;--color-scale-green-6: #0f53bc;--color-scale-green-7: #0b3c92;--color-scale-green-8: #0a2861;--color-scale-green-9: #041843;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #f0ec59;--color-scale-red-1: #ecd334;--color-scale-red-2: #e6b716;--color-scale-red-3: #d69a00;--color-scale-red-4: #c38000;--color-scale-red-5: #a66900;--color-scale-red-6: #865401;--color-scale-red-7: #633e00;--color-scale-red-8: #452f00;--color-scale-red-9: #292100;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=dark_colorblind]{--color-canvas-default-transparent: rgba(13,17,23,0);--color-page-header-bg: #0d1117;--color-marketing-icon-primary: #79c0ff;--color-marketing-icon-secondary: #1f6feb;--color-diff-blob-addition-num-text: #c9d1d9;--color-diff-blob-addition-fg: #c9d1d9;--color-diff-blob-addition-num-bg: rgba(66,160,255,0.3);--color-diff-blob-addition-line-bg: rgba(21,133,253,0.15);--color-diff-blob-addition-word-bg: rgba(21,133,253,0.4);--color-diff-blob-deletion-num-text: #c9d1d9;--color-diff-blob-deletion-fg: #c9d1d9;--color-diff-blob-deletion-num-bg: rgba(195,128,0,0.3);--color-diff-blob-deletion-line-bg: rgba(195,128,0,0.15);--color-diff-blob-deletion-word-bg: rgba(195,128,0,0.4);--color-diff-blob-hunk-num-bg: rgba(56,139,253,0.4);--color-diff-blob-expander-icon: #8b949e;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: rgba(240,246,252,0.1);--color-diffstat-addition-border: rgba(240,246,252,0.1);--color-diffstat-addition-bg: #42a0ff;--color-search-keyword-hl: rgba(210,153,34,0.4);--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #83d4ff;--color-prettylights-syntax-keyword: #d69a00;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #c38000;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #633e00;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #865401;--color-prettylights-syntax-string-regexp: #83d4ff;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #f0ec59;--color-prettylights-syntax-markup-deleted-bg: #452f00;--color-prettylights-syntax-markup-inserted-text: #a0e8ff;--color-prettylights-syntax-markup-inserted-bg: #0a2861;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-codemirror-text: #c9d1d9;--color-codemirror-bg: #0d1117;--color-codemirror-gutters-bg: #0d1117;--color-codemirror-guttermarker-text: #0d1117;--color-codemirror-guttermarker-subtle-text: #484f58;--color-codemirror-linenumber-text: #8b949e;--color-codemirror-cursor: #c9d1d9;--color-codemirror-selection-bg: rgba(56,139,253,0.4);--color-codemirror-activeline-bg: rgba(110,118,129,0.1);--color-codemirror-matchingbracket-text: #c9d1d9;--color-codemirror-lines-bg: #0d1117;--color-codemirror-syntax-comment: #8b949e;--color-codemirror-syntax-constant: #79c0ff;--color-codemirror-syntax-entity: #d2a8ff;--color-codemirror-syntax-keyword: #d69a00;--color-codemirror-syntax-storage: #d69a00;--color-codemirror-syntax-string: #a5d6ff;--color-codemirror-syntax-support: #79c0ff;--color-codemirror-syntax-variable: #ffa657;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #c9d1d9;--color-checks-text-secondary: #8b949e;--color-checks-text-link: #58a6ff;--color-checks-btn-icon: #8b949e;--color-checks-btn-hover-icon: #c9d1d9;--color-checks-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-input-text: #8b949e;--color-checks-input-placeholder-text: #484f58;--color-checks-input-focus-text: #c9d1d9;--color-checks-input-bg: #161b22;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #c38000;--color-checks-donut-pending: #d29922;--color-checks-donut-success: #1585fd;--color-checks-donut-neutral: #8b949e;--color-checks-dropdown-text: #c9d1d9;--color-checks-dropdown-bg: #161b22;--color-checks-dropdown-border: #30363d;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #c9d1d9;--color-checks-dropdown-hover-bg: rgba(110,118,129,0.1);--color-checks-dropdown-btn-hover-text: #c9d1d9;--color-checks-dropdown-btn-hover-bg: rgba(110,118,129,0.1);--color-checks-scrollbar-thumb-bg: rgba(110,118,129,0.4);--color-checks-header-label-text: #8b949e;--color-checks-header-label-open-text: #c9d1d9;--color-checks-header-border: #21262d;--color-checks-header-icon: #8b949e;--color-checks-line-text: #8b949e;--color-checks-line-num-text: #484f58;--color-checks-line-timestamp-text: #484f58;--color-checks-line-hover-bg: rgba(110,118,129,0.1);--color-checks-line-selected-bg: rgba(56,139,253,0.15);--color-checks-line-selected-num-text: #58a6ff;--color-checks-line-dt-fm-text: #f0f6fc;--color-checks-line-dt-fm-bg: #9e6a03;--color-checks-gate-bg: rgba(187,128,9,0.15);--color-checks-gate-text: #8b949e;--color-checks-gate-waiting-text: #d29922;--color-checks-step-header-open-bg: #161b22;--color-checks-step-error-text: #c38000;--color-checks-step-warning-text: #d29922;--color-checks-logline-text: #8b949e;--color-checks-logline-num-text: #484f58;--color-checks-logline-debug-text: #a371f7;--color-checks-logline-error-text: #8b949e;--color-checks-logline-error-num-text: #484f58;--color-checks-logline-error-bg: rgba(195,128,0,0.15);--color-checks-logline-warning-text: #8b949e;--color-checks-logline-warning-num-text: #d29922;--color-checks-logline-warning-bg: rgba(187,128,9,0.15);--color-checks-logline-command-text: #58a6ff;--color-checks-logline-section-text: #42a0ff;--color-checks-ansi-black: #0d1117;--color-checks-ansi-black-bright: #161b22;--color-checks-ansi-white: #b1bac4;--color-checks-ansi-white-bright: #b1bac4;--color-checks-ansi-gray: #6e7681;--color-checks-ansi-red: #d69a00;--color-checks-ansi-red-bright: #e6b716;--color-checks-ansi-green: #42a0ff;--color-checks-ansi-green-bright: #66baff;--color-checks-ansi-yellow: #d29922;--color-checks-ansi-yellow-bright: #e3b341;--color-checks-ansi-blue: #58a6ff;--color-checks-ansi-blue-bright: #79c0ff;--color-checks-ansi-magenta: #bc8cff;--color-checks-ansi-magenta-bright: #d2a8ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0d1117;--color-project-sidebar-bg: #161b22;--color-project-gradient-in: #161b22;--color-project-gradient-out: rgba(22,27,34,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(240,246,252,0.1);--color-avatar-border: rgba(240,246,252,0.1);--color-avatar-stack-fade: #30363d;--color-avatar-stack-fade-more: #21262d;--color-avatar-child-shadow: -2px -2px 0 #0d1117;--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #484f58;--color-select-menu-tap-highlight: rgba(48,54,61,0.5);--color-select-menu-tap-focus-bg: #0c2d6b;--color-overlay-shadow: 0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(240,246,252,0.7);--color-header-bg: #161b22;--color-header-divider: #8b949e;--color-header-logo: #f0f6fc;--color-header-search-bg: #0d1117;--color-header-search-border: #30363d;--color-sidenav-selected-bg: #21262d;--color-menu-bg-active: #161b22;--color-input-disabled-bg: rgba(110,118,129,0);--color-timeline-badge-bg: #21262d;--color-ansi-black: #484f58;--color-ansi-black-bright: #6e7681;--color-ansi-white: #b1bac4;--color-ansi-white-bright: #f0f6fc;--color-ansi-gray: #6e7681;--color-ansi-red: #d69a00;--color-ansi-red-bright: #e6b716;--color-ansi-green: #42a0ff;--color-ansi-green-bright: #66baff;--color-ansi-yellow: #d29922;--color-ansi-yellow-bright: #e3b341;--color-ansi-blue: #58a6ff;--color-ansi-blue-bright: #79c0ff;--color-ansi-magenta: #bc8cff;--color-ansi-magenta-bright: #d2a8ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: rgba(240,246,252,0.1);--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: hsla(212,12%,18%,1);--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-focus-shadow: 0 0 0 3px rgba(139,148,158,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(31,111,235,0.3);--color-btn-counter-bg: #30363d;--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #1d69e0;--color-btn-primary-border: rgba(240,246,252,0.1);--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #1585fd;--color-btn-primary-hover-border: rgba(240,246,252,0.1);--color-btn-primary-selected-bg: #1d69e0;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(240,246,252,0.5);--color-btn-primary-disabled-bg: rgba(29,105,224,0.6);--color-btn-primary-disabled-border: rgba(240,246,252,0.1);--color-btn-primary-focus-bg: #1d69e0;--color-btn-primary-focus-border: rgba(240,246,252,0.1);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #f0f6fc;--color-btn-primary-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-text: #58a6ff;--color-btn-outline-hover-text: #58a6ff;--color-btn-outline-hover-bg: #30363d;--color-btn-outline-hover-border: rgba(240,246,252,0.1);--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(240,246,252,0.03);--color-btn-outline-hover-counter-bg: rgba(240,246,252,0.2);--color-btn-outline-selected-text: #f0f6fc;--color-btn-outline-selected-bg: #0d419d;--color-btn-outline-selected-border: rgba(240,246,252,0.1);--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(88,166,255,0.5);--color-btn-outline-disabled-bg: #0d1117;--color-btn-outline-disabled-counter-bg: rgba(31,111,235,0.05);--color-btn-outline-focus-border: rgba(240,246,252,0.1);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(17,88,199,0.4);--color-btn-outline-counter-bg: rgba(31,111,235,0.1);--color-btn-danger-text: #c38000;--color-btn-danger-hover-text: #f0f6fc;--color-btn-danger-hover-bg: #a66900;--color-btn-danger-hover-border: #c38000;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #f0f6fc;--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #865401;--color-btn-danger-selected-border: #d69a00;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(195,128,0,0.5);--color-btn-danger-disabled-bg: #0d1117;--color-btn-danger-disabled-counter-bg: rgba(166,105,0,0.05);--color-btn-danger-focus-border: #c38000;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(195,128,0,0.4);--color-btn-danger-counter-bg: rgba(166,105,0,0.1);--color-btn-danger-icon: #c38000;--color-underlinenav-icon: #484f58;--color-underlinenav-border-hover: rgba(110,118,129,0.4);--color-action-list-item-inline-divider: rgba(48,54,61,0.48);--color-action-list-item-default-hover-bg: rgba(177,186,196,0.12);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(177,186,196,0.2);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(177,186,196,0.08);--color-action-list-item-danger-hover-bg: rgba(195,128,0,0.16);--color-action-list-item-danger-active-bg: rgba(195,128,0,0.24);--color-action-list-item-danger-hover-text: #d69a00;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-fg-on-emphasis: #f0f6fc;--color-canvas-default: #0d1117;--color-canvas-overlay: #161b22;--color-canvas-inset: #010409;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-border-subtle: rgba(240,246,252,0.1);--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #6e7681;--color-neutral-emphasis: #6e7681;--color-neutral-muted: rgba(110,118,129,0.4);--color-neutral-subtle: rgba(110,118,129,0.1);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-accent-muted: rgba(56,139,253,0.4);--color-accent-subtle: rgba(56,139,253,0.15);--color-success-fg: #42a0ff;--color-success-emphasis: #1d69e0;--color-success-muted: rgba(21,133,253,0.4);--color-success-subtle: rgba(21,133,253,0.15);--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-muted: rgba(187,128,9,0.4);--color-attention-subtle: rgba(187,128,9,0.15);--color-severe-fg: #db6d28;--color-severe-emphasis: #bd561d;--color-severe-muted: rgba(219,109,40,0.4);--color-severe-subtle: rgba(219,109,40,0.15);--color-danger-fg: #c38000;--color-danger-emphasis: #a66900;--color-danger-muted: rgba(195,128,0,0.4);--color-danger-subtle: rgba(195,128,0,0.15);--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-done-muted: rgba(163,113,247,0.4);--color-done-subtle: rgba(163,113,247,0.15);--color-sponsors-fg: #db61a2;--color-sponsors-emphasis: #bf4b8a;--color-sponsors-muted: rgba(219,97,162,0.4);--color-sponsors-subtle: rgba(219,97,162,0.15);--color-primer-fg-disabled: #484f58;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(13,17,23,0.95);--color-primer-border-active: #F78166;--color-primer-border-contrast: rgba(240,246,252,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #0c2d6b;--color-scale-black: #010409;--color-scale-white: #f0f6fc;--color-scale-gray-0: #f0f6fc;--color-scale-gray-1: #c9d1d9;--color-scale-gray-2: #b1bac4;--color-scale-gray-3: #8b949e;--color-scale-gray-4: #6e7681;--color-scale-gray-5: #484f58;--color-scale-gray-6: #30363d;--color-scale-gray-7: #21262d;--color-scale-gray-8: #161b22;--color-scale-gray-9: #0d1117;--color-scale-blue-0: #cae8ff;--color-scale-blue-1: #a5d6ff;--color-scale-blue-2: #79c0ff;--color-scale-blue-3: #58a6ff;--color-scale-blue-4: #388bfd;--color-scale-blue-5: #1f6feb;--color-scale-blue-6: #1158c7;--color-scale-blue-7: #0d419d;--color-scale-blue-8: #0c2d6b;--color-scale-blue-9: #051d4d;--color-scale-green-0: #a0e8ff;--color-scale-green-1: #83d4ff;--color-scale-green-2: #66baff;--color-scale-green-3: #42a0ff;--color-scale-green-4: #1585fd;--color-scale-green-5: #1d69e0;--color-scale-green-6: #0f53bc;--color-scale-green-7: #0b3c92;--color-scale-green-8: #0a2861;--color-scale-green-9: #041843;--color-scale-yellow-0: #f8e3a1;--color-scale-yellow-1: #f2cc60;--color-scale-yellow-2: #e3b341;--color-scale-yellow-3: #d29922;--color-scale-yellow-4: #bb8009;--color-scale-yellow-5: #9e6a03;--color-scale-yellow-6: #845306;--color-scale-yellow-7: #693e00;--color-scale-yellow-8: #4b2900;--color-scale-yellow-9: #341a00;--color-scale-orange-0: #ffdfb6;--color-scale-orange-1: #ffc680;--color-scale-orange-2: #ffa657;--color-scale-orange-3: #f0883e;--color-scale-orange-4: #db6d28;--color-scale-orange-5: #bd561d;--color-scale-orange-6: #9b4215;--color-scale-orange-7: #762d0a;--color-scale-orange-8: #5a1e02;--color-scale-orange-9: #3d1300;--color-scale-red-0: #f0ec59;--color-scale-red-1: #ecd334;--color-scale-red-2: #e6b716;--color-scale-red-3: #d69a00;--color-scale-red-4: #c38000;--color-scale-red-5: #a66900;--color-scale-red-6: #865401;--color-scale-red-7: #633e00;--color-scale-red-8: #452f00;--color-scale-red-9: #292100;--color-scale-purple-0: #eddeff;--color-scale-purple-1: #e2c5ff;--color-scale-purple-2: #d2a8ff;--color-scale-purple-3: #bc8cff;--color-scale-purple-4: #a371f7;--color-scale-purple-5: #8957e5;--color-scale-purple-6: #6e40c9;--color-scale-purple-7: #553098;--color-scale-purple-8: #3c1e70;--color-scale-purple-9: #271052;--color-scale-pink-0: #ffdaec;--color-scale-pink-1: #ffbedd;--color-scale-pink-2: #ff9bce;--color-scale-pink-3: #f778ba;--color-scale-pink-4: #db61a2;--color-scale-pink-5: #bf4b8a;--color-scale-pink-6: #9e3670;--color-scale-pink-7: #7d2457;--color-scale-pink-8: #5e103e;--color-scale-pink-9: #42062a;--color-scale-coral-0: #FFDDD2;--color-scale-coral-1: #FFC2B2;--color-scale-coral-2: #FFA28B;--color-scale-coral-3: #F78166;--color-scale-coral-4: #EA6045;--color-scale-coral-5: #CF462D;--color-scale-coral-6: #AC3220;--color-scale-coral-7: #872012;--color-scale-coral-8: #640D04;--color-scale-coral-9: #460701}}
|
|
|
|
/*# sourceMappingURL=dark_colorblind-0772930742e8c5b2791c3a526c770e1cfcd13392a521b46e6483b1596f73635becf586fd8e28be8e3ad3fd4c8043460bd35c95d17f9bbea4a85ca22355338669.css.map*/
|
|
[data-color-mode=light][data-light-theme=light_colorblind],[data-color-mode=dark][data-dark-theme=light_colorblind]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: rgba(53,173,255,0.4);--color-diff-blob-addition-line-bg: rgba(192,246,255,0.5);--color-diff-blob-addition-word-bg: rgba(53,173,255,0.4);--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: rgba(231,161,0,0.4);--color-diff-blob-deletion-line-bg: rgba(254,254,72,0.5);--color-diff-blob-deletion-word-bg: rgba(248,194,0,0.5);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #0088ff;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #054da9;--color-prettylights-syntax-keyword: #ac5e00;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #6c3900;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #6c3900;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #ac5e00;--color-prettylights-syntax-string-regexp: #054da9;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #6c3900;--color-prettylights-syntax-markup-deleted-bg: #fefe48;--color-prettylights-syntax-markup-inserted-text: #054da9;--color-prettylights-syntax-markup-inserted-bg: #c0f6ff;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #ac5e00;--color-codemirror-syntax-storage: #ac5e00;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #d08002;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #0088ff;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #e7a100;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #e7a100;--color-checks-logline-error-bg: rgba(139,70,0,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #35adff;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #e7a100;--color-checks-ansi-red-bright: #f8c200;--color-checks-ansi-green: #35adff;--color-checks-ansi-green-bright: #65ccff;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #ac5e00;--color-ansi-red-bright: #8b4600;--color-ansi-green: #054da9;--color-ansi-green-bright: #0566d5;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #0088ff;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #0566d5;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(212,95%,41%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,31,80,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #65ccff;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #0088ff;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(0,136,255,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #ac5e00;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #8b4600;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(33,100%,31%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(47,41,0,0.2);--color-btn-danger-disabled-text: rgba(172,94,0,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(172,94,0,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(139,70,0,0.4);--color-btn-danger-counter-bg: rgba(172,94,0,0.1);--color-btn-danger-icon: #ac5e00;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(254,254,72,0.64);--color-action-list-item-danger-active-bg: #fefe48;--color-action-list-item-danger-hover-text: #ac5e00;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #0566d5;--color-success-emphasis: #0088ff;--color-success-muted: rgba(53,173,255,0.4);--color-success-subtle: #c0f6ff;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #ac5e00;--color-danger-emphasis: #ac5e00;--color-danger-muted: rgba(231,161,0,0.4);--color-danger-subtle: #fefe48;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #c0f6ff;--color-scale-green-1: #96e5ff;--color-scale-green-2: #65ccff;--color-scale-green-3: #35adff;--color-scale-green-4: #0088ff;--color-scale-green-5: #0566d5;--color-scale-green-6: #054da9;--color-scale-green-7: #033a86;--color-scale-green-8: #002d68;--color-scale-green-9: #001f50;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #fefe48;--color-scale-red-1: #fee325;--color-scale-red-2: #f8c200;--color-scale-red-3: #e7a100;--color-scale-red-4: #d08002;--color-scale-red-5: #ac5e00;--color-scale-red-6: #8b4600;--color-scale-red-7: #6c3900;--color-scale-red-8: #4c3100;--color-scale-red-9: #2f2900;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=light_colorblind]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: rgba(53,173,255,0.4);--color-diff-blob-addition-line-bg: rgba(192,246,255,0.5);--color-diff-blob-addition-word-bg: rgba(53,173,255,0.4);--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: rgba(231,161,0,0.4);--color-diff-blob-deletion-line-bg: rgba(254,254,72,0.5);--color-diff-blob-deletion-word-bg: rgba(248,194,0,0.5);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #0088ff;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #054da9;--color-prettylights-syntax-keyword: #ac5e00;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #6c3900;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #6c3900;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #ac5e00;--color-prettylights-syntax-string-regexp: #054da9;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #6c3900;--color-prettylights-syntax-markup-deleted-bg: #fefe48;--color-prettylights-syntax-markup-inserted-text: #054da9;--color-prettylights-syntax-markup-inserted-bg: #c0f6ff;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #ac5e00;--color-codemirror-syntax-storage: #ac5e00;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #d08002;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #0088ff;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #e7a100;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #e7a100;--color-checks-logline-error-bg: rgba(139,70,0,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #35adff;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #e7a100;--color-checks-ansi-red-bright: #f8c200;--color-checks-ansi-green: #35adff;--color-checks-ansi-green-bright: #65ccff;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #ac5e00;--color-ansi-red-bright: #8b4600;--color-ansi-green: #054da9;--color-ansi-green-bright: #0566d5;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #0088ff;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #0566d5;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(212,95%,41%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,31,80,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #65ccff;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #0088ff;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(0,136,255,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #ac5e00;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #8b4600;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(33,100%,31%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(47,41,0,0.2);--color-btn-danger-disabled-text: rgba(172,94,0,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(172,94,0,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(139,70,0,0.4);--color-btn-danger-counter-bg: rgba(172,94,0,0.1);--color-btn-danger-icon: #ac5e00;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(254,254,72,0.64);--color-action-list-item-danger-active-bg: #fefe48;--color-action-list-item-danger-hover-text: #ac5e00;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #0566d5;--color-success-emphasis: #0088ff;--color-success-muted: rgba(53,173,255,0.4);--color-success-subtle: #c0f6ff;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #ac5e00;--color-danger-emphasis: #ac5e00;--color-danger-muted: rgba(231,161,0,0.4);--color-danger-subtle: #fefe48;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #c0f6ff;--color-scale-green-1: #96e5ff;--color-scale-green-2: #65ccff;--color-scale-green-3: #35adff;--color-scale-green-4: #0088ff;--color-scale-green-5: #0566d5;--color-scale-green-6: #054da9;--color-scale-green-7: #033a86;--color-scale-green-8: #002d68;--color-scale-green-9: #001f50;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #fefe48;--color-scale-red-1: #fee325;--color-scale-red-2: #f8c200;--color-scale-red-3: #e7a100;--color-scale-red-4: #d08002;--color-scale-red-5: #ac5e00;--color-scale-red-6: #8b4600;--color-scale-red-7: #6c3900;--color-scale-red-8: #4c3100;--color-scale-red-9: #2f2900;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=light_colorblind]{--color-canvas-default-transparent: rgba(255,255,255,0);--color-page-header-bg: #f6f8fa;--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: rgba(53,173,255,0.4);--color-diff-blob-addition-line-bg: rgba(192,246,255,0.5);--color-diff-blob-addition-word-bg: rgba(53,173,255,0.4);--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: rgba(231,161,0,0.4);--color-diff-blob-deletion-line-bg: rgba(254,254,72,0.5);--color-diff-blob-deletion-word-bg: rgba(248,194,0,0.5);--color-diff-blob-hunk-num-bg: rgba(84,174,255,0.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,0.15);--color-diffstat-addition-border: rgba(27,31,36,0.15);--color-diffstat-addition-bg: #0088ff;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #054da9;--color-prettylights-syntax-keyword: #ac5e00;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #6c3900;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #6c3900;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #ac5e00;--color-prettylights-syntax-string-regexp: #054da9;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #6c3900;--color-prettylights-syntax-markup-deleted-bg: #fefe48;--color-prettylights-syntax-markup-inserted-text: #054da9;--color-prettylights-syntax-markup-inserted-bg: #c0f6ff;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,0.4);--color-codemirror-activeline-bg: rgba(234,238,242,0.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #ac5e00;--color-codemirror-syntax-storage: #ac5e00;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,0.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #d08002;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #0088ff;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,0.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,0.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,0.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(125,78,0,0.15);--color-checks-gate-text: #d0d7de;--color-checks-gate-waiting-text: #afb8c1;--color-checks-step-header-open-bg: #32383f;--color-checks-step-error-text: #e7a100;--color-checks-step-warning-text: #d4a72c;--color-checks-logline-text: #8c959f;--color-checks-logline-num-text: rgba(140,149,159,0.75);--color-checks-logline-debug-text: #c297ff;--color-checks-logline-error-text: #d0d7de;--color-checks-logline-error-num-text: #e7a100;--color-checks-logline-error-bg: rgba(139,70,0,0.15);--color-checks-logline-warning-text: #d0d7de;--color-checks-logline-warning-num-text: #d4a72c;--color-checks-logline-warning-bg: rgba(125,78,0,0.15);--color-checks-logline-command-text: #54aeff;--color-checks-logline-section-text: #35adff;--color-checks-ansi-black: #24292f;--color-checks-ansi-black-bright: #32383f;--color-checks-ansi-white: #d0d7de;--color-checks-ansi-white-bright: #d0d7de;--color-checks-ansi-gray: #8c959f;--color-checks-ansi-red: #e7a100;--color-checks-ansi-red-bright: #f8c200;--color-checks-ansi-green: #35adff;--color-checks-ansi-green-bright: #65ccff;--color-checks-ansi-yellow: #d4a72c;--color-checks-ansi-yellow-bright: #eac54f;--color-checks-ansi-blue: #54aeff;--color-checks-ansi-blue-bright: #80ccff;--color-checks-ansi-magenta: #c297ff;--color-checks-ansi-magenta-bright: #d8b9ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #24292f;--color-project-sidebar-bg: #ffffff;--color-project-gradient-in: #ffffff;--color-project-gradient-out: rgba(255,255,255,0);--color-mktg-btn-bg: #1b1f23;--color-mktg-btn-shadow-outline: rgb(0 0 0 / 15%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(0 0 0 / 15%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02);--color-mktg-btn-shadow-hover-muted: rgb(0 0 0 / 70%) 0 0 0 2px inset;--color-avatar-bg: #ffffff;--color-avatar-border: rgba(27,31,36,0.15);--color-avatar-stack-fade: #afb8c1;--color-avatar-stack-fade-more: #d0d7de;--color-avatar-child-shadow: -2px -2px 0 rgba(255,255,255,0.8);--color-topic-tag-border: rgba(0,0,0,0);--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: rgba(0,0,0,0);--color-select-menu-tap-highlight: rgba(175,184,193,0.5);--color-select-menu-tap-focus-bg: #b6e3ff;--color-overlay-shadow: 0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #24292f;--color-header-divider: #57606a;--color-header-logo: #ffffff;--color-header-search-bg: #24292f;--color-header-search-border: #57606a;--color-sidenav-selected-bg: #ffffff;--color-menu-bg-active: rgba(0,0,0,0);--color-input-disabled-bg: rgba(175,184,193,0.2);--color-timeline-badge-bg: #eaeef2;--color-ansi-black: #24292f;--color-ansi-black-bright: #57606a;--color-ansi-white: #6e7781;--color-ansi-white-bright: #8c959f;--color-ansi-gray: #6e7781;--color-ansi-red: #ac5e00;--color-ansi-red-bright: #8b4600;--color-ansi-green: #054da9;--color-ansi-green-bright: #0566d5;--color-ansi-yellow: #4d2d00;--color-ansi-yellow-bright: #633c01;--color-ansi-blue: #0969da;--color-ansi-blue-bright: #218bff;--color-ansi-magenta: #8250df;--color-ansi-magenta-bright: #a475f9;--color-ansi-cyan: #1b7c83;--color-ansi-cyan-bright: #3192aa;--color-btn-text: #24292f;--color-btn-bg: #f6f8fa;--color-btn-border: rgba(27,31,36,0.15);--color-btn-shadow: 0 1px 0 rgba(27,31,36,0.04);--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,36,0.15);--color-btn-active-bg: hsla(220,14%,93%,1);--color-btn-active-border: rgba(27,31,36,0.15);--color-btn-selected-bg: hsla(220,14%,94%,1);--color-btn-focus-bg: #f6f8fa;--color-btn-focus-border: rgba(27,31,36,0.15);--color-btn-focus-shadow: 0 0 0 3px rgba(9,105,218,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,36,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(9,105,218,0.3);--color-btn-counter-bg: rgba(27,31,36,0.08);--color-btn-primary-text: #ffffff;--color-btn-primary-bg: #0088ff;--color-btn-primary-border: rgba(27,31,36,0.15);--color-btn-primary-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-primary-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-primary-hover-bg: #0566d5;--color-btn-primary-hover-border: rgba(27,31,36,0.15);--color-btn-primary-selected-bg: hsla(212,95%,41%,1);--color-btn-primary-selected-shadow: inset 0 1px 0 rgba(0,31,80,0.2);--color-btn-primary-disabled-text: rgba(255,255,255,0.8);--color-btn-primary-disabled-bg: #65ccff;--color-btn-primary-disabled-border: rgba(27,31,36,0.15);--color-btn-primary-focus-bg: #0088ff;--color-btn-primary-focus-border: rgba(27,31,36,0.15);--color-btn-primary-focus-shadow: 0 0 0 3px rgba(0,136,255,0.4);--color-btn-primary-icon: rgba(255,255,255,0.8);--color-btn-primary-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-text: #0969da;--color-btn-outline-hover-text: #ffffff;--color-btn-outline-hover-bg: #0969da;--color-btn-outline-hover-border: rgba(27,31,36,0.15);--color-btn-outline-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: hsla(212,92%,42%,1);--color-btn-outline-selected-border: rgba(27,31,36,0.15);--color-btn-outline-selected-shadow: inset 0 1px 0 rgba(0,33,85,0.2);--color-btn-outline-disabled-text: rgba(9,105,218,0.5);--color-btn-outline-disabled-bg: #f6f8fa;--color-btn-outline-disabled-counter-bg: rgba(9,105,218,0.05);--color-btn-outline-focus-border: rgba(27,31,36,0.15);--color-btn-outline-focus-shadow: 0 0 0 3px rgba(5,80,174,0.4);--color-btn-outline-counter-bg: rgba(9,105,218,0.1);--color-btn-danger-text: #ac5e00;--color-btn-danger-hover-text: #ffffff;--color-btn-danger-hover-bg: #8b4600;--color-btn-danger-hover-border: rgba(27,31,36,0.15);--color-btn-danger-hover-shadow: 0 1px 0 rgba(27,31,36,0.1);--color-btn-danger-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-danger-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: hsla(33,100%,31%,1);--color-btn-danger-selected-border: rgba(27,31,36,0.15);--color-btn-danger-selected-shadow: inset 0 1px 0 rgba(47,41,0,0.2);--color-btn-danger-disabled-text: rgba(172,94,0,0.5);--color-btn-danger-disabled-bg: #f6f8fa;--color-btn-danger-disabled-counter-bg: rgba(172,94,0,0.05);--color-btn-danger-focus-border: rgba(27,31,36,0.15);--color-btn-danger-focus-shadow: 0 0 0 3px rgba(139,70,0,0.4);--color-btn-danger-counter-bg: rgba(172,94,0,0.1);--color-btn-danger-icon: #ac5e00;--color-btn-danger-hover-icon: #ffffff;--color-underlinenav-icon: #6e7781;--color-underlinenav-border-hover: rgba(175,184,193,0.2);--color-action-list-item-inline-divider: rgba(208,215,222,0.48);--color-action-list-item-default-hover-bg: rgba(208,215,222,0.32);--color-action-list-item-default-hover-border: rgba(0,0,0,0);--color-action-list-item-default-active-bg: rgba(208,215,222,0.48);--color-action-list-item-default-active-border: rgba(0,0,0,0);--color-action-list-item-default-selected-bg: rgba(208,215,222,0.24);--color-action-list-item-danger-hover-bg: rgba(254,254,72,0.64);--color-action-list-item-danger-active-bg: #fefe48;--color-action-list-item-danger-hover-text: #ac5e00;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-fg-on-emphasis: #ffffff;--color-canvas-default: #ffffff;--color-canvas-overlay: #ffffff;--color-canvas-inset: #f6f8fa;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-border-subtle: rgba(27,31,36,0.15);--color-shadow-small: 0 1px 0 rgba(27,31,36,0.04);--color-shadow-medium: 0 3px 6px rgba(140,149,159,0.15);--color-shadow-large: 0 8px 24px rgba(140,149,159,0.2);--color-shadow-extra-large: 0 12px 28px rgba(140,149,159,0.3);--color-neutral-emphasis-plus: #24292f;--color-neutral-emphasis: #6e7781;--color-neutral-muted: rgba(175,184,193,0.2);--color-neutral-subtle: rgba(234,238,242,0.5);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-accent-muted: rgba(84,174,255,0.4);--color-accent-subtle: #ddf4ff;--color-success-fg: #0566d5;--color-success-emphasis: #0088ff;--color-success-muted: rgba(53,173,255,0.4);--color-success-subtle: #c0f6ff;--color-attention-fg: #9a6700;--color-attention-emphasis: #bf8700;--color-attention-muted: rgba(212,167,44,0.4);--color-attention-subtle: #fff8c5;--color-severe-fg: #bc4c00;--color-severe-emphasis: #bc4c00;--color-severe-muted: rgba(251,143,68,0.4);--color-severe-subtle: #fff1e5;--color-danger-fg: #ac5e00;--color-danger-emphasis: #ac5e00;--color-danger-muted: rgba(231,161,0,0.4);--color-danger-subtle: #fefe48;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-done-muted: rgba(194,151,255,0.4);--color-done-subtle: #fbefff;--color-sponsors-fg: #bf3989;--color-sponsors-emphasis: #bf3989;--color-sponsors-muted: rgba(255,128,200,0.4);--color-sponsors-subtle: #ffeff7;--color-primer-fg-disabled: #8c959f;--color-primer-canvas-backdrop: rgba(27,31,36,0.5);--color-primer-canvas-sticky: rgba(255,255,255,0.95);--color-primer-border-active: #FD8C73;--color-primer-border-contrast: rgba(27,31,36,0.1);--color-primer-shadow-highlight: inset 0 1px 0 rgba(255,255,255,0.25);--color-primer-shadow-inset: inset 0 1px 0 rgba(208,215,222,0.2);--color-primer-shadow-focus: 0 0 0 3px rgba(9,105,218,0.3);--color-scale-black: #1b1f24;--color-scale-white: #ffffff;--color-scale-gray-0: #f6f8fa;--color-scale-gray-1: #eaeef2;--color-scale-gray-2: #d0d7de;--color-scale-gray-3: #afb8c1;--color-scale-gray-4: #8c959f;--color-scale-gray-5: #6e7781;--color-scale-gray-6: #57606a;--color-scale-gray-7: #424a53;--color-scale-gray-8: #32383f;--color-scale-gray-9: #24292f;--color-scale-blue-0: #ddf4ff;--color-scale-blue-1: #b6e3ff;--color-scale-blue-2: #80ccff;--color-scale-blue-3: #54aeff;--color-scale-blue-4: #218bff;--color-scale-blue-5: #0969da;--color-scale-blue-6: #0550ae;--color-scale-blue-7: #033d8b;--color-scale-blue-8: #0a3069;--color-scale-blue-9: #002155;--color-scale-green-0: #c0f6ff;--color-scale-green-1: #96e5ff;--color-scale-green-2: #65ccff;--color-scale-green-3: #35adff;--color-scale-green-4: #0088ff;--color-scale-green-5: #0566d5;--color-scale-green-6: #054da9;--color-scale-green-7: #033a86;--color-scale-green-8: #002d68;--color-scale-green-9: #001f50;--color-scale-yellow-0: #fff8c5;--color-scale-yellow-1: #fae17d;--color-scale-yellow-2: #eac54f;--color-scale-yellow-3: #d4a72c;--color-scale-yellow-4: #bf8700;--color-scale-yellow-5: #9a6700;--color-scale-yellow-6: #7d4e00;--color-scale-yellow-7: #633c01;--color-scale-yellow-8: #4d2d00;--color-scale-yellow-9: #3b2300;--color-scale-orange-0: #fff1e5;--color-scale-orange-1: #ffd8b5;--color-scale-orange-2: #ffb77c;--color-scale-orange-3: #fb8f44;--color-scale-orange-4: #e16f24;--color-scale-orange-5: #bc4c00;--color-scale-orange-6: #953800;--color-scale-orange-7: #762c00;--color-scale-orange-8: #5c2200;--color-scale-orange-9: #471700;--color-scale-red-0: #fefe48;--color-scale-red-1: #fee325;--color-scale-red-2: #f8c200;--color-scale-red-3: #e7a100;--color-scale-red-4: #d08002;--color-scale-red-5: #ac5e00;--color-scale-red-6: #8b4600;--color-scale-red-7: #6c3900;--color-scale-red-8: #4c3100;--color-scale-red-9: #2f2900;--color-scale-purple-0: #fbefff;--color-scale-purple-1: #ecd8ff;--color-scale-purple-2: #d8b9ff;--color-scale-purple-3: #c297ff;--color-scale-purple-4: #a475f9;--color-scale-purple-5: #8250df;--color-scale-purple-6: #6639ba;--color-scale-purple-7: #512a97;--color-scale-purple-8: #3e1f79;--color-scale-purple-9: #2e1461;--color-scale-pink-0: #ffeff7;--color-scale-pink-1: #ffd3eb;--color-scale-pink-2: #ffadda;--color-scale-pink-3: #ff80c8;--color-scale-pink-4: #e85aad;--color-scale-pink-5: #bf3989;--color-scale-pink-6: #99286e;--color-scale-pink-7: #772057;--color-scale-pink-8: #611347;--color-scale-pink-9: #4d0336;--color-scale-coral-0: #FFF0EB;--color-scale-coral-1: #FFD6CC;--color-scale-coral-2: #FFB4A1;--color-scale-coral-3: #FD8C73;--color-scale-coral-4: #EC6547;--color-scale-coral-5: #C4432B;--color-scale-coral-6: #9E2F1C;--color-scale-coral-7: #801F0F;--color-scale-coral-8: #691105;--color-scale-coral-9: #510901}}
|
|
|
|
/*# sourceMappingURL=light_colorblind-6c043b15bcdc23a95fae1cb4aa9d003a3c3d886bed8784c135a679b6902a0be083fa70b9737e425381147682e6b10856940e52d9c83092776bf34c783104b79c.css.map*/
|
|
[data-color-mode=light][data-light-theme=dark_high_contrast],[data-color-mode=dark][data-dark-theme=dark_high_contrast]{--color-canvas-default-transparent: rgba(10,12,16,0);--color-page-header-bg: #0a0c10;--color-marketing-icon-primary: #91cbff;--color-marketing-icon-secondary: #409eff;--color-diff-blob-addition-num-text: #f0f3f6;--color-diff-blob-addition-fg: #0a0c10;--color-diff-blob-addition-num-bg: rgba(38,205,77,0.3);--color-diff-blob-addition-line-bg: rgba(9,180,58,0.15);--color-diff-blob-addition-word-bg: #09b43a;--color-diff-blob-deletion-num-text: #f0f3f6;--color-diff-blob-deletion-fg: #0a0c10;--color-diff-blob-deletion-num-bg: rgba(255,106,105,0.3);--color-diff-blob-deletion-line-bg: rgba(255,106,105,0.15);--color-diff-blob-deletion-word-bg: #ff6a69;--color-diff-blob-hunk-num-bg: rgba(64,158,255,0.4);--color-diff-blob-expander-icon: #f0f3f6;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: #ffb1af;--color-diffstat-addition-border: #4ae168;--color-diffstat-addition-bg: #26cd4d;--color-search-keyword-hl: rgba(240,183,47,0.4);--color-prettylights-syntax-comment: #bdc4cc;--color-prettylights-syntax-constant: #91cbff;--color-prettylights-syntax-entity: #dbb7ff;--color-prettylights-syntax-storage-modifier-import: #f0f3f6;--color-prettylights-syntax-entity-tag: #72f088;--color-prettylights-syntax-keyword: #ff9492;--color-prettylights-syntax-string: #addcff;--color-prettylights-syntax-variable: #ffb757;--color-prettylights-syntax-brackethighlighter-unmatched: #ff6a69;--color-prettylights-syntax-invalid-illegal-text: #ffffff;--color-prettylights-syntax-invalid-illegal-bg: #e82a2f;--color-prettylights-syntax-carriage-return-text: #ffffff;--color-prettylights-syntax-carriage-return-bg: #ff4445;--color-prettylights-syntax-string-regexp: #72f088;--color-prettylights-syntax-markup-list: #fbd669;--color-prettylights-syntax-markup-heading: #409eff;--color-prettylights-syntax-markup-italic: #f0f3f6;--color-prettylights-syntax-markup-bold: #f0f3f6;--color-prettylights-syntax-markup-deleted-text: #ffdedb;--color-prettylights-syntax-markup-deleted-bg: #cc1421;--color-prettylights-syntax-markup-inserted-text: #acf7b6;--color-prettylights-syntax-markup-inserted-bg: #007728;--color-prettylights-syntax-markup-changed-text: #ffe1b4;--color-prettylights-syntax-markup-changed-bg: #a74c00;--color-prettylights-syntax-markup-ignored-text: #f0f3f6;--color-prettylights-syntax-markup-ignored-bg: #318bf8;--color-prettylights-syntax-meta-diff-range: #dbb7ff;--color-prettylights-syntax-brackethighlighter-angle: #bdc4cc;--color-prettylights-syntax-sublimelinter-gutter-mark: #7a828e;--color-prettylights-syntax-constant-other-reference-link: #addcff;--color-codemirror-text: #f0f3f6;--color-codemirror-bg: #0a0c10;--color-codemirror-gutters-bg: #0a0c10;--color-codemirror-guttermarker-text: #0a0c10;--color-codemirror-guttermarker-subtle-text: #7a828e;--color-codemirror-linenumber-text: #f0f3f6;--color-codemirror-cursor: #f0f3f6;--color-codemirror-selection-bg: rgba(64,158,255,0.4);--color-codemirror-activeline-bg: rgba(158,167,179,0.1);--color-codemirror-matchingbracket-text: #f0f3f6;--color-codemirror-lines-bg: #0a0c10;--color-codemirror-syntax-comment: #bdc4cc;--color-codemirror-syntax-constant: #91cbff;--color-codemirror-syntax-entity: #dbb7ff;--color-codemirror-syntax-keyword: #ff9492;--color-codemirror-syntax-storage: #ff9492;--color-codemirror-syntax-string: #addcff;--color-codemirror-syntax-support: #91cbff;--color-codemirror-syntax-variable: #ffb757;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #f0f3f6;--color-checks-text-secondary: #f0f3f6;--color-checks-text-link: #71b7ff;--color-checks-btn-icon: #f0f3f6;--color-checks-btn-hover-icon: #f0f3f6;--color-checks-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-input-text: #f0f3f6;--color-checks-input-placeholder-text: #7a828e;--color-checks-input-focus-text: #f0f3f6;--color-checks-input-bg: #272b33;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #ff6a69;--color-checks-donut-pending: #f0b72f;--color-checks-donut-success: #09b43a;--color-checks-donut-neutral: #bdc4cc;--color-checks-dropdown-text: #f0f3f6;--color-checks-dropdown-bg: #272b33;--color-checks-dropdown-border: #7a828e;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #f0f3f6;--color-checks-dropdown-hover-bg: rgba(158,167,179,0.1);--color-checks-dropdown-btn-hover-text: #f0f3f6;--color-checks-dropdown-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-scrollbar-thumb-bg: rgba(158,167,179,0.4);--color-checks-header-label-text: #f0f3f6;--color-checks-header-label-open-text: #f0f3f6;--color-checks-header-border: #7a828e;--color-checks-header-icon: #f0f3f6;--color-checks-line-text: #f0f3f6;--color-checks-line-num-text: #7a828e;--color-checks-line-timestamp-text: #7a828e;--color-checks-line-hover-bg: rgba(158,167,179,0.1);--color-checks-line-selected-bg: rgba(64,158,255,0.15);--color-checks-line-selected-num-text: #71b7ff;--color-checks-line-dt-fm-text: #0a0c10;--color-checks-line-dt-fm-bg: #e09b13;--color-checks-gate-bg: rgba(224,155,19,0.15);--color-checks-gate-text: #f0f3f6;--color-checks-gate-waiting-text: #f0b72f;--color-checks-step-header-open-bg: #272b33;--color-checks-step-error-text: #ff6a69;--color-checks-step-warning-text: #f0b72f;--color-checks-logline-text: #f0f3f6;--color-checks-logline-num-text: #7a828e;--color-checks-logline-debug-text: #b780ff;--color-checks-logline-error-text: #f0f3f6;--color-checks-logline-error-num-text: #7a828e;--color-checks-logline-error-bg: rgba(255,106,105,0.15);--color-checks-logline-warning-text: #f0f3f6;--color-checks-logline-warning-num-text: #f0b72f;--color-checks-logline-warning-bg: rgba(224,155,19,0.15);--color-checks-logline-command-text: #71b7ff;--color-checks-logline-section-text: #26cd4d;--color-checks-ansi-black: #0a0c10;--color-checks-ansi-black-bright: #272b33;--color-checks-ansi-white: #d9dee3;--color-checks-ansi-white-bright: #d9dee3;--color-checks-ansi-gray: #9ea7b3;--color-checks-ansi-red: #ff9492;--color-checks-ansi-red-bright: #ffb1af;--color-checks-ansi-green: #26cd4d;--color-checks-ansi-green-bright: #4ae168;--color-checks-ansi-yellow: #f0b72f;--color-checks-ansi-yellow-bright: #f7c843;--color-checks-ansi-blue: #71b7ff;--color-checks-ansi-blue-bright: #91cbff;--color-checks-ansi-magenta: #cb9eff;--color-checks-ansi-magenta-bright: #dbb7ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0a0c10;--color-project-sidebar-bg: #272b33;--color-project-gradient-in: #272b33;--color-project-gradient-out: rgba(39,43,51,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(255,255,255,0.1);--color-avatar-border: rgba(255,255,255,0.9);--color-avatar-stack-fade: #525964;--color-avatar-stack-fade-more: #272b33;--color-avatar-child-shadow: -2px -2px 0 #0a0c10;--color-topic-tag-border: #409eff;--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #7a828e;--color-select-menu-tap-highlight: rgba(82,89,100,0.5);--color-select-menu-tap-focus-bg: #1e60d5;--color-overlay-shadow: 0 0 0 1px #525964, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #272b33;--color-header-divider: #bdc4cc;--color-header-logo: #ffffff;--color-header-search-bg: #0a0c10;--color-header-search-border: #525964;--color-sidenav-selected-bg: #272b33;--color-menu-bg-active: #272b33;--color-input-disabled-bg: rgba(158,167,179,0);--color-timeline-badge-bg: #272b33;--color-ansi-black: #7a828e;--color-ansi-black-bright: #9ea7b3;--color-ansi-white: #d9dee3;--color-ansi-white-bright: #ffffff;--color-ansi-gray: #9ea7b3;--color-ansi-red: #ff9492;--color-ansi-red-bright: #ffb1af;--color-ansi-green: #26cd4d;--color-ansi-green-bright: #4ae168;--color-ansi-yellow: #f0b72f;--color-ansi-yellow-bright: #f7c843;--color-ansi-blue: #71b7ff;--color-ansi-blue-bright: #91cbff;--color-ansi-magenta: #cb9eff;--color-ansi-magenta-bright: #dbb7ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #f0f3f6;--color-btn-bg: #272b33;--color-btn-border: #7a828e;--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #525964;--color-btn-hover-border: #bdc4cc;--color-btn-active-bg: hsla(217,10%,33%,1);--color-btn-active-border: #9ea7b3;--color-btn-selected-bg: rgba(82,89,100,0.9);--color-btn-focus-bg: #272b33;--color-btn-focus-border: #bdc4cc;--color-btn-focus-shadow: 0 0 0 3px rgba(189,196,204,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(64,158,255,0.3);--color-btn-counter-bg: #525964;--color-btn-primary-text: #0a0c10;--color-btn-primary-bg: #09b43a;--color-btn-primary-border: #4ae168;--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #26cd4d;--color-btn-primary-hover-border: #4ae168;--color-btn-primary-selected-bg: #09b43a;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(10,12,16,0.5);--color-btn-primary-disabled-bg: rgba(9,180,58,0.6);--color-btn-primary-disabled-border: rgba(74,225,104,0.4);--color-btn-primary-focus-bg: #09b43a;--color-btn-primary-focus-border: #7a828e;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #0a0c10;--color-btn-primary-counter-bg: rgba(1,4,9,0.15);--color-btn-outline-text: #71b7ff;--color-btn-outline-hover-text: #71b7ff;--color-btn-outline-hover-bg: #525964;--color-btn-outline-hover-border: #7a828e;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #2672f3;--color-btn-outline-selected-border: #7a828e;--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(113,183,255,0.5);--color-btn-outline-disabled-bg: #0a0c10;--color-btn-outline-disabled-counter-bg: rgba(64,158,255,0.05);--color-btn-outline-focus-border: #7a828e;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(49,139,248,0.4);--color-btn-outline-counter-bg: rgba(64,158,255,0.1);--color-btn-danger-text: #ff6a69;--color-btn-danger-hover-text: #0a0c10;--color-btn-danger-hover-bg: #ff6a69;--color-btn-danger-hover-border: #ff6a69;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #0a0c10;--color-btn-danger-hover-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ff4445;--color-btn-danger-selected-border: #ff9492;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(255,106,105,0.5);--color-btn-danger-disabled-bg: #0a0c10;--color-btn-danger-disabled-counter-bg: rgba(255,106,105,0.05);--color-btn-danger-focus-border: #ff6a69;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(255,106,105,0.4);--color-btn-danger-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-icon: #ff6a69;--color-underlinenav-icon: #f0f3f6;--color-underlinenav-border-hover: #bdc4cc;--color-action-list-item-inline-divider: #7a828e;--color-action-list-item-default-hover-bg: #272b33;--color-action-list-item-default-hover-border: #7a828e;--color-action-list-item-default-active-bg: #525964;--color-action-list-item-default-active-border: #9ea7b3;--color-action-list-item-default-selected-bg: #525964;--color-action-list-item-danger-hover-bg: #ff6a69;--color-action-list-item-danger-active-bg: #ff4445;--color-action-list-item-danger-hover-text: #0a0c10;--color-fg-default: #f0f3f6;--color-fg-muted: #f0f3f6;--color-fg-subtle: #7a828e;--color-fg-on-emphasis: #0a0c10;--color-canvas-default: #0a0c10;--color-canvas-overlay: #272b33;--color-canvas-inset: #010409;--color-canvas-subtle: #272b33;--color-border-default: #7a828e;--color-border-muted: #7a828e;--color-border-subtle: #7a828e;--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #ffffff;--color-neutral-emphasis: #9ea7b3;--color-neutral-muted: rgba(158,167,179,0.4);--color-neutral-subtle: rgba(158,167,179,0.1);--color-accent-fg: #71b7ff;--color-accent-emphasis: #409eff;--color-accent-muted: #409eff;--color-accent-subtle: rgba(64,158,255,0.15);--color-success-fg: #26cd4d;--color-success-emphasis: #09b43a;--color-success-muted: #09b43a;--color-success-subtle: rgba(9,180,58,0.15);--color-attention-fg: #f0b72f;--color-attention-emphasis: #e09b13;--color-attention-muted: #e09b13;--color-attention-subtle: rgba(224,155,19,0.15);--color-severe-fg: #e7811d;--color-severe-emphasis: #e7811d;--color-severe-muted: #e7811d;--color-severe-subtle: rgba(231,129,29,0.15);--color-danger-fg: #ff6a69;--color-danger-emphasis: #ff6a69;--color-danger-muted: #ff6a69;--color-danger-subtle: rgba(255,106,105,0.15);--color-done-fg: #b780ff;--color-done-emphasis: #b87fff;--color-done-muted: #b780ff;--color-done-subtle: rgba(183,128,255,0.15);--color-sponsors-fg: #ef6eb1;--color-sponsors-emphasis: #ef6eb1;--color-sponsors-muted: #ef6eb1;--color-sponsors-subtle: rgba(239,110,177,0.15);--color-primer-fg-disabled: #7a828e;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(10,12,16,0.95);--color-primer-border-active: #FF967D;--color-primer-border-contrast: rgba(255,255,255,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #1e60d5;--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #ffffff;--color-scale-gray-1: #f0f3f6;--color-scale-gray-2: #d9dee3;--color-scale-gray-3: #bdc4cc;--color-scale-gray-4: #9ea7b3;--color-scale-gray-5: #7a828e;--color-scale-gray-6: #525964;--color-scale-gray-7: #272b33;--color-scale-gray-8: #272b33;--color-scale-gray-9: #0a0c10;--color-scale-blue-0: #caeaff;--color-scale-blue-1: #addcff;--color-scale-blue-2: #91cbff;--color-scale-blue-3: #71b7ff;--color-scale-blue-4: #409eff;--color-scale-blue-5: #409eff;--color-scale-blue-6: #318bf8;--color-scale-blue-7: #2672f3;--color-scale-blue-8: #1e60d5;--color-scale-blue-9: #194fb1;--color-scale-green-0: #acf7b6;--color-scale-green-1: #72f088;--color-scale-green-2: #4ae168;--color-scale-green-3: #26cd4d;--color-scale-green-4: #09b43a;--color-scale-green-5: #09b43a;--color-scale-green-6: #02a232;--color-scale-green-7: #008c2c;--color-scale-green-8: #007728;--color-scale-green-9: #006222;--color-scale-yellow-0: #fbe59e;--color-scale-yellow-1: #fbd669;--color-scale-yellow-2: #f7c843;--color-scale-yellow-3: #f0b72f;--color-scale-yellow-4: #e09b13;--color-scale-yellow-5: #e09b13;--color-scale-yellow-6: #c88508;--color-scale-yellow-7: #ae7104;--color-scale-yellow-8: #945d02;--color-scale-yellow-9: #7b4900;--color-scale-orange-0: #ffe1b4;--color-scale-orange-1: #ffcf86;--color-scale-orange-2: #ffb757;--color-scale-orange-3: #fe9a2d;--color-scale-orange-4: #e7811d;--color-scale-orange-5: #e7811d;--color-scale-orange-6: #d57014;--color-scale-orange-7: #bf5e0a;--color-scale-orange-8: #a74c00;--color-scale-orange-9: #8f3c00;--color-scale-red-0: #ffdedb;--color-scale-red-1: #ffc9c7;--color-scale-red-2: #ffb1af;--color-scale-red-3: #ff9492;--color-scale-red-4: #ff6a69;--color-scale-red-5: #ff6a69;--color-scale-red-6: #ff4445;--color-scale-red-7: #e82a2f;--color-scale-red-8: #cc1421;--color-scale-red-9: #ad0116;--color-scale-purple-0: #f0dfff;--color-scale-purple-1: #e6ccff;--color-scale-purple-2: #dbb7ff;--color-scale-purple-3: #cb9eff;--color-scale-purple-4: #b780ff;--color-scale-purple-5: #b87fff;--color-scale-purple-6: #a66bff;--color-scale-purple-7: #954ffd;--color-scale-purple-8: #8031f7;--color-scale-purple-9: #6921d7;--color-scale-pink-0: #ffdceb;--color-scale-pink-1: #ffc7e1;--color-scale-pink-2: #ffadd4;--color-scale-pink-3: #ff8dc7;--color-scale-pink-4: #ef6eb1;--color-scale-pink-5: #ef6eb1;--color-scale-pink-6: #e456a3;--color-scale-pink-7: #d23d91;--color-scale-pink-8: #b72c7d;--color-scale-pink-9: #9c1d6a;--color-scale-coral-0: #FFDED4;--color-scale-coral-1: #FFCBB9;--color-scale-coral-2: #FFB39B;--color-scale-coral-3: #FF967D;--color-scale-coral-4: #FC704F;--color-scale-coral-5: #FC704F;--color-scale-coral-6: #F75133;--color-scale-coral-7: #E03B21;--color-scale-coral-8: #C62612;--color-scale-coral-9: #A91500}@media(prefers-color-scheme: light){[data-color-mode=auto][data-light-theme=dark_high_contrast]{--color-canvas-default-transparent: rgba(10,12,16,0);--color-page-header-bg: #0a0c10;--color-marketing-icon-primary: #91cbff;--color-marketing-icon-secondary: #409eff;--color-diff-blob-addition-num-text: #f0f3f6;--color-diff-blob-addition-fg: #0a0c10;--color-diff-blob-addition-num-bg: rgba(38,205,77,0.3);--color-diff-blob-addition-line-bg: rgba(9,180,58,0.15);--color-diff-blob-addition-word-bg: #09b43a;--color-diff-blob-deletion-num-text: #f0f3f6;--color-diff-blob-deletion-fg: #0a0c10;--color-diff-blob-deletion-num-bg: rgba(255,106,105,0.3);--color-diff-blob-deletion-line-bg: rgba(255,106,105,0.15);--color-diff-blob-deletion-word-bg: #ff6a69;--color-diff-blob-hunk-num-bg: rgba(64,158,255,0.4);--color-diff-blob-expander-icon: #f0f3f6;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: #ffb1af;--color-diffstat-addition-border: #4ae168;--color-diffstat-addition-bg: #26cd4d;--color-search-keyword-hl: rgba(240,183,47,0.4);--color-prettylights-syntax-comment: #bdc4cc;--color-prettylights-syntax-constant: #91cbff;--color-prettylights-syntax-entity: #dbb7ff;--color-prettylights-syntax-storage-modifier-import: #f0f3f6;--color-prettylights-syntax-entity-tag: #72f088;--color-prettylights-syntax-keyword: #ff9492;--color-prettylights-syntax-string: #addcff;--color-prettylights-syntax-variable: #ffb757;--color-prettylights-syntax-brackethighlighter-unmatched: #ff6a69;--color-prettylights-syntax-invalid-illegal-text: #ffffff;--color-prettylights-syntax-invalid-illegal-bg: #e82a2f;--color-prettylights-syntax-carriage-return-text: #ffffff;--color-prettylights-syntax-carriage-return-bg: #ff4445;--color-prettylights-syntax-string-regexp: #72f088;--color-prettylights-syntax-markup-list: #fbd669;--color-prettylights-syntax-markup-heading: #409eff;--color-prettylights-syntax-markup-italic: #f0f3f6;--color-prettylights-syntax-markup-bold: #f0f3f6;--color-prettylights-syntax-markup-deleted-text: #ffdedb;--color-prettylights-syntax-markup-deleted-bg: #cc1421;--color-prettylights-syntax-markup-inserted-text: #acf7b6;--color-prettylights-syntax-markup-inserted-bg: #007728;--color-prettylights-syntax-markup-changed-text: #ffe1b4;--color-prettylights-syntax-markup-changed-bg: #a74c00;--color-prettylights-syntax-markup-ignored-text: #f0f3f6;--color-prettylights-syntax-markup-ignored-bg: #318bf8;--color-prettylights-syntax-meta-diff-range: #dbb7ff;--color-prettylights-syntax-brackethighlighter-angle: #bdc4cc;--color-prettylights-syntax-sublimelinter-gutter-mark: #7a828e;--color-prettylights-syntax-constant-other-reference-link: #addcff;--color-codemirror-text: #f0f3f6;--color-codemirror-bg: #0a0c10;--color-codemirror-gutters-bg: #0a0c10;--color-codemirror-guttermarker-text: #0a0c10;--color-codemirror-guttermarker-subtle-text: #7a828e;--color-codemirror-linenumber-text: #f0f3f6;--color-codemirror-cursor: #f0f3f6;--color-codemirror-selection-bg: rgba(64,158,255,0.4);--color-codemirror-activeline-bg: rgba(158,167,179,0.1);--color-codemirror-matchingbracket-text: #f0f3f6;--color-codemirror-lines-bg: #0a0c10;--color-codemirror-syntax-comment: #bdc4cc;--color-codemirror-syntax-constant: #91cbff;--color-codemirror-syntax-entity: #dbb7ff;--color-codemirror-syntax-keyword: #ff9492;--color-codemirror-syntax-storage: #ff9492;--color-codemirror-syntax-string: #addcff;--color-codemirror-syntax-support: #91cbff;--color-codemirror-syntax-variable: #ffb757;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #f0f3f6;--color-checks-text-secondary: #f0f3f6;--color-checks-text-link: #71b7ff;--color-checks-btn-icon: #f0f3f6;--color-checks-btn-hover-icon: #f0f3f6;--color-checks-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-input-text: #f0f3f6;--color-checks-input-placeholder-text: #7a828e;--color-checks-input-focus-text: #f0f3f6;--color-checks-input-bg: #272b33;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #ff6a69;--color-checks-donut-pending: #f0b72f;--color-checks-donut-success: #09b43a;--color-checks-donut-neutral: #bdc4cc;--color-checks-dropdown-text: #f0f3f6;--color-checks-dropdown-bg: #272b33;--color-checks-dropdown-border: #7a828e;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #f0f3f6;--color-checks-dropdown-hover-bg: rgba(158,167,179,0.1);--color-checks-dropdown-btn-hover-text: #f0f3f6;--color-checks-dropdown-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-scrollbar-thumb-bg: rgba(158,167,179,0.4);--color-checks-header-label-text: #f0f3f6;--color-checks-header-label-open-text: #f0f3f6;--color-checks-header-border: #7a828e;--color-checks-header-icon: #f0f3f6;--color-checks-line-text: #f0f3f6;--color-checks-line-num-text: #7a828e;--color-checks-line-timestamp-text: #7a828e;--color-checks-line-hover-bg: rgba(158,167,179,0.1);--color-checks-line-selected-bg: rgba(64,158,255,0.15);--color-checks-line-selected-num-text: #71b7ff;--color-checks-line-dt-fm-text: #0a0c10;--color-checks-line-dt-fm-bg: #e09b13;--color-checks-gate-bg: rgba(224,155,19,0.15);--color-checks-gate-text: #f0f3f6;--color-checks-gate-waiting-text: #f0b72f;--color-checks-step-header-open-bg: #272b33;--color-checks-step-error-text: #ff6a69;--color-checks-step-warning-text: #f0b72f;--color-checks-logline-text: #f0f3f6;--color-checks-logline-num-text: #7a828e;--color-checks-logline-debug-text: #b780ff;--color-checks-logline-error-text: #f0f3f6;--color-checks-logline-error-num-text: #7a828e;--color-checks-logline-error-bg: rgba(255,106,105,0.15);--color-checks-logline-warning-text: #f0f3f6;--color-checks-logline-warning-num-text: #f0b72f;--color-checks-logline-warning-bg: rgba(224,155,19,0.15);--color-checks-logline-command-text: #71b7ff;--color-checks-logline-section-text: #26cd4d;--color-checks-ansi-black: #0a0c10;--color-checks-ansi-black-bright: #272b33;--color-checks-ansi-white: #d9dee3;--color-checks-ansi-white-bright: #d9dee3;--color-checks-ansi-gray: #9ea7b3;--color-checks-ansi-red: #ff9492;--color-checks-ansi-red-bright: #ffb1af;--color-checks-ansi-green: #26cd4d;--color-checks-ansi-green-bright: #4ae168;--color-checks-ansi-yellow: #f0b72f;--color-checks-ansi-yellow-bright: #f7c843;--color-checks-ansi-blue: #71b7ff;--color-checks-ansi-blue-bright: #91cbff;--color-checks-ansi-magenta: #cb9eff;--color-checks-ansi-magenta-bright: #dbb7ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0a0c10;--color-project-sidebar-bg: #272b33;--color-project-gradient-in: #272b33;--color-project-gradient-out: rgba(39,43,51,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(255,255,255,0.1);--color-avatar-border: rgba(255,255,255,0.9);--color-avatar-stack-fade: #525964;--color-avatar-stack-fade-more: #272b33;--color-avatar-child-shadow: -2px -2px 0 #0a0c10;--color-topic-tag-border: #409eff;--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #7a828e;--color-select-menu-tap-highlight: rgba(82,89,100,0.5);--color-select-menu-tap-focus-bg: #1e60d5;--color-overlay-shadow: 0 0 0 1px #525964, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #272b33;--color-header-divider: #bdc4cc;--color-header-logo: #ffffff;--color-header-search-bg: #0a0c10;--color-header-search-border: #525964;--color-sidenav-selected-bg: #272b33;--color-menu-bg-active: #272b33;--color-input-disabled-bg: rgba(158,167,179,0);--color-timeline-badge-bg: #272b33;--color-ansi-black: #7a828e;--color-ansi-black-bright: #9ea7b3;--color-ansi-white: #d9dee3;--color-ansi-white-bright: #ffffff;--color-ansi-gray: #9ea7b3;--color-ansi-red: #ff9492;--color-ansi-red-bright: #ffb1af;--color-ansi-green: #26cd4d;--color-ansi-green-bright: #4ae168;--color-ansi-yellow: #f0b72f;--color-ansi-yellow-bright: #f7c843;--color-ansi-blue: #71b7ff;--color-ansi-blue-bright: #91cbff;--color-ansi-magenta: #cb9eff;--color-ansi-magenta-bright: #dbb7ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #f0f3f6;--color-btn-bg: #272b33;--color-btn-border: #7a828e;--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #525964;--color-btn-hover-border: #bdc4cc;--color-btn-active-bg: hsla(217,10%,33%,1);--color-btn-active-border: #9ea7b3;--color-btn-selected-bg: rgba(82,89,100,0.9);--color-btn-focus-bg: #272b33;--color-btn-focus-border: #bdc4cc;--color-btn-focus-shadow: 0 0 0 3px rgba(189,196,204,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(64,158,255,0.3);--color-btn-counter-bg: #525964;--color-btn-primary-text: #0a0c10;--color-btn-primary-bg: #09b43a;--color-btn-primary-border: #4ae168;--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #26cd4d;--color-btn-primary-hover-border: #4ae168;--color-btn-primary-selected-bg: #09b43a;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(10,12,16,0.5);--color-btn-primary-disabled-bg: rgba(9,180,58,0.6);--color-btn-primary-disabled-border: rgba(74,225,104,0.4);--color-btn-primary-focus-bg: #09b43a;--color-btn-primary-focus-border: #7a828e;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #0a0c10;--color-btn-primary-counter-bg: rgba(1,4,9,0.15);--color-btn-outline-text: #71b7ff;--color-btn-outline-hover-text: #71b7ff;--color-btn-outline-hover-bg: #525964;--color-btn-outline-hover-border: #7a828e;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #2672f3;--color-btn-outline-selected-border: #7a828e;--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(113,183,255,0.5);--color-btn-outline-disabled-bg: #0a0c10;--color-btn-outline-disabled-counter-bg: rgba(64,158,255,0.05);--color-btn-outline-focus-border: #7a828e;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(49,139,248,0.4);--color-btn-outline-counter-bg: rgba(64,158,255,0.1);--color-btn-danger-text: #ff6a69;--color-btn-danger-hover-text: #0a0c10;--color-btn-danger-hover-bg: #ff6a69;--color-btn-danger-hover-border: #ff6a69;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #0a0c10;--color-btn-danger-hover-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ff4445;--color-btn-danger-selected-border: #ff9492;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(255,106,105,0.5);--color-btn-danger-disabled-bg: #0a0c10;--color-btn-danger-disabled-counter-bg: rgba(255,106,105,0.05);--color-btn-danger-focus-border: #ff6a69;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(255,106,105,0.4);--color-btn-danger-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-icon: #ff6a69;--color-underlinenav-icon: #f0f3f6;--color-underlinenav-border-hover: #bdc4cc;--color-action-list-item-inline-divider: #7a828e;--color-action-list-item-default-hover-bg: #272b33;--color-action-list-item-default-hover-border: #7a828e;--color-action-list-item-default-active-bg: #525964;--color-action-list-item-default-active-border: #9ea7b3;--color-action-list-item-default-selected-bg: #525964;--color-action-list-item-danger-hover-bg: #ff6a69;--color-action-list-item-danger-active-bg: #ff4445;--color-action-list-item-danger-hover-text: #0a0c10;--color-fg-default: #f0f3f6;--color-fg-muted: #f0f3f6;--color-fg-subtle: #7a828e;--color-fg-on-emphasis: #0a0c10;--color-canvas-default: #0a0c10;--color-canvas-overlay: #272b33;--color-canvas-inset: #010409;--color-canvas-subtle: #272b33;--color-border-default: #7a828e;--color-border-muted: #7a828e;--color-border-subtle: #7a828e;--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #ffffff;--color-neutral-emphasis: #9ea7b3;--color-neutral-muted: rgba(158,167,179,0.4);--color-neutral-subtle: rgba(158,167,179,0.1);--color-accent-fg: #71b7ff;--color-accent-emphasis: #409eff;--color-accent-muted: #409eff;--color-accent-subtle: rgba(64,158,255,0.15);--color-success-fg: #26cd4d;--color-success-emphasis: #09b43a;--color-success-muted: #09b43a;--color-success-subtle: rgba(9,180,58,0.15);--color-attention-fg: #f0b72f;--color-attention-emphasis: #e09b13;--color-attention-muted: #e09b13;--color-attention-subtle: rgba(224,155,19,0.15);--color-severe-fg: #e7811d;--color-severe-emphasis: #e7811d;--color-severe-muted: #e7811d;--color-severe-subtle: rgba(231,129,29,0.15);--color-danger-fg: #ff6a69;--color-danger-emphasis: #ff6a69;--color-danger-muted: #ff6a69;--color-danger-subtle: rgba(255,106,105,0.15);--color-done-fg: #b780ff;--color-done-emphasis: #b87fff;--color-done-muted: #b780ff;--color-done-subtle: rgba(183,128,255,0.15);--color-sponsors-fg: #ef6eb1;--color-sponsors-emphasis: #ef6eb1;--color-sponsors-muted: #ef6eb1;--color-sponsors-subtle: rgba(239,110,177,0.15);--color-primer-fg-disabled: #7a828e;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(10,12,16,0.95);--color-primer-border-active: #FF967D;--color-primer-border-contrast: rgba(255,255,255,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #1e60d5;--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #ffffff;--color-scale-gray-1: #f0f3f6;--color-scale-gray-2: #d9dee3;--color-scale-gray-3: #bdc4cc;--color-scale-gray-4: #9ea7b3;--color-scale-gray-5: #7a828e;--color-scale-gray-6: #525964;--color-scale-gray-7: #272b33;--color-scale-gray-8: #272b33;--color-scale-gray-9: #0a0c10;--color-scale-blue-0: #caeaff;--color-scale-blue-1: #addcff;--color-scale-blue-2: #91cbff;--color-scale-blue-3: #71b7ff;--color-scale-blue-4: #409eff;--color-scale-blue-5: #409eff;--color-scale-blue-6: #318bf8;--color-scale-blue-7: #2672f3;--color-scale-blue-8: #1e60d5;--color-scale-blue-9: #194fb1;--color-scale-green-0: #acf7b6;--color-scale-green-1: #72f088;--color-scale-green-2: #4ae168;--color-scale-green-3: #26cd4d;--color-scale-green-4: #09b43a;--color-scale-green-5: #09b43a;--color-scale-green-6: #02a232;--color-scale-green-7: #008c2c;--color-scale-green-8: #007728;--color-scale-green-9: #006222;--color-scale-yellow-0: #fbe59e;--color-scale-yellow-1: #fbd669;--color-scale-yellow-2: #f7c843;--color-scale-yellow-3: #f0b72f;--color-scale-yellow-4: #e09b13;--color-scale-yellow-5: #e09b13;--color-scale-yellow-6: #c88508;--color-scale-yellow-7: #ae7104;--color-scale-yellow-8: #945d02;--color-scale-yellow-9: #7b4900;--color-scale-orange-0: #ffe1b4;--color-scale-orange-1: #ffcf86;--color-scale-orange-2: #ffb757;--color-scale-orange-3: #fe9a2d;--color-scale-orange-4: #e7811d;--color-scale-orange-5: #e7811d;--color-scale-orange-6: #d57014;--color-scale-orange-7: #bf5e0a;--color-scale-orange-8: #a74c00;--color-scale-orange-9: #8f3c00;--color-scale-red-0: #ffdedb;--color-scale-red-1: #ffc9c7;--color-scale-red-2: #ffb1af;--color-scale-red-3: #ff9492;--color-scale-red-4: #ff6a69;--color-scale-red-5: #ff6a69;--color-scale-red-6: #ff4445;--color-scale-red-7: #e82a2f;--color-scale-red-8: #cc1421;--color-scale-red-9: #ad0116;--color-scale-purple-0: #f0dfff;--color-scale-purple-1: #e6ccff;--color-scale-purple-2: #dbb7ff;--color-scale-purple-3: #cb9eff;--color-scale-purple-4: #b780ff;--color-scale-purple-5: #b87fff;--color-scale-purple-6: #a66bff;--color-scale-purple-7: #954ffd;--color-scale-purple-8: #8031f7;--color-scale-purple-9: #6921d7;--color-scale-pink-0: #ffdceb;--color-scale-pink-1: #ffc7e1;--color-scale-pink-2: #ffadd4;--color-scale-pink-3: #ff8dc7;--color-scale-pink-4: #ef6eb1;--color-scale-pink-5: #ef6eb1;--color-scale-pink-6: #e456a3;--color-scale-pink-7: #d23d91;--color-scale-pink-8: #b72c7d;--color-scale-pink-9: #9c1d6a;--color-scale-coral-0: #FFDED4;--color-scale-coral-1: #FFCBB9;--color-scale-coral-2: #FFB39B;--color-scale-coral-3: #FF967D;--color-scale-coral-4: #FC704F;--color-scale-coral-5: #FC704F;--color-scale-coral-6: #F75133;--color-scale-coral-7: #E03B21;--color-scale-coral-8: #C62612;--color-scale-coral-9: #A91500}}@media(prefers-color-scheme: dark){[data-color-mode=auto][data-dark-theme=dark_high_contrast]{--color-canvas-default-transparent: rgba(10,12,16,0);--color-page-header-bg: #0a0c10;--color-marketing-icon-primary: #91cbff;--color-marketing-icon-secondary: #409eff;--color-diff-blob-addition-num-text: #f0f3f6;--color-diff-blob-addition-fg: #0a0c10;--color-diff-blob-addition-num-bg: rgba(38,205,77,0.3);--color-diff-blob-addition-line-bg: rgba(9,180,58,0.15);--color-diff-blob-addition-word-bg: #09b43a;--color-diff-blob-deletion-num-text: #f0f3f6;--color-diff-blob-deletion-fg: #0a0c10;--color-diff-blob-deletion-num-bg: rgba(255,106,105,0.3);--color-diff-blob-deletion-line-bg: rgba(255,106,105,0.15);--color-diff-blob-deletion-word-bg: #ff6a69;--color-diff-blob-hunk-num-bg: rgba(64,158,255,0.4);--color-diff-blob-expander-icon: #f0f3f6;--color-diff-blob-selected-line-highlight-mix-blend-mode: screen;--color-diffstat-deletion-border: #ffb1af;--color-diffstat-addition-border: #4ae168;--color-diffstat-addition-bg: #26cd4d;--color-search-keyword-hl: rgba(240,183,47,0.4);--color-prettylights-syntax-comment: #bdc4cc;--color-prettylights-syntax-constant: #91cbff;--color-prettylights-syntax-entity: #dbb7ff;--color-prettylights-syntax-storage-modifier-import: #f0f3f6;--color-prettylights-syntax-entity-tag: #72f088;--color-prettylights-syntax-keyword: #ff9492;--color-prettylights-syntax-string: #addcff;--color-prettylights-syntax-variable: #ffb757;--color-prettylights-syntax-brackethighlighter-unmatched: #ff6a69;--color-prettylights-syntax-invalid-illegal-text: #ffffff;--color-prettylights-syntax-invalid-illegal-bg: #e82a2f;--color-prettylights-syntax-carriage-return-text: #ffffff;--color-prettylights-syntax-carriage-return-bg: #ff4445;--color-prettylights-syntax-string-regexp: #72f088;--color-prettylights-syntax-markup-list: #fbd669;--color-prettylights-syntax-markup-heading: #409eff;--color-prettylights-syntax-markup-italic: #f0f3f6;--color-prettylights-syntax-markup-bold: #f0f3f6;--color-prettylights-syntax-markup-deleted-text: #ffdedb;--color-prettylights-syntax-markup-deleted-bg: #cc1421;--color-prettylights-syntax-markup-inserted-text: #acf7b6;--color-prettylights-syntax-markup-inserted-bg: #007728;--color-prettylights-syntax-markup-changed-text: #ffe1b4;--color-prettylights-syntax-markup-changed-bg: #a74c00;--color-prettylights-syntax-markup-ignored-text: #f0f3f6;--color-prettylights-syntax-markup-ignored-bg: #318bf8;--color-prettylights-syntax-meta-diff-range: #dbb7ff;--color-prettylights-syntax-brackethighlighter-angle: #bdc4cc;--color-prettylights-syntax-sublimelinter-gutter-mark: #7a828e;--color-prettylights-syntax-constant-other-reference-link: #addcff;--color-codemirror-text: #f0f3f6;--color-codemirror-bg: #0a0c10;--color-codemirror-gutters-bg: #0a0c10;--color-codemirror-guttermarker-text: #0a0c10;--color-codemirror-guttermarker-subtle-text: #7a828e;--color-codemirror-linenumber-text: #f0f3f6;--color-codemirror-cursor: #f0f3f6;--color-codemirror-selection-bg: rgba(64,158,255,0.4);--color-codemirror-activeline-bg: rgba(158,167,179,0.1);--color-codemirror-matchingbracket-text: #f0f3f6;--color-codemirror-lines-bg: #0a0c10;--color-codemirror-syntax-comment: #bdc4cc;--color-codemirror-syntax-constant: #91cbff;--color-codemirror-syntax-entity: #dbb7ff;--color-codemirror-syntax-keyword: #ff9492;--color-codemirror-syntax-storage: #ff9492;--color-codemirror-syntax-string: #addcff;--color-codemirror-syntax-support: #91cbff;--color-codemirror-syntax-variable: #ffb757;--color-checks-bg: #010409;--color-checks-run-border-width: 1px;--color-checks-container-border-width: 1px;--color-checks-text-primary: #f0f3f6;--color-checks-text-secondary: #f0f3f6;--color-checks-text-link: #71b7ff;--color-checks-btn-icon: #f0f3f6;--color-checks-btn-hover-icon: #f0f3f6;--color-checks-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-input-text: #f0f3f6;--color-checks-input-placeholder-text: #7a828e;--color-checks-input-focus-text: #f0f3f6;--color-checks-input-bg: #272b33;--color-checks-input-shadow: 0 0 0 1px (obj) => get_1.default(obj, path);--color-checks-donut-error: #ff6a69;--color-checks-donut-pending: #f0b72f;--color-checks-donut-success: #09b43a;--color-checks-donut-neutral: #bdc4cc;--color-checks-dropdown-text: #f0f3f6;--color-checks-dropdown-bg: #272b33;--color-checks-dropdown-border: #7a828e;--color-checks-dropdown-shadow: rgba(1,4,9,0.3);--color-checks-dropdown-hover-text: #f0f3f6;--color-checks-dropdown-hover-bg: rgba(158,167,179,0.1);--color-checks-dropdown-btn-hover-text: #f0f3f6;--color-checks-dropdown-btn-hover-bg: rgba(158,167,179,0.1);--color-checks-scrollbar-thumb-bg: rgba(158,167,179,0.4);--color-checks-header-label-text: #f0f3f6;--color-checks-header-label-open-text: #f0f3f6;--color-checks-header-border: #7a828e;--color-checks-header-icon: #f0f3f6;--color-checks-line-text: #f0f3f6;--color-checks-line-num-text: #7a828e;--color-checks-line-timestamp-text: #7a828e;--color-checks-line-hover-bg: rgba(158,167,179,0.1);--color-checks-line-selected-bg: rgba(64,158,255,0.15);--color-checks-line-selected-num-text: #71b7ff;--color-checks-line-dt-fm-text: #0a0c10;--color-checks-line-dt-fm-bg: #e09b13;--color-checks-gate-bg: rgba(224,155,19,0.15);--color-checks-gate-text: #f0f3f6;--color-checks-gate-waiting-text: #f0b72f;--color-checks-step-header-open-bg: #272b33;--color-checks-step-error-text: #ff6a69;--color-checks-step-warning-text: #f0b72f;--color-checks-logline-text: #f0f3f6;--color-checks-logline-num-text: #7a828e;--color-checks-logline-debug-text: #b780ff;--color-checks-logline-error-text: #f0f3f6;--color-checks-logline-error-num-text: #7a828e;--color-checks-logline-error-bg: rgba(255,106,105,0.15);--color-checks-logline-warning-text: #f0f3f6;--color-checks-logline-warning-num-text: #f0b72f;--color-checks-logline-warning-bg: rgba(224,155,19,0.15);--color-checks-logline-command-text: #71b7ff;--color-checks-logline-section-text: #26cd4d;--color-checks-ansi-black: #0a0c10;--color-checks-ansi-black-bright: #272b33;--color-checks-ansi-white: #d9dee3;--color-checks-ansi-white-bright: #d9dee3;--color-checks-ansi-gray: #9ea7b3;--color-checks-ansi-red: #ff9492;--color-checks-ansi-red-bright: #ffb1af;--color-checks-ansi-green: #26cd4d;--color-checks-ansi-green-bright: #4ae168;--color-checks-ansi-yellow: #f0b72f;--color-checks-ansi-yellow-bright: #f7c843;--color-checks-ansi-blue: #71b7ff;--color-checks-ansi-blue-bright: #91cbff;--color-checks-ansi-magenta: #cb9eff;--color-checks-ansi-magenta-bright: #dbb7ff;--color-checks-ansi-cyan: #76e3ea;--color-checks-ansi-cyan-bright: #b3f0ff;--color-project-header-bg: #0a0c10;--color-project-sidebar-bg: #272b33;--color-project-gradient-in: #272b33;--color-project-gradient-out: rgba(39,43,51,0);--color-mktg-btn-bg: #f6f8fa;--color-mktg-btn-shadow-outline: rgb(255 255 255 / 25%) 0 0 0 1px inset;--color-mktg-btn-shadow-focus: rgb(255 255 255 / 25%) 0 0 0 4px;--color-mktg-btn-shadow-hover: 0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07);--color-mktg-btn-shadow-hover-muted: rgb(255 255 255) 0 0 0 2px inset;--color-avatar-bg: rgba(255,255,255,0.1);--color-avatar-border: rgba(255,255,255,0.9);--color-avatar-stack-fade: #525964;--color-avatar-stack-fade-more: #272b33;--color-avatar-child-shadow: -2px -2px 0 #0a0c10;--color-topic-tag-border: #409eff;--color-counter-border: rgba(0,0,0,0);--color-select-menu-backdrop-border: #7a828e;--color-select-menu-tap-highlight: rgba(82,89,100,0.5);--color-select-menu-tap-focus-bg: #1e60d5;--color-overlay-shadow: 0 0 0 1px #525964, 0 16px 32px rgba(1,4,9,0.85);--color-header-text: rgba(255,255,255,0.7);--color-header-bg: #272b33;--color-header-divider: #bdc4cc;--color-header-logo: #ffffff;--color-header-search-bg: #0a0c10;--color-header-search-border: #525964;--color-sidenav-selected-bg: #272b33;--color-menu-bg-active: #272b33;--color-input-disabled-bg: rgba(158,167,179,0);--color-timeline-badge-bg: #272b33;--color-ansi-black: #7a828e;--color-ansi-black-bright: #9ea7b3;--color-ansi-white: #d9dee3;--color-ansi-white-bright: #ffffff;--color-ansi-gray: #9ea7b3;--color-ansi-red: #ff9492;--color-ansi-red-bright: #ffb1af;--color-ansi-green: #26cd4d;--color-ansi-green-bright: #4ae168;--color-ansi-yellow: #f0b72f;--color-ansi-yellow-bright: #f7c843;--color-ansi-blue: #71b7ff;--color-ansi-blue-bright: #91cbff;--color-ansi-magenta: #cb9eff;--color-ansi-magenta-bright: #dbb7ff;--color-ansi-cyan: #39c5cf;--color-ansi-cyan-bright: #56d4dd;--color-btn-text: #f0f3f6;--color-btn-bg: #272b33;--color-btn-border: #7a828e;--color-btn-shadow: 0 0 transparent;--color-btn-inset-shadow: 0 0 transparent;--color-btn-hover-bg: #525964;--color-btn-hover-border: #bdc4cc;--color-btn-active-bg: hsla(217,10%,33%,1);--color-btn-active-border: #9ea7b3;--color-btn-selected-bg: rgba(82,89,100,0.9);--color-btn-focus-bg: #272b33;--color-btn-focus-border: #bdc4cc;--color-btn-focus-shadow: 0 0 0 3px rgba(189,196,204,0.3);--color-btn-shadow-active: inset 0 0.15em 0.3em rgba(1,4,9,0.15);--color-btn-shadow-input-focus: 0 0 0 0.2em rgba(64,158,255,0.3);--color-btn-counter-bg: #525964;--color-btn-primary-text: #0a0c10;--color-btn-primary-bg: #09b43a;--color-btn-primary-border: #4ae168;--color-btn-primary-shadow: 0 0 transparent;--color-btn-primary-inset-shadow: 0 0 transparent;--color-btn-primary-hover-bg: #26cd4d;--color-btn-primary-hover-border: #4ae168;--color-btn-primary-selected-bg: #09b43a;--color-btn-primary-selected-shadow: 0 0 transparent;--color-btn-primary-disabled-text: rgba(10,12,16,0.5);--color-btn-primary-disabled-bg: rgba(9,180,58,0.6);--color-btn-primary-disabled-border: rgba(74,225,104,0.4);--color-btn-primary-focus-bg: #09b43a;--color-btn-primary-focus-border: #7a828e;--color-btn-primary-focus-shadow: 0 0 0 3px rgba(46,164,79,0.4);--color-btn-primary-icon: #0a0c10;--color-btn-primary-counter-bg: rgba(1,4,9,0.15);--color-btn-outline-text: #71b7ff;--color-btn-outline-hover-text: #71b7ff;--color-btn-outline-hover-bg: #525964;--color-btn-outline-hover-border: #7a828e;--color-btn-outline-hover-shadow: 0 1px 0 rgba(1,4,9,0.1);--color-btn-outline-hover-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.03);--color-btn-outline-hover-counter-bg: rgba(255,255,255,0.2);--color-btn-outline-selected-text: #ffffff;--color-btn-outline-selected-bg: #2672f3;--color-btn-outline-selected-border: #7a828e;--color-btn-outline-selected-shadow: 0 0 transparent;--color-btn-outline-disabled-text: rgba(113,183,255,0.5);--color-btn-outline-disabled-bg: #0a0c10;--color-btn-outline-disabled-counter-bg: rgba(64,158,255,0.05);--color-btn-outline-focus-border: #7a828e;--color-btn-outline-focus-shadow: 0 0 0 3px rgba(49,139,248,0.4);--color-btn-outline-counter-bg: rgba(64,158,255,0.1);--color-btn-danger-text: #ff6a69;--color-btn-danger-hover-text: #0a0c10;--color-btn-danger-hover-bg: #ff6a69;--color-btn-danger-hover-border: #ff6a69;--color-btn-danger-hover-shadow: 0 0 transparent;--color-btn-danger-hover-inset-shadow: 0 0 transparent;--color-btn-danger-hover-icon: #0a0c10;--color-btn-danger-hover-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-selected-text: #ffffff;--color-btn-danger-selected-bg: #ff4445;--color-btn-danger-selected-border: #ff9492;--color-btn-danger-selected-shadow: 0 0 transparent;--color-btn-danger-disabled-text: rgba(255,106,105,0.5);--color-btn-danger-disabled-bg: #0a0c10;--color-btn-danger-disabled-counter-bg: rgba(255,106,105,0.05);--color-btn-danger-focus-border: #ff6a69;--color-btn-danger-focus-shadow: 0 0 0 3px rgba(255,106,105,0.4);--color-btn-danger-counter-bg: rgba(1,4,9,0.15);--color-btn-danger-icon: #ff6a69;--color-underlinenav-icon: #f0f3f6;--color-underlinenav-border-hover: #bdc4cc;--color-action-list-item-inline-divider: #7a828e;--color-action-list-item-default-hover-bg: #272b33;--color-action-list-item-default-hover-border: #7a828e;--color-action-list-item-default-active-bg: #525964;--color-action-list-item-default-active-border: #9ea7b3;--color-action-list-item-default-selected-bg: #525964;--color-action-list-item-danger-hover-bg: #ff6a69;--color-action-list-item-danger-active-bg: #ff4445;--color-action-list-item-danger-hover-text: #0a0c10;--color-fg-default: #f0f3f6;--color-fg-muted: #f0f3f6;--color-fg-subtle: #7a828e;--color-fg-on-emphasis: #0a0c10;--color-canvas-default: #0a0c10;--color-canvas-overlay: #272b33;--color-canvas-inset: #010409;--color-canvas-subtle: #272b33;--color-border-default: #7a828e;--color-border-muted: #7a828e;--color-border-subtle: #7a828e;--color-shadow-small: 0 0 transparent;--color-shadow-medium: 0 3px 6px #010409;--color-shadow-large: 0 8px 24px #010409;--color-shadow-extra-large: 0 12px 48px #010409;--color-neutral-emphasis-plus: #ffffff;--color-neutral-emphasis: #9ea7b3;--color-neutral-muted: rgba(158,167,179,0.4);--color-neutral-subtle: rgba(158,167,179,0.1);--color-accent-fg: #71b7ff;--color-accent-emphasis: #409eff;--color-accent-muted: #409eff;--color-accent-subtle: rgba(64,158,255,0.15);--color-success-fg: #26cd4d;--color-success-emphasis: #09b43a;--color-success-muted: #09b43a;--color-success-subtle: rgba(9,180,58,0.15);--color-attention-fg: #f0b72f;--color-attention-emphasis: #e09b13;--color-attention-muted: #e09b13;--color-attention-subtle: rgba(224,155,19,0.15);--color-severe-fg: #e7811d;--color-severe-emphasis: #e7811d;--color-severe-muted: #e7811d;--color-severe-subtle: rgba(231,129,29,0.15);--color-danger-fg: #ff6a69;--color-danger-emphasis: #ff6a69;--color-danger-muted: #ff6a69;--color-danger-subtle: rgba(255,106,105,0.15);--color-done-fg: #b780ff;--color-done-emphasis: #b87fff;--color-done-muted: #b780ff;--color-done-subtle: rgba(183,128,255,0.15);--color-sponsors-fg: #ef6eb1;--color-sponsors-emphasis: #ef6eb1;--color-sponsors-muted: #ef6eb1;--color-sponsors-subtle: rgba(239,110,177,0.15);--color-primer-fg-disabled: #7a828e;--color-primer-canvas-backdrop: rgba(1,4,9,0.8);--color-primer-canvas-sticky: rgba(10,12,16,0.95);--color-primer-border-active: #FF967D;--color-primer-border-contrast: rgba(255,255,255,0.2);--color-primer-shadow-highlight: 0 0 transparent;--color-primer-shadow-inset: 0 0 transparent;--color-primer-shadow-focus: 0 0 0 3px #1e60d5;--color-scale-black: #010409;--color-scale-white: #ffffff;--color-scale-gray-0: #ffffff;--color-scale-gray-1: #f0f3f6;--color-scale-gray-2: #d9dee3;--color-scale-gray-3: #bdc4cc;--color-scale-gray-4: #9ea7b3;--color-scale-gray-5: #7a828e;--color-scale-gray-6: #525964;--color-scale-gray-7: #272b33;--color-scale-gray-8: #272b33;--color-scale-gray-9: #0a0c10;--color-scale-blue-0: #caeaff;--color-scale-blue-1: #addcff;--color-scale-blue-2: #91cbff;--color-scale-blue-3: #71b7ff;--color-scale-blue-4: #409eff;--color-scale-blue-5: #409eff;--color-scale-blue-6: #318bf8;--color-scale-blue-7: #2672f3;--color-scale-blue-8: #1e60d5;--color-scale-blue-9: #194fb1;--color-scale-green-0: #acf7b6;--color-scale-green-1: #72f088;--color-scale-green-2: #4ae168;--color-scale-green-3: #26cd4d;--color-scale-green-4: #09b43a;--color-scale-green-5: #09b43a;--color-scale-green-6: #02a232;--color-scale-green-7: #008c2c;--color-scale-green-8: #007728;--color-scale-green-9: #006222;--color-scale-yellow-0: #fbe59e;--color-scale-yellow-1: #fbd669;--color-scale-yellow-2: #f7c843;--color-scale-yellow-3: #f0b72f;--color-scale-yellow-4: #e09b13;--color-scale-yellow-5: #e09b13;--color-scale-yellow-6: #c88508;--color-scale-yellow-7: #ae7104;--color-scale-yellow-8: #945d02;--color-scale-yellow-9: #7b4900;--color-scale-orange-0: #ffe1b4;--color-scale-orange-1: #ffcf86;--color-scale-orange-2: #ffb757;--color-scale-orange-3: #fe9a2d;--color-scale-orange-4: #e7811d;--color-scale-orange-5: #e7811d;--color-scale-orange-6: #d57014;--color-scale-orange-7: #bf5e0a;--color-scale-orange-8: #a74c00;--color-scale-orange-9: #8f3c00;--color-scale-red-0: #ffdedb;--color-scale-red-1: #ffc9c7;--color-scale-red-2: #ffb1af;--color-scale-red-3: #ff9492;--color-scale-red-4: #ff6a69;--color-scale-red-5: #ff6a69;--color-scale-red-6: #ff4445;--color-scale-red-7: #e82a2f;--color-scale-red-8: #cc1421;--color-scale-red-9: #ad0116;--color-scale-purple-0: #f0dfff;--color-scale-purple-1: #e6ccff;--color-scale-purple-2: #dbb7ff;--color-scale-purple-3: #cb9eff;--color-scale-purple-4: #b780ff;--color-scale-purple-5: #b87fff;--color-scale-purple-6: #a66bff;--color-scale-purple-7: #954ffd;--color-scale-purple-8: #8031f7;--color-scale-purple-9: #6921d7;--color-scale-pink-0: #ffdceb;--color-scale-pink-1: #ffc7e1;--color-scale-pink-2: #ffadd4;--color-scale-pink-3: #ff8dc7;--color-scale-pink-4: #ef6eb1;--color-scale-pink-5: #ef6eb1;--color-scale-pink-6: #e456a3;--color-scale-pink-7: #d23d91;--color-scale-pink-8: #b72c7d;--color-scale-pink-9: #9c1d6a;--color-scale-coral-0: #FFDED4;--color-scale-coral-1: #FFCBB9;--color-scale-coral-2: #FFB39B;--color-scale-coral-3: #FF967D;--color-scale-coral-4: #FC704F;--color-scale-coral-5: #FC704F;--color-scale-coral-6: #F75133;--color-scale-coral-7: #E03B21;--color-scale-coral-8: #C62612;--color-scale-coral-9: #A91500}}
|
|
|
|
/*# sourceMappingURL=dark_high_contrast-5b35cb08c43e38a4f65ad99ef095914316d1ebc83c9cf2e771ceb30cab9cc16d5347f18ceb1a642f0f1486733352fdca163716cf9334218e270aa3a519d537fc.css.map*/
|
|
:root{--border-width: 1px;--border-style: solid;--font-size-small: 12px;--font-weight-semibold: 500;--size-2: 20px}.min-height-full{min-height:100vh !important}.marketing-section{position:relative;padding-top:80px;padding-bottom:80px;font-size:16px;line-height:1.5;text-align:center;border-bottom:1px solid var(--color-border-default)}.marketing-section::before{display:table;content:""}.marketing-section::after{display:table;clear:both;content:""}.marketing-section h3{font-size:21px;font-weight:400}.marketing-hero-octicon{position:relative;width:100px;height:100px;margin:0 auto 16px;text-align:center;border:solid 1px var(--color-border-default);border-radius:50px}.marketing-hero-octicon .octicon{margin-top:24px;color:var(--color-accent-fg)}.marketing-hero-octicon .octicon-checklist{position:relative;right:-3px}.hanging-icon-list{list-style-type:none}.hanging-icon-list li{padding-left:24px;margin:8px 0;font-size:14px}.hanging-icon-list .octicon{float:left;margin-top:4px;margin-left:-24px;color:var(--color-fg-muted)}.hanging-icon-list .octicon-check{color:var(--color-success-fg)}.hanging-icon-list .octicon-x{color:var(--color-danger-fg)}.integrations-hero-octicon.marketing-hero-octicon{width:75px;height:75px;border-width:5px}.integrations-hero-octicon.marketing-hero-octicon .octicon{margin-top:16px}.marketing-blue-octicon{color:#34acbf;border-color:#34acbf}.marketing-blue-octicon .octicon{color:#34acbf}.marketing-turquoise-octicon{color:#75bbb6;border-color:#75bbb6}.marketing-turquoise-octicon .octicon{color:#75bbb6}.marketing-purple-octicon{color:#b086b7;border-color:#b086b7}.marketing-purple-octicon .octicon{color:#b086b7}.marketing-graphic{position:relative}.intgrs-dir .marketing-graphic{padding-right:0;margin:0}.intgrs-dir .footer{margin-top:40px}.intgrs-dir-section h2{margin-top:0;margin-bottom:16px;font-size:26px;font-weight:300}.intgrs-dir-intro{padding:40px 0;margin:0;text-align:left;background-image:linear-gradient(-110deg, #48227d 0%, #2f569c 100%);border-bottom:0}.pagehead+.intgrs-dir-intro{margin-top:-16px}.intgrs-dir-intro .directory-header-back{margin-top:8px;font-size:18px;color:#fff}.intgrs-dir-intro .directory-header-back:hover{color:#d7def1;text-decoration:none}.intgrs-dir-intro .directory-header-back .octicon{vertical-align:middle}.intgrs-dir-intro .directory-header-back .header-link{color:var(--color-accent-fg)}.intgrs-dir-intro .directory-tag-line{margin-bottom:0;font-size:28px;font-weight:400;color:#fff}.intgrs-dir-intro .lead{margin-top:8px;margin-bottom:4px;font-size:18px;font-weight:400;color:#d7def1}.intgrs-lstng-search{display:inline-block;width:33%;margin-left:16px}.intgrs-lstng-search .subnav-search-input{width:100%}.intgrs-lstng-categories-container{display:inline-block;float:left;width:20%}.intgrs-lstng-categories-container .intgrs-lstng-categories{top:0}.intgrs-lstng-categories-container .filter-item{padding:4px 8px;margin-right:-8px;margin-left:-8px}.intgrs-lstng-container{display:inline-block;width:80%;text-align:left}.intgrs-lstng-item{position:relative;display:inline-flex;width:30.8%;font-size:14px;border:1px solid var(--color-border-muted);border-radius:4px;transition:border-color .15s ease 0s,transform .15s ease 0s,box-shadow .15s ease 0s,color .15s ease 0s}.intgrs-lstng-item:hover{border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,.5);transform:scale(1.05)}.intgrs-lstng-item .intgrs-lstng-logo{display:block;margin:0 auto 8px}.intgrs-lstng-item .draft-tag{position:absolute;top:-1px;left:10px}.intgrs-lstng-item-link{display:block;width:100%;height:181px;padding-top:16px}.intgrs-lstng-item-link:hover{text-decoration:none}.intgrs-lstng-item-link:hover .intgrs-lstng-item-header{color:var(--color-accent-fg)}.intgrs-lstng-item-header{margin:16px 8px 0;font-size:14px;font-weight:600;color:var(--color-fg-default)}.intgrs-lstng-item-description{position:relative;height:2.8em;padding:0 8px;margin-top:4px;overflow:hidden;font-size:13px;color:var(--color-fg-muted)}.intgrs-lstng-item-description::after{position:absolute;right:0;bottom:0;padding:0 16px 0 16px;color:transparent;content:"Â ";background-image:linear-gradient(to right, rgba(255, 255, 255, 0), #fff 80%)}.intgr-admin-link{position:relative;display:inline-block;height:25px;padding-left:24px;font-size:13px;vertical-align:middle;border:1px solid var(--color-border-muted);border-radius:6px}.intgr-admin-link.draft-tag{padding-left:24px;border:0}.intgr-admin-link.draft-tag .octicon,.intgr-admin-link.draft-tag:hover .octicon{color:#fff}.intgr-admin-link.draft-tag:hover{text-decoration:none;background-color:#000}.intgr-admin-link:hover .octicon{color:var(--color-accent-fg)}.intgr-admin-link .octicon{position:absolute;top:3px;left:5px;color:var(--color-fg-muted)}.intgr-feat-header{position:relative;width:85%;padding:0 65px 8px;color:#d7def1}.intgr-feat-header .intgr-admin-link{border-color:rgba(215,222,241,.6)}.intgr-feat-header .intgr-admin-link .octicon{color:#d7def1}.intgr-feat-header .intgr-admin-link:hover .octicon{color:#fff}.intgr-feat-header .marketing-hero-octicon{position:absolute;top:0;left:5px;width:50px;height:50px;border-width:3px}.intgr-feat-header .marketing-hero-octicon .octicon{margin-top:12px}.intgr-feat-header h2{margin:0;font-size:25px;line-height:50px;color:#fff}.intgr-feat-header p{max-width:580px;margin:0;font-size:18px}.integrations-breadcrumb{display:inline-block;font-weight:400;color:var(--color-accent-fg)}.integrations-breadcrumb-link{line-height:0;color:#d7def1}.integrations-breadcrumb-link:hover{color:#fff;text-decoration:none}.integrations-auth-wrapper{width:511px;margin:60px auto}.integrations-auth-header{font-size:20px;text-align:center}.integrations-permissions-group dt{font-size:18px;font-weight:400}.integrations-permissions-group .integrations-permission{position:relative;padding-left:24px;margin-bottom:8px;list-style-type:none}.integrations-permissions-group .integrations-permission .octicon{position:absolute;top:1px;left:0;margin-right:8px}.integrations-install-target .select-menu{vertical-align:middle}.integrations-install-target input[type=radio]{margin-right:8px}.integrations-install-target .flash{background-color:transparent}.integrations-install-target .flash-error{background-color:transparent;border:0}.integrations-install-target .octicon-lock,.integrations-install-target .octicon-repo{margin-right:4px}.integrations-install-target .octicon-lock{color:var(--color-attention-fg)}.integrations-install-target .private{background-color:#fff9ea}.integrations-install-target [aria-selected=true].private,.integrations-install-target .navigation-focus.private{background-color:#4078c0}.integrations-install-target [aria-selected=true].octicon-lock,.integrations-install-target .navigation-focus .octicon-lock{color:inherit}.integrations-setup-note{margin:8px 0}.listgroup-item{line-height:inherit}.listgroup-item.disabled{background-color:var(--color-canvas-subtle)}.listgroup-item.disabled .listgroup-item-title{color:var(--color-fg-default)}.integration-key-management-wrapper .integration-key-downloading{display:none}.integration-key-management-wrapper .integration-key-list{display:none}.integration-key-management-wrapper .flash-error{display:none}.integration-key-management-wrapper .blankslate{margin-bottom:32px}.integration-key-management-wrapper .action .deletable{display:none}.integration-key-management-wrapper .action .undeletable{display:block}.integration-key-management-wrapper.multi-keys .action .deletable{display:block}.integration-key-management-wrapper.multi-keys .action .undeletable{display:none}.integration-key-management-wrapper.error .flash-error{display:block}.integration-key-management-wrapper.error .integration-key{opacity:.5}.integration-key-management-wrapper.error .action .deletable{display:none}.integration-key-management-wrapper.error .action .undeletable{display:block}.integration-key-management-wrapper.downloading .blankslate{display:none}.integration-key-management-wrapper.downloading .integration-key-downloading{display:block}.integration-key-management-wrapper.downloading .integration-key-list{display:block}.integration-key-management-wrapper.has-keys .blankslate{display:none}.integration-key-management-wrapper.has-keys .integration-key-list{display:block}.link-small{color:var(--color-fg-muted);transition:color 500ms ease}.listgroup-item:hover .link-small{color:var(--color-accent-fg)}.manifest-errors{border-left:6px solid var(--color-danger-emphasis);border-radius:0 6px 6px 0}.sub-permissions-error{max-width:unset !important}.not-found-octocat-wrapper{width:71px;height:71px;border-radius:45px}.not-found-octocat-wrapper::after{position:absolute;top:58px;left:45px;z-index:-2;display:block;width:4px;height:4px;vertical-align:baseline;content:"";background:var(--color-canvas-default);border-radius:4px;box-shadow:0 4px 0 #fff,0 8px 0 #fff,0 12px 0 #fff,0 16px 0 #fff,0 20px 0 #fff;animation-name:pull-string;animation-duration:.75s;animation-fill-mode:forwards;animation-delay:.5s}@keyframes lightbulb{0%,8%,14%{opacity:.1}0%,10%,25%{opacity:.25}5%,30%,50%,70%{opacity:.5}16%,60%,80%{opacity:.75}90%{opacity:.8}94%{opacity:.5}100%{opacity:1;stddeviation:0}}.not-found-lightbulb-ani{z-index:1;opacity:.25;animation-name:lightbulb;animation-duration:2.5s;animation-fill-mode:forwards;animation-delay:1.3s}@keyframes pull-string{50%{transform:translate3d(0, 12px, 0)}75%{opacity:1;transform:none}100%{opacity:0}}.billing-plans tbody td{width:25%;vertical-align:middle}.billing-plans .current{background-color:#f2ffed}.billing-plans .name{font-size:14px;font-weight:600;color:var(--color-fg-default)}.billing-plans .coupon{font-size:12px}.billing-plans .coupon td{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis)}.billing-plans .coupon .text-right{white-space:nowrap}.billing-plans .coupon.expiring td{background-color:#df6e00}.billing-plans .coupon.expiring .coupon-label::after{border-bottom-color:#df6e00}.billing-plans tbody>.selected{background-color:#fdffce}.coupon-label{position:relative;padding:8px;margin:-8px}.coupon-label::after{position:absolute;bottom:100%;left:15px;width:0;height:0;pointer-events:none;content:" ";border:solid transparent;border-width:5px;border-bottom-color:var(--color-success-emphasis)}.boxed-group-table .toggle-currency{font-size:11px;font-weight:400}.has-removed-contents{display:none}.currency-notice{margin-bottom:8px}.org-login{margin-top:-32px;margin-bottom:32px}.org-login img{width:450px;padding:1px;margin:8px -24px;border:1px solid var(--color-border-default)}.plan-notice{padding:8px;margin-bottom:0;border-top:1px solid var(--color-border-muted)}.workflow-dispatch .loading-overlay{display:none !important}.workflow-dispatch .is-loading .loading-overlay{display:flex !important}.workflow-dispatch .is-loading .branch-selection{display:none}.member-list-item .member-username{display:inline}.member-list-item .member-link{display:inline}.actor-and-action{font-weight:600}.vertical-separator{margin-right:8px;margin-left:4px;border-left:1px solid var(--color-border-default)}.audit-log-search .audit-search-form{margin-bottom:8px}.audit-log-search .audit-results-actions{margin:16px 0}.audit-log-search .audit-search-clear{margin-bottom:0}.billing-addon-items table input{width:5em}.billing-addon-items td{vertical-align:middle;border-bottom:0}.billing-addon-items td.fixed{width:150px}.billing-addon-items td.black{color:var(--color-fg-default)}.billing-addon-items tr{border-bottom:1px solid var(--color-border-muted)}.billing-addon-items tr:last-child{border-bottom-width:0}.billing-addon-items tr:nth-child(even){background-color:var(--color-canvas-subtle)}.billing-addon-items tr.total-row{color:var(--color-danger-fg);background-color:var(--color-canvas-default)}.billing-addon-items .new-addon-items{margin-left:4px}.billing-addon-items .addon-cost{color:var(--color-fg-muted)}.billing-addon-items .discounted-original-price{color:var(--color-fg-muted)}.billing-addon-items .form-submit,.billing-addon-items .payment-method{margin-left:8px}.billing-addon-items .payment-summary{margin-right:8px;margin-left:8px}.billing-credit-card .javascript-disabled-overlay{position:absolute;top:0;left:0;z-index:1;display:none;width:100%;height:100%;background-color:var(--color-canvas-default);opacity:.5}.billing-credit-card.disabled .javascript-disabled-overlay{display:block}.billing-extra-box{padding-left:8px;margin:8px 0;border-left:6px solid var(--color-border-muted)}.billing-vat-box{padding-left:8px;margin:8px 0;border-left:6px solid var(--color-border-muted)}.billing-section .action-button{float:right;margin-bottom:4px;margin-left:8px}.billing-section .section-label{position:absolute;width:85px;font-weight:400;color:var(--color-fg-muted);text-align:right}.billing-section .section-content{margin-left:100px;color:var(--color-fg-default)}.billing-section:last-child{border-bottom:0}.billing-section .usage-bar{max-width:304px}.usage-bar{width:100%;margin:4px 0 0;background:#eee;border-radius:20px}.usage-bar.exceeded .progress{background-color:var(--color-danger-emphasis) !important}.usage-bar .progress{position:relative;max-width:100%;height:5px;background-color:var(--color-success-emphasis);border-radius:20px;transition:width .3s}.usage-bar .progress.no-highlight{background:var(--color-neutral-muted)}.usage-bar .progress--orange{background-color:var(--color-severe-emphasis)}.usage-bar .progress--purple{background-color:var(--color-done-emphasis)}.lfs-data-pack-field{margin:-4px 0}.packs-table .desc{width:1%;white-space:nowrap}.lfs-data-icon{color:var(--color-fg-muted);text-align:center}.lfs-data-icon.dark{color:var(--color-fg-default)}.lfs-data-icon.octicon-database{margin-right:4px;margin-left:2px}.setup-wrapper .paypal-container{margin-bottom:32px}.setup-wrapper .paypal-logged-in .paypal-container{margin-bottom:8px}.payment-methods{position:relative}.payment-methods .selected-payment-method{display:none}.payment-methods .selected-payment-method::before{display:table;content:""}.payment-methods .selected-payment-method::after{display:table;clear:both;content:""}.payment-methods .selected-payment-method.active{display:block}.payment-methods .form-group dd .form-control.short.input-vat{width:300px}.payment-methods .pay-with-header{margin:4px 0}.payment-methods .pay-with-paypal .setup-creditcard-form,.payment-methods .pay-with-paypal .paypal-form-actions,.payment-methods .pay-with-paypal .terms,.payment-methods .pay-with-paypal .paypal-signed-in,.payment-methods .pay-with-paypal .paypal-down-flash,.payment-methods .pay-with-paypal .loading-paypal-spinner{display:none}.payment-methods.paypal-loading .loading-paypal-spinner{display:block}.payment-methods.paypal-down .paypal-down-flash{display:block}.payment-methods.paypal-logged-in .paypal-sign-in{display:none}.payment-methods.paypal-logged-in .setup-creditcard-form,.payment-methods.paypal-logged-in .paypal-form-actions,.payment-methods.paypal-logged-in .terms,.payment-methods.paypal-logged-in .paypal-signed-in{display:block}.payment-methods.has-paypal-account .paypal-sign-in{display:none}.payment-methods.has-paypal-account .paypal-signed-in{display:block}.paypal-label{margin:16px 0 8px;font-weight:600}.paypal-container{display:inline-block;margin-bottom:16px;vertical-align:top;background-color:var(--color-canvas-subtle);border-radius:4px}.braintree-paypal-loggedin{padding:12px 16px !important;background-position:12px 50% !important;border:1px solid var(--color-border-muted) !important;border-radius:4px}.bt-pp-name{margin-left:16px !important}.bt-pp-email{margin-left:16px !important}.bt-pp-cancel{font-size:0 !important;line-height:1 !important;color:var(--color-danger-fg) !important;text-decoration:none !important}.payment-history .id,.payment-history .date,.payment-history .receipt,.payment-history .status,.payment-history .amount{white-space:nowrap}.payment-history .break-all{word-break:break-all}.payment-history .receipt{text-align:center}.payment-history .currency,.payment-history .status{color:var(--color-fg-muted)}.payment-history .status-icon{width:14px;text-align:center}.payment-history .succeeded .status{color:var(--color-success-fg)}.payment-history .refunded,.payment-history .failed{background:var(--color-canvas-subtle)}.payment-history .refunded td,.payment-history .failed td{opacity:.5}.payment-history .refunded .receipt,.payment-history .refunded .status,.payment-history .failed .receipt,.payment-history .failed .status{opacity:1}.payment-history .refunded .status{color:var(--color-fg-muted)}.payment-history .failed .status{color:var(--color-danger-fg)}.paypal-icon{margin:0 2px 0 1px;vertical-align:middle}.currency-container .local-currency,.currency-container .local-currency-block{display:none}.currency-container.open .local-currency{display:inline}.currency-container.open .local-currency-block{display:block}.currency-container.open .default-currency{display:none}.strong-label{display:inline-block;margin-bottom:4px;font-weight:600}.discounted-original-price{font-weight:400;color:var(--color-fg-muted);text-decoration:line-through}.billing-manager-input{width:500px}.billing-manager-banner{padding:32px 16px;margin-bottom:32px;overflow:hidden;background:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.billing-manager-banner .container{position:relative}.billing-manager-banner-text{margin-left:210px;font-size:14px;color:var(--color-fg-muted)}.billing-manager-banner-text .btn{margin-top:8px;margin-right:8px}.billing-manager-banner-title{font-size:12px;font-weight:600;color:var(--color-fg-muted)}.billing-manager-icon{position:absolute;top:-35px;left:0;width:180px;height:180px;font-size:180px;color:var(--color-fg-muted)}.seats-change-arrow{margin:0 8px}.plan-choice{position:relative;display:block;padding:16px;padding-left:40px;font-weight:400;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default)}.plan-choice.open,.plan-choice.selected{background-color:var(--color-canvas-default)}.plan-choice--experiment{cursor:pointer;transition:transform .3s,box-shadow .3s,border-color .3s}.plan-choice--experiment.open,.plan-choice--experiment.selected{border-color:var(--color-border-default);box-shadow:var(--color-shadow-large);transform:scale(1.025)}.plan-choice--experiment.open .plan-choice-icon,.plan-choice--experiment.selected .plan-choice-icon{background-color:var(--color-success-emphasis);box-shadow:var(--color-shadow-small)}.plan-choice--experiment.open .plan-choice-icon .octicon,.plan-choice--experiment.selected .plan-choice-icon .octicon{transform:scale(1)}.plan-choice--experiment.plan-choice--green.open,.plan-choice--experiment.plan-choice--green.selected{border-color:var(--color-success-emphasis)}.plan-choice--experiment.plan-choice--green.open .plan-choice-icon,.plan-choice--experiment.plan-choice--green.selected .plan-choice-icon{background-color:var(--color-success-emphasis)}.plan-choice--experiment.plan-choice--purple.open,.plan-choice--experiment.plan-choice--purple.selected{border-color:var(--color-done-emphasis)}.plan-choice--experiment.plan-choice--purple.open .plan-choice-icon,.plan-choice--experiment.plan-choice--purple.selected .plan-choice-icon{background-color:var(--color-done-fg)}.plan-choice-icon{transition:box-shadow .3s}.plan-choice-icon .octicon{transition:transform .2s;transform:scale(0.5)}.plan-choice-radio{position:absolute;top:18px;left:15px}.plan-choice-exp{margin-top:4px;font-size:12px;color:var(--color-fg-muted)}.seat-field{width:50px;margin-right:4px}.billing-line-items{margin-top:8px}.billing-line-item{padding:8px 0;font-size:12px;list-style:none;border-top:1px solid var(--color-border-default)}.billing-line-item::before{display:table;content:""}.billing-line-item::after{display:table;clear:both;content:""}.billing-line-item-last{font-weight:600;border-top-width:3px}.line-item-value{float:right}.condensed-payment-methods .vat-field{width:100%}.condensed-payment-methods .state-field{width:30%}.condensed-payment-methods .postcode-field{width:28%}.condensed-payment-methods .country-field{width:42%}.condensed-payment-methods .is-international .country-field{width:72%}.condensed-payment-methods .is-international.no-postcodes .country-field{width:100%}.zuora-billing-section.PaymentMethod--creditcard:not(.has-removed-contents)~.SignUpContinueActions{display:none}.zuora-billing-section.PaymentMethod--creditcard-added~.SignUpContinueActions{display:block}.zuora-billing-section.PaymentMethod--paypal~.SignUpContinueActions{display:block}.new-org-billing-form .z_hppm_iframe{width:100% !important}.billing-tooltip-underline{cursor:help;border-bottom:1px dotted}.billing-box-accordion[open] .octicon-chevron-right{height:auto;transform:rotate(90deg)}.billing-box-accordion:hover .billing-box-accordion-state .octicon{color:var(--color-fg-muted)}.billing-box-accordion-chevron[open] .octicon-chevron-right{height:auto;transform:rotate(90deg)}.billing-box-accordion-state .octicon{color:var(--color-fg-muted);transition:transform .09s ease-out}.billing-box-progress{padding-top:1px;margin-bottom:4px}.Details-element:focus{outline:none}.organization-radio-button-budget-disabled{color:var(--color-fg-muted);background-color:var(--color-canvas-subtle)}.organization-radio-button-budget-disabled label p{color:var(--color-fg-muted) !important}.required-asterisked::after{color:var(--color-danger-fg);content:" *"}.blame-commit{-webkit-user-select:none;user-select:none}.blame-commit[data-heat="1"]{border-right:2px solid #f66a0a}.blame-commit[data-heat="2"]{border-right:2px solid rgba(246,106,10,.9)}.blame-commit[data-heat="3"]{border-right:2px solid rgba(246,106,10,.8)}.blame-commit[data-heat="4"]{border-right:2px solid rgba(246,106,10,.7)}.blame-commit[data-heat="5"]{border-right:2px solid rgba(246,106,10,.6)}.blame-commit[data-heat="6"]{border-right:2px solid rgba(246,106,10,.5)}.blame-commit[data-heat="7"]{border-right:2px solid rgba(246,106,10,.4)}.blame-commit[data-heat="8"]{border-right:2px solid rgba(246,106,10,.3)}.blame-commit[data-heat="9"]{border-right:2px solid rgba(246,106,10,.2)}.blame-commit[data-heat="10"]{border-right:2px solid rgba(246,106,10,.1)}.heat[data-heat="1"]{background:#f66a0a}.heat[data-heat="2"]{background:rgba(246,106,10,.9)}.heat[data-heat="3"]{background:rgba(246,106,10,.8)}.heat[data-heat="4"]{background:rgba(246,106,10,.7)}.heat[data-heat="5"]{background:rgba(246,106,10,.6)}.heat[data-heat="6"]{background:rgba(246,106,10,.5)}.heat[data-heat="7"]{background:rgba(246,106,10,.4)}.heat[data-heat="8"]{background:rgba(246,106,10,.3)}.heat[data-heat="9"]{background:rgba(246,106,10,.2)}.heat[data-heat="10"]{background:rgba(246,106,10,.1)}.blame-commit-date{font-size:11px;line-height:25px;flex-shrink:0}.blame-commit-date[data-heat="1"]{color:#c24e00}.blame-commit-date[data-heat="2"]{color:#ac571f}.blame-commit-date[data-heat="3"]{color:#a35b2c}.blame-commit-date[data-heat="4"]{color:#9a5f38}.blame-commit-date[data-heat="5"]{color:#926245}.blame-commit-date[data-heat="6"]{color:#896651}.blame-commit-date[data-heat="7"]{color:#806a5e}.blame-commit-date[data-heat="8"]{color:#776d6a}.blame-commit-date[data-heat="9"]{color:#6e7177}.blame-commit-date[data-heat="10"]{color:#6a737d}.line-age-legend .heat{width:2px;height:10px;margin:2px 1px 0}.blame-breadcrumb .css-truncate-target{max-width:680px}.blame-commit-info{width:450px;height:26px}.blame-commit-content{flex-grow:2;overflow:hidden}.blame-commit-message{text-overflow:ellipsis}.blame-commit-message .message.blank{color:var(--color-fg-muted)}.blob-reblame{min-width:24px;-webkit-user-select:none;user-select:none}.reblame-link{padding-top:2px;color:var(--color-fg-muted);opacity:.3}.blame-hunk g-emoji{font-size:14px !important}.blame-hunk:hover .reblame-link{opacity:1}.blame-container .blame-blob-num,.blame-container .blob-code-inner{padding-top:3px;padding-bottom:3px}.blame-container .blob-code-inner{flex-grow:1}.editor-abort{display:inline;font-size:14px}.blob-interaction-bar{position:relative;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default)}.blob-interaction-bar::before{display:table;content:""}.blob-interaction-bar::after{display:table;clear:both;content:""}.blob-interaction-bar .octicon-search{position:absolute;top:6px;left:10px;font-size:12px;color:var(--color-fg-muted)}.blob-filter{width:100%;padding:4px 16px 4px 32px;font-size:12px;border:0;border-radius:0;outline:none}.blob-filter:focus{outline:none}.html-blob{margin-bottom:16px}.TagsearchPopover{width:inherit;max-width:600px}.TagsearchPopover-content{max-height:300px}.TagsearchPopover-list .TagsearchPopover-list-item:hover{background-color:var(--color-canvas-subtle)}.TagsearchPopover-list .TagsearchPopover-list-item .TagsearchPopover-item:hover{text-decoration:none}.TagsearchPopover-list .blob-code-inner{white-space:pre-wrap}.diff-table .line-alert,.blob-code-content .line-alert{position:absolute;left:0;margin:-2px 2px}.diff-table .codeowners-error,.blob-code-content .codeowners-error{color:var(--color-danger-fg)}.diff-table .error-highlight,.blob-code-content .error-highlight{position:relative;cursor:help;font-style:italic;color:var(--color-danger-fg)}.diff-table .error-highlight::before,.blob-code-content .error-highlight::before{position:absolute;top:101%;width:100%;height:.25em;content:"";background:linear-gradient(135deg, transparent, transparent 45%, var(--color-danger-fg), transparent 55%, transparent 100%),linear-gradient(45deg, transparent, transparent 45%, var(--color-danger-fg), transparent 55%, transparent 100%);background-repeat:repeat-x,repeat-x;background-size:.5em .5em}.blob-code-content .blob-num .line-alert{margin-top:1px}.diff-table .blob-num .line-alert{margin:2px -2px}.csv-data .line-alert{position:absolute;margin:2px 4px}.linejump .linejump-input{width:340px;background-color:var(--color-canvas-subtle)}.linejump .linejump-input,.linejump .btn{padding:8px 16px;font-size:16px}.CopyBlock{line-height:20px;cursor:pointer}.CopyBlock .octicon-copy{display:none}.CopyBlock:hover,.CopyBlock:focus,.CopyBlock:active{background-color:var(--color-canvas-default);outline:none}.CopyBlock:hover .octicon-copy,.CopyBlock:focus .octicon-copy,.CopyBlock:active .octicon-copy{display:inline-block}.blob-header.is-stuck{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.commit-form-avatar{margin-left:-64px}.file-commit-form{padding-left:64px}.file-commit-form--full{position:absolute;bottom:0;left:0;z-index:10;width:100%;padding-top:16px;padding-left:0;margin-top:16px;margin-bottom:16px;background:var(--color-canvas-default)}@media(min-width: 1012px){.file-commit-form--full{top:0;right:0;bottom:auto;left:auto;width:auto;margin-top:0;margin-bottom:0}}.file-commit-form--full .commit-form{padding:0;margin-bottom:24px;border:0}.file-commit-form--full .commit-form::before{display:none}.file-commit-form-dropdown{position:fixed;top:0;left:0;width:100%;height:100%}.file-commit-form-dropdown::after{display:none}@media(min-width: 1012px){.file-commit-form-dropdown{position:absolute;top:auto;left:auto;width:420px;height:auto}.file-commit-form-dropdown::after{display:inline-block}}.commit-form::after,.commit-form::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.commit-form::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.commit-form::before{background-color:var(--color-border-default)}.quick-pull-new-branch-icon{top:9px;left:10px}.code-formatting-menu{width:260px}.CodeMirror-hints{position:absolute;z-index:10;max-height:20em;margin:0;overflow-y:auto;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;list-style:none;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px;box-shadow:var(--color-shadow-medium)}.CodeMirror-hint{padding:2px 8px;margin:0;color:var(--color-fg-default);white-space:pre;cursor:pointer}.CodeMirror-hint .CodeMirror-hint:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.CodeMirror-hint .CodeMirror-hint:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.CodeMirror-hint-active{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.CodeMirror-lint-tooltip{position:fixed;z-index:100;min-width:300px;max-width:600px;opacity:0;transition:opacity .4s}.CodeMirror-lint-mark-error{position:relative;cursor:help}.CodeMirror-lint-mark-error::before{position:absolute;top:101%;width:100%;height:.25em;content:"";background:linear-gradient(135deg, transparent, transparent 45%, var(--color-danger-emphasis), transparent 55%, transparent 100%),linear-gradient(45deg, transparent, transparent 45%, var(--color-danger-emphasis), transparent 55%, transparent 100%);background-repeat:repeat-x,repeat-x;background-size:.5em .5em}.CodeMirror-lint-mark-warning{position:relative;cursor:help}.CodeMirror-lint-mark-warning::before{position:absolute;top:101%;width:100%;height:.25em;content:"";background:linear-gradient(135deg, transparent, transparent 45%, var(--color-attention-emphasis), transparent 55%, transparent 100%),linear-gradient(45deg, transparent, transparent 45%, var(--color-attention-emphasis), transparent 55%, transparent 100%);background-repeat:repeat-x,repeat-x;background-size:.5em .5em}.CodeMirror-lint-mark-info{position:relative;cursor:help}.CodeMirror-lint-mark-info::before{position:absolute;top:101%;width:100%;height:.25em;content:"";background:linear-gradient(135deg, transparent, transparent 45%, var(--color-accent-emphasis), transparent 55%, transparent 100%),linear-gradient(45deg, transparent, transparent 45%, var(--color-accent-emphasis), transparent 55%, transparent 100%);background-repeat:repeat-x,repeat-x;background-size:.5em .5em}.CodeMirror-hint-active .CodeMirror-hint-description{color:var(--color-fg-on-emphasis) !important}.merge-pr{padding-top:8px;margin:16px 0 0;border-top:1px solid var(--color-border-default)}.merge-pr.open .merge-branch-form{display:block}.merge-pr.open .branch-action{display:none}.merge-pr.is-merging-jump.open .merge-branch-form,.merge-pr.is-merging-group.open .merge-branch-form,.merge-pr.is-merging-solo.open .merge-branch-form{display:none}.merge-pr.is-merging-jump.open .queue-branch-form,.merge-pr.is-merging-group.open .queue-branch-form,.merge-pr.is-merging-solo.open .queue-branch-form{display:block}.status-heading{margin-bottom:1px}.merge-status-list{max-height:0;padding:0;margin:16px -16px -16px -55px;overflow-y:auto;border:solid var(--color-border-default);border-width:1px 0 0;transition:max-height .25s ease-in-out}.statuses-toggle-opened{display:none}.merge-status-item{position:relative;padding:8px 16px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default)}.merge-status-item:last-child:not(.review-item){border-bottom:0}.merge-status-item .css-truncate-target{max-width:100%}.merge-status-item .dismiss-review-form{display:none}.merge-status-item.open .review-status-item{display:none !important}.merge-status-item.open .dismiss-review-form{display:block}.status-meta{color:var(--color-fg-muted)}.status-meta-file-name{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:6px}.status-actions{margin-left:auto}.branch-action-item-icon{float:left;margin-left:-40px}.merge-status-icon{min-width:30px;margin-right:12px}.branch-action{padding-left:55px;margin-top:16px;margin-bottom:16px}.branch-action .merge-branch-heading{margin-bottom:4px}.branch-action-icon{float:left;width:40px;height:40px;margin-left:-55px;color:var(--color-fg-on-emphasis);border-radius:6px}.branch-action-body{position:relative;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.branch-action-body .spinner{display:block;float:left;width:32px;height:32px;margin-right:16px;background:url("/images/spinners/octocat-spinner-32.gif") no-repeat}.branch-action-body .merge-message,.branch-action-body .merge-branch-form,.branch-action-body .queue-branch-form{padding:16px;background-color:var(--color-canvas-subtle);border-top:1px solid var(--color-border-default);border-bottom-right-radius:6px;border-bottom-left-radius:6px}.post-merge-message{padding:16px}.branch-action-item{padding:16px 16px 16px 55px;font-size:13px;line-height:1.4}.branch-action-item+.branch-action-item,.branch-action-item+.mergeability-details{border-top:1px solid var(--color-border-default)}.branch-action-item.open>.merge-status-list-wrapper>.merge-status-list,.branch-action-item.open>.merge-status-list{max-height:231px;margin-bottom:-16px}.branch-action-item.open .statuses-toggle-opened{display:inline}.branch-action-item.open .statuses-toggle-closed{display:none}.branch-action-btn{margin-left:16px}.branch-action-item-simple{padding-left:16px}.branch-action-item-simple .merge-status-list{margin-left:-16px}.branch-action-item-simple .merge-status-item{padding-left:12px}.branch-action-state-clean .branch-action-icon{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis);border:1px solid transparent}.branch-action-state-clean .branch-action-body{border-color:var(--color-success-emphasis)}.branch-action-state-clean .branch-action-body::after,.branch-action-state-clean .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.branch-action-state-clean .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.branch-action-state-clean .branch-action-body::before{background-color:var(--color-success-emphasis)}.branch-action-state-unknown .branch-action-icon,.branch-action-state-unstable .branch-action-icon{color:var(--color-fg-on-emphasis);background-color:var(--color-attention-emphasis);border:1px solid transparent}.branch-action-state-unknown .branch-action-body,.branch-action-state-unstable .branch-action-body{border-color:var(--color-attention-emphasis)}.branch-action-state-unknown .branch-action-body::after,.branch-action-state-unknown .branch-action-body::before,.branch-action-state-unstable .branch-action-body::after,.branch-action-state-unstable .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.branch-action-state-unknown .branch-action-body::after,.branch-action-state-unstable .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.branch-action-state-unknown .branch-action-body::before,.branch-action-state-unstable .branch-action-body::before{background-color:var(--color-attention-emphasis)}.branch-action-state-merged .branch-action-icon{color:var(--color-fg-on-emphasis);background-color:var(--color-done-emphasis);border:1px solid transparent}.branch-action-state-merged .branch-action-body{border-color:var(--color-done-emphasis)}.branch-action-state-merged .branch-action-body::after,.branch-action-state-merged .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.branch-action-state-merged .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.branch-action-state-merged .branch-action-body::before{background-color:var(--color-done-emphasis)}.branch-action-state-dirty .branch-action-icon,.branch-action-state-closed-dirty .branch-action-icon,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-icon{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis);border:1px solid transparent}.branch-action-state-dirty .branch-action-body,.branch-action-state-closed-dirty .branch-action-body,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body{border-color:var(--color-border-default)}.branch-action-state-dirty .branch-action-body::after,.branch-action-state-dirty .branch-action-body::before,.branch-action-state-closed-dirty .branch-action-body::after,.branch-action-state-closed-dirty .branch-action-body::before,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body::after,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.branch-action-state-dirty .branch-action-body::after,.branch-action-state-closed-dirty .branch-action-body::after,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.branch-action-state-dirty .branch-action-body::before,.branch-action-state-closed-dirty .branch-action-body::before,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body::before{background-color:var(--color-border-default)}.branch-action-state-error .branch-action-icon,.is-merging .branch-action-state-error-if-merging .branch-action-icon{color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis);border:1px solid transparent}.branch-action-state-error .branch-action-body,.is-merging .branch-action-state-error-if-merging .branch-action-body{border-color:var(--color-danger-emphasis)}.branch-action-state-error .branch-action-body::after,.branch-action-state-error .branch-action-body::before,.is-merging .branch-action-state-error-if-merging .branch-action-body::after,.is-merging .branch-action-state-error-if-merging .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.branch-action-state-error .branch-action-body::after,.is-merging .branch-action-state-error-if-merging .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.branch-action-state-error .branch-action-body::before,.is-merging .branch-action-state-error-if-merging .branch-action-body::before{background-color:var(--color-danger-emphasis)}.enqueued-pull-request .branch-action-body::after,.enqueued-pull-request .branch-action-body::before{position:absolute;top:11px;right:100%;left:-8px;display:block;width:8px;height:16px;pointer-events:none;content:" ";-webkit-clip-path:polygon(0 50%, 100% 0, 100% 100%);clip-path:polygon(0 50%, 100% 0, 100% 100%)}.enqueued-pull-request .branch-action-body::after{margin-left:1px;background-color:var(--color-canvas-default);background-image:linear-gradient(var(--color-canvas-default), var(--color-canvas-default))}.enqueued-pull-request .branch-action-body::before{background-color:var(--color-attention-emphasis)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.branch-action-body .spinner{background-image:url("/images/spinners/octocat-spinner-64.gif");background-size:32px 32px}}.merge-branch-form,.queue-branch-form{display:none;margin:16px 0}.merge-branch-form .commit-form,.queue-branch-form .commit-form{border-color:var(--color-success-emphasis)}.merge-branch-form .commit-form::before,.queue-branch-form .commit-form::before{display:none}@media(min-width: 768px){.merge-branch-form .commit-form::before,.queue-branch-form .commit-form::before{display:block;border-right-color:var(--color-border-default)}}.merge-branch-form .commit-form::after,.queue-branch-form .commit-form::after{display:none}@media(min-width: 768px){.merge-branch-form .commit-form::after,.queue-branch-form .commit-form::after{display:block}}.merge-branch-form.error .commit-form,.merge-branch-form.danger .commit-form,.queue-branch-form.error .commit-form,.queue-branch-form.danger .commit-form{border-color:var(--color-danger-emphasis)}.merge-branch-form.error .commit-form::before,.merge-branch-form.danger .commit-form::before,.queue-branch-form.error .commit-form::before,.queue-branch-form.danger .commit-form::before{border-right-color:var(--color-danger-emphasis)}.merge-button-matrix-merge-form .merge-branch-form{display:block}.completeness-indicator{display:flex;align-items:center;justify-content:center;width:30px;height:30px}.completeness-indicator-success{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis);border:1px solid transparent;border-radius:50%}.completeness-indicator-error{color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis);border:1px solid transparent;border-radius:50%}.completeness-indicator-problem{color:var(--color-fg-on-emphasis);background-color:var(--color-neutral-emphasis);border:1px solid transparent;border-radius:50%}.completeness-indicator-warning{color:var(--color-fg-on-emphasis);background-color:var(--color-attention-emphasis);border:1px solid transparent;border-radius:50%}.pull-merging .pull-merging-error{display:none}.pull-merging.is-error .pull-merging-error{display:block}.pull-merging.is-error .merge-pr{display:none}.RecentBranches{background-color:var(--color-attention-subtle);border:1px solid var(--color-attention-emphasis);border-radius:6px}.RecentBranches-item{line-height:28px;color:var(--color-fg-default)}.RecentBranches-item+.RecentBranches-item{border-top:1px solid var(--color-attention-emphasis)}.RecentBranches-item-link{color:var(--color-fg-default)}.RecentBranches-item-link.css-truncate-target{max-width:400px}.range-editor{position:relative;padding:4px 16px 4px 40px;margin-top:16px;margin-bottom:16px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px}.range-editor .dots{font-size:16px}.range-editor .select-menu{position:relative;display:inline-block}.range-editor .select-menu.fork-suggester{display:none}.range-editor .branch-name{line-height:22px}.range-editor .branch .css-truncate-target,.range-editor .fork-suggester .css-truncate-target{max-width:180px}.range-editor .pre-mergability{display:inline-block;padding:4px;line-height:26px;vertical-align:middle}.range-editor .pre-mergability .octicon{vertical-align:text-bottom}.range-editor.is-cross-repo .select-menu.fork-suggester{display:inline-block}.range-editor-icon{float:left;margin-top:8px;margin-left:-24px;color:var(--color-fg-muted)}.compare-pr-header{display:none}.is-pr-composer-expanded .compare-show-header{display:none}.is-pr-composer-expanded .compare-pr-header{display:block}.range-cross-repo-pair{display:inline-block;padding:4px;white-space:nowrap}.branches .clear-search{display:none}.branches .loading-overlay{position:absolute;top:0;z-index:20;display:none;width:100%;height:100%;padding-top:50px;text-align:center}.branches .loading-overlay::before{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background-color:var(--color-canvas-default);opacity:.7}.branches .loading-overlay .spinner{display:inline-block}.branches.is-loading .loading-overlay{display:block}.branches.is-search-mode .clear-search{display:inline-block}.branch-a-b-count .count-half{position:relative;float:left;width:90px;padding-bottom:4px;text-align:right}.branch-a-b-count .count-half:last-child{text-align:left;border-left:1px solid var(--color-border-default)}.branch-a-b-count .count-value{position:relative;top:-1px;display:block;padding:0 4px;font-size:10px}.branch-a-b-count .bar{position:absolute;min-width:3px;height:4px}.branch-a-b-count .meter{position:absolute;height:4px;background-color:var(--color-neutral-muted)}.branch-a-b-count .meter.zero{background-color:transparent}.branch-a-b-count .bar-behind{right:0;border-radius:6px 0 0 6px}.branch-a-b-count .bar-behind .meter{right:0;border-radius:6px 0 0 6px}.branch-a-b-count .bar-ahead{left:0;border-radius:0 6px 6px 0}.branch-a-b-count .bar-ahead .meter{border-radius:0 6px 6px 0}.branch-a-b-count .bar-ahead.even,.branch-a-b-count .bar-behind.even{min-width:2px;background:#eaecef}@media(max-width: 767px){.branch-info-dropdown-size{top:6px;width:300px;max-width:300px !important}.branch-contribute-right{right:auto;left:-10px}.branch-contribute-right::before,.branch-contribute-right::after{right:auto;left:10px}}@media(min-width: 767px){.branch-info-dropdown-size{top:6px;width:378px;max-width:378px !important}}.admin-options-block .admin-option-button{margin-top:8px}.admin-options-block .policy-enforcement{display:inline;margin-left:8px;color:var(--color-fg-muted)}.admin-options-block .policy-enforcement label{font-size:13px}.admin-options-block .disabled{color:var(--color-fg-muted)}.admin-options-block .disabled .note{color:var(--color-fg-muted)}.overflow-scroll-y{overflow-x:hidden !important;overflow-y:scroll !important}.business-menu-item:not([aria-current=page])+.business-sub-menu{display:none}.business-menu-icon{width:16px;margin-right:8px}.deprovisioning-checkbox>.show-if-disabled{display:none}.deprovisioning-checkbox.checkbox-disabled{color:var(--color-fg-muted)}.deprovisioning-checkbox.checkbox-disabled>.show-if-disabled{display:inherit}body.full-width-p-0 .new-discussion-timeline{padding:0 !important}body.full-width-p-0 .footer .mt-6{margin-top:0 !important;border-top:0 !important}body.full-width-p-0 .tabnav .tabnav-extra{margin-right:24px}body.full-width-p-0 .tabnav .tabnav-tabs{margin-left:16px}.checks-summary-conclusion{width:32px;height:32px;line-height:32px;border-radius:50%}.actions-full-screen .pagehead,.actions-full-screen .hide-full-screen,.actions-full-screen .Header-old,.actions-full-screen .Header{display:none}.checks-list-item.selected .checks-list-item-name{background-color:var(--color-accent-emphasis) !important}.checks-list-item.selected .selected-color-white{color:var(--color-fg-on-emphasis) !important}.checks-list-item-icon{width:16px}.checks-summary-meta .octicon{width:16px}.checks-results-items .octicon-fold{display:none}.checks-results-items .Details--on .octicon-fold{display:inline-block}.checks-results-items .Details--on .octicon-unfold{display:none}.check-annotation{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.check-annotation::after{position:absolute;top:0;bottom:0;left:0;display:block;width:4px;content:" "}.file .check-annotation{border-bottom:1px solid var(--color-border-default)}.file .check-annotation:last-child{border-bottom:0}.check-annotation .annotation-actions{top:4px;right:8px}.check-annotation .annotation-octicon{width:16px}.check-annotation.Details--on .Details-content--hidden{display:block !important}.annotation-title{word-break:break-all}.check-annotation-failure::after{background-color:var(--color-danger-emphasis)}.check-annotation-failure .annotation-title{color:var(--color-danger-fg)}.check-annotation-warning::after{background-color:var(--color-attention-emphasis)}.check-annotation-warning .octicon-alert{color:var(--color-attention-fg)}.check-annotation-warning .annotation-title{color:var(--color-attention-fg)}.neutral-check{color:var(--color-fg-muted)}.CheckRunContainer{background-color:var(--color-checks-bg);border-top:var(--color-checks-container-border-width) solid var(--color-border-default);border-left:var(--color-checks-container-border-width) solid var(--color-border-default)}.CheckRun{background-color:var(--color-checks-bg);border-color:var(--color-border-muted) !important;border-width:var(--color-checks-run-border-width) !important}.CheckStep-header{height:36px;line-height:20px;color:var(--color-checks-text-secondary)}.CheckStep-header-dropdown-menu{color:var(--color-scale-white);background:var(--color-checks-dropdown-bg);border-color:var(--color-checks-dropdown-border);box-shadow:0 8px 24px var(--color-checks-dropdown-shadow) !important}.CheckStep-header-dropdown-menu::before{border-bottom-color:var(--color-checks-dropdown-border)}.CheckStep-header-dropdown-menu::after{border-bottom-color:var(--color-checks-dropdown-bg)}.CheckStep-header-dropdown-menu .dropdown-header{color:var(--color-checks-text-secondary)}.CheckStep-header-dropdown-menu .dropdown-divider{border-top-color:var(--color-checks-dropdown-border)}.CheckStep-header-dropdown-menu .dropdown-item{color:var(--color-checks-dropdown-text) !important}.CheckStep-header-dropdown-menu .dropdown-item:hover{color:var(--color-checks-dropdown-hover-text) !important;background-color:var(--color-checks-dropdown-hover-bg) !important}.CheckStep-header-dropdown-menu.dropdown-menu-w::before{border-color:transparent transparent transparent var(--color-checks-dropdown-border)}.CheckStep-header-dropdown-menu.dropdown-menu-w::after{border-color:transparent transparent transparent var(--color-checks-dropdown-bg)}.CheckStep-header-dropdown-menu.dropdown-menu-e::before{border-color:transparent var(--color-checks-dropdown-border) transparent transparent}.CheckStep-header-dropdown-menu.dropdown-menu-e::after{border-color:transparent var(--color-checks-dropdown-bg) transparent transparent}.CheckStep-header-dropdown-menu.dropdown-menu-ne::before{border-color:var(--color-checks-dropdown-border) transparent transparent transparent}.CheckStep-header-dropdown-menu.dropdown-menu-ne::after{border-color:var(--color-checks-dropdown-bg) transparent transparent transparent}.CheckRun-search details[open] .CheckStep-header-dropdown,.CheckStep-header-dropdown:hover{color:var(--color-checks-dropdown-btn-hover-text);background-color:var(--color-checks-dropdown-btn-hover-bg) !important}.CheckRun-search details[open] .octicon,.CheckStep-header-dropdown:hover .octicon{color:var(--color-checks-btn-hover-icon) !important}.CheckStep[open] .CheckStep-header{color:var(--color-checks-text-primary)}.CheckStep[open] .CheckStep-header,.CheckStep-header:hover{background-color:var(--color-checks-step-header-open-bg);box-shadow:0 -2px 0 2px var(--color-checks-bg)}.WorkflowRunLogsScroll{scrollbar-width:thin;scrollbar-color:var(--color-checks-scrollbar-thumb-bg) var(--color-checks-bg)}.WorkflowRunLogsScroll::-webkit-scrollbar{width:12px}.WorkflowRunLogsScroll::-webkit-scrollbar-thumb{background-color:var(--color-checks-scrollbar-thumb-bg);border-color:var(--color-checks-bg);border-style:solid;border-width:3px;border-radius:6px}.CheckStep-header-label{color:var(--color-checks-header-label-text)}.CheckStep[open] .CheckStep-header-label{color:var(--color-checks-header-label-open-text)}.CheckRun-search{width:280px}.CheckRun-header{height:80px;background-color:var(--color-checks-bg);border-top:0;border-bottom:1px solid var(--color-checks-header-border)}.CheckRun-header summary{padding:6px 8px 5px}.CheckRun-header a{color:var(--color-checks-text-link)}.CheckRun-header .btn-link:not([disabled]),.CheckRun-header .btn.btn-link:not([disabled]) .octicon,.CheckRun-header .btn-link:not([disabled]) .octicon{color:var(--color-checks-btn-icon)}.CheckRun-header .btn-link:hover:not([disabled]),.CheckRun-header .btn.btn-link:hover:not([disabled]) .octicon{color:var(--color-checks-btn-hover-icon);background-color:var(--color-checks-btn-hover-bg)}.CheckRun-header-timestamp{color:var(--color-checks-text-secondary)}.CheckRun-log-title{color:var(--color-checks-text-primary)}.Deployment-header-text{color:var(--color-checks-text-primary)}.CheckRun-search-input{padding-top:6px;padding-right:88px;padding-bottom:6px;color:var(--color-checks-input-text);background-color:var(--color-checks-input-bg);border-color:transparent;box-shadow:var(--color-checks-input-shadow) !important}.CheckRun-search-input::placeholder{color:var(--color-checks-input-placeholder-text)}.CheckRun-search-input:focus{color:var(--color-checks-text-primary)}.CheckStep-chevron{transition:transform .1s}[open] .CheckStep-chevron{transform:rotate(90deg)}.CheckRun-header-counter{color:var(--color-checks-text-secondary);background-color:var(--color-checks-input-bg)}.CheckRun-search-icon{color:var(--color-checks-header-icon)}.CheckStep-line{line-height:20px;color:var(--color-checks-line-text)}.CheckStep-line .CheckStep-line-number{width:48px;overflow:hidden;color:var(--color-checks-line-num-text);text-align:right;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.CheckStep-line .CheckStep-line-timestamp{display:none;color:var(--color-checks-line-timestamp-text)}.CheckStep-line .CheckStep-line-content{overflow-x:auto;white-space:pre-wrap}.CheckStep-line .CheckStep-line-content a{color:var(--color-checks-line-text);text-decoration:underline}.CheckStep-line:hover{color:var(--color-checks-text-primary);background-color:var(--color-checks-line-hover-bg)}.CheckStep-line.selected{color:var(--color-checks-text-primary);background-color:var(--color-checks-line-selected-bg) !important}.CheckStep-line.selected .CheckStep-line-number{color:var(--color-checks-line-selected-num-text);text-decoration:underline}.CheckStep-line .dt-fm{padding-top:2px;padding-bottom:1px;color:var(--color-checks-line-dt-fm-text) !important;background:var(--color-checks-line-dt-fm-bg);border-radius:2px}.CheckStep-line .dt-fm.select{color:var(--color-fg-on-emphasis) !important;background:var(--color-accent-emphasis)}.CheckRun-line{color:var(--color-checks-line-text);background-color:var(--color-checks-line-selected-bg)}.CheckRun-line .CheckRun-line-timestamp{display:none;color:var(--color-checks-line-timestamp-text)}.CheckRun-line:hover{color:var(--color-checks-text-primary)}.CheckRun-show-timestamps .CheckStep-line-timestamp{display:inline}.Blocked-Check-Warning{padding-top:1px;padding-bottom:1px;margin-right:24px;margin-left:24px;background-color:var(--color-checks-gate-bg) !important}.Blocked-Check-Warning .Content-Text{color:var(--color-checks-gate-text)}.Blocked-Check-Warning .Blocked-Check-Text{color:var(--color-checks-gate-waiting-text)}.CheckStep{padding-right:6px}.CheckStep .log-line-command{color:var(--color-checks-logline-command-text)}.CheckStep .log-line-command a{color:var(--color-checks-logline-command-text)}.CheckStep .log-line-command .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .log-line-debug{color:var(--color-checks-logline-debug-text)}.CheckStep .log-line-debug a{color:var(--color-checks-logline-debug-text)}.CheckStep .log-line-debug .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .log-download-error{margin-left:8px;color:var(--color-checks-logline-error-text);background-color:var(--color-checks-logline-error-bg)}.CheckStep .log-line-error{background-color:var(--color-checks-logline-error-bg)}.CheckStep .log-line-error .CheckStep-line-content{color:var(--color-checks-logline-error-text)}.CheckStep .log-line-error .CheckStep-line-number{color:var(--color-checks-logline-error-num-text)}.CheckStep .log-line-info{font-weight:600;color:var(--color-checks-logline-text)}.CheckStep .log-line-info a{color:var(--color-checks-logline-text)}.CheckStep .log-line-info .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .log-line-verbose{font-weight:600;color:var(--color-checks-logline-text)}.CheckStep .log-line-verbose a{color:var(--color-checks-logline-text)}.CheckStep .log-line-verbose .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .log-line-warning{background-color:var(--color-checks-logline-warning-bg)}.CheckStep .log-line-warning .CheckStep-line-content{color:var(--color-checks-logline-warning-text)}.CheckStep .log-line-warning .CheckStep-line-number{color:var(--color-checks-logline-warning-num-text)}.CheckStep .log-line-notice a{color:var(--color-checks-logline-text)}.CheckStep .log-line-notice .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .log-line-section{font-weight:600;color:var(--color-checks-logline-section-text)}.CheckStep .log-line-section a{color:var(--color-checks-logline-section-text)}.CheckStep .log-line-section .CheckStep-line-number{color:var(--color-checks-logline-num-text)}.CheckStep .CheckStep-error-text{font-weight:600;color:var(--color-checks-step-error-text)}.CheckStep .CheckStep-warning-text{font-weight:600;color:var(--color-checks-step-warning-text)}.CheckStep .CheckStep-notice-text{font-weight:600}.CheckStep a:hover{color:var(--color-checks-text-link) !important}.CheckStep .ansifg-b{color:var(--color-checks-ansi-black)}.CheckStep .ansifg-r{color:var(--color-checks-ansi-red)}.CheckStep .ansifg-g{color:var(--color-checks-ansi-green)}.CheckStep .ansifg-y{color:var(--color-checks-ansi-yellow)}.CheckStep .ansifg-bl{color:var(--color-checks-ansi-blue)}.CheckStep .ansifg-m{color:var(--color-checks-ansi-magenta)}.CheckStep .ansifg-c{color:var(--color-checks-ansi-cyan)}.CheckStep .ansifg-w{color:var(--color-checks-ansi-white)}.CheckStep .ansifg-gr{color:var(--color-checks-ansi-gray)}.CheckStep .ansifg-b-br{color:var(--color-checks-ansi-black-bright)}.CheckStep .ansifg-r-br{color:var(--color-checks-ansi-red-bright)}.CheckStep .ansifg-g-br{color:var(--color-checks-ansi-green-bright)}.CheckStep .ansifg-y-br{color:var(--color-checks-ansi-yellow-bright)}.CheckStep .ansifg-bl-br{color:var(--color-checks-ansi-blue-bright)}.CheckStep .ansifg-m-br{color:var(--color-checks-ansi-magenta-bright)}.CheckStep .ansifg-c-br{color:var(--color-checks-ansi-cyan-bright)}.CheckStep .ansifg-w-br{color:var(--color-checks-ansi-white-bright)}.CheckStep .ansibg-b{background-color:var(--color-checks-ansi-black)}.CheckStep .ansibg-r{background-color:var(--color-checks-ansi-red)}.CheckStep .ansibg-g{background-color:var(--color-checks-ansi-green)}.CheckStep .ansibg-y{background-color:var(--color-checks-ansi-yellow)}.CheckStep .ansibg-bl{background-color:var(--color-checks-ansi-blue)}.CheckStep .ansibg-m{background-color:var(--color-checks-ansi-magenta)}.CheckStep .ansibg-c{background-color:var(--color-checks-ansi-cyan)}.CheckStep .ansibg-w{background-color:var(--color-checks-ansi-white)}.CheckStep .ansibg-gr{background-color:var(--color-checks-ansi-gray)}.CheckStep .ansibg-b-br{background-color:var(--color-checks-ansi-black-bright)}.CheckStep .ansibg-r-br{background-color:var(--color-checks-ansi-red-bright)}.CheckStep .ansibg-g-br{background-color:var(--color-checks-ansi-green-bright)}.CheckStep .ansibg-y-br{background-color:var(--color-checks-ansi-yellow-bright)}.CheckStep .ansibg-bl-br{background-color:var(--color-checks-ansi-blue-bright)}.CheckStep .ansibg-m-br{background-color:var(--color-checks-ansi-magenta-bright)}.CheckStep .ansibg-c-br{background-color:var(--color-checks-ansi-cyan-bright)}.CheckStep .ansibg-w-br{background-color:var(--color-checks-ansi-white-bright)}.CheckStep .bright{filter:brightness(1.5)}.code-frequency .addition{fill:#2cbe4e;fill-opacity:1}.code-frequency .deletion{fill:var(--color-danger-emphasis);fill-opacity:1}.cadd{font-weight:600;color:var(--color-success-fg)}.cdel{font-weight:600;color:var(--color-danger-fg)}.code-list .file-box{border:1px solid var(--color-border-default);border-radius:6px}.code-list .title{min-height:24px;margin:-4px 0 8px 40px;font-weight:600;line-height:1.2}.code-list .repo-specific .title,.code-list .repo-specific .full-path{margin-left:0}.code-list .match-count,.code-list .updated-at{margin:0;font-weight:400}.code-list .language{float:right;margin-left:8px;font-size:12px;color:rgba(51,51,51,.75)}.code-list .avatar{float:left}.code-list .code-list-item+.code-list-item{border-top:1px solid var(--color-border-muted)}.code-list .blob-num{padding:0}.code-list .blob-num::before{content:normal}.code-list .blob-num a{padding:0 8px;color:inherit}.code-list .blob-num a:hover{color:var(--color-accent-fg)}.code-list .blob-code{white-space:pre-wrap}.code-list .divider .blob-num,.code-list .divider .blob-code{padding-top:0;padding-bottom:0;cursor:default;background-color:var(--color-canvas-subtle)}.code-list .divider .blob-num{height:18px;padding:0 8px;line-height:15px;background-color:var(--color-canvas-subtle)}.code-list .full-path{margin:0 0 0 40px}.code-list .full-path .octicon-repo{color:var(--color-fg-muted)}.code-list .full-path .octicon-lock{color:var(--color-attention-fg)}.code-list .full-path a{color:var(--color-fg-muted)}.code-list-item-private .file-box{border:1px solid var(--color-attention-muted)}.code-list-item-private .blob-num{background-color:var(--color-attention-subtle);border-right:1px solid var(--color-attention-muted)}.code-list-item-private .blob-num a{color:var(--color-attention-fg)}.code-list-item-private .divider .blob-num,.code-list-item-private .divider .blob-code{color:var(--color-attention-fg);background-color:var(--color-attention-subtle)}.code-scanning-alert-warning-message{border-color:var(--color-attention-emphasis) !important}.code-scanning-font-size-inherit{font-size:inherit !important}.cs-message .md-list{padding-left:2em}.codesearch-head.pagehead h1{width:250px;line-height:33px}@media(min-width: 768px){.advanced-search-form .flattened dt{width:230px}.advanced-search-form .flattened dt label{font-weight:400}.advanced-search-form .flattened dd{margin-left:250px}.advanced-search-form .form-checkbox{margin-left:250px}}.codesearch-results .code-list .title a{word-wrap:break-word}.codesearch-results .repo-list-item{border-bottom:0}.codesearch-results .repo-list-item+.repo-list-item{border-top:1px solid var(--color-border-default)}.search-form-fluid .TableObject-item--primary{position:relative;padding-right:8px}.search-form-fluid .completed-query{position:absolute;z-index:1;padding:inherit;margin:0;overflow:hidden;white-space:nowrap}.search-form-fluid .completed-query span{opacity:0}.search-form-fluid .search-page-label{position:relative;display:block;font-weight:400;cursor:text}.search-form-fluid .search-page-label.focus .completed-query{opacity:.6}.search-form-fluid .search-page-input{position:relative;z-index:2;min-height:0;padding:0;margin:0;background:none;border:0;box-shadow:none}.search-form-fluid .search-page-input:focus{box-shadow:none}.topics-row-container{height:30px;overflow:hidden}@media(max-width: 544px){.codesearch-pagination-container a:not(.next_page):not(.previous_page),.codesearch-pagination-container .gap{display:none}.codesearch-pagination-container .previous_page,.codesearch-pagination-container .next_page{width:100%}.codesearch-pagination-container .current{color:var(--color-fg-muted);background:var(--color-canvas-default);border-color:var(--color-border-default)}.codesearch-pagination-container .current::after{content:" of " attr(data-total-pages)}}.codespaces-list-box .Box-header:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.codespaces-index-list-branch-link{background-color:var(--color-accent-subtle)}.disabled-sku{color:var(--color-fg-muted)}.codespaces-wider-select-menu-modal{width:420px;margin-right:32px}.cloud-panel .welcome-image{background:url("/images/modules/site/codespaces/dropdown-background-light.png");background-repeat:no-repeat;background-position:bottom center;background-size:contain}@media(prefers-color-scheme: light){.cloud-panel .welcome-image{background:url("/images/modules/site/codespaces/dropdown-background-light.png");background-repeat:no-repeat;background-position:bottom center;background-size:contain}}@media(prefers-color-scheme: dark){.cloud-panel .welcome-image{background:url("/images/modules/site/codespaces/dropdown-background-dark.png");background-repeat:no-repeat;background-position:bottom center;background-size:contain}}@media(prefers-color-scheme: no-preference){.cloud-panel .welcome-image{background:url("/images/modules/site/codespaces/dropdown-background-light.png");background-repeat:no-repeat;background-position:bottom center;background-size:contain}}.commit-activity-graphs .dots{display:none}.commit-activity-master{margin-top:16px}.is-graph-loading .commit-activity-master{display:none}rect{shape-rendering:crispedges}rect.max{fill:var(--color-attention-fg)}g.bar{fill:var(--color-success-fg)}g.mini{fill:var(--color-severe-fg)}g.active rect{fill:var(--color-danger-fg)}circle.focus{fill:var(--color-fg-muted)}.dot text{fill:var(--color-fg-muted);stroke:none}.CommunityTemplate-markdown{height:800px;overflow-y:scroll;font-size:14px}.CommunityTemplate-highlight{padding:2px 4px;margin:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;font-style:normal;font-weight:600;color:var(--color-fg-default);cursor:pointer;background-color:var(--color-attention-emphasis);border-radius:6px}.CommunityTemplate-highlight--focus{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.community-checklist .progress-bar{background:linear-gradient(to right, var(--color-attention-emphasis), #c5e300, var(--color-success-emphasis));background-color:transparent}.community-checklist .progress{float:right;background-color:var(--color-canvas-subtle)}.community-checklist .checklist-dot{color:var(--color-attention-fg)}body.full-width-p0 .container,body.full-width-p0 .container-lg{width:100%;max-width:none;padding-right:16px;padding-left:16px}body.full-width-p0 .container-lg.new-discussion-timeline{padding-right:0 !important;padding-left:0 !important}.community-graph{width:335px}@media(min-width: 544px){.community-graph{width:428px}}.community-graph .tick-x line{stroke:var(--color-border-muted);stroke-dasharray:5}.community-graph .tick-y line{stroke:var(--color-border-muted)}.community-graph .tick-labels-x .tick text{font-size:12px;color:var(--color-fg-muted);transform:translateY(4px)}.community-graph .tick-labels-y .tick text{font-size:12px;color:var(--color-fg-muted);transform:translateX(-4px)}.community-graph .domain{stroke:none}.community-graph .tick-y .tick:first-of-type line{stroke:var(--color-neutral-emphasis-plus)}.community-graph .tick-x .tick:first-of-type line{stroke:var(--color-neutral-emphasis-plus);stroke-dasharray:none}.community-graph .axis-label{font-size:12px;font-weight:500;fill:var(--color-fg-muted)}.community-graph .legend-text{font-size:12px;fill:var(--color-fg-muted)}.community-graph .discussions-line{fill-opacity:0;stroke:var(--color-success-fg);stroke-width:3px;stroke-dasharray:6 1}.community-graph circle.discussions-line{fill:var(--color-success-fg);fill-opacity:0;stroke:none}.community-graph circle.discussions-line:hover{fill-opacity:1}.community-graph .issues-line,.community-graph .contributors-line{fill-opacity:0;stroke:var(--color-accent-fg);stroke-width:3px}.community-graph circle.issues-line,.community-graph circle.contributors-line{fill:var(--color-accent-fg);fill-opacity:0;stroke:none}.community-graph circle.issues-line:hover,.community-graph circle.contributors-line:hover{fill-opacity:1}.community-graph .pull-requests-line{fill-opacity:0;stroke:var(--color-done-fg);stroke-width:3px;stroke-dasharray:3}.community-graph circle.pull-requests-line{fill:var(--color-done-fg);fill-opacity:0;stroke:none}.community-graph circle.pull-requests-line:hover{fill-opacity:1}.community-graph .logged-in-views{fill:var(--color-accent-fg)}.community-graph .anonymous-views{fill:var(--color-severe-fg)}span.no-nl-marker{position:relative;color:var(--color-danger-fg);vertical-align:middle}.symlink .no-nl-marker{display:none}.contributions-setting-menu{z-index:80;width:330px}.ContributionCalendar.days-selected .ContributionCalendar-day{opacity:.5}.ContributionCalendar.days-selected .ContributionCalendar-day.active{opacity:1}.ContributionCalendar-label{font-size:9px;fill:var(--color-fg-default)}.ContributionCalendar-day,.ContributionCalendar-day[data-level="0"]{fill:var(--color-calendar-graph-day-bg);shape-rendering:geometricPrecision;outline:1px solid var(--color-calendar-graph-day-border);outline-offset:-1px}.ContributionCalendar-day[data-level="1"]{fill:var(--color-calendar-graph-day-L1-bg);outline:1px solid var(--color-calendar-graph-day-L1-border)}.ContributionCalendar-day[data-level="2"]{fill:var(--color-calendar-graph-day-L2-bg);outline:1px solid var(--color-calendar-graph-day-L2-border)}.ContributionCalendar-day[data-level="3"]{fill:var(--color-calendar-graph-day-L3-bg);outline:1px solid var(--color-calendar-graph-day-L3-border)}.ContributionCalendar-day[data-level="4"]{fill:var(--color-calendar-graph-day-L4-bg);outline:1px solid var(--color-calendar-graph-day-L4-border)}.ContributionCalendar[data-holiday=halloween] .ContributionCalendar-day[data-level="1"]{fill:var(--color-calendar-halloween-graph-day-L1-bg)}.ContributionCalendar[data-holiday=halloween] .ContributionCalendar-day[data-level="2"]{fill:var(--color-calendar-halloween-graph-day-L2-bg)}.ContributionCalendar[data-holiday=halloween] .ContributionCalendar-day[data-level="3"]{fill:var(--color-calendar-halloween-graph-day-L3-bg)}.ContributionCalendar[data-holiday=halloween] .ContributionCalendar-day[data-level="4"]{fill:var(--color-calendar-halloween-graph-day-L4-bg)}.graph-before-activity-overview{border-top-left-radius:6px;border-top-right-radius:6px}.activity-overview-box{border-top-left-radius:0;border-top-right-radius:0}.contribution-activity .select-menu-button{position:relative;top:-4px}.contribution-activity.loading .contribution-activity-listing{display:none}.contribution-activity.loading .contribution-activity-show-more{display:none}.contribution-activity.loading .contribution-activity-spinner{display:block}.contribution-activity-spinner{display:none}li.contribution{padding:8px 0;list-style:none}li.contribution h3{display:inline-block;margin:0;font-size:14px}li.contribution .cmeta{display:block;font-size:12px}li.contribution .d{color:var(--color-fg-default)}li.contribution .a{color:var(--color-fg-default)}li.contribution .num{color:var(--color-fg-muted)}.activity-overview-axis,.activity-overview-point{stroke:var(--color-calendar-graph-day-L4-bg)}.halloween-activity-overview .activity-overview-axis,.halloween-activity-overview .activity-overview-point{stroke:var(--color-calendar-halloween-graph-day-L4-bg)}.activity-overview-label{fill:var(--color-fg-muted)}.activity-overview-percentage{font-size:10px;fill:var(--color-fg-muted)}.tint-box{position:relative;margin-bottom:8px;background:var(--color-canvas-subtle);border-radius:6px}.tint-box.transparent{background:var(--color-canvas-default)}.tint-box .activity{padding-top:100px;margin-top:0}.contrib-person path{fill:var(--color-severe-fg)}.contrib-person .midlabel{fill:var(--color-neutral-emphasis)}.coupons .setup-plans td img{margin-top:-2px;vertical-align:middle}.coupons .coupon-form-body{width:270px;padding:16px;margin:100px auto 60px;font-size:14px;text-align:center;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px}.coupons .coupon-form-body .input-block{margin-bottom:16px}.coupons .coupon-form-body .btn{display:block;width:100%}.coupon-icon{width:80px;height:80px;margin:0 auto 16px;color:var(--color-accent-fg);border:1px solid var(--color-border-default);border-radius:40px}.coupon-icon .octicon{margin-top:16px;margin-right:2px}.coupons-list-options .select-menu{display:inline-block;margin-right:8px}.coupons-list-options .pagination{float:right;margin:0}.user-repos .mini-repo-list-item{padding-right:4px}.user-repos .mini-repo-list-item .repo-and-owner{max-width:100%}.user-repos .mini-repo-list-item .owner{max-width:145px}.repo-private-icon{fill:var(--color-attention-fg)}.dashboard-rollup-items>.dashboard-rollup-item{border-top:1px solid var(--color-border-default)}@keyframes broadCastMaskFade{0%{opacity:0}30%{opacity:1}70%{opacity:1}100%{opacity:0}}.dashboard h1{margin-bottom:.5em;font-size:160%}.dashboard h1 a{font-size:70%;font-weight:400}.dashboard .notice{padding:16px;margin-top:0;margin-bottom:0;text-align:center}.news-full,.page-profile .news{float:none;width:auto}.dashboard-break-word{-webkit-hyphens:auto;hyphens:auto;word-break:break-word}.news .bio g-emoji,.news .repo-description g-emoji{display:inline-block}.dashboard-underlined-link:hover,.dashboard-underlined-link:hover *{text-decoration:underline}.suggest-icon{width:48px;height:48px;padding:4px}.suggest-icon svg,.suggest-icon path{fill:#fff}.suggest-icon svg::before,.suggest-icon path::before{bottom:-6px;left:-4px;background-color:#9e7bff}.suggest-icon svg::after,.suggest-icon path::after{top:-5px;right:-5px;width:5px;height:5px;background-color:#6c84e9}.suggest-icon .suggest-icon-bubble{position:absolute;width:6px;height:6px;background-color:#6c84e9;border-radius:50%}.suggest-icon .suggest-icon-bubble:nth-of-type(2n){width:4px;height:4px;background-color:#9e7bff}.suggest-icon .suggest-icon-bubble:nth-of-type(1){bottom:-7px;left:-7px}.suggest-icon .suggest-icon-bubble:nth-of-type(2){top:-4px;right:4px}.suggest-icon .suggest-icon-bubble:nth-of-type(3){top:-7px;right:-8px}.dashboard-notice{position:relative;padding:16px 16px 16px 55px;margin-bottom:16px;font-size:14px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px}.dashboard-notice .dismiss{position:absolute;top:10px;right:10px;width:16px;height:16px;color:var(--color-fg-muted);cursor:pointer}.dashboard-notice .dismiss:hover{color:var(--color-fg-muted)}.dashboard-notice .notice-icon{position:absolute;top:15px;left:15px}.dashboard-notice .octicon-organization{color:var(--color-accent-fg)}.dashboard-notice h2{margin-top:8px;margin-bottom:16px;font-size:18px;font-weight:400;color:var(--color-fg-default)}.dashboard-notice p.no-title{padding-right:4px}.dashboard-notice ul{margin-left:16px}.dashboard-notice li{padding-bottom:16px}.dashboard-notice .coupon{padding:8px;margin:16px 0;font-size:20px;font-weight:600;text-align:center;background:var(--color-canvas-default);border:1px dashed var(--color-border-default)}.dashboards-overview-lead{width:700px}.dashboards-overview-cards .boxed-group{width:100%;margin:8px 0}.dashboards-overview-cards .boxed-group .graph-canvas path{stroke-opacity:.5}.dashboards-overview-cards .is-no-activity .blankslate{display:block}.dashboards-overview-cards .is-no-activity .dashboards-overview-graph{display:none}.dashboards-overview-cards .blankslate{display:none;padding-top:47px;background-color:var(--color-canvas-default);border:0;box-shadow:none}.dashboards-overview-cards .octicon-arrow-down,.dashboards-overview-cards .octicon-arrow-up{display:none}.dashboards-overview-cards .is-increase .octicon-arrow-up{display:inline-block}.dashboards-overview-cards .is-decrease .octicon-arrow-down{display:inline-block}.dashboards-overview-cards .octicon-arrow-down{color:var(--color-danger-fg)}.dashboards-overview-cards .octicon-arrow-up{color:#1db34f}.dashboards-overview-cards .graph-canvas .dots{padding:43px 0}.dashboards-overview-cards .summary-stats{height:78px}.dashboards-overview-cards .summary-stats .metric-0{color:#1db34f}.dashboards-overview-cards .summary-stats .metric-1{color:var(--color-accent-fg)}.dashboards-overview-cards .summary-stats .totals-num{margin:0 8px}.dashboards-overview-cards .summary-stats .single{width:100%}.dashboards-overview-cards .dashboards-overview-graph{height:160px}.dashboards-overview-cards .dashboards-overview-graph path{fill:none;stroke-width:2}.dashboards-overview-cards .dashboards-overview-graph path.metric-0{stroke:#1db34f}.dashboards-overview-cards .dashboards-overview-graph path.metric-1{stroke:#1d7fb3}.dashboards-overview-cards .dashboards-overview-graph .y line{stroke:#1db34f}.dashboards-overview-cards .dashboards-overview-graph .y.unique line{stroke:#1d7fb3}.dashboards-overview-cards .dashboards-overview-graph .overlay{fill-opacity:0}.dashboards-overview-cards .metric-0 circle{fill:#1db34f;stroke:#fff;stroke-width:2}.dashboards-overview-cards .dots.metric-1 circle{fill:#1d7fb3;stroke:#fff;stroke-width:2}dl.form.developer-select-account{margin-top:0}.developer-wrapper .setup-info-module .features-list{margin-left:16px}.developer-wrapper .setup-info-module .features-list .octicon{margin-left:-16px}.developer-thanks h2{font-size:38px;font-weight:400}.developer-thanks .hook{margin-top:2px;margin-bottom:32px;font-size:18px;font-weight:300;color:var(--color-fg-muted)}.developer-thanks-image{position:relative;bottom:-45px;float:left;width:400px}.developer-thanks-section{margin:130px 0 0 470px}.developer-next-steps{font-size:18px;font-weight:300;list-style:none}.developer-next-steps li{margin-top:8px}.developer-next-steps li:first-child{margin-top:0}.developer-next-steps .octicon{margin-right:8px;color:var(--color-success-fg);vertical-align:middle}.file-diff-split[data-lock-side-selection=left] [data-split-side=right],.file-diff-split[data-lock-side-selection=right] [data-split-side=left]{-webkit-user-select:none;user-select:none}.invisible{position:absolute;opacity:0}.timeline-comment.timeline-chosen-answer{border:2px solid var(--color-success-emphasis)}.discussion-nested-comment-timeline-item::before{left:25px}@media(min-width: 544px){.discussion-nested-comment-timeline-item::before{left:30px}}.discussion-primer-next-nested-comment-timeline-item::before{left:30px}.discussion-nested-comment-timeline-item:first-child::before{top:16px}.discussion-nested-comment-group{margin-left:32px}.discussion-nested-comment-paging-form::before{width:0;background-color:transparent}.discussion-nested-comment-paging-badge .octicon{fill:var(--color-border-muted);transform:rotate(90deg)}.discussion-nested-comment-paging-form-body{margin-left:24px}:target .discussion-nested-comment-group .timeline-comment{box-shadow:none}.discussion-nested-comment-timeline-item:target{box-shadow:var(--color-primer-shadow-focus)}:target .nested-discussion-timeline-comment{box-shadow:none}.inline-comment-form-container.open .discussion-nested-comment-inline-form .previewable-comment-form{display:block}.page-responsive .discussion-add-reaction-button{opacity:1}.icon-discussion-answered{color:var(--color-success-fg)}.icon-discussion-answered,.icon-discussion-answered path{fill:var(--color-success-emphasis)}.icon-discussion-white{color:var(--color-discussions-state-answered-icon) !important}.icon-discussion-white,.icon-discussion-white path{fill:var(--color-discussions-state-answered-icon) !important}.icon-discussion-gray{color:var(--color-fg-default)}.icon-discussion-gray,.icon-discussion-gray path{fill:var(--color-fg-default)}.is-comment-editing .discussion-comment .previewable-comment-form{display:none}.is-comment-editing .discussion-comment .timeline-comment-actions,.is-comment-editing .discussion-comment .edit-comment-hide{display:block}.discussion-comment .previewable-edit.is-comment-editing .timeline-comment-header{display:flex !important}.discussion-timeline-item::before{display:none}.discussion-event-timeline-item::before{left:-6px}.discussion-event-wrapper:last-child .discussion-event-timeline-item{padding-bottom:0 !important}.discussion-event-wrapper:last-child .discussion-event-timeline-item::before{display:none}.bg-discussions-row-emoji-box{width:42px !important;height:42px !important;background:var(--color-bg-discussions-row-emoji-box)}.bg-discussions-row-emoji-box-small{width:30px !important;height:30px !important;background:var(--color-bg-discussions-row-emoji-box)}.discussions-emoji-box{font-size:14px !important;line-height:14px !important;vertical-align:0 !important;cursor:default}@media(min-width: 768px){.discussions-emoji-box{font-size:16px !important;line-height:16px !important;vertical-align:0 !important}}.discussion-vote-form .slidey-boi{transition:.4s ease-in-out;transform:perspective(1px) translateY(0%)}.discussion-vote-form.is-upvoted .slidey-boi{transform:perspective(1px) translateY(-50%)}.sidebar-emoji-box{width:auto !important;height:auto !important}.errored .discussion-category-picker{border-color:var(--color-danger-emphasis)}.comment-body div[type=discussions-op-text]{padding:8px;border:1px solid var(--color-border-muted) !important;border-radius:6px}.comment-body div[type=discussions-op-text] p{margin-bottom:0}.discussion-Link--primary:visited{color:var(--color-fg-muted) !important}.discussion-Link--secondary:visited{color:var(--color-fg-subtle) !important}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-top:-1px;margin-right:2px;vertical-align:middle;border-radius:7px}.label-select-menu .select-menu-item:hover,.label-select-menu .select-menu-item:focus,.label-select-menu .select-menu-item[aria-checked=true]:hover,.label-select-menu .select-menu-item[aria-checked=true]:focus{color:inherit;background-color:var(--color-neutral-subtle)}.label-select-menu .select-menu-item-icon,.label-select-menu .label-options-icon{color:inherit !important}.user-has-reacted .octicon{fill:var(--color-accent-fg)}.discussion-footer-answer-icon{width:26px;height:26px}.discussion-footer-answer-button{padding:0 8px !important;line-height:inherit}.discussion-footer-answered-badge{padding:0 8px 0 4px !important;line-height:inherit}.discussion-annoucement-badge{background-color:var(--color-neutral-muted)}.discussion-spotlights-sortable>.discussions-spotlight-wrapper:first-child{padding-left:0 !important}.discussion-spotlights-sortable .sortable-drag{padding:0 !important;background-color:transparent}.discussion-spotlight-modal{width:560px;overflow-y:auto}.discussion-spotlight-pattern-container{mix-blend-mode:soft-light;background-position:20px 20px;background-size:35px;opacity:.5}.discussion-spotlight-pattern-zap{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight-pattern-chevron-up{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight-pattern-dot-fill{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight-pattern-dot{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight-pattern-heart-fill{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight-pattern-plus{background-image:url(data:font/svg;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIElmIHlvdSBlbnRlcmVkIHRoZSBVUkwgbWFudWFsbHkgcGxlYXNlIGNoZWNrIHlvdXIgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi48L3A+Cg==)}.discussion-spotlight{height:188px;flex:1 1 auto;overflow:hidden}.discussion-spotlight-preview{height:160px}.discussion-spotlight-gradient{width:35px;height:35px}.discussion-spotlight-gradient .discussion-spotlight-gradient-selected-indicator{display:none}.discussion-spotlight-gradient[aria-selected=true]{box-shadow:inset 0 1px 2px rgba(27,31,35,.075),0 0 0 .2em rgba(3,102,214,.3)}.discussion-spotlight-gradient[aria-selected=true] .discussion-spotlight-gradient-selected-indicator{display:inline-block}.discussion-spotlight-emoji{top:calc(35% - 35px);left:calc(50% - 48px);width:96px;height:96px;font-size:96px;text-shadow:0 3px 14px rgba(0,0,0,.3)}.discussion-spotlight-details{pointer-events:none}.discussion-spotlight-details>*{pointer-events:auto}.discussion-spotlight-handle{cursor:pointer;background:var(--color-primer-canvas-backdrop)}.donut-chart>.error,.donut-chart>.cancelled,.donut-chart>.action_required,.donut-chart>.timed_out,.donut-chart>.failure{fill:var(--color-checks-donut-error)}.donut-chart>.expected,.donut-chart>.queued,.donut-chart>.in_progress,.donut-chart>.waiting,.donut-chart>.requested,.donut-chart>.pending{fill:var(--color-checks-donut-pending)}.donut-chart>.success{fill:var(--color-checks-donut-success)}.donut-chart>.neutral,.donut-chart>.stale,.donut-chart>.skipped{fill:var(--color-checks-donut-neutral)}.survey-question-form .other-text-form,.survey-question-form .other-text-form-block{display:none;margin-top:0}.survey-question-form.is-other-selected .other-text-form{display:inline-block}.survey-question-form.is-other-selected .other-text-form-block{display:block}.ghe-license-status{padding:40px 0;font-size:16px;text-align:center}.ghe-license-status .octocat{width:225px;margin-bottom:16px}.ghe-license-status h1{margin-bottom:8px}.ghe-license-status p{margin-bottom:4px;color:var(--color-fg-muted)}.ghe-license-expiry-icon{margin:4px 8px 0 0;color:var(--color-attention-fg)}.feature-preview-dialog{width:90vw;max-width:880px;height:60vh;min-height:240px;max-height:700px}.feature-preview-dialog .feature-preview-info{height:60vh;min-height:calc(240px - 57px);max-height:calc(100% - 57px)}.file{position:relative;margin-top:16px;margin-bottom:16px;border:1px solid var(--color-border-default, #ddd);border-radius:6px}.file .drag-and-drop{border:0;border-top:1px dashed var(--color-border-default)}.file:target{border-color:var(--color-accent-emphasis);box-shadow:var(--color-primer-shadow-focus)}.file .data.empty{padding:4px 8px;color:var(--color-fg-muted)}.file:not(.open) .file-header.file-header--expandable{border-bottom:0;border-radius:6px}.file .data.suppressed,.file.open .image{display:none}.file.open .data.suppressed{display:block}.file .image{position:relative;padding:32px;text-align:center;background-color:#ddd}.file .image table{margin:0 auto}.file .image td{padding:0 4px;color:var(--color-fg-muted);text-align:center;vertical-align:top}.file .image td img{max-width:100%}.file .image .border-wrap{position:relative;display:inline-block;line-height:0;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default)}.file .image a{display:inline-block;line-height:0}.file .image img,.file .image canvas{max-width:600px;background:url("/images/modules/commit/trans_bg.gif") right bottom #eee;border:1px solid #fff}.file .image .view img,.file .image .view canvas{position:relative;top:0;right:0;max-width:inherit;background:url("/images/modules/commit/trans_bg.gif") right bottom #eee}.file .image .view>span{vertical-align:middle}.file .empty{background:none}.file-sidebar-container .file{border-top-right-radius:0;border-bottom-right-radius:0}.file-header{z-index:1;padding:4px 8px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default);border-top-left-radius:6px;border-top-right-radius:6px}.file-header::before{display:table;content:""}.file-header::after{display:table;clear:both;content:""}.file-actions{float:right;padding-top:2px;font-size:13px}.file-actions select{margin-left:4px}.file-info{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;line-height:32px}.file-info .octicon{vertical-align:text-bottom}.sticky-file-header{position:sticky;top:60px}.sticky-file-header.is-stuck{z-index:6}.sticky-file-header.has-open-dropdown{z-index:10}.file-info-divider{display:inline-block;width:1px;height:18px;margin-right:4px;margin-left:4px;vertical-align:middle;border-left:1px solid var(--color-border-default)}.file-mode{text-transform:capitalize}.file-blankslate{border:0;border-radius:0 0 6px 6px}.diff-progressive-loader{min-height:150px}.load-diff-button,.load-diff-retry{z-index:1;min-height:32px}.diff-placeholder-svg{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%)}.hidden-diff-reason{z-index:2}.ghae-bootstrap-container{min-height:calc(100vh - 54px)}.ghae-bootstrap-incomplete-step{color:var(--color-fg-muted);background-color:var(--color-canvas-subtle)}.ghae-bootstrap-complete-step{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis)}.ghae-enterprise-name-form-error{left:50%;transform:translateX(-50%)}.graphs h2.ghead::after{display:block;height:0;clear:both;visibility:hidden;content:"."}.graphs.wheader h2{padding:1px}.graphs .area{fill:var(--color-success-emphasis);fill-opacity:.5}.graphs .path{fill:none;stroke:var(--color-success-emphasis);stroke-opacity:1;stroke-width:2px}.graphs .dot{fill:var(--color-success-emphasis);stroke:#1e7e34;stroke-width:2px}.graphs .dot.padded{stroke:var(--color-canvas-default);stroke-width:1px}.graphs .dot.padded circle:hover{fill:var(--color-accent-emphasis)}.graphs .d3-tip{fill:var(--color-neutral-emphasis)}.graphs .d3-tip text{font-size:11px;fill:var(--color-canvas-default)}.graphs .dir{float:right;padding-top:4px;font-size:12px;font-weight:400;line-height:100%;color:var(--color-fg-muted)}.graphs .selection .overlay{visibility:none}.graphs .selection .selection{fill:var(--color-neutral-emphasis);fill-opacity:.1;stroke:var(--color-fg-default);stroke-dasharray:3 3;stroke-opacity:.4;stroke-width:1px;shape-rendering:crispedges}.graph-filter h3{display:inline-block;font-size:24px;font-weight:300}.graph-filter .info{margin-bottom:16px;color:var(--color-fg-muted)}.graph-canvas .activity{width:400px;padding:8px;margin:100px auto 0;color:var(--color-fg-default);text-align:center;border-radius:6px}.graph-canvas .dots{margin:0 auto}.graph-canvas>.activity{display:none}.graph-canvas .axis{font-size:10px}.graph-canvas .axis line{stroke:var(--color-border-default);shape-rendering:crispedges}.graph-canvas .axis text{fill:var(--color-fg-muted)}.graph-canvas .axis path{display:none}.graph-canvas .axis .zero line{stroke:var(--color-accent-emphasis);stroke-dasharray:3 3;stroke-width:1.5}.graph-canvas text.axis{fill:var(--color-fg-muted)}.graph-canvas .graph-loading,.graph-canvas .graph-error,.graph-canvas .graph-no-usable-data,.graph-canvas .graph-empty{display:none}.graph-canvas.is-graph-loading>.activity,.graph-canvas.is-graph-without-usable-data>.activity,.graph-canvas.is-graph-empty>.activity{display:block}.graph-canvas.is-graph-loading .graph-loading,.graph-canvas.is-graph-empty .graph-empty,.graph-canvas.is-graph-without-usable-data .graph-no-usable-data,.graph-canvas.is-graph-load-error .graph-error{display:block}.svg-tip{position:absolute;z-index:99999;padding:8px 16px;font-size:12px;color:var(--color-fg-on-emphasis);text-align:center;background:var(--color-neutral-emphasis-plus);border-radius:6px}.svg-tip.is-visible{display:block}.svg-tip::after{position:absolute;bottom:-10px;left:50%;width:5px;height:5px;box-sizing:border-box;margin:0 0 0 -4px;content:" ";border:5px solid transparent;border-top-color:var(--color-neutral-emphasis-plus)}.svg-tip.left::after{left:10%}.svg-tip.right::after{left:90%}.svg-tip.comparison{padding:0;text-align:left;pointer-events:none}.svg-tip.comparison .title{display:block;padding:8px;margin:0;font-weight:600;line-height:1;pointer-events:none}.svg-tip.comparison ul{padding:4px 8px 8px 8px;margin:0;white-space:nowrap;list-style:none}.svg-tip.comparison li{display:inline-block;padding-top:16px}.svg-tip.comparison .metric-0,.svg-tip.comparison .metric-1{position:relative}.svg-tip.comparison .metric-0::before,.svg-tip.comparison .metric-1::before{position:absolute;top:0;right:0;left:0;height:4px;content:"";border:1px solid var(--color-border-default);border-radius:6px}.svg-tip.comparison .metric-0::before{background-color:var(--color-success-emphasis)}.svg-tip.comparison .metric-1::before{background-color:var(--color-accent-emphasis)}.svg-tip-one-line{white-space:nowrap}.LoadingDependencies{position:absolute;left:0;width:100%;animation:fadeOut;animation-duration:.6s;animation-fill-mode:forwards;animation-timing-function:ease-in}.LoadingDependencies--loading{position:relative}.LoadingDependencies--loading .octicon{opacity:0;animation:dropBox;animation-duration:1.25s;animation-fill-mode:forwards;animation-timing-function:linear;animation-delay:1s;animation-iteration-count:infinite}.LoadingDependencies--loading .octicon:nth-child(2){position:absolute;left:calc(50% - 27px);animation-delay:1.61s}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes dropBox{0%{opacity:1;transform:translateY(-110%)}7%{opacity:1;transform:translateY(20%);transform:translateX(0)}80%{opacity:1}100%{opacity:0;transform:translateX(-250%)}}.team-breadcrumb .team-breadcrumb-item{display:inline-block}.team-breadcrumb .team-breadcrumb-item::after{padding-right:.5em;padding-left:.5em;color:var(--color-neutral-muted);content:"/"}.team-breadcrumb .team-breadcrumb-item-selected::after{content:none}.team-discussions-container{min-height:100vh}.team-left-column{max-width:100%}@media(min-width: 768px){.team-left-column{max-width:350px}}.team-left-column .team-avatar{width:80px;height:80px}@media(min-width: 768px){.team-left-column .team-avatar{width:140px;height:140px}}.team-discussions{max-width:768px}.team-discussions .previewable-comment-form .comment{border:0}.team-discussions .previewable-comment-form .toolbar-commenting.toolbar-commenting.toolbar-commenting{background:transparent}.team-discussions .previewable-comment-form .tabnav-tab.selected{background-color:var(--color-canvas-default)}.discussion-post{opacity:1;transition:opacity 400ms}.discussion-post .timeline-comment::after,.discussion-post .timeline-comment::before{display:none}.discussion-post .post-author{margin-top:-4px}.discussion-post .post-author-timestamp{margin-top:-4px}.discussion-post.fade-out{opacity:0}.discussion-post .timeline-inline-comments{background:var(--color-canvas-subtle)}.discussion-post .team-discussion-timeline::before{bottom:20px}.discussion-post .reply-comment:first-child{border-top:1px solid var(--color-border-default)}.discussion-post .reply-comment:first-child .review-comment{padding-top:16px}.discussion-post .reply-comment .review-comment{padding:8px 16px}.discussion-post .reply-comment .review-comment.is-comment-editing{padding:0;background:var(--color-canvas-subtle)}.discussion-post .comment .comment-reactions{margin-left:16px;border-top:0 !important}.discussion-post .comment .reaction-summary-item{margin-bottom:16px}.discussion-post .reaction-summary-item:not(.add-reaction-btn){padding:0 8px;font-size:12px;line-height:26px;border:1px solid var(--color-border-default, #d2dff0);border-radius:6px}.discussion-post .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:16px;vertical-align:sub}.discussion-post .reaction-summary-item:not(.add-reaction-btn)+.reaction-summary-item{margin-left:8px}.discussion-post .reply-comments-holder{position:relative}.discussion-post .reply-comments-holder::before{position:absolute;top:51px;bottom:0;left:29px;width:2px;content:"";background-color:var(--color-border-muted)}.discussion-post .add-reaction-btn{padding:4px 8px}.discussion-post .pin-btn:disabled{pointer-events:none}.discussion-post .pinned{color:var(--color-severe-fg);opacity:1}.discussion-post .loading-spinner{display:none;float:left;margin-top:12px}.discussion-post .loading .loading-spinner{display:block}.discussion-post~.blankslate{display:none}.team-discussion-new-post .review-thread-reply-button:disabled{cursor:inherit;background-color:var(--color-canvas-subtle);border:0;box-shadow:none}.team-project-suggestion-number{font-weight:300;color:#a3aab1}.team-discussion-nav-disabled{pointer-events:none}.team-group-mapping-search-results .select-menu-loading{display:inherit}.team-group-mapping-search-results .select-menu-error{display:none}.team-group-mapping-search-results.is-error .select-menu-loading{display:none}.team-group-mapping-search-results.is-error .select-menu-error{display:inherit}.external-group-search-results .select-menu-loading{display:inherit}.external-group-search-results .select-menu-error{display:none}.external-group-search-results.is-error .select-menu-loading{display:none}.external-group-search-results.is-error .select-menu-error{display:inherit}.review_assignment_toggler>.assignment_form{display:none}.review_assignment_toggler.on>.assignment_form{display:block}.team-member-exclusion-toggler>.member-exclusion{display:none}.team-member-exclusion-toggler.on>.member-exclusion{display:block}.hooks-listing .boxed-group-action.select-menu{z-index:auto}.hooks-listing .boxed-group-inner{padding:0 8px;margin-bottom:8px}.hook-item a:hover{text-decoration:none}.hook-item .item-status{float:left;width:16px;margin-right:8px;text-align:center}.hook-item .description{color:var(--color-fg-muted)}.hook-item .description .css-truncate-target{max-width:160px}.hook-item .icon-for-success,.hook-item .icon-for-failure,.hook-item .icon-for-pending,.hook-item .icon-for-inactive{display:none}.hook-item.success .icon-for-success{display:inline-block;color:var(--color-success-fg)}.hook-item.failure .icon-for-failure{display:inline-block;color:var(--color-danger-fg)}.hook-item.pending .icon-for-pending{display:inline-block;color:var(--color-fg-muted)}.hook-item.inactive .icon-for-inactive{display:inline-block;color:var(--color-fg-muted)}.hook-item .icon-for-enabled,.hook-item .icon-for-disabled{display:none}.hook-item.enabled .icon-for-enabled{display:inline-block;color:var(--color-success-fg)}.hook-item.disabled .icon-for-disabled{display:inline-block;color:var(--color-fg-muted)}.hook-item .hook-error-message{margin-left:24px;color:var(--color-danger-fg)}.hook-url.css-truncate-target{max-width:360px}.hook-events-field .hook-event-selector{display:none}.hook-events-field.is-custom .hook-event-selector{display:block}.hook-event-selector{margin-left:8px}.hook-event{display:inline-block;width:310px;padding:4px 0 4px 32px;margin:0}.hook-event p{font-weight:400}.hook-event-choice{font-weight:400}.hooks-oap-warning{margin-top:0}.hooks-oap-warning ul{margin:8px 0}.hooks-oap-warning ul li{margin-left:16px}.hook-deliveries-list .spinner{display:inline-block;margin:0;vertical-align:top}.hook-deliveries-list .hook-delivery-item:hover{background-color:transparent}.hook-deliveries-list .item-status{display:inline-block;width:16px;margin-right:4px;text-align:center}.hook-deliveries-list .item-status .icon-for-success,.hook-deliveries-list .item-status .icon-for-failure,.hook-deliveries-list .item-status .icon-for-pending{display:none}.hook-deliveries-list .item-status.success{color:var(--color-success-fg);visibility:visible}.hook-deliveries-list .item-status.success .icon-for-success{display:inline-block}.hook-deliveries-list .item-status.failure{color:var(--color-danger-fg)}.hook-deliveries-list .item-status.failure .icon-for-failure{display:inline-block}.hook-deliveries-list .item-status.pending{color:var(--color-fg-muted)}.hook-deliveries-list .item-status.pending .icon-for-pending{display:inline-block}.boxed-group-list li.hook-delivery-item{padding:8px}.hook-delivery-time{float:right;margin-right:8px;font-size:10px;color:var(--color-fg-muted)}.hook-delivery-guid{display:inline-block;padding:2px 4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;color:var(--color-fg-muted);background-color:var(--color-accent-subtle);border-radius:6px}.hook-delivery-guid .octicon{margin:1px -2px 0 0;color:var(--color-fg-muted)}.hook-delivery-actions{padding-top:1px}.boxed-group-list>li.hook-delivery-item .btn-sm{margin:0}.hook-delivery-container hr{margin:8px 0}.hook-delivery-container pre{padding:8px 12px;margin:8px 0;overflow:auto;font-size:13px;line-height:1.5;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px}.hook-delivery-container .tabnav{margin:8px 0}.hook-delivery-container h4.remote-call-header{margin:16px 0 8px;border-bottom:1px solid var(--color-border-default)}.hook-delivery-response-status{display:inline-block;padding:4px 4px 4px;margin-left:4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:10px;line-height:1.1;color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis);border:1px solid transparent;border-radius:6px}.hook-delivery-response-status[data-response-status^="2"]{background-color:var(--color-success-emphasis)}.redelivery-dialog .pending-message{display:block}.redelivery-dialog .failure-message{display:none}.redelivery-dialog.failed{color:var(--color-danger-fg);background-color:var(--color-danger-subtle);border-color:var(--color-danger-emphasis)}.redelivery-dialog.failed .pending-message{display:none}.redelivery-dialog.failed .failure-message{display:block}.item-name{float:left;font-weight:600}.hovercard-icon{width:16px}.integration-meta-head{font-size:16px;color:var(--color-fg-muted)}.integrations-select-repos{max-height:138px;overflow-y:scroll;border-radius:6px}.integrations-select-repos .mini-repo-list-item{padding:8px 64px 8px 32px}.integrations-select-repos .mini-repo-list-item:hover .repo,.integrations-select-repos .mini-repo-list-item:hover .owner{text-decoration:none}.integrations-select-repos .mini-repo-list-item .css-truncate-target{max-width:345px}.integrations-select-repos::-webkit-scrollbar{width:10px}.integrations-select-repos::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5);border:solid var(--color-canvas-default) 2px;border-radius:6px;box-shadow:0 0 1px rgba(255,255,255,.5)}.integrations-select-repos::-webkit-scrollbar-track-piece{background:transparent}.integrations-repository-picker{width:440px}.target-avatar{position:relative;top:-2px}.issue-list-item+.issue-list-item{border-top:solid 1px var(--color-border-muted)}.pinned-issue-item .pinned-issue-handle{cursor:grab}.pinned-issue-item.is-dragging,.pinned-issue-item.is-dragging .pinned-issue-handle{cursor:grabbing}.pinned-issue-item.is-dragging{background-color:var(--color-accent-subtle)}.pinned-issue-item.sortable-ghost{background-color:var(--color-accent-subtle);opacity:0}.issues-reset-query-wrapper{margin-bottom:16px}.label-link:hover{text-decoration:none}.issues-reset-query{font-weight:600;color:var(--color-fg-muted)}.issues-reset-query:hover{color:var(--color-accent-fg);text-decoration:none}.issues-reset-query:hover .issues-reset-query-icon{background-color:var(--color-accent-emphasis)}.issues-reset-query-icon{width:18px;height:18px;padding:1px;margin-right:4px;color:var(--color-fg-on-emphasis);text-align:center;background-color:var(--color-neutral-emphasis);border-radius:6px}.table-list-milestones .stats{gap:0 15px}.table-list-milestones .table-list-cell{padding:16px 16px}.table-list-milestones .stat{display:inline-block;font-size:14px;font-weight:600;line-height:1.2;color:var(--color-fg-muted);white-space:nowrap}.table-list-milestones .stat a{color:inherit}.table-list-milestones .stat-label{font-weight:400;color:var(--color-fg-muted)}.milestone-title{width:500px}.milestone-title-link{margin-top:0;margin-bottom:4px;font-size:24px;font-weight:400;line-height:1.2}.milestone-title-link a{color:var(--color-fg-default, #333)}.milestone-title-link a:hover{color:var(--color-accent-fg)}.milestone-progress{width:auto;max-width:420px}.milestone-progress .progress-bar{margin-top:8px;margin-bottom:12px}.milestone-meta{font-size:14px}.milestone-meta-item{display:inline-block;margin-right:8px}.milestone-meta-item .octicon{width:16px;text-align:center}.milestone-description-html{display:none}.milestone-description{margin-top:4px}.milestone-description .expand-more{color:var(--color-accent-fg);cursor:pointer}.milestone-description .expand-more:hover{text-decoration:underline}.milestone-description.open .milestone-description-plaintext{display:none}.milestone-description.open .milestone-description-html{display:block}.milestones-flexbox-gap{gap:10px}.issue-reorder-warning{z-index:110}.task-progress{color:var(--color-fg-muted);text-decoration:none;vertical-align:top}.task-progress .octicon{margin-right:4px;color:var(--color-fg-muted, #999);vertical-align:bottom}.task-progress .progress-bar{display:inline-block;width:80px;height:5px;vertical-align:2px;background-color:var(--color-neutral-muted)}.task-progress .progress-bar .progress{background-color:var(--color-border-default)}.task-progress-counts{display:inline-block;margin-right:4px;margin-left:-2px;font-size:12px}a.task-progress:hover{color:var(--color-accent-fg)}a.task-progress:hover .octicon{color:inherit}a.task-progress:hover .progress-bar .progress{background-color:var(--color-accent-emphasis)}.issue-meta-section .octicon{color:var(--color-fg-muted, #ccc);vertical-align:bottom}.issue-milestone{max-width:240px}.issue-milestone .css-truncate-target{max-width:100px}.milestone-link .octicon{font-size:14px}.milestone-link:hover .octicon{color:inherit}.new-pr-form{margin-top:16px;margin-bottom:16px}.new-pr-form::before{display:table;content:""}.new-pr-form::after{display:table;clear:both;content:""}.new-pr-form .discussion-timeline::before{display:none}.label-select-menu .description{margin-left:16px}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-top:-1px;margin-right:2px;vertical-align:middle;border-radius:7px}.label-select-menu [aria-checked=true] .select-menu-item-icon,.label-select-menu [aria-checked=mixed] .select-menu-item-icon,.label-select-menu .selected .select-menu-item-icon{color:inherit !important}.label-select-menu [aria-checked=true] .octicon-circle-slash,.label-select-menu [aria-checked=mixed] .octicon-circle-slash,.label-select-menu .selected .octicon-circle-slash{color:var(--color-fg-muted)}.label-select-menu [aria-checked=true]:active,.label-select-menu [aria-checked=mixed]:active,.label-select-menu .selected:active{background-color:transparent !important}.label-select-menu .select-menu-item{position:relative}.label-select-menu .select-menu-item:hover,.label-select-menu .select-menu-item:focus,.label-select-menu .select-menu-item[aria-selected=true],.label-select-menu .select-menu-item.navigation-focus{color:inherit;background-color:var(--color-neutral-subtle)}.label-select-menu .select-menu-item:hover .select-menu-item-icon,.label-select-menu .select-menu-item:focus .select-menu-item-icon,.label-select-menu .select-menu-item[aria-selected=true] .select-menu-item-icon,.label-select-menu .select-menu-item.navigation-focus .select-menu-item-icon{color:transparent}.label-select-menu .select-menu-item:hover .label-options-icon,.label-select-menu .select-menu-item:focus .label-options-icon,.label-select-menu .select-menu-item[aria-selected=true] .label-options-icon,.label-select-menu .select-menu-item.navigation-focus .label-options-icon{color:inherit}.label-select-menu>form{position:relative}.subnav .btn+.issues-search{padding-right:8px;border-right:1px solid var(--color-border-muted)}.reaction-sort-item{float:left;width:39px;padding:4px;margin-top:4px;text-align:center;pointer-events:all;border:solid 1px transparent;border-radius:6px;opacity:.7}.reaction-sort-item:focus,.reaction-sort-item:hover{text-decoration:none;background-color:var(--color-accent-emphasis);opacity:1}.reaction-sort-item[aria-checked=true]{background-color:var(--color-accent-subtle);border-color:var(--color-accent-emphasis);opacity:1}.issue-keyword{border-bottom:1px dotted var(--color-border-default)}.issue-keyword:hover{border-bottom:0}.new-label-color-dimensions{width:24px;height:24px}.select-menu-item[aria-selected=true]>.octicon.label-options-icon,.select-menu-item.navigation-focus>.octicon.label-options-icon{color:var(--color-fg-default)}.new-label-color-input:invalid{color:var(--color-danger-fg)}.issue-form-textarea{height:100px !important;min-height:100px !important}.issue-forms-wysiwyg-container .comment-form-head{background:var(--color-canvas-subtle) !important}.issue-forms-wysiwyg-container .comment-body{border-bottom:0 !important}.issue-form-body>:first-child{margin-top:0 !important}.issue-create-branch-menu-action{color:var(--color-fg-default)}.issue-create-branch-menu-action:hover:not(:disabled){color:var(--color-fg-default);background-color:var(--color-canvas-subtle)}.issue-create-branch-menu-action:focus:not(:disabled){color:var(--color-fg-default);background-color:var(--color-neutral-subtle)}.repository-lang-stats{position:relative}.repository-lang-stats ol.repository-lang-stats-numbers li{display:table-cell;width:1%;padding:8px 4px;text-align:center;white-space:nowrap;border-bottom:0}.repository-lang-stats ol.repository-lang-stats-numbers li span.percent{float:none}.repository-lang-stats ol.repository-lang-stats-numbers li>a,.repository-lang-stats ol.repository-lang-stats-numbers li>span{font-weight:600;color:var(--color-fg-muted);text-decoration:none}.repository-lang-stats ol.repository-lang-stats-numbers li .lang{color:var(--color-fg-default)}.repository-lang-stats ol.repository-lang-stats-numbers li .language-color{display:inline-block;width:10px;height:10px;border-radius:50%}.repository-lang-stats ol.repository-lang-stats-numbers li a:hover{background:transparent}.repository-lang-stats-graph{width:100%;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--color-border-default);border-top:0;border-bottom-right-radius:6px;border-bottom-left-radius:6px}.repository-lang-stats-graph .language-color{line-height:8px;text-indent:-9999px}.repository-lang-stats-graph .language-color:first-child{border-bottom-left-radius:6px}.repository-lang-stats-graph .language-color:last-child{border-bottom-right-radius:6px}.repository-lang-stats-graph .language-color:not(:first-child){border-left:1px solid var(--color-canvas-default)}.facebox-loading,.octocat-spinner{min-height:64px;background-image:url("/images/spinners/octocat-spinner-64.gif");background-repeat:no-repeat;background-position:center center}.octocat-spinner-32{min-height:32px;background-image:url("/images/spinners/octocat-spinner-32.gif");background-repeat:no-repeat;background-position:center center}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.facebox-loading,.octocat-spinner{background-image:url("/images/spinners/octocat-spinner-128.gif");background-size:64px 64px}.octocat-spinner-32{background-image:url("/images/spinners/octocat-spinner-64.gif");background-size:32px 32px}}.map-container .activity{top:120px;left:340px;z-index:99999}.map-container .is-graph-loading .activity{display:block}.map{height:350px}.map-background{pointer-events:all;fill:#0366d6}.map-background-zoom{cursor:grab}.map-land{fill:none;stroke:#256aae;stroke-width:2;shape-rendering:crispedges}.map-country{fill:#d7c7ad;shape-rendering:crispedges;cursor:pointer}.map-country.hk{stroke:#a5967e}.map-country:hover{fill:#c8b28e}.map-country.active{fill:#f6e5ca}.map-borders{fill:none;stroke:#a5967e;shape-rendering:crispedges}.map-graticule{pointer-events:none;fill:none;stroke:#fff;stroke-opacity:.2;shape-rendering:crispedges}.map-graticule :nth-child(2n){stroke-dasharray:2,2}.map-legend .map-legend-circle{fill-opacity:0;stroke:#fff;stroke-width:1.5}.map-legend .map-legend-text{font-size:10px;fill:#fff;text-anchor:end}.map-legend .map-legend-link{stroke:#fff;stroke-width:1.5}.map-point{pointer-events:none;fill:#f66a0a}.map-point:hover{fill:#e36209}.map-country-info{top:8px;right:8px;pointer-events:none;opacity:0}.MarketplaceJumbotron{background-color:var(--color-neutral-emphasis);background-image:url("/images/modules/marketplace/bg-hero.svg");background-repeat:repeat-y;background-position:center top;background-size:150% auto}@media(min-width: 768px){.MarketplaceJumbotron{background-repeat:no-repeat;background-size:cover}}.CircleBadge--feature{position:relative;top:0;transition:top .15s ease-in,box-shadow .12s ease-in}.MarketplaceFeature{min-width:250px}.MarketplaceFeature-text{opacity:.7;transition:opacity .12s ease-in}.MarketplaceFeature-link:hover .CircleBadge--feature{top:-3px;box-shadow:0 3px 8px 0 rgba(0,0,0,.2)}.MarketplaceFeature-link:hover .MarketplaceFeature-text{opacity:1}.MarketplaceFeature-link:active .CircleBadge--feature{top:0;box-shadow:0}.MarketplaceSideNav{-webkit-overflow-scrolling:touch;background-color:var(--color-canvas-subtle)}@media(min-width: 768px){.MarketplaceSideNav{background-color:var(--color-canvas-default);border-right:1px solid var(--color-border-default)}}.ScreenshotCarousel{border:1px solid var(--color-border-default);border-radius:6px}.ScreenshotCarousel-screenshot{padding:16px}.ScreenshotCarousel-nav{display:flex;overflow-x:auto;align-items:top;box-shadow:inset 0 1px 0 var(--color-border-default)}.ScreenshotCarousel-navitem{width:20%;min-width:120px;padding:16px;cursor:pointer;border-right:1px solid var(--color-border-default)}.ScreenshotCarousel-navitem:last-child{border-right:0}.ScreenshotCarousel-navitem.selected{background-color:var(--color-canvas-subtle);box-shadow:inset 0 0 4px rgba(36,41,46,.15)}.marketplace-listing-screenshot-container{width:175px;min-height:175px;background-repeat:no-repeat;background-position:center center;background-size:cover}.marketplace-listing-screenshot-zoom{display:none;cursor:move}.marketplace-listing-details-sidebar{order:2}@media(min-width: 768px){.marketplace-listing-details-sidebar{order:1}}.marketplace-listing-details-description{order:1}@media(min-width: 768px){.marketplace-listing-details-description{order:2}}.marketplace-listing-screenshot-link{height:100px;cursor:move}.marketplace-listing-screenshot-link:hover .marketplace-listing-screenshot-zoom,.marketplace-listing-screenshot-link:focus .marketplace-listing-screenshot-zoom{top:0;left:0;display:block;width:100%;height:100%;padding-top:24px;background-color:rgba(255,255,255,.75)}.marketplace-integratable-logo{width:40px;height:40px}.marketplace-listing-save-notice,.marketplace-listing-save-error{display:none;opacity:0;transition:opacity .15s linear}.marketplace-listing-save-notice.visible,.marketplace-listing-save-error.visible{display:inline-block;opacity:1}.marketplace-listing-screenshot-delete-form{position:absolute;bottom:-24px;width:100%;text-align:center}.marketplace-plan-dollar-field-container .price-note{display:none}.marketplace-plan-dollar-field-container.is-errored .price-note{display:block}.marketplace-plan-dollar-field-container.is-errored .form-control{border-color:var(--color-danger-emphasis)}.marketplace-plan-emphasis{color:var(--color-fg-default)}.selected .marketplace-plan-emphasis{color:var(--color-fg-on-emphasis)}.marketplace-plan-unit-name-preview::before{content:"per "}.marketplace-plan-per-time{clear:right}.marketplace-billing-modal{width:540px;max-height:90vh;margin-top:5vh}.marketplace-listing-markdown,.marketplace-url-link{word-wrap:break-word;white-space:pre-wrap}.marketplace-listing-markdown{line-height:1.4}.marketplace-product-callout{border-color:var(--color-border-default) !important}.marketplace-product-callout::before,.marketplace-product-callout::after{display:none}.marketplace-product-callout .branch-action-item-icon{color:var(--color-fg-muted);background-color:var(--color-canvas-subtle)}.filter-item.selected .Label--secondary{color:var(--color-fg-on-emphasis);border-color:var(--color-fg-on-emphasis)}.MarketplaceEdit-body{min-height:570px}.MarketplaceEdit-body .pricing-model-selector{width:calc(100% - 12px);max-width:100% !important}.MarketplaceEdit-body .menu{border-right:0;border-left:0;border-radius:0}.MarketplaceEdit-body .menu-item{padding:12px 16px;background:var(--color-canvas-subtle)}.MarketplaceEdit-body .menu-item.selected{background:var(--color-canvas-default)}.MarketplaceEdit-body .menu-item:hover{background:var(--color-canvas-subtle)}.MarketplaceEdit-body .menu-item.selected::before{position:absolute;top:0;bottom:0;left:0;width:3px;content:"";background-color:var(--color-severe-emphasis)}.MarketplaceEdit-body .menu-item:first-child::before{border-top-left-radius:0}.MarketplaceEdit-body .CircleIcon{display:inline-block;width:32px;height:32px;font-weight:600;line-height:32px;color:var(--color-fg-muted);text-align:center;background:#e6ebf1;border-radius:50%}.MarketplaceEdit-body .CircleIcon .octicon{display:inline-block}.MarketplaceInsights-graph .insights-month .tick:nth-child(2n){visibility:hidden}.BarChart{border-radius:6px}.BarChart-bar{height:10px;border-right:1px solid var(--color-canvas-default)}.BarChart-bar--green{background-color:var(--color-success-emphasis)}.BarChart-bar--orange{background-color:var(--color-severe-emphasis)}.BarChart-bar--yellow{background-color:var(--color-attention-emphasis)}.CircleBadge--tiny{width:32px;height:32px}.CircleBadge--github{position:relative}.CircleBadge--github.CircleBadge--large::after{right:5px;bottom:5px}.CircleBadge--github.CircleBadge--small::after{right:-5px;bottom:-5px}.CircleBadge--github::after{position:absolute;right:0;bottom:0;display:block;width:22px;height:22px;padding:4px;line-height:0;content:"";background:var(--color-canvas-default) url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMnB4IiBoZWlnaHQ9IjIycHgiIHZpZXdCb3g9IjAgMCAyMiAyMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5TaGFwZSBDb3B5PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IktpdGNoZW4tc2luayIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8ZyBpZD0iT2N0aWNvbnMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zNzAuMDAwMDAwLCAtMTU4NC4wMDAwMDApIiBmaWxsPSIjMUIxRjIzIj4gICAgICAgICAgICA8cGF0aCBkPSJNMzgxLDE1ODQgQzM3NC45MjI1LDE1ODQgMzcwLDE1ODguOTIyNSAzNzAsMTU5NSBDMzcwLDE1OTkuODY3NSAzNzMuMTQ4NzUsMTYwMy45Nzg3NSAzNzcuNTIxMjUsMTYwNS40MzYyNSBDMzc4LjA3MTI1LDE2MDUuNTMyNSAzNzguMjc3NSwxNjA1LjIwMjUgMzc4LjI3NzUsMTYwNC45MTM3NSBDMzc4LjI3NzUsMTYwNC42NTI1IDM3OC4yNjM3NSwxNjAzLjc4NjI1IDM3OC4yNjM3NSwxNjAyLjg2NSBDMzc1LjUsMTYwMy4zNzM3NSAzNzQuNzg1LDE2MDIuMTkxMjUgMzc0LjU2NSwxNjAxLjU3MjUgQzM3NC40NDEyNSwxNjAxLjI1NjI1IDM3My45MDUsMTYwMC4yOCAzNzMuNDM3NSwxNjAwLjAxODc1IEMzNzMuMDUyNSwxNTk5LjgxMjUgMzcyLjUwMjUsMTU5OS4zMDM3NSAzNzMuNDIzNzUsMTU5OS4yOSBDMzc0LjI5LDE1OTkuMjc2MjUgMzc0LjkwODc1LDE2MDAuMDg3NSAzNzUuMTE1LDE2MDAuNDE3NSBDMzc2LjEwNSwxNjAyLjA4MTI1IDM3Ny42ODYyNSwxNjAxLjYxMzc1IDM3OC4zMTg3NSwxNjAxLjMyNSBDMzc4LjQxNSwxNjAwLjYxIDM3OC43MDM3NSwxNjAwLjEyODc1IDM3OS4wMiwxNTk5Ljg1Mzc1IEMzNzYuNTcyNSwxNTk5LjU3ODc1IDM3NC4wMTUsMTU5OC42MyAzNzQuMDE1LDE1OTQuNDIyNSBDMzc0LjAxNSwxNTkzLjIyNjI1IDM3NC40NDEyNSwxNTkyLjIzNjI1IDM3NS4xNDI1LDE1OTEuNDY2MjUgQzM3NS4wMzI1LDE1OTEuMTkxMjUgMzc0LjY0NzUsMTU5MC4wNjM3NSAzNzUuMjUyNSwxNTg4LjU1MTI1IEMzNzUuMjUyNSwxNTg4LjU1MTI1IDM3Ni4xNzM3NSwxNTg4LjI2MjUgMzc4LjI3NzUsMTU4OS42Nzg3NSBDMzc5LjE1NzUsMTU4OS40MzEyNSAzODAuMDkyNSwxNTg5LjMwNzUgMzgxLjAyNzUsMTU4OS4zMDc1IEMzODEuOTYyNSwxNTg5LjMwNzUgMzgyLjg5NzUsMTU4OS40MzEyNSAzODMuNzc3NSwxNTg5LjY3ODc1IEMzODUuODgxMjUsMTU4OC4yNDg3NSAzODYuODAyNSwxNTg4LjU1MTI1IDM4Ni44MDI1LDE1ODguNTUxMjUgQzM4Ny40MDc1LDE1OTAuMDYzNzUgMzg3LjAyMjUsMTU5MS4xOTEyNSAzODYuOTEyNSwxNTkxLjQ2NjI1IEMzODcuNjEzNzUsMTU5Mi4yMzYyNSAzODguMDQsMTU5My4yMTI1IDM4OC4wNCwxNTk0LjQyMjUgQzM4OC4wNCwxNTk4LjY0Mzc1IDM4NS40Njg3NSwxNTk5LjU3ODc1IDM4My4wMjEyNSwxNTk5Ljg1Mzc1IEMzODMuNDIsMTYwMC4xOTc1IDM4My43NjM3NSwxNjAwLjg1NzUgMzgzLjc2Mzc1LDE2MDEuODg4NzUgQzM4My43NjM3NSwxNjAzLjM2IDM4My43NSwxNjA0LjU0MjUgMzgzLjc1LDE2MDQuOTEzNzUgQzM4My43NSwxNjA1LjIwMjUgMzgzLjk1NjI1LDE2MDUuNTQ2MjUgMzg0LjUwNjI1LDE2MDUuNDM2MjUgQzM4OC44NTEyNSwxNjAzLjk3ODc1IDM5MiwxNTk5Ljg1Mzc1IDM5MiwxNTk1IEMzOTIsMTU4OC45MjI1IDM4Ny4wNzc1LDE1ODQgMzgxLDE1ODQgTDM4MSwxNTg0IFoiIGlkPSJTaGFwZS1Db3B5Ij48L3BhdGg+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=") center no-repeat;border-radius:100px}body.page-responsive .flash-full .container{width:100%;max-width:980px}.ClipboardButton{position:relative}.ClipboardButton.ClipboardButton--success{border-color:var(--color-success-emphasis);box-shadow:0 0 0 .2em rgba(52,208,88,.4)}.ClipboardButton.ClipboardButton--success:focus{box-shadow:0 0 0 .2em rgba(52,208,88,.4)}@media(min-width: 768px){.MarketplacePlan--sticky{position:sticky;top:24px;z-index:999}}@media(max-width: 544px){.Box--full{right:0;bottom:0;left:0;width:100%;max-width:none;max-height:none;margin:0;border-radius:0;transform:none}}.MarketplaceBackground-wrapper{position:relative}.MarketplaceBackground-recommendations{position:relative;top:-90px;width:313px;margin-top:-150px;margin-bottom:-120px;overflow:hidden}.MarketplaceBackground-recommendations img{position:relative;top:0;right:225px;width:549px}@media(min-width: 544px){.MarketplaceBackground-recommendations{position:relative;width:463px;margin-top:-180px;margin-bottom:70px;overflow:hidden}.MarketplaceBackground-recommendations img{right:305px;width:730px}}@media(min-width: 768px){.MarketplaceBackground-recommendations{position:absolute;top:-228px;right:-69px;width:633px}.MarketplaceBackground-recommendations img{right:195px;width:750px}}@media(min-width: 1012px){.MarketplaceBackground-recommendations{top:-268px;right:0;width:1040px}.MarketplaceBackground-recommendations img{right:-115px;width:900px}}@media(min-width: 1280px){.MarketplaceBackground-recommendations{top:-325px;right:105px;width:1040px}.MarketplaceBackground-recommendations img{right:0;width:1040px}}.MarketplaceBackground-buffer{padding-top:40px;margin-top:-146px;background:var(--color-canvas-subtle)}@media(min-width: 544px){.MarketplaceBackground-buffer{padding-top:120px;margin-top:-233px}}@media(min-width: 768px){.MarketplaceBackground-buffer{margin-top:-109px}}@media(min-width: 1012px){.MarketplaceBackground-buffer{margin-top:-89px}}.MarketplaceHeader{overflow:hidden}.Link--muted.filter-item.selected{color:var(--color-fg-on-emphasis) !important}.MarketplaceBody{position:relative}@media(min-width: 544px){.MarketplaceBody{top:-72px;z-index:2}}.MarketplaceDetails .octicon{transition:transform 200ms linear;transform:scaleY(1)}.MarketplaceDetails[open] .octicon{transform:scaleY(-1)}.MarketplaceAnnouncement{color:#fff;background:linear-gradient(90deg, #257bf9, #2426ca)}.MarketplaceAnnouncement-icon{width:80px;opacity:.9}.MarketplaceAnnouncement-description{opacity:.7}.member-list-item .table-list-cell-checkbox{width:30px}.member-list-item.adminable .member-info{padding-left:4px}.member-list-item .member-avatar-cell{width:64px}.member-meta .select-menu-modal{width:310px}.member-meta .select-menu-modal-holder{right:0;text-align:left}.triage-mode .none-selected{display:none}.merge-branch-heading{margin:0;line-height:1;color:var(--color-fg-default)}.merge-branch-description{margin-right:160px;margin-bottom:-4px;line-height:1.6em;color:var(--color-fg-muted)}.alt-merge-options{display:inline-block;margin-bottom:0;margin-left:4px;vertical-align:middle}.merged .merge-branch-description .commit-ref .css-truncate-target{max-width:180px}.merge-branch-prh-output{margin-top:8px}.merge-branch-form,.queue-branch-form{display:none;padding-left:60px}.merge-branch-manually{display:none;padding-top:16px;margin-top:16px;background-color:transparent;border-top:1px solid var(--color-border-default)}.merge-branch-manually p{margin-bottom:0}.merge-branch-manually h3{margin-bottom:8px}.merge-branch-manually .intro{padding-bottom:8px;margin-top:0}.merge-branch-manually .step{margin:16px 0 4px}.open .merge-branch-manually{display:block}.select-menu-merge-method{width:310px}.select-menu-merge-method .select-menu-item:hover,.select-menu-merge-method .select-menu-item:hover .octicon,.select-menu-merge-method .select-menu-item:hover .select-menu-item-text{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.select-menu-merge-method .select-menu-item:hover .description{color:var(--color-fg-on-emphasis)}.merge-pr.is-squashing .commit-author-fields{display:none}.merge-pr.is-rebasing .commit-form-fields{display:none;transition:opacity .15s linear 0s,margin-top .25s ease .1s}.merge-pr .btn-group-merge,.merge-pr .btn-group-merge-group,.merge-pr .merge-queue-info,.merge-pr .merge-queue-group-time-to-merge,.merge-pr.is-squashing .btn-group-squash,.merge-pr.is-rebasing .btn-group-rebase,.merge-pr.is-updating-via-merge .btn-group-update-merge,.merge-pr.is-updating-via-rebase .btn-group-update-rebase,.merge-pr.is-merging-solo .btn-group-merge-solo,.merge-pr.is-merging-solo .merge-queue-solo-time-to-merge,.merge-pr.is-merging-jump .btn-group-merge-jump,.merge-pr.is-merging-group .btn-group-merge-group,.merge-pr.is-merging .btn-group-merge-directly,.merge-pr.is-merging .merging-directly-warning{display:inline-block}.merge-pr .merging-body,.merge-pr .rebasing-body,.merge-pr .squashing-body,.merge-pr .merging-body-merge-warning,.merge-pr .merging-directly-warning,.merge-pr.is-merging .merge-queue-info,.merge-pr.is-merging-group .merge-queue-solo-time-to-merge,.merge-pr.is-merging-solo .merge-queue-group-time-to-merge,.merge-pr.is-merging .branch-action-state-error-if-merging .merging-body{display:none}.merge-pr.is-merging .merging-body,.merge-pr.is-merging-solo .merging-body,.merge-pr.is-merging-jump .merging-body,.merge-pr.is-merging-group .merging-body,.merge-pr.is-rebasing .rebasing-body,.merge-pr.is-squashing .squashing-body,.merge-pr.is-merging .branch-action-state-error-if-merging .merging-body-merge-warning{display:block}.merge-pr .btn-group-squash,.merge-pr .btn-group-merge-solo,.merge-pr .btn-group-merge-jump,.merge-pr .btn-group-merge-directly,.merge-pr .btn-group-rebase,.merge-pr .btn-group-update-merge,.merge-pr .btn-group-update-rebase,.merge-pr.is-squashing .btn-group-merge,.merge-pr.is-rebasing .btn-group-merge,.merge-pr.is-merging-solo .btn-group-merge-group,.merge-pr.is-merging-jump .btn-group-merge-group,.merge-pr.is-merging .btn-group-merge-group{display:none;margin-left:0}.commit-form-fields{transition:opacity .15s linear .1s,margin-top .25s ease 0s}.unavailable-merge-method{display:block;margin-top:4px;color:var(--color-severe-fg)}[aria-selected=true].disabled .unavailable-merge-method,.navigation-focus.disabled .unavailable-merge-method{color:var(--color-fg-on-emphasis)}.required-check-runs-modal{width:500px}.required-check-runs-modal .status-check-item-body{max-width:none}.try-merge-queue-popover{left:265px}@media(min-width: 1012px){.try-merge-queue-popover{left:272px}}.try-merge-queue-beta-flag{vertical-align:middle}.network .network-tree{vertical-align:middle}.network .gravatar{margin-right:4px;vertical-align:middle;border-radius:6px}.network .octicon{display:inline-block;width:16px;margin-left:2px;text-align:center;vertical-align:middle}.internal-repo-avatar{right:4px;bottom:-4px;border:solid 2px var(--color-canvas-default)}.owner-reponame dl.form-group{margin-top:4px;margin-bottom:0}.owner-reponame .slash{float:left;padding-top:32px;margin:0 8px;font-size:21px;color:var(--color-fg-muted)}.reponame-suggestion{color:var(--color-success-fg);cursor:pointer}.upgrade-upsell{padding-left:32px}.cc-upgrade{padding-left:16px}.news .release{margin-top:0;margin-bottom:0}.news blockquote{color:var(--color-fg-muted)}.news .alert{position:relative;padding:0 0 1em 45px;overflow:hidden;border-top:1px solid #eff3f6}.news .alert .commits{padding-left:40px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .alert p{margin:0}.news .alert .markdown-body blockquote{padding:0 0 0 40px;border-width:0}.news .alert .octicon{color:var(--color-fg-muted)}.news .alert .dashboard-event-icon{position:absolute;top:18px;left:22px;transform:translateX(-50%)}.news .alert .body{padding:1em 0 0;overflow:hidden;font-size:14px;border-bottom:0}.news .alert .time{font-size:12px;color:var(--color-fg-muted)}.news .alert .title{padding:0;font-weight:600}.news .alert .title .subtle{color:var(--color-fg-muted)}.news .alert .gravatar{float:left;margin-right:.6em;line-height:0;background-color:var(--color-canvas-default);border-radius:6px}.news .alert .simple .title{display:inline-block;font-size:13px;font-weight:400;color:var(--color-fg-muted)}.news .alert .simple .time{display:inline-block}.news .alert:first-child{border-top:0}.news .alert:first-child .body{padding-top:0}.news .alert:first-child .dashboard-event-icon{top:0}.news .github-welcome .done{color:var(--color-fg-muted);text-decoration:line-through}.news .commits li{margin-top:.15em;list-style-type:none}.news .commits li.more{padding-top:2px;font-size:11px}.news .commits li .committer{display:none;padding-left:.5em}.news .commits li img{margin:0 1px 0 0;vertical-align:middle;background-color:var(--color-canvas-default);border-radius:6px}.news .commits li img.emoji{padding:0;margin:0;border:0}.news .commits li .message{display:inline-block;max-width:390px;margin-top:2px;overflow:hidden;font-size:13px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.news div.message,.news li blockquote{display:inline;font-size:13px;color:var(--color-fg-muted)}.notification-routing .notification-email .edit-link{margin-right:8px;font-weight:600}.notification-routing .notification-email .btn-sm{float:none;margin:-2px 0 0}.notification-routing .notification-email .edit-form{display:none}.notification-routing .notification-email.open .edit-form{display:block}.notification-routing .notification-email.open .email-display{display:none}.oauth-permissions-details{position:relative;padding:16px;margin:0;list-style:none;border-bottom:1px solid var(--color-border-muted)}.oauth-permissions-details:first-child{border-radius:6px 6px 0 0}.oauth-permissions-details:last-child{border:0;border-radius:0 0 6px 6px}.oauth-permissions-details.oauth-public-data-only{border-radius:6px}.oauth-permissions-details .markdown-body{font-size:13px}.oauth-permissions-details .content{display:none;margin-left:45px}.oauth-permissions-details .content .form-checkbox{margin-left:0}.oauth-permissions-details .content .form-checkbox:last-child{margin-bottom:0}.oauth-permissions-details .octicon{float:left;color:var(--color-fg-muted);text-align:center}.oauth-permissions-details .permission-help{font-size:13px}.oauth-permissions-details .permission-help ul{padding-left:16px;margin:1em 0}.oauth-permissions-details .permission-summary{margin-left:45px}.oauth-permissions-details .permission-summary .access-details{position:relative;color:var(--color-fg-muted)}.oauth-permissions-details .permission-summary em.highlight{position:relative;padding:2px 4px;margin-right:-2px;margin-left:-4px;font-style:normal;color:var(--color-fg-default);background:var(--color-search-keyword-hl);border-radius:6px}.oauth-permissions-details .permission-title{display:block;color:var(--color-fg-default)}.oauth-permissions-details a.btn-sm{float:right;margin-top:4px}.oauth-permissions-details.open a.btn-sm{background-color:#dcdcdc;background-image:none;border-color:#b5b5b5;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.oauth-permissions-details.open .content{display:block}.oauth-permissions-details.default:not(.delete) .no-access,.oauth-permissions-details.default:not(.delete) .default-access,.oauth-permissions-details.none .no-access,.oauth-permissions-details.none .default-access{display:inline}.oauth-permissions-details.default:not(.delete) .access-details,.oauth-permissions-details.default:not(.delete) .permission-title,.oauth-permissions-details.none .access-details,.oauth-permissions-details.none .permission-title{color:var(--color-fg-muted)}.oauth-permissions-details.default:not(.delete) .octicon,.oauth-permissions-details.none .octicon{color:var(--color-fg-muted)}.oauth-permissions-details.default .default-access{display:inline}.oauth-permissions-details.full .full-access{display:inline}.oauth-details-toggle{position:absolute;top:0;right:0;padding:16px 16px}.oauth-details-toggle .octicon-chevron-up{display:none}.open .oauth-details-toggle .octicon-chevron-down{display:none}.open .oauth-details-toggle .octicon-chevron-up{display:block}.oauth-user-permissions .full-access,.oauth-user-permissions .limited-access,.oauth-user-permissions .limited-access-emails-followers,.oauth-user-permissions .limited-access-emails-profile,.oauth-user-permissions .limited-access-followers-profile,.oauth-user-permissions .limited-access-profile,.oauth-user-permissions .limited-access-followers,.oauth-user-permissions .limited-access-emails,.oauth-user-permissions .no-access{display:none}.oauth-user-permissions.limited.limited-email .limited-access-emails{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails-profile{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-profile,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-profile,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-followers,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access{display:inline}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-followers{display:none}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-emails-followers{display:inline}.oauth-user-permissions.limited.limited-follow .limited-access-followers{display:inline}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers,.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers-profile{display:inline}.oauth-user-permissions.limited.limited-profile .limited-access-profile{display:inline}.oauth-repo-permissions .default-access,.oauth-repo-permissions .public-access,.oauth-repo-permissions .limited-repo-invite-access,.oauth-repo-permissions .full-access{display:none}.oauth-repo-permissions.full .full-access{display:inline}.oauth-repo-permissions.limited-repo-invite .limited-repo-invite-access{display:inline}.oauth-repo-permissions.public .public-access{display:inline}.oauth-repo-permissions.default .default-access{display:inline}.oauth-delete-repo-permissions .octicon-alert{color:var(--color-danger-fg)}.oauth-repo-status-permissions .no-access,.oauth-repo-status-permissions .full-access,.oauth-repo-deployment-permissions .no-access,.oauth-repo-deployment-permissions .full-access{display:none}.oauth-notifications-permissions .no-access,.oauth-notifications-permissions .read-access,.oauth-notifications-permissions .via-public-access,.oauth-notifications-permissions .via-full-access{display:none}.oauth-notifications-permissions.read .read-access{display:inline}.oauth-notifications-permissions.via-public .via-public-access{display:inline}.oauth-notifications-permissions.via-public .octicon{display:none}.oauth-notifications-permissions.via-full .via-full-access{display:inline}.oauth-gist-permissions .no-access,.oauth-gist-permissions .full-access{display:none}.oauth-granular-permissions .no-access,.oauth-granular-permissions .read-access,.oauth-granular-permissions .write-access,.oauth-granular-permissions .full-access{display:none}.oauth-granular-permissions.none .no-access{display:inline}.oauth-granular-permissions.read .read-access{display:inline}.oauth-granular-permissions.write .write-access{display:inline}.oauth-granular-permissions.full .full-access{display:inline}.oauth-no-description{color:var(--color-fg-muted)}.oauth-org-access-details{background:var(--color-canvas-default)}.oauth-org-access-details .oauth-org-item:hover{background:var(--color-canvas-subtle)}.oauth-org-access-details a:hover{text-decoration:none}.oauth-org-access-details .boxed-group-inner{border:0;border-radius:6px}.oauth-org-access-details .oauth-org-item{line-height:24px}.oauth-org-access-details .oauth-org-item:first-child{border-radius:6px 6px 0 0}.oauth-org-access-details .oauth-org-item .loading-indicator{display:none;margin:4px}.oauth-org-access-details .oauth-org-item.on .authorized-tools{display:block}.oauth-org-access-details .oauth-org-item.on .unauthorized-tools{display:none}.oauth-org-access-details .oauth-org-item.on strong{color:var(--color-fg-default)}.oauth-org-access-details .oauth-org-item.on .octicon-check{display:inline}.oauth-org-access-details .oauth-org-item.on .octicon-x{display:none}.oauth-org-access-details .oauth-org-item.revoked{background:var(--color-canvas-default)}.oauth-org-access-details .oauth-org-item.revoked .unauthorized-tools,.oauth-org-access-details .oauth-org-item.revoked .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item.revoked .octicon-x{color:var(--color-danger-fg)}.oauth-org-access-details .oauth-org-item.loading .unauthorized-tools,.oauth-org-access-details .oauth-org-item.loading .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item.loading .loading-indicator{display:block}.oauth-org-access-details .oauth-org-item .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item .unauthorized-tools{display:block}.oauth-org-access-details .btn{line-height:1.5em}.oauth-org-access-details .octicon{color:var(--color-fg-muted)}.oauth-org-access-details .octicon-check{display:none;color:var(--color-success-fg)}.oauth-org-access-details .octicon-x{display:inline}.oauth-org-access-details .octicon-x.org-access-denied{color:var(--color-danger-fg)}.permission-title{margin-top:0}.oauth-application-whitelist h2{display:inline-block}.oauth-application-whitelist .request-info{display:block}.oauth-application-whitelist .request-info strong{display:inline-block;color:var(--color-fg-default)}.oauth-application-whitelist .request-info .application-description{display:none}.oauth-application-whitelist .request-info.open .application-description{display:block}.oauth-application-whitelist .avatar{margin-top:0}.oauth-application-whitelist .requestor{font-weight:600}.oauth-application-whitelist .octicon-alert{color:var(--color-severe-fg)}.oauth-application-whitelist .octicon-check,.oauth-application-whitelist .approved-request{color:var(--color-success-fg)}.oauth-application-whitelist .denied-request{color:var(--color-danger-fg)}.oauth-application-whitelist .request-indicator{margin-left:8px}.oauth-application-whitelist .edit-link{color:var(--color-fg-muted)}.oauth-application-whitelist .edit-link:hover{color:var(--color-accent-fg)}.oauth-application-whitelist .boxed-group-list{margin-top:1em}.oauth-application-whitelist .boxed-group-list li{padding:8px}.boxed-group-inner .oauth-application-info{margin-bottom:8px}.oauth-application-info .application-title{font-size:30px;color:var(--color-fg-default)}.oauth-application-info .application-description{margin-top:4px;margin-bottom:0}.oauth-application-info .app-info{display:inline-block;margin-right:8px;color:var(--color-fg-muted)}.oauth-application-info .app-info .octicon{margin-right:4px}.oauth-application-info .listgroup-item{line-height:inherit}.oauth-application-info .app-denied,.oauth-application-info .app-approved{margin-left:8px;font-size:13px;font-weight:400;white-space:nowrap}.oauth-application-info .app-approved,.oauth-application-info .octicon-check{color:var(--color-success-fg)}.oauth-application-info .app-denied,.oauth-application-info .octicon-x{color:var(--color-severe-fg)}.restrict-oauth-access-button{margin-right:16px}.restrict-oauth-access-info{margin-bottom:40px;font-size:14px}.restrict-oauth-access-list{padding-left:24px}.restrict-oauth-access-list li{margin-bottom:8px}.restrict-oauth-access-list li:last-child{margin-bottom:0}.app-transfer-actions form{display:inline}.oauth-border{border-top:1px solid var(--color-border-muted)}.oauth-border:last-child{border-bottom:1px solid var(--color-border-muted)}.developer-app-item .developer-app-avatar-cell{width:60px}.developer-app-item .developer-app-name{font-size:14px;font-weight:600;line-height:1.25;color:var(--color-fg-default)}.developer-app-item .developer-app-name:hover{color:var(--color-accent-fg);text-decoration:none}.developer-app-item .developer-app-info-cell{padding-left:0}.developer-app-item .developer-app-list-meta{margin-top:4px;margin-bottom:2px;font-weight:400;color:var(--color-fg-muted)}.org-transfer-requests{margin:8px 0 16px}.toggle-secret-field .secret-standin{display:block}.toggle-secret-field .secret-field{display:none}.toggle-secret-field.open .secret-standin{display:none}.toggle-secret-field.open .secret-field{display:block}.org-insights-graph-canvas .activity{width:400px;padding:8px;margin:100px auto 0;color:var(--color-fg-default);text-align:center;border-radius:6px}.org-insights-graph-canvas .dots{margin:0 auto}.org-insights-graph-canvas .totals circle{stroke-width:4;opacity:0}.org-insights-graph-canvas .totals circle:only-child{opacity:1}.org-insights-graph-canvas>.activity{display:none}.org-insights-graph-canvas .axis{font-size:10px}.org-insights-graph-canvas .axis line{stroke:rgba(27,31,35,.1);shape-rendering:crispedges}.org-insights-graph-canvas .axis text{font-size:12px;font-weight:300;fill:var(--color-fg-muted)}.org-insights-graph-canvas .axis path{display:none}.org-insights-graph-canvas .axis .zero line{stroke:var(--color-accent-emphasis);stroke-dasharray:3 3;stroke-width:1.5}.org-insights-graph-canvas path{fill:none;stroke-width:2}.org-insights-graph-canvas .y line{display:none}.org-insights-graph-canvas .y.unique line{stroke:#1d7fb3}.org-insights-graph-canvas .overlay{fill-opacity:0}.org-insights-graph-canvas .graph-loading{padding:110px 0}.org-insights-graph-canvas .graph-loading,.org-insights-graph-canvas .graph-error,.org-insights-graph-canvas .graph-no-usable-data,.org-insights-graph-canvas .graph-empty{display:none}.org-insights-graph-canvas.is-graph-loading>.activity,.org-insights-graph-canvas.is-graph-without-usable-data>.activity,.org-insights-graph-canvas.is-graph-empty>.activity{display:block}.org-insights-graph-canvas.is-graph-loading .graph-loading,.org-insights-graph-canvas.is-graph-empty .graph-empty,.org-insights-graph-canvas.is-graph-without-usable-data .graph-no-usable-data,.org-insights-graph-canvas.is-graph-load-error .graph-error{display:block}.org-insights-svg-tip{position:absolute;z-index:99999;padding:8px;pointer-events:none}.org-insights-svg-tip.is-visible{display:block}.org-insights-svg-tip::after,.org-insights-svg-tip::before{position:absolute;top:100%;left:50%;width:0;height:0;pointer-events:none;content:" ";border:solid transparent}.org-insights-svg-tip::after{margin-left:-4px;border-color:rgba(255,255,255,0);border-width:5px;border-top-color:var(--color-canvas-default)}.org-insights-svg-tip::before{margin-left:-4px;border-color:rgba(0,0,0,0);border-width:6px;border-top-color:var(--color-border-default)}.org-insights-svg-tip.comparison{padding:8px;text-align:left;pointer-events:none}.org-insights-svg-tip.comparison ul{margin:0;white-space:nowrap;list-style:none}.org-insights-svg-tip.comparison li{position:relative}.org-insights-svg-tip.comparison li .legend{width:7px;height:7px;border-radius:50%}.org-insights-card-legend .metric-0{color:var(--color-accent-fg)}.org-insights-card-legend .metric-1{color:var(--color-success-fg)}.org-insights-card-legend .metric-2{color:var(--color-severe-fg)}.org-insights-card-legend .metric-3{color:var(--color-done-fg)}.org-insights-svg-tip .metric-0 .legend,.org-insights-graph-canvas path.metric-0,.org-insights-graph-canvas .metric-0 circle{stroke:var(--color-accent-fg);background-color:var(--color-accent-fg)}.org-insights-svg-tip .metric-1 .legend,.org-insights-graph-canvas path.metric-1,.org-insights-graph-canvas .metric-1 circle{stroke:var(--color-success-fg);background-color:var(--color-success-fg)}.org-insights-svg-tip .metric-2 .legend,.org-insights-graph-canvas path.metric-2,.org-insights-graph-canvas .metric-2 circle{stroke:var(--color-severe-emphasis);background-color:var(--color-severe-emphasis)}.org-insights-svg-tip .metric-3 .legend,.org-insights-graph-canvas path.metric-3,.org-insights-graph-canvas .metric-3 circle{stroke:var(--color-done-emphasis);background-color:var(--color-done-emphasis)}.org-insights-cards .boxed-group{width:100%;margin:8px 0}.org-insights-cards .org-insights-card-legend{display:none;color:var(--color-fg-muted)}.org-insights-cards .repository-lang-stats-graph{overflow:visible;cursor:default;border:0}.org-insights-cards .repository-lang-stats-graph .language-color{min-width:24px;margin-right:-12px;border:2px solid var(--color-canvas-default)}.org-insights-cards .is-rendered .org-insights-card-legend{display:block}@media(min-width: 544px){.org-insights-cards .is-rendered .org-insights-card-legend{display:flex}}.org-insights-cards .octicon-arrow-down,.org-insights-cards .octicon-arrow-up{display:none}.org-insights-cards .is-increase .octicon-arrow-up{display:inline-block}.org-insights-cards .is-decrease .octicon-arrow-down{display:inline-block}.org-insights-cards .graph-canvas .dots{padding:43px 0}.invitation-2fa-banner{margin-right:-24px;margin-left:-24px}.sign-up-via-invitation .bleed-flush{width:100%;padding:0 16px;margin-left:-16px;border-color:var(--color-border-default)}.sign-up-via-invitation label{font-size:13px}.orghead{padding-top:16px;padding-bottom:0;margin-bottom:16px;color:var(--color-fg-default);background-color:var(--color-page-header-bg);border-bottom:1px solid var(--color-border-default)}.orghead .orgnav{position:relative;top:1px;margin-top:8px}.org-repos .TableObject-item--primary{white-space:normal}.org-name{font-weight:400;color:var(--color-fg-default)}.audit-log-search .member-info{width:300px}.audit-log-search .member-info .member-avatar{float:left;margin-right:16px}.audit-log-search .member-info .member-link{display:block}.audit-log-search .member-info .member-list-avatar{margin-right:0}.audit-log-search .member-info .ghost{display:inline-block;color:var(--color-fg-muted)}.audit-log-search .blankslate{border-top-left-radius:0;border-top-right-radius:0}.audit-log-search .export-phrase{margin:4px 0}.audit-results-actions{overflow:auto}.audit-search-clear{float:left;margin-bottom:16px;border:0}.audit-search-clear .issues-reset-query{margin-bottom:0}.audit-type{width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-type .octicon{margin-right:4px;font-weight:400;vertical-align:bottom}.audit-type .repo{color:var(--color-severe-fg)}.audit-type .team{color:var(--color-success-fg)}.audit-type .user{color:var(--color-done-fg)}.audit-type .oauth_access{color:var(--color-danger-fg)}.audit-type .hook{color:#e1bf4e}.export-phrase{margin-top:4px}.export-phrase pre{padding-left:8px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;white-space:pre-wrap;border-left:1px solid var(--color-border-muted)}.two-factor-enforcement-form .loading-spinner{float:left;margin:0 0 0 -16px;vertical-align:middle}.saml-enabled-banner-container{background-color:var(--color-canvas-default)}.saml-settings-form .test-status-indicator,.oidc-settings-form .test-status-indicator{width:30px;height:30px;margin-top:-4px;border-radius:50%}.saml-settings-form .test-status-indicator .octicon,.oidc-settings-form .test-status-indicator .octicon{display:block;margin-top:8px;margin-right:auto;margin-left:auto}.saml-settings-form .form-group.errored,.oidc-settings-form .form-group.errored{margin-bottom:40px}.saml-settings-form .test-status-indicator-error,.oidc-settings-form .test-status-indicator-error{color:var(--color-fg-on-emphasis);background-color:var(--color-danger-emphasis)}.saml-settings-form .test-status-indicator-success,.oidc-settings-form .test-status-indicator-success{color:var(--color-fg-on-emphasis);background-color:var(--color-success-emphasis)}.saml-settings-form .details-container .method-field,.oidc-settings-form .details-container .method-field{display:none}.saml-settings-form .details-container .method-label,.oidc-settings-form .details-container .method-label{font-weight:400}.saml-settings-form .details-container .details-target,.oidc-settings-form .details-container .details-target{cursor:pointer}.saml-settings-form .details-container.open .method-value,.saml-settings-form .details-container.open .details-target,.oidc-settings-form .details-container.open .method-value,.oidc-settings-form .details-container.open .details-target{display:none}.saml-settings-form .details-container.open .method-field,.oidc-settings-form .details-container.open .method-field{display:inline-block}.saml-settings-form .saml-enforcement-disabled,.oidc-settings-form .saml-enforcement-disabled{opacity:.5}.form-group .form-control.saml-certificate-field{width:440px;height:150px;min-height:0}.member-avatar{float:left;margin:1px}.member-fullname{color:var(--color-fg-muted)}.org-toolbar.disabled{pointer-events:none}.org-toolbar .subnav-search{width:320px;margin-right:16px;margin-left:0}.org-toolbar .subnav-search-context+.subnav-search{margin-left:-1px}.org-toolbar .subnav-search-input{width:100%}.org-toolbar-next{margin-bottom:24px}.org-toolbar-next .subnav-search{width:240px}.auto-search-group{position:relative}.auto-search-group .auto-search-input{padding-left:32px}.auto-search-group .spinner,.auto-search-group>.octicon{position:absolute;left:10px;z-index:5;width:16px;height:16px}.auto-search-group .spinner{top:9px;background-color:var(--color-canvas-default)}.auto-search-group>.octicon{top:10px;font-size:14px;color:var(--color-fg-muted);text-align:center}.org-list .list-item{position:relative;padding-top:16px;padding-bottom:16px;border-bottom:1px solid var(--color-border-muted)}.org-list .list-item::before{display:table;content:""}.org-list .list-item::after{display:table;clear:both;content:""}.org-repos-mini{padding:0;margin:0}.org-repos-mini .org-repo-mini-item:first-child .org-repo-mini-cell{border-top:0}.org-repos-mini .org-repo-name{margin-top:0;margin-bottom:0;font-size:14px;word-wrap:break-word}.org-repos-mini .org-repo-name .octicon-repo{color:var(--color-fg-muted)}.org-repos-mini .org-repo-name .octicon-lock{color:var(--color-attention-fg)}.org-repos-mini .org-repo-name .repo-prefix{font-weight:400}.org-repos-mini .org-repo-name .repo-slash{display:inline-block;margin-right:-4px;margin-left:-4px}.org-repo-mini-cell{padding-top:16px;padding-bottom:16px;vertical-align:middle}.org-repo-meta{width:165px}.org-repo-meta .access-level{cursor:default}.with-higher-access .table-list-cell-checkbox{vertical-align:top}.permission-level-cell .select-menu-button{width:90px;text-align:left}.permission-level-cell .select-menu-button::after{position:absolute;top:10px;right:10px}.permission-level-cell .spinner{float:none;opacity:0;transition:opacity .2s ease-in-out}.permission-level-cell .is-loading .spinner{opacity:1}.select-menu-option-title{margin-top:0;margin-bottom:0}.reinstate-org-member{position:relative;width:500px;margin:40px auto}.reinstate-org-member .reinstate-lead{margin-bottom:32px;font-size:16px}.reinstate-org-member label{cursor:pointer}.reinstate-org-member .reinstate-detail-container{margin:16px 0}.reinstate-org-member .reinstate-title{color:var(--color-fg-default)}.reinstate-org-member .reinstate-title .octicon{width:16px;margin-right:8px;color:var(--color-fg-muted)}.add-member-wrapper{position:relative;width:500px;margin:40px auto}.add-member-wrapper .available-seats{color:var(--color-fg-muted)}.team-stats{padding-right:16px;padding-left:16px;margin-right:-16px;margin-bottom:-16px;margin-left:-16px;border-top:1px solid var(--color-border-muted)}.stats-group{display:table;width:100%;table-layout:fixed}.stats-group-stat{display:table-cell;padding-top:8px;padding-bottom:8px;padding-left:16px;font-size:12px;color:var(--color-fg-muted);text-transform:uppercase}.stats-group-stat:first-child{padding-left:0;border-right:1px solid var(--color-border-muted)}.stats-group-stat:hover,.stats-group-stat:hover .stat-number{color:var(--color-accent-fg);text-decoration:none}.stats-group-stat.no-link:hover{color:var(--color-fg-muted);text-decoration:none}.stats-group-stat.no-link:hover .stat-number{color:var(--color-fg-default)}.stat-number{display:block;font-size:16px;color:var(--color-fg-default)}.permission-title{margin-top:0}.invite-member-results ul{margin:0}.team-member-list{list-style:none}.team-member-list .table-list-cell{padding-top:16px;padding-bottom:16px}.team-member-list .team-member-content{margin-left:50px}.team-member-list .team-member-username{margin:0;font-size:14px;font-weight:600;line-height:20px}.team-member-list .Label--secondary{cursor:default}.team-member-list .invite-icon{width:28px;color:var(--color-fg-muted)}.menu-item-danger,.menu-item-danger.selected{color:var(--color-danger-fg)}.menu-item-danger:hover,.menu-item-danger[aria-selected=true],.menu-item-danger.navigation-focus,.menu-item-danger.selected:hover,.menu-item-danger.selected[aria-selected=true],.menu-item-danger.selected.navigation-focus{color:var(--color-fg-on-emphasis);background:var(--color-danger-emphasis)}.team-member-list-avatar{float:left;margin-right:8px}.team-member-list-avatar .octicon{width:40px;color:var(--color-fg-muted)}.org-team-form .disabled{opacity:.5}.org-team-form .css-truncate-target{max-width:250px}.confirm-removal-container .private-fork-count{margin-top:0;font-size:12px;font-weight:400;color:var(--color-fg-muted)}.confirm-removal-container .deleting-private-forks-warning{position:relative;padding-left:24px}.confirm-removal-container .deleting-private-forks-warning .octicon{position:absolute;top:2px;left:0;color:var(--color-danger-fg)}.confirm-removal-list-container{margin-bottom:16px;border:1px solid var(--color-border-default);border-radius:6px}.confirm-removal-list-item{padding:8px;margin:0;font-size:14px;font-weight:600;border-top:1px solid var(--color-border-muted)}.confirm-removal-list-item:first-child{border-top:0}.confirm-removal-team .octicon,.confirm-removal-repo .octicon{margin-right:4px;color:var(--color-fg-muted)}.team-repo-access-list{max-height:245px}.manage-member-meta{list-style:none}.manage-member-meta-item{margin-top:12px;color:var(--color-fg-muted)}.manage-member-meta-item:first-child{margin-top:0}.manage-member-meta-item .btn-link{color:var(--color-fg-muted)}.manage-member-meta-item>.octicon{width:14px;margin-right:4px;color:var(--color-fg-muted);text-align:center}.manage-member-meta-item>.octicon-alert{color:var(--color-severe-fg)}.manage-member-button{margin-bottom:8px}.org-user-notice-title{margin-top:0;margin-bottom:0}.org-user-notice-content{margin-top:8px;margin-bottom:8px;font-size:14px}.org-user-notice-content strong{color:var(--color-fg-default)}.org-user-notice-content:last-child{margin-bottom:0}.org-user-notice-content .octicon{color:var(--color-fg-muted)}.org-user-notice-icon{float:right;margin:8px 8px 16px;font-size:45px;color:var(--color-fg-muted)}.manage-repo-access-header{margin-top:32px;margin-bottom:32px}.manage-repo-access-header::before{display:table;content:""}.manage-repo-access-header::after{display:table;clear:both;content:""}.manage-repo-access-header .btn{margin-top:8px}.manage-repo-access-header .tooltipped::after{width:250px;white-space:normal}.manage-repo-access-heading{margin-top:-2px;margin-bottom:0;font-size:24px;font-weight:400}.manage-repo-access-lead{margin-top:4px;margin-bottom:0;font-size:16px;color:var(--color-fg-muted)}.manage-repo-access-group{background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.manage-repo-access-title{padding:12px 16px;margin-top:0;margin-bottom:0;font-size:14px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted);border-radius:6px 6px 0 0}.manage-repo-access-wrapper{position:relative;padding-left:24px}.manage-repo-access-wrapper::before{position:absolute;top:15px;bottom:15px;left:22px;z-index:1;display:block;width:2px;content:"";background-color:var(--color-canvas-default)}.manage-repo-access-icon{position:relative;z-index:2;float:left;padding-top:2px;padding-bottom:2px;margin-top:-4px;margin-left:-24px;background:var(--color-canvas-default)}.manage-repo-access-icon .octicon{font-size:14px;color:var(--color-fg-default)}.manage-repo-access-list{list-style:none}.manage-repo-access-list-item{padding:16px}.manage-repo-access-list-item:last-child{border-bottom:0;border-radius:0 0 6px 6px}.manage-repo-access-teams-group{margin-top:-16px;list-style:none;border:1px solid var(--color-border-default);border-radius:6px}.manage-repo-access-team-item{border-top:1px solid var(--color-border-muted)}.manage-repo-access-team-item:first-child{border-top:0}.manage-repo-access-description{margin-top:4px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;white-space:nowrap}.manage-repo-access-not-active{color:var(--color-fg-default);background-color:var(--color-canvas-subtle)}.manage-repo-access-not-active .manage-repo-access-icon{background:var(--color-canvas-subtle)}.manage-access-remove-footer{padding:16px;border-top:1px solid var(--color-border-muted)}.manage-access-remove-footer .tooltipped::after{width:250px;white-space:normal}.manage-access-none{margin:16px 50px;text-align:center}.ldap-group-dn{display:block;font-weight:400;color:var(--color-fg-muted)}.ldap-import-groups-container .blankslate{display:none}.ldap-import-groups-container.is-empty .blankslate{display:block}.ldap-import-groups-container.is-empty .ldap-memberships-list{display:none}.ldap-memberships-list{margin-bottom:32px}.ldap-memberships-list .table-list-cell{padding-top:8px;padding-bottom:8px;font-size:13px;vertical-align:middle}.ldap-memberships-list .table-list-cell:last-child{width:92px}.ldap-memberships-list .ldap-list-team-name{width:380px}.ldap-memberships-list .ldap-group-dn{font-size:11px}.ldap-memberships-list .ldap-mention-as{width:260px}.ldap-memberships-list .edit{position:absolute;padding:8px;margin-left:-32px;color:var(--color-accent-fg);cursor:pointer}.ldap-memberships-list .edit-fields{display:none}.ldap-memberships-list .is-editing .edit-hide{display:none}.ldap-memberships-list .is-editing .edit-fields{display:block}.ldap-memberships-list .is-editing .spinner{margin-left:16px;vertical-align:middle}.ldap-memberships-list .is-removing{opacity:.25}.ldap-memberships-list .is-removing .edit{opacity:.5}.team-name-field{height:33px}.ldap-import-form-actions{margin-top:32px}.invited .team-member-list{margin:-16px 0}.invited .team-member-list .list-item{padding:8px 0;border-bottom:1px solid var(--color-border-muted)}.invited .team-member-list .list-item::before{display:table;content:""}.invited .team-member-list .list-item::after{display:table;clear:both;content:""}.invited .team-member-list .list-item:last-of-type{border:0}.invited .team-member-list .list-item .edit-invitation{float:right;margin-top:4px}.invited-banner::before{display:table;content:""}.invited-banner::after{display:table;clear:both;content:""}.invited-banner .btn-sm{float:right;margin-left:4px}.invited-banner p{font-size:14px;line-height:1.5}.invited-banner .inviter-link{font-weight:600}.manage-member-sso-sessions.has-active-sessions .blankslate{display:none}.manage-memberships-nav{position:relative;top:1px;margin-top:8px}.manage-memberships-tabs-item{cursor:pointer;border:solid transparent;border-width:3px 1px 1px;border-radius:6px 6px 0 0}.manage-memberships-tabs-item:hover{color:var(--color-fg-default)}.manage-memberships-tabs-item.selected{font-weight:600;color:var(--color-fg-default);background-color:var(--color-canvas-default);border-bottom:2px solid #d26911}.org-menu-item:not([aria-current=page])+.org-sub-menu{display:none}.trial-banner-notice{background-image:linear-gradient(180deg, #0366d6 0%, #2188ff 100%)}@media(min-width: 768px){.Popover-message--extra-large{min-width:544px !important}}.theme-picker{margin-bottom:-1px;background-color:var(--color-canvas-default);background-clip:padding-box;border-bottom:1px solid var(--color-border-default);box-shadow:var(--color-shadow-medium)}.theme-picker>.container{position:relative;overflow:hidden;text-align:center}.theme-picker-thumbs{border-bottom:1px solid var(--color-border-muted)}.theme-toggle{width:32px;height:32px;padding:0;color:var(--color-fg-muted);background:none;border:0}.theme-toggle:hover{color:var(--color-accent-fg);text-decoration:none}.theme-toggle.disabled,.theme-toggle.disabled:hover{color:var(--color-fg-muted);cursor:not-allowed}.theme-toggle-full-left,.theme-toggle-full-right{position:absolute;top:50px;overflow:hidden}.theme-toggle-full-left{left:4px}.theme-toggle-full-right{right:4px}.theme-selector{height:102px;margin:16px 46px}.theme-selector-thumbnail{padding:2px;border:1px solid var(--color-border-muted)}.theme-selector-thumbnail:hover{text-decoration:none;background-color:var(--color-neutral-subtle)}.theme-selector-thumbnail.selected{padding:4px;background-color:var(--color-accent-emphasis);border:0}.theme-selector-thumbnail.selected .theme-selector-img{border:1px solid var(--color-canvas-default)}.theme-selector-img{width:126px;height:96px;border-radius:1px}.theme-picker-spinner{position:absolute;top:16px;left:50%;margin-left:-16px;background-color:var(--color-canvas-default);opacity:1;transition:.2s,opacity ease-in-out}.theme-picker-spinner~.theme-picker-controls .theme-name{opacity:0}.theme-picker-view-toggle{float:left}.theme-picker-view-toggle .for-hiding{display:none}.theme-picker-view-toggle.open .for-hiding{display:inline}.theme-picker-view-toggle.open .for-showing{display:none}.theme-picker-controls{position:absolute;top:15px;left:50%;width:220px;margin-left:-110px;line-height:34px;text-align:center}.theme-picker-controls .theme-toggle{vertical-align:middle}.theme-name{display:inline-block;margin-right:8px;margin-left:8px;font-size:20px;line-height:1;vertical-align:middle}.page-preview{z-index:-100;display:block;width:100%;height:6000px;padding:0;background-color:var(--color-canvas-default);border:0}.pinned-items-spinner{position:relative;top:2px;left:6px}.pinned-items-setting-link{font-size:13px;font-weight:400}.pinned-item-name{color:var(--color-fg-default)}.pinned-item-checkbox:checked+.pinned-item-name{color:var(--color-fg-default);background-color:var(--color-accent-subtle)}.pinned-gist-blob-num{min-width:36px;cursor:default}.pinned-gist-blob-num:hover{color:var(--color-fg-muted);cursor:default}@media print{#serverstats,.Header-old,.Header,.header-search,.reponav,.comment::before,.comment::after,.footer,.pagehead-actions,.discussion-timeline-actions,.timeline-comment-actions,.timeline-new-comment,.thread-subscription-status,.lock-toggle-link,.header,.pr-review-tools,.file-actions,.js-expandable-line,.toolbar-shadow,.gh-header-sticky,.pr-toolbar.is-placeholder,.language-color{display:none !important}.repository-lang-stats-graph{height:0}.btn:not(.btn-outline){color:var(--color-fg-default) !important;background:none}p,.comment h2{page-break-inside:avoid}.markdown-body h2{page-break-after:avoid}.topic-tag{padding:0}.topic-tag::before{margin-right:-2px;content:"#"}.blob-num{border-right:2px solid var(--color-border-default)}.blob-num-deletion{border-right-color:var(--color-danger-emphasis)}.blob-num-addition{border-right-color:var(--color-success-emphasis)}.blob-code-addition .x{border-bottom:2px solid var(--color-success-emphasis);border-radius:0}.blob-code-deletion .x{border-bottom:2px solid var(--color-danger-emphasis);border-radius:0}.pr-toolbar.is-stuck{position:static !important;width:100% !important}.diffstat-block-neutral{border:4px solid var(--color-border-default)}.diffstat-block-deleted{border:4px solid var(--color-danger-emphasis)}.diffstat-block-added{border:4px solid var(--color-success-emphasis)}.State{color:var(--color-fg-default);background:none;border:1px solid var(--color-border-default);border-color:none}.State--open{color:var(--color-success-fg);border:1px solid #2cbe4e}.State--merged{color:var(--color-done-fg);border:1px solid var(--color-done-emphasis)}.State--closed{color:var(--color-danger-fg);border:1px solid var(--color-danger-emphasis)}.markdown-body pre>code{white-space:pre-wrap}}.projects-splash-dialog{position:fixed;top:0;right:auto;left:50%;z-index:999;width:90vw;max-width:700px;max-height:80vh;margin:10vh auto;transform:translateX(-50%)}@media(min-width: 544px){.projects-splash-dialog{margin:20vh auto}}.projects-splash-banner{background-image:url("/images/modules/memexes/projects-beta-banner-mobile.png");background-repeat:no-repeat;background-position:left;background-size:cover}@media(min-width: 768px){.projects-splash-banner{background-image:url("/images/modules/memexes/projects-beta-banner.png")}}.projects-splash-banner p{max-width:100%}@media(min-width: 768px){.projects-splash-banner p{max-width:55%}}@media(min-width: 768px){[data-color-mode=light][data-light-theme*=dark] .projects-splash-banner,[data-color-mode=dark][data-dark-theme*=dark] .projects-splash-banner{background-image:url("/images/modules/memexes/projects-beta-banner-dark.png")}}@media(prefers-color-scheme: light)and (min-width: 768px){[data-color-mode=auto][data-light-theme*=dark] .projects-splash-banner{background-image:url("/images/modules/memexes/projects-beta-banner-dark.png")}}@media(prefers-color-scheme: dark)and (min-width: 768px){[data-color-mode=auto][data-dark-theme*=dark] .projects-splash-banner{background-image:url("/images/modules/memexes/projects-beta-banner-dark.png")}}.project-description p:last-child{margin-bottom:0 !important}.project-full-screen .pagehead,.project-full-screen .hide-full-screen,.project-full-screen .Header-old,.project-full-screen .Header{display:block}@media(min-width: 544px){.project-full-screen .pagehead,.project-full-screen .hide-full-screen,.project-full-screen .Header-old,.project-full-screen .Header{display:none}}.project-full-screen .project-header{padding-top:8px;padding-bottom:8px;color:rgba(255,255,255,.75)}@media(min-width: 544px){.project-full-screen .project-header{background-color:var(--color-project-header-bg)}}.project-full-screen .project-header:focus{outline:none}.project-full-screen .project-header .project-header-link{color:rgba(255,255,255,.75) !important}.project-full-screen .project-header .project-header-link:hover{color:#fff !important}.project-full-screen .project-header .pending-cards-status{border-color:var(--color-neutral-emphasis)}@media(min-width: 544px){.project-full-screen .card-filter-input{color:#fff;background-color:rgba(255,255,255,.125);border:0;outline:none;box-shadow:none}.project-full-screen .card-filter-input::placeholder{color:rgba(255,255,255,.7)}.project-full-screen .card-filter-input:focus{background-color:rgba(255,255,255,.175)}}.project-header{background-color:var(--color-canvas-inset);outline:none}@media(min-width: 544px){.project-header{background-color:var(--color-canvas-default)}}.project-header .select-menu-modal-holder{z-index:500}.project-updated-message{top:6px;left:50%;z-index:50;transform:translate(-50%, 0)}.pending-cards-status{top:-2px;right:-9px;width:14px;height:14px;background-image:linear-gradient(#54a3ff, #006eed);background-clip:padding-box;border:2px solid var(--color-canvas-default)}.project-columns{overflow-x:auto}@media(min-width: 544px){.project-columns-container{height:0;overflow-x:visible !important}}.project-column{min-width:100%;max-width:100%;background-color:var(--color-canvas-inset);border-width:0 !important;border-radius:0 !important}.project-column:focus{outline:none}@media(min-width: 544px){.project-column{min-width:355px;max-width:355px;border-width:1px !important;border-radius:6px !important}.project-column:focus{border-color:var(--color-accent-emphasis) !important;box-shadow:var(--color-btn-shadow-input-focus)}}.project-column.moving{background-color:var(--color-accent-subtle) !important;box-shadow:var(--color-btn-shadow-input-focus);transform:translateX(4px) translateY(-4px)}.new-project-column{width:315px;border-color:var(--color-border-default) !important}.project-search-form .loading-indicator{top:21px;right:21px;display:none}.project-search-form.loading .loading-indicator{display:inline-block}.sortable-ghost{background-color:var(--color-canvas-subtle);opacity:.5}.project-card{background-color:var(--color-canvas-overlay)}.project-card .project-reference-markdown>p,.project-card:last-child{margin-bottom:0 !important}.project-card:first-child{margin-top:8px !important}@media(min-width: 544px){.project-card:first-child{margin-top:4px !important}}.project-card ul,.project-card ol{margin-bottom:8px;margin-left:16px}.project-card blockquote{padding:0 .75em;color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default)}.project-card .contains-task-list{margin-left:24px}.project-card:hover{border-color:var(--color-border-default) !important;box-shadow:0 1px 3px rgba(106,115,125,.3) !important}.project-card:focus{outline:none}@media(min-width: 544px){.project-card:focus{border-color:var(--color-accent-emphasis) !important;box-shadow:var(--color-btn-shadow-input-focus) !important}}.project-card.moving{background-color:var(--color-accent-subtle) !important;box-shadow:var(--color-btn-shadow-input-focus) !important;transform:translateX(4px) translateY(0)}.archived-project-cards-pane .project-card .archived-header{display:flex !important;color:var(--color-fg-default)}.archived-project-cards-pane .project-card .archive-dropdown-item{display:none}.issue-card.draggable{cursor:move}.issue-card .AvatarStack:hover .from-avatar{margin-right:-4px}.issue-card pre{word-wrap:break-word;white-space:pre-wrap}@keyframes show-pane{0%{transform:translateX(390px)}100%{transform:translateX(0)}}.project-pane{z-index:1;background-color:var(--color-project-sidebar-bg);background-clip:padding-box;box-shadow:-3px 0 5px rgba(36,41,46,.05)}@media(min-width: 544px){.project-pane{position:absolute !important;width:360px !important;height:auto !important;animation:show-pane .2s cubic-bezier(0, 0, 0, 1)}}.project-pane .redacted-activity{cursor:help;border-bottom:1px dotted var(--color-border-default)}.project-pane .project-body-markdown p:last-child,.project-pane .project-body-markdown ul:last-child,.project-pane .project-body-markdown ol:last-child{margin-bottom:0}@media(min-width: 544px){.project-pane sidebar-memex-input details-menu{position:relative;right:auto !important}}.project-pane-close{color:var(--color-fg-muted)}.project-pane-close:hover{color:var(--color-fg-default)}.project-note-form textarea{resize:vertical}.card-menu-container .dropdown-menu,.column-menu-container .dropdown-menu{min-width:180px}.card-octicon{top:6px;left:10px}.card-note-octicon{top:8px}.is-sending .auto-search-group .chooser-spinner{top:15px;right:21px;left:auto}.card-filter-input{width:0}@media(min-width: 544px){.card-filter-input{width:300px}}.card-filter-autocomplete-dropdown{z-index:500;float:none;min-width:240px;max-height:270px;cursor:pointer}.card-filter-autocomplete-dropdown [aria-selected=true],.card-filter-autocomplete-dropdown .navigation-focus{color:var(--color-fg-on-emphasis) !important;background-color:var(--color-accent-emphasis);border-radius:6px}.card-filter-autocomplete-dropdown [aria-selected=true] .autocomplete-text-qualifier,.card-filter-autocomplete-dropdown .navigation-focus .autocomplete-text-qualifier{color:var(--color-fg-on-emphasis) !important}.projects-reset-query:hover .projects-reset-query-icon{color:var(--color-fg-on-emphasis) !important;background-color:var(--color-accent-emphasis)}.projects-reset-query-icon{width:18px;height:18px;padding:1px;background-color:var(--color-fg-muted)}.project-small-menu-dropdown::before,.project-small-menu-dropdown::after{display:none}.project-header-controls,.project-header-search{flex-grow:1}@media(min-width: 1012px){.project-header-controls,.project-header-search{flex-grow:0}}.project-header-subnav-search{flex-grow:1}@media(min-width: 544px){.project-header-subnav-search{flex-grow:0}}.project-page .application-main{flex-shrink:0 !important}@media(min-width: 544px){.project-page .application-main{flex-shrink:1 !important}}.project-edit-mode .column-menu-container,.project-edit-mode .column-menu-item{display:none !important}.project-edit-mode .project-move-actions{display:flex !important}.push-board-over{padding-right:0 !important;transition:all .2s ease}@media(min-width: 544px){.push-board-over{padding-right:360px !important}}.project-touch-scrolling{-webkit-overflow-scrolling:touch}.projects-comment-form .comment-md-support-link{float:none;width:100%;text-align:center}.projects-comment-form .comment-form-actions{width:100%;padding:8px 16px;margin:4px 0 !important}.projects-comment-form .comment-form-actions button{width:100%;margin:4px 0 !important}.projects-comment-form .comment-form-head{padding:0 !important;margin:0 !important;border-bottom:0}.projects-comment-form .comment-form-head .tabnav-tabs{padding:8px 8px 0}.projects-comment-form .comment-form-head .toolbar-commenting{width:100%;padding-top:4px;text-align:center;background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-default)}.projects-comment-form .comment-form-head::after{display:block;clear:both;content:" "}.projects-comment-form .comment-form-textarea{height:250px !important}.projects-comment-form .preview-content{margin:0;border-top:1px solid var(--color-border-default)}.projects-comment-form .preview-content .comment-body{padding:16px}.project-issue-body-wrapper{max-height:200px;overflow:hidden}.Details--on .project-issue-body-wrapper{max-height:none;overflow:visible}.project-issue-body-blur{height:32px;background:linear-gradient(to top, var(--color-project-gradient-in), var(--color-project-gradient-out))}.Details--on .project-issue-body-blur{height:0}.project-comment-title-hover .comment-action,.project-comment-body-hover .comment-action{opacity:0}.project-comment-title-hover:hover .comment-action,.project-comment-body-hover:hover .comment-action{opacity:1}.project-comment-body-reaction .timeline-comment-action{padding:4px 8px}.project-comment-reactions .reaction-summary-item{padding:8px}.project-comment-reactions .reaction-summary-item g-emoji{margin:0 !important}.project-name-hover .project-name-edit-action{opacity:0}.project-name-hover:hover .project-name-edit-action{opacity:1}.vcard-names{line-height:1}.vcard-fullname{font-size:26px;line-height:1.25}.vcard-username{font-size:20px;font-style:normal;font-weight:300;line-height:24px;color:var(--color-fg-muted)}.vcard-details{list-style:none}.vcard-details .css-truncate.css-truncate-target{width:100%;max-width:100%}.vcard-details .css-truncate.css-truncate-target div{overflow:hidden;text-overflow:ellipsis}.vcard-detail{padding-left:24px;font-size:14px}.vcard-detail .octicon{float:left;width:16px;margin-top:4px;margin-left:-24px;color:var(--color-fg-muted);text-align:center}.user-profile-bio{overflow:hidden;font-size:14px}.form-group .form-control.user-profile-bio-field{width:440px;height:5.35em;min-height:0}.user-profile-bio-field-container,.user-profile-company-field-container{position:relative}.user-profile-bio-message{margin:4px 0 0;font-size:12px;color:var(--color-fg-default)}.achievement-badge-sidebar{filter:drop-shadow(var(--color-shadow-medium))}.achievement-badge-card{margin:4px;filter:drop-shadow(var(--color-shadow-large))}.achievement-card{width:250px;box-shadow:var(--color-shadow-medium)}.achievement-card-unseen{box-shadow:0 3px 6px var(--color-accent-subtle)}.vcard-detail{padding-left:24px}.vcard-detail .octicon{margin-left:-24px}.user-profile-sticky-bar{position:fixed;top:0;z-index:90;width:233px;word-break:break-all;pointer-events:none;opacity:0;transition:.2s}.user-profile-sticky-bar.is-stuck{pointer-events:auto;opacity:1}.user-profile-mini-vcard{position:relative;top:1px;z-index:110;height:54px}.user-profile-mini-avatar{width:32px}.mini-follow-button{padding:0 8px;line-height:1.5;opacity:0;transition:opacity .2s}.is-follow-stuck .mini-follow-button{opacity:1}.user-profile-following-container .user-following-container.on .follow,.user-profile-following-container .user-following-container .unfollow{display:none}.user-profile-following-container .user-following-container .follow,.user-profile-following-container .user-following-container.on .unfollow{display:block}.vcard-names-container{position:sticky;top:0}.vcard-names-container.is-stuck{pointer-events:none}.vcard-names-container.is-stuck .vcard-names{opacity:0}.vcard-names-container.is-stuck::after{opacity:1}.user-profile-nav{background-color:var(--color-canvas-default);border-bottom:1px solid var(--color-border-default);box-shadow:none}.user-profile-nav.is-stuck{z-index:90}.user-profile-nav .UnderlineNav-item{line-height:20px}.pinned-item-list-item .pinned-item-handle{color:var(--color-fg-muted)}.pinned-item-list-item .pinned-item-handle:hover{cursor:grab}.pinned-item-list-item.is-dragging,.pinned-item-list-item.is-dragging .pinned-item-handle{cursor:grabbing}.pinned-item-list-item.is-dragging{background-color:var(--color-accent-subtle)}.pinned-item-list-item.sortable-ghost{background-color:var(--color-accent-subtle);opacity:0}.pinned-item-list-item.empty{border-style:dashed;border-width:1px;align-items:center;justify-content:center}.pinned-item-list-item-content{display:flex;width:100%;flex-direction:column}.pinned-item-desc{flex:1 0 auto}.pinned-item-meta{display:inline-block}.pinned-item-meta+.pinned-item-meta{margin-left:16px}.user-repo-search-results-summary{white-space:normal}.pull-request-tab-content{display:none}.pull-request-tab-content.is-visible{display:block}.discussion-timeline p.explain{margin:0;font-size:12px}.pull-request-ref-restore{display:none}.pull-request-ref-restore-text{display:block}.pull-discussion-timeline.is-pull-restorable .pull-request-ref-restore.last{display:block}.files-bucket{margin-bottom:16px}.full-width .diffbar .container,.split-diff .diffbar .container{padding-right:0;padding-left:0}.stale-files-tab{float:left;padding:4px 8px;margin-top:-4px;margin-bottom:-4px;color:var(--color-severe-fg);background-color:var(--color-severe-subtle);border-radius:6px}.stale-files-tab-link{font-weight:600;color:inherit}.pr-toolbar{position:sticky;top:0;z-index:29;height:60px;padding:0 16px;margin:-16px -16px 0}.pr-toolbar .float-right .diffbar-item{margin-right:0}.pr-toolbar .float-right .diffbar-item+.diffbar-item{margin-left:16px}.pr-toolbar.is-stuck{height:60px;background-color:var(--color-canvas-default)}@media(min-width: 1150px){.commit-build-statuses .status-checks-dropdown{width:500px}}.full-commit .commit-build-statuses .status-checks-dropdown{width:500px}.toolbar-shadow{position:fixed;top:60px;right:0;left:0;z-index:28;display:none;height:5px;background:linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.001)) repeat-x 0 0;border-top:1px solid rgba(0,0,0,.15)}.is-stuck+.toolbar-shadow{display:block}.files-next-bucket .file,.files-next-bucket .full-commit{margin-top:0;margin-bottom:16px}.diffbar{background-color:var(--color-canvas-default)}.diffbar .show-if-stuck{display:none}.diffbar .container{width:auto}.diffbar .table-of-contents{margin-bottom:0}.diffbar .table-of-contents ol{margin-bottom:-16px}.diffbar .table-of-contents li{border-top:1px solid var(--color-border-muted)}.diffbar .table-of-contents li:first-child{border-top:0}.diffbar [role^=menuitem]:focus:not(.is-range-selected) .text-emphasized,.diffbar [role^=menuitem]:hover:not(.is-range-selected) .text-emphasized{color:var(--color-fg-on-emphasis)}.is-stuck .diffbar .show-if-stuck{display:block}.is-stuck .diffbar .diffstat{display:none}.is-stuck .diffbar .stale-files-tab{margin-top:-8px}.diffbar-range-menu .select-menu-modal{width:380px}.diffbar-range-menu .css-truncate-target{max-width:280px}.diffbar-range-menu .select-menu-item:not(.select-menu-action){padding:8px 8px}.diffbar-range-menu .emoji{vertical-align:bottom}.diffbar-range-menu .in-range:not(.is-range-selected){background-color:var(--color-accent-subtle);border-bottom-color:var(--color-border-subtle)}.diffbar-range-menu .in-range:focus:not(.is-range-selected),.diffbar-range-menu .in-range:hover:not(.is-range-selected){background-color:var(--color-accent-emphasis)}.diffbar-range-menu .is-range-selected{color:var(--color-fg-default);cursor:default;background-color:var(--color-attention-subtle);border-bottom-color:rgba(38,44,49,.15);outline:none}.diffbar-range-menu .is-range-selected .text-emphasized{color:var(--color-attention-fg)}.diffbar-range-menu .is-range-selected .description{color:inherit}.diffbar-range-menu .is-last-in-range{cursor:pointer;background-color:var(--color-attention-subtle)}.diffbar-item{float:left;margin-left:16px;font-size:13px;vertical-align:middle}.conflict-resolver .conflict-loader,.conflict-resolver.loading .resolve-file-form{display:none}.conflict-resolver .resolve-file-form,.conflict-resolver.loading .conflict-loader{display:block}.conflict-resolver.loading{position:relative;height:calc(100vh + 51px);padding-top:50px;border:1px solid var(--color-border-default)}.conflict-resolver .file-header{padding:8px 8px}.conflicts-nav{height:100vh;-ms-overflow-style:-ms-autohiding-scrollbar;border-width:0 0 1px}.conflict-nav-item .discussion-item-icon{display:none}.conflict-nav-item.resolved .discussion-item-icon{display:block;margin-left:-4px}.conflict-nav-item.resolved .octicon-file-code{display:none}.conflict-nav-item.selected::before{border-radius:0}.conflict-nav-item .octicon{width:22px}.conflict-nav-item .css-truncate-target{max-width:80%}.is-resolved .file-actions{display:none}.is-resolved .resolved-notice{display:block}.resolved-notice{display:none}.add-comment-label,.review-cancel-button,.is-review-pending .start-review-label{display:none}.start-review-label,.is-review-pending .add-comment-label{display:inline-block}.is-review-pending .review-simple-reply-button{display:none}.is-review-pending .review-cancel-button{display:block}.is-review-pending .review-title-with-count{display:block}.review-title-with-count{display:none}.pr-review-tools .Counter{display:none}.is-review-pending .pr-review-tools .Counter{display:inline-block}.pr-review-tools .previewable-comment-form .comment-form-head{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.pull-request-suggested-changes-menu{top:30px;left:initial;z-index:99;width:700px;padding:8px;margin:0;border:1px solid var(--color-border-subtle);transform:initial}.pull-request-suggested-changes-menu::after,.pull-request-suggested-changes-menu::before{display:none}.pull-request-suggested-changes-menu .select-menu-header{border-radius:6px 6px 0 0}.pull-request-suggested-changes-menu .form-actions{border-radius:0 0 6px 6px}.pull-request-suggested-changes-menu .preview-content{max-height:365px}.pull-request-suggested-changes-menu .comment-body{border-bottom:0 !important}.review-comment-contents{margin-left:44px}.review-comment::after,.review-comment-loader::after,.review-comment.is-comment-editing::after{position:absolute;top:31px;left:29px;z-index:-1;width:3px;height:100%;content:"";background-color:var(--color-canvas-subtle)}.review-comment{position:relative;padding:8px 16px;color:var(--color-fg-default)}.review-comment:first-child{padding-top:16px}.review-comment:last-child{padding-bottom:16px}.review-comment .comment-body,.review-comment .comment-reactions{padding:0}.review-comment .comment-body{padding-top:4px}.review-comment .comment-body .suggested-change-form-container:nth-last-of-type(2){margin-bottom:0 !important}.review-comment .comment-reactions{margin-top:4px;border-top:0 !important}.review-comment .comment-reactions .add-reaction-btn{padding:4px 8px}.review-comment .comment-reactions.has-reactions{margin-top:12px}.review-comment .show-more-popover.dropdown-menu-sw{right:-5px;margin-top:4px}.review-comment .reaction-summary-item:not(.add-reaction-btn){padding:0 8px;font-size:12px;line-height:26px;border:1px solid var(--color-border-default, #d2dff0);border-radius:6px}.review-comment .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:16px;vertical-align:sub}.review-comment .reaction-summary-item:not(.add-reaction-btn)+.reaction-summary-item{margin-left:8px}.review-comment:last-child::after,.review-comment:last-child .review-comment-contents::after{display:none}.review-comment .timeline-comment-action{padding:0 4px}.review-comment .is-comment-editing{position:relative;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px}.review-comment .is-comment-editing::after{top:100%;bottom:0;left:19px;height:20px}.review-comment .is-comment-editing .timeline-comment-actions,.review-comment .is-comment-editing .edit-comment-hide{display:none}.review-comment .is-comment-editing .previewable-comment-form{display:block}.review-comment.is-comment-loading .previewable-comment-form{opacity:.5}.pr-review-reactions .has-reactions{margin-bottom:16px;margin-left:16px}.timeline-comment.is-comment-editing .discussion-item-header{display:none}.review-thread-reply{padding:8px 16px;background-color:var(--color-canvas-subtle);border-top:1px solid var(--color-border-default);border-radius:0 0 6px 6px}.review-thread-reply .inline-comment-form{margin:-8px -16px;background-color:var(--color-canvas-default);border:0}.review-thread-reply-button{display:inline-block;min-height:28px;padding:4px 8px;margin-left:8px;cursor:text}.tooltipped-left::after{right:auto;left:0}.tooltipped-left::before{right:auto;left:0}.pulse-authors-graph{position:relative;height:150px}.pulse-authors-graph>svg{width:100%}.pulse-authors-graph .bar rect{fill:var(--color-severe-emphasis);fill-opacity:.7}.pulse-authors-graph .bar rect:hover{fill-opacity:1}.readme.contributing>div{max-height:250px;overflow:auto}.readme .markdown-body,.readme .plain{word-wrap:break-word}.readme .plain pre{font-size:14px;white-space:pre-wrap}.file .readme table[data-table-type=yaml-metadata]{font-size:12px;line-height:1}.file .readme table[data-table-type=yaml-metadata] table{margin:0}.Label--draft{color:var(--color-danger-fg);border-color:var(--color-danger-emphasis)}.Label--prerelease{color:var(--color-severe-fg);border-color:var(--color-severe-emphasis)}.uploaded-files{border-top-left-radius:6px;border-top-right-radius:6px}.uploaded-files.not-populated+.drop-target .drop-target-label{border-top:1px var(--color-border-default);border-top-left-radius:6px;border-top-right-radius:6px}.uploaded-files.is-populated{border:1px solid var(--color-border-default);border-bottom-color:var(--color-border-muted)}.uploaded-files.is-populated+.drop-target .drop-target-label{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.uploaded-files>li.delete{background:var(--color-canvas-default)}.uploaded-files>li.delete:nth-child(2){border-top-left-radius:6px;border-top-right-radius:6px}.uploaded-files>li.delete .delete-pending{display:block !important}.uploaded-files>li.delete .live{display:none !important}.uploaded-files>li:nth-child(2){border-top:0 !important}.uploaded-files .remove:hover{color:var(--color-danger-fg) !important}.upload-progress{height:3px;margin-top:4px;border-radius:30px}.upload-progress .upload-meter{background-image:linear-gradient(#8dd2f7, #58b8f4);border-radius:30px}@media(min-width: 768px){.release-main-section{border-left:2px solid var(--color-border-default)}}.release-feed-inline-last-p p:last-of-type{display:inline}.manifest-commit-form{margin-top:16px}.repo-file-upload-outline{width:100%;height:100%}.repo-file-upload-target{position:relative}.repo-file-upload-target.is-uploading .repo-file-upload-text.initial-text,.repo-file-upload-target.is-failed .repo-file-upload-text.initial-text,.repo-file-upload-target.is-default .repo-file-upload-text.initial-text{display:none}.repo-file-upload-target.is-uploading .repo-file-upload-text.alternate-text,.repo-file-upload-target.is-failed .repo-file-upload-text.alternate-text,.repo-file-upload-target.is-default .repo-file-upload-text.alternate-text{display:block}.repo-file-upload-target.is-uploading.dragover .repo-file-upload-text,.repo-file-upload-target.is-failed.dragover .repo-file-upload-text,.repo-file-upload-target.is-default.dragover .repo-file-upload-text{display:none}.repo-file-upload-target .repo-file-upload-text.initial-text{display:block}.repo-file-upload-target .repo-file-upload-text.alternate-text{display:none}.repo-file-upload-target .repo-file-upload-text,.repo-file-upload-target .repo-file-upload-drop-text{margin-bottom:4px}.repo-file-upload-target .repo-file-upload-choose{display:inline-block;margin-top:0;font-size:18px}.repo-file-upload-target .manual-file-chooser{margin-left:0}.repo-file-upload-target .repo-file-upload-outline{position:absolute;top:3%;left:1%;width:98%;height:94%}.repo-file-upload-target.is-failed .repo-file-upload-outline,.repo-file-upload-target.is-bad-file .repo-file-upload-outline,.repo-file-upload-target.is-too-big .repo-file-upload-outline,.repo-file-upload-target.is-too-many .repo-file-upload-outline,.repo-file-upload-target.is-empty .repo-file-upload-outline{height:85%}.repo-file-upload-target.dragover .repo-file-upload-text{display:none}.repo-file-upload-target.dragover .repo-file-upload-choose{visibility:hidden}.repo-file-upload-target.dragover .repo-file-upload-drop-text{display:block}.repo-file-upload-target.dragover .repo-file-upload-outline{border:6px dashed var(--color-border-default);border-radius:6px}.repo-file-upload-target .repo-file-upload-drop-text{display:none}.repo-file-upload-errors{display:none}.repo-file-upload-errors .error{display:none}.is-failed .repo-file-upload-errors,.is-bad-file .repo-file-upload-errors,.is-too-big .repo-file-upload-errors,.is-too-many .repo-file-upload-errors,.is-hidden-file .repo-file-upload-errors,.is-empty .repo-file-upload-errors{position:absolute;right:0;bottom:0;left:0;display:block;padding:4px 8px;line-height:1.5;text-align:left;background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-default);border-bottom-right-radius:6px;border-bottom-left-radius:6px}.is-file-list .repo-file-upload-errors{border-bottom-right-radius:0;border-bottom-left-radius:0}.is-failed .repo-file-upload-errors .failed-request,.is-bad-file .repo-file-upload-errors .failed-request{display:inline-block}.is-too-big .repo-file-upload-errors .too-big{display:inline-block}.is-hidden-file .repo-file-upload-errors .hidden-file{display:inline-block}.is-too-many .repo-file-upload-errors .too-many{display:inline-block}.is-empty .repo-file-upload-errors .empty{display:inline-block}.repo-file-upload-tree-target{position:fixed;top:0;left:0;z-index:1000;width:100%;height:100%;padding:16px;color:var(--color-fg-default);visibility:hidden;background:var(--color-canvas-default);opacity:0}.repo-file-upload-tree-target .repo-file-upload-outline{border:6px dashed var(--color-border-default);border-radius:6px}.dragover .repo-file-upload-tree-target{visibility:visible;opacity:1;transition:visibility .2s,opacity .2s}.dragover .repo-file-upload-tree-target .repo-file-upload-slate{top:50%;opacity:1}.repo-file-upload-slate{position:absolute;top:50%;width:100%;text-align:center;transform:translateY(-50%)}.repo-file-upload-slate h2{margin-top:4px}.repo-upload-breadcrumb{margin-bottom:16px}.labels-list .blankslate{display:none}.labels-list .table-list-header{display:block}.labels-list.is-empty .blankslate{display:block}.labels-list.is-empty .table-list-header{display:none}.label-select-menu-item .g-emoji{font-size:12px;line-height:1;vertical-align:baseline}.label-edit::before{display:table;content:""}.label-edit::after{display:table;clear:both;content:""}.label-edit label{display:block;margin-bottom:8px}.label-edit .error{float:left;margin-top:8px;margin-left:8px;color:var(--color-danger-fg)}.label-edit.loading{display:block}.label-characters-remaining{color:var(--color-fg-muted)}.repo-list{position:relative}.repo-list-item{position:relative;padding-top:32px;padding-bottom:32px;list-style:none;border-bottom:1px solid var(--color-border-muted)}.repo-list-item-with-avatar{padding-left:42px}.repo-list-item-hanging-avatar{float:left;margin-left:-42px}.mini-repo-list-item{position:relative;display:block;padding:4px 64px 4px 32px;font-size:14px;border-top:1px solid var(--color-border-default)}.mini-repo-list-item:hover{text-decoration:none}.mini-repo-list-item:hover .repo,.mini-repo-list-item:hover .owner{text-decoration:underline}.mini-repo-list-item .repo-icon{float:left;margin-top:2px;margin-left:-16px;color:var(--color-fg-muted)}.mini-repo-list-item .repo-and-owner{max-width:220px}.mini-repo-list-item .owner{max-width:110px}.mini-repo-list-item .repo{font-weight:600}.mini-repo-list-item .stars{position:absolute;top:0;right:10px;margin-top:4px;font-size:12px;color:var(--color-fg-muted)}.mini-repo-list-item .repo-description{display:block;max-width:100%;font-size:12px;line-height:21px;color:var(--color-fg-muted)}.private .mini-repo-list-item{background-color:var(--color-attention-subtle)}.private .mini-repo-list-item .repo-icon{color:var(--color-attention-fg)}.filter-bar{padding:8px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.filter-bar::before{display:table;content:""}.filter-bar::after{display:table;clear:both;content:""}.user-repos .filter-bar{text-align:center}.form-group.errored label .commit-ref{background-color:var(--color-danger-subtle)}.repo-menu-item:not([aria-current=page])+.repo-sub-menu{display:none}.feature-callout .new-label-hidden{display:none}.feature-callout .new-feature-label.new-label-hidden{display:inline}.repository-og-image{width:100%;max-width:640px;height:320px;object-fit:cover;object-position:center;background-repeat:no-repeat;background-position:center;background-size:cover}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.timeout{width:auto;height:300px;padding:0;margin:16px 0;background-color:transparent;border:0}.timeout h3{padding-top:100px;color:var(--color-fg-muted)}.repo-language-color{position:relative;top:1px;display:inline-block;width:12px;height:12px;border:1px solid var(--color-primer-border-contrast);border-radius:50%}.iconbutton .octicon{margin-right:0}.file-navigation::before{display:table;content:""}.file-navigation::after{display:table;clear:both;content:""}.file-navigation .select-menu-button .css-truncate-target{max-width:200px}.file-navigation .breadcrumb{float:left;margin-top:0;margin-left:4px;font-size:16px;line-height:26px}.file-navigation+.breadcrumb{margin-bottom:8px}.include-fragment-error{display:none}.is-error .include-fragment-error{display:block}.prereceive-feedback{padding:16px;margin-bottom:16px;border:1px solid #dfe2e5;border-left:6px solid #caa21a;border-radius:6px}.prereceive-feedback-heading{margin-top:0;margin-bottom:8px;color:var(--color-attention-fg)}.file-navigation-options{float:right;margin-left:4px}.file-navigation-options .dropdown-menu{width:360px;padding:16px}.file-navigation-options .dropdown-divider{margin:16px -16px}.file-navigation-option{position:relative;display:inline-block;margin-left:4px}.file-navigation-option .select-menu{display:inline-block;margin-right:0;margin-bottom:0;vertical-align:middle}.file-navigation-option .select-menu-button .octicon:only-child{margin-left:2px}.file-navigation-option .zeroclipboard-button{padding-right:8px}.file-navigation-option .input-group{width:290px}.file-navigation-option .input-group .form-control{width:calc(100% + 2px);height:28px;min-height:0;margin-right:-1px;margin-left:-1px;border-radius:0}.file-navigation-option .input-group .select-menu-button{position:relative;z-index:2}.repository-item-checkbox:checked+.repository-item-name{background-color:var(--color-accent-subtle)}.custom-role-icon{background-color:var(--color-canvas-subtle)}.profile-picture{margin:8px 0 0}.profile-picture>p{float:left;margin:0;line-height:30px}.profile-picture>img{float:left;margin:0 8px 0 0;border-radius:6px}.app-owner{margin:16px 0 0}[data-menu-button-contents] .runner-size-menu-dot{display:none}[data-menu-button-contents] .runner-size-menu-col-3{width:24.9999%}.edit-profile-avatar{width:200px}.edit-profile-avatar .drag-and-drop{padding:0;color:var(--color-fg-muted);border-width:0}.edit-profile-avatar input{cursor:pointer}.edit-profile-avatar.is-bad-file{border:0}.edit-profile-avatar .manual-file-chooser{position:absolute;top:0;left:0;height:34px;padding:0;cursor:pointer}.avatar-upload .flash{width:100%;padding:32px 16px;border:dashed 1px var(--color-danger-emphasis);box-shadow:none}.avatar-upload .upload-state{display:none;padding:8px 0}.avatar-upload .upload-state p{margin:0;font-size:12px;color:var(--color-fg-muted)}.avatar-upload .avatar-upload .octicon{display:inline-block}.is-uploading .avatar-upload .loading{display:block;padding:0}.is-uploading .avatar-upload .loading img{vertical-align:top}.is-uploading .avatar-upload .button-change-avatar{display:none}.is-bad-file .avatar-upload .bad-file{display:block;margin:0}.is-too-big .avatar-upload .too-big{display:block;margin:0}.is-bad-dimensions .avatar-upload .bad-dimensions{display:block;margin:0}.is-bad-format .avatar-upload .bad-format{display:block;margin:0}.is-failed .avatar-upload .failed-request{display:block;margin:0}.is-empty .avatar-upload .file-empty{display:block;margin:0}dl.new-email-form{padding:8px 8px 0;margin:0 -8px 8px;border-top:1px solid var(--color-border-default)}.selected-user-key{background-color:var(--color-attention-subtle)}.user-key-type{padding-right:16px;padding-left:8px;text-align:center}.user-key-email-badge{display:inline-table;margin-right:4px}.user-key-email{display:table-cell;padding:1px 4px;font-size:12px;line-height:1.4;border:1px solid var(--color-border-default);border-radius:6px}.user-key-email.unverified{border-top-right-radius:0;border-bottom-right-radius:0}.user-key-email-unverified{display:table-cell;padding-right:4px;padding-left:4px;font-size:11px;color:var(--color-fg-muted);background-color:#ecebec;border:1px solid var(--color-border-default);border-left:0;border-top-right-radius:6px;border-bottom-right-radius:6px}.user-key-details{width:400px;line-height:1.6;white-space:normal}.user-key-details code{font-size:13px}.recent-user-key-access{color:#1e7e34}.oauth-app-info-container .float-left-container{float:left;text-align:left}.oauth-app-info-container .float-right-container{float:right;text-align:right}.oauth-app-info-container dl.keys{margin:8px 0}.oauth-app-info-container dl.keys dt{margin-top:8px;font-weight:600;color:var(--color-fg-muted)}.oauth-app-info-container dl.keys dd{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--color-fg-default)}.oauth-app-info-container .user-count{font-size:30px;font-weight:300;color:var(--color-fg-muted)}.logo-upload{position:relative;display:inline-block}.logo-upload a.delete,.logo-upload span.delete{position:absolute;left:88px;display:none;padding:8px 8px}.logo-upload a.delete:hover,.logo-upload span.delete:hover{color:var(--color-danger-fg)}.logo-upload-container{display:inline-block}.logo-upload-container .logo-upload-label .manual-file-chooser{top:0;left:0;width:130px;height:34px;padding:0;margin-left:0;cursor:pointer}.logo-upload-container .upload-state{padding:8px 0}.logo-upload-container .upload-state p{margin:0;font-size:12px;color:var(--color-fg-muted)}.logo-box{width:120px;height:120px;background-color:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:6px}.logo-box img{display:none;width:118px;height:118px;border-radius:6px}.logo-placeholder{color:var(--color-fg-muted);text-align:center}.logo-placeholder p{margin:0;font-size:14px}.has-uploaded-logo .logo-placeholder,.has-uploaded-logo .or{display:none}.has-uploaded-logo:hover a.delete,.has-uploaded-logo:hover span.delete{display:block}.has-uploaded-logo .logo-box img{display:block}.access-token{border-bottom:1px solid var(--color-border-muted)}.access-token:last-child{border:0}.access-token .last-used{margin-right:8px}.access-token.new-token{background-color:rgba(108,198,68,.1)}.access-token.new-token .octicon-check{color:var(--color-success-fg)}.access-token .token-description{max-width:450px;color:var(--color-fg-default)}.access-token .token{font-size:14px}.access-token .token-type{min-width:76px}.regenerate-token-cta .btn-danger{margin-left:32px}.personal-access-tokens label{display:inline}.personal-access-tokens label p{display:inline-block;margin:0;font-size:13px;font-weight:400}.personal-access-tokens .child-scopes{margin-left:16px;list-style:none}.personal-access-tokens .child-scopes .token-scope{width:200px;font-weight:400}.personal-access-tokens .child-scopes .child-scopes{margin-left:0}.token-scope{display:inline-block;width:220px;padding:2px 0;margin:0;font-size:13px;color:var(--color-fg-default)}.token-scope input{margin-right:4px}.callback-urls dl dd .form-control{width:100%}.callback-urls.has-many .callback-url-action-cell{display:table-cell}.callback-description{margin-top:16px}.callback-description .octicon{padding-left:0}.callback-url .label{display:none;width:64px;text-align:center}.callback-url.is-default-callback .label{display:inline-block}.callback-url.is-default-callback .btn{display:none}.callback-url-wrap{display:table;width:100%}.callback-url-action-cell{display:none;width:70px;text-align:right}.boxed-group.application-show-group dl.form-group>dd .form-control.wide{width:460px}.boxed-group.application-show-group dl.form-group>dd .form-control.short{height:50px;min-height:50px}.application-show-group .errored .note{display:none}.application-show-group .drag-and-drop{padding:0;text-align:left;background-color:transparent;border:0}.application-show-group .drag-and-drop img{margin-bottom:1px;vertical-align:bottom}.application-show-group .drag-and-drop span{padding:0}.application-show-group .dragover .logo-box{box-shadow:#c9ff00 0 0 3px}.application-show-group .is-uploading .loading{display:inline-block}.application-show-group .is-uploading .default{display:none}.application-show-group .is-failed .failed-request{display:inline-block}.application-show-group .is-failed .default{display:none}.application-show-group .is-bad-file .bad-file{display:inline-block}.application-show-group .is-bad-file .default{display:none}.application-show-group .is-too-big .file-too-big{display:inline-block}.application-show-group .is-too-big .default{display:none}.application-show-group .is-bad-format .bad-format{display:inline-block}.application-show-group .is-bad-format .default{display:none}.application-show-group .is-default .default{display:block}table.security-history-detail{width:100%;font-size:12px}table.security-history-detail td{max-width:200px;word-wrap:break-word}.email-preference-exceptions{font-size:12px}.email-preference-exceptions h5{margin:16px 0 4px;color:var(--color-fg-muted)}.email-preference-exceptions .exception-list{list-style:none}.email-preference-exceptions .exception{max-width:400px;padding:4px;padding-left:0;border-top:1px solid var(--color-border-muted)}.email-preference-exceptions .exception:last-child{border-bottom:1px solid var(--color-border-muted)}.email-preference-exceptions.opt-in-list{display:none}.transactional-only .email-preference-exceptions.opt-in-list{display:block}.transactional-only .email-preference-exceptions.opt-out-list{display:none}.u2f-registration{position:relative;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--color-border-muted)}.u2f-registration.is-sending .u2f-registration-delete{display:none}.u2f-registration.is-sending .spinner{position:relative;top:3px}.u2f-registration-icon{position:absolute;left:-24px;color:var(--color-fg-muted)}.new-u2f-registration{position:relative}.new-u2f-registration .add-u2f-registration-form:not(.for-trusted-device){display:none;margin-bottom:8px}.new-u2f-registration.is-active .add-u2f-registration-link{display:none}.new-u2f-registration.is-active .add-u2f-registration-form{display:block}.new-u2f-registration .webauthn-request-interaction,.new-u2f-registration .webauthn-request-error{display:none}.new-u2f-registration.is-sending .webauthn-request-interaction{display:block}.new-u2f-registration.is-showing-error .webauthn-request-error{display:block}.webauthn-box .webauthn-sorry{display:block}.webauthn-box .new-u2f-registration{display:none}.webauthn-box.available .webauthn-sorry{display:none}.webauthn-box.available .new-u2f-registration{display:block}.spinner{display:none}.is-sending .spinner{display:inline-block}.confirmation-phrase{font-style:italic;font-weight:400}.session-device .session-state-indicator.recent{background-color:var(--color-success-emphasis);box-shadow:0 0 10px rgba(108,198,68,.5)}.session-device .session-state-indicator.revoked{background-color:var(--color-danger-emphasis);box-shadow:0 0 10px rgba(198,108,68,.5)}.session-device .session-state-indicator.not-recent{background-image:linear-gradient(#aaa, #ccc);box-shadow:0 1px 0 #fff}.collaborators .collab-list{border-bottom-width:0}.collaborators .collab-list-item:first-child .collab-list-cell{border-top-width:0}.collaborators .collab-list-cell{padding-top:16px;padding-bottom:16px;vertical-align:middle}.collaborators .collab-meta{width:140px}.collaborators .collab-remove{padding-right:16px;text-align:right}.collaborators .collab-remove .remove-link{color:var(--color-fg-muted)}.collaborators .collab-remove .remove-link:hover{color:var(--color-danger-fg)}.collaborators .collab-team-link{width:300px}.collaborators .collab-team-link:hover{text-decoration:none}.collaborators .collab-team-link .avatar{float:left;margin-top:1px;margin-right:8px}.collaborators .collab-team-link.disabled{pointer-events:none}.collaborators .collab-info{height:100%;color:var(--color-fg-default)}.collaborators .collab-info .description{padding-right:50px;margin-top:4px;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collaborators .collab-info .collab-name{display:block;font-size:14px}.collaborators .collab-info .collab-message{position:relative;top:25%;display:block}.collaborators .copy-invite-modal{left:0;width:300px}@media(min-width: 768px){.collaborators .copy-invite-modal{right:0;left:unset;width:352px}}.collaborators .copy-invite-modal::before,.collaborators .copy-invite-modal::after{display:none}.access-form-wrapper{padding:8px;background-color:var(--color-canvas-subtle);border-top:1px solid var(--color-border-default);border-radius:0 0 6px 6px}.access-flash{padding:8px;margin-right:8px;margin-bottom:8px;margin-left:8px}.repo-access-group .blankslate{display:none}.repo-access-group.is-empty .blankslate{display:block}.repo-access-group.no-form .add-team-form{display:none}.oauth-pending-deletion-list-item{background-color:var(--color-canvas-subtle);box-shadow:inset 0 0 8px #eee}.oauth-pending-deletion-list-item:hover{background-color:var(--color-canvas-subtle)}.oauth-pending-deletion-list-item .oauth-pending-deletion{display:inline-block;width:19%;line-height:30px}.oauth-pending-deletion-list-item .active{display:none}.oauth-pending-deletion{display:none;width:100%}.boxed-group-list .access-level{color:var(--color-fg-muted)}.boxed-group-list .access-level.css-truncate-target{max-width:500px}.settings-next{font-size:14px;line-height:1.5}.settings-next label{font-size:14px}.settings-next .note{font-size:13px}.settings-next .form-checkbox input[type=radio],.settings-next .form-checkbox input[type=checkbox]{margin-top:4px}dl.form-group>dd textarea.compact{height:100px;min-height:0}.form-hr{margin-top:16px;margin-bottom:16px;border-bottom-color:var(--color-border-default, #e5e5e5)}.listgroup{list-style:none;border:1px solid var(--color-border-default, #e5e5e5);border-radius:6px}.listgroup-item{min-height:inherit;padding:8px;font-size:13px;line-height:26px;color:var(--color-fg-muted)}.listgroup-item::before{display:table;content:""}.listgroup-item::after{display:table;clear:both;content:""}.listgroup-item+.listgroup-item{border-top:1px solid var(--color-border-default, #e5e5e5)}.listgroup-item.listgroup-item-preview{line-height:inherit}.listgroup-item.listgroup-item-preview .BtnGroup{margin-top:4px}.listgroup-item .css-truncate-target{max-width:200px}.listgroup-item-title{display:block;font-weight:600}.listgroup-item-body{display:block}.listgroup-header{border-top:0;border-bottom:1px solid var(--color-border-default, #e5e5e5)}.listgroup-overflow{max-height:240px;overflow-y:auto;background-color:var(--color-canvas-subtle, #f5f5f5)}.listgroup-sm .listgroup-item{padding-top:4px;padding-bottom:4px}.protected-branches{margin-top:16px;margin-bottom:16px}.protected-branch-options{margin-left:16px;opacity:.5}.protected-branch-options.active{opacity:1}.protected-branch-reviews.on .require-code-owner-review,.protected-branch-reviews.on .reviews-dismiss-on-push,.protected-branch-reviews.on .reviews-include-dismiss,.protected-branch-reviews.on .allow-force-pushes,.protected-branch-reviews.on .require-approving-reviews{display:block}.protected-branch-reviews .require-code-owner-review,.protected-branch-reviews .reviews-dismiss-on-push,.protected-branch-reviews .reviews-include-dismiss,.protected-branch-reviews .allow-force-pushes,.protected-branch-reviews .require-approving-reviews{display:none}.wikis-options.on .wikis-restrict-editing{display:block}.wikis-options .wikis-restrict-editing{display:none}.authorized-pushers{width:440px}.authorized-pushers .add-protected-branch-user-or-team{display:block}.authorized-pushers .user-or-team-limit-reached{display:none;padding:8px;font-size:13px}.authorized-pushers.at-limit .add-protected-branch-user-or-team{display:none}.authorized-pushers.at-limit .user-or-team-limit-reached{display:block;width:440px}.protected-branch-authorized-pushers-table,.protected-branch-pushers-table{margin-top:8px}.protected-branch-authorized-pushers-table .boxed-group-inner,.protected-branch-pushers-table .boxed-group-inner{max-height:350px;overflow-y:auto}.protected-branch-authorized-pushers-table .table-list,.protected-branch-pushers-table .table-list{border-bottom:0}.protected-branch-authorized-pushers-table .table-list-cell,.protected-branch-pushers-table .table-list-cell{vertical-align:middle}.protected-branch-authorized-pushers-table .table-list-cell:first-child,.protected-branch-pushers-table .table-list-cell:first-child{width:100%}.protected-branch-authorized-pushers-table .avatar,.protected-branch-authorized-pushers-table .octicon-jersey,.protected-branch-authorized-pushers-table .octicon-organization,.protected-branch-pushers-table .avatar,.protected-branch-pushers-table .octicon-jersey,.protected-branch-pushers-table .octicon-organization{width:36px;margin-right:8px;text-align:center}.user-already-added::after{display:inline-block;padding:1px 4px;margin-left:4px;font-size:11px;line-height:1.4;color:var(--color-fg-on-emphasis);content:"Already added";background:var(--color-severe-emphasis);border-radius:6px}.protected-branch-admin-permission{float:left;padding:4px;margin:-2px 0 -2px -4px;line-height:normal;border:1px solid transparent;border-radius:6px}.protected-branch-admin-permission.active{animation:toggle-color 1s ease-in-out 0s}@keyframes toggle-color{0%{background-color:transparent}50%{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}100%{background-color:transparent}}.automated-check-options{margin-top:8px}.automated-check-options .listgroup-item label{font-size:inherit}.automated-check-options .listgroup-item input[type=checkbox]{float:none;margin-top:-2px;margin-right:4px;margin-left:0}.automated-check-options .label{margin-top:4px}.repository-merge-features .form-group.errored label{color:inherit}.repository-merge-features .form-group.errored .error{position:inherit;padding:0;margin-top:0;margin-left:4px;font-size:11px;color:var(--color-danger-fg);background:transparent;border:0}.repository-merge-features .form-group.errored .error::before,.repository-merge-features .form-group.errored .error::after{display:none}.repository-settings-actions [role=tab][aria-selected=true]{font-weight:600;color:var(--color-fg-default);border-color:var(--color-severe-emphasis)}.repository-settings-actions [role=tab][aria-selected=true] .UnderlineNav-octicon{color:var(--color-fg-muted)}.radio-label-theme-discs{padding:0;transition:padding .25s cubic-bezier(0.25, 0.46, 0.45, 0.94)}:focus+.radio-label-theme-discs{border-color:var(--color-accent-emphasis);outline:none;box-shadow:var(--color-primer-shadow-focus)}:checked+.radio-label-theme-discs{border-color:var(--color-accent-emphasis)}:checked+.radio-label-theme-discs,.radio-label-theme-discs:hover{padding:8px}.settings-protected-domains .protected-domain-delete-dialog{color:var(--color-fg-default);white-space:normal}.settings-protected-domains .protected-domain-delete-dialog .repos-to-unpublish{max-height:16rem;list-style:none}.qr-code-table{display:inline-block;padding:16px;margin:32px auto;border:1px solid var(--color-border-muted);border-radius:6px;box-shadow:0 2px 2px 0 rgba(0,0,0,.04)}.qr-code-table tr{background:transparent;border:0}.qr-code-table th,.qr-code-table td{padding:0;border:0}.qr-code-table td{width:3px;height:3px}.qr-code-table .black{background:#000}.qr-code-table .white{background:#fff}.two-factor-recovery-codes{margin:32px 0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:21px}.two-factor-recovery-code-mark{width:24px;height:24px;font-size:24px;line-height:16px;color:var(--color-fg-muted)}.two-factor-recovery-code{display:inline-block;width:48%;line-height:1.6;text-align:center}.two-factor-recovery-code::before{position:relative;top:-3px;margin-right:8px;font-size:10px;color:var(--color-fg-muted);content:"â"}.recovery-codes-saving-options{margin-left:32px}.recovery-codes-saving-options .recovery-code-save-button{width:115px;margin-right:16px;text-align:center}.recovery-codes-warning{margin:0 -16px}.recovery-codes-warning .recovery-codes-warning-octicon{height:40px;margin-right:16px}.btn-two-factor-state{min-width:70px}.two-factor-steps{padding:16px 16px 0;margin:32px 0;border:1px solid var(--color-border-default);border-radius:6px}.two-factor-toggle .two-factor-status{color:var(--color-fg-muted);border-bottom:1px solid var(--color-border-muted)}.two-factor-settings-group{border-bottom:1px solid var(--color-border-muted)}.two-factor-settings-group li{line-height:1.5;list-style:none}.github-access-banner{position:relative;padding:8px 16px 8px 70px;margin:0 0 16px;font-size:14px;border:1px solid var(--color-border-default);border-radius:6px}.github-access-banner .octicon{position:absolute;top:20px;left:20px;color:var(--color-danger-fg)}.setup-wrapper{width:750px;padding-top:32px;margin:0 auto}.setup-wrapper::before{display:table;content:""}.setup-wrapper::after{display:table;clear:both;content:""}.setup-header{padding-bottom:16px;margin:0 auto 32px;overflow:hidden;text-align:left;border-bottom:1px solid var(--color-border-default)}.setup-header h1{margin-top:0;margin-bottom:0;font-size:45px;font-weight:400;line-height:1.1;letter-spacing:-1px}.setup-header h1 .octicon{color:var(--color-fg-muted)}.setup-header .lead{margin-top:2px;margin-bottom:0;font-size:21px}.setup-header .lead a{color:var(--color-fg-muted)}.setup-header .lead a:hover{color:var(--color-accent-fg);text-decoration:none}.setup-org{padding-bottom:0;border-bottom:0}.setup-main{float:left;width:450px}.setup-secondary{float:right;width:250px}.setup-secondary .info{padding-top:0;padding-bottom:0;margin-top:-8px;font-size:12px;line-height:18px;color:var(--color-fg-muted);text-align:center}.setup-info-module{margin-bottom:32px;background-color:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.075)}.setup-info-module h2{padding:16px;margin-bottom:16px;overflow:hidden;font-size:16px;border-bottom:1px solid var(--color-border-default)}.setup-info-module h2 .price{float:right;font-weight:600;color:var(--color-fg-muted)}.setup-info-module h3{padding:0 16px;margin:0 0 -8px;font-size:14px}.setup-info-module p{padding:0 16px;margin:16px 0}.features-list{padding:0 16px 16px;margin:0;font-size:14px;list-style:none}.features-list li{margin-top:8px}.features-list li:first-child{margin-top:0}.features-list .list-divider{margin:16px -16px;border-top:1px solid var(--color-border-muted)}.features-list .octicon-check{margin-right:4px;color:var(--color-success-fg)}.features-list .octicon-question{font-size:12px;color:var(--color-fg-muted)}.features-list .tooltipped::after{width:250px;white-space:normal}.setup-form-container .setup-form-title{font-size:16px}.setup-form-container .secure{float:right;margin-top:2px;font-size:11px;color:var(--color-success-fg);text-transform:uppercase}.setup-form-container hr{margin-top:24px;margin-bottom:24px}.setup-form-container .form-actions{padding-top:0;padding-bottom:0;text-align:left}.team-member-container{margin-bottom:16px}.team-member-container .team-member-username{line-height:1.2}.setup-form{padding-bottom:16px}.setup-form .form-group.successed .error{display:none}.setup-form .form-group dd .form-control{width:100%}.setup-form .form-group dd .form-control.short{width:250px}.setup-form dd{position:relative}.setup-form dd .octicon{position:absolute;top:8px;right:25px}.setup-form .octicon-alert{color:var(--color-danger-fg)}.setup-form .octicon-check{color:var(--color-success-fg)}.setup-form .tos-info,.setup-form .setup-organization-next{margin:16px 0;border-top:1px solid var(--color-border-muted);border-bottom:1px solid var(--color-border-muted)}.setup-form .tos-info{padding:16px 0}.setup-form .setup-organization-next{padding-top:16px;padding-bottom:16px}.setup-form .setup-plans{border-collapse:separate;border:1px solid var(--color-border-default)}.setup-form .setup-plans tr.selected{background-color:var(--color-accent-subtle)}.setup-form .setup-plans .name{font-weight:600}.setup-form .setup-plans .choose-plan input[type=radio]{display:none}.setup-creditcard-form .country-form,.setup-creditcard-form .state-form{float:left;margin:0;word-wrap:normal}.setup-creditcard-form .country-form,.setup-creditcard-form .postal-code-form{margin-top:0;margin-bottom:16px}.setup-creditcard-form .form-group select.select-country{width:182px;margin-right:4px}.setup-creditcard-form .form-group select:invalid{color:var(--color-fg-muted)}.setup-creditcard-form .form-group select.select-state{width:113px}.setup-creditcard-form .form-group .input-vat{width:288px}.setup-creditcard-form .form-group input.input-postal-code{width:180px}.setup-creditcard-form.is-vat-country .vat-field{display:block}.setup-creditcard-form.is-international .form-group select.select-country{width:300px}.setup-creditcard-form.is-international .state-form{display:none}.setup-creditcard-form.no-postcodes .postal-code-form{display:none}.setup-creditcard-form dd .octicon-credit-card{position:inherit}.setup-creditcard-form .vat-field{display:none}.setup-creditcard-form .vat-field.prefilled{display:block}.setup-creditcard-form .help-text{font-size:80%;font-weight:400;color:var(--color-fg-muted)}.user-identification-questions{float:none;width:auto;margin-top:40px}.user-identification-questions .question{margin-bottom:32px}.user-identification-questions .response-group label{font-weight:400}.user-identification-questions .form-checkbox{margin:8px 0}.user-identification-questions .disclaimer{margin:40px 0 0;text-align:center}.user-identification-questions.redesign .question{margin-bottom:96px}.user-identification-questions.redesign .topic-input-container .tag-input{width:100%;border:0;border-bottom:6px solid #000;box-shadow:0 0 0}.signup-plan-summary-subhead{border-bottom:6px solid}.signup-btn:disabled{opacity:.5 !important}.collection-search-results em{padding:.1em;background-color:#faffa6}.draft-tag{padding:4px 8px;font-weight:600;color:#eee;background-color:#404040}.showcase-page-pattern{position:relative;z-index:-1;height:100px;margin-top:-24px;margin-bottom:-70px}.showcase-page-pattern::after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;content:"";background-image:linear-gradient(180deg, rgba(255, 255, 255, 0.85), white)}.showcase-page-repo-list{border-top:1px solid var(--color-border-muted)}.slash-command-menu-item .command-description{color:var(--color-fg-muted)}.slash-command-menu-item[aria-selected=true]{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.slash-command-menu-item[aria-selected=true] .command-description{color:var(--color-fg-on-emphasis)}.modal-anchor::before{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99;display:block;cursor:default;content:" ";background:var(--color-primer-canvas-backdrop)}.sortable-button-item:first-of-type .sortable-button[data-direction=up],.sortable-button-item:last-of-type .sortable-button[data-direction=down]{display:none}@keyframes sponsors-progress-animation{0%{background-position:100%}100%{background-position:0%}}.sponsors-goal-progress-bar{background:#ec6cb9;transition:width .5s ease-in}.sponsors-goal-progress-bar:hover{cursor:pointer;background:linear-gradient(90deg, #ffd33d 0%, #ea4aaa 17%, #b34bff 34%, #01feff 51%, #ffd33d 68%, #ea4aaa 85%, #b34bff 100%);background-size:300% 100%;animation:sponsors-progress-animation 2s linear infinite}.sponsors-goal-completed-bar{background:linear-gradient(90deg, #ffd33d 0%, #ea4aaa 17%, #b34bff 34%, #01feff 51%, #ffd33d 68%, #ea4aaa 85%, #b34bff 100%);background-size:300% 100%;transition:width .5s ease-in;animation:sponsors-progress-animation 2s linear infinite}.sponsors-goals-avatar-border{background-color:var(--color-canvas-default);border:1px solid var(--color-fg-on-emphasis)}.sponsors-goals-heart-anim{width:100px;height:100px;cursor:pointer;background:url("/images/modules/site/sponsors/heart-explosion.png") no-repeat;background-position:0 0;background-size:600px 100px;transition:background-position .3s steps(5);transition-duration:0s}.sponsors-goals-heart-anim.is-active{background-position:-500px 0;transition-duration:.3s}.open>.sponsors-foldable{max-height:700px}.open .sponsors-foldable-opened{display:block}.open .sponsors-foldable-closed{display:none}.sponsors-foldable{max-height:0;box-sizing:border-box;overflow-y:auto;transition:max-height .25s ease-in-out}.sponsors-foldable-opened{display:none}.sponsors-foldable-closed{display:block}.sponsor-card{width:100%;height:450px;border:0}@media(min-width: 544px){.sponsor-card{height:260px}}.sponsor-cell{padding:8px;vertical-align:middle;border-right:1px solid var(--color-neutral-muted);border-bottom:1px solid var(--color-neutral-muted)}.sponsor-cell:first-child{width:45px;padding-left:32px;border-right-width:0}.sponsor-cell:last-child{padding-left:8px;border-right-width:0}.sponsor-header-cell{padding-right:16px;font-weight:600;text-align:left;border-top:1px solid var(--color-neutral-muted)}.sponsor-row-number{color:var(--color-fg-subtle)}@media(prefers-reduced-motion: no-preference){.tier-category:hover .tier-emoji{animation:wiggle .1s alternate;animation-timing-function:ease;animation-delay:.1s;animation-iteration-count:4}}@keyframes wiggle{0%{transform:rotate(-25deg)}100%{transform:rotate(15deg) scale(1.2)}}.sponsors-featured-item{width:100%}@media(min-width: 768px){.sponsors-featured-item{width:calc(50% - 8px)}}.tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.team-label-ldap{display:inline-block;padding:0 8px;line-height:25px;color:var(--color-fg-muted);text-transform:uppercase;cursor:default;border:1px solid var(--color-border-muted);border-radius:6px;box-shadow:none}.team-label-ldap.header-label-ldap{padding:4px 4px}.team-member-ellipsis{width:25px;height:25px;line-height:24px}.team-member-ellipsis:hover{color:var(--color-accent-fg);background:var(--color-canvas-subtle)}.team-listing .nested-teams-checkbox{padding-left:4px}.team-listing .nested-teams-checkbox.show{padding-right:12px}.team-listing .nested-teams-checkbox.indent-1{padding-left:30px}.team-listing .nested-teams-checkbox.indent-2{padding-left:54px}.team-listing .nested-teams-checkbox.indent-3{padding-left:78px}.team-listing .nested-teams-checkbox.indent-4{padding-left:102px}.team-listing .nested-teams-checkbox.indent-5{padding-left:126px}.team-listing .nested-teams-checkbox.indent-6{padding-left:150px}.team-listing .nested-teams-checkbox.indent-7{padding-left:174px}.team-listing .nested-teams-checkbox.indent-8{padding-left:198px}.team-listing .nested-teams-checkbox.indent-9{padding-left:222px}.team-listing .nested-teams-checkbox.indent-10{padding-left:246px}.team-listing .nested-teams-checkbox.indent-11{padding-left:270px}.team-listing .nested-teams-checkbox.indent-12{padding-left:294px}.team-listing .nested-teams-checkbox.indent-13{padding-left:318px}.team-listing .nested-teams-checkbox.indent-14{padding-left:342px}.team-listing .nested-teams-checkbox.indent-15{padding-left:366px}.team-listing .team-info{width:280px}.team-listing .team-short-info{width:170px}.team-listing .nested-team-info{width:650px}.team-listing .nested-team-name{max-width:268px}.team-listing .shortened-teams-avatars{margin-left:auto}.team-listing .shortened-teams-avatars.width-0{width:300px}.team-listing .shortened-teams-avatars.width-1{width:233px}.team-listing .shortened-teams-avatars.width-2{width:167px}.team-listing .shortened-teams-avatars.width-3{width:99px}.team-listing .team-members-count{width:124px}.team-listing .team-show-more-cell{width:980px}.team-listing .team-buttons{width:150px}.team-listing .octicon-wrapper{width:16px}.team-listing .is-open.root-team{background-color:var(--color-canvas-subtle)}.team-listing .is-open .expand-nested-team{font-weight:600}.team-listing .is-open .octicon-chevron-down{transform:rotate(180deg)}.traffic-graph{min-height:150px}.traffic-graph .activity{margin-top:0}.traffic-graph .activity .dots{margin-top:40px}.traffic-graph .path{fill:none;stroke-width:2}.traffic-graph path.total{stroke:var(--color-success-emphasis)}.traffic-graph path.unique{stroke:var(--color-accent-emphasis)}.traffic-graph .axis .tick:first-of-type line{stroke:var(--color-success-emphasis);stroke-width:2px}.traffic-graph .y line{stroke:var(--color-success-emphasis)}.traffic-graph .y.unique line{stroke:var(--color-accent-emphasis)}.traffic-graph .overlay{fill-opacity:0}.uniques-graph .axis .tick:last-child line{stroke:var(--color-accent-emphasis);stroke-width:2px}.svg-tip .date{color:var(--color-fg-on-emphasis)}.top-domains .dots{display:block;margin:167px auto 0}table.capped-list{width:100%;line-height:100%}table.capped-list th{padding:8px;text-align:left;background:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default)}table.capped-list td{padding:8px;font-size:12px;vertical-align:middle;border-bottom:1px solid var(--color-border-muted)}table.capped-list th.middle,table.capped-list td.middle{text-align:center}table.capped-list .favicon{width:16px;height:16px;margin:0 4px;vertical-align:middle}table.capped-list .octicon{margin-right:8px;color:var(--color-fg-muted);vertical-align:-3px}table.capped-list tr:nth-child(even){background-color:var(--color-canvas-subtle)}.capped-list-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.traffic-graph-stats .summary-stats{width:100%}.traffic-graph-stats .summary-stats::before{display:table;content:""}.traffic-graph-stats .summary-stats::after{display:table;clear:both;content:""}.traffic-graph-stats .summary-stats li{display:block;float:left;width:50%}.totals circle{fill:var(--color-success-emphasis);stroke:var(--color-canvas-default);stroke-width:2}.uniques circle{fill:var(--color-accent-emphasis);stroke:var(--color-canvas-default);stroke-width:2}ul.web-views li{width:140px}ul.clones li{width:170px}.tree-finder-input,.tree-finder-input:focus{font-size:inherit;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tree-browser .octicon-chevron-right{color:transparent}.tree-browser-result .octicon-file{color:var(--color-fg-muted)}.tree-browser-result:hover,.tree-browser-result[aria-selected=true]{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.tree-browser-result:hover .octicon-file,.tree-browser-result[aria-selected=true] .octicon-file{color:inherit}.tree-browser-result[aria-selected=true] .octicon-chevron-right{color:inherit}.tree-browser-result .css-truncate-target{max-width:870px}.tree-browser-result mark{font-weight:600;color:inherit;background:none}.typeahead-result{position:relative;display:block;min-width:100%;padding:8px;margin-top:0;color:var(--color-fg-default);cursor:pointer}.typeahead-result::before{display:table;content:""}.typeahead-result::after{display:table;clear:both;content:""}.typeahead-result:first-child{border-top:0}.typeahead-result:focus,.typeahead-result:hover,.typeahead-result[aria-selected=true],.typeahead-result.navigation-focus{text-decoration:none}.typeahead-result[aria-selected=true],.typeahead-result:hover,.typeahead-result.navigation-focus{color:var(--color-fg-on-emphasis);background-color:var(--color-accent-emphasis)}.typeahead-result[aria-selected=true] .octicon-plus,.typeahead-result:hover .octicon-plus,.typeahead-result.navigation-focus .octicon-plus{color:var(--color-fg-on-emphasis)}.typeahead-result.disabled{pointer-events:none;opacity:.5}.member-suggestion{padding-left:44px}.member-suggestion .avatar{float:left;margin-right:8px;margin-left:-32px}.member-suggestion .member-suggestion-info{width:90%;margin-top:2px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-suggestion .member-name{font-size:12px;color:var(--color-fg-muted)}.member-suggestion .member-email{margin-top:0;margin-bottom:0}.member-suggestion .octicon-plus,.member-suggestion .octicon-check{position:absolute;top:50%;right:15px;margin-top:-8px;color:var(--color-fg-muted)}.member-suggestion .already-member-note,.member-suggestion .non-member-note,.member-suggestion .non-member-action{margin-top:0;margin-bottom:0;color:var(--color-fg-muted)}.member-suggestion .non-member-action{display:none}.member-suggestion[aria-selected=true] .member-name,.member-suggestion[aria-selected=true] .non-member-note,.member-suggestion[aria-selected=true] .already-member-note,.member-suggestion[aria-selected=true] .non-member-action,.member-suggestion[aria-selected=true] .member-email,.member-suggestion:hover .member-name,.member-suggestion:hover .non-member-note,.member-suggestion:hover .already-member-note,.member-suggestion:hover .non-member-action,.member-suggestion:hover .member-email,.member-suggestion.navigation-focus .member-name,.member-suggestion.navigation-focus .non-member-note,.member-suggestion.navigation-focus .already-member-note,.member-suggestion.navigation-focus .non-member-action,.member-suggestion.navigation-focus .member-email{color:var(--color-fg-on-emphasis)}.member-suggestion[aria-selected=true] .non-member-note,.member-suggestion:hover .non-member-note,.member-suggestion.navigation-focus .non-member-note{display:none}.member-suggestion[aria-selected=true] .non-member-action,.member-suggestion:hover .non-member-action,.member-suggestion.navigation-focus .non-member-action{display:block}.member-suggestion[aria-selected=true] .octicon,.member-suggestion:hover .octicon,.member-suggestion.navigation-focus .octicon{color:var(--color-fg-on-emphasis)}.member-suggestion.not-a-member .member-info,.member-suggestion.disabled .member-info{margin-top:-2px}.non-member-result{padding-left:32px}.team-suggestion{padding-left:32px}.team-suggestion .octicon{float:left;margin-top:2px;margin-left:-24px}.team-suggestion .team-suggestion-info{margin:2px 0 0}.team-suggestion .team-suggestion-info .css-truncate-target{max-width:none}.team-suggestion .team-size,.team-suggestion .team-description{font-size:12px;color:var(--color-fg-muted)}.team-suggestion[aria-selected=true] .team-size,.team-suggestion[aria-selected=true] .team-description,.team-suggestion.navigation-focus .team-size,.team-suggestion.navigation-focus .team-description{color:var(--color-fg-on-emphasis)}.email-suggestion{padding-left:32px}.email-suggestion .octicon-mail{margin-left:-16px;color:var(--color-fg-muted)}.email-suggestion .member-suggestion-info{margin-top:1px}.repo-access-add-team .team-name{font-size:13px}.repo-access-add-team .team-description{display:block}.repo-access-add-team .team-size,.repo-access-add-team .team-description{font-size:12px;color:var(--color-fg-muted)}.repo-access-add-team[aria-selected=true] .team-size,.repo-access-add-team[aria-selected=true] .team-description,.repo-access-add-team.navigation-focus .team-size,.repo-access-add-team.navigation-focus .team-description{color:var(--color-fg-on-emphasis)}#user-content-toc{overflow:visible}#user-content-toc tr{border-top:0}#user-content-toc td{padding:0 16px;background-color:var(--color-canvas-subtle);border:0;border-radius:6px}#user-content-toc ul{padding-left:0;font-weight:600;list-style:none}#user-content-toc ul li{padding-left:.2em}#user-content-toc ul ul{font-weight:400}#user-content-toc ul ul li::before{float:left;margin-top:-0.2em;margin-right:.2em;font-size:1.2em;line-height:1;color:var(--color-fg-muted);content:"â"}#user-content-toc ul ul ul{padding-left:.9em}#user-content-toctitle h2{margin-top:1em;margin-bottom:.5em;font-size:1.25em;border-bottom:0}.user-list-info{min-height:48px;padding:0;font-size:18px;font-weight:400;line-height:20px}.wiki-rightbar .markdown-body .anchor{display:none}.wiki-rightbar .markdown-body h1{font-size:1.6em}.wiki-rightbar .markdown-body h2{font-size:1.4em}.wiki-rightbar p:last-child,.wiki-rightbar ul:last-child,.wiki-rightbar ol:last-child{margin-bottom:0}.wiki-footer .markdown-body,.wiki-rightbar .markdown-body{font-size:13px}.wiki-footer .markdown-body.wiki-writable>:nth-child(2),.wiki-rightbar .markdown-body.wiki-writable>:nth-child(2){margin-top:0 !important}.wiki-footer .markdown-body img{background:none}.wiki-pages-box .wiki-more-pages{display:none}.wiki-pages-box.wiki-show-more .wiki-more-pages,.wiki-pages-box .filterable-active .wiki-more-pages{display:block}.wiki-pages-box.wiki-show-more .wiki-more-pages-link,.wiki-pages-box .filterable-active .wiki-more-pages-link{display:none}.js-wiki-sidebar-toc-toggle-chevron{transition:transform 250ms ease-in-out;transform:rotate(-90deg)}.js-wiki-sidebar-toc-toggle-chevron.js-wiki-sidebar-toc-toggle-chevron-open{transform:rotate(0deg)}.visual-graph{transition:opacity ease-out .1s}.WorkflowGraph{cursor:grab}.WorkflowGraph.dragging *{cursor:grabbing !important}.WorkflowGraph.dragging .WorkflowJob:hover{background:none !important}.WorkflowGraph.dragging a:hover,.WorkflowGraph.dragging .btn-link:hover{text-decoration:none !important}.WorkflowStage{margin-right:56px !important}.WorkflowCard{z-index:1;width:260px;background-color:var(--color-workflow-card-bg);transition:background-color ease-out .12s,border-color ease-out .12s,box-shadow ease-out .12s}.WorkflowCard.active{z-index:3;box-shadow:var(--color-shadow-medium) !important}.WorkflowCard.active--in .WorkflowCard-port--input::after{background-color:var(--color-workflow-card-connector-highlight-bg)}.WorkflowCard.active--out .WorkflowCard-port--output::after{background-color:var(--color-workflow-card-connector-highlight-bg)}.visual-graph.active .WorkflowCard:not(.active){background-color:var(--color-workflow-card-inactive-bg);border-color:var(--color-border-muted) !important}.visual-graph.active .WorkflowCard:not(.active) .WorkflowJob,.visual-graph.active .WorkflowCard:not(.active) .MatrixComponent-pending,.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-heading--content{opacity:.5}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-port::before{background-color:var(--color-workflow-card-inactive-bg)}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-port::after{background-color:var(--color-workflow-card-connector-inactive-bg)}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-port--input{background-image:linear-gradient(270deg, var(--color-workflow-card-inactive-bg) 0%, var(--color-workflow-card-inactive-bg) 50%, var(--color-border-default) 50%, var(--color-border-default) 100%)}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-port--output{background-image:linear-gradient(90deg, var(--color-workflow-card-inactive-bg) 0%, var(--color-workflow-card-inactive-bg) 50%, var(--color-border-default) 50%, var(--color-border-default) 100%)}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-heading{background-color:var(--color-workflow-card-inactive-bg);box-shadow:inset 0 1px 0 var(--color-border-muted),inset 1px 0 0 var(--color-border-muted),inset -1px 0 0 var(--color-border-muted),0 -1px 2px var(--color-workflow-card-header-shadow)}.visual-graph.active .WorkflowCard:not(.active) .WorkflowCard-heading::after{box-shadow:inset 1px 0 0 var(--color-border-muted),inset 0 -1px 0 var(--color-border-muted),-1px 3px var(--color-workflow-card-inactive-bg)}.visual-graph.active .WorkflowConnector:not(.active){stroke:var(--color-workflow-card-connector-inactive)}.WorkflowCard.WorkflowCard-group{width:292px}.WorkflowCard.has-title{border-top-left-radius:0 !important}.WorkflowCard-heading{top:-21px;left:-1px;background-color:var(--color-workflow-card-bg);box-shadow:inset 0 1px 0 var(--color-border-default),inset 1px 0 0 var(--color-border-default),inset -1px 0 0 var(--color-border-default),0 -1px 2px var(--color-workflow-card-header-shadow);transition:background-color ease-out .12s,box-shadow ease-out .12s}.WorkflowCard-heading--content{transition:opacity ease-out .12s}.WorkflowCard-heading::after{position:absolute;top:5px;width:20px;height:16px;margin-left:16px;content:"";border-bottom-left-radius:6px;box-shadow:inset 1px 0 0 var(--color-border-default),inset 0 -1px 0 var(--color-border-default),-1px 3px var(--color-workflow-card-bg);transition:box-shadow ease-out .12s}.WorkflowCard-group .WorkflowCard-port{top:30px}.WorkflowCard-group .WorkflowJob:hover{background:var(--color-canvas-subtle)}.WorkflowCard-port{top:14px;width:16px;height:16px}.WorkflowCard-port::before{position:absolute;top:1px;left:1px;width:14px;height:14px;content:"";background-color:var(--color-workflow-card-bg);border-radius:50%;transition:background-color ease-out .12s}.WorkflowCard-port::after{position:absolute;top:4px;left:4px;width:8px;height:8px;content:"";background-color:var(--color-workflow-card-connector-bg);border-radius:50%;transition:background-color ease-out .12s}.WorkflowCard-port--input{left:-8px;background-image:linear-gradient(270deg, var(--color-workflow-card-bg) 0%, var(--color-workflow-card-bg) 50%, var(--color-border-default) 50%, var(--color-border-default) 100%)}.WorkflowCard-port--output{right:-8px;background-image:linear-gradient(90deg, var(--color-workflow-card-bg) 0%, var(--color-workflow-card-bg) 50%, var(--color-border-default) 50%, var(--color-border-default) 100%)}.WorkflowJob-deployment-progress .Progress{background:none}.WorkflowJob-deployment-progress .WorkflowJob-deployment-progress-complete{background-color:var(--color-workflow-card-progress-complete-bg) !important}.WorkflowJob-deployment-progress .WorkflowJob-deployment-progress-incomplete{background-color:var(--color-workflow-card-progress-incomplete-bg) !important}.WorkflowJob{padding:12px;transition:opacity ease-out .12s}.WorkflowJob-title{height:20px;line-height:20px}.WorkflowJob-title::after{position:absolute;top:0;right:0;bottom:0;left:0;content:""}.MatrixComponent-pending{padding:12px;transition:opacity ease-out .12s}.MatrixComponent-collapse--title{line-height:20px}.WorkflowConnectors{z-index:0;pointer-events:none;transform-origin:left top}.WorkflowConnectors.active{z-index:2}.WorkflowConnector{stroke:var(--color-workflow-card-connector);stroke-width:2px;transition:stroke ease-out .12s,stroke-width ease-out .12s,opacity ease-out .12s}.WorkflowConnector--hl{opacity:0}.WorkflowConnector--hl.active{stroke:var(--color-workflow-card-connector-highlight);stroke-width:3px;opacity:1}.zoom-btn{padding:4px;line-height:16px}.zoom-btn .octicon{color:var(--color-fg-default)}.zoom-btn.disabled .octicon{color:var(--color-fg-muted)}@media(min-width: 1012px){.actions-workflow-navigation{max-width:340px}}@media(min-width: 768px){.actions-workflow-navigation{top:16px;max-height:calc(100vh - 16px)}}.actions-workflow-navigation .row{height:40px;line-height:20px;text-decoration:none;transition:background-color .15s ease}.actions-workflow-navigation .row:hover{background-color:var(--color-canvas-subtle)}.actions-workflow-navigation .row-selected{font-weight:600;background-color:var(--color-canvas-subtle)}.actions-workflow-navigation .row-section{background:transparent !important}.actions-workflow-navigation .row-parent{background:transparent}.actions-workflow-navigation .row-parent:hover{background-color:transparent}.actions-workflow-navigation .row-child{height:32px}.actions-workflow-navigation .row-child:hover{color:var(--color-fg-default) !important}.actions-workflow-table.sticky th{position:sticky;top:0;z-index:1;background-color:var(--color-primer-canvas-sticky)}.actions-workflow-table th{height:auto;line-height:44px;text-align:left}.actions-workflow-table td{height:64px;padding-top:12px;padding-bottom:12px;line-height:20px}.actions-workflow-table td.compact{height:48px}.actions-workflow-table th:first-child,.actions-workflow-table td:first-child{padding-left:16px}@media(min-width: 768px){.actions-workflow-table th:first-child,.actions-workflow-table td:first-child{padding-left:20px}}.actions-workflow-table th:last-child,.actions-workflow-table td:last-child{padding-right:20px}.actions-workflow-stats .col{min-width:72px}.actions-workflow-stats .col-triggered-content{min-width:128px;min-height:24px}@media(max-width: 768px){.actions-fullwidth-module{position:relative;margin-right:-16px !important;margin-left:-16px !important;border-right:0 !important;border-left:0 !important}.actions-fullwidth-module.actions-fullwidth-module{border-radius:0 !important}.actions-fullwidth-module::after{position:absolute;right:0;bottom:-17px;left:0;z-index:0;height:16px;content:"";background-color:var(--color-canvas-subtle)}}@keyframes expand{0%{opacity:.5;transform:translateY(-4px)}100%{opacity:1;transform:translateY(0)}}.workflow-nav-mobile-details .octicon-chevron-right{transition:transform .09s ease-out}.workflow-nav-mobile-details[open] .octicon-chevron-right{transform:rotate(90deg)}.workflow-nav-mobile-details[open] .job-list{animation:expand .2s ease}.workflow-nav-mobile-details .job-list{position:relative}.workflow-nav-mobile-details .job-link{height:40px}.workflow-nav-mobile-details .job-link:hover{background:var(--color-neutral-subtle)}.ActionsApprovalOverlay-environment{min-height:64px;cursor:pointer}.ActionsApprovalOverlay-environment .AvatarStack-body{background:transparent !important}.ActionsApprovalOverlay-environment:hover,.ActionsApprovalOverlay-environment.selected-approval-environment{background:var(--color-neutral-subtle);border-color:var(--color-neutral-subtle) !important}.uxr_CheckRun-search{width:auto}.uxr_CheckRun-header{position:sticky;top:0;z-index:1}.uxr_CheckRun-header::after{position:absolute;right:0;bottom:-9px;left:0;height:8px;content:"";background-color:inherit}.uxr_CheckStep-header{position:sticky;top:88px;transition:background-color .15s ease}.annotation--contracted div:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.annotation--expanded div:first-child{word-break:break-word;white-space:pre-wrap}.actions-job-summary{border:1px solid var(--color-border-default);box-shadow:var(--color-shadow-small)}.actions-job-summary:target{border-color:var(--color-accent-emphasis);box-shadow:var(--color-primer-shadow-focus)}.enterprise-settings .field-with-errors{min-width:0;padding:0}
|
|
|
|
/*# sourceMappingURL=github-97a35359c017cdb74303137b705acde0c99af66ba45c83940744eb1f3f31d468283c34c9a3e770aed15144d8a7b4a251b3f493ae60d97148b0f334cf96f6bec4.css.map*/
|
|
</style>
|
|
<style>
|
|
/* Page tweaks */
|
|
.preview-page {
|
|
margin-top: 64px;
|
|
margin-bottom: 21px;
|
|
}
|
|
/* User-content tweaks */
|
|
.timeline-comment-wrapper > .timeline-comment:after,
|
|
.timeline-comment-wrapper > .timeline-comment:before {
|
|
content: none;
|
|
}
|
|
/* User-content overrides */
|
|
.discussion-timeline.wide {
|
|
width: 920px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="page">
|
|
<div id="preview-page" class="preview-page" data-autorefresh-url="">
|
|
<main id="js-repo-pjax-container">
|
|
<div class="clearfix new-discussion-timeline container-xl px-3 px-md-4 px-lg-5">
|
|
<div class="repository-content">
|
|
<div class="clearfix">
|
|
<div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end">
|
|
<div class="Layout-main">
|
|
|
|
|
|
|
|
<div id="readme" class="Box md Box--responsive">
|
|
|
|
<div class="Box-header d-flex border-bottom-0 flex-items-center flex-justify-between color-bg-default rounded-top-2">
|
|
<div class="d-flex flex-items-center">
|
|
<h2 class="Box-title">
|
|
SheetJS Community Edition
|
|
</h2>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="Box-body px-5 pb-5">
|
|
<article id="grip-content" class="markdown-body entry-content container-lg">
|
|
<h1>
|
|
<a id="user-content-sheetjs" class="anchor" href="#sheetjs" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a><a href="https://sheetjs.com" rel="nofollow">SheetJS</a>
|
|
</h1>
|
|
<p>The SheetJS Community Edition offers battle-tested open-source solutions for
|
|
extracting useful data from almost any complex spreadsheet and generating new
|
|
spreadsheets that will work with legacy and modern software alike.</p>
|
|
<p><a href="https://sheetjs.com/pro" rel="nofollow">SheetJS Pro</a> offers solutions beyond data processing:
|
|
Edit complex templates with ease; let out your inner Picasso with styling; make
|
|
custom sheets with images/graphs/PivotTables; evaluate formula expressions and
|
|
port calculations to web apps; automate common spreadsheet tasks, and much more!</p>
|
|
<p><a href="https://camo.githubusercontent.com/756bdb2076e17b3344ba27668018c9f0011b82a2a02f029790b3e3aa805154d7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f53686565744a532f73686565746a73" target="_blank" rel="nofollow"><img src="https://camo.githubusercontent.com/756bdb2076e17b3344ba27668018c9f0011b82a2a02f029790b3e3aa805154d7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f53686565744a532f73686565746a73" alt="License" data-canonical-src="https://img.shields.io/github/license/SheetJS/sheetjs" style="max-width:100%;"></a>
|
|
<a href="https://github.com/SheetJS/sheetjs/actions"><img src="https://camo.githubusercontent.com/dba2780ce8f220a047aa004f096aa7b440ceee8afdb7a8b8f539e240e33673d5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f73686565746a732f73686565746a732f54657374733a2532306e6f64652e6a73" alt="Build Status" data-canonical-src="https://img.shields.io/github/workflow/status/sheetjs/sheetjs/Tests:%20node.js" style="max-width:100%;"></a>
|
|
<a href="https://snyk.io/test/github/SheetJS/sheetjs" rel="nofollow"><img src="https://camo.githubusercontent.com/7ce09de464c75d8a533b9b2a156b487ab8db9f025f6ca9119395d894e82f69a7/68747470733a2f2f696d672e736869656c64732e696f2f736e796b2f76756c6e65726162696c69746965732f6769746875622f53686565744a532f73686565746a73" alt="Snyk Vulnerabilities" data-canonical-src="https://img.shields.io/snyk/vulnerabilities/github/SheetJS/sheetjs" style="max-width:100%;"></a>
|
|
<a href="https://npmjs.org/package/xlsx" rel="nofollow"><img src="https://camo.githubusercontent.com/d271e8f58341837d08c59de862121e6faa608414d48b74fd12b88c507ee1bcdf/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f786c73782e737667" alt="npm Downloads" data-canonical-src="https://img.shields.io/npm/dm/xlsx.svg" style="max-width:100%;"></a>
|
|
<a href="https://www.jsdelivr.com/package/npm/xlsx" rel="nofollow"><img src="https://camo.githubusercontent.com/387e53d00f2bfc61d8145101e8f379fa3102402e558f80b1ba4857af4a41baf8/68747470733a2f2f646174612e6a7364656c6976722e636f6d2f76312f7061636b6167652f6e706d2f786c73782f6261646765" alt="jsDelivr Downloads" data-canonical-src="https://data.jsdelivr.com/v1/package/npm/xlsx/badge" style="max-width:100%;"></a>
|
|
<a href="https://github.com/SheetJS/sheetjs"><img src="https://camo.githubusercontent.com/5835ef9524626d64db0c7a60890d3723b178fb5ca8783250f405dd15dfc3b000/68747470733a2f2f67612d626561636f6e2e61707073706f742e636f6d2f55412d33363831303333332d312f53686565744a532f73686565746a733f706978656c" alt="Analytics" data-canonical-src="https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/sheetjs?pixel" style="max-width:100%;"></a></p>
|
|
<p><a href="https://oss.sheetjs.com/sheetjs/tests/" rel="nofollow"><strong>Browser Test and Support Matrix</strong></a></p>
|
|
<p><a href="https://saucelabs.com/u/sheetjs" rel="nofollow"><img src="https://camo.githubusercontent.com/fd3943851066063e253cd05bc1a8b9436b80f841af7d193c3eacb560012acea6/68747470733a2f2f73617563656c6162732e636f6d2f62726f777365722d6d61747269782f73686565746a732e737667" alt="Build Status" data-canonical-src="https://saucelabs.com/browser-matrix/sheetjs.svg" style="max-width:100%;"></a></p>
|
|
<p><strong>Supported File Formats</strong></p>
|
|
<p><a href="formats.png" target="_blank" rel="noopener noreferrer"><img src="formats.png" alt="circo graph of format support" style="max-width:100%;"></a></p>
|
|
<p><a href="legend.png" target="_blank" rel="noopener noreferrer"><img src="legend.png" alt="graph legend" style="max-width:100%;"></a></p>
|
|
<h2>
|
|
<a id="user-content-table-of-contents" class="anchor" href="#table-of-contents" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Table of Contents</h2>
|
|
<details>
|
|
<summary><b>Expand to show Table of Contents</b></summary>
|
|
|
|
<ul>
|
|
<li>
|
|
<a href="#getting-started">Getting Started</a>
|
|
<ul>
|
|
<li><a href="#installation">Installation</a></li>
|
|
<li><a href="#usage">Usage</a></li>
|
|
<li><a href="#the-zen-of-sheetjs">The Zen of SheetJS</a></li>
|
|
<li><a href="#js-ecosystem-demos">JS Ecosystem Demos</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#acquiring-and-extracting-data">Acquiring and Extracting Data</a>
|
|
<ul>
|
|
<li><a href="#parsing-workbooks">Parsing Workbooks</a></li>
|
|
<li><a href="#processing-json-and-js-data">Processing JSON and JS Data</a></li>
|
|
<li><a href="#processing-html-tables">Processing HTML Tables</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#processing-data">Processing Data</a>
|
|
<ul>
|
|
<li><a href="#modifying-workbook-structure">Modifying Workbook Structure</a></li>
|
|
<li><a href="#modifying-cell-values">Modifying Cell Values</a></li>
|
|
<li><a href="#modifying-other-worksheet--workbook--cell-properties">Modifying Other Worksheet / Workbook / Cell Properties</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#packaging-and-releasing-data">Packaging and Releasing Data</a>
|
|
<ul>
|
|
<li><a href="#writing-workbooks">Writing Workbooks</a></li>
|
|
<li><a href="#writing-examples">Writing Examples</a></li>
|
|
<li><a href="#streaming-write">Streaming Write</a></li>
|
|
<li><a href="#generating-json-and-js-data">Generating JSON and JS Data</a></li>
|
|
<li><a href="#generating-html-tables">Generating HTML Tables</a></li>
|
|
<li><a href="#generating-single-worksheet-snapshots">Generating Single-Worksheet Snapshots</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#interface">Interface</a>
|
|
<ul>
|
|
<li><a href="#parsing-functions">Parsing functions</a></li>
|
|
<li><a href="#writing-functions">Writing functions</a></li>
|
|
<li><a href="#utilities">Utilities</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#common-spreadsheet-format">Common Spreadsheet Format</a>
|
|
<ul>
|
|
<li><a href="#general-structures">General Structures</a></li>
|
|
<li>
|
|
<a href="#cell-object">Cell Object</a>
|
|
<ul>
|
|
<li><a href="#data-types">Data Types</a></li>
|
|
<li><a href="#dates">Dates</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#sheet-objects">Sheet Objects</a>
|
|
<ul>
|
|
<li><a href="#worksheet-object">Worksheet Object</a></li>
|
|
<li><a href="#chartsheet-object">Chartsheet Object</a></li>
|
|
<li><a href="#macrosheet-object">Macrosheet Object</a></li>
|
|
<li><a href="#dialogsheet-object">Dialogsheet Object</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#workbook-object">Workbook Object</a>
|
|
<ul>
|
|
<li><a href="#workbook-file-properties">Workbook File Properties</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#workbook-level-attributes">Workbook-Level Attributes</a>
|
|
<ul>
|
|
<li><a href="#defined-names">Defined Names</a></li>
|
|
<li><a href="#workbook-views">Workbook Views</a></li>
|
|
<li><a href="#miscellaneous-workbook-properties">Miscellaneous Workbook Properties</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#document-features">Document Features</a>
|
|
<ul>
|
|
<li><a href="#formulae">Formulae</a></li>
|
|
<li><a href="#row-and-column-properties">Row and Column Properties</a></li>
|
|
<li><a href="#number-formats">Number Formats</a></li>
|
|
<li><a href="#hyperlinks">Hyperlinks</a></li>
|
|
<li><a href="#cell-comments">Cell Comments</a></li>
|
|
<li><a href="#sheet-visibility">Sheet Visibility</a></li>
|
|
<li><a href="#vba-and-macros">VBA and Macros</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#parsing-options">Parsing Options</a>
|
|
<ul>
|
|
<li><a href="#input-type">Input Type</a></li>
|
|
<li><a href="#guessing-file-type">Guessing File Type</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#writing-options">Writing Options</a>
|
|
<ul>
|
|
<li><a href="#supported-output-formats">Supported Output Formats</a></li>
|
|
<li><a href="#output-type">Output Type</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#utility-functions">Utility Functions</a>
|
|
<ul>
|
|
<li><a href="#array-of-arrays-input">Array of Arrays Input</a></li>
|
|
<li><a href="#array-of-objects-input">Array of Objects Input</a></li>
|
|
<li><a href="#html-table-input">HTML Table Input</a></li>
|
|
<li><a href="#formulae-output">Formulae Output</a></li>
|
|
<li>
|
|
<a href="#delimiter-separated-output">Delimiter-Separated Output</a>
|
|
<ul>
|
|
<li><a href="#utf-16-unicode-text">UTF-16 Unicode Text</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#html-output">HTML Output</a></li>
|
|
<li><a href="#json">JSON</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#file-formats">File Formats</a></li>
|
|
<li>
|
|
<a href="#testing">Testing</a>
|
|
<ul>
|
|
<li><a href="#node">Node</a></li>
|
|
<li><a href="#browser">Browser</a></li>
|
|
<li><a href="#tested-environments">Tested Environments</a></li>
|
|
<li><a href="#test-files">Test Files</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#contributing">Contributing</a>
|
|
<ul>
|
|
<li><a href="#osxlinux">OSX/Linux</a></li>
|
|
<li><a href="#windows">Windows</a></li>
|
|
<li><a href="#tests">Tests</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#license">License</a></li>
|
|
<li><a href="#references">References</a></li>
|
|
</ul>
|
|
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-getting-started" class="anchor" href="#getting-started" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Getting Started</h2>
|
|
<h3>
|
|
<a id="user-content-installation" class="anchor" href="#installation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Installation</h3>
|
|
<p><strong>Standalone Browser Scripts</strong></p>
|
|
<p>The complete browser standalone build is saved to <code>dist/xlsx.full.min.js</code> and
|
|
can be directly added to a page with a <code>script</code> tag:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">lang</span>="<span class="pl-s">javascript</span>" <span class="pl-c1">src</span>="<span class="pl-s">dist/xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
<details>
|
|
<summary><b>CDN Availability</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="right">CDN</th>
|
|
<th align="left">URL</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="right"><code>unpkg</code></td>
|
|
<td align="left"><a href="https://unpkg.com/xlsx/" rel="nofollow">https://unpkg.com/xlsx/</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>jsDelivr</code></td>
|
|
<td align="left"><a href="https://jsdelivr.com/package/npm/xlsx" rel="nofollow">https://jsdelivr.com/package/npm/xlsx</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>CDNjs</code></td>
|
|
<td align="left"><a href="https://cdnjs.com/libraries/xlsx" rel="nofollow">https://cdnjs.com/libraries/xlsx</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>packd</code></td>
|
|
<td align="left"><a href="https://bundle.run/xlsx@latest?name=XLSX" rel="nofollow">https://bundle.run/xlsx@latest?name=XLSX</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>For example, <code>unpkg</code> makes the latest version available at:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/xlsx/dist/xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Browser builds</b> (click to show)</summary>
|
|
<p>The complete single-file version is generated at <code>dist/xlsx.full.min.js</code></p>
|
|
<p><code>dist/xlsx.core.min.js</code> omits codepage library (no support for XLS encodings)</p>
|
|
<p>A slimmer build is generated at <code>dist/xlsx.mini.min.js</code>. Compared to full build:</p>
|
|
<ul>
|
|
<li>codepage library skipped (no support for XLS encodings)</li>
|
|
<li>no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 / Numbers</li>
|
|
<li>node stream utils removed</li>
|
|
</ul>
|
|
</details>
|
|
<p>With <a href="https://bower.io/search/?q=js-xlsx" rel="nofollow">bower</a>:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ bower install js-xlsx</pre></div>
|
|
<p><strong>ECMAScript Modules</strong></p>
|
|
<p>The ECMAScript Module build is saved to <code>xlsx.mjs</code> and can be directly added to
|
|
a page with a <code>script</code> tag using <code>type=module</code>:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">type</span>="<span class="pl-s">module</span>"<span class="pl-kos">></span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">read</span><span class="pl-kos">,</span> <span class="pl-s1">writeFileXLSX</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"./xlsx.mjs"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* load the codepage support library for extended support with older formats */</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">set_cptable</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"./xlsx.mjs"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-s1">cptable</span> <span class="pl-k">from</span> <span class="pl-s">'./dist/cpexcel.full.mjs'</span><span class="pl-kos">;</span>
|
|
<span class="pl-en">set_cptable</span><span class="pl-kos">(</span><span class="pl-s1">cptable</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
<p>The <a href="https://www.npmjs.org/package/xlsx" rel="nofollow">npm package</a> also exposes the module
|
|
with the <code>module</code> parameter, supported in Angular and other projects:</p>
|
|
<div class="highlight highlight-source-ts"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">read</span><span class="pl-kos">,</span> <span class="pl-s1">writeFileXLSX</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* load the codepage support library for extended support with older formats */</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">set_cptable</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-s1">cptable</span> <span class="pl-k">from</span> <span class="pl-s">'xlsx/dist/cpexcel.full.mjs'</span><span class="pl-kos">;</span>
|
|
<span class="pl-en">set_cptable</span><span class="pl-kos">(</span><span class="pl-s1">cptable</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><strong>Deno</strong></p>
|
|
<p>The <a href="https://deno.land/x/sheetjs" rel="nofollow"><code>sheetjs</code></a> package is hosted by Deno:</p>
|
|
<div class="highlight highlight-source-ts"><pre><span class="pl-c">// <span class="pl-k">@deno</span>-types="https://deno.land/x/sheetjs/types/index.d.ts"</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-smi">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">'https://deno.land/x/sheetjs/xlsx.mjs'</span>
|
|
|
|
<span class="pl-c">/* load the codepage support library for extended support with older formats */</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-s1">cptable</span> <span class="pl-k">from</span> <span class="pl-s">'https://deno.land/x/sheetjs/dist/cpexcel.full.mjs'</span><span class="pl-kos">;</span>
|
|
<span class="pl-smi">XLSX</span><span class="pl-kos">.</span><span class="pl-en">set_cptable</span><span class="pl-kos">(</span><span class="pl-s1">cptable</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><strong>NodeJS</strong></p>
|
|
<p>With <a href="https://www.npmjs.org/package/xlsx" rel="nofollow">npm</a>:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ npm install xlsx</pre></div>
|
|
<p>By default, the module supports <code>require</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The module also ships with <code>xlsx.mjs</code> for use with <code>import</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-c1">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">'xlsx/xlsx.mjs'</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* load 'fs' for readFile and writeFile support */</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-s1">fs</span> <span class="pl-k">from</span> <span class="pl-s">'fs'</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">set_fs</span><span class="pl-kos">(</span><span class="pl-s1">fs</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* load the codepage support library for extended support with older formats */</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-s1">cpexcel</span> <span class="pl-k">from</span> <span class="pl-s">'xlsx/dist/cpexcel.full.mjs'</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">set_cptable</span><span class="pl-kos">(</span><span class="pl-s1">cpexcel</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><strong>Photoshop and InDesign</strong></p>
|
|
<p><code>dist/xlsx.extendscript.js</code> is an ExtendScript build for Photoshop and InDesign
|
|
that is included in the <code>npm</code> package. It can be directly referenced with a
|
|
<code>#include</code> directive:</p>
|
|
<pre lang="extendscript"><code>#include "xlsx.extendscript.js"
|
|
</code></pre>
|
|
<details>
|
|
<summary><b>Internet Explorer and ECMAScript 3 Compatibility</b> (click to show)</summary>
|
|
<p>For broad compatibility with JavaScript engines, the library is written using
|
|
ECMAScript 3 language dialect as well as some ES5 features like <code>Array#forEach</code>.
|
|
Older browsers require shims to provide missing functions.</p>
|
|
<p>To use the shim, add the shim before the script tag that loads <code>xlsx.js</code>:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-c"><!-- add the shim first --></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">type</span>="<span class="pl-s">text/javascript</span>" <span class="pl-c1">src</span>="<span class="pl-s">shim.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-c"><!-- after the shim is referenced, add the library --></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">type</span>="<span class="pl-s">text/javascript</span>" <span class="pl-c1">src</span>="<span class="pl-s">xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
<p>The script also includes <code>IE_LoadFile</code> and <code>IE_SaveFile</code> for loading and saving
|
|
files in Internet Explorer versions 6-9. The <code>xlsx.extendscript.js</code> script
|
|
bundles the shim in a format suitable for Photoshop and other Adobe products.</p>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-usage" class="anchor" href="#usage" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Usage</h3>
|
|
<p>Most scenarios involving spreadsheets and data can be broken into 5 parts:</p>
|
|
<ol>
|
|
<li>
|
|
<p><strong>Acquire Data</strong>: Data may be stored anywhere: local or remote files,
|
|
databases, HTML TABLE, or even generated programmatically in the web browser.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Extract Data</strong>: For spreadsheet files, this involves parsing raw bytes to
|
|
read the cell data. For general JS data, this involves reshaping the data.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Process Data</strong>: From generating summary statistics to cleaning data
|
|
records, this step is the heart of the problem.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Package Data</strong>: This can involve making a new spreadsheet or serializing
|
|
with <code>JSON.stringify</code> or writing XML or simply flattening data for UI tools.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Release Data</strong>: Spreadsheet files can be uploaded to a server or written
|
|
locally. Data can be presented to users in an HTML TABLE or data grid.</p>
|
|
</li>
|
|
</ol>
|
|
<p>A common problem involves generating a valid spreadsheet export from data stored
|
|
in an HTML table. In this example, an HTML TABLE on the page will be scraped,
|
|
a row will be added to the bottom with the date of the report, and a new file
|
|
will be generated and downloaded locally. <code>XLSX.writeFile</code> takes care of
|
|
packaging the data and attempting a local download:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// Acquire Data (reference to the HTML table)</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">table_elt</span> <span class="pl-c1">=</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"my-table-id"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// Extract Data (create a workbook object from the table)</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_book</span><span class="pl-kos">(</span><span class="pl-s1">table_elt</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// Process Data (add a new row)</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s">"Sheet1"</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">"Created "</span><span class="pl-c1">+</span><span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toISOString</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>:<span class="pl-c1">-</span><span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// Package and Release Data (`writeFile` tries to write and save an XLSB file)</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"Report.xlsb"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>This library tries to simplify steps 2 and 4 with functions to extract useful
|
|
data from spreadsheet files (<code>read</code> / <code>readFile</code>) and generate new spreadsheet
|
|
files from data (<code>write</code> / <code>writeFile</code>). Additional utility functions like
|
|
<code>table_to_book</code> work with other common data sources like HTML tables.</p>
|
|
<p>This documentation and various demo projects cover a number of common scenarios
|
|
and approaches for steps 1 and 5.</p>
|
|
<p>Utility functions help with step 3.</p>
|
|
<p><a href="#acquiring-and-extracting-data">"Acquiring and Extracting Data"</a> describes
|
|
solutions for common data import scenarios.</p>
|
|
<p><a href="#packaging-and-releasing-data">"Packaging and Releasing Data"</a> describes
|
|
solutions for common data export scenarios.</p>
|
|
<p><a href="#packaging-and-releasing-data">"Processing Data"</a> describes solutions for
|
|
common workbook processing and manipulation scenarios.</p>
|
|
<p><a href="#utility-functions">"Utility Functions"</a> details utility functions for
|
|
translating JSON Arrays and other common JS structures into worksheet objects.</p>
|
|
<h3>
|
|
<a id="user-content-the-zen-of-sheetjs" class="anchor" href="#the-zen-of-sheetjs" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>The Zen of SheetJS</h3>
|
|
<p><em>Data processing should fit in any workflow</em></p>
|
|
<p>The library does not impose a separate lifecycle. It fits nicely in websites
|
|
and apps built using any framework. The plain JS data objects play nice with
|
|
Web Workers and future APIs.</p>
|
|
<p><em>JavaScript is a powerful language for data processing</em></p>
|
|
<p>The <a href="#common-spreadsheet-format">"Common Spreadsheet Format"</a> is a simple object
|
|
representation of the core concepts of a workbook. The various functions in the
|
|
library provide low-level tools for working with the object.</p>
|
|
<p>For friendly JS processing, there are utility functions for converting parts of
|
|
a worksheet to/from an Array of Arrays. The following example combines powerful
|
|
JS Array methods with a network request library to download data, select the
|
|
information we want and create a workbook file:</p>
|
|
<details>
|
|
<summary><b>Get Data from a JSON Endpoint and Generate a Workbook</b> (click to show)</summary>
|
|
<p>The goal is to generate a XLSB workbook of US President names and birthdays.</p>
|
|
<p><strong>Acquire Data</strong></p>
|
|
<p><em>Raw Data</em></p>
|
|
<p><a href="https://theunitedstates.io/congress-legislators/executive.json" rel="nofollow">https://theunitedstates.io/congress-legislators/executive.json</a> has the desired
|
|
data. For example, John Adams:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-kos">{</span>
|
|
<span class="pl-s">"id"</span>: <span class="pl-kos">{</span> <span class="pl-c">/* (data omitted) */</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-s">"name"</span>: <span class="pl-kos">{</span>
|
|
<span class="pl-s">"first"</span>: <span class="pl-s">"John"</span><span class="pl-kos">,</span> <span class="pl-c">// <-- first name</span>
|
|
<span class="pl-s">"last"</span>: <span class="pl-s">"Adams"</span> <span class="pl-c">// <-- last name</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-s">"bio"</span>: <span class="pl-kos">{</span>
|
|
<span class="pl-s">"birthday"</span>: <span class="pl-s">"1735-10-19"</span><span class="pl-kos">,</span> <span class="pl-c">// <-- birthday</span>
|
|
<span class="pl-s">"gender"</span>: <span class="pl-s">"M"</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-s">"terms"</span>: <span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-s">"type"</span>: <span class="pl-s">"viceprez"</span><span class="pl-kos">,</span> <span class="pl-c">/* (other fields omitted) */</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-s">"type"</span>: <span class="pl-s">"viceprez"</span><span class="pl-kos">,</span> <span class="pl-c">/* (other fields omitted) */</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-s">"type"</span>: <span class="pl-s">"prez"</span><span class="pl-kos">,</span> <span class="pl-c">/* (other fields omitted) */</span> <span class="pl-kos">}</span> <span class="pl-c">// <-- look for "prez"</span>
|
|
<span class="pl-kos">]</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
<p><em>Filtering for Presidents</em></p>
|
|
<p>The dataset includes Aaron Burr, a Vice President who was never President!</p>
|
|
<p><code>Array#filter</code> creates a new array with the desired rows. A President served
|
|
at least one term with <code>type</code> set to <code>"prez"</code>. To test if a particular row has
|
|
at least one <code>"prez"</code> term, <code>Array#some</code> is another native JS function. The
|
|
complete filter would be:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-s1">prez</span> <span class="pl-c1">=</span> <span class="pl-s1">raw_data</span><span class="pl-kos">.</span><span class="pl-en">filter</span><span class="pl-kos">(</span><span class="pl-s1">row</span> <span class="pl-c1">=></span> <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">terms</span><span class="pl-kos">.</span><span class="pl-en">some</span><span class="pl-kos">(</span><span class="pl-s1">term</span> <span class="pl-c1">=></span> <span class="pl-s1">term</span><span class="pl-kos">.</span><span class="pl-c1">type</span> <span class="pl-c1">===</span> <span class="pl-s">"prez"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Lining up the data</em></p>
|
|
<p>For this example, the name will be the first name combined with the last name
|
|
(<code>row.name.first + " " + row.name.last</code>) and the birthday will be the subfield
|
|
<code>row.bio.birthday</code>. Using <code>Array#map</code>, the dataset can be massaged in one call:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-s1">rows</span> <span class="pl-c1">=</span> <span class="pl-s1">prez</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-s1">row</span> <span class="pl-c1">=></span> <span class="pl-kos">(</span><span class="pl-kos">{</span>
|
|
<span class="pl-c1">name</span>: <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">first</span> <span class="pl-c1">+</span> <span class="pl-s">" "</span> <span class="pl-c1">+</span> <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">last</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">birthday</span>: <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">bio</span><span class="pl-kos">.</span><span class="pl-c1">birthday</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The result is an array of "simple" objects with no nesting:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">name</span>: <span class="pl-s">"George Washington"</span><span class="pl-kos">,</span> <span class="pl-c1">birthday</span>: <span class="pl-s">"1732-02-22"</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">name</span>: <span class="pl-s">"John Adams"</span><span class="pl-kos">,</span> <span class="pl-c1">birthday</span>: <span class="pl-s">"1735-10-19"</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c">// ... one row per President</span>
|
|
<span class="pl-kos">]</span></pre></div>
|
|
<p><strong>Extract Data</strong></p>
|
|
<p>With the cleaned dataset, <code>XLSX.utils.json_to_sheet</code> generates a worksheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">rows</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><code>XLSX.utils.book_new</code> creates a new workbook and <code>XLSX.utils.book_append_sheet</code>
|
|
appends a worksheet to the workbook. The new worksheet will be called "Dates":</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"Dates"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><strong>Process Data</strong></p>
|
|
<p><em>Fixing headers</em></p>
|
|
<p>By default, <code>json_to_sheet</code> creates a worksheet with a header row. In this case,
|
|
the headers come from the JS object keys: "name" and "birthday".</p>
|
|
<p>The headers are in cells A1 and B1. <code>XLSX.utils.sheet_add_aoa</code> can write text
|
|
values to the existing worksheet starting at cell A1:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">"Name"</span><span class="pl-kos">,</span> <span class="pl-s">"Birthday"</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">origin</span>: <span class="pl-s">"A1"</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Fixing Column Widths</em></p>
|
|
<p>Some of the names are longer than the default column width. Column widths are
|
|
set by <a href="#row-and-column-properties">setting the <code>"!cols"</code> worksheet property</a>.</p>
|
|
<p>The following line sets the width of column A to approximately 10 characters:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">"!cols"</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">wch</span>: <span class="pl-c1">10</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span><span class="pl-kos">;</span> <span class="pl-c">// set column A width to 10 characters</span></pre></div>
|
|
<p>One <code>Array#reduce</code> call over <code>rows</code> can calculate the maximum width:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-s1">max_width</span> <span class="pl-c1">=</span> <span class="pl-s1">rows</span><span class="pl-kos">.</span><span class="pl-en">reduce</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">w</span><span class="pl-kos">,</span> <span class="pl-s1">r</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">max</span><span class="pl-kos">(</span><span class="pl-s1">w</span><span class="pl-kos">,</span> <span class="pl-s1">r</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">10</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">"!cols"</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">wch</span>: <span class="pl-s1">max_width</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Note: If the starting point was a file or HTML table, <code>XLSX.utils.sheet_to_json</code>
|
|
will generate an array of JS objects.</p>
|
|
<p><strong>Package and Release Data</strong></p>
|
|
<p><code>XLSX.writeFile</code> creates a spreadsheet file and tries to write it to the system.
|
|
In the browser, it will try to prompt the user to download the file. In NodeJS,
|
|
it will write to the local directory.</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"Presidents.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><strong>Complete Example</strong></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// Uncomment the next line for use in NodeJS:</span>
|
|
<span class="pl-c">// const XLSX = require("xlsx"), axios = require("axios");</span>
|
|
|
|
<span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* fetch JSON data and parse */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-s">"https://theunitedstates.io/congress-legislators/executive.json"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">raw_data</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">axios</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">responseType</span>: <span class="pl-s">"json"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">data</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* filter for the Presidents */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">prez</span> <span class="pl-c1">=</span> <span class="pl-s1">raw_data</span><span class="pl-kos">.</span><span class="pl-en">filter</span><span class="pl-kos">(</span><span class="pl-s1">row</span> <span class="pl-c1">=></span> <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">terms</span><span class="pl-kos">.</span><span class="pl-en">some</span><span class="pl-kos">(</span><span class="pl-s1">term</span> <span class="pl-c1">=></span> <span class="pl-s1">term</span><span class="pl-kos">.</span><span class="pl-c1">type</span> <span class="pl-c1">===</span> <span class="pl-s">"prez"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* flatten objects */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">rows</span> <span class="pl-c1">=</span> <span class="pl-s1">prez</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-s1">row</span> <span class="pl-c1">=></span> <span class="pl-kos">(</span><span class="pl-kos">{</span>
|
|
<span class="pl-c1">name</span>: <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">first</span> <span class="pl-c1">+</span> <span class="pl-s">" "</span> <span class="pl-c1">+</span> <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">last</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">birthday</span>: <span class="pl-s1">row</span><span class="pl-kos">.</span><span class="pl-c1">bio</span><span class="pl-kos">.</span><span class="pl-c1">birthday</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* generate worksheet and workbook */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">rows</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"Dates"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* fix headers */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">"Name"</span><span class="pl-kos">,</span> <span class="pl-s">"Birthday"</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">origin</span>: <span class="pl-s">"A1"</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* calculate column width */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">max_width</span> <span class="pl-c1">=</span> <span class="pl-s1">rows</span><span class="pl-kos">.</span><span class="pl-en">reduce</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">w</span><span class="pl-kos">,</span> <span class="pl-s1">r</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">max</span><span class="pl-kos">(</span><span class="pl-s1">w</span><span class="pl-kos">,</span> <span class="pl-s1">r</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">10</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">"!cols"</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">wch</span>: <span class="pl-s1">max_width</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* create an XLSX file and try to save to Presidents.xlsx */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"Presidents.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For use in the web browser, assuming the snippet is saved to <code>snippet.js</code>,
|
|
script tags should be used to include the <code>axios</code> and <code>xlsx</code> standalone builds:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/xlsx/dist/xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/axios/dist/axios.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">snippet.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
</details>
|
|
<p><em>File formats are implementation details</em></p>
|
|
<p>The parser covers a wide gamut of common spreadsheet file formats to ensure that
|
|
"HTML-saved-as-XLS" files work as well as actual XLS or XLSX files.</p>
|
|
<p>The writer supports a number of common output formats for broad compatibility
|
|
with the data ecosystem.</p>
|
|
<p>To the greatest extent possible, data processing code should not have to worry
|
|
about the specific file formats involved.</p>
|
|
<h3>
|
|
<a id="user-content-js-ecosystem-demos" class="anchor" href="#js-ecosystem-demos" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>JS Ecosystem Demos</h3>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/"><code>demos</code> directory</a> includes sample projects for:</p>
|
|
<p><strong>Frameworks and APIs</strong></p>
|
|
<ul>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/angular/"><code>angularjs</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/angular2/"><code>angular and ionic</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/knockout/"><code>knockout</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/meteor/"><code>meteor</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/react/"><code>react and react-native</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/vue/"><code>vue 2.x and weex</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/xhr/"><code>XMLHttpRequest and fetch</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/server/"><code>nodejs server</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/database/"><code>databases and key/value stores</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/array/"><code>typed arrays and math</code></a></li>
|
|
</ul>
|
|
<p><strong>Bundlers and Tooling</strong></p>
|
|
<ul>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/browserify/"><code>browserify</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/fusebox/"><code>fusebox</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/parcel/"><code>parcel</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/requirejs/"><code>requirejs</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/rollup/"><code>rollup</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/systemjs/"><code>systemjs</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/typescript/"><code>typescript</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/webpack/"><code>webpack 2.x</code></a></li>
|
|
</ul>
|
|
<p><strong>Platforms and Integrations</strong></p>
|
|
<ul>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/deno/"><code>deno</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/electron/"><code>electron application</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/nwjs/"><code>nw.js application</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/chrome/"><code>Chrome / Chromium extensions</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/google-sheet/"><code>Download a Google Sheet locally</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/extendscript/"><code>Adobe ExtendScript</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/headless/"><code>Headless Browsers</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/datagrid/"><code>canvas-datagrid</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/xspreadsheet/"><code>x-spreadsheet</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/altjs/"><code>Swift JSC and other engines</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/function/"><code>"serverless" functions</code></a></li>
|
|
<li><a href="https://github.com/SheetJS/SheetJS/tree/master/demos/oldie/"><code>internet explorer</code></a></li>
|
|
</ul>
|
|
<p>Other examples are included in the <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/showcase/">showcase</a>.</p>
|
|
<p><a href="https://sheetjs.com/demos/modify.html" rel="nofollow">https://sheetjs.com/demos/modify.html</a> shows a complete example of reading,
|
|
modifying, and writing files.</p>
|
|
<p><a href="https://github.com/SheetJS/sheetjs/blob/HEAD/bin/xlsx.njs">https://github.com/SheetJS/sheetjs/blob/HEAD/bin/xlsx.njs</a> is the command-line
|
|
tool included with node installations, reading spreadsheet files and exporting
|
|
the contents in various formats.</p>
|
|
<h2>
|
|
<a id="user-content-acquiring-and-extracting-data" class="anchor" href="#acquiring-and-extracting-data" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Acquiring and Extracting Data</h2>
|
|
<h3>
|
|
<a id="user-content-parsing-workbooks" class="anchor" href="#parsing-workbooks" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Parsing Workbooks</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Extract data from spreadsheet bytes</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>read</code> method can extract data from spreadsheet bytes stored in a JS string,
|
|
"binary string", NodeJS buffer or typed array (<code>Uint8Array</code> or <code>ArrayBuffer</code>).</p>
|
|
<p><em>Read spreadsheet bytes from a local file and extract data</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s1">filename</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>readFile</code> method attempts to read a spreadsheet file at the supplied path.
|
|
Browsers generally do not allow reading files in this way (it is deemed a
|
|
security risk), and attempts to read files in this way will throw an error.</p>
|
|
<p>The second <code>opts</code> argument is optional. <a href="#parsing-options">"Parsing Options"</a>
|
|
covers the supported properties and behaviors.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<p>Here are a few common scenarios (click on each subtitle to see the code):</p>
|
|
<details>
|
|
<summary><b>Local file in a NodeJS server</b> (click to show)</summary>
|
|
<p><code>readFile</code> uses <code>fs.readFileSync</code> under the hood:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For Node ESM, the <code>readFile</code> helper is not enabled. Instead, <code>fs.readFileSync</code>
|
|
should be used to read the file data as a <code>Buffer</code> for use with <code>XLSX.read</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">readFileSync</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"fs"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">read</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx/xlsx.mjs"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">buf</span> <span class="pl-c1">=</span> <span class="pl-en">readFileSync</span><span class="pl-kos">(</span><span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* buf is a Buffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">buf</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in a Deno application</b> (click to show)</summary>
|
|
<p><code>readFile</code> uses <code>Deno.readFileSync</code> under the hood:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// <span class="pl-k">@deno</span>-types="https://deno.land/x/sheetjs/types/index.d.ts"</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-c1">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">'https://deno.land/x/sheetjs/xlsx.mjs'</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Applications reading files must be invoked with the <code>--allow-read</code> flag. The
|
|
<a href="https://github.com/SheetJS/SheetJS/tree/master/demos/deno/"><code>deno</code> demo</a> has more examples</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>User-submitted file in a web page ("Drag-and-Drop")</b> (click to show)</summary>
|
|
<p>For modern websites targeting Chrome 76+, <code>File#arrayBuffer</code> is recommended:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// XLSX is a global from the standalone script</span>
|
|
|
|
<span class="pl-k">async</span> <span class="pl-k">function</span> <span class="pl-en">handleDropAsync</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-en">stopPropagation</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-en">preventDefault</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">f</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">dataTransfer</span><span class="pl-kos">.</span><span class="pl-c1">files</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* f is a File */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">f</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* data is an ArrayBuffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-s1">drop_dom_element</span><span class="pl-kos">.</span><span class="pl-en">addEventListener</span><span class="pl-kos">(</span><span class="pl-s">"drop"</span><span class="pl-kos">,</span> <span class="pl-s1">handleDropAsync</span><span class="pl-kos">,</span> <span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For maximal compatibility, the <code>FileReader</code> API should be used:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">function</span> <span class="pl-en">handleDrop</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-en">stopPropagation</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-en">preventDefault</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">f</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">dataTransfer</span><span class="pl-kos">.</span><span class="pl-c1">files</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* f is a File */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">reader</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">FileReader</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">reader</span><span class="pl-kos">.</span><span class="pl-en">onload</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">target</span><span class="pl-kos">.</span><span class="pl-c1">result</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* reader.readAsArrayBuffer(file) -> data will be an ArrayBuffer */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">reader</span><span class="pl-kos">.</span><span class="pl-en">readAsArrayBuffer</span><span class="pl-kos">(</span><span class="pl-s1">f</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-s1">drop_dom_element</span><span class="pl-kos">.</span><span class="pl-en">addEventListener</span><span class="pl-kos">(</span><span class="pl-s">"drop"</span><span class="pl-kos">,</span> <span class="pl-s1">handleDrop</span><span class="pl-kos">,</span> <span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><a href="https://oss.sheetjs.com/sheetjs/" rel="nofollow">https://oss.sheetjs.com/sheetjs/</a> demonstrates the FileReader technique.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>User-submitted file with an HTML INPUT element</b> (click to show)</summary>
|
|
<p>Starting with an HTML INPUT element with <code>type="file"</code>:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">input</span> <span class="pl-c1">type</span>="<span class="pl-s">file</span>" <span class="pl-c1">id</span>="<span class="pl-s">input_dom_element</span>"<span class="pl-kos">></span></pre></div>
|
|
<p>For modern websites targeting Chrome 76+, <code>Blob#arrayBuffer</code> is recommended:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// XLSX is a global from the standalone script</span>
|
|
|
|
<span class="pl-k">async</span> <span class="pl-k">function</span> <span class="pl-en">handleFileAsync</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">file</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">target</span><span class="pl-kos">.</span><span class="pl-c1">files</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">file</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* data is an ArrayBuffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-s1">input_dom_element</span><span class="pl-kos">.</span><span class="pl-en">addEventListener</span><span class="pl-kos">(</span><span class="pl-s">"change"</span><span class="pl-kos">,</span> <span class="pl-s1">handleFileAsync</span><span class="pl-kos">,</span> <span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For broader support (including IE10+), the <code>FileReader</code> approach is recommended:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">function</span> <span class="pl-en">handleFile</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">file</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">target</span><span class="pl-kos">.</span><span class="pl-c1">files</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">reader</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">FileReader</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">reader</span><span class="pl-kos">.</span><span class="pl-en">onload</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">target</span><span class="pl-kos">.</span><span class="pl-c1">result</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* reader.readAsArrayBuffer(file) -> data will be an ArrayBuffer */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">.</span><span class="pl-c1">target</span><span class="pl-kos">.</span><span class="pl-c1">result</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">reader</span><span class="pl-kos">.</span><span class="pl-en">readAsArrayBuffer</span><span class="pl-kos">(</span><span class="pl-s1">file</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-s1">input_dom_element</span><span class="pl-kos">.</span><span class="pl-en">addEventListener</span><span class="pl-kos">(</span><span class="pl-s">"change"</span><span class="pl-kos">,</span> <span class="pl-s1">handleFile</span><span class="pl-kos">,</span> <span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/oldie/"><code>oldie</code> demo</a> shows an IE-compatible fallback scenario.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Fetching a file in the web browser ("Ajax")</b> (click to show)</summary>
|
|
<p>For modern websites targeting Chrome 42+, <code>fetch</code> is recommended:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// XLSX is a global from the standalone script</span>
|
|
|
|
<span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-s">"http://oss.sheetjs.com/test_files/formula_stress_test.xlsx"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* data is an ArrayBuffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For broader support, the <code>XMLHttpRequest</code> approach is recommended:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-s">"http://oss.sheetjs.com/test_files/formula_stress_test.xlsx"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* set up async GET request */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">req</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">XMLHttpRequest</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">open</span><span class="pl-kos">(</span><span class="pl-s">"GET"</span><span class="pl-kos">,</span> <span class="pl-s1">url</span><span class="pl-kos">,</span> <span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-c1">responseType</span> <span class="pl-c1">=</span> <span class="pl-s">"arraybuffer"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">onload</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">e</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-c1">response</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">send</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/xhr/"><code>xhr</code> demo</a> includes a longer discussion and more examples.</p>
|
|
<p><a href="http://oss.sheetjs.com/sheetjs/ajax.html" rel="nofollow">http://oss.sheetjs.com/sheetjs/ajax.html</a> shows fallback approaches for IE6+.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in a PhotoShop or InDesign plugin</b> (click to show)</summary>
|
|
<p><code>readFile</code> wraps the <code>File</code> logic in Photoshop and other ExtendScript targets.
|
|
The specified path should be an absolute path:</p>
|
|
<div class="highlight highlight-source-js"><pre>#<span class="pl-s1">include</span> <span class="pl-s">"xlsx.extendscript.js"</span>
|
|
|
|
<span class="pl-c">/* Read test.xlsx from the Documents folder */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-v">Folder</span><span class="pl-kos">.</span><span class="pl-c1">myDocuments</span> <span class="pl-c1">+</span> <span class="pl-s">"/test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/extendscript/"><code>extendscript</code> demo</a> includes a more complex example.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in an Electron app</b> (click to show)</summary>
|
|
<p><code>readFile</code> can be used in the renderer process:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* From the renderer process */</span>
|
|
<span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Electron APIs have changed over time. The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/electron/"><code>electron</code> demo</a>
|
|
shows a complete example and details the required version-specific settings.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in a mobile app with React Native</b> (click to show)</summary>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/react"><code>react</code> demo</a> includes a sample React Native app.</p>
|
|
<p>Since React Native does not provide a way to read files from the filesystem, a
|
|
third-party library must be used. The following libraries have been tested:</p>
|
|
<ul>
|
|
<li><a href="https://npm.im/react-native-file-access" rel="nofollow"><code>react-native-file-access</code></a></li>
|
|
</ul>
|
|
<p>The <code>base64</code> encoding returns strings compatible with the <code>base64</code> type:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-c1">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-v">FileSystem</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"react-native-file-access"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">b64</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-v">FileSystem</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">,</span> <span class="pl-s">"base64"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* b64 is a base64 string */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">b64</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>: <span class="pl-s">"base64"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<ul>
|
|
<li><a href="https://npm.im/react-native-fs" rel="nofollow"><code>react-native-fs</code></a></li>
|
|
</ul>
|
|
<p>The <code>ascii</code> encoding returns binary strings compatible with the <code>binary</code> type:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-c1">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">readFile</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"react-native-fs"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">bstr</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">,</span> <span class="pl-s">"ascii"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* bstr is a binary string */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">bstr</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>: <span class="pl-s">"binary"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>NodeJS Server File Uploads</b> (click to show)</summary>
|
|
<p><code>read</code> can accept a NodeJS buffer. <code>readFile</code> can read files generated by a
|
|
HTTP POST request body parser like <a href="https://npm.im/formidable" rel="nofollow"><code>formidable</code></a>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">http</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"http"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">formidable</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"formidable"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">server</span> <span class="pl-c1">=</span> <span class="pl-s1">http</span><span class="pl-kos">.</span><span class="pl-en">createServer</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">req</span><span class="pl-kos">,</span> <span class="pl-s1">res</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">form</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-s1">formidable</span><span class="pl-kos">.</span><span class="pl-c1">IncomingForm</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">form</span><span class="pl-kos">.</span><span class="pl-en">parse</span><span class="pl-kos">(</span><span class="pl-s1">req</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">err</span><span class="pl-kos">,</span> <span class="pl-s1">fields</span><span class="pl-kos">,</span> <span class="pl-s1">files</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* grab the first file */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">f</span> <span class="pl-c1">=</span> <span class="pl-v">Object</span><span class="pl-kos">.</span><span class="pl-en">entries</span><span class="pl-kos">(</span><span class="pl-s1">files</span><span class="pl-kos">)</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">path</span> <span class="pl-c1">=</span> <span class="pl-s1">f</span><span class="pl-kos">.</span><span class="pl-c1">filepath</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">readFile</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">listen</span><span class="pl-kos">(</span><span class="pl-s1">process</span><span class="pl-kos">.</span><span class="pl-c1">env</span><span class="pl-kos">.</span><span class="pl-c1">PORT</span> <span class="pl-c1">||</span> <span class="pl-c1">7262</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/server"><code>server</code> demo</a> has more advanced examples.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Download files in a NodeJS process</b> (click to show)</summary>
|
|
<p>Node 17.5 and 18.0 have native support for fetch:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* data is an ArrayBuffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For broader compatibility, third-party modules are recommended.</p>
|
|
<p><a href="https://npm.im/request" rel="nofollow"><code>request</code></a> requires a <code>null</code> encoding to yield Buffers:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">request</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"request"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-s1">request</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">url</span>: <span class="pl-s1">url</span><span class="pl-kos">,</span> <span class="pl-c1">encoding</span>: <span class="pl-c1">null</span><span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">err</span><span class="pl-kos">,</span> <span class="pl-s1">resp</span><span class="pl-kos">,</span> <span class="pl-s1">body</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">body</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><a href="https://npm.im/axios" rel="nofollow"><code>axios</code></a> works the same way in browser and in NodeJS:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">axios</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"axios"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">res</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">axios</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">responseType</span>: <span class="pl-s">"arraybuffer"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* res.data is a Buffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-c1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Download files in an Electron app</b> (click to show)</summary>
|
|
<p>The <code>net</code> module in the main process can make HTTP/HTTPS requests to external
|
|
resources. Responses should be manually concatenated using <code>Buffer.concat</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">{</span> net <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"electron"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">req</span> <span class="pl-c1">=</span> <span class="pl-s1">net</span><span class="pl-kos">.</span><span class="pl-en">request</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"response"</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">res</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">bufs</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span> <span class="pl-c">// this array will collect all of the buffers</span>
|
|
<span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"data"</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">chunk</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span> <span class="pl-s1">bufs</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s1">chunk</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"end"</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-v">Buffer</span><span class="pl-kos">.</span><span class="pl-en">concat</span><span class="pl-kos">(</span><span class="pl-s1">bufs</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">end</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Readable Streams in NodeJS</b> (click to show)</summary>
|
|
<p>When dealing with Readable Streams, the easiest approach is to buffer the stream
|
|
and process the whole thing at the end:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"fs"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">function</span> <span class="pl-en">process_RS</span><span class="pl-kos">(</span><span class="pl-s1">stream</span><span class="pl-kos">,</span> <span class="pl-s1">cb</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">buffers</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"data"</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-s1">buffers</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"end"</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">buffer</span> <span class="pl-c1">=</span> <span class="pl-v">Buffer</span><span class="pl-kos">.</span><span class="pl-en">concat</span><span class="pl-kos">(</span><span class="pl-s1">buffers</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">buffer</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>:<span class="pl-s">"buffer"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook IN THE CALLBACK */</span>
|
|
<span class="pl-s1">cb</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>ReadableStream in the browser</b> (click to show)</summary>
|
|
<p>When dealing with <code>ReadableStream</code>, the easiest approach is to buffer the stream
|
|
and process the whole thing at the end:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// XLSX is a global from the standalone script</span>
|
|
|
|
<span class="pl-k">async</span> <span class="pl-k">function</span> <span class="pl-en">process_RS</span><span class="pl-kos">(</span><span class="pl-s1">stream</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* collect data */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">buffers</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">reader</span> <span class="pl-c1">=</span> <span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-en">getReader</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-kos">;</span><span class="pl-kos">;</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">res</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">reader</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-c1">value</span><span class="pl-kos">)</span> <span class="pl-s1">buffers</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-c1">value</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-s1">res</span><span class="pl-kos">.</span><span class="pl-c1">done</span><span class="pl-kos">)</span> <span class="pl-k">break</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
|
|
<span class="pl-c">/* concat */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">out</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">Uint8Array</span><span class="pl-kos">(</span><span class="pl-s1">buffers</span><span class="pl-kos">.</span><span class="pl-en">reduce</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">acc</span><span class="pl-kos">,</span> <span class="pl-s1">v</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-s1">acc</span> <span class="pl-c1">+</span> <span class="pl-s1">v</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">let</span> <span class="pl-s1">off</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">const</span> <span class="pl-s1">u8</span> <span class="pl-k">of</span> <span class="pl-s1">arr</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-s1">out</span><span class="pl-kos">.</span><span class="pl-en">set</span><span class="pl-kos">(</span><span class="pl-s1">u8</span><span class="pl-kos">,</span> <span class="pl-s1">off</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">off</span> <span class="pl-c1">+=</span> <span class="pl-s1">u8</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
|
|
<span class="pl-k">return</span> <span class="pl-s1">out</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-en">process_RS</span><span class="pl-kos">(</span><span class="pl-s1">stream</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* data is Uint8Array */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<p>More detailed examples are covered in the <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/">included demos</a></p>
|
|
<h3>
|
|
<a id="user-content-processing-json-and-js-data" class="anchor" href="#processing-json-and-js-data" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Processing JSON and JS Data</h3>
|
|
<p>JSON and JS data tend to represent single worksheets. This section will use a
|
|
few utility functions to generate workbooks.</p>
|
|
<p><em>Create a new Workbook</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>book_new</code> utility function creates an empty workbook with no worksheets.</p>
|
|
<p>Spreadsheet software generally require at least one worksheet and enforce the
|
|
requirement in the user interface. This library enforces the requirement at
|
|
write time, throwing errors if an empty workbook is passed to write functions.</p>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Create a worksheet from an array of arrays of JS values</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">aoa</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>aoa_to_sheet</code> utility function walks an "array of arrays" in row-major
|
|
order, generating a worksheet object. The following snippet generates a sheet
|
|
with cell <code>A1</code> set to the string <code>A1</code>, cell <code>B1</code> set to <code>B1</code>, etc:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span><span class="pl-s">"A1"</span><span class="pl-kos">,</span> <span class="pl-s">"B1"</span><span class="pl-kos">,</span> <span class="pl-s">"C1"</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span><span class="pl-s">"A2"</span><span class="pl-kos">,</span> <span class="pl-s">"B2"</span><span class="pl-kos">,</span> <span class="pl-s">"C2"</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span><span class="pl-s">"A3"</span><span class="pl-kos">,</span> <span class="pl-s">"B3"</span><span class="pl-kos">,</span> <span class="pl-s">"C3"</span><span class="pl-kos">]</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><a href="#array-of-arrays-input">"Array of Arrays Input"</a> describes the function and the
|
|
optional <code>opts</code> argument in more detail.</p>
|
|
<p><em>Create a worksheet from an array of JS objects</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">jsa</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>json_to_sheet</code> utility function walks an array of JS objects in order,
|
|
generating a worksheet object. By default, it will generate a header row and
|
|
one row per object in the array. The optional <code>opts</code> argument has settings to
|
|
control the column order and header output.</p>
|
|
<p><a href="#array-of-arrays-input">"Array of Objects Input"</a> describes the function and
|
|
the optional <code>opts</code> argument in more detail.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<p><a href="#the-zen-of-sheetjs">"Zen of SheetJS"</a> contains a detailed example "Get Data
|
|
from a JSON Endpoint and Generate a Workbook"</p>
|
|
<p><a href="https://github.com/myliang/x-spreadsheet"><code>x-spreadsheet</code></a> is an interactive
|
|
data grid for previewing and modifying structured data in the web browser. The
|
|
<a href="/demos/xspreadsheet"><code>xspreadsheet</code> demo</a> includes a sample script with the
|
|
<code>xtos</code> function for converting from x-spreadsheet data object to a workbook.
|
|
<a href="https://oss.sheetjs.com/sheetjs/x-spreadsheet" rel="nofollow">https://oss.sheetjs.com/sheetjs/x-spreadsheet</a> is a live demo.</p>
|
|
<details>
|
|
<summary><b>Records from a database query (SQL or no-SQL)</b> (click to show)</summary>
|
|
<p>The <a href="/demos/database/"><code>database</code> demo</a> includes examples of working with
|
|
databases and query results.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Numerical Computations with TensorFlow.js</b> (click to show)</summary>
|
|
<p><a href="@tensorflow/tfjs"><code>@tensorflow/tfjs</code></a> and other libraries expect data in simple
|
|
arrays, well-suited for worksheets where each column is a data vector. That is
|
|
the transpose of how most people use spreadsheets, where each row is a vector.</p>
|
|
<p>When recovering data from <code>tfjs</code>, the returned data points are stored in a typed
|
|
array. An array of arrays can be constructed with loops. <code>Array#unshift</code> can
|
|
prepend a title row before the conversion:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'@tensorflow/tfjs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* suppose xs and ys are vectors (1D tensors) -> tfarr will be a typed array */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tfdata</span> <span class="pl-c1">=</span> <span class="pl-s1">tf</span><span class="pl-kos">.</span><span class="pl-en">stack</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s1">xs</span><span class="pl-kos">,</span> <span class="pl-s1">ys</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">transpose</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">shape</span> <span class="pl-c1">=</span> <span class="pl-s1">tfdata</span><span class="pl-kos">.</span><span class="pl-c1">shape</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tfarr</span> <span class="pl-c1">=</span> <span class="pl-s1">tfdata</span><span class="pl-kos">.</span><span class="pl-en">dataSync</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* construct the array of arrays */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">aoa</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">let</span> <span class="pl-s1">j</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span> <span class="pl-s1">j</span> <span class="pl-c1"><</span> <span class="pl-s1">shape</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span> <span class="pl-c1">++</span><span class="pl-s1">j</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-s1">aoa</span><span class="pl-kos">[</span><span class="pl-s1">j</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">let</span> <span class="pl-s1">i</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span> <span class="pl-s1">i</span> <span class="pl-c1"><</span> <span class="pl-s1">shape</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">;</span> <span class="pl-c1">++</span><span class="pl-s1">i</span><span class="pl-kos">)</span> <span class="pl-s1">aoa</span><span class="pl-kos">[</span><span class="pl-s1">j</span><span class="pl-kos">]</span><span class="pl-kos">[</span><span class="pl-s1">i</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s1">tfarr</span><span class="pl-kos">[</span><span class="pl-s1">j</span> <span class="pl-c1">*</span> <span class="pl-s1">shape</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span> <span class="pl-c1">+</span> <span class="pl-s1">i</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-c">/* add headers to the top */</span>
|
|
<span class="pl-s1">aoa</span><span class="pl-kos">.</span><span class="pl-en">unshift</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">"x"</span><span class="pl-kos">,</span> <span class="pl-s">"y"</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* generate worksheet */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">aoa</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/array/"><code>array</code> demo</a> shows a complete example.</p>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-processing-html-tables" class="anchor" href="#processing-html-tables" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Processing HTML Tables</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Create a worksheet by scraping an HTML TABLE in the page</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">dom_element</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>table_to_sheet</code> utility function takes a DOM TABLE element and iterates
|
|
through the rows to generate a worksheet. The <code>opts</code> argument is optional.
|
|
<a href="#html-table-input">"HTML Table Input"</a> describes the function in more detail.</p>
|
|
<p><em>Create a workbook by scraping an HTML TABLE in the page</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_book</span><span class="pl-kos">(</span><span class="pl-s1">dom_element</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>table_to_book</code> utility function follows the same logic as <code>table_to_sheet</code>.
|
|
After generating a worksheet, it creates a blank workbook and appends the
|
|
spreadsheet.</p>
|
|
<p>The options argument supports the same options as <code>table_to_sheet</code>, with the
|
|
addition of a <code>sheet</code> property to control the worksheet name. If the property
|
|
is missing or no options are specified, the default name <code>Sheet1</code> is used.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<p>Here are a few common scenarios (click on each subtitle to see the code):</p>
|
|
<details>
|
|
<summary><b>HTML TABLE element in a webpage</b> (click to show)</summary>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-c"><!-- include the standalone script and shim. this uses the UNPKG CDN --></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/xlsx/dist/shim.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/xlsx/dist/xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
|
|
<span class="pl-c"><!-- example table with id attribute --></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">table</span> <span class="pl-c1">id</span>="<span class="pl-s">tableau</span>"<span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">tr</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>Sheet<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>JS<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">tr</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">tr</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>12345<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>67<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">tr</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">table</span><span class="pl-kos">></span>
|
|
|
|
<span class="pl-c"><!-- this block should appear after the table HTML and the standalone script --></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">type</span>="<span class="pl-s">text/javascript</span>"<span class="pl-kos">></span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_book</span><span class="pl-kos">(</span><span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"tableau"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span></pre></div>
|
|
<p>Multiple tables on a web page can be converted to individual worksheets:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* create new workbook */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* convert table "table1" to worksheet named "Sheet1" */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">sheet1</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_sheet</span><span class="pl-kos">(</span><span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"table1"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">sheet1</span><span class="pl-kos">,</span> <span class="pl-s">"Sheet1"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* convert table "table2" to worksheet named "Sheet2" */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">sheet2</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_sheet</span><span class="pl-kos">(</span><span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"table2"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">sheet2</span><span class="pl-kos">,</span> <span class="pl-s">"Sheet2"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* workbook now has 2 worksheets */</span></pre></div>
|
|
<p>Alternatively, the HTML code can be extracted and parsed:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">htmlstr</span> <span class="pl-c1">=</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"tableau"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">outerHTML</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">htmlstr</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>:<span class="pl-s">"string"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Chrome/Chromium Extension</b> (click to show)</summary>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/chrome/"><code>chrome</code> demo</a> shows a complete example and details the
|
|
required permissions and other settings.</p>
|
|
<p>In an extension, it is recommended to generate the workbook in a content script
|
|
and pass the object back to the extension:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* in the worker script */</span>
|
|
<span class="pl-s1">chrome</span><span class="pl-kos">.</span><span class="pl-c1">runtime</span><span class="pl-kos">.</span><span class="pl-c1">onMessage</span><span class="pl-kos">.</span><span class="pl-en">addListener</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">msg</span><span class="pl-kos">,</span> <span class="pl-s1">sender</span><span class="pl-kos">,</span> <span class="pl-s1">cb</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* pass a message like { sheetjs: true } from the extension to scrape */</span>
|
|
<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">msg</span> <span class="pl-c1">||</span> <span class="pl-c1">!</span><span class="pl-s1">msg</span><span class="pl-kos">.</span><span class="pl-c1">sheetjs</span><span class="pl-kos">)</span> <span class="pl-k">return</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* create a new workbook */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* loop through each table element */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">tables</span> <span class="pl-c1">=</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementsByTagName</span><span class="pl-kos">(</span><span class="pl-s">"table"</span><span class="pl-kos">)</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">var</span> <span class="pl-s1">i</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span> <span class="pl-s1">i</span> <span class="pl-c1"><</span> <span class="pl-s1">tables</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">;</span> <span class="pl-c1">++</span><span class="pl-s1">i</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">tables</span><span class="pl-kos">[</span><span class="pl-s1">i</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"Table"</span> <span class="pl-c1">+</span> <span class="pl-s1">i</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-c">/* pass back to the extension */</span>
|
|
<span class="pl-k">return</span> <span class="pl-s1">cb</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Server-Side HTML Tables with Headless Chrome</b> (click to show)</summary>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/headless/"><code>headless</code> demo</a> includes a complete demo to convert HTML
|
|
files to XLSB workbooks. The core idea is to add the script to the page, parse
|
|
the table in the page context, generate a <code>base64</code> workbook and send it back
|
|
for further processing:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">{</span> readFileSync <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"fs"</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s1">puppeteer</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"puppeteer"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-s">`https://sheetjs.com/demos/table`</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* get the standalone build source (node_modules/xlsx/dist/xlsx.full.min.js) */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">lib</span> <span class="pl-c1">=</span> <span class="pl-en">readFileSync</span><span class="pl-kos">(</span><span class="pl-en">require</span><span class="pl-kos">.</span><span class="pl-en">resolve</span><span class="pl-kos">(</span><span class="pl-s">"xlsx/dist/xlsx.full.min.js"</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s">"utf8"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* start browser and go to web page */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">browser</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">puppeteer</span><span class="pl-kos">.</span><span class="pl-en">launch</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">page</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">browser</span><span class="pl-kos">.</span><span class="pl-en">newPage</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">goto</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">waitUntil</span>: <span class="pl-s">"networkidle2"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* inject library */</span>
|
|
<span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">addScriptTag</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">content</span>: <span class="pl-s1">lib</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* this function `s5s` will be called by the script below, receiving the Base64-encoded file */</span>
|
|
<span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">exposeFunction</span><span class="pl-kos">(</span><span class="pl-s">"s5s"</span><span class="pl-kos">,</span> <span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-s1">b64</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">b64</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>: <span class="pl-s">"base64"</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* generate XLSB file in webpage context and send back result */</span>
|
|
<span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">addScriptTag</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">content</span>: <span class="pl-s">`</span>
|
|
<span class="pl-s"> /* call table_to_book on first table */</span>
|
|
<span class="pl-s"> var workbook = XLSX.utils.table_to_book(document.querySelector("TABLE"));</span>
|
|
<span class="pl-s"></span>
|
|
<span class="pl-s"> /* generate XLSX file */</span>
|
|
<span class="pl-s"> var b64 = XLSX.write(workbook, {type: "base64", bookType: "xlsb"});</span>
|
|
<span class="pl-s"></span>
|
|
<span class="pl-s"> /* call "s5s" hook exposed from the node process */</span>
|
|
<span class="pl-s"> window.s5s(b64);</span>
|
|
<span class="pl-s"> `</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* cleanup */</span>
|
|
<span class="pl-k">await</span> <span class="pl-s1">browser</span><span class="pl-kos">.</span><span class="pl-en">close</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Server-Side HTML Tables with Headless WebKit</b> (click to show)</summary>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/headless/"><code>headless</code> demo</a> includes a complete demo to convert HTML
|
|
files to XLSB workbooks using <a href="https://phantomjs.org/" rel="nofollow">PhantomJS</a>. The core idea
|
|
is to add the script to the page, parse the table in the page context, generate
|
|
a <code>binary</code> workbook and send it back for further processing:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'xlsx'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">page</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'webpage'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">create</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* this code will be run in the page */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">code</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span> <span class="pl-s">"function(){"</span><span class="pl-kos">,</span>
|
|
<span class="pl-c">/* call table_to_book on first table */</span>
|
|
<span class="pl-s">"var wb = XLSX.utils.table_to_book(document.body.getElementsByTagName('table')[0]);"</span><span class="pl-kos">,</span>
|
|
|
|
<span class="pl-c">/* generate XLSB file and return binary string */</span>
|
|
<span class="pl-s">"return XLSX.write(wb, {type: 'binary', bookType: 'xlsb'});"</span><span class="pl-kos">,</span>
|
|
<span class="pl-s">"}"</span> <span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-en">join</span><span class="pl-kos">(</span><span class="pl-s">""</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">open</span><span class="pl-kos">(</span><span class="pl-s">'https://sheetjs.com/demos/table'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* Load the browser script from the UNPKG CDN */</span>
|
|
<span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">includeJs</span><span class="pl-kos">(</span><span class="pl-s">"https://unpkg.com/xlsx/dist/xlsx.full.min.js"</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* The code will return an XLSB file encoded as binary string */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">bin</span> <span class="pl-c1">=</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">evaluateJavaScript</span><span class="pl-kos">(</span><span class="pl-s1">code</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-s1">bin</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>: <span class="pl-s">"binary"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* DO SOMETHING WITH workbook HERE */</span>
|
|
|
|
<span class="pl-s1">phantom</span><span class="pl-kos">.</span><span class="pl-en">exit</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>NodeJS HTML Tables without a browser</b> (click to show)</summary>
|
|
<p>NodeJS does not include a DOM implementation and Puppeteer requires a hefty
|
|
Chromium build. <a href="https://npm.im/jsdom" rel="nofollow"><code>jsdom</code></a> is a lightweight alternative:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">{</span> readFileSync <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"fs"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">{</span> <span class="pl-c1">JSDOM</span> <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"jsdom"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* obtain HTML string. This example reads from test.html */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">html_str</span> <span class="pl-c1">=</span> <span class="pl-s1">fs</span><span class="pl-kos">.</span><span class="pl-en">readFileSync</span><span class="pl-kos">(</span><span class="pl-s">"test.html"</span><span class="pl-kos">,</span> <span class="pl-s">"utf8"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* get first TABLE element */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">doc</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-c1">JSDOM</span><span class="pl-kos">(</span><span class="pl-s1">html_str</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">window</span><span class="pl-kos">.</span><span class="pl-c1">document</span><span class="pl-kos">.</span><span class="pl-en">querySelector</span><span class="pl-kos">(</span><span class="pl-s">"table"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* generate workbook */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_book</span><span class="pl-kos">(</span><span class="pl-s1">doc</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-processing-data" class="anchor" href="#processing-data" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Processing Data</h2>
|
|
<p>The <a href="#common-spreadsheet-format">"Common Spreadsheet Format"</a> is a simple object
|
|
representation of the core concepts of a workbook. The utility functions work
|
|
with the object representation and are intended to handle common use cases.</p>
|
|
<h3>
|
|
<a id="user-content-modifying-workbook-structure" class="anchor" href="#modifying-workbook-structure" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Modifying Workbook Structure</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Append a Worksheet to a Workbook</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">sheet_name</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>book_append_sheet</code> utility function appends a worksheet to the workbook.
|
|
The third argument specifies the desired worksheet name. Multiple worksheets can
|
|
be added to a workbook by calling the function multiple times.</p>
|
|
<p><em>List the Worksheet names in tab order</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">wsnames</span> <span class="pl-c1">=</span> <span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>SheetNames</code> property of the workbook object is a list of the worksheet
|
|
names in "tab order". API functions will look at this array.</p>
|
|
<p><em>Replace a Worksheet in place</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">sheet_name</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s1">new_worksheet</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>Sheets</code> property of the workbook object is an object whose keys are names
|
|
and whose values are worksheet objects. By reassigning to a property of the
|
|
<code>Sheets</code> object, the worksheet object can be changed without disrupting the
|
|
rest of the worksheet structure.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<details>
|
|
<summary><b>Add a new worksheet to a workbook</b> (click to show)</summary>
|
|
<p>This example uses <a href="#array-of-arrays-input"><code>XLSX.utils.aoa_to_sheet</code></a>.</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">ws_name</span> <span class="pl-c1">=</span> <span class="pl-s">"SheetJS"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Create worksheet */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws_data</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">"S"</span><span class="pl-kos">,</span> <span class="pl-s">"h"</span><span class="pl-kos">,</span> <span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-s">"t"</span><span class="pl-kos">,</span> <span class="pl-s">"J"</span><span class="pl-kos">,</span> <span class="pl-s">"S"</span> <span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">1</span> <span class="pl-kos">,</span> <span class="pl-c1">2</span> <span class="pl-kos">,</span> <span class="pl-c1">3</span> <span class="pl-kos">,</span> <span class="pl-c1">4</span> <span class="pl-kos">,</span> <span class="pl-c1">5</span> <span class="pl-kos">]</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-s1">ws_data</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Add the worksheet to the workbook */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_append_sheet</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">,</span> <span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-s1">ws_name</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-modifying-cell-values" class="anchor" href="#modifying-cell-values" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Modifying Cell Values</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Modify a single cell value in a worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s1">new_value</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">origin</span>: <span class="pl-s1">address</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Modify multiple cell values in a worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">aoa</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>sheet_add_aoa</code> utility function modifies cell values in a worksheet. The
|
|
first argument is the worksheet object. The second argument is an array of
|
|
arrays of values. The <code>origin</code> key of the third argument controls where cells
|
|
will be written. The following snippet sets <code>B3=1</code> and <code>E5="abc"</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// <-- Write 1 to cell B3</span>
|
|
<span class="pl-kos">,</span> <span class="pl-c">// <-- Do nothing in row 4</span>
|
|
<span class="pl-kos">[</span><span class="pl-c">/*B5*/</span><span class="pl-kos">,</span> <span class="pl-c">/*C5*/</span><span class="pl-kos">,</span> <span class="pl-c">/*D5*/</span><span class="pl-kos">,</span> <span class="pl-s">"abc"</span><span class="pl-kos">]</span> <span class="pl-c">// <-- Write "abc" to cell E5</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">origin</span>: <span class="pl-s">"B3"</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><a href="#array-of-arrays-input">"Array of Arrays Input"</a> describes the function and the
|
|
optional <code>opts</code> argument in more detail.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<details>
|
|
<summary><b>Appending rows to a worksheet</b> (click to show)</summary>
|
|
<p>The special origin value <code>-1</code> instructs <code>sheet_add_aoa</code> to start in column A of
|
|
the row after the last row in the range, appending the data:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span><span class="pl-s">"first row after data"</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span><span class="pl-s">"second row after data"</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">]</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">origin</span>: <span class="pl-c1">-</span><span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-modifying-other-worksheet--workbook--cell-properties" class="anchor" href="#modifying-other-worksheet--workbook--cell-properties" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Modifying Other Worksheet / Workbook / Cell Properties</h3>
|
|
<p>The <a href="#common-spreadsheet-format">"Common Spreadsheet Format"</a> section describes
|
|
the object structures in greater detail.</p>
|
|
<h2>
|
|
<a id="user-content-packaging-and-releasing-data" class="anchor" href="#packaging-and-releasing-data" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Packaging and Releasing Data</h2>
|
|
<h3>
|
|
<a id="user-content-writing-workbooks" class="anchor" href="#writing-workbooks" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Writing Workbooks</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Generate spreadsheet bytes (file) from data</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>write</code> method attempts to package data from the workbook into a file in
|
|
memory. By default, XLSX files are generated, but that can be controlled with
|
|
the <code>bookType</code> property of the <code>opts</code> argument. Based on the <code>type</code> option,
|
|
the data can be stored as a "binary string", JS string, <code>Uint8Array</code> or Buffer.</p>
|
|
<p>The second <code>opts</code> argument is required. <a href="#writing-options">"Writing Options"</a>
|
|
covers the supported properties and behaviors.</p>
|
|
<p><em>Generate and attempt to save file</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">filename</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>writeFile</code> method packages the data and attempts to save the new file. The
|
|
export file format is determined by the extension of <code>filename</code> (<code>SheetJS.xlsx</code>
|
|
signals XLSX export, <code>SheetJS.xlsb</code> signals XLSB export, etc).</p>
|
|
<p>The <code>writeFile</code> method uses platform-specific APIs to initiate the file save. In
|
|
NodeJS, <code>fs.readFileSync</code> can create a file. In the web browser, a download is
|
|
attempted using the HTML5 <code>download</code> attribute, with fallbacks for IE.</p>
|
|
<p><em>Generate and attempt to save an XLSX file</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFileXLSX</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">filename</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>writeFile</code> method embeds a number of different export functions. This is
|
|
great for developer experience but not amenable to tree shaking using the
|
|
current developer tools. When only XLSX exports are needed, this method avoids
|
|
referencing the other export functions.</p>
|
|
<p>The second <code>opts</code> argument is optional. <a href="#writing-options">"Writing Options"</a>
|
|
covers the supported properties and behaviors.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<details>
|
|
<summary><b>Local file in a NodeJS server</b> (click to show)</summary>
|
|
<p><code>writeFile</code> uses <code>fs.writeFileSync</code> in server environments:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* output format determined by filename */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"out.xlsb"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For Node ESM, the <code>writeFile</code> helper is not enabled. Instead, <code>fs.writeFileSync</code>
|
|
should be used to write the file data to a <code>Buffer</code> for use with <code>XLSX.write</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">writeFileSync</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"fs"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">write</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx/xlsx.mjs"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">buf</span> <span class="pl-c1">=</span> <span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">type</span>: <span class="pl-s">"buffer"</span><span class="pl-kos">,</span> <span class="pl-c1">bookType</span>: <span class="pl-s">"xlsb"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* buf is a Buffer */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-en">writeFileSync</span><span class="pl-kos">(</span><span class="pl-s">"out.xlsb"</span><span class="pl-kos">,</span> <span class="pl-s1">buf</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in a Deno application</b> (click to show)</summary>
|
|
<p><code>writeFile</code> uses <code>Deno.writeFileSync</code> under the hood:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// <span class="pl-k">@deno</span>-types="https://deno.land/x/sheetjs/types/index.d.ts"</span>
|
|
<span class="pl-k">import</span> <span class="pl-c1">*</span> <span class="pl-k">as</span> <span class="pl-c1">XLSX</span> <span class="pl-k">from</span> <span class="pl-s">'https://deno.land/x/sheetjs/xlsx.mjs'</span>
|
|
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Applications writing files must be invoked with the <code>--allow-write</code> flag. The
|
|
<a href="https://github.com/SheetJS/SheetJS/tree/master/demos/deno/"><code>deno</code> demo</a> has more examples</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Local file in a PhotoShop or InDesign plugin</b> (click to show)</summary>
|
|
<p><code>writeFile</code> wraps the <code>File</code> logic in Photoshop and other ExtendScript targets.
|
|
The specified path should be an absolute path:</p>
|
|
<div class="highlight highlight-source-js"><pre>#<span class="pl-s1">include</span> <span class="pl-s">"xlsx.extendscript.js"</span>
|
|
|
|
<span class="pl-c">/* output format determined by filename */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"out.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* at this point, out.xlsx is a file that you can distribute */</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/extendscript/"><code>extendscript</code> demo</a> includes a more complex example.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Download a file in the browser to the user machine</b> (click to show)</summary>
|
|
<p><code>XLSX.writeFile</code> wraps a few techniques for triggering a file save:</p>
|
|
<ul>
|
|
<li>
|
|
<code>URL</code> browser API creates an object URL for the file, which the library uses
|
|
by creating a link and forcing a click. It is supported in modern browsers.</li>
|
|
<li>
|
|
<code>msSaveBlob</code> is an IE10+ API for triggering a file save.</li>
|
|
<li>
|
|
<code>IE_FileSave</code> uses VBScript and ActiveX to write a file in IE6+ for Windows
|
|
XP and Windows 7. The shim must be included in the containing HTML page.</li>
|
|
</ul>
|
|
<p>There is no standard way to determine if the actual file has been downloaded.</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* output format determined by filename */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">writeFile</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s">"out.xlsb"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* at this point, out.xlsb will have been downloaded */</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Download a file in legacy browsers</b> (click to show)</summary>
|
|
<p><code>XLSX.writeFile</code> techniques work for most modern browsers as well as older IE.
|
|
For much older browsers, there are workarounds implemented by wrapper libraries.</p>
|
|
<p><a href="https://github.com/eligrey/FileSaver.js/"><code>FileSaver.js</code></a> implements <code>saveAs</code>.
|
|
Note: <code>XLSX.writeFile</code> will automatically call <code>saveAs</code> if available.</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* bookType can be any supported output type */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">wopts</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">bookType</span>:<span class="pl-s">"xlsx"</span><span class="pl-kos">,</span> <span class="pl-c1">bookSST</span>:<span class="pl-c1">false</span><span class="pl-kos">,</span> <span class="pl-c1">type</span>:<span class="pl-s">"array"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">wbout</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span><span class="pl-s1">wopts</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* the saveAs call downloads a file on the local machine */</span>
|
|
<span class="pl-en">saveAs</span><span class="pl-kos">(</span><span class="pl-k">new</span> <span class="pl-v">Blob</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s1">wbout</span><span class="pl-kos">]</span><span class="pl-kos">,</span><span class="pl-kos">{</span><span class="pl-c1">type</span>:<span class="pl-s">"application/octet-stream"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><a href="https://github.com/dcneiner/downloadify"><code>Downloadify</code></a> uses a Flash SWF button
|
|
to generate local files, suitable for environments where ActiveX is unavailable:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-v">Downloadify</span><span class="pl-kos">.</span><span class="pl-en">create</span><span class="pl-kos">(</span><span class="pl-s1">id</span><span class="pl-kos">,</span><span class="pl-kos">{</span>
|
|
<span class="pl-c">/* other options are required! read the downloadify docs for more info */</span>
|
|
<span class="pl-c1">filename</span>: <span class="pl-s">"test.xlsx"</span><span class="pl-kos">,</span>
|
|
<span class="pl-en">data</span>: <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">bookType</span>:<span class="pl-s">"xlsx"</span><span class="pl-kos">,</span> <span class="pl-c1">type</span>:<span class="pl-s">"base64"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">append</span>: <span class="pl-c1">false</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">dataType</span>: <span class="pl-s">"base64"</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/oldie/"><code>oldie</code> demo</a> shows an IE-compatible fallback scenario.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Browser upload file (ajax)</b> (click to show)</summary>
|
|
<p>A complete example using XHR is <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/xhr/">included in the XHR demo</a>, along
|
|
with examples for fetch and wrapper libraries. This example assumes the server
|
|
can handle Base64-encoded files (see the demo for a basic nodejs server):</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* in this example, send a base64 string to the server */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">wopts</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">bookType</span>:<span class="pl-s">"xlsx"</span><span class="pl-kos">,</span> <span class="pl-c1">bookSST</span>:<span class="pl-c1">false</span><span class="pl-kos">,</span> <span class="pl-c1">type</span>:<span class="pl-s">"base64"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">wbout</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span><span class="pl-s1">wopts</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">var</span> <span class="pl-s1">req</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">XMLHttpRequest</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">open</span><span class="pl-kos">(</span><span class="pl-s">"POST"</span><span class="pl-kos">,</span> <span class="pl-s">"/upload"</span><span class="pl-kos">,</span> <span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">formdata</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">FormData</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">formdata</span><span class="pl-kos">.</span><span class="pl-en">append</span><span class="pl-kos">(</span><span class="pl-s">"file"</span><span class="pl-kos">,</span> <span class="pl-s">"test.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// <-- server expects `file` to hold name</span>
|
|
<span class="pl-s1">formdata</span><span class="pl-kos">.</span><span class="pl-en">append</span><span class="pl-kos">(</span><span class="pl-s">"data"</span><span class="pl-kos">,</span> <span class="pl-s1">wbout</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// <-- `data` holds the base64-encoded data</span>
|
|
<span class="pl-s1">req</span><span class="pl-kos">.</span><span class="pl-en">send</span><span class="pl-kos">(</span><span class="pl-s1">formdata</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>PhantomJS (Headless Webkit) File Generation</b> (click to show)</summary>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/headless/"><code>headless</code> demo</a> includes a complete demo to convert HTML
|
|
files to XLSB workbooks using <a href="https://phantomjs.org/" rel="nofollow">PhantomJS</a>. PhantomJS
|
|
<code>fs.write</code> supports writing files from the main process but has a different
|
|
interface from the NodeJS <code>fs</code> module:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'xlsx'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'fs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* generate a binary string */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">bin</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">type</span>:<span class="pl-s">"binary"</span><span class="pl-kos">,</span> <span class="pl-c1">bookType</span>: <span class="pl-s">"xlsx"</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* write to file */</span>
|
|
<span class="pl-s1">fs</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s">"test.xlsx"</span><span class="pl-kos">,</span> <span class="pl-s1">bin</span><span class="pl-kos">,</span> <span class="pl-s">"wb"</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Note: The section <a href="#processing-html-tables">"Processing HTML Tables"</a> shows how
|
|
to generate a workbook from HTML tables in a page in "Headless WebKit".</p>
|
|
</details>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/">included demos</a> cover mobile apps and other special deployments.</p>
|
|
<h3>
|
|
<a id="user-content-writing-examples" class="anchor" href="#writing-examples" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Writing Examples</h3>
|
|
<ul>
|
|
<li>
|
|
<a href="http://sheetjs.com/demos/table.html" rel="nofollow">http://sheetjs.com/demos/table.html</a> exporting an HTML table</li>
|
|
<li>
|
|
<a href="http://sheetjs.com/demos/writexlsx.html" rel="nofollow">http://sheetjs.com/demos/writexlsx.html</a> generates a simple file</li>
|
|
</ul>
|
|
<h3>
|
|
<a id="user-content-streaming-write" class="anchor" href="#streaming-write" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Streaming Write</h3>
|
|
<p>The streaming write functions are available in the <code>XLSX.stream</code> object. They
|
|
take the same arguments as the normal write functions but return a Readable
|
|
Stream. They are only exposed in NodeJS.</p>
|
|
<ul>
|
|
<li>
|
|
<code>XLSX.stream.to_csv</code> is the streaming version of <code>XLSX.utils.sheet_to_csv</code>.</li>
|
|
<li>
|
|
<code>XLSX.stream.to_html</code> is the streaming version of <code>XLSX.utils.sheet_to_html</code>.</li>
|
|
<li>
|
|
<code>XLSX.stream.to_json</code> is the streaming version of <code>XLSX.utils.sheet_to_json</code>.</li>
|
|
</ul>
|
|
<details>
|
|
<summary><b>nodejs convert to CSV and write file</b> (click to show)</summary>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">output_file_name</span> <span class="pl-c1">=</span> <span class="pl-s">"out.csv"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">stream</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">stream</span><span class="pl-kos">.</span><span class="pl-en">to_csv</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-s1">fs</span><span class="pl-kos">.</span><span class="pl-en">createWriteStream</span><span class="pl-kos">(</span><span class="pl-s1">output_file_name</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>nodejs write JSON stream to screen</b> (click to show)</summary>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* to_json returns an object-mode stream */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">stream</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">stream</span><span class="pl-kos">.</span><span class="pl-en">to_json</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">raw</span>:<span class="pl-c1">true</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* the following stream converts JS objects to text via JSON.stringify */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">conv</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">Transform</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">writableObjectMode</span>:<span class="pl-c1">true</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">conv</span><span class="pl-kos">.</span><span class="pl-en">_transform</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">obj</span><span class="pl-kos">,</span> <span class="pl-s1">e</span><span class="pl-kos">,</span> <span class="pl-s1">cb</span><span class="pl-kos">)</span><span class="pl-kos">{</span> <span class="pl-s1">cb</span><span class="pl-kos">(</span><span class="pl-c1">null</span><span class="pl-kos">,</span> <span class="pl-c1">JSON</span><span class="pl-kos">.</span><span class="pl-en">stringify</span><span class="pl-kos">(</span><span class="pl-s1">obj</span><span class="pl-kos">)</span> <span class="pl-c1">+</span> <span class="pl-s">"\n"</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-s1">conv</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">conv</span><span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-s1">process</span><span class="pl-kos">.</span><span class="pl-c1">stdout</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<p><a href="https://github.com/sheetjs/sheetaki">https://github.com/sheetjs/sheetaki</a> pipes write streams to nodejs response.</p>
|
|
<h3>
|
|
<a id="user-content-generating-json-and-js-data" class="anchor" href="#generating-json-and-js-data" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Generating JSON and JS Data</h3>
|
|
<p>JSON and JS data tend to represent single worksheets. The utility functions in
|
|
this section work with single worksheets.</p>
|
|
<p>The <a href="#common-spreadsheet-format">"Common Spreadsheet Format"</a> section describes
|
|
the object structure in more detail. <code>workbook.SheetNames</code> is an ordered list
|
|
of the worksheet names. <code>workbook.Sheets</code> is an object whose keys are sheet
|
|
names and whose values are worksheet objects.</p>
|
|
<p>The "first worksheet" is stored at <code>workbook.Sheets[workbook.SheetNames[0]]</code>.</p>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Create an array of JS objects from a worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">jsa</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Create an array of arrays of JS values from a worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">aoa</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>...<span class="pl-s1">opts</span><span class="pl-kos">,</span> <span class="pl-c1">header</span>: <span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>sheet_to_json</code> utility function walks a workbook in row-major order,
|
|
generating an array of objects. The second <code>opts</code> argument controls a number of
|
|
export decisions including the type of values (JS values or formatted text). The
|
|
<a href="#json">"JSON"</a> section describes the argument in more detail.</p>
|
|
<p>By default, <code>sheet_to_json</code> scans the first row and uses the values as headers.
|
|
With the <code>header: 1</code> option, the function exports an array of arrays of values.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<p><a href="https://github.com/myliang/x-spreadsheet"><code>x-spreadsheet</code></a> is an interactive
|
|
data grid for previewing and modifying structured data in the web browser. The
|
|
<a href="/demos/xspreadsheet"><code>xspreadsheet</code> demo</a> includes a sample script with the
|
|
<code>stox</code> function for converting from a workbook to x-spreadsheet data object.
|
|
<a href="https://oss.sheetjs.com/sheetjs/x-spreadsheet" rel="nofollow">https://oss.sheetjs.com/sheetjs/x-spreadsheet</a> is a live demo.</p>
|
|
<details>
|
|
<summary><b>Previewing data in a React data grid</b> (click to show)</summary>
|
|
<p><a href="https://npm.im/react-data-grid" rel="nofollow"><code>react-data-grid</code></a> is a data grid tailored for
|
|
react. It expects two properties: <code>rows</code> of data objects and <code>columns</code> which
|
|
describe the columns. For the purposes of massaging the data to fit the react
|
|
data grid API it is easiest to start from an array of arrays.</p>
|
|
<p>This demo starts by fetching a remote file and using <code>XLSX.read</code> to extract:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">useEffect</span><span class="pl-kos">,</span> <span class="pl-s1">useState</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"react"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-v">DataGrid</span> <span class="pl-k">from</span> <span class="pl-s">"react-data-grid"</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">read</span><span class="pl-kos">,</span> <span class="pl-s1">utils</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">"xlsx"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-s">"https://oss.sheetjs.com/test_files/RkNumber.xls"</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">export</span> <span class="pl-k">default</span> <span class="pl-k">function</span> <span class="pl-v">App</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">[</span><span class="pl-s1">columns</span><span class="pl-kos">,</span> <span class="pl-s1">setColumns</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-en">useState</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">[</span><span class="pl-s1">rows</span><span class="pl-kos">,</span> <span class="pl-s1">setRows</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-en">useState</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-en">useEffect</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span><span class="pl-kos">(</span><span class="pl-k">async</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">wb</span> <span class="pl-c1">=</span> <span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s1">url</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">WTF</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* use sheet_to_json with header: 1 to generate an array of arrays */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-s1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">header</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* see react-data-grid docs to understand the shape of the expected data */</span>
|
|
<span class="pl-s1">setColumns</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">r</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">key</span>: <span class="pl-s1">r</span><span class="pl-kos">,</span> <span class="pl-c1">name</span>: <span class="pl-s1">r</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">setRows</span><span class="pl-kos">(</span><span class="pl-s1">data</span><span class="pl-kos">.</span><span class="pl-en">slice</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">r</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-s1">r</span><span class="pl-kos">.</span><span class="pl-en">reduce</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">acc</span><span class="pl-kos">,</span> <span class="pl-s1">x</span><span class="pl-kos">,</span> <span class="pl-s1">i</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-s1">acc</span><span class="pl-kos">[</span><span class="pl-s1">data</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">[</span><span class="pl-s1">i</span><span class="pl-kos">]</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s1">x</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">return</span> <span class="pl-s1">acc</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">return</span> <span class="pl-c1"><</span><span class="pl-ent">DataGrid</span> <span class="pl-c1">columns</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-s1">columns</span><span class="pl-kos">}</span> <span class="pl-c1">rows</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-s1">rows</span><span class="pl-kos">}</span> <span class="pl-c1">/</span><span class="pl-c1">></span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>Populating a database (SQL or no-SQL)</b> (click to show)</summary>
|
|
<p>The <a href="/demos/database/"><code>database</code> demo</a> includes examples of working with
|
|
databases and query results.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Numerical Computations with TensorFlow.js</b> (click to show)</summary>
|
|
<p><a href="@tensorflow/tfjs"><code>@tensorflow/tfjs</code></a> and other libraries expect data in simple
|
|
arrays, well-suited for worksheets where each column is a data vector. That is
|
|
the transpose of how most people use spreadsheets, where each row is a vector.</p>
|
|
<p>A single <code>Array#map</code> can pull individual named rows from <code>sheet_to_json</code> export:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'@tensorflow/tfjs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-s1">key</span> <span class="pl-c1">=</span> <span class="pl-s">"age"</span><span class="pl-kos">;</span> <span class="pl-c">// this is the field we want to pull</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">ages</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-s1">r</span> <span class="pl-c1">=></span> <span class="pl-s1">r</span><span class="pl-kos">[</span><span class="pl-s1">key</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf_data</span> <span class="pl-c1">=</span> <span class="pl-s1">tf</span><span class="pl-kos">.</span><span class="pl-en">tensor1d</span><span class="pl-kos">(</span><span class="pl-s1">ages</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>All fields can be processed at once using a transpose of the 2D tensor generated
|
|
with the <code>sheet_to_json</code> export with <code>header: 1</code>. The first row, if it contains
|
|
header labels, should be removed with a slice:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">const</span> <span class="pl-c1">XLSX</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">"xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'@tensorflow/tfjs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* array of arrays of the data starting on the second row */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">aoa</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>: <span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">slice</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* dataset in the "correct orientation" */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf_dataset</span> <span class="pl-c1">=</span> <span class="pl-s1">tf</span><span class="pl-kos">.</span><span class="pl-en">tensor2d</span><span class="pl-kos">(</span><span class="pl-s1">aoa</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">transpose</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* pull out each dataset with a slice */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf_field0</span> <span class="pl-c1">=</span> <span class="pl-s1">tf_dataset</span><span class="pl-kos">.</span><span class="pl-en">slice</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">,</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-s1">tensor</span><span class="pl-kos">.</span><span class="pl-c1">shape</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">flatten</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">tf_field1</span> <span class="pl-c1">=</span> <span class="pl-s1">tf_dataset</span><span class="pl-kos">.</span><span class="pl-en">slice</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-s1">tensor</span><span class="pl-kos">.</span><span class="pl-c1">shape</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">flatten</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/array/"><code>array</code> demo</a> shows a complete example.</p>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-generating-html-tables" class="anchor" href="#generating-html-tables" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Generating HTML Tables</h3>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Generate HTML Table from Worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">html</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <code>sheet_to_html</code> utility function generates HTML code based on the worksheet
|
|
data. Each cell in the worksheet is mapped to a <code><TD></code> element. Merged cells
|
|
in the worksheet are serialized by setting <code>colspan</code> and <code>rowspan</code> attributes.</p>
|
|
<p><strong>Examples</strong></p>
|
|
<p>The <code>sheet_to_html</code> utility function generates HTML code that can be added to
|
|
any DOM element by setting the <code>innerHTML</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">container</span> <span class="pl-c1">=</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">"tavolo"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">container</span><span class="pl-kos">.</span><span class="pl-c1">innerHTML</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Combining with <code>fetch</code>, constructing a site from a workbook is straightforward:</p>
|
|
<details>
|
|
<summary><b>Vanilla JS + HTML fetch workbook and generate table previews</b> (click to show)</summary>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">body</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">style</span><span class="pl-kos">></span><span class="pl-ent">TABLE</span> { <span class="pl-c1">border-collapse</span><span class="pl-kos">:</span> collapse; } <span class="pl-ent">TD</span> { <span class="pl-c1">border</span><span class="pl-kos">:</span> <span class="pl-c1">1<span class="pl-smi">px</span></span> solid; }<span class="pl-kos"></</span><span class="pl-ent">style</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">div</span> <span class="pl-c1">id</span>="<span class="pl-s">tavolo</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">div</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://unpkg.com/xlsx/dist/xlsx.full.min.js</span>"<span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">script</span> <span class="pl-c1">type</span>="<span class="pl-s">text/javascript</span>"<span class="pl-kos">></span>
|
|
<span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* fetch and parse workbook -- see the fetch example for details */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s">"sheetjs.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">let</span> <span class="pl-s1">output</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* loop through the worksheet names in order */</span>
|
|
<span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">.</span><span class="pl-en">forEach</span><span class="pl-kos">(</span><span class="pl-s1">name</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
|
|
<span class="pl-c">/* generate HTML from the corresponding worksheets */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">name</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">html</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* add a header with the title name followed by the table */</span>
|
|
<span class="pl-s1">output</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s">`<H3><span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">name</span><span class="pl-kos">}</span></span></H3><span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">html</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* write to the DOM at the end */</span>
|
|
<span class="pl-s1">tavolo</span><span class="pl-kos">.</span><span class="pl-c1">innerHTML</span> <span class="pl-c1">=</span> <span class="pl-s1">output</span><span class="pl-kos">.</span><span class="pl-en">join</span><span class="pl-kos">(</span><span class="pl-s">"\n"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">script</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">body</span><span class="pl-kos">></span></pre></div>
|
|
</details>
|
|
<details>
|
|
<summary><b>React fetch workbook and generate HTML table previews</b> (click to show)</summary>
|
|
<p>It is generally recommended to use a React-friendly workflow, but it is possible
|
|
to generate HTML and use it in React with <code>dangerouslySetInnerHTML</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">function</span> <span class="pl-v">Tabeller</span><span class="pl-kos">(</span><span class="pl-s1">props</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* the workbook object is the state */</span>
|
|
<span class="pl-k">const</span> <span class="pl-kos">[</span><span class="pl-s1">workbook</span><span class="pl-kos">,</span> <span class="pl-s1">setWorkbook</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-v">React</span><span class="pl-kos">.</span><span class="pl-en">useState</span><span class="pl-kos">(</span><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">book_new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* fetch and update the workbook with an effect */</span>
|
|
<span class="pl-v">React</span><span class="pl-kos">.</span><span class="pl-en">useEffect</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span> <span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* fetch and parse workbook -- see the fetch example for details */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">wb</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s">"sheetjs.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">setWorkbook</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">return</span> <span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-s1">name</span> <span class="pl-c1">=></span> <span class="pl-kos">(</span><span class="pl-c1"><</span><span class="pl-c1">></span>
|
|
<span class="pl-c1"><</span><span class="pl-ent">h3</span><span class="pl-c1">></span>name<span class="pl-c1"><</span><span class="pl-c1">/</span><span class="pl-ent">h3</span><span class="pl-c1">></span>
|
|
<span class="pl-c1"><</span><span class="pl-ent">div</span> <span class="pl-c1">dangerouslySetInnerHTML</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-kos">{</span>
|
|
<span class="pl-c">/* this __html mantra is needed to set the inner HTML */</span>
|
|
<span class="pl-c1">__html</span>: <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">name</span><span class="pl-kos">]</span><span class="pl-kos">)</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">}</span> <span class="pl-c1">/</span><span class="pl-c1">></span>
|
|
<span class="pl-c1"><</span><span class="pl-c1">/</span><span class="pl-c1">></span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/react"><code>react</code> demo</a> includes more React examples.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>VueJS fetch workbook and generate HTML table previews</b> (click to show)</summary>
|
|
<p>It is generally recommended to use a VueJS-friendly workflow, but it is possible
|
|
to generate HTML and use it in VueJS with the <code>v-html</code> directive:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">read</span><span class="pl-kos">,</span> <span class="pl-s1">utils</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'xlsx'</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">reactive</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">const</span> <span class="pl-v">S5SComponent</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-en">mounted</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-kos">(</span><span class="pl-k">async</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* fetch and parse workbook -- see the fetch example for details */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">workbook</span> <span class="pl-c1">=</span> <span class="pl-en">read</span><span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-kos">(</span><span class="pl-k">await</span> <span class="pl-en">fetch</span><span class="pl-kos">(</span><span class="pl-s">"sheetjs.xlsx"</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">arrayBuffer</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* loop through the worksheet names in order */</span>
|
|
<span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">.</span><span class="pl-en">forEach</span><span class="pl-kos">(</span><span class="pl-s1">name</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* generate HTML from the corresponding worksheets */</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">html</span> <span class="pl-c1">=</span> <span class="pl-s1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">name</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* add to state */</span>
|
|
<span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">wb</span><span class="pl-kos">.</span><span class="pl-c1">wb</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-kos">{</span> name<span class="pl-kos">,</span> html <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c">/* this state mantra is required for array updates to work */</span>
|
|
<span class="pl-en">setup</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-kos">{</span> <span class="pl-c1">wb</span>: <span class="pl-en">reactive</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">wb</span>: <span class="pl-kos">[</span><span class="pl-kos">]</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">template</span>: <span class="pl-s">`</span>
|
|
<span class="pl-s"> <div v-for="ws in wb.wb" :key="ws.name"></span>
|
|
<span class="pl-s"> <h3>{{ ws.name }}</h3></span>
|
|
<span class="pl-s"> <div v-html="ws.html"></div></span>
|
|
<span class="pl-s"> </div>`</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>The <a href="https://github.com/SheetJS/SheetJS/tree/master/demos/vue"><code>vuejs</code> demo</a> includes more React examples.</p>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-generating-single-worksheet-snapshots" class="anchor" href="#generating-single-worksheet-snapshots" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Generating Single-Worksheet Snapshots</h3>
|
|
<p>The <code>sheet_to_*</code> functions accept a worksheet object.</p>
|
|
<p><strong>API</strong></p>
|
|
<p><em>Generate a CSV from a single worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">csv</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_csv</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>This snapshot is designed to replicate the "CSV UTF8 (<code>.csv</code>)" output type.
|
|
<a href="#delimiter-separated-output">"Delimiter-Separated Output"</a> describes the
|
|
function and the optional <code>opts</code> argument in more detail.</p>
|
|
<p><em>Generate "Text" from a single worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">txt</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_txt</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">opts</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>This snapshot is designed to replicate the "UTF16 Text (<code>.txt</code>)" output type.
|
|
<a href="#delimiter-separated-output">"Delimiter-Separated Output"</a> describes the
|
|
function and the optional <code>opts</code> argument in more detail.</p>
|
|
<p><em>Generate a list of formulae from a single worksheet</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">fmla</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_formulae</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>This snapshot generates an array of entries representing the embedded formulae.
|
|
Array formulae are rendered in the form <code>range=formula</code> while plain cells are
|
|
rendered in the form <code>cell=formula or value</code>. String literals are prefixed with
|
|
an apostrophe <code>'</code>, consistent with Excel's formula bar display.</p>
|
|
<p><a href="#formulae-output">"Formulae Output"</a> describes the function in more detail.</p>
|
|
<h2>
|
|
<a id="user-content-interface" class="anchor" href="#interface" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Interface</h2>
|
|
<p><code>XLSX</code> is the exposed variable in the browser and the exported node variable</p>
|
|
<p><code>XLSX.version</code> is the version of the library (added by the build script).</p>
|
|
<p><code>XLSX.SSF</code> is an embedded version of the <a href="https://git.io/ssf" rel="nofollow">format library</a>.</p>
|
|
<h3>
|
|
<a id="user-content-parsing-functions" class="anchor" href="#parsing-functions" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Parsing functions</h3>
|
|
<p><code>XLSX.read(data, read_opts)</code> attempts to parse <code>data</code>.</p>
|
|
<p><code>XLSX.readFile(filename, read_opts)</code> attempts to read <code>filename</code> and parse.</p>
|
|
<p>Parse options are described in the <a href="#parsing-options">Parsing Options</a> section.</p>
|
|
<h3>
|
|
<a id="user-content-writing-functions" class="anchor" href="#writing-functions" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Writing functions</h3>
|
|
<p><code>XLSX.write(wb, write_opts)</code> attempts to write the workbook <code>wb</code></p>
|
|
<p><code>XLSX.writeFile(wb, filename, write_opts)</code> attempts to write <code>wb</code> to <code>filename</code>.
|
|
In browser-based environments, it will attempt to force a client-side download.</p>
|
|
<p><code>XLSX.writeFileAsync(wb, filename, o, cb)</code> attempts to write <code>wb</code> to <code>filename</code>.
|
|
If <code>o</code> is omitted, the writer will use the third argument as the callback.</p>
|
|
<p><code>XLSX.stream</code> contains a set of streaming write functions.</p>
|
|
<p>Write options are described in the <a href="#writing-options">Writing Options</a> section.</p>
|
|
<h3>
|
|
<a id="user-content-utilities" class="anchor" href="#utilities" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Utilities</h3>
|
|
<p>Utilities are available in the <code>XLSX.utils</code> object and are described in the
|
|
<a href="#utility-functions">Utility Functions</a> section:</p>
|
|
<p><strong>Constructing:</strong></p>
|
|
<ul>
|
|
<li>
|
|
<code>book_new</code> creates an empty workbook</li>
|
|
<li>
|
|
<code>book_append_sheet</code> adds a worksheet to a workbook</li>
|
|
</ul>
|
|
<p><strong>Importing:</strong></p>
|
|
<ul>
|
|
<li>
|
|
<code>aoa_to_sheet</code> converts an array of arrays of JS data to a worksheet.</li>
|
|
<li>
|
|
<code>json_to_sheet</code> converts an array of JS objects to a worksheet.</li>
|
|
<li>
|
|
<code>table_to_sheet</code> converts a DOM TABLE element to a worksheet.</li>
|
|
<li>
|
|
<code>sheet_add_aoa</code> adds an array of arrays of JS data to an existing worksheet.</li>
|
|
<li>
|
|
<code>sheet_add_json</code> adds an array of JS objects to an existing worksheet.</li>
|
|
</ul>
|
|
<p><strong>Exporting:</strong></p>
|
|
<ul>
|
|
<li>
|
|
<code>sheet_to_json</code> converts a worksheet object to an array of JSON objects.</li>
|
|
<li>
|
|
<code>sheet_to_csv</code> generates delimiter-separated-values output.</li>
|
|
<li>
|
|
<code>sheet_to_txt</code> generates UTF16 formatted text.</li>
|
|
<li>
|
|
<code>sheet_to_html</code> generates HTML output.</li>
|
|
<li>
|
|
<code>sheet_to_formulae</code> generates a list of the formulae (with value fallbacks).</li>
|
|
</ul>
|
|
<p><strong>Cell and cell address manipulation:</strong></p>
|
|
<ul>
|
|
<li>
|
|
<code>format_cell</code> generates the text value for a cell (using number formats).</li>
|
|
<li>
|
|
<code>encode_row / decode_row</code> converts between 0-indexed rows and 1-indexed rows.</li>
|
|
<li>
|
|
<code>encode_col / decode_col</code> converts between 0-indexed columns and column names.</li>
|
|
<li>
|
|
<code>encode_cell / decode_cell</code> converts cell addresses.</li>
|
|
<li>
|
|
<code>encode_range / decode_range</code> converts cell ranges.</li>
|
|
</ul>
|
|
<h2>
|
|
<a id="user-content-common-spreadsheet-format" class="anchor" href="#common-spreadsheet-format" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Common Spreadsheet Format</h2>
|
|
<p>SheetJS conforms to the Common Spreadsheet Format (CSF):</p>
|
|
<h3>
|
|
<a id="user-content-general-structures" class="anchor" href="#general-structures" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>General Structures</h3>
|
|
<p>Cell address objects are stored as <code>{c:C, r:R}</code> where <code>C</code> and <code>R</code> are 0-indexed
|
|
column and row numbers, respectively. For example, the cell address <code>B5</code> is
|
|
represented by the object <code>{c:1, r:4}</code>.</p>
|
|
<p>Cell range objects are stored as <code>{s:S, e:E}</code> where <code>S</code> is the first cell and
|
|
<code>E</code> is the last cell in the range. The ranges are inclusive. For example, the
|
|
range <code>A3:B7</code> is represented by the object <code>{s:{c:0, r:2}, e:{c:1, r:6}}</code>.
|
|
Utility functions perform a row-major order walk traversal of a sheet range:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">var</span> <span class="pl-v">R</span> <span class="pl-c1">=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">s</span><span class="pl-kos">.</span><span class="pl-c1">r</span><span class="pl-kos">;</span> <span class="pl-v">R</span> <span class="pl-c1"><=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">e</span><span class="pl-kos">.</span><span class="pl-c1">r</span><span class="pl-kos">;</span> <span class="pl-c1">++</span><span class="pl-v">R</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">for</span><span class="pl-kos">(</span><span class="pl-k">var</span> <span class="pl-v">C</span> <span class="pl-c1">=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">s</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">;</span> <span class="pl-v">C</span> <span class="pl-c1"><=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">e</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">;</span> <span class="pl-c1">++</span><span class="pl-v">C</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">cell_address</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-c1">c</span>:<span class="pl-v">C</span><span class="pl-kos">,</span> <span class="pl-c1">r</span>:<span class="pl-v">R</span><span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">/* if an A1-style address is needed, encode the address */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">cell_ref</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">encode_cell</span><span class="pl-kos">(</span><span class="pl-s1">cell_address</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
<h3>
|
|
<a id="user-content-cell-object" class="anchor" href="#cell-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Cell Object</h3>
|
|
<p>Cell objects are plain JS objects with keys and values following the convention:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Key</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>v</code></td>
|
|
<td>raw value (see Data Types section for more info)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>w</code></td>
|
|
<td>formatted text (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>t</code></td>
|
|
<td>type: <code>b</code> Boolean, <code>e</code> Error, <code>n</code> Number, <code>d</code> Date, <code>s</code> Text, <code>z</code> Stub</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>f</code></td>
|
|
<td>cell formula encoded as an A1-style string (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>F</code></td>
|
|
<td>range of enclosing array if formula is array formula (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>D</code></td>
|
|
<td>if true, array formula is dynamic (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>r</code></td>
|
|
<td>rich text encoding (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>h</code></td>
|
|
<td>HTML rendering of the rich text (if applicable)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>c</code></td>
|
|
<td>comments associated with the cell</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>z</code></td>
|
|
<td>number format string associated with the cell (if requested)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>l</code></td>
|
|
<td>cell hyperlink object (<code>.Target</code> holds link, <code>.Tooltip</code> is tooltip)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>s</code></td>
|
|
<td>the style/theme of the cell (if applicable)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Built-in export utilities (such as the CSV exporter) will use the <code>w</code> text if it
|
|
is available. To change a value, be sure to delete <code>cell.w</code> (or set it to
|
|
<code>undefined</code>) before attempting to export. The utilities will regenerate the <code>w</code>
|
|
text from the number format (<code>cell.z</code>) and the raw value if possible.</p>
|
|
<p>The actual array formula is stored in the <code>f</code> field of the first cell in the
|
|
array range. Other cells in the range will omit the <code>f</code> field.</p>
|
|
<h4>
|
|
<a id="user-content-data-types" class="anchor" href="#data-types" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Data Types</h4>
|
|
<p>The raw value is stored in the <code>v</code> value property, interpreted based on the <code>t</code>
|
|
type property. This separation allows for representation of numbers as well as
|
|
numeric text. There are 6 valid cell types:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="center">Type</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="center"><code>b</code></td>
|
|
<td align="left">Boolean: value interpreted as JS <code>boolean</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><code>e</code></td>
|
|
<td align="left">Error: value is a numeric code and <code>w</code> property stores common name **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><code>n</code></td>
|
|
<td align="left">Number: value is a JS <code>number</code> **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><code>d</code></td>
|
|
<td align="left">Date: value is a JS <code>Date</code> object or string to be parsed as Date **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><code>s</code></td>
|
|
<td align="left">Text: value interpreted as JS <code>string</code> and written as text **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><code>z</code></td>
|
|
<td align="left">Stub: blank stub cell that is ignored by data processing utilities **</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Error values and interpretation</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="right">Value</th>
|
|
<th align="left">Error Meaning</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="right"><code>0x00</code></td>
|
|
<td align="left"><code>#NULL!</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x07</code></td>
|
|
<td align="left"><code>#DIV/0!</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x0F</code></td>
|
|
<td align="left"><code>#VALUE!</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x17</code></td>
|
|
<td align="left"><code>#REF!</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x1D</code></td>
|
|
<td align="left"><code>#NAME?</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x24</code></td>
|
|
<td align="left"><code>#NUM!</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x2A</code></td>
|
|
<td align="left"><code>#N/A</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right"><code>0x2B</code></td>
|
|
<td align="left"><code>#GETTING_DATA</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<p>Type <code>n</code> is the Number type. This includes all forms of data that Excel stores
|
|
as numbers, such as dates/times and Boolean fields. Excel exclusively uses data
|
|
that can be fit in an IEEE754 floating point number, just like JS Number, so the
|
|
<code>v</code> field holds the raw number. The <code>w</code> field holds formatted text. Dates are
|
|
stored as numbers by default and converted with <code>XLSX.SSF.parse_date_code</code>.</p>
|
|
<p>Type <code>d</code> is the Date type, generated only when the option <code>cellDates</code> is passed.
|
|
Since JSON does not have a natural Date type, parsers are generally expected to
|
|
store ISO 8601 Date strings like you would get from <code>date.toISOString()</code>. On
|
|
the other hand, writers and exporters should be able to handle date strings and
|
|
JS Date objects. Note that Excel disregards timezone modifiers and treats all
|
|
dates in the local timezone. The library does not correct for this error.</p>
|
|
<p>Type <code>s</code> is the String type. Values are explicitly stored as text. Excel will
|
|
interpret these cells as "number stored as text". Generated Excel files
|
|
automatically suppress that class of error, but other formats may elicit errors.</p>
|
|
<p>Type <code>z</code> represents blank stub cells. They are generated in cases where cells
|
|
have no assigned value but hold comments or other metadata. They are ignored by
|
|
the core library data processing utility functions. By default these cells are
|
|
not generated; the parser <code>sheetStubs</code> option must be set to <code>true</code>.</p>
|
|
<h4>
|
|
<a id="user-content-dates" class="anchor" href="#dates" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Dates</h4>
|
|
<details>
|
|
<summary><b>Excel Date Code details</b> (click to show)</summary>
|
|
<p>By default, Excel stores dates as numbers with a format code that specifies date
|
|
processing. For example, the date <code>19-Feb-17</code> is stored as the number <code>42785</code>
|
|
with a number format of <code>d-mmm-yy</code>. The <code>SSF</code> module understands number formats
|
|
and performs the appropriate conversion.</p>
|
|
<p>XLSX also supports a special date type <code>d</code> where the data is an ISO 8601 date
|
|
string. The formatter converts the date back to a number.</p>
|
|
<p>The default behavior for all parsers is to generate number cells. Setting
|
|
<code>cellDates</code> to true will force the generators to store dates.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Time Zones and Dates</b> (click to show)</summary>
|
|
<p>Excel has no native concept of universal time. All times are specified in the
|
|
local time zone. Excel limitations prevent specifying true absolute dates.</p>
|
|
<p>Following Excel, this library treats all dates as relative to local time zone.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Epochs: 1900 and 1904</b> (click to show)</summary>
|
|
<p>Excel supports two epochs (January 1 1900 and January 1 1904).
|
|
The workbook's epoch can be determined by examining the workbook's
|
|
<code>wb.Workbook.WBProps.date1904</code> property:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">!</span><span class="pl-c1">!</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Workbook</span><span class="pl-c1">||</span><span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">WBProps</span><span class="pl-c1">||</span><span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">date1904</span><span class="pl-kos">)</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-sheet-objects" class="anchor" href="#sheet-objects" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Sheet Objects</h3>
|
|
<p>Each key that does not start with <code>!</code> maps to a cell (using <code>A-1</code> notation)</p>
|
|
<p><code>sheet[address]</code> returns the cell object for the specified address.</p>
|
|
<p><strong>Special sheet keys (accessible as <code>sheet[key]</code>, each starting with <code>!</code>):</strong></p>
|
|
<ul>
|
|
<li>
|
|
<p><code>sheet['!ref']</code>: A-1 based range representing the sheet range. Functions that
|
|
work with sheets should use this parameter to determine the range. Cells that
|
|
are assigned outside of the range are not processed. In particular, when
|
|
writing a sheet by hand, cells outside of the range are not included</p>
|
|
<p>Functions that handle sheets should test for the presence of <code>!ref</code> field.
|
|
If the <code>!ref</code> is omitted or is not a valid range, functions are free to treat
|
|
the sheet as empty or attempt to guess the range. The standard utilities that
|
|
ship with this library treat sheets as empty (for example, the CSV output is
|
|
empty string).</p>
|
|
<p>When reading a worksheet with the <code>sheetRows</code> property set, the ref parameter
|
|
will use the restricted range. The original range is set at <code>ws['!fullref']</code></p>
|
|
</li>
|
|
<li>
|
|
<p><code>sheet['!margins']</code>: Object representing the page margins. The default values
|
|
follow Excel's "normal" preset. Excel also has a "wide" and a "narrow" preset
|
|
but they are stored as raw measurements. The main properties are listed below:</p>
|
|
</li>
|
|
</ul>
|
|
<details>
|
|
<summary><b>Page margin details</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>key</th>
|
|
<th>description</th>
|
|
<th align="left">"normal"</th>
|
|
<th align="left">"wide"</th>
|
|
<th align="left">"narrow"</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>left</code></td>
|
|
<td>left margin (inches)</td>
|
|
<td align="left"><code>0.7</code></td>
|
|
<td align="left"><code>1.0</code></td>
|
|
<td align="left"><code>0.25</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>right</code></td>
|
|
<td>right margin (inches)</td>
|
|
<td align="left"><code>0.7</code></td>
|
|
<td align="left"><code>1.0</code></td>
|
|
<td align="left"><code>0.25</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>top</code></td>
|
|
<td>top margin (inches)</td>
|
|
<td align="left"><code>0.75</code></td>
|
|
<td align="left"><code>1.0</code></td>
|
|
<td align="left"><code>0.75</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>bottom</code></td>
|
|
<td>bottom margin (inches)</td>
|
|
<td align="left"><code>0.75</code></td>
|
|
<td align="left"><code>1.0</code></td>
|
|
<td align="left"><code>0.75</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>header</code></td>
|
|
<td>header margin (inches)</td>
|
|
<td align="left"><code>0.3</code></td>
|
|
<td align="left"><code>0.5</code></td>
|
|
<td align="left"><code>0.3</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>footer</code></td>
|
|
<td>footer margin (inches)</td>
|
|
<td align="left"><code>0.3</code></td>
|
|
<td align="left"><code>0.5</code></td>
|
|
<td align="left"><code>0.3</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* Set worksheet sheet to "normal" */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">"!margins"</span><span class="pl-kos">]</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-c1">left</span>:<span class="pl-c1">0.7</span><span class="pl-kos">,</span> <span class="pl-c1">right</span>:<span class="pl-c1">0.7</span><span class="pl-kos">,</span> <span class="pl-c1">top</span>:<span class="pl-c1">0.75</span><span class="pl-kos">,</span><span class="pl-c1">bottom</span>:<span class="pl-c1">0.75</span><span class="pl-kos">,</span><span class="pl-c1">header</span>:<span class="pl-c1">0.3</span><span class="pl-kos">,</span><span class="pl-c1">footer</span>:<span class="pl-c1">0.3</span><span class="pl-kos">}</span>
|
|
<span class="pl-c">/* Set worksheet sheet to "wide" */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">"!margins"</span><span class="pl-kos">]</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-c1">left</span>:<span class="pl-c1">1.0</span><span class="pl-kos">,</span> <span class="pl-c1">right</span>:<span class="pl-c1">1.0</span><span class="pl-kos">,</span> <span class="pl-c1">top</span>:<span class="pl-c1">1.0</span><span class="pl-kos">,</span> <span class="pl-c1">bottom</span>:<span class="pl-c1">1.0</span><span class="pl-kos">,</span> <span class="pl-c1">header</span>:<span class="pl-c1">0.5</span><span class="pl-kos">,</span><span class="pl-c1">footer</span>:<span class="pl-c1">0.5</span><span class="pl-kos">}</span>
|
|
<span class="pl-c">/* Set worksheet sheet to "narrow" */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">"!margins"</span><span class="pl-kos">]</span><span class="pl-c1">=</span><span class="pl-kos">{</span><span class="pl-c1">left</span>:<span class="pl-c1">0.25</span><span class="pl-kos">,</span><span class="pl-c1">right</span>:<span class="pl-c1">0.25</span><span class="pl-kos">,</span><span class="pl-c1">top</span>:<span class="pl-c1">0.75</span><span class="pl-kos">,</span><span class="pl-c1">bottom</span>:<span class="pl-c1">0.75</span><span class="pl-kos">,</span><span class="pl-c1">header</span>:<span class="pl-c1">0.3</span><span class="pl-kos">,</span><span class="pl-c1">footer</span>:<span class="pl-c1">0.3</span><span class="pl-kos">}</span></pre></div>
|
|
</details>
|
|
<h4>
|
|
<a id="user-content-worksheet-object" class="anchor" href="#worksheet-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Worksheet Object</h4>
|
|
<p>In addition to the base sheet keys, worksheets also add:</p>
|
|
<ul>
|
|
<li>
|
|
<p><code>ws['!cols']</code>: array of column properties objects. Column widths are actually
|
|
stored in files in a normalized manner, measured in terms of the "Maximum
|
|
Digit Width" (the largest width of the rendered digits 0-9, in pixels). When
|
|
parsed, the column objects store the pixel width in the <code>wpx</code> field, character
|
|
width in the <code>wch</code> field, and the maximum digit width in the <code>MDW</code> field.</p>
|
|
</li>
|
|
<li>
|
|
<p><code>ws['!rows']</code>: array of row properties objects as explained later in the docs.
|
|
Each row object encodes properties including row height and visibility.</p>
|
|
</li>
|
|
<li>
|
|
<p><code>ws['!merges']</code>: array of range objects corresponding to the merged cells in
|
|
the worksheet. Plain text formats do not support merge cells. CSV export
|
|
will write all cells in the merge range if they exist, so be sure that only
|
|
the first cell (upper-left) in the range is set.</p>
|
|
</li>
|
|
<li>
|
|
<p><code>ws['!outline']</code>: configure how outlines should behave. Options default to
|
|
the default settings in Excel 2019:</p>
|
|
</li>
|
|
</ul>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">key</th>
|
|
<th align="left">Excel feature</th>
|
|
<th align="left">default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>above</code></td>
|
|
<td align="left">Uncheck "Summary rows below detail"</td>
|
|
<td align="left"><code>false</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>left</code></td>
|
|
<td align="left">Uncheck "Summary rows to the right of detail"</td>
|
|
<td align="left"><code>false</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>
|
|
<code>ws['!protect']</code>: object of write sheet protection properties. The <code>password</code>
|
|
key specifies the password for formats that support password-protected sheets
|
|
(XLSX/XLSB/XLS). The writer uses the XOR obfuscation method. The following
|
|
keys control the sheet protection -- set to <code>false</code> to enable a feature when
|
|
sheet is locked or set to <code>true</code> to disable a feature:</li>
|
|
</ul>
|
|
<details>
|
|
<summary><b>Worksheet Protection Details</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">key</th>
|
|
<th align="left">feature (true=disabled / false=enabled)</th>
|
|
<th align="left">default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>selectLockedCells</code></td>
|
|
<td align="left">Select locked cells</td>
|
|
<td align="left">enabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>selectUnlockedCells</code></td>
|
|
<td align="left">Select unlocked cells</td>
|
|
<td align="left">enabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>formatCells</code></td>
|
|
<td align="left">Format cells</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>formatColumns</code></td>
|
|
<td align="left">Format columns</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>formatRows</code></td>
|
|
<td align="left">Format rows</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>insertColumns</code></td>
|
|
<td align="left">Insert columns</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>insertRows</code></td>
|
|
<td align="left">Insert rows</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>insertHyperlinks</code></td>
|
|
<td align="left">Insert hyperlinks</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>deleteColumns</code></td>
|
|
<td align="left">Delete columns</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>deleteRows</code></td>
|
|
<td align="left">Delete rows</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sort</code></td>
|
|
<td align="left">Sort</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>autoFilter</code></td>
|
|
<td align="left">Filter</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>pivotTables</code></td>
|
|
<td align="left">Use PivotTable reports</td>
|
|
<td align="left">disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>objects</code></td>
|
|
<td align="left">Edit objects</td>
|
|
<td align="left">enabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>scenarios</code></td>
|
|
<td align="left">Edit scenarios</td>
|
|
<td align="left">enabled</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<ul>
|
|
<li>
|
|
<code>ws['!autofilter']</code>: AutoFilter object following the schema:</li>
|
|
</ul>
|
|
<div class="highlight highlight-source-ts"><pre><span class="pl-k">type</span> <span class="pl-smi">AutoFilter</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c1">ref</span>:<span class="pl-smi">string</span><span class="pl-kos">;</span> <span class="pl-c">// A-1 based range representing the AutoFilter table range</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
<h4>
|
|
<a id="user-content-chartsheet-object" class="anchor" href="#chartsheet-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Chartsheet Object</h4>
|
|
<p>Chartsheets are represented as standard sheets. They are distinguished with the
|
|
<code>!type</code> property set to <code>"chart"</code>.</p>
|
|
<p>The underlying data and <code>!ref</code> refer to the cached data in the chartsheet. The
|
|
first row of the chartsheet is the underlying header.</p>
|
|
<h4>
|
|
<a id="user-content-macrosheet-object" class="anchor" href="#macrosheet-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Macrosheet Object</h4>
|
|
<p>Macrosheets are represented as standard sheets. They are distinguished with the
|
|
<code>!type</code> property set to <code>"macro"</code>.</p>
|
|
<h4>
|
|
<a id="user-content-dialogsheet-object" class="anchor" href="#dialogsheet-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Dialogsheet Object</h4>
|
|
<p>Dialogsheets are represented as standard sheets. They are distinguished with the
|
|
<code>!type</code> property set to <code>"dialog"</code>.</p>
|
|
<h3>
|
|
<a id="user-content-workbook-object" class="anchor" href="#workbook-object" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Workbook Object</h3>
|
|
<p><code>workbook.SheetNames</code> is an ordered list of the sheets in the workbook</p>
|
|
<p><code>wb.Sheets[sheetname]</code> returns an object representing the worksheet.</p>
|
|
<p><code>wb.Props</code> is an object storing the standard properties. <code>wb.Custprops</code> stores
|
|
custom properties. Since the XLS standard properties deviate from the XLSX
|
|
standard, XLS parsing stores core properties in both places.</p>
|
|
<p><code>wb.Workbook</code> stores <a href="#workbook-level-attributes">workbook-level attributes</a>.</p>
|
|
<h4>
|
|
<a id="user-content-workbook-file-properties" class="anchor" href="#workbook-file-properties" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Workbook File Properties</h4>
|
|
<p>The various file formats use different internal names for file properties. The
|
|
workbook <code>Props</code> object normalizes the names:</p>
|
|
<details>
|
|
<summary><b>File Properties</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">JS Name</th>
|
|
<th align="left">Excel Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>Title</code></td>
|
|
<td align="left">Summary tab "Title"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Subject</code></td>
|
|
<td align="left">Summary tab "Subject"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Author</code></td>
|
|
<td align="left">Summary tab "Author"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Manager</code></td>
|
|
<td align="left">Summary tab "Manager"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Company</code></td>
|
|
<td align="left">Summary tab "Company"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Category</code></td>
|
|
<td align="left">Summary tab "Category"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Keywords</code></td>
|
|
<td align="left">Summary tab "Keywords"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Comments</code></td>
|
|
<td align="left">Summary tab "Comments"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>LastAuthor</code></td>
|
|
<td align="left">Statistics tab "Last saved by"</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>CreatedDate</code></td>
|
|
<td align="left">Statistics tab "Created"</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<p>For example, to set the workbook title property:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Props</span><span class="pl-kos">)</span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Props</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Props</span><span class="pl-kos">.</span><span class="pl-c1">Title</span> <span class="pl-c1">=</span> <span class="pl-s">"Insert Title Here"</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Custom properties are added in the workbook <code>Custprops</code> object:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Custprops</span><span class="pl-kos">)</span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Custprops</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Custprops</span><span class="pl-kos">[</span><span class="pl-s">"Custom Property"</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s">"Custom Value"</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Writers will process the <code>Props</code> key of the options object:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* force the Author to be "SheetJS" */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-en">write</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">Props</span>:<span class="pl-kos">{</span><span class="pl-c1">Author</span>:<span class="pl-s">"SheetJS"</span><span class="pl-kos">}</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<h3>
|
|
<a id="user-content-workbook-level-attributes" class="anchor" href="#workbook-level-attributes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Workbook-Level Attributes</h3>
|
|
<p><code>wb.Workbook</code> stores workbook-level attributes.</p>
|
|
<h4>
|
|
<a id="user-content-defined-names" class="anchor" href="#defined-names" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Defined Names</h4>
|
|
<p><code>wb.Workbook.Names</code> is an array of defined name objects which have the keys:</p>
|
|
<details>
|
|
<summary><b>Defined Name Properties</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Key</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>Sheet</code></td>
|
|
<td align="left">Name scope. Sheet Index (0 = first sheet) or <code>null</code> (Workbook)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Name</code></td>
|
|
<td align="left">Case-sensitive name. Standard rules apply **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Ref</code></td>
|
|
<td align="left">A1-style Reference (<code>"Sheet1!$A$1:$D$20"</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Comment</code></td>
|
|
<td align="left">Comment (only applicable for XLS/XLSX/XLSB)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<p>Excel allows two sheet-scoped defined names to share the same name. However, a
|
|
sheet-scoped name cannot collide with a workbook-scope name. Workbook writers
|
|
may not enforce this constraint.</p>
|
|
<h4>
|
|
<a id="user-content-workbook-views" class="anchor" href="#workbook-views" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Workbook Views</h4>
|
|
<p><code>wb.Workbook.Views</code> is an array of workbook view objects which have the keys:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Key</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>RTL</code></td>
|
|
<td align="left">If true, display right-to-left</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>
|
|
<a id="user-content-miscellaneous-workbook-properties" class="anchor" href="#miscellaneous-workbook-properties" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Miscellaneous Workbook Properties</h4>
|
|
<p><code>wb.Workbook.WBProps</code> holds other workbook properties:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Key</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>CodeName</code></td>
|
|
<td align="left"><a href="#vba-and-macros">VBA Project Workbook Code Name</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>date1904</code></td>
|
|
<td align="left">epoch: 0/false for 1900 system, 1/true for 1904</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>filterPrivacy</code></td>
|
|
<td align="left">Warn or strip personally identifying info on save</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3>
|
|
<a id="user-content-document-features" class="anchor" href="#document-features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Document Features</h3>
|
|
<p>Even for basic features like date storage, the official Excel formats store the
|
|
same content in different ways. The parsers are expected to convert from the
|
|
underlying file format representation to the Common Spreadsheet Format. Writers
|
|
are expected to convert from CSF back to the underlying file format.</p>
|
|
<h4>
|
|
<a id="user-content-formulae" class="anchor" href="#formulae" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Formulae</h4>
|
|
<p>The A1-style formula string is stored in the <code>f</code> field. Even though different
|
|
file formats store the formulae in different ways, the formats are translated.
|
|
Even though some formats store formulae with a leading equal sign, CSF formulae
|
|
do not start with <code>=</code>.</p>
|
|
<details>
|
|
<summary><b>Formulae File Format Support</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Storage Representation</th>
|
|
<th align="left">Formats</th>
|
|
<th align="center">Read</th>
|
|
<th align="center">Write</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">A1-style strings</td>
|
|
<td align="left">XLSX</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">RC-style strings</td>
|
|
<td align="left">XLML and plain text</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">BIFF Parsed formulae</td>
|
|
<td align="left">XLSB and all XLS formats</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">OpenFormula formulae</td>
|
|
<td align="left">ODS/FODS/UOS</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus Parsed formulae</td>
|
|
<td align="left">All Lotus WK_ formats</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Since Excel prohibits named cells from colliding with names of A1 or RC style
|
|
cell references, a (not-so-simple) regex conversion is possible. BIFF Parsed
|
|
formulae and Lotus Parsed formulae have to be explicitly unwound. OpenFormula
|
|
formulae can be converted with regular expressions.</p>
|
|
<p>Shared formulae are decompressed and each cell has the formula corresponding to
|
|
its cell. Writers generally do not attempt to generate shared formulae.</p>
|
|
</details>
|
|
<p><strong>Single-Cell Formulae</strong></p>
|
|
<p>For simple formulae, the <code>f</code> key of the desired cell can be set to the actual
|
|
formula text. This worksheet represents <code>A1=1</code>, <code>A2=2</code>, and <code>A3=A1+A2</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-s">"!ref"</span>: <span class="pl-s">"A1:A3"</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">A1</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">A2</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">A3</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>:<span class="pl-s">'A1+A2'</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Utilities like <code>aoa_to_sheet</code> will accept cell objects in lieu of values:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">1</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// A1</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">2</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// A2</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">{</span><span class="pl-c1">t</span>: <span class="pl-s">"n"</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>: <span class="pl-s">"A1+A2"</span><span class="pl-kos">}</span> <span class="pl-kos">]</span> <span class="pl-c">// A3</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Cells with formula entries but no value will be serialized in a way that Excel
|
|
and other spreadsheet tools will recognize. This library will not automatically
|
|
compute formula results! For example, the following worksheet will include the
|
|
<code>BESSELJ</code> function but the result will not be available in JavaScript:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">worksheet</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-c1">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">3.14159</span><span class="pl-kos">,</span> <span class="pl-c1">2</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// Row "1"</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>:<span class="pl-s">'BESSELJ(A1,B1)'</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span> <span class="pl-c">// Row "2" will be calculated on file open</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
<p>If the actual results are needed in JS, <a href="https://sheetjs.com/pro" rel="nofollow">SheetJS Pro</a>
|
|
offers a formula calculator component for evaluating expressions, updating
|
|
values and dependent cells, and refreshing entire workbooks.</p>
|
|
<p><strong>Array Formulae</strong></p>
|
|
<p><em>Assign an array formula</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">range</span><span class="pl-kos">,</span> <span class="pl-s1">formula</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Array formulae are stored in the top-left cell of the array block. All cells
|
|
of an array formula have a <code>F</code> field corresponding to the range. A single-cell
|
|
formula can be distinguished from a plain formula by the presence of <code>F</code> field.</p>
|
|
<p>For example, setting the cell <code>C1</code> to the array formula <code>{=SUM(A1:A3*B1:B3)}</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// API function</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"C1"</span><span class="pl-kos">,</span> <span class="pl-s">"SUM(A1:A3*B1:B3)"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// ... OR raw operations</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'C1'</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>: <span class="pl-s">"SUM(A1:A3*B1:B3)"</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"C1:C1"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>For a multi-cell array formula, every cell has the same array range but only the
|
|
first cell specifies the formula. Consider <code>D1:D3=A1:A3*B1:B3</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// API function</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"D1:D3"</span><span class="pl-kos">,</span> <span class="pl-s">"A1:A3*B1:B3"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// ... OR raw operations</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'D1'</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"D1:D3"</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>:<span class="pl-s">"A1:A3*B1:B3"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'D2'</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"D1:D3"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'D3'</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">'n'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"D1:D3"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Utilities and writers are expected to check for the presence of a <code>F</code> field and
|
|
ignore any possible formula element <code>f</code> in cells other than the starting cell.
|
|
They are not expected to perform validation of the formulae!</p>
|
|
<p><strong>Dynamic Array Formulae</strong></p>
|
|
<p><em>Assign a dynamic array formula</em></p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s1">range</span><span class="pl-kos">,</span> <span class="pl-s1">formula</span><span class="pl-kos">,</span> <span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Released in 2020, Dynamic Array Formulae are supported in the XLSX/XLSM and XLSB
|
|
file formats. They are represented like normal array formulae but have special
|
|
cell metadata indicating that the formula should be allowed to adjust the range.</p>
|
|
<p>An array formula can be marked as dynamic by setting the cell's <code>D</code> property to
|
|
true. The <code>F</code> range is expected but can be the set to the current cell:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// API function</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"C1"</span><span class="pl-kos">,</span> <span class="pl-s">"_xlfn.UNIQUE(A1:A3)"</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// ... OR raw operations</span>
|
|
<span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'C1'</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">t</span>: <span class="pl-s">"s"</span><span class="pl-kos">,</span> <span class="pl-c1">f</span>: <span class="pl-s">"_xlfn.UNIQUE(A1:A3)"</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"C1"</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">// dynamic</span></pre></div>
|
|
<p><strong>Localization with Function Names</strong></p>
|
|
<p>SheetJS operates at the file level. Excel stores formula expressions using the
|
|
English (United States) function names. For non-English users, Excel uses a
|
|
localized set of function names.</p>
|
|
<p>For example, when the computer language and region is set to French (France),
|
|
Excel interprets <code>=SOMME(A1:C3)</code> as if <code>SOMME</code> is the <code>SUM</code> function. However,
|
|
in the actual file, Excel stores <code>SUM(A1:C3)</code>.</p>
|
|
<p><strong>Prefixed "Future Functions"</strong></p>
|
|
<p>Functions introduced in newer versions of Excel are prefixed with <code>_xlfn.</code> when
|
|
stored in files. When writing formula expressions using these functions, the
|
|
prefix is required for maximal compatibility:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">// Broadest compatibility</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"C1"</span><span class="pl-kos">,</span> <span class="pl-s">"_xlfn.UNIQUE(A1:A3)"</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">// Can cause errors in spreadsheet software</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_set_array_formula</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">,</span> <span class="pl-s">"C1"</span><span class="pl-kos">,</span> <span class="pl-s">"UNIQUE(A1:A3)"</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>When reading a file, the <code>xlfn</code> option preserves the prefixes.</p>
|
|
<details>
|
|
<summary><b> Functions requiring `_xlfn.` prefix</b> (click to show)</summary>
|
|
<p>This list is growing with each Excel release.</p>
|
|
<pre><code>ACOT
|
|
ACOTH
|
|
AGGREGATE
|
|
ARABIC
|
|
BASE
|
|
BETA.DIST
|
|
BETA.INV
|
|
BINOM.DIST
|
|
BINOM.DIST.RANGE
|
|
BINOM.INV
|
|
BITAND
|
|
BITLSHIFT
|
|
BITOR
|
|
BITRSHIFT
|
|
BITXOR
|
|
BYCOL
|
|
BYROW
|
|
CEILING.MATH
|
|
CEILING.PRECISE
|
|
CHISQ.DIST
|
|
CHISQ.DIST.RT
|
|
CHISQ.INV
|
|
CHISQ.INV.RT
|
|
CHISQ.TEST
|
|
COMBINA
|
|
CONFIDENCE.NORM
|
|
CONFIDENCE.T
|
|
COT
|
|
COTH
|
|
COVARIANCE.P
|
|
COVARIANCE.S
|
|
CSC
|
|
CSCH
|
|
DAYS
|
|
DECIMAL
|
|
ERF.PRECISE
|
|
ERFC.PRECISE
|
|
EXPON.DIST
|
|
F.DIST
|
|
F.DIST.RT
|
|
F.INV
|
|
F.INV.RT
|
|
F.TEST
|
|
FIELDVALUE
|
|
FILTERXML
|
|
FLOOR.MATH
|
|
FLOOR.PRECISE
|
|
FORMULATEXT
|
|
GAMMA
|
|
GAMMA.DIST
|
|
GAMMA.INV
|
|
GAMMALN.PRECISE
|
|
GAUSS
|
|
HYPGEOM.DIST
|
|
IFNA
|
|
IMCOSH
|
|
IMCOT
|
|
IMCSC
|
|
IMCSCH
|
|
IMSEC
|
|
IMSECH
|
|
IMSINH
|
|
IMTAN
|
|
ISFORMULA
|
|
ISOMITTED
|
|
ISOWEEKNUM
|
|
LAMBDA
|
|
LET
|
|
LOGNORM.DIST
|
|
LOGNORM.INV
|
|
MAKEARRAY
|
|
MAP
|
|
MODE.MULT
|
|
MODE.SNGL
|
|
MUNIT
|
|
NEGBINOM.DIST
|
|
NORM.DIST
|
|
NORM.INV
|
|
NORM.S.DIST
|
|
NORM.S.INV
|
|
NUMBERVALUE
|
|
PDURATION
|
|
PERCENTILE.EXC
|
|
PERCENTILE.INC
|
|
PERCENTRANK.EXC
|
|
PERCENTRANK.INC
|
|
PERMUTATIONA
|
|
PHI
|
|
POISSON.DIST
|
|
QUARTILE.EXC
|
|
QUARTILE.INC
|
|
QUERYSTRING
|
|
RANDARRAY
|
|
RANK.AVG
|
|
RANK.EQ
|
|
REDUCE
|
|
RRI
|
|
SCAN
|
|
SEC
|
|
SECH
|
|
SEQUENCE
|
|
SHEET
|
|
SHEETS
|
|
SKEW.P
|
|
SORTBY
|
|
STDEV.P
|
|
STDEV.S
|
|
T.DIST
|
|
T.DIST.2T
|
|
T.DIST.RT
|
|
T.INV
|
|
T.INV.2T
|
|
T.TEST
|
|
UNICHAR
|
|
UNICODE
|
|
UNIQUE
|
|
VAR.P
|
|
VAR.S
|
|
WEBSERVICE
|
|
WEIBULL.DIST
|
|
XLOOKUP
|
|
XOR
|
|
Z.TEST
|
|
</code></pre>
|
|
</details>
|
|
<h4>
|
|
<a id="user-content-row-and-column-properties" class="anchor" href="#row-and-column-properties" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Row and Column Properties</h4>
|
|
<details>
|
|
<summary><b>Format Support</b> (click to show)</summary>
|
|
<p><strong>Row Properties</strong>: XLSX/M, XLSB, BIFF8 XLS, XLML, SYLK, DOM, ODS</p>
|
|
<p><strong>Column Properties</strong>: XLSX/M, XLSB, BIFF8 XLS, XLML, SYLK, DOM</p>
|
|
</details>
|
|
<p>Row and Column properties are not extracted by default when reading from a file
|
|
and are not persisted by default when writing to a file. The option
|
|
<code>cellStyles: true</code> must be passed to the relevant read or write function.</p>
|
|
<p><em>Column Properties</em></p>
|
|
<p>The <code>!cols</code> array in each worksheet, if present, is a collection of <code>ColInfo</code>
|
|
objects which have the following properties:</p>
|
|
<div class="highlight highlight-source-ts"><pre><span class="pl-k">type</span> <span class="pl-smi">ColInfo</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* visibility */</span>
|
|
<span class="pl-c1">hidden</span>?: <span class="pl-smi">boolean</span><span class="pl-kos">;</span> <span class="pl-c">// if true, the column is hidden</span>
|
|
|
|
<span class="pl-c">/* column width is specified in one of the following ways: */</span>
|
|
<span class="pl-c1">wpx</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// width in screen pixels</span>
|
|
<span class="pl-c1">width</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// width in Excel's "Max Digit Width", width*256 is integral</span>
|
|
<span class="pl-c1">wch</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// width in characters</span>
|
|
|
|
<span class="pl-c">/* other fields for preserving features from files */</span>
|
|
<span class="pl-c1">level</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// 0-indexed outline / group level</span>
|
|
<span class="pl-c1">MDW</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// Excel's "Max Digit Width" unit, always integral</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Row Properties</em></p>
|
|
<p>The <code>!rows</code> array in each worksheet, if present, is a collection of <code>RowInfo</code>
|
|
objects which have the following properties:</p>
|
|
<div class="highlight highlight-source-ts"><pre><span class="pl-k">type</span> <span class="pl-smi">RowInfo</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c">/* visibility */</span>
|
|
<span class="pl-c1">hidden</span>?: <span class="pl-smi">boolean</span><span class="pl-kos">;</span> <span class="pl-c">// if true, the row is hidden</span>
|
|
|
|
<span class="pl-c">/* row height is specified in one of the following ways: */</span>
|
|
<span class="pl-c1">hpx</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// height in screen pixels</span>
|
|
<span class="pl-c1">hpt</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// height in points</span>
|
|
|
|
<span class="pl-c1">level</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span> <span class="pl-c">// 0-indexed outline / group level</span>
|
|
<span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Outline / Group Levels Convention</em></p>
|
|
<p>The Excel UI displays the base outline level as <code>1</code> and the max level as <code>8</code>.
|
|
Following JS conventions, SheetJS uses 0-indexed outline levels wherein the base
|
|
outline level is <code>0</code> and the max level is <code>7</code>.</p>
|
|
<details>
|
|
<summary><b>Why are there three width types?</b> (click to show)</summary>
|
|
<p>There are three different width types corresponding to the three different ways
|
|
spreadsheets store column widths:</p>
|
|
<p>SYLK and other plain text formats use raw character count. Contemporaneous tools
|
|
like Visicalc and Multiplan were character based. Since the characters had the
|
|
same width, it sufficed to store a count. This tradition was continued into the
|
|
BIFF formats.</p>
|
|
<p>SpreadsheetML (2003) tried to align with HTML by standardizing on screen pixel
|
|
count throughout the file. Column widths, row heights, and other measures use
|
|
pixels. When the pixel and character counts do not align, Excel rounds values.</p>
|
|
<p>XLSX internally stores column widths in a nebulous "Max Digit Width" form. The
|
|
Max Digit Width is the width of the largest digit when rendered (generally the
|
|
"0" character is the widest). The internal width must be an integer multiple of
|
|
the the width divided by 256. ECMA-376 describes a formula for converting
|
|
between pixels and the internal width. This represents a hybrid approach.</p>
|
|
<p>Read functions attempt to populate all three properties. Write functions will
|
|
try to cycle specified values to the desired type. In order to avoid potential
|
|
conflicts, manipulation should delete the other properties first. For example,
|
|
when changing the pixel width, delete the <code>wch</code> and <code>width</code> properties.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Implementation details</b> (click to show)</summary>
|
|
<p><em>Row Heights</em></p>
|
|
<p>Excel internally stores row heights in points. The default resolution is 72 DPI
|
|
or 96 PPI, so the pixel and point size should agree. For different resolutions
|
|
they may not agree, so the library separates the concepts.</p>
|
|
<p>Even though all of the information is made available, writers are expected to
|
|
follow the priority order:</p>
|
|
<ol>
|
|
<li>use <code>hpx</code> pixel height if available</li>
|
|
<li>use <code>hpt</code> point height if available</li>
|
|
</ol>
|
|
<p><em>Column Widths</em></p>
|
|
<p>Given the constraints, it is possible to determine the MDW without actually
|
|
inspecting the font! The parsers guess the pixel width by converting from width
|
|
to pixels and back, repeating for all possible MDW and selecting the MDW that
|
|
minimizes the error. XLML actually stores the pixel width, so the guess works
|
|
in the opposite direction.</p>
|
|
<p>Even though all of the information is made available, writers are expected to
|
|
follow the priority order:</p>
|
|
<ol>
|
|
<li>use <code>width</code> field if available</li>
|
|
<li>use <code>wpx</code> pixel width if available</li>
|
|
<li>use <code>wch</code> character count if available</li>
|
|
</ol>
|
|
</details>
|
|
<h4>
|
|
<a id="user-content-number-formats" class="anchor" href="#number-formats" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Number Formats</h4>
|
|
<p>The <code>cell.w</code> formatted text for each cell is produced from <code>cell.v</code> and <code>cell.z</code>
|
|
format. If the format is not specified, the Excel <code>General</code> format is used.
|
|
The format can either be specified as a string or as an index into the format
|
|
table. Parsers are expected to populate <code>workbook.SSF</code> with the number format
|
|
table. Writers are expected to serialize the table.</p>
|
|
<p>Custom tools should ensure that the local table has each used format string
|
|
somewhere in the table. Excel convention mandates that the custom formats start
|
|
at index 164. The following example creates a custom format from scratch:</p>
|
|
<details>
|
|
<summary><b>New worksheet with custom format</b> (click to show)</summary>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">wb</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
|
|
<span class="pl-c1">SheetNames</span>: <span class="pl-kos">[</span><span class="pl-s">"Sheet1"</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">Sheets</span>: <span class="pl-kos">{</span>
|
|
<span class="pl-c1">Sheet1</span>: <span class="pl-kos">{</span>
|
|
<span class="pl-s">"!ref"</span>:<span class="pl-s">"A1:C1"</span><span class="pl-kos">,</span>
|
|
<span class="pl-c1">A1</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">"n"</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">10000</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c">// <-- General format</span>
|
|
<span class="pl-c1">B1</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">"n"</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">10000</span><span class="pl-kos">,</span> <span class="pl-c1">z</span>: <span class="pl-s">"0%"</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c">// <-- Builtin format</span>
|
|
<span class="pl-c1">C1</span>: <span class="pl-kos">{</span> <span class="pl-c1">t</span>:<span class="pl-s">"n"</span><span class="pl-kos">,</span> <span class="pl-c1">v</span>:<span class="pl-c1">10000</span><span class="pl-kos">,</span> <span class="pl-c1">z</span>: <span class="pl-s">"\"T\"\ #0.00"</span> <span class="pl-kos">}</span> <span class="pl-c">// <-- Custom format</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-kos">}</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
</details>
|
|
<p>The rules are slightly different from how Excel displays custom number formats.
|
|
In particular, literal characters must be wrapped in double quotes or preceded
|
|
by a backslash. For more info, see the Excel documentation article
|
|
<code>Create or delete a custom number format</code> or ECMA-376 18.8.31 (Number Formats)</p>
|
|
<details>
|
|
<summary><b>Default Number Formats</b> (click to show)</summary>
|
|
<p>The default formats are listed in ECMA-376 18.8.30:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="right">ID</th>
|
|
<th align="left">Format</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="right">0</td>
|
|
<td align="left"><code>General</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">1</td>
|
|
<td align="left"><code>0</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">2</td>
|
|
<td align="left"><code>0.00</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">3</td>
|
|
<td align="left"><code>#,##0</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">4</td>
|
|
<td align="left"><code>#,##0.00</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">9</td>
|
|
<td align="left"><code>0%</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">10</td>
|
|
<td align="left"><code>0.00%</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">11</td>
|
|
<td align="left"><code>0.00E+00</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">12</td>
|
|
<td align="left"><code># ?/?</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">13</td>
|
|
<td align="left"><code># ??/??</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">14</td>
|
|
<td align="left">
|
|
<code>m/d/yy</code> (see below)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">15</td>
|
|
<td align="left"><code>d-mmm-yy</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">16</td>
|
|
<td align="left"><code>d-mmm</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">17</td>
|
|
<td align="left"><code>mmm-yy</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">18</td>
|
|
<td align="left"><code>h:mm AM/PM</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">19</td>
|
|
<td align="left"><code>h:mm:ss AM/PM</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">20</td>
|
|
<td align="left"><code>h:mm</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">21</td>
|
|
<td align="left"><code>h:mm:ss</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">22</td>
|
|
<td align="left"><code>m/d/yy h:mm</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">37</td>
|
|
<td align="left"><code>#,##0 ;(#,##0)</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">38</td>
|
|
<td align="left"><code>#,##0 ;[Red](#,##0)</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">39</td>
|
|
<td align="left"><code>#,##0.00;(#,##0.00)</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">40</td>
|
|
<td align="left"><code>#,##0.00;[Red](#,##0.00)</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">45</td>
|
|
<td align="left"><code>mm:ss</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">46</td>
|
|
<td align="left"><code>[h]:mm:ss</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">47</td>
|
|
<td align="left"><code>mmss.0</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">48</td>
|
|
<td align="left"><code>##0.0E+0</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right">49</td>
|
|
<td align="left"><code>@</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<p>Format 14 (<code>m/d/yy</code>) is localized by Excel: even though the file specifies that
|
|
number format, it will be drawn differently based on system settings. It makes
|
|
sense when the producer and consumer of files are in the same locale, but that
|
|
is not always the case over the Internet. To get around this ambiguity, parse
|
|
functions accept the <code>dateNF</code> option to override the interpretation of that
|
|
specific format string.</p>
|
|
<h4>
|
|
<a id="user-content-hyperlinks" class="anchor" href="#hyperlinks" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Hyperlinks</h4>
|
|
<details>
|
|
<summary><b>Format Support</b> (click to show)</summary>
|
|
<p><strong>Cell Hyperlinks</strong>: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS</p>
|
|
<p><strong>Tooltips</strong>: XLSX/M, XLSB, BIFF8 XLS, XLML</p>
|
|
</details>
|
|
<p>Hyperlinks are stored in the <code>l</code> key of cell objects. The <code>Target</code> field of the
|
|
hyperlink object is the target of the link, including the URI fragment. Tooltips
|
|
are stored in the <code>Tooltip</code> field and are displayed when you move your mouse
|
|
over the text.</p>
|
|
<p>For example, the following snippet creates a link from cell <code>A3</code> to
|
|
<a href="https://sheetjs.com" rel="nofollow">https://sheetjs.com</a> with the tip <code>"Find us @ SheetJS.com!"</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A1'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"https://sheetjs.com"</span><span class="pl-kos">,</span> <span class="pl-c1">Tooltip</span>:<span class="pl-s">"Find us @ SheetJS.com!"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Note that Excel does not automatically style hyperlinks -- they will generally
|
|
be displayed as normal text.</p>
|
|
<p><em>Remote Links</em></p>
|
|
<p>HTTP / HTTPS links can be used directly:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A2'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"https://docs.sheetjs.com/#hyperlinks"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A3'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"http://localhost:7262/yes_localhost_works"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Excel also supports <code>mailto</code> email links with subject line:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A4'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"mailto:ignored@dev.null"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A5'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"mailto:ignored@dev.null?subject=Test Subject"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
|
|
<p><em>Local Links</em></p>
|
|
<p>Links to absolute paths should use the <code>file://</code> URI scheme:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'B1'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"file:///SheetJS/t.xlsx"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to /SheetJS/t.xlsx */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'B2'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"file:///c:/SheetJS.xlsx"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to c:\SheetJS.xlsx */</span></pre></div>
|
|
<p>Links to relative paths can be specified without a scheme:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'B3'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"SheetJS.xlsb"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to SheetJS.xlsb */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'B4'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"../SheetJS.xlsm"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to ../SheetJS.xlsm */</span></pre></div>
|
|
<p>Relative Paths have undefined behavior in the SpreadsheetML 2003 format. Excel
|
|
2019 will treat a <code>..\</code> parent mark as two levels up.</p>
|
|
<p><em>Internal Links</em></p>
|
|
<p>Links where the target is a cell or range or defined name in the same workbook
|
|
("Internal Links") are marked with a leading hash character:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'C1'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"#E2"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to cell E2 */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'C2'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"#Sheet2!E2"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to cell E2 in sheet Sheet2 */</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'C3'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">l</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Target</span>:<span class="pl-s">"#SomeDefinedName"</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-c">/* Link to Defined Name */</span></pre></div>
|
|
<h4>
|
|
<a id="user-content-cell-comments" class="anchor" href="#cell-comments" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Cell Comments</h4>
|
|
<p>Cell comments are objects stored in the <code>c</code> array of cell objects. The actual
|
|
contents of the comment are split into blocks based on the comment author. The
|
|
<code>a</code> field of each comment object is the author of the comment and the <code>t</code> field
|
|
is the plain text representation.</p>
|
|
<p>For example, the following snippet appends a cell comment into cell <code>A1</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">)</span> <span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">a</span>:<span class="pl-s">"SheetJS"</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>:<span class="pl-s">"I'm a little comment, short and stout!"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Note: XLSB enforces a 54 character limit on the Author name. Names longer than
|
|
54 characters may cause issues with other formats.</p>
|
|
<p>To mark a comment as normally hidden, set the <code>hidden</code> property:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">)</span> <span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A1</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">a</span>:<span class="pl-s">"SheetJS"</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>:<span class="pl-s">"This comment is visible"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A2</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">)</span> <span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A2</span><span class="pl-kos">.</span><span class="pl-c1">c</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A2</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">.</span><span class="pl-c1">hidden</span> <span class="pl-c1">=</span> <span class="pl-c1">true</span><span class="pl-kos">;</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">.</span><span class="pl-c1">A2</span><span class="pl-kos">.</span><span class="pl-c1">c</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">a</span>:<span class="pl-s">"SheetJS"</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>:<span class="pl-s">"This comment will be hidden"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<h4>
|
|
<a id="user-content-sheet-visibility" class="anchor" href="#sheet-visibility" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Sheet Visibility</h4>
|
|
<p>Excel enables hiding sheets in the lower tab bar. The sheet data is stored in
|
|
the file but the UI does not readily make it available. Standard hidden sheets
|
|
are revealed in the "Unhide" menu. Excel also has "very hidden" sheets which
|
|
cannot be revealed in the menu. It is only accessible in the VB Editor!</p>
|
|
<p>The visibility setting is stored in the <code>Hidden</code> property of sheet props array.</p>
|
|
<details>
|
|
<summary><b>More details</b> (click to show)</summary>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="center">Value</th>
|
|
<th align="left">Definition</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="center">0</td>
|
|
<td align="left">Visible</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">1</td>
|
|
<td align="left">Hidden</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">2</td>
|
|
<td align="left">Very Hidden</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>With <a href="https://rawgit.com/SheetJS/test_files/HEAD/sheet_visibility.xlsx" rel="nofollow">https://rawgit.com/SheetJS/test_files/HEAD/sheet_visibility.xlsx</a>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">x</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-kos">[</span><span class="pl-s1">x</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">,</span> <span class="pl-s1">x</span><span class="pl-kos">.</span><span class="pl-c1">Hidden</span><span class="pl-kos">]</span> <span class="pl-kos">}</span><span class="pl-kos">)</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">[</span> <span class="pl-s">'Visible'</span><span class="pl-kos">,</span> <span class="pl-c1">0</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span> <span class="pl-s">'Hidden'</span><span class="pl-kos">,</span> <span class="pl-c1">1</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span> <span class="pl-s">'VeryHidden'</span><span class="pl-kos">,</span> <span class="pl-c1">2</span> <span class="pl-kos">]</span> <span class="pl-kos">]</span></pre></div>
|
|
<p>Non-Excel formats do not support the Very Hidden state. The best way to test
|
|
if a sheet is visible is to check if the <code>Hidden</code> property is logical truth:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Workbook</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">x</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-kos">[</span><span class="pl-s1">x</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">,</span> <span class="pl-c1">!</span><span class="pl-s1">x</span><span class="pl-kos">.</span><span class="pl-c1">Hidden</span><span class="pl-kos">]</span> <span class="pl-kos">}</span><span class="pl-kos">)</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">[</span> <span class="pl-s">'Visible'</span><span class="pl-kos">,</span> <span class="pl-c1">true</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span> <span class="pl-s">'Hidden'</span><span class="pl-kos">,</span> <span class="pl-c1">false</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span> <span class="pl-s">'VeryHidden'</span><span class="pl-kos">,</span> <span class="pl-c1">false</span> <span class="pl-kos">]</span> <span class="pl-kos">]</span></pre></div>
|
|
</details>
|
|
<h4>
|
|
<a id="user-content-vba-and-macros" class="anchor" href="#vba-and-macros" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>VBA and Macros</h4>
|
|
<p>VBA Macros are stored in a special data blob that is exposed in the <code>vbaraw</code>
|
|
property of the workbook object when the <code>bookVBA</code> option is <code>true</code>. They are
|
|
supported in <code>XLSM</code>, <code>XLSB</code>, and <code>BIFF8 XLS</code> formats. The supported format
|
|
writers automatically insert the data blobs if it is present in the workbook and
|
|
associate with the worksheet names.</p>
|
|
<details>
|
|
<summary><b>Custom Code Names</b> (click to show)</summary>
|
|
<p>The workbook code name is stored in <code>wb.Workbook.WBProps.CodeName</code>. By default,
|
|
Excel will write <code>ThisWorkbook</code> or a translated phrase like <code>DieseArbeitsmappe</code>.
|
|
Worksheet and Chartsheet code names are in the worksheet properties object at
|
|
<code>wb.Workbook.Sheets[i].CodeName</code>. Macrosheets and Dialogsheets are ignored.</p>
|
|
<p>The readers and writers preserve the code names, but they have to be manually
|
|
set when adding a VBA blob to a different workbook.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Macrosheets</b> (click to show)</summary>
|
|
<p>Older versions of Excel also supported a non-VBA "macrosheet" sheet type that
|
|
stored automation commands. These are exposed in objects with the <code>!type</code>
|
|
property set to <code>"macro"</code>.</p>
|
|
</details>
|
|
<details>
|
|
<summary><b>Detecting macros in workbooks</b> (click to show)</summary>
|
|
<p>The <code>vbaraw</code> field will only be set if macros are present, so testing is simple:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">function</span> <span class="pl-en">wb_has_macro</span><span class="pl-kos">(</span><span class="pl-s1">wb</span><span class="pl-c">/*:workbook*/</span><span class="pl-kos">)</span><span class="pl-c">/*:boolean*/</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-c1">!</span><span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">vbaraw</span><span class="pl-kos">)</span> <span class="pl-k">return</span> <span class="pl-c1">true</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">const</span> <span class="pl-s1">sheets</span> <span class="pl-c1">=</span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">SheetNames</span><span class="pl-kos">.</span><span class="pl-en">map</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">n</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-s1">wb</span><span class="pl-kos">.</span><span class="pl-c1">Sheets</span><span class="pl-kos">[</span><span class="pl-s1">n</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">return</span> <span class="pl-s1">sheets</span><span class="pl-kos">.</span><span class="pl-en">some</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-c1">!</span><span class="pl-c1">!</span><span class="pl-s1">ws</span> <span class="pl-c1">&&</span> <span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'!type'</span><span class="pl-kos">]</span><span class="pl-c1">==</span><span class="pl-s">'macro'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">}</span></pre></div>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-parsing-options" class="anchor" href="#parsing-options" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Parsing Options</h2>
|
|
<p>The exported <code>read</code> and <code>readFile</code> functions accept an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="right">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>type</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">Input data encoding (see Input Type below)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>raw</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, plain text parsing will not parse values **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>codepage</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">If specified, use code page when appropriate **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellFormula</code></td>
|
|
<td align="right">true</td>
|
|
<td align="left">Save formulae to the .f field</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellHTML</code></td>
|
|
<td align="right">true</td>
|
|
<td align="left">Parse rich text and save HTML to the <code>.h</code> field</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellNF</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">Save number format string to the <code>.z</code> field</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellStyles</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">Save style/theme info to the <code>.s</code> field</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellText</code></td>
|
|
<td align="right">true</td>
|
|
<td align="left">Generated formatted text to the <code>.w</code> field</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">If specified, use the string for date code 14 **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetStubs</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">Create cell objects of type <code>z</code> for stub cells</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetRows</code></td>
|
|
<td align="right">0</td>
|
|
<td align="left">If >0, read the first <code>sheetRows</code> rows **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookDeps</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, parse calculation chains</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookFiles</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, add raw files to book object **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookProps</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, only parse enough to get book metadata **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookSheets</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, only parse enough to get the sheet names</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookVBA</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, copy VBA blob to <code>vbaraw</code> field **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>password</code></td>
|
|
<td align="right">""</td>
|
|
<td align="left">If defined and file is encrypted, use password **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>WTF</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, throw errors on unexpected file features **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheets</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">If specified, only parse specified sheets **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>PRN</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, allow parsing of PRN files **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>xlfn</code></td>
|
|
<td align="right">false</td>
|
|
<td align="left">If true, preserve <code>_xlfn.</code> prefixes in formulae **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>FS</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">DSV Field Separator override</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>Even if <code>cellNF</code> is false, formatted text will be generated and saved to <code>.w</code>
|
|
</li>
|
|
<li>In some cases, sheets may be parsed even if <code>bookSheets</code> is false.</li>
|
|
<li>Excel aggressively tries to interpret values from CSV and other plain text.
|
|
This leads to surprising behavior! The <code>raw</code> option suppresses value parsing.</li>
|
|
<li>
|
|
<code>bookSheets</code> and <code>bookProps</code> combine to give both sets of information</li>
|
|
<li>
|
|
<code>Deps</code> will be an empty object if <code>bookDeps</code> is false</li>
|
|
<li>
|
|
<code>bookFiles</code> behavior depends on file type:
|
|
<ul>
|
|
<li>
|
|
<code>keys</code> array (paths in the ZIP) for ZIP-based formats</li>
|
|
<li>
|
|
<code>files</code> hash (mapping paths to objects representing the files) for ZIP</li>
|
|
<li>
|
|
<code>cfb</code> object for formats using CFB containers</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<code>sheetRows-1</code> rows will be generated when looking at the JSON object output
|
|
(since the header row is counted as a row when parsing the data)</li>
|
|
<li>By default all worksheets are parsed. <code>sheets</code> restricts based on input type:
|
|
<ul>
|
|
<li>number: zero-based index of worksheet to parse (<code>0</code> is first worksheet)</li>
|
|
<li>string: name of worksheet to parse (case insensitive)</li>
|
|
<li>array of numbers and strings to select multiple worksheets.</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<code>bookVBA</code> merely exposes the raw VBA CFB object. It does not parse the data.
|
|
XLSM and XLSB store the VBA CFB object in <code>xl/vbaProject.bin</code>. BIFF8 XLS mixes
|
|
the VBA entries alongside the core Workbook entry, so the library generates a
|
|
new XLSB-compatible blob from the XLS CFB container.</li>
|
|
<li>
|
|
<code>codepage</code> is applied to BIFF2 - BIFF5 files without <code>CodePage</code> records and to
|
|
CSV files without BOM in <code>type:"binary"</code>. BIFF8 XLS always defaults to 1200.</li>
|
|
<li>
|
|
<code>PRN</code> affects parsing of text files without a common delimiter character.</li>
|
|
<li>Currently only XOR encryption is supported. Unsupported error will be thrown
|
|
for files employing other encryption methods.</li>
|
|
<li>Newer Excel functions are serialized with the <code>_xlfn.</code> prefix, hidden from the
|
|
user. SheetJS will strip <code>_xlfn.</code> normally. The <code>xlfn</code> option preserves them.</li>
|
|
<li>WTF is mainly for development. By default, the parser will suppress read
|
|
errors on single worksheets, allowing you to read from the worksheets that do
|
|
parse properly. Setting <code>WTF:true</code> forces those errors to be thrown.</li>
|
|
</ul>
|
|
<h3>
|
|
<a id="user-content-input-type" class="anchor" href="#input-type" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Input Type</h3>
|
|
<p>Strings can be interpreted in multiple ways. The <code>type</code> parameter for <code>read</code>
|
|
tells the library how to parse the data argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><code>type</code></th>
|
|
<th>expected input</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>"base64"</code></td>
|
|
<td>string: Base64 encoding of the file</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"binary"</code></td>
|
|
<td>string: binary string (byte <code>n</code> is <code>data.charCodeAt(n)</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"string"</code></td>
|
|
<td>string: JS string (characters interpreted as UTF8)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"buffer"</code></td>
|
|
<td>nodejs Buffer</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"array"</code></td>
|
|
<td>array: array of 8-bit unsigned int (byte <code>n</code> is <code>data[n]</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"file"</code></td>
|
|
<td>string: path of file that will be read (nodejs only)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3>
|
|
<a id="user-content-guessing-file-type" class="anchor" href="#guessing-file-type" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Guessing File Type</h3>
|
|
<details>
|
|
<summary><b>Implementation Details</b> (click to show)</summary>
|
|
<p>Excel and other spreadsheet tools read the first few bytes and apply other
|
|
heuristics to determine a file type. This enables file type punning: renaming
|
|
files with the <code>.xls</code> extension will tell your computer to use Excel to open the
|
|
file but Excel will know how to handle it. This library applies similar logic:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Byte 0</th>
|
|
<th align="left">Raw File Type</th>
|
|
<th align="left">Spreadsheet Types</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>0xD0</code></td>
|
|
<td align="left">CFB Container</td>
|
|
<td align="left">BIFF 5/8 or protected XLSX/XLSB or WQ3/QPW or XLR</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x09</code></td>
|
|
<td align="left">BIFF Stream</td>
|
|
<td align="left">BIFF 2/3/4/5</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x3C</code></td>
|
|
<td align="left">XML/HTML</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x50</code></td>
|
|
<td align="left">ZIP Archive</td>
|
|
<td align="left">XLSB or XLSX/M or ODS or UOS2 or NUMBERS or text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x49</code></td>
|
|
<td align="left">Plain Text</td>
|
|
<td align="left">SYLK or plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x54</code></td>
|
|
<td align="left">Plain Text</td>
|
|
<td align="left">DIF or plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0xEF</code></td>
|
|
<td align="left">UTF8 Encoded</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0xFF</code></td>
|
|
<td align="left">UTF16 Encoded</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x00</code></td>
|
|
<td align="left">Record Stream</td>
|
|
<td align="left">Lotus WK* or Quattro Pro or plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x7B</code></td>
|
|
<td align="left">Plain text</td>
|
|
<td align="left">RTF or plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x0A</code></td>
|
|
<td align="left">Plain text</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x0D</code></td>
|
|
<td align="left">Plain text</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>0x20</code></td>
|
|
<td align="left">Plain text</td>
|
|
<td align="left">SpreadsheetML / Flat ODS / UOS1 / HTML / plain text</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>DBF files are detected based on the first byte as well as the third and fourth
|
|
bytes (corresponding to month and day of the file date)</p>
|
|
<p>Works for Windows files are detected based on the BOF record with type <code>0xFF</code></p>
|
|
<p>Plain text format guessing follows the priority order:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Format</th>
|
|
<th align="left">Test</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">XML</td>
|
|
<td align="left">
|
|
<code><?xml</code> appears in the first 1024 characters</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">HTML</td>
|
|
<td align="left">starts with <code><</code> and HTML tags appear in the first 1024 characters *</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">XML</td>
|
|
<td align="left">starts with <code><</code> and the first tag is valid</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">RTF</td>
|
|
<td align="left">starts with <code>{\rt</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">DSV</td>
|
|
<td align="left">starts with <code>/sep=.$/</code>, separator is the specified character</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">DSV</td>
|
|
<td align="left">more unquoted `</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">DSV</td>
|
|
<td align="left">more unquoted <code>;</code> chars than <code>\t</code> or <code>,</code> in the first 1024</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">TSV</td>
|
|
<td align="left">more unquoted <code>\t</code> chars than <code>,</code> chars in the first 1024</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">CSV</td>
|
|
<td align="left">one of the first 1024 characters is a comma <code>","</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ETH</td>
|
|
<td align="left">starts with <code>socialcalc:version:</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">PRN</td>
|
|
<td align="left">
|
|
<code>PRN</code> option is set to true</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">CSV</td>
|
|
<td align="left">(fallback)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>HTML tags include: <code>html</code>, <code>table</code>, <code>head</code>, <code>meta</code>, <code>script</code>, <code>style</code>, <code>div</code>
|
|
</li>
|
|
</ul>
|
|
</details>
|
|
<details>
|
|
<summary><b>Why are random text files valid?</b> (click to show)</summary>
|
|
<p>Excel is extremely aggressive in reading files. Adding an XLS extension to any
|
|
display text file (where the only characters are ANSI display chars) tricks
|
|
Excel into thinking that the file is potentially a CSV or TSV file, even if it
|
|
is only one column! This library attempts to replicate that behavior.</p>
|
|
<p>The best approach is to validate the desired worksheet and ensure it has the
|
|
expected number of rows or columns. Extracting the range is extremely simple:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">range</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">decode_range</span><span class="pl-kos">(</span><span class="pl-s1">worksheet</span><span class="pl-kos">[</span><span class="pl-s">'!ref'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ncols</span> <span class="pl-c1">=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">e</span><span class="pl-kos">.</span><span class="pl-c1">c</span> <span class="pl-c1">-</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">s</span><span class="pl-kos">.</span><span class="pl-c1">c</span> <span class="pl-c1">+</span> <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-s1">nrows</span> <span class="pl-c1">=</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">e</span><span class="pl-kos">.</span><span class="pl-c1">r</span> <span class="pl-c1">-</span> <span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">s</span><span class="pl-kos">.</span><span class="pl-c1">r</span> <span class="pl-c1">+</span> <span class="pl-c1">1</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-writing-options" class="anchor" href="#writing-options" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Writing Options</h2>
|
|
<p>The exported <code>write</code> and <code>writeFile</code> functions accept an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="right">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>type</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">Output data encoding (see Output Type below)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="right"><code>false</code></td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookSST</code></td>
|
|
<td align="right"><code>false</code></td>
|
|
<td align="left">Generate Shared String Table **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bookType</code></td>
|
|
<td align="right"><code>"xlsx"</code></td>
|
|
<td align="left">Type of Workbook (see below for supported formats)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheet</code></td>
|
|
<td align="right"><code>""</code></td>
|
|
<td align="left">Name of Worksheet for single-sheet formats **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>compression</code></td>
|
|
<td align="right"><code>false</code></td>
|
|
<td align="left">Use ZIP compression for ZIP-based formats **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>Props</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">Override workbook properties when writing **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>themeXLSX</code></td>
|
|
<td align="right"></td>
|
|
<td align="left">Override theme XML when writing XLSX/XLSB/XLSM **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>ignoreEC</code></td>
|
|
<td align="right"><code>true</code></td>
|
|
<td align="left">Suppress "number as text" errors **</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>
|
|
<code>bookSST</code> is slower and more memory intensive, but has better compatibility
|
|
with older versions of iOS Numbers</li>
|
|
<li>The raw data is the only thing guaranteed to be saved. Features not described
|
|
in this README may not be serialized.</li>
|
|
<li>
|
|
<code>cellDates</code> only applies to XLSX output and is not guaranteed to work with
|
|
third-party readers. Excel itself does not usually write cells with type <code>d</code>
|
|
so non-Excel tools may ignore the data or error in the presence of dates.</li>
|
|
<li>
|
|
<code>Props</code> is an object mirroring the workbook <code>Props</code> field. See the table from
|
|
the <a href="#workbook-file-properties">Workbook File Properties</a> section.</li>
|
|
<li>if specified, the string from <code>themeXLSX</code> will be saved as the primary theme
|
|
for XLSX/XLSB/XLSM files (to <code>xl/theme/theme1.xml</code> in the ZIP)</li>
|
|
<li>Due to a bug in the program, some features like "Text to Columns" will crash
|
|
Excel on worksheets where error conditions are ignored. The writer will mark
|
|
files to ignore the error by default. Set <code>ignoreEC</code> to <code>false</code> to suppress.</li>
|
|
</ul>
|
|
<h3>
|
|
<a id="user-content-supported-output-formats" class="anchor" href="#supported-output-formats" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Supported Output Formats</h3>
|
|
<p>For broad compatibility with third-party tools, this library supports many
|
|
output formats. The specific file type is controlled with <code>bookType</code> option:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>bookType</code></th>
|
|
<th align="right">file ext</th>
|
|
<th align="center">container</th>
|
|
<th align="left">sheets</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>xlsx</code></td>
|
|
<td align="right"><code>.xlsx</code></td>
|
|
<td align="center">ZIP</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 2007+ XML Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>xlsm</code></td>
|
|
<td align="right"><code>.xlsm</code></td>
|
|
<td align="center">ZIP</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 2007+ Macro XML Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>xlsb</code></td>
|
|
<td align="right"><code>.xlsb</code></td>
|
|
<td align="center">ZIP</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 2007+ Binary Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>biff8</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">CFB</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 97-2004 Workbook Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>biff5</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">CFB</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 5.0/95 Workbook Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>biff4</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Excel 4.0 Worksheet Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>biff3</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Excel 3.0 Worksheet Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>biff2</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Excel 2.0 Worksheet Format</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>xlml</code></td>
|
|
<td align="right"><code>.xls</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Excel 2003-2004 (SpreadsheetML)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>ods</code></td>
|
|
<td align="right"><code>.ods</code></td>
|
|
<td align="center">ZIP</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">OpenDocument Spreadsheet</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>fods</code></td>
|
|
<td align="right"><code>.fods</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">multi</td>
|
|
<td align="left">Flat OpenDocument Spreadsheet</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>wk3</code></td>
|
|
<td align="right"><code>.wk3</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Lotus Workbook (WK3)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>csv</code></td>
|
|
<td align="right"><code>.csv</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Comma Separated Values</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>txt</code></td>
|
|
<td align="right"><code>.txt</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">UTF-16 Unicode Text (TXT)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sylk</code></td>
|
|
<td align="right"><code>.sylk</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Symbolic Link (SYLK)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>html</code></td>
|
|
<td align="right"><code>.html</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">HTML Document</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dif</code></td>
|
|
<td align="right"><code>.dif</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Data Interchange Format (DIF)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dbf</code></td>
|
|
<td align="right"><code>.dbf</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">dBASE II + VFP Extensions (DBF)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>wk1</code></td>
|
|
<td align="right"><code>.wk1</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Lotus Worksheet (WK1)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>rtf</code></td>
|
|
<td align="right"><code>.rtf</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Rich Text Format (RTF)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>prn</code></td>
|
|
<td align="right"><code>.prn</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Lotus Formatted Text</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>eth</code></td>
|
|
<td align="right"><code>.eth</code></td>
|
|
<td align="center">none</td>
|
|
<td align="left">single</td>
|
|
<td align="left">Ethercalc Record Format (ETH)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>
|
|
<code>compression</code> only applies to formats with ZIP containers.</li>
|
|
<li>Formats that only support a single sheet require a <code>sheet</code> option specifying
|
|
the worksheet. If the string is empty, the first worksheet is used.</li>
|
|
<li>
|
|
<code>writeFile</code> will automatically guess the output file format based on the file
|
|
extension if <code>bookType</code> is not specified. It will choose the first format in
|
|
the aforementioned table that matches the extension.</li>
|
|
</ul>
|
|
<h3>
|
|
<a id="user-content-output-type" class="anchor" href="#output-type" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Output Type</h3>
|
|
<p>The <code>type</code> argument for <code>write</code> mirrors the <code>type</code> argument for <code>read</code>:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><code>type</code></th>
|
|
<th>output</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>"base64"</code></td>
|
|
<td>string: Base64 encoding of the file</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"binary"</code></td>
|
|
<td>string: binary string (byte <code>n</code> is <code>data.charCodeAt(n)</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"string"</code></td>
|
|
<td>string: JS string (characters interpreted as UTF8)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"buffer"</code></td>
|
|
<td>nodejs Buffer</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"array"</code></td>
|
|
<td>ArrayBuffer, fallback array of 8-bit unsigned int</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>"file"</code></td>
|
|
<td>string: path of file that will be created (nodejs only)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2>
|
|
<a id="user-content-utility-functions" class="anchor" href="#utility-functions" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Utility Functions</h2>
|
|
<p>The <code>sheet_to_*</code> functions accept a worksheet and an optional options object.</p>
|
|
<p>The <code>*_to_sheet</code> functions accept a data object and an optional options object.</p>
|
|
<p>The examples are based on the following worksheet:</p>
|
|
<pre><code>XXX| A | B | C | D | E | F | G |
|
|
---+---+---+---+---+---+---+---+
|
|
1 | S | h | e | e | t | J | S |
|
|
2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
|
3 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
|
</code></pre>
|
|
<h3>
|
|
<a id="user-content-array-of-arrays-input" class="anchor" href="#array-of-arrays-input" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Array of Arrays Input</h3>
|
|
<p><code>XLSX.utils.aoa_to_sheet</code> takes an array of arrays of JS values and returns a
|
|
worksheet resembling the input data. Numbers, Booleans and Strings are stored
|
|
as the corresponding styles. Dates are stored as date or numbers. Array holes
|
|
and explicit <code>undefined</code> values are skipped. <code>null</code> values may be stubbed. All
|
|
other values are stored as strings. The function takes an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetStubs</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Create cell objects of type <code>z</code> for <code>null</code> values</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>nullError</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, emit <code>#NULL!</code> error cells for <code>null</code> values</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>To generate the example sheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-s">"SheetJS"</span><span class="pl-kos">.</span><span class="pl-en">split</span><span class="pl-kos">(</span><span class="pl-s">""</span><span class="pl-kos">)</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-c1">2</span><span class="pl-kos">,</span><span class="pl-c1">3</span><span class="pl-kos">,</span><span class="pl-c1">4</span><span class="pl-kos">,</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span><span class="pl-c1">2</span><span class="pl-kos">,</span><span class="pl-c1">3</span><span class="pl-kos">,</span><span class="pl-c1">4</span><span class="pl-kos">,</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">,</span><span class="pl-c1">8</span><span class="pl-kos">]</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<p><code>XLSX.utils.sheet_add_aoa</code> takes an array of arrays of JS values and updates an
|
|
existing worksheet object. It follows the same process as <code>aoa_to_sheet</code> and
|
|
accepts an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetStubs</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Create cell objects of type <code>z</code> for <code>null</code> values</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>nullError</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, emit <code>#NULL!</code> error cells for <code>null</code> values</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>origin</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Use specified cell as starting point (see below)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><code>origin</code> is expected to be one of:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>origin</code></th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">(cell object)</td>
|
|
<td align="left">Use specified cell (cell object)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(string)</td>
|
|
<td align="left">Use specified cell (A1-style cell)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(number >= 0)</td>
|
|
<td align="left">Start from the first column at specified row (0-indexed)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">-1</td>
|
|
<td align="left">Append to bottom of worksheet starting on first column</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(default)</td>
|
|
<td align="left">Start from cell A1</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>Consider the worksheet:</p>
|
|
<pre><code>XXX| A | B | C | D | E | F | G |
|
|
---+---+---+---+---+---+---+---+
|
|
1 | S | h | e | e | t | J | S |
|
|
2 | 1 | 2 | | | 5 | 6 | 7 |
|
|
3 | 2 | 3 | | | 6 | 7 | 8 |
|
|
4 | 3 | 4 | | | 7 | 8 | 9 |
|
|
5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|
|
</code></pre>
|
|
<p>This worksheet can be built up in the order <code>A1:G1, A2:B4, E2:G4, A5:G5</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* Initial row */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">aoa_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span> <span class="pl-s">"SheetJS"</span><span class="pl-kos">.</span><span class="pl-en">split</span><span class="pl-kos">(</span><span class="pl-s">""</span><span class="pl-kos">)</span> <span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Write data starting at A2 */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-c1">2</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">2</span><span class="pl-kos">,</span><span class="pl-c1">3</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">3</span><span class="pl-kos">,</span><span class="pl-c1">4</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>: <span class="pl-s">"A2"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Write data starting at E2 */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">,</span><span class="pl-c1">8</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">7</span><span class="pl-kos">,</span><span class="pl-c1">8</span><span class="pl-kos">,</span><span class="pl-c1">9</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>:<span class="pl-kos">{</span><span class="pl-c1">r</span>:<span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">c</span>:<span class="pl-c1">4</span><span class="pl-kos">}</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Append row */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_aoa</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-c1">4</span><span class="pl-kos">,</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">,</span><span class="pl-c1">8</span><span class="pl-kos">,</span><span class="pl-c1">9</span><span class="pl-kos">,</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>: <span class="pl-c1">-</span><span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-array-of-objects-input" class="anchor" href="#array-of-objects-input" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Array of Objects Input</h3>
|
|
<p><code>XLSX.utils.json_to_sheet</code> takes an array of objects and returns a worksheet
|
|
with automatically-generated "headers" based on the keys of the objects. The
|
|
default column order is determined by the first appearance of the field using
|
|
<code>Object.keys</code>. The function accepts an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>header</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Use specified field order (default <code>Object.keys</code>) **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>skipHeader</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, do not include header row in output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>nullError</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, emit <code>#NULL!</code> error cells for <code>null</code> values</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>All fields from each row will be written. If <code>header</code> is an array and it does
|
|
not contain a particular field, the key will be appended to the array.</li>
|
|
<li>Cell types are deduced from the type of each value. For example, a <code>Date</code>
|
|
object will generate a Date cell, while a string will generate a Text cell.</li>
|
|
<li>Null values will be skipped by default. If <code>nullError</code> is true, an error cell
|
|
corresponding to <code>#NULL!</code> will be written to the worksheet.</li>
|
|
</ul>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>The original sheet cannot be reproduced using plain objects since JS object keys
|
|
must be unique. After replacing the second <code>e</code> and <code>S</code> with <code>e_1</code> and <code>S_1</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">S</span>:<span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">h</span>:<span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">e</span>:<span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">e_1</span>:<span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>:<span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">J</span>:<span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">S_1</span>:<span class="pl-c1">7</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">S</span>:<span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">h</span>:<span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">e</span>:<span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">e_1</span>:<span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>:<span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">J</span>:<span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">S_1</span>:<span class="pl-c1">8</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-kos">[</span><span class="pl-s">"S"</span><span class="pl-kos">,</span><span class="pl-s">"h"</span><span class="pl-kos">,</span><span class="pl-s">"e"</span><span class="pl-kos">,</span><span class="pl-s">"e_1"</span><span class="pl-kos">,</span><span class="pl-s">"t"</span><span class="pl-kos">,</span><span class="pl-s">"J"</span><span class="pl-kos">,</span><span class="pl-s">"S_1"</span><span class="pl-kos">]</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
<p>Alternatively, the header row can be skipped:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>:<span class="pl-s">"S"</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>:<span class="pl-s">"h"</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>:<span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>:<span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>:<span class="pl-s">"t"</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>:<span class="pl-s">"J"</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>:<span class="pl-s">"S"</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-c1">7</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-c1">8</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-kos">[</span><span class="pl-s">"A"</span><span class="pl-kos">,</span><span class="pl-s">"B"</span><span class="pl-kos">,</span><span class="pl-s">"C"</span><span class="pl-kos">,</span><span class="pl-s">"D"</span><span class="pl-kos">,</span><span class="pl-s">"E"</span><span class="pl-kos">,</span><span class="pl-s">"F"</span><span class="pl-kos">,</span><span class="pl-s">"G"</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">skipHeader</span>:<span class="pl-c1">true</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<p><code>XLSX.utils.sheet_add_json</code> takes an array of objects and updates an existing
|
|
worksheet object. It follows the same process as <code>json_to_sheet</code> and accepts
|
|
an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>header</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Use specified column order (default <code>Object.keys</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>skipHeader</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, do not include header row in output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>nullError</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, emit <code>#NULL!</code> error cells for <code>null</code> values</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>origin</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Use specified cell as starting point (see below)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><code>origin</code> is expected to be one of:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>origin</code></th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">(cell object)</td>
|
|
<td align="left">Use specified cell (cell object)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(string)</td>
|
|
<td align="left">Use specified cell (A1-style cell)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(number >= 0)</td>
|
|
<td align="left">Start from the first column at specified row (0-indexed)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">-1</td>
|
|
<td align="left">Append to bottom of worksheet starting on first column</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(default)</td>
|
|
<td align="left">Start from cell A1</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>Consider the worksheet:</p>
|
|
<pre><code>XXX| A | B | C | D | E | F | G |
|
|
---+---+---+---+---+---+---+---+
|
|
1 | S | h | e | e | t | J | S |
|
|
2 | 1 | 2 | | | 5 | 6 | 7 |
|
|
3 | 2 | 3 | | | 6 | 7 | 8 |
|
|
4 | 3 | 4 | | | 7 | 8 | 9 |
|
|
5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|
|
</code></pre>
|
|
<p>This worksheet can be built up in the order <code>A1:G1, A2:B4, E2:G4, A5:G5</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c">/* Initial row */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">json_to_sheet</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-s">"S"</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-s">"h"</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-s">"e"</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">"t"</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-s">"J"</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-s">"S"</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>: <span class="pl-kos">[</span><span class="pl-s">"A"</span><span class="pl-kos">,</span> <span class="pl-s">"B"</span><span class="pl-kos">,</span> <span class="pl-s">"C"</span><span class="pl-kos">,</span> <span class="pl-s">"D"</span><span class="pl-kos">,</span> <span class="pl-s">"E"</span><span class="pl-kos">,</span> <span class="pl-s">"F"</span><span class="pl-kos">,</span> <span class="pl-s">"G"</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">skipHeader</span>: <span class="pl-c1">true</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Write data starting at A2 */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">3</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">4</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">skipHeader</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">origin</span>: <span class="pl-s">"A2"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Write data starting at E2 */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">7</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">8</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">8</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">9</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">skipHeader</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">origin</span>: <span class="pl-kos">{</span> <span class="pl-c1">r</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">c</span>: <span class="pl-c1">4</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">header</span>: <span class="pl-kos">[</span> <span class="pl-s">"A"</span><span class="pl-kos">,</span> <span class="pl-s">"B"</span><span class="pl-kos">,</span> <span class="pl-s">"C"</span> <span class="pl-kos">]</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
|
|
<span class="pl-c">/* Append row */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">[</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-c1">8</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-c1">9</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-c1">0</span> <span class="pl-kos">}</span>
|
|
<span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>: <span class="pl-kos">[</span><span class="pl-s">"A"</span><span class="pl-kos">,</span> <span class="pl-s">"B"</span><span class="pl-kos">,</span> <span class="pl-s">"C"</span><span class="pl-kos">,</span> <span class="pl-s">"D"</span><span class="pl-kos">,</span> <span class="pl-s">"E"</span><span class="pl-kos">,</span> <span class="pl-s">"F"</span><span class="pl-kos">,</span> <span class="pl-s">"G"</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">skipHeader</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">origin</span>: <span class="pl-c1">-</span><span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-html-table-input" class="anchor" href="#html-table-input" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>HTML Table Input</h3>
|
|
<p><code>XLSX.utils.table_to_sheet</code> takes a table DOM element and returns a worksheet
|
|
resembling the input table. Numbers are parsed. All other data will be stored
|
|
as strings.</p>
|
|
<p><code>XLSX.utils.table_to_book</code> produces a minimal workbook based on the worksheet.</p>
|
|
<p>Both functions accept options arguments:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>raw</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">If true, every cell will hold raw strings</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetRows</code></td>
|
|
<td align="center">0</td>
|
|
<td align="left">If >0, read the first <code>sheetRows</code> rows of the table</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>display</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, hidden rows and cells will not be parsed</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>To generate the example sheet, start with the HTML table:</p>
|
|
<div class="highlight highlight-text-html-basic"><pre><span class="pl-kos"><</span><span class="pl-ent">table</span> <span class="pl-c1">id</span>="<span class="pl-s">sheetjs</span>"<span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">tr</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>S<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>h<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>e<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>e<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>t<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>J<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>S<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">tr</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">tr</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>1<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>2<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>3<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>4<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>5<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>6<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>7<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">tr</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"><</span><span class="pl-ent">tr</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>2<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>3<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>4<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>5<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>6<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>7<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"><</span><span class="pl-ent">td</span><span class="pl-kos">></span>8<span class="pl-kos"></</span><span class="pl-ent">td</span><span class="pl-kos">></span><span class="pl-kos"></</span><span class="pl-ent">tr</span><span class="pl-kos">></span>
|
|
<span class="pl-kos"></</span><span class="pl-ent">table</span><span class="pl-kos">></span></pre></div>
|
|
<p>To process the table:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">var</span> <span class="pl-s1">tbl</span> <span class="pl-c1">=</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">'sheetjs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">wb</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_book</span><span class="pl-kos">(</span><span class="pl-s1">tbl</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<p>Note: <code>XLSX.read</code> can handle HTML represented as strings.</p>
|
|
<p><code>XLSX.utils.sheet_add_dom</code> takes a table DOM element and updates an existing
|
|
worksheet object. It follows the same process as <code>table_to_sheet</code> and accepts
|
|
an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>raw</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">If true, every cell will hold raw strings</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>cellDates</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Store dates as type <code>d</code> (default is <code>n</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>sheetRows</code></td>
|
|
<td align="center">0</td>
|
|
<td align="left">If >0, read the first <code>sheetRows</code> rows of the table</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>display</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, hidden rows and cells will not be parsed</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><code>origin</code> is expected to be one of:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>origin</code></th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">(cell object)</td>
|
|
<td align="left">Use specified cell (cell object)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(string)</td>
|
|
<td align="left">Use specified cell (A1-style cell)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(number >= 0)</td>
|
|
<td align="left">Start from the first column at specified row (0-indexed)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">-1</td>
|
|
<td align="left">Append to bottom of worksheet starting on first column</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(default)</td>
|
|
<td align="left">Start from cell A1</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>A small helper function can create gap rows between tables:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-k">function</span> <span class="pl-en">create_gap_rows</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-s1">nrows</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ref</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">decode_range</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">"!ref"</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// get original range</span>
|
|
<span class="pl-s1">ref</span><span class="pl-kos">.</span><span class="pl-c1">e</span><span class="pl-kos">.</span><span class="pl-c1">r</span> <span class="pl-c1">+=</span> <span class="pl-s1">nrows</span><span class="pl-kos">;</span> <span class="pl-c">// add to ending row</span>
|
|
<span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">"!ref"</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">encode_range</span><span class="pl-kos">(</span><span class="pl-s1">ref</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// reassign row</span>
|
|
<span class="pl-kos">}</span>
|
|
|
|
<span class="pl-c">/* first table */</span>
|
|
<span class="pl-k">var</span> <span class="pl-s1">ws</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">table_to_sheet</span><span class="pl-kos">(</span><span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">'table1'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-en">create_gap_rows</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// one row gap after first table</span>
|
|
|
|
<span class="pl-c">/* second table */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_dom</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">'table2'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>: <span class="pl-c1">-</span><span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-en">create_gap_rows</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-c1">3</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// three rows gap after second table</span>
|
|
|
|
<span class="pl-c">/* third table */</span>
|
|
<span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_add_dom</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">getElementById</span><span class="pl-kos">(</span><span class="pl-s">'table3'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">origin</span>: <span class="pl-c1">-</span><span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-formulae-output" class="anchor" href="#formulae-output" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Formulae Output</h3>
|
|
<p><code>XLSX.utils.sheet_to_formulae</code> generates an array of commands that represent
|
|
how a person would enter data into an application. Each entry is of the form
|
|
<code>A1-cell-address=formula-or-value</code>. String literals are prefixed with a <code>'</code> in
|
|
accordance with Excel.</p>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>For the example sheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-k">var</span> <span class="pl-s1">o</span> <span class="pl-c1">=</span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_formulae</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c1">></span> <span class="pl-kos">[</span><span class="pl-s1">o</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-s1">o</span><span class="pl-kos">[</span><span class="pl-c1">5</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-s1">o</span><span class="pl-kos">[</span><span class="pl-c1">10</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-s1">o</span><span class="pl-kos">[</span><span class="pl-c1">15</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-s1">o</span><span class="pl-kos">[</span><span class="pl-c1">20</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">'A1=\'S'</span><span class="pl-kos">,</span> <span class="pl-s">'F1=\'J'</span><span class="pl-kos">,</span> <span class="pl-s">'D2=4'</span><span class="pl-kos">,</span> <span class="pl-s">'B3=3'</span><span class="pl-kos">,</span> <span class="pl-s">'G3=8'</span> <span class="pl-kos">]</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-delimiter-separated-output" class="anchor" href="#delimiter-separated-output" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Delimiter-Separated Output</h3>
|
|
<p>As an alternative to the <code>writeFile</code> CSV type, <code>XLSX.utils.sheet_to_csv</code> also
|
|
produces CSV output. The function takes an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>FS</code></td>
|
|
<td align="center"><code>","</code></td>
|
|
<td align="left">"Field Separator" delimiter between fields</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>RS</code></td>
|
|
<td align="center"><code>"\n"</code></td>
|
|
<td align="left">"Record Separator" delimiter between rows</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>strip</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Remove trailing field separators in each record **</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>blankrows</code></td>
|
|
<td align="center">true</td>
|
|
<td align="left">Include blank lines in the CSV output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>skipHidden</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Skips hidden rows/columns in the CSV output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>forceQuotes</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">Force quotes around fields</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>
|
|
<code>strip</code> will remove trailing commas from each line under default <code>FS/RS</code>
|
|
</li>
|
|
<li>
|
|
<code>blankrows</code> must be set to <code>false</code> to skip blank lines.</li>
|
|
<li>Fields containing the record or field separator will automatically be wrapped
|
|
in double quotes; <code>forceQuotes</code> forces all cells to be wrapped in quotes.</li>
|
|
</ul>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>For the example sheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_csv</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-v">S</span><span class="pl-kos">,</span><span class="pl-s1">h</span><span class="pl-kos">,</span><span class="pl-s1">e</span><span class="pl-kos">,</span><span class="pl-s1">e</span><span class="pl-kos">,</span><span class="pl-s1">t</span><span class="pl-kos">,</span><span class="pl-v">J</span><span class="pl-kos">,</span><span class="pl-v">S</span>
|
|
<span class="pl-c1">1</span><span class="pl-kos">,</span><span class="pl-c1">2</span><span class="pl-kos">,</span><span class="pl-c1">3</span><span class="pl-kos">,</span><span class="pl-c1">4</span><span class="pl-kos">,</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span>
|
|
<span class="pl-c1">2</span><span class="pl-kos">,</span><span class="pl-c1">3</span><span class="pl-kos">,</span><span class="pl-c1">4</span><span class="pl-kos">,</span><span class="pl-c1">5</span><span class="pl-kos">,</span><span class="pl-c1">6</span><span class="pl-kos">,</span><span class="pl-c1">7</span><span class="pl-kos">,</span><span class="pl-c1">8</span>
|
|
<span class="pl-c1">></span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_csv</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">FS</span>:<span class="pl-s">"\t"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-v">S</span> <span class="pl-s1">h</span> <span class="pl-s1">e</span> <span class="pl-s1">e</span> <span class="pl-s1">t</span> <span class="pl-v">J</span> <span class="pl-v">S</span>
|
|
<span class="pl-c1">1</span> <span class="pl-c1">2</span> <span class="pl-c1">3</span> <span class="pl-c1">4</span> <span class="pl-c1">5</span> <span class="pl-c1">6</span> <span class="pl-c1">7</span>
|
|
<span class="pl-c1">2</span> <span class="pl-c1">3</span> <span class="pl-c1">4</span> <span class="pl-c1">5</span> <span class="pl-c1">6</span> <span class="pl-c1">7</span> <span class="pl-c1">8</span>
|
|
<span class="pl-c1">></span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_csv</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span><span class="pl-kos">{</span><span class="pl-c1">FS</span>:<span class="pl-s">":"</span><span class="pl-kos">,</span><span class="pl-c1">RS</span>:<span class="pl-s">"|"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-v">S</span>:<span class="pl-s1">h</span>:<span class="pl-s1">e</span>:<span class="pl-s1">e</span>:<span class="pl-s1">t</span>:<span class="pl-v">J</span>:<span class="pl-v">S</span><span class="pl-c1">|</span><span class="pl-c1">1</span>:<span class="pl-c1">2</span>:<span class="pl-c1">3</span>:<span class="pl-c1">4</span>:<span class="pl-c1">5</span>:<span class="pl-c1">6</span>:<span class="pl-c1">7</span><span class="pl-c1">|</span><span class="pl-c1">2</span>:<span class="pl-c1">3</span>:<span class="pl-c1">4</span>:<span class="pl-c1">5</span>:<span class="pl-c1">6</span>:<span class="pl-c1">7</span>:<span class="pl-c1">8</span><span class="pl-c1">|</span></pre></div>
|
|
</details>
|
|
<h4>
|
|
<a id="user-content-utf-16-unicode-text" class="anchor" href="#utf-16-unicode-text" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>UTF-16 Unicode Text</h4>
|
|
<p>The <code>txt</code> output type uses the tab character as the field separator. If the
|
|
<code>codepage</code> library is available (included in full distribution but not core),
|
|
the output will be encoded in <code>CP1200</code> and the BOM will be prepended.</p>
|
|
<p><code>XLSX.utils.sheet_to_txt</code> takes the same arguments as <code>sheet_to_csv</code>.</p>
|
|
<h3>
|
|
<a id="user-content-html-output" class="anchor" href="#html-output" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>HTML Output</h3>
|
|
<p>As an alternative to the <code>writeFile</code> HTML type, <code>XLSX.utils.sheet_to_html</code> also
|
|
produces HTML output. The function takes an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>id</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Specify the <code>id</code> attribute for the <code>TABLE</code> element</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>editable</code></td>
|
|
<td align="center">false</td>
|
|
<td align="left">If true, set <code>contenteditable="true"</code> for every TD</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>header</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Override header (default <code>html body</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>footer</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Override footer (default <code>/body /html</code>)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>For the example sheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_html</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-c">// ...</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-json" class="anchor" href="#json" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>JSON</h3>
|
|
<p><code>XLSX.utils.sheet_to_json</code> generates different types of JS objects. The function
|
|
takes an options argument:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Option Name</th>
|
|
<th align="center">Default</th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>raw</code></td>
|
|
<td align="center"><code>true</code></td>
|
|
<td align="left">Use raw values (true) or formatted strings (false)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>range</code></td>
|
|
<td align="center">from WS</td>
|
|
<td align="left">Override Range (see table below)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>header</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Control output format (see table below)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dateNF</code></td>
|
|
<td align="center">FMT 14</td>
|
|
<td align="left">Use specified date format in string output</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>defval</code></td>
|
|
<td align="center"></td>
|
|
<td align="left">Use specified value in place of null or undefined</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>blankrows</code></td>
|
|
<td align="center">**</td>
|
|
<td align="left">Include blank lines in the output **</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<ul>
|
|
<li>
|
|
<code>raw</code> only affects cells which have a format code (<code>.z</code>) field or a formatted
|
|
text (<code>.w</code>) field.</li>
|
|
<li>If <code>header</code> is specified, the first row is considered a data row; if <code>header</code>
|
|
is not specified, the first row is the header row and not considered data.</li>
|
|
<li>When <code>header</code> is not specified, the conversion will automatically disambiguate
|
|
header entries by affixing <code>_</code> and a count starting at <code>1</code>. For example, if
|
|
three columns have header <code>foo</code> the output fields are <code>foo</code>, <code>foo_1</code>, <code>foo_2</code>
|
|
</li>
|
|
<li>
|
|
<code>null</code> values are returned when <code>raw</code> is true but are skipped when false.</li>
|
|
<li>If <code>defval</code> is not specified, null and undefined values are skipped normally.
|
|
If specified, all null and undefined points will be filled with <code>defval</code>
|
|
</li>
|
|
<li>When <code>header</code> is <code>1</code>, the default is to generate blank rows. <code>blankrows</code> must
|
|
be set to <code>false</code> to skip blank rows.</li>
|
|
<li>When <code>header</code> is not <code>1</code>, the default is to skip blank rows. <code>blankrows</code> must
|
|
be true to generate blank rows</li>
|
|
</ul>
|
|
<p><code>range</code> is expected to be one of:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>range</code></th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">(number)</td>
|
|
<td align="left">Use worksheet range but set starting row to the value</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(string)</td>
|
|
<td align="left">Use specified range (A1-style bounded range string)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(default)</td>
|
|
<td align="left">Use worksheet range (<code>ws['!ref']</code>)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><code>header</code> is expected to be one of:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left"><code>header</code></th>
|
|
<th align="left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>1</code></td>
|
|
<td align="left">Generate an array of arrays ("2D Array")</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>"A"</code></td>
|
|
<td align="left">Row object keys are literal column labels</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">array of strings</td>
|
|
<td align="left">Use specified strings as keys in row objects</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">(default)</td>
|
|
<td align="left">Read and disambiguate first row as keys</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>If header is not <code>1</code>, the row object will contain the non-enumerable property
|
|
<code>__rowNum__</code> that represents the row of the sheet corresponding to the entry.</p>
|
|
<details>
|
|
<summary><b>Examples</b> (click to show)</summary>
|
|
<p>For the example sheet:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">S</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">h</span>: <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">e</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">e_1</span>: <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">J</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">S_1</span>: <span class="pl-c1">7</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">S</span>: <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">h</span>: <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">e</span>: <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">e_1</span>: <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">t</span>: <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">J</span>: <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">S_1</span>: <span class="pl-c1">8</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span>
|
|
|
|
<span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-s">"A"</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-s">'h'</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'t'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-s">'J'</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-s">'S'</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-s">'1'</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-s">'7'</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-c1">A</span>: <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-c1">B</span>: <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-c1">C</span>: <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-c1">D</span>: <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-c1">F</span>: <span class="pl-s">'7'</span><span class="pl-kos">,</span> <span class="pl-c1">G</span>: <span class="pl-s">'8'</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span>
|
|
|
|
<span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-kos">[</span><span class="pl-s">"A"</span><span class="pl-kos">,</span><span class="pl-s">"E"</span><span class="pl-kos">,</span><span class="pl-s">"I"</span><span class="pl-kos">,</span><span class="pl-s">"O"</span><span class="pl-kos">,</span><span class="pl-s">"U"</span><span class="pl-kos">,</span><span class="pl-s">"6"</span><span class="pl-kos">,</span><span class="pl-s">"9"</span><span class="pl-kos">]</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-s">'6'</span>: <span class="pl-s">'J'</span><span class="pl-kos">,</span> <span class="pl-s">'9'</span>: <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-c1">A</span>: <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'h'</span><span class="pl-kos">,</span> <span class="pl-c1">I</span>: <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-c1">O</span>: <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-c1">U</span>: <span class="pl-s">'t'</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-s">'6'</span>: <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-s">'9'</span>: <span class="pl-s">'7'</span><span class="pl-kos">,</span> <span class="pl-c1">A</span>: <span class="pl-s">'1'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-c1">I</span>: <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-c1">O</span>: <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-c1">U</span>: <span class="pl-s">'5'</span> <span class="pl-kos">}</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">{</span> <span class="pl-s">'6'</span>: <span class="pl-s">'7'</span><span class="pl-kos">,</span> <span class="pl-s">'9'</span>: <span class="pl-s">'8'</span><span class="pl-kos">,</span> <span class="pl-c1">A</span>: <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-c1">E</span>: <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-c1">I</span>: <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-c1">O</span>: <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-c1">U</span>: <span class="pl-s">'6'</span> <span class="pl-kos">}</span> <span class="pl-kos">]</span>
|
|
|
|
<span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">[</span> <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-s">'h'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'t'</span><span class="pl-kos">,</span> <span class="pl-s">'J'</span><span class="pl-kos">,</span> <span class="pl-s">'S'</span> <span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">'1'</span><span class="pl-kos">,</span> <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-s">'7'</span> <span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-s">'7'</span><span class="pl-kos">,</span> <span class="pl-s">'8'</span> <span class="pl-kos">]</span> <span class="pl-kos">]</span></pre></div>
|
|
<p>Example showing the effect of <code>raw</code>:</p>
|
|
<div class="highlight highlight-source-js"><pre><span class="pl-c1">></span> <span class="pl-s1">ws</span><span class="pl-kos">[</span><span class="pl-s">'A2'</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">w</span> <span class="pl-c1">=</span> <span class="pl-s">"3"</span><span class="pl-kos">;</span> <span class="pl-c">// set A2 formatted string value</span>
|
|
|
|
<span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">raw</span>:<span class="pl-c1">false</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">[</span> <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-s">'h'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'t'</span><span class="pl-kos">,</span> <span class="pl-s">'J'</span><span class="pl-kos">,</span> <span class="pl-s">'S'</span> <span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-s">'7'</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// <-- A2 uses the formatted string</span>
|
|
<span class="pl-kos">[</span> <span class="pl-s">'2'</span><span class="pl-kos">,</span> <span class="pl-s">'3'</span><span class="pl-kos">,</span> <span class="pl-s">'4'</span><span class="pl-kos">,</span> <span class="pl-s">'5'</span><span class="pl-kos">,</span> <span class="pl-s">'6'</span><span class="pl-kos">,</span> <span class="pl-s">'7'</span><span class="pl-kos">,</span> <span class="pl-s">'8'</span> <span class="pl-kos">]</span> <span class="pl-kos">]</span>
|
|
|
|
<span class="pl-c1">></span> <span class="pl-c1">XLSX</span><span class="pl-kos">.</span><span class="pl-c1">utils</span><span class="pl-kos">.</span><span class="pl-en">sheet_to_json</span><span class="pl-kos">(</span><span class="pl-s1">ws</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">header</span>:<span class="pl-c1">1</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
|
|
<span class="pl-kos">[</span> <span class="pl-kos">[</span> <span class="pl-s">'S'</span><span class="pl-kos">,</span> <span class="pl-s">'h'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'e'</span><span class="pl-kos">,</span> <span class="pl-s">'t'</span><span class="pl-kos">,</span> <span class="pl-s">'J'</span><span class="pl-kos">,</span> <span class="pl-s">'S'</span> <span class="pl-kos">]</span><span class="pl-kos">,</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">7</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c">// <-- A2 uses the raw value</span>
|
|
<span class="pl-kos">[</span> <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">4</span><span class="pl-kos">,</span> <span class="pl-c1">5</span><span class="pl-kos">,</span> <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">7</span><span class="pl-kos">,</span> <span class="pl-c1">8</span> <span class="pl-kos">]</span> <span class="pl-kos">]</span></pre></div>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-file-formats" class="anchor" href="#file-formats" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>File Formats</h2>
|
|
<p>Despite the library name <code>xlsx</code>, it supports numerous spreadsheet file formats:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Format</th>
|
|
<th align="center">Read</th>
|
|
<th align="center">Write</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><strong>Excel Worksheet/Workbook Formats</strong></td>
|
|
<td align="center">:-----:</td>
|
|
<td align="center">:-----:</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2007+ XML Formats (XLSX/XLSM)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2007+ Binary Format (XLSB BIFF12)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2003-2004 XML Format (XML "SpreadsheetML")</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 97-2004 (XLS BIFF8)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 5.0/95 (XLS BIFF5)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 4.0 (XLS/XLW BIFF4)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 3.0 (XLS BIFF3)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2.0/2.1 (XLS BIFF2)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><strong>Excel Supported Text Formats</strong></td>
|
|
<td align="center">:-----:</td>
|
|
<td align="center">:-----:</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Delimiter-Separated Values (CSV/TXT)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Data Interchange Format (DIF)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Symbolic Link (SYLK/SLK)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus Formatted Text (PRN)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">UTF-16 Unicode Text (TXT)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><strong>Other Workbook/Worksheet Formats</strong></td>
|
|
<td align="center">:-----:</td>
|
|
<td align="center">:-----:</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Numbers 3.0+ / iWork 2013+ Spreadsheet (NUMBERS)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">OpenDocument Spreadsheet (ODS)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Flat XML ODF Spreadsheet (FODS)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Uniform Office Format Spreadsheet (标文通 UOS1/UOS2)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">dBASE II/III/IV / Visual FoxPro (DBF)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus 1-2-3 (WK1/WK3)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus 1-2-3 (WKS/WK2/WK4/123)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Quattro Pro Spreadsheet (WQ1/WQ2/WB1/WB2/WB3/QPW)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Works 1.x-3.x DOS / 2.x-5.x Windows Spreadsheet (WKS)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Works 6.x-9.x Spreadsheet (XLR)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><strong>Other Common Spreadsheet Output Formats</strong></td>
|
|
<td align="center">:-----:</td>
|
|
<td align="center">:-----:</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">HTML Tables</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Rich Text Format tables (RTF)</td>
|
|
<td align="center"></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Ethercalc Record Format (ETH)</td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
<td align="center"><g-emoji class="g-emoji" alias="heavy_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2714.png">✔</g-emoji></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Features not supported by a given file format will not be written. Formats with
|
|
range limits will be silently truncated:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">Format</th>
|
|
<th align="left">Last Cell</th>
|
|
<th align="right">Max Cols</th>
|
|
<th align="right">Max Rows</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left">Excel 2007+ XML Formats (XLSX/XLSM)</td>
|
|
<td align="left">XFD1048576</td>
|
|
<td align="right">16384</td>
|
|
<td align="right">1048576</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2007+ Binary Format (XLSB BIFF12)</td>
|
|
<td align="left">XFD1048576</td>
|
|
<td align="right">16384</td>
|
|
<td align="right">1048576</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 97-2004 (XLS BIFF8)</td>
|
|
<td align="left">IV65536</td>
|
|
<td align="right">256</td>
|
|
<td align="right">65536</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 5.0/95 (XLS BIFF5)</td>
|
|
<td align="left">IV16384</td>
|
|
<td align="right">256</td>
|
|
<td align="right">16384</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 4.0 (XLS BIFF4)</td>
|
|
<td align="left">IV16384</td>
|
|
<td align="right">256</td>
|
|
<td align="right">16384</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 3.0 (XLS BIFF3)</td>
|
|
<td align="left">IV16384</td>
|
|
<td align="right">256</td>
|
|
<td align="right">16384</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Excel 2.0/2.1 (XLS BIFF2)</td>
|
|
<td align="left">IV16384</td>
|
|
<td align="right">256</td>
|
|
<td align="right">16384</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus 1-2-3 R2 - R5 (WK1/WK3/WK4)</td>
|
|
<td align="left">IV8192</td>
|
|
<td align="right">256</td>
|
|
<td align="right">8192</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">Lotus 1-2-3 R1 (WKS)</td>
|
|
<td align="left">IV2048</td>
|
|
<td align="right">256</td>
|
|
<td align="right">2048</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Excel 2003 SpreadsheetML range limits are governed by the version of Excel and
|
|
are not enforced by the writer.</p>
|
|
<details>
|
|
<summary><b>File Format Details</b> (click to show)</summary>
|
|
<p><strong>Core Spreadsheet Formats</strong></p>
|
|
<ul>
|
|
<li><strong>Excel 2007+ XML (XLSX/XLSM)</strong></li>
|
|
</ul>
|
|
<p>XLSX and XLSM files are ZIP containers containing a series of XML files in
|
|
accordance with the Open Packaging Conventions (OPC). The XLSM format, almost
|
|
identical to XLSX, is used for files containing macros.</p>
|
|
<p>The format is standardized in ECMA-376 and later in ISO/IEC 29500. Excel does
|
|
not follow the specification, and there are additional documents discussing how
|
|
Excel deviates from the specification.</p>
|
|
<ul>
|
|
<li><strong>Excel 2.0-95 (BIFF2/BIFF3/BIFF4/BIFF5)</strong></li>
|
|
</ul>
|
|
<p>BIFF 2/3 XLS are single-sheet streams of binary records. Excel 4 introduced
|
|
the concept of a workbook (<code>XLW</code> files) but also had single-sheet <code>XLS</code> format.
|
|
The structure is largely similar to the Lotus 1-2-3 file formats. BIFF5/8/12
|
|
extended the format in various ways but largely stuck to the same record format.</p>
|
|
<p>There is no official specification for any of these formats. Excel 95 can write
|
|
files in these formats, so record lengths and fields were determined by writing
|
|
in all of the supported formats and comparing files. Excel 2016 can generate
|
|
BIFF5 files, enabling a full suite of file tests starting from XLSX or BIFF2.</p>
|
|
<ul>
|
|
<li><strong>Excel 97-2004 Binary (BIFF8)</strong></li>
|
|
</ul>
|
|
<p>BIFF8 exclusively uses the Compound File Binary container format, splitting some
|
|
content into streams within the file. At its core, it still uses an extended
|
|
version of the binary record format from older versions of BIFF.</p>
|
|
<p>The <code>MS-XLS</code> specification covers the basics of the file format, and other
|
|
specifications expand on serialization of features like properties.</p>
|
|
<ul>
|
|
<li><strong>Excel 2003-2004 (SpreadsheetML)</strong></li>
|
|
</ul>
|
|
<p>Predating XLSX, SpreadsheetML files are simple XML files. There is no official
|
|
and comprehensive specification, although MS has released documentation on the
|
|
format. Since Excel 2016 can generate SpreadsheetML files, mapping features is
|
|
pretty straightforward.</p>
|
|
<ul>
|
|
<li><strong>Excel 2007+ Binary (XLSB, BIFF12)</strong></li>
|
|
</ul>
|
|
<p>Introduced in parallel with XLSX, the XLSB format combines the BIFF architecture
|
|
with the content separation and ZIP container of XLSX. For the most part nodes
|
|
in an XLSX sub-file can be mapped to XLSB records in a corresponding sub-file.</p>
|
|
<p>The <code>MS-XLSB</code> specification covers the basics of the file format, and other
|
|
specifications expand on serialization of features like properties.</p>
|
|
<ul>
|
|
<li><strong>Delimiter-Separated Values (CSV/TXT)</strong></li>
|
|
</ul>
|
|
<p>Excel CSV deviates from RFC4180 in a number of important ways. The generated
|
|
CSV files should generally work in Excel although they may not work in RFC4180
|
|
compatible readers. The parser should generally understand Excel CSV. The
|
|
writer proactively generates cells for formulae if values are unavailable.</p>
|
|
<p>Excel TXT uses tab as the delimiter and code page 1200.</p>
|
|
<p>Like in Excel, files starting with <code>0x49 0x44 ("ID")</code> are treated as Symbolic
|
|
Link files. Unlike Excel, if the file does not have a valid SYLK header, it
|
|
will be proactively reinterpreted as CSV. There are some files with semicolon
|
|
delimiter that align with a valid SYLK file. For the broadest compatibility,
|
|
all cells with the value of <code>ID</code> are automatically wrapped in double-quotes.</p>
|
|
<p><strong>Miscellaneous Workbook Formats</strong></p>
|
|
<p>Support for other formats is generally far behind XLS/XLSB/XLSX support, due in
|
|
part to a lack of publicly available documentation. Test files were produced in
|
|
the respective apps and compared to their XLS exports to determine structure.
|
|
The main focus is data extraction.</p>
|
|
<ul>
|
|
<li><strong>Lotus 1-2-3 (WKS/WK1/WK2/WK3/WK4/123)</strong></li>
|
|
</ul>
|
|
<p>The Lotus formats consist of binary records similar to the BIFF structure. Lotus
|
|
did release a specification decades ago covering the original WK1 format. Other
|
|
features were deduced by producing files and comparing to Excel support.</p>
|
|
<p>Generated WK1 worksheets are compatible with Lotus 1-2-3 R2 and Excel 5.0.</p>
|
|
<p>Generated WK3 workbooks are compatible with Lotus 1-2-3 R9 and Excel 5.0.</p>
|
|
<ul>
|
|
<li><strong>Quattro Pro (WQ1/WQ2/WB1/WB2/WB3/QPW)</strong></li>
|
|
</ul>
|
|
<p>The Quattro Pro formats use binary records in the same way as BIFF and Lotus.
|
|
Some of the newer formats (namely WB3 and QPW) use a CFB enclosure just like
|
|
BIFF8 XLS.</p>
|
|
<ul>
|
|
<li><strong>Works for DOS / Windows Spreadsheet (WKS/XLR)</strong></li>
|
|
</ul>
|
|
<p>All versions of Works were limited to a single worksheet.</p>
|
|
<p>Works for DOS 1.x - 3.x and Works for Windows 2.x extends the Lotus WKS format
|
|
with additional record types.</p>
|
|
<p>Works for Windows 3.x - 5.x uses the same format and WKS extension. The BOF
|
|
record has type <code>FF</code></p>
|
|
<p>Works for Windows 6.x - 9.x use the XLR format. XLR is nearly identical to
|
|
BIFF8 XLS: it uses the CFB container with a Workbook stream. Works 9 saves the
|
|
exact Workbook stream for the XLR and the 97-2003 XLS export. Works 6 XLS
|
|
includes two empty worksheets but the main worksheet has an identical encoding.
|
|
XLR also includes a <code>WksSSWorkBook</code> stream similar to Lotus FM3/FMT files.</p>
|
|
<ul>
|
|
<li><strong>Numbers 3.0+ / iWork 2013+ Spreadsheet (NUMBERS)</strong></li>
|
|
</ul>
|
|
<p>iWork 2013 (Numbers 3.0 / Pages 5.0 / Keynote 6.0) switched from a proprietary
|
|
XML-based format to the current file format based on the iWork Archive (IWA).
|
|
This format has been used up through the current release (Numbers 11.2).</p>
|
|
<p>The parser focuses on extracting raw data from tables. Numbers technically
|
|
supports multiple tables in a logical worksheet, including custom titles. This
|
|
parser will generate one worksheet per Numbers table.</p>
|
|
<ul>
|
|
<li><strong>OpenDocument Spreadsheet (ODS/FODS)</strong></li>
|
|
</ul>
|
|
<p>ODS is an XML-in-ZIP format akin to XLSX while FODS is an XML format akin to
|
|
SpreadsheetML. Both are detailed in the OASIS standard, but tools like LO/OO
|
|
add undocumented extensions. The parsers and writers do not implement the full
|
|
standard, instead focusing on parts necessary to extract and store raw data.</p>
|
|
<ul>
|
|
<li><strong>Uniform Office Spreadsheet (UOS1/2)</strong></li>
|
|
</ul>
|
|
<p>UOS is a very similar format, and it comes in 2 varieties corresponding to ODS
|
|
and FODS respectively. For the most part, the difference between the formats
|
|
is in the names of tags and attributes.</p>
|
|
<p><strong>Miscellaneous Worksheet Formats</strong></p>
|
|
<p>Many older formats supported only one worksheet:</p>
|
|
<ul>
|
|
<li><strong>dBASE and Visual FoxPro (DBF)</strong></li>
|
|
</ul>
|
|
<p>DBF is really a typed table format: each column can only hold one data type and
|
|
each record omits type information. The parser generates a header row and
|
|
inserts records starting at the second row of the worksheet. The writer makes
|
|
files compatible with Visual FoxPro extensions.</p>
|
|
<p>Multi-file extensions like external memos and tables are currently unsupported,
|
|
limited by the general ability to read arbitrary files in the web browser. The
|
|
reader understands DBF Level 7 extensions like DATETIME.</p>
|
|
<ul>
|
|
<li><strong>Symbolic Link (SYLK)</strong></li>
|
|
</ul>
|
|
<p>There is no real documentation. All knowledge was gathered by saving files in
|
|
various versions of Excel to deduce the meaning of fields. Notes:</p>
|
|
<ul>
|
|
<li>
|
|
<p>Plain formulae are stored in the RC form.</p>
|
|
</li>
|
|
<li>
|
|
<p>Column widths are rounded to integral characters.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Lotus Formatted Text (PRN)</strong></p>
|
|
</li>
|
|
</ul>
|
|
<p>There is no real documentation, and in fact Excel treats PRN as an output-only
|
|
file format. Nevertheless we can guess the column widths and reverse-engineer
|
|
the original layout. Excel's 240 character width limitation is not enforced.</p>
|
|
<ul>
|
|
<li><strong>Data Interchange Format (DIF)</strong></li>
|
|
</ul>
|
|
<p>There is no unified definition. Visicalc DIF differs from Lotus DIF, and both
|
|
differ from Excel DIF. Where ambiguous, the parser/writer follows the expected
|
|
behavior from Excel. In particular, Excel extends DIF in incompatible ways:</p>
|
|
<ul>
|
|
<li>
|
|
<p>Since Excel automatically converts numbers-as-strings to numbers, numeric
|
|
string constants are converted to formulae: <code>"0.3" -> "=""0.3""</code></p>
|
|
</li>
|
|
<li>
|
|
<p>DIF technically expects numeric cells to hold the raw numeric data, but Excel
|
|
permits formatted numbers (including dates)</p>
|
|
</li>
|
|
<li>
|
|
<p>DIF technically has no support for formulae, but Excel will automatically
|
|
convert plain formulae. Array formulae are not preserved.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>HTML</strong></p>
|
|
</li>
|
|
</ul>
|
|
<p>Excel HTML worksheets include special metadata encoded in styles. For example,
|
|
<code>mso-number-format</code> is a localized string containing the number format. Despite
|
|
the metadata the output is valid HTML, although it does accept bare <code>&</code> symbols.</p>
|
|
<p>The writer adds type metadata to the TD elements via the <code>t</code> tag. The parser
|
|
looks for those tags and overrides the default interpretation. For example, text
|
|
like <code><td>12345</td></code> will be parsed as numbers but <code><td t="s">12345</td></code> will
|
|
be parsed as text.</p>
|
|
<ul>
|
|
<li><strong>Rich Text Format (RTF)</strong></li>
|
|
</ul>
|
|
<p>Excel RTF worksheets are stored in clipboard when copying cells or ranges from a
|
|
worksheet. The supported codes are a subset of the Word RTF support.</p>
|
|
<ul>
|
|
<li><strong>Ethercalc Record Format (ETH)</strong></li>
|
|
</ul>
|
|
<p><a href="https://ethercalc.net/" rel="nofollow">Ethercalc</a> is an open source web spreadsheet powered by
|
|
a record format reminiscent of SYLK wrapped in a MIME multi-part message.</p>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-testing" class="anchor" href="#testing" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Testing</h2>
|
|
<h3>
|
|
<a id="user-content-node" class="anchor" href="#node" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Node</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<p><code>make test</code> will run the node-based tests. By default it runs tests on files in
|
|
every supported format. To test a specific file type, set <code>FMTS</code> to the format
|
|
you want to test. Feature-specific tests are available with <code>make test_misc</code></p>
|
|
<div class="highlight highlight-source-shell"><pre>$ make test_misc <span class="pl-c"><span class="pl-c">#</span> run core tests</span>
|
|
$ make <span class="pl-c1">test</span> <span class="pl-c"><span class="pl-c">#</span> run full tests</span>
|
|
$ make test_xls <span class="pl-c"><span class="pl-c">#</span> only use the XLS test files</span>
|
|
$ make test_xlsx <span class="pl-c"><span class="pl-c">#</span> only use the XLSX test files</span>
|
|
$ make test_xlsb <span class="pl-c"><span class="pl-c">#</span> only use the XLSB test files</span>
|
|
$ make test_xml <span class="pl-c"><span class="pl-c">#</span> only use the XML test files</span>
|
|
$ make test_ods <span class="pl-c"><span class="pl-c">#</span> only use the ODS test files</span></pre></div>
|
|
<p>To enable all errors, set the environment variable <code>WTF=1</code>:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ make <span class="pl-c1">test</span> <span class="pl-c"><span class="pl-c">#</span> run full tests</span>
|
|
$ WTF=1 make <span class="pl-c1">test</span> <span class="pl-c"><span class="pl-c">#</span> enable all error messages</span></pre></div>
|
|
<p><code>flow</code> and <code>eslint</code> checks are available:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ make lint <span class="pl-c"><span class="pl-c">#</span> eslint checks</span>
|
|
$ make flow <span class="pl-c"><span class="pl-c">#</span> make lint + Flow checking</span>
|
|
$ make tslint <span class="pl-c"><span class="pl-c">#</span> check TS definitions</span></pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-browser" class="anchor" href="#browser" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Browser</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<p>The core in-browser tests are available at <code>tests/index.html</code> within this repo.
|
|
Start a local server and navigate to that directory to run the tests.
|
|
<code>make ctestserv</code> will start a server on port 8000.</p>
|
|
<p><code>make ctest</code> will generate the browser fixtures. To add more files, edit the
|
|
<code>tests/fixtures.lst</code> file and add the paths.</p>
|
|
<p>To run the full in-browser tests, clone the repo for
|
|
<a href="https://github.com/SheetJS/SheetJS.github.io"><code>oss.sheetjs.com</code></a> and replace
|
|
the <code>xlsx.js</code> file (then open a browser window and go to <code>stress.html</code>):</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ cp xlsx.js ../SheetJS.github.io
|
|
$ <span class="pl-c1">cd</span> ../SheetJS.github.io
|
|
$ simplehttpserver <span class="pl-c"><span class="pl-c">#</span> or "python -mSimpleHTTPServer" or "serve"</span>
|
|
$ open -a Chromium.app http://localhost:8000/stress.html</pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-tested-environments" class="anchor" href="#tested-environments" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Tested Environments</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<ul>
|
|
<li>NodeJS <code>0.8</code>, <code>0.10</code>, <code>0.12</code>, <code>4.x</code>, <code>5.x</code>, <code>6.x</code>, <code>7.x</code>, <code>8.x</code>
|
|
</li>
|
|
<li>IE 6/7/8/9/10/11 (IE 6-9 require shims)</li>
|
|
<li>Chrome 24+ (including Android 4.0+)</li>
|
|
<li>Safari 6+ (iOS and Desktop)</li>
|
|
<li>Edge 13+, FF 18+, and Opera 12+</li>
|
|
</ul>
|
|
<p>Tests utilize the mocha testing framework.</p>
|
|
<ul>
|
|
<li>
|
|
<a href="https://saucelabs.com/u/sheetjs" rel="nofollow">https://saucelabs.com/u/sheetjs</a> for XLS* modules using Sauce Labs</li>
|
|
</ul>
|
|
<p>The test suite also includes tests for various time zones. To change
|
|
the timezone locally, set the TZ environment variable:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ env TZ=<span class="pl-s"><span class="pl-pds">"</span>Asia/Kolkata<span class="pl-pds">"</span></span> WTF=1 make test_misc</pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-test-files" class="anchor" href="#test-files" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Test Files</h3>
|
|
<p>Test files are housed in <a href="https://github.com/SheetJS/test_files">another repo</a>.</p>
|
|
<p>Running <code>make init</code> will refresh the <code>test_files</code> submodule and get the files.
|
|
Note that this requires <code>svn</code>, <code>git</code>, <code>hg</code> and other commands that may not be
|
|
available. If <code>make init</code> fails, please download the latest version of the test
|
|
files snapshot from <a href="https://github.com/SheetJS/test_files/releases">the repo</a></p>
|
|
<details>
|
|
<summary><b>Latest Snapshot</b> (click to show)</summary>
|
|
<p>Latest test files snapshot:
|
|
<a href="http://github.com/SheetJS/test_files/releases/download/20170409/test_files.zip">http://github.com/SheetJS/test_files/releases/download/20170409/test_files.zip</a></p>
|
|
<p>(download and unzip to the <code>test_files</code> subdirectory)</p>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-contributing" class="anchor" href="#contributing" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Contributing</h2>
|
|
<p>Due to the precarious nature of the Open Specifications Promise, it is very
|
|
important to ensure code is cleanroom. <a href="CONTRIBUTING.md">Contribution Notes</a></p>
|
|
<details>
|
|
<summary><b>File organization</b> (click to show)</summary>
|
|
<p>At a high level, the final script is a concatenation of the individual files in
|
|
the <code>bits</code> folder. Running <code>make</code> should reproduce the final output on all
|
|
platforms. The README is similarly split into bits in the <code>docbits</code> folder.</p>
|
|
<p>Folders:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="left">folder</th>
|
|
<th align="left">contents</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="left"><code>bits</code></td>
|
|
<td align="left">raw source files that make up the final script</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>docbits</code></td>
|
|
<td align="left">raw markdown files that make up <code>README.md</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>bin</code></td>
|
|
<td align="left">server-side bin scripts (<code>xlsx.njs</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>dist</code></td>
|
|
<td align="left">dist files for web browsers and nonstandard JS environments</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>demos</code></td>
|
|
<td align="left">demo projects for platforms like ExtendScript and Webpack</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>tests</code></td>
|
|
<td align="left">browser tests (run <code>make ctest</code> to rebuild)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>types</code></td>
|
|
<td align="left">typescript definitions and tests</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>misc</code></td>
|
|
<td align="left">miscellaneous supporting scripts</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><code>test_files</code></td>
|
|
<td align="left">test files (pulled from the test files repository)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</details>
|
|
<p>After cloning the repo, running <code>make help</code> will display a list of commands.</p>
|
|
<h3>
|
|
<a id="user-content-osxlinux" class="anchor" href="#osxlinux" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>OSX/Linux</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<p>The <code>xlsx.js</code> file is constructed from the files in the <code>bits</code> subdirectory. The
|
|
build script (run <code>make</code>) will concatenate the individual bits to produce the
|
|
script. Before submitting a contribution, ensure that running make will produce
|
|
the <code>xlsx.js</code> file exactly. The simplest way to test is to add the script:</p>
|
|
<div class="highlight highlight-source-shell"><pre>$ git add xlsx.js
|
|
$ make clean
|
|
$ make
|
|
$ git diff xlsx.js</pre></div>
|
|
<p>To produce the dist files, run <code>make dist</code>. The dist files are updated in each
|
|
version release and <em>should not be committed between versions</em>.</p>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-windows" class="anchor" href="#windows" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Windows</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<p>The included <code>make.cmd</code> script will build <code>xlsx.js</code> from the <code>bits</code> directory.
|
|
Building is as simple as:</p>
|
|
<div class="highlight highlight-source-batchfile"><pre><span class="pl-k">></span> make</pre></div>
|
|
<p>To prepare development environment:</p>
|
|
<div class="highlight highlight-source-batchfile"><pre><span class="pl-k">></span> make init</pre></div>
|
|
<p>The full list of commands available in Windows are displayed in <code>make help</code>:</p>
|
|
<pre><code>make init -- install deps and global modules
|
|
make lint -- run eslint linter
|
|
make test -- run mocha test suite
|
|
make misc -- run smaller test suite
|
|
make book -- rebuild README and summary
|
|
make help -- display this message
|
|
</code></pre>
|
|
<p>As explained in <a href="#test-files">Test Files</a>, on Windows the release ZIP file must
|
|
be downloaded and extracted. If Bash on Windows is available, it is possible
|
|
to run the OSX/Linux workflow. The following steps prepares the environment:</p>
|
|
<div class="highlight highlight-source-shell"><pre><span class="pl-c"><span class="pl-c">#</span> Install support programs for the build and test commands</span>
|
|
sudo apt-get install make git subversion mercurial
|
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Install nodejs and NPM within the WSL</span>
|
|
wget -qO- https://deb.nodesource.com/setup_8.x <span class="pl-k">|</span> sudo bash
|
|
sudo apt-get install nodejs
|
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Install dev dependencies</span>
|
|
sudo npm install -g mocha voc blanket xlsjs</pre></div>
|
|
</details>
|
|
<h3>
|
|
<a id="user-content-tests" class="anchor" href="#tests" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Tests</h3>
|
|
<details>
|
|
<summary>(click to show)</summary>
|
|
<p>The <code>test_misc</code> target (<code>make test_misc</code> on Linux/OSX / <code>make misc</code> on Windows)
|
|
runs the targeted feature tests. It should take 5-10 seconds to perform feature
|
|
tests without testing against the entire test battery. New features should be
|
|
accompanied with tests for the relevant file formats and features.</p>
|
|
<p>For tests involving the read side, an appropriate feature test would involve
|
|
reading an existing file and checking the resulting workbook object. If a
|
|
parameter is involved, files should be read with different values to verify that
|
|
the feature is working as expected.</p>
|
|
<p>For tests involving a new write feature which can already be parsed, appropriate
|
|
feature tests would involve writing a workbook with the feature and then opening
|
|
and verifying that the feature is preserved.</p>
|
|
<p>For tests involving a new write feature without an existing read ability, please
|
|
add a feature test to the kitchen sink <code>tests/write.js</code>.</p>
|
|
</details>
|
|
<h2>
|
|
<a id="user-content-license" class="anchor" href="#license" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>License</h2>
|
|
<p>Please consult the attached LICENSE file for details. All rights not explicitly
|
|
granted by the Apache 2.0 License are reserved by the Original Author.</p>
|
|
<h2>
|
|
<a id="user-content-references" class="anchor" href="#references" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>References</h2>
|
|
<details>
|
|
<summary><b>OSP-covered Specifications</b> (click to show)</summary>
|
|
<ul>
|
|
<li>
|
|
<code>MS-CFB</code>: Compound File Binary File Format</li>
|
|
<li>
|
|
<code>MS-CTXLS</code>: Excel Custom Toolbar Binary File Format</li>
|
|
<li>
|
|
<code>MS-EXSPXML3</code>: Excel Calculation Version 2 Web Service XML Schema</li>
|
|
<li>
|
|
<code>MS-ODATA</code>: Open Data Protocol (OData)</li>
|
|
<li>
|
|
<code>MS-ODRAW</code>: Office Drawing Binary File Format</li>
|
|
<li>
|
|
<code>MS-ODRAWXML</code>: Office Drawing Extensions to Office Open XML Structure</li>
|
|
<li>
|
|
<code>MS-OE376</code>: Office Implementation Information for ECMA-376 Standards Support</li>
|
|
<li>
|
|
<code>MS-OFFCRYPTO</code>: Office Document Cryptography Structure</li>
|
|
<li>
|
|
<code>MS-OI29500</code>: Office Implementation Information for ISO/IEC 29500 Standards Support</li>
|
|
<li>
|
|
<code>MS-OLEDS</code>: Object Linking and Embedding (OLE) Data Structures</li>
|
|
<li>
|
|
<code>MS-OLEPS</code>: Object Linking and Embedding (OLE) Property Set Data Structures</li>
|
|
<li>
|
|
<code>MS-OODF3</code>: Office Implementation Information for ODF 1.2 Standards Support</li>
|
|
<li>
|
|
<code>MS-OSHARED</code>: Office Common Data Types and Objects Structures</li>
|
|
<li>
|
|
<code>MS-OVBA</code>: Office VBA File Format Structure</li>
|
|
<li>
|
|
<code>MS-XLDM</code>: Spreadsheet Data Model File Format</li>
|
|
<li>
|
|
<code>MS-XLS</code>: Excel Binary File Format (.xls) Structure Specification</li>
|
|
<li>
|
|
<code>MS-XLSB</code>: Excel (.xlsb) Binary File Format</li>
|
|
<li>
|
|
<code>MS-XLSX</code>: Excel (.xlsx) Extensions to the Office Open XML SpreadsheetML File Format</li>
|
|
<li>
|
|
<code>XLS</code>: Microsoft Office Excel 97-2007 Binary File Format Specification</li>
|
|
<li>
|
|
<code>RTF</code>: Rich Text Format</li>
|
|
</ul>
|
|
</details>
|
|
<ul>
|
|
<li>ISO/IEC 29500:2012(E) "Information technology — Document description and processing languages — Office Open XML File Formats"</li>
|
|
<li>Open Document Format for Office Applications Version 1.2 (29 September 2011)</li>
|
|
<li>Worksheet File Format (From Lotus) December 1984</li>
|
|
</ul>
|
|
|
|
</article>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div><script>
|
|
function showCanonicalImages() {
|
|
var images = document.getElementsByTagName('img');
|
|
if (!images) {
|
|
return;
|
|
}
|
|
for (var index = 0; index < images.length; index++) {
|
|
var image = images[index];
|
|
if (image.getAttribute('data-canonical-src') && image.src !== image.getAttribute('data-canonical-src')) {
|
|
image.src = image.getAttribute('data-canonical-src');
|
|
}
|
|
}
|
|
}
|
|
|
|
function scrollToHash() {
|
|
if (location.hash && !document.querySelector(':target')) {
|
|
var element = document.getElementById('user-content-' + location.hash.slice(1));
|
|
if (element) {
|
|
element.scrollIntoView();
|
|
}
|
|
}
|
|
}
|
|
|
|
function autorefreshContent(eventSourceUrl) {
|
|
var initialTitle = document.title;
|
|
var contentElement = document.getElementById('grip-content');
|
|
var source = new EventSource(eventSourceUrl);
|
|
var isRendering = false;
|
|
|
|
source.onmessage = function(ev) {
|
|
var msg = JSON.parse(ev.data);
|
|
if (msg.updating) {
|
|
isRendering = true;
|
|
document.title = '(Rendering) ' + document.title;
|
|
} else {
|
|
isRendering = false;
|
|
document.title = initialTitle;
|
|
contentElement.innerHTML = msg.content;
|
|
showCanonicalImages();
|
|
}
|
|
}
|
|
|
|
source.onerror = function(e) {
|
|
if (e.readyState === EventSource.CLOSED && isRendering) {
|
|
isRendering = false;
|
|
document.title = initialTitle;
|
|
}
|
|
}
|
|
}
|
|
|
|
window.onhashchange = function() {
|
|
scrollToHash();
|
|
}
|
|
|
|
window.onload = function() {
|
|
scrollToHash();
|
|
}
|
|
|
|
showCanonicalImages();
|
|
|
|
var autorefreshUrl = document.getElementById('preview-page').getAttribute('data-autorefresh-url');
|
|
if (autorefreshUrl) {
|
|
autorefreshContent(autorefreshUrl);
|
|
}
|
|
</script>
|
|
</body>
|
|
</html> |