diff --git a/2.12.0/assets/color_schemes/foo.scss b/2.12.0/assets/color_schemes/foo.scss new file mode 100644 index 000000000..e90bdddb4 --- /dev/null +++ b/2.12.0/assets/color_schemes/foo.scss @@ -0,0 +1,156 @@ +// Typography + +// prettier-ignore +$body-font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", + roboto, "Helvetica Neue", arial, sans-serif !default; +$mono-font-family: "SFMono-Regular", menlo, consolas, monospace !default; +$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems +$body-line-height: 1.4 !default; +$content-line-height: 1.6 !default; +$body-heading-line-height: 1.25 !default; + +// Font size +// `-sm` suffix is the size at the small (and above) media query + +$font-size-1: 0.5625rem !default; +$font-size-1-sm: 0.625rem !default; +$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small +$font-size-3: 0.75rem !default; // h5 +$font-size-4: 0.875rem !default; +$font-size-5: 1rem !default; // h3 +$font-size-6: 1.125rem !default; // h2 +$font-size-7: 1.5rem !default; +$font-size-8: 2rem !default; // h1 +$font-size-9: 2.25rem !default; +$font-size-10: 2.625rem !default; +$font-size-10-sm: 3rem !default; + +// Colors + +$white: #fff !default; +$grey-dk-000: #959396 !default; +$grey-dk-100: #5c5962 !default; +$grey-dk-200: #44434d !default; +$grey-dk-250: #302d36 !default; +$grey-dk-300: #6666 !default; +$grey-lt-000: #f5f6fa !default; +$grey-lt-100: #eeebee !default; +$grey-lt-200: #ecebed !default; +$grey-lt-300: #e6e1e8 !default; +$purple-000: #7253ed !default; +$purple-100: #5e41d0 !default; +$purple-200: #4e26af !default; +$purple-300: #381885 !default; +$blue-000: #2c84fa !default; +$blue-100: #2869e6 !default; +$blue-200: #264caf !default; +$blue-300: #183385 !default; +$green-000: #41d693 !default; +$green-100: #11b584 !default; +$green-200: #009c7b !default; +$green-300: #026e57 !default; +$yellow-000: #ffeb82 !default; +$yellow-100: #fadf50 !default; +$yellow-200: #f7d12e !default; +$yellow-300: #e7af06 !default; +$red-000: #f77e7e !default; +$red-100: #f96e65 !default; +$red-200: #e94c4c !default; +$red-300: #dd2e2e !default; + +// Spacing + +$spacing-unit: 1rem; // 1rem == 16px + +$spacers: ( + sp-0: 0, + sp-1: $spacing-unit * 0.25, + sp-2: $spacing-unit * 0.5, + sp-3: $spacing-unit * 0.75, + sp-4: $spacing-unit, + sp-5: $spacing-unit * 1.5, + sp-6: $spacing-unit * 2, + sp-7: $spacing-unit * 2.5, + sp-8: $spacing-unit * 3, + sp-9: $spacing-unit * 3.5, + sp-10: $spacing-unit * 4, + ) !default; +$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px +$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px +$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px +$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px +$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px +$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px +$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px +$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px +$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px +$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px + +// Borders + +$border: 1px solid !default; +$border-radius: 4px !default; +$border-color: $grey-lt-100 !default; + +// Grid system + +$gutter-spacing: $sp-6 !default; +$gutter-spacing-sm: $sp-4 !default; +$nav-width: 16.5rem !default; +$nav-width-md: 15.5rem !default; +$nav-list-item-height: $sp-6 !default; +$nav-list-item-height-sm: $sp-8 !default; +$nav-list-expander-right: true; +$content-width: 50rem !default; +$header-height: 3.75rem !default; +$search-results-width: $content-width - $nav-width !default; +$transition-duration: 400ms; + +// Media queries in pixels + +$media-queries: ( + xs: 20rem, + sm: 31.25rem, + md: $content-width, + lg: $content-width + $nav-width, + xl: 87.5rem, + ) !default; + +//VO layout added + +// fonts +$body-font: "FlandersArtSans-Medium", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; +$head-font: "FlandersArtSans-Medium", sans-serif; +$mono-font: "FlandersArtSans-Medium", Consolas, "Liberation Mono", Menlo, monospace; + + + +// theme color +$theme-blue: #ffe615; +$theme-red: #e74c3c; +$theme-green: #1abc9c; +$theme-orange: #e67e22; + +$theme-white: lighten($black, 99%); +$theme-black: lighten($black, 15%); + +// theme link +$theme-link: $blue; +$theme-link-hover: lighten($blue, 10%); +$theme-link-visited: lighten($purple, 10%); + +// theme code +$theme-code: $theme-black; +$theme-code-background: $bg-gray; +$theme-code-inline: $theme-red; +$theme-code-inline-background: darken($theme-white, 2%); + +// theme mask +$theme-mask-white: transparentize($theme-white, 0.9); +$theme-mask-black: transparentize($theme-black, 0.9); + +// theme menu +$theme-menu-width-sm: 85%; +$theme-menu-width: 300px; +$theme-menu-background: darken($theme-black, 10%); +$theme-menu-active-background: darken($theme-blue, 15%); \ No newline at end of file diff --git a/2.12.0/assets/css/just-the-docs-dark.css b/2.12.0/assets/css/just-the-docs-dark.css new file mode 100644 index 000000000..c609e24ac --- /dev/null +++ b/2.12.0/assets/css/just-the-docs-dark.css @@ -0,0 +1,6614 @@ +@charset "UTF-8"; +.highlight, +pre.highlight { + background: #f9f9f9; + color: #383942; } + +.highlight pre { + background: #f9f9f9; } + +.highlight .hll { + background: #f9f9f9; } + +.highlight .c { + color: #9fa0a6; + font-style: italic; } + +.highlight .err { + color: #fff; + background-color: #e05151; } + +.highlight .k { + color: #a625a4; } + +.highlight .l { + color: #50a04f; } + +.highlight .n { + color: #383942; } + +.highlight .o { + color: #383942; } + +.highlight .p { + color: #383942; } + +.highlight .cm { + color: #9fa0a6; + font-style: italic; } + +.highlight .cp { + color: #9fa0a6; + font-style: italic; } + +.highlight .c1 { + color: #9fa0a6; + font-style: italic; } + +.highlight .cs { + color: #9fa0a6; + font-style: italic; } + +.highlight .ge { + font-style: italic; } + +.highlight .gs { + font-weight: 700; } + +.highlight .kc { + color: #a625a4; } + +.highlight .kd { + color: #a625a4; } + +.highlight .kn { + color: #a625a4; } + +.highlight .kp { + color: #a625a4; } + +.highlight .kr { + color: #a625a4; } + +.highlight .kt { + color: #a625a4; } + +.highlight .ld { + color: #50a04f; } + +.highlight .m { + color: #b66a00; } + +.highlight .s { + color: #50a04f; } + +.highlight .na { + color: #b66a00; } + +.highlight .nb { + color: #ca7601; } + +.highlight .nc { + color: #ca7601; } + +.highlight .no { + color: #ca7601; } + +.highlight .nd { + color: #ca7601; } + +.highlight .ni { + color: #ca7601; } + +.highlight .ne { + color: #ca7601; } + +.highlight .nf { + color: #383942; } + +.highlight .nl { + color: #ca7601; } + +.highlight .nn { + color: #383942; } + +.highlight .nx { + color: #383942; } + +.highlight .py { + color: #ca7601; } + +.highlight .nt { + color: #e35549; } + +.highlight .nv { + color: #ca7601; } + +.highlight .ow { + font-weight: 700; } + +.highlight .w { + color: #f8f8f2; } + +.highlight .mf { + color: #b66a00; } + +.highlight .mh { + color: #b66a00; } + +.highlight .mi { + color: #b66a00; } + +.highlight .mo { + color: #b66a00; } + +.highlight .sb { + color: #50a04f; } + +.highlight .sc { + color: #50a04f; } + +.highlight .sd { + color: #50a04f; } + +.highlight .s2 { + color: #50a04f; } + +.highlight .se { + color: #50a04f; } + +.highlight .sh { + color: #50a04f; } + +.highlight .si { + color: #50a04f; } + +.highlight .sx { + color: #50a04f; } + +.highlight .sr { + color: #0083bb; } + +.highlight .s1 { + color: #50a04f; } + +.highlight .ss { + color: #0083bb; } + +.highlight .bp { + color: #ca7601; } + +.highlight .vc { + color: #ca7601; } + +.highlight .vg { + color: #ca7601; } + +.highlight .vi { + color: #e35549; } + +.highlight .il { + color: #b66a00; } + +.highlight .gu { + color: #75715e; } + +.highlight .gd { + color: #e05151; } + +.highlight .gi { + color: #43d089; } + +.highlight .language-json .w + .s2 { + color: #e35549; } + +.highlight .language-json .kc { + color: #0083bb; } + +.highlight, +pre.highlight { + background: #31343f; + color: #dee2f7; } + +.highlight pre { + background: #31343f; } + +.highlight .hll { + background: #31343f; } + +.highlight .c { + color: #63677e; + font-style: italic; } + +.highlight .err { + color: #960050; + background-color: #1e0010; } + +.highlight .k { + color: #e19ef5; } + +.highlight .l { + color: #a3eea0; } + +.highlight .n { + color: #dee2f7; } + +.highlight .o { + color: #dee2f7; } + +.highlight .p { + color: #dee2f7; } + +.highlight .cm { + color: #63677e; + font-style: italic; } + +.highlight .cp { + color: #63677e; + font-style: italic; } + +.highlight .c1 { + color: #63677e; + font-style: italic; } + +.highlight .cs { + color: #63677e; + font-style: italic; } + +.highlight .ge { + font-style: italic; } + +.highlight .gs { + font-weight: 700; } + +.highlight .kc { + color: #e19ef5; } + +.highlight .kd { + color: #e19ef5; } + +.highlight .kn { + color: #e19ef5; } + +.highlight .kp { + color: #e19ef5; } + +.highlight .kr { + color: #e19ef5; } + +.highlight .kt { + color: #e19ef5; } + +.highlight .ld { + color: #a3eea0; } + +.highlight .m { + color: #eddc96; } + +.highlight .s { + color: #a3eea0; } + +.highlight .na { + color: #eddc96; } + +.highlight .nb { + color: #fdce68; } + +.highlight .nc { + color: #fdce68; } + +.highlight .no { + color: #fdce68; } + +.highlight .nd { + color: #fdce68; } + +.highlight .ni { + color: #fdce68; } + +.highlight .ne { + color: #fdce68; } + +.highlight .nf { + color: #dee2f7; } + +.highlight .nl { + color: #fdce68; } + +.highlight .nn { + color: #dee2f7; } + +.highlight .nx { + color: #dee2f7; } + +.highlight .py { + color: #fdce68; } + +.highlight .nt { + color: #f9867b; } + +.highlight .nv { + color: #fdce68; } + +.highlight .ow { + font-weight: 700; } + +.highlight .w { + color: #f8f8f2; } + +.highlight .mf { + color: #eddc96; } + +.highlight .mh { + color: #eddc96; } + +.highlight .mi { + color: #eddc96; } + +.highlight .mo { + color: #eddc96; } + +.highlight .sb { + color: #a3eea0; } + +.highlight .sc { + color: #a3eea0; } + +.highlight .sd { + color: #a3eea0; } + +.highlight .s2 { + color: #a3eea0; } + +.highlight .se { + color: #a3eea0; } + +.highlight .sh { + color: #a3eea0; } + +.highlight .si { + color: #a3eea0; } + +.highlight .sx { + color: #a3eea0; } + +.highlight .sr { + color: #7be2f9; } + +.highlight .s1 { + color: #a3eea0; } + +.highlight .ss { + color: #7be2f9; } + +.highlight .bp { + color: #fdce68; } + +.highlight .vc { + color: #fdce68; } + +.highlight .vg { + color: #fdce68; } + +.highlight .vi { + color: #f9867b; } + +.highlight .il { + color: #eddc96; } + +.highlight .gu { + color: #75715e; } + +.highlight .gd { + color: #f92672; } + +.highlight .gi { + color: #a6e22e; } + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; } + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; } + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; } + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; } + +* { + box-sizing: border-box; } + +html { + font-size: 0.875rem !important; + scroll-behavior: smooth; } + @media (min-width: 31.25rem) { + html { + font-size: 1rem !important; } } + +body { + font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif; + font-size: inherit; + line-height: 1.4; + color: #e6e1e8; + background-color: #27262b; + overflow-wrap: break-word; } + +ol, +ul, +dl, +pre, +address, +blockquote, +table, +div, +hr, +form, +fieldset, +noscript .table-wrapper { + margin-top: 0; } + +h1, +h2, +h3, +h4, +h5, +h6, +#toctitle { + margin-top: 0; + margin-bottom: 1em; + font-weight: 500; + line-height: 1.25; + color: #f5f6fa; } + +p { + margin-top: 1em; + margin-bottom: 1em; } + +a { + color: #2c84fa; + text-decoration: none; } + +a:not([class]) { + text-decoration: underline; + text-decoration-color: #44434d; + text-underline-offset: 2px; } + a:not([class]):hover { + text-decoration-color: rgba(44, 132, 250, 0.45); } + +code { + font-family: "SFMono-Regular", menlo, consolas, monospace; + font-size: 0.75em; + line-height: 1.4; } + +figure, +pre { + margin: 0; } + +li { + margin: 0.25em 0; } + +img { + max-width: 100%; + height: auto; } + +hr { + height: 1px; + padding: 0; + margin: 2rem 0; + background-color: #44434d; + border: 0; } + +blockquote { + margin: 10px 0; + margin-block-start: 0; + margin-inline-start: 0; + padding-left: 1rem; + border-left: 3px solid #44434d; } + +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: #27262b; } + @media (min-width: 50rem) { + .side-bar { + flex-flow: column nowrap; + position: fixed; + width: 15.5rem; + height: 100%; + border-right: 1px solid #44434d; + align-items: flex-end; } } + @media (min-width: 66.5rem) { + .side-bar { + width: calc((100% - 66.5rem) / 2 + 16.5rem); + min-width: 16.5rem; } } + +@media (min-width: 50rem) { + .main { + position: relative; + max-width: 50rem; + margin-left: 15.5rem; } } +@media (min-width: 66.5rem) { + .main { + margin-left: Max(16.5rem, calc((100% - 66.5rem) / 2 + 16.5rem)); } } + +.main-content-wrap { + padding-right: 1rem; + padding-left: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; } + @media (min-width: 50rem) { + .main-content-wrap { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 50rem) { + .main-content-wrap { + padding-top: 2rem; + padding-bottom: 2rem; } } + +.main-header { + z-index: 0; + display: none; + background-color: #27262b; } + @media (min-width: 50rem) { + .main-header { + display: flex; + justify-content: space-between; + height: 3.75rem; + background-color: #27262b; + border-bottom: 1px solid #44434d; } } + .main-header.nav-open { + display: block; } + @media (min-width: 50rem) { + .main-header.nav-open { + display: flex; } } + +.site-nav, +.site-header, +.site-footer { + width: 100%; } + @media (min-width: 66.5rem) { + .site-nav, + .site-header, + .site-footer { + width: 16.5rem; } } + +.site-nav { + display: none; } + .site-nav.nav-open { + display: block; } + @media (min-width: 50rem) { + .site-nav { + display: block; + padding-top: 3rem; + padding-bottom: 1rem; + overflow-y: auto; + flex: 1 1 auto; } } + +.site-header { + display: flex; + min-height: 3.75rem; + align-items: center; } + @media (min-width: 50rem) { + .site-header { + height: 3.75rem; + max-height: 3.75rem; + border-bottom: 1px solid #44434d; } } + +.site-title { + padding-right: 1rem; + padding-left: 1rem; + flex-grow: 1; + display: flex; + height: 100%; + align-items: center; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #f5f6fa; + font-size: 1.125rem !important; } + @media (min-width: 50rem) { + .site-title { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-title { + font-size: 1.5rem !important; + line-height: 1.25; } } + @media (min-width: 50rem) { + .site-title { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } } + +.site-button { + display: flex; + height: 100%; + padding: 1rem; + align-items: center; } + +@media (min-width: 50rem) { + .site-header .site-button { + display: none; } } +.site-title:hover { + background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + +.site-button:hover { + background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + +body { + position: relative; + padding-bottom: 4rem; + overflow-y: scroll; } + @media (min-width: 50rem) { + body { + position: static; + padding-bottom: 0; } } + +.site-footer { + padding-right: 1rem; + padding-left: 1rem; + position: absolute; + bottom: 0; + left: 0; + padding-top: 1rem; + padding-bottom: 1rem; + color: #959396; + font-size: 0.6875rem !important; } + @media (min-width: 50rem) { + .site-footer { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-footer { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .site-footer { + position: static; + justify-self: end; } } + +.icon { + width: 1.5rem; + height: 1.5rem; + color: #2c84fa; } + +.main-content { + line-height: 1.6; } + .main-content ol, + .main-content ul, + .main-content dl, + .main-content pre, + .main-content address, + .main-content blockquote, + .main-content .table-wrapper { + margin-top: 0.5em; } + .main-content a { + overflow: hidden; + text-overflow: ellipsis; } + .main-content ul, + .main-content ol { + padding-left: 1.5em; } + .main-content li .highlight { + margin-top: 0.25rem; } + .main-content ol { + list-style-type: none; + counter-reset: step-counter; } + .main-content ol > li { + position: relative; } + .main-content ol > li::before { + position: absolute; + top: 0.2em; + left: -1.6em; + color: #959396; + content: counter(step-counter); + counter-increment: step-counter; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + font-size: 0.875rem !important; } } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + top: 0.11em; } } + .main-content ol > li ol { + counter-reset: sub-counter; } + .main-content ol > li ol > li::before { + content: counter(sub-counter,lower-alpha); + counter-increment: sub-counter; } + .main-content ul { + list-style: none; } + .main-content ul > li::before { + position: absolute; + margin-left: -1.4em; + color: #959396; + content: "•"; } + .main-content .task-list-item::before { + content: ""; } + .main-content .task-list-item-checkbox { + margin-right: 0.6em; + margin-left: -1.4em; } + .main-content hr + * { + margin-top: 0; } + .main-content h1:first-of-type { + margin-top: 0.5em; } + .main-content dl { + display: grid; + grid-template: auto / 10em 1fr; } + .main-content dt, + .main-content dd { + margin: 0.25em 0; } + .main-content dt { + grid-column: 1; + font-weight: 500; + text-align: right; } + .main-content dt::after { + content: ":"; } + .main-content dd { + grid-column: 2; + margin-bottom: 0; + margin-left: 1em; } + .main-content dd blockquote:first-child, + .main-content dd div:first-child, + .main-content dd dl:first-child, + .main-content dd dt:first-child, + .main-content dd h1:first-child, + .main-content dd h2:first-child, + .main-content dd h3:first-child, + .main-content dd h4:first-child, + .main-content dd h5:first-child, + .main-content dd h6:first-child, + .main-content dd li:first-child, + .main-content dd ol:first-child, + .main-content dd p:first-child, + .main-content dd pre:first-child, + .main-content dd table:first-child, + .main-content dd ul:first-child, + .main-content dd .table-wrapper:first-child { + margin-top: 0; } + .main-content dd dl:first-child dt:first-child, + .main-content dd dl:first-child dd:nth-child(2), + .main-content ol dl:first-child dt:first-child, + .main-content ol dl:first-child dd:nth-child(2), + .main-content ul dl:first-child dt:first-child, + .main-content ul dl:first-child dd:nth-child(2) { + margin-top: 0; } + .main-content .anchor-heading { + position: absolute; + right: -1rem; + width: 1.5rem; + height: 100%; + padding-right: 0.25rem; + padding-left: 0.25rem; + overflow: visible; } + @media (min-width: 50rem) { + .main-content .anchor-heading { + right: auto; + left: -1.5rem; } } + .main-content .anchor-heading svg { + display: inline-block; + width: 100%; + height: 100%; + color: #2c84fa; + visibility: hidden; } + .main-content .anchor-heading:hover svg, + .main-content .anchor-heading:focus svg, + .main-content h1:hover > .anchor-heading svg, + .main-content h2:hover > .anchor-heading svg, + .main-content h3:hover > .anchor-heading svg, + .main-content h4:hover > .anchor-heading svg, + .main-content h5:hover > .anchor-heading svg, + .main-content h6:hover > .anchor-heading svg { + visibility: visible; } + .main-content summary { + cursor: pointer; } + .main-content h1, + .main-content h2, + .main-content h3, + .main-content h4, + .main-content h5, + .main-content h6, + .main-content #toctitle { + position: relative; + margin-top: 1.5em; + margin-bottom: 0.25em; } + .main-content h1 + table, + .main-content h1 + .table-wrapper, + .main-content h1 + .code-example, + .main-content h1 + .highlighter-rouge, + .main-content h1 + .sectionbody .listingblock, + .main-content h2 + table, + .main-content h2 + .table-wrapper, + .main-content h2 + .code-example, + .main-content h2 + .highlighter-rouge, + .main-content h2 + .sectionbody .listingblock, + .main-content h3 + table, + .main-content h3 + .table-wrapper, + .main-content h3 + .code-example, + .main-content h3 + .highlighter-rouge, + .main-content h3 + .sectionbody .listingblock, + .main-content h4 + table, + .main-content h4 + .table-wrapper, + .main-content h4 + .code-example, + .main-content h4 + .highlighter-rouge, + .main-content h4 + .sectionbody .listingblock, + .main-content h5 + table, + .main-content h5 + .table-wrapper, + .main-content h5 + .code-example, + .main-content h5 + .highlighter-rouge, + .main-content h5 + .sectionbody .listingblock, + .main-content h6 + table, + .main-content h6 + .table-wrapper, + .main-content h6 + .code-example, + .main-content h6 + .highlighter-rouge, + .main-content h6 + .sectionbody .listingblock, + .main-content #toctitle + table, + .main-content #toctitle + .table-wrapper, + .main-content #toctitle + .code-example, + .main-content #toctitle + .highlighter-rouge, + .main-content #toctitle + .sectionbody .listingblock { + margin-top: 1em; } + .main-content h1 + p:not(.label), + .main-content h2 + p:not(.label), + .main-content h3 + p:not(.label), + .main-content h4 + p:not(.label), + .main-content h5 + p:not(.label), + .main-content h6 + p:not(.label), + .main-content #toctitle + p:not(.label) { + margin-top: 0; } + .main-content > h1:first-child, + .main-content > h2:first-child, + .main-content > h3:first-child, + .main-content > h4:first-child, + .main-content > h5:first-child, + .main-content > h6:first-child, + .main-content > .sect1:first-child > h2, + .main-content > .sect2:first-child > h3, + .main-content > .sect3:first-child > h4, + .main-content > .sect4:first-child > h5, + .main-content > .sect5:first-child > h6 { + margin-top: 0.5rem; } + +.nav-list { + padding: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; } + .nav-list .nav-list-item { + font-size: 0.875rem !important; + position: relative; + margin: 0; } + @media (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .nav-list .nav-list-item { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 0.875rem !important; } } + + .nav-list .nav-list-item .nav-list-link { + display: block; + min-height: 3rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + line-height: 2.5rem; + padding-right: 3rem; + padding-left: 1rem; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-link { + min-height: 2rem; + line-height: 1.5rem; + padding-right: 2rem; + padding-left: 2rem; } } + .nav-list .nav-list-item .nav-list-link.external > svg { + width: 1rem; + height: 1rem; + vertical-align: text-bottom; } + .nav-list .nav-list-item .nav-list-link.active { + font-weight: 600; + text-decoration: none; } + .nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { + background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + .nav-list .nav-list-item .nav-list-expander { + position: absolute; + right: 0; + width: 3rem; + height: 3rem; + padding: 0.75rem; + color: #2c84fa; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-expander { + width: 2rem; + height: 2rem; + padding: 0.5rem; } } + .nav-list .nav-list-item .nav-list-expander:hover { + background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + .nav-list .nav-list-item .nav-list-expander svg { + transform: rotate(90deg); } + .nav-list .nav-list-item > .nav-list { + display: none; + padding-left: 0.75rem; + list-style: none; } + .nav-list .nav-list-item > .nav-list .nav-list-item { + position: relative; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { + color: #959396; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { + color: #959396; } + .nav-list .nav-list-item.active > .nav-list-expander svg { + transform: rotate(-90deg); } + .nav-list .nav-list-item.active > .nav-list { + display: block; } + +.nav-category { + padding: 0.5rem 1rem; + font-weight: 600; + text-align: start; + text-transform: uppercase; + border-bottom: 1px solid #44434d; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .nav-category { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .nav-category { + padding: 0.5rem 2rem; + margin-top: 1rem; + text-align: start; } + .nav-category:first-child { + margin-top: 0; } } + +.nav-list.nav-category-list > .nav-list-item { + margin: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list { + padding: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { + color: #2c84fa; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander { + color: #2c84fa; } + +.aux-nav { + height: 100%; + overflow-x: auto; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .aux-nav { + font-size: 0.75rem !important; } } + .aux-nav .aux-nav-list { + display: flex; + height: 100%; + padding: 0; + margin: 0; + list-style: none; } + .aux-nav .aux-nav-list-item { + display: inline-block; + height: 100%; + padding: 0; + margin: 0; } + @media (min-width: 50rem) { + .aux-nav { + padding-right: 1rem; } } + +@media (min-width: 50rem) { + .breadcrumb-nav { + margin-top: -1rem; } } + +.breadcrumb-nav-list { + padding-left: 0; + margin-bottom: 0.75rem; + list-style: none; } + +.breadcrumb-nav-list-item { + display: table-cell; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .breadcrumb-nav-list-item { + font-size: 0.75rem !important; } } + .breadcrumb-nav-list-item::before { + display: none; } + .breadcrumb-nav-list-item::after { + display: inline-block; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #959396; + content: "/"; } + .breadcrumb-nav-list-item:last-child::after { + content: ""; } + +h1, +.text-alpha { + font-size: 2rem !important; + line-height: 1.25; + font-weight: 300; } + @media (min-width: 31.25rem) { + h1, + .text-alpha { + font-size: 2.25rem !important; } } + +h2, +.text-beta, +#toctitle { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + h2, + .text-beta, + #toctitle { + font-size: 1.5rem !important; + line-height: 1.25; } } + +h3, +.text-gamma { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + h3, + .text-gamma { + font-size: 1.125rem !important; } } + +h4, +.text-delta { + font-size: 0.6875rem !important; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.1em; } + @media (min-width: 31.25rem) { + h4, + .text-delta { + font-size: 0.75rem !important; } } + +h4 code { + text-transform: none; } + +h5, +.text-epsilon { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + h5, + .text-epsilon { + font-size: 0.875rem !important; } } + +h6, +.text-zeta { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + h6, + .text-zeta { + font-size: 0.75rem !important; } } + +.text-small { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .text-small { + font-size: 0.75rem !important; } } + +.text-mono { + font-family: "SFMono-Regular", menlo, consolas, monospace !important; } + +.text-left { + text-align: left !important; } + +.text-center { + text-align: center !important; } + +.text-right { + text-align: right !important; } + +.label, +.label-blue { + display: inline-block; + padding: 0.16em 0.56em; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #fff; + text-transform: uppercase; + vertical-align: middle; + background-color: #2869e6; + font-size: 0.6875rem !important; + border-radius: 12px; } + @media (min-width: 31.25rem) { + .label, + .label-blue { + font-size: 0.75rem !important; } } + +.label-green { + background-color: #009c7b; } + +.label-purple { + background-color: #5e41d0; } + +.label-red { + background-color: #e94c4c; } + +.label-yellow { + color: #44434d; + background-color: #f7d12e; } + +.btn { + display: inline-block; + box-sizing: border-box; + padding: 0.3em 1em; + margin: 0; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: #2c84fa; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: #302d36; + border-width: 0; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; } + .btn:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:focus:hover, .btn.selected:focus { + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:hover, .btn.zeroclipboard-is-hover { + color: #227efa; } + .btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { + text-decoration: none; + background-color: #2e2b33; } + .btn:active, .btn.selected, .btn.zeroclipboard-is-active { + background-color: #29262e; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn.selected:hover { + background-color: #cfcfcf; } + .btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; } + +.btn-outline { + color: #2c84fa; + background: transparent; + box-shadow: inset 0 0 0 2px #e6e1e8; } + .btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { + color: #1878fa; + text-decoration: none; + background-color: transparent; + box-shadow: inset 0 0 0 3px #e6e1e8; } + .btn-outline:focus { + text-decoration: none; + outline: none; + box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn-outline:focus:hover, .btn-outline.selected:focus { + box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { + color: #fff; + background-color: #2448a7; + background-image: linear-gradient(#2b55c4, #2448a7); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-primary:hover, .btn-primary.zeroclipboard-is-hover { + color: #fff; + background-color: #22459e; + background-image: linear-gradient(#2850b7, #22459e); } + .btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { + background-color: #21439a; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-primary.selected:hover { + background-color: #1d3a85; } + +.btn-purple { + color: #fff; + background-color: #5739ce; + background-image: linear-gradient(#6f55d5, #5739ce); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-purple:hover, .btn-purple.zeroclipboard-is-hover { + color: #fff; + background-color: #5132cb; + background-image: linear-gradient(#6549d2, #5132cb); } + .btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { + background-color: #4f31c6; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-purple.selected:hover { + background-color: #472cb2; } + +.btn-blue { + color: #fff; + background-color: #227efa; + background-image: linear-gradient(#4593fb, #227efa); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-blue:hover, .btn-blue.zeroclipboard-is-hover { + color: #fff; + background-color: #1878fa; + background-image: linear-gradient(#368afa, #1878fa); } + .btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { + background-color: #1375f9; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-blue.selected:hover { + background-color: #0669ed; } + +.btn-green { + color: #fff; + background-color: #10ac7d; + background-image: linear-gradient(#13cc95, #10ac7d); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-green:hover, .btn-green.zeroclipboard-is-hover { + color: #fff; + background-color: #0fa276; + background-image: linear-gradient(#12be8b, #0fa276); } + .btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { + background-color: #0f9e73; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-green.selected:hover { + background-color: #0d8662; } + +.btn-reset { + background: none; + border: none; + margin: 0; + text-align: inherit; + font: inherit; + border-radius: 0; + appearance: none; } + +.search { + position: relative; + z-index: 2; + flex-grow: 1; + height: 4rem; + padding: 0.5rem; + transition: padding linear 200ms; } + @media (min-width: 50rem) { + .search { + position: relative !important; + width: auto !important; + height: 100% !important; + padding: 0; + transition: none; } } + +.search-input-wrap { + position: relative; + z-index: 1; + height: 3rem; + overflow: hidden; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + transition: height linear 200ms; } + @media (min-width: 50rem) { + .search-input-wrap { + position: absolute; + width: 100%; + max-width: 33.5rem; + height: 100% !important; + border-radius: 0; + box-shadow: none; + transition: width ease 400ms; } } + +.search-input { + position: absolute; + width: 100%; + height: 100%; + padding: 0.5rem 1rem 0.5rem 2.5rem; + font-size: 1rem; + color: #e6e1e8; + background-color: #302d36; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-left: 0; + border-radius: 0; } + @media (min-width: 50rem) { + .search-input { + padding: 0.5rem 1rem 0.5rem 3.5rem; + font-size: 0.875rem; + background-color: #27262b; + transition: padding-left linear 200ms; } } + .search-input:focus { + outline: 0; } + .search-input:focus + .search-label .search-icon { + color: #2c84fa; } + +.search-label { + position: absolute; + display: flex; + height: 100%; + padding-left: 1rem; } + @media (min-width: 50rem) { + .search-label { + padding-left: 2rem; + transition: padding-left linear 200ms; } } + .search-label .search-icon { + width: 1.2rem; + height: 1.2rem; + align-self: center; + color: #959396; } + +.search-results { + position: absolute; + left: 0; + display: none; + width: 100%; + max-height: calc(100% - 4rem); + overflow-y: auto; + background-color: #302d36; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + @media (min-width: 50rem) { + .search-results { + top: 100%; + width: 33.5rem; + max-height: calc(100vh - 200%) !important; } } + +.search-results-list { + padding-left: 0; + margin-bottom: 0.25rem; + list-style: none; + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .search-results-list { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .search-results-list { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-results-list { + font-size: 0.875rem !important; } } + +.search-results-list-item { + padding: 0; + margin: 0; } + +.search-result { + display: block; + padding: 0.25rem 0.75rem; } + .search-result:hover, .search-result.active { + background-color: #201f23; } + +.search-result-title { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + @media (min-width: 31.25rem) { + .search-result-title { + display: inline-block; + width: 40%; + padding-right: 0.5rem; + vertical-align: top; } } + +.search-result-doc { + display: flex; + align-items: center; + word-wrap: break-word; } + .search-result-doc.search-result-doc-parent { + opacity: 0.5; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.875rem !important; } } + @media (min-width: 50rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.6875rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.75rem !important; } } + + .search-result-doc .search-result-icon { + width: 1rem; + height: 1rem; + margin-right: 0.5rem; + color: #2c84fa; + flex-shrink: 0; } + .search-result-doc .search-result-doc-title { + overflow: auto; } + +.search-result-section { + margin-left: 1.5rem; + word-wrap: break-word; } + +.search-result-rel-url { + display: block; + margin-left: 1.5rem; + overflow: hidden; + color: #959396; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .search-result-rel-url { + font-size: 0.625rem !important; } } + +.search-result-previews { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + margin-left: 0.5rem; + color: #959396; + word-wrap: break-word; + border-left: 1px solid; + border-left-color: #44434d; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .search-result-previews { + font-size: 0.75rem !important; } } + @media (min-width: 31.25rem) { + .search-result-previews { + display: inline-block; + width: 60%; + padding-left: 0.5rem; + margin-left: 0; + vertical-align: top; } } + +.search-result-preview + .search-result-preview { + margin-top: 0.25rem; } + +.search-result-highlight { + font-weight: bold; } + +.search-no-result { + padding: 0.5rem 0.75rem; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-no-result { + font-size: 0.875rem !important; } } + +.search-button { + position: fixed; + right: 1rem; + bottom: 1rem; + display: flex; + width: 3.5rem; + height: 3.5rem; + background-color: #302d36; + border: 1px solid rgba(44, 132, 250, 0.3); + border-radius: 1.75rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + align-items: center; + justify-content: center; } + +.search-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 0; + height: 0; + background-color: rgba(0, 0, 0, 0.3); + opacity: 0; + transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 0; } +.search-active .search-input-wrap { + height: 4rem; + border-radius: 0; } + @media (min-width: 50rem) { + .search-active .search-input-wrap { + width: 33.5rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } +.search-active .search-input { + background-color: #302d36; } + @media (min-width: 50rem) { + .search-active .search-input { + padding-left: 2.3rem; } } +@media (min-width: 50rem) { + .search-active .search-label { + padding-left: 0.6rem; } } +.search-active .search-results { + display: block; } +.search-active .search-overlay { + width: 100%; + height: 100%; + opacity: 1; + transition: opacity ease 400ms, width 0s, height 0s; } +@media (min-width: 50rem) { + .search-active .main { + position: fixed; + right: 0; + left: 0; } } +.search-active .main-header { + padding-top: 4rem; } + @media (min-width: 50rem) { + .search-active .main-header { + padding-top: 0; } } + +.table-wrapper { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: 1.5rem; + overflow-x: auto; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { + display: table; + min-width: 100%; + border-collapse: separate; } + +th, +td { + font-size: 0.75rem !important; + min-width: 7.5rem; + padding: 0.5rem 0.75rem; + background-color: #302d36; + border-bottom: 1px solid rgba(68, 67, 77, 0.5); + border-left: 1px solid #44434d; } + @media (min-width: 31.25rem) { + th, + td { + font-size: 0.875rem !important; } } + th:first-of-type, + td:first-of-type { + border-left: 0; } + +tbody tr:last-of-type th, +tbody tr:last-of-type td { + border-bottom: 0; } +tbody tr:last-of-type td { + padding-bottom: 0.75rem; } + +thead th { + border-bottom: 1px solid #44434d; } + +:not(pre, figure) > code { + padding: 0.2em 0.15em; + font-weight: 400; + background-color: #31343f; + border: 1px solid #44434d; + border-radius: 4px; } + +a:visited code { + border-color: #44434d; } + +div.highlighter-rouge, +div.listingblock > div.content, +figure.highlight { + margin-top: 0; + margin-bottom: 0.75rem; + background-color: #31343f; + border-radius: 4px; + box-shadow: none; + -webkit-overflow-scrolling: touch; + position: relative; + padding: 0; } + div.highlighter-rouge > button, + div.listingblock > div.content > button, + figure.highlight > button { + width: 0.75rem; + opacity: 0; + position: absolute; + top: 0; + right: 0; + border: 0.75rem solid #31343f; + background-color: #31343f; + color: #e6e1e8; + box-sizing: content-box; } + div.highlighter-rouge > button svg, + div.listingblock > div.content > button svg, + figure.highlight > button svg { + fill: #e6e1e8; } + div.highlighter-rouge > button:active, + div.listingblock > div.content > button:active, + figure.highlight > button:active { + text-decoration: none; + outline: none; + opacity: 1; } + div.highlighter-rouge > button:focus, + div.listingblock > div.content > button:focus, + figure.highlight > button:focus { + opacity: 1; } + div.highlighter-rouge:hover > button, + div.listingblock > div.content:hover > button, + figure.highlight:hover > button { + cursor: copy; + opacity: 1; } + +div.highlighter-rouge div.highlight { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } +div.highlighter-rouge pre.highlight, +div.highlighter-rouge code { + padding: 0; + margin: 0; + border: 0; } + +div.listingblock { + margin-top: 0; + margin-bottom: 0.75rem; } + div.listingblock div.content { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + div.listingblock div.content > pre, + div.listingblock code { + padding: 0; + margin: 0; + border: 0; } + +figure.highlight pre, +figure.highlight :not(pre) > code { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + +.highlight .table-wrapper { + padding: 0.75rem 0; + margin: 0; + border: 0; + box-shadow: none; } + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.6875rem !important; + min-width: 0; + padding: 0; + background-color: #31343f; + border: 0; } + @media (min-width: 31.25rem) { + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.75rem !important; } } + .highlight .table-wrapper td.gl { + width: 1em; + padding-right: 0.75rem; + padding-left: 0.75rem; } + .highlight .table-wrapper pre { + margin: 0; + line-height: 2; } + +.code-example, +.listingblock > .title { + padding: 0.75rem; + margin-bottom: 0.75rem; + overflow: auto; + border: 1px solid #44434d; + border-radius: 4px; } + .code-example + .highlighter-rouge, + .code-example + .sectionbody .listingblock, + .code-example + .content, + .code-example + figure.highlight, + .listingblock > .title + .highlighter-rouge, + .listingblock > .title + .sectionbody .listingblock, + .listingblock > .title + .content, + .listingblock > .title + figure.highlight { + position: relative; + margin-top: -1rem; + border-right: 1px solid #44434d; + border-bottom: 1px solid #44434d; + border-left: 1px solid #44434d; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +code.language-mermaid { + padding: 0; + background-color: inherit; + border: 0; } + +.highlight, +pre.highlight { + background: #31343f; + color: #dee2f7; } + +.highlight pre { + background: #31343f; } + +.text-grey-dk-000 { + color: #959396 !important; } + +.text-grey-dk-100 { + color: #5c5962 !important; } + +.text-grey-dk-200 { + color: #44434d !important; } + +.text-grey-dk-250 { + color: #302d36 !important; } + +.text-grey-dk-300 { + color: #27262b !important; } + +.text-grey-lt-000 { + color: #f5f6fa !important; } + +.text-grey-lt-100 { + color: #eeebee !important; } + +.text-grey-lt-200 { + color: #ecebed !important; } + +.text-grey-lt-300 { + color: #e6e1e8 !important; } + +.text-blue-000 { + color: #2c84fa !important; } + +.text-blue-100 { + color: #2869e6 !important; } + +.text-blue-200 { + color: #264caf !important; } + +.text-blue-300 { + color: #183385 !important; } + +.text-green-000 { + color: #41d693 !important; } + +.text-green-100 { + color: #11b584 !important; } + +.text-green-200 { + color: #009c7b !important; } + +.text-green-300 { + color: #026e57 !important; } + +.text-purple-000 { + color: #7253ed !important; } + +.text-purple-100 { + color: #5e41d0 !important; } + +.text-purple-200 { + color: #4e26af !important; } + +.text-purple-300 { + color: #381885 !important; } + +.text-yellow-000 { + color: #ffeb82 !important; } + +.text-yellow-100 { + color: #fadf50 !important; } + +.text-yellow-200 { + color: #f7d12e !important; } + +.text-yellow-300 { + color: #e7af06 !important; } + +.text-red-000 { + color: #f77e7e !important; } + +.text-red-100 { + color: #f96e65 !important; } + +.text-red-200 { + color: #e94c4c !important; } + +.text-red-300 { + color: #dd2e2e !important; } + +.bg-grey-dk-000 { + background-color: #959396 !important; } + +.bg-grey-dk-100 { + background-color: #5c5962 !important; } + +.bg-grey-dk-200 { + background-color: #44434d !important; } + +.bg-grey-dk-250 { + background-color: #302d36 !important; } + +.bg-grey-dk-300 { + background-color: #27262b !important; } + +.bg-grey-lt-000 { + background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { + background-color: #eeebee !important; } + +.bg-grey-lt-200 { + background-color: #ecebed !important; } + +.bg-grey-lt-300 { + background-color: #e6e1e8 !important; } + +.bg-blue-000 { + background-color: #2c84fa !important; } + +.bg-blue-100 { + background-color: #2869e6 !important; } + +.bg-blue-200 { + background-color: #264caf !important; } + +.bg-blue-300 { + background-color: #183385 !important; } + +.bg-green-000 { + background-color: #41d693 !important; } + +.bg-green-100 { + background-color: #11b584 !important; } + +.bg-green-200 { + background-color: #009c7b !important; } + +.bg-green-300 { + background-color: #026e57 !important; } + +.bg-purple-000 { + background-color: #7253ed !important; } + +.bg-purple-100 { + background-color: #5e41d0 !important; } + +.bg-purple-200 { + background-color: #4e26af !important; } + +.bg-purple-300 { + background-color: #381885 !important; } + +.bg-yellow-000 { + background-color: #ffeb82 !important; } + +.bg-yellow-100 { + background-color: #fadf50 !important; } + +.bg-yellow-200 { + background-color: #f7d12e !important; } + +.bg-yellow-300 { + background-color: #e7af06 !important; } + +.bg-red-000 { + background-color: #f77e7e !important; } + +.bg-red-100 { + background-color: #f96e65 !important; } + +.bg-red-200 { + background-color: #e94c4c !important; } + +.bg-red-300 { + background-color: #dd2e2e !important; } + +.d-block { + display: block !important; } + +.d-flex { + display: flex !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-none { + display: none !important; } + +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.flex-justify-start { + justify-content: flex-start !important; } + +.flex-justify-end { + justify-content: flex-end !important; } + +.flex-justify-between { + justify-content: space-between !important; } + +.flex-justify-around { + justify-content: space-around !important; } + +.v-align-baseline { + vertical-align: baseline !important; } + +.v-align-bottom { + vertical-align: bottom !important; } + +.v-align-middle { + vertical-align: middle !important; } + +.v-align-text-bottom { + vertical-align: text-bottom !important; } + +.v-align-text-top { + vertical-align: text-top !important; } + +.v-align-top { + vertical-align: top !important; } + +.fs-1 { + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .fs-1 { + font-size: 0.625rem !important; } } + +.fs-2 { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .fs-2 { + font-size: 0.75rem !important; } } + +.fs-3 { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .fs-3 { + font-size: 0.875rem !important; } } + +.fs-4 { + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .fs-4 { + font-size: 1rem !important; } } + +.fs-5 { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + .fs-5 { + font-size: 1.125rem !important; } } + +.fs-6 { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + .fs-6 { + font-size: 1.5rem !important; + line-height: 1.25; } } + +.fs-7 { + font-size: 1.5rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-7 { + font-size: 2rem !important; } } + +.fs-8 { + font-size: 2rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-8 { + font-size: 2.25rem !important; } } + +.fs-9 { + font-size: 2.25rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-9 { + font-size: 2.625rem !important; } } + +.fs-10 { + font-size: 2.625rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-10 { + font-size: 3rem !important; } } + +.fw-300 { + font-weight: 300 !important; } + +.fw-400 { + font-weight: 400 !important; } + +.fw-500 { + font-weight: 500 !important; } + +.fw-700 { + font-weight: 700 !important; } + +.lh-0 { + line-height: 0 !important; } + +.lh-default { + line-height: 1.4; } + +.lh-tight { + line-height: 1.25; } + +.ls-5 { + letter-spacing: 0.05em !important; } + +.ls-10 { + letter-spacing: 0.1em !important; } + +.ls-0 { + letter-spacing: 0 !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.list-style-none { + padding: 0 !important; + margin: 0 !important; + list-style: none !important; } + .list-style-none li::before { + display: none !important; } + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0 { + margin-top: 0 !important; } + +.mr-0 { + margin-right: 0 !important; } + +.mb-0 { + margin-bottom: 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; } + +.mxn-0 { + margin-right: -0 !important; + margin-left: -0 !important; } + +.mx-0-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1 { + margin-top: 0.25rem !important; } + +.mr-1 { + margin-right: 0.25rem !important; } + +.mb-1 { + margin-bottom: 0.25rem !important; } + +.ml-1 { + margin-left: 0.25rem !important; } + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + +.mxn-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } + +.mx-1-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2 { + margin-top: 0.5rem !important; } + +.mr-2 { + margin-right: 0.5rem !important; } + +.mb-2 { + margin-bottom: 0.5rem !important; } + +.ml-2 { + margin-left: 0.5rem !important; } + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + +.mxn-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } + +.mx-2-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-3 { + margin: 0.75rem !important; } + +.mt-3 { + margin-top: 0.75rem !important; } + +.mr-3 { + margin-right: 0.75rem !important; } + +.mb-3 { + margin-bottom: 0.75rem !important; } + +.ml-3 { + margin-left: 0.75rem !important; } + +.mx-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + +.mxn-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } + +.mx-3-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-4 { + margin: 1rem !important; } + +.mt-4 { + margin-top: 1rem !important; } + +.mr-4 { + margin-right: 1rem !important; } + +.mb-4 { + margin-bottom: 1rem !important; } + +.ml-4 { + margin-left: 1rem !important; } + +.mx-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + +.mxn-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } + +.mx-4-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-5 { + margin: 1.5rem !important; } + +.mt-5 { + margin-top: 1.5rem !important; } + +.mr-5 { + margin-right: 1.5rem !important; } + +.mb-5 { + margin-bottom: 1.5rem !important; } + +.ml-5 { + margin-left: 1.5rem !important; } + +.mx-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + +.my-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + +.mxn-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } + +.mx-5-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-6 { + margin: 2rem !important; } + +.mt-6 { + margin-top: 2rem !important; } + +.mr-6 { + margin-right: 2rem !important; } + +.mb-6 { + margin-bottom: 2rem !important; } + +.ml-6 { + margin-left: 2rem !important; } + +.mx-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + +.my-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + +.mxn-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } + +.mx-6-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-7 { + margin: 2.5rem !important; } + +.mt-7 { + margin-top: 2.5rem !important; } + +.mr-7 { + margin-right: 2.5rem !important; } + +.mb-7 { + margin-bottom: 2.5rem !important; } + +.ml-7 { + margin-left: 2.5rem !important; } + +.mx-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + +.my-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + +.mxn-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } + +.mx-7-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-8 { + margin: 3rem !important; } + +.mt-8 { + margin-top: 3rem !important; } + +.mr-8 { + margin-right: 3rem !important; } + +.mb-8 { + margin-bottom: 3rem !important; } + +.ml-8 { + margin-left: 3rem !important; } + +.mx-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + +.my-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + +.mxn-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } + +.mx-8-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-9 { + margin: 3.5rem !important; } + +.mt-9 { + margin-top: 3.5rem !important; } + +.mr-9 { + margin-right: 3.5rem !important; } + +.mb-9 { + margin-bottom: 3.5rem !important; } + +.ml-9 { + margin-left: 3.5rem !important; } + +.mx-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + +.my-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + +.mxn-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } + +.mx-9-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-10 { + margin: 4rem !important; } + +.mt-10 { + margin-top: 4rem !important; } + +.mr-10 { + margin-right: 4rem !important; } + +.mb-10 { + margin-bottom: 4rem !important; } + +.ml-10 { + margin-left: 4rem !important; } + +.mx-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + +.my-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + +.mxn-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } + +.mx-10-auto { + margin-right: auto !important; + margin-left: auto !important; } + +@media (min-width: 20rem) { + .m-xs-0 { + margin: 0 !important; } + + .mt-xs-0 { + margin-top: 0 !important; } + + .mr-xs-0 { + margin-right: 0 !important; } + + .mb-xs-0 { + margin-bottom: 0 !important; } + + .ml-xs-0 { + margin-left: 0 !important; } + + .mx-xs-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + .my-xs-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + .mxn-xs-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 20rem) { + .m-xs-1 { + margin: 0.25rem !important; } + + .mt-xs-1 { + margin-top: 0.25rem !important; } + + .mr-xs-1 { + margin-right: 0.25rem !important; } + + .mb-xs-1 { + margin-bottom: 0.25rem !important; } + + .ml-xs-1 { + margin-left: 0.25rem !important; } + + .mx-xs-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xs-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xs-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 20rem) { + .m-xs-2 { + margin: 0.5rem !important; } + + .mt-xs-2 { + margin-top: 0.5rem !important; } + + .mr-xs-2 { + margin-right: 0.5rem !important; } + + .mb-xs-2 { + margin-bottom: 0.5rem !important; } + + .ml-xs-2 { + margin-left: 0.5rem !important; } + + .mx-xs-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xs-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xs-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-3 { + margin: 0.75rem !important; } + + .mt-xs-3 { + margin-top: 0.75rem !important; } + + .mr-xs-3 { + margin-right: 0.75rem !important; } + + .mb-xs-3 { + margin-bottom: 0.75rem !important; } + + .ml-xs-3 { + margin-left: 0.75rem !important; } + + .mx-xs-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xs-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xs-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 20rem) { + .m-xs-4 { + margin: 1rem !important; } + + .mt-xs-4 { + margin-top: 1rem !important; } + + .mr-xs-4 { + margin-right: 1rem !important; } + + .mb-xs-4 { + margin-bottom: 1rem !important; } + + .ml-xs-4 { + margin-left: 1rem !important; } + + .mx-xs-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xs-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xs-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 20rem) { + .m-xs-5 { + margin: 1.5rem !important; } + + .mt-xs-5 { + margin-top: 1.5rem !important; } + + .mr-xs-5 { + margin-right: 1.5rem !important; } + + .mb-xs-5 { + margin-bottom: 1.5rem !important; } + + .ml-xs-5 { + margin-left: 1.5rem !important; } + + .mx-xs-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xs-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xs-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-6 { + margin: 2rem !important; } + + .mt-xs-6 { + margin-top: 2rem !important; } + + .mr-xs-6 { + margin-right: 2rem !important; } + + .mb-xs-6 { + margin-bottom: 2rem !important; } + + .ml-xs-6 { + margin-left: 2rem !important; } + + .mx-xs-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xs-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xs-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 20rem) { + .m-xs-7 { + margin: 2.5rem !important; } + + .mt-xs-7 { + margin-top: 2.5rem !important; } + + .mr-xs-7 { + margin-right: 2.5rem !important; } + + .mb-xs-7 { + margin-bottom: 2.5rem !important; } + + .ml-xs-7 { + margin-left: 2.5rem !important; } + + .mx-xs-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xs-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xs-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-8 { + margin: 3rem !important; } + + .mt-xs-8 { + margin-top: 3rem !important; } + + .mr-xs-8 { + margin-right: 3rem !important; } + + .mb-xs-8 { + margin-bottom: 3rem !important; } + + .ml-xs-8 { + margin-left: 3rem !important; } + + .mx-xs-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xs-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xs-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 20rem) { + .m-xs-9 { + margin: 3.5rem !important; } + + .mt-xs-9 { + margin-top: 3.5rem !important; } + + .mr-xs-9 { + margin-right: 3.5rem !important; } + + .mb-xs-9 { + margin-bottom: 3.5rem !important; } + + .ml-xs-9 { + margin-left: 3.5rem !important; } + + .mx-xs-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xs-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xs-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-10 { + margin: 4rem !important; } + + .mt-xs-10 { + margin-top: 4rem !important; } + + .mr-xs-10 { + margin-right: 4rem !important; } + + .mb-xs-10 { + margin-bottom: 4rem !important; } + + .ml-xs-10 { + margin-left: 4rem !important; } + + .mx-xs-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xs-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xs-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-0 { + margin: 0 !important; } + + .mt-sm-0 { + margin-top: 0 !important; } + + .mr-sm-0 { + margin-right: 0 !important; } + + .mb-sm-0 { + margin-bottom: 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; } + + .mxn-sm-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 31.25rem) { + .m-sm-1 { + margin: 0.25rem !important; } + + .mt-sm-1 { + margin-top: 0.25rem !important; } + + .mr-sm-1 { + margin-right: 0.25rem !important; } + + .mb-sm-1 { + margin-bottom: 0.25rem !important; } + + .ml-sm-1 { + margin-left: 0.25rem !important; } + + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-sm-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-2 { + margin: 0.5rem !important; } + + .mt-sm-2 { + margin-top: 0.5rem !important; } + + .mr-sm-2 { + margin-right: 0.5rem !important; } + + .mb-sm-2 { + margin-bottom: 0.5rem !important; } + + .ml-sm-2 { + margin-left: 0.5rem !important; } + + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-sm-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-3 { + margin: 0.75rem !important; } + + .mt-sm-3 { + margin-top: 0.75rem !important; } + + .mr-sm-3 { + margin-right: 0.75rem !important; } + + .mb-sm-3 { + margin-bottom: 0.75rem !important; } + + .ml-sm-3 { + margin-left: 0.75rem !important; } + + .mx-sm-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-sm-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-sm-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-4 { + margin: 1rem !important; } + + .mt-sm-4 { + margin-top: 1rem !important; } + + .mr-sm-4 { + margin-right: 1rem !important; } + + .mb-sm-4 { + margin-bottom: 1rem !important; } + + .ml-sm-4 { + margin-left: 1rem !important; } + + .mx-sm-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-sm-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-sm-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-5 { + margin: 1.5rem !important; } + + .mt-sm-5 { + margin-top: 1.5rem !important; } + + .mr-sm-5 { + margin-right: 1.5rem !important; } + + .mb-sm-5 { + margin-bottom: 1.5rem !important; } + + .ml-sm-5 { + margin-left: 1.5rem !important; } + + .mx-sm-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-sm-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-sm-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-6 { + margin: 2rem !important; } + + .mt-sm-6 { + margin-top: 2rem !important; } + + .mr-sm-6 { + margin-right: 2rem !important; } + + .mb-sm-6 { + margin-bottom: 2rem !important; } + + .ml-sm-6 { + margin-left: 2rem !important; } + + .mx-sm-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-sm-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-sm-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-7 { + margin: 2.5rem !important; } + + .mt-sm-7 { + margin-top: 2.5rem !important; } + + .mr-sm-7 { + margin-right: 2.5rem !important; } + + .mb-sm-7 { + margin-bottom: 2.5rem !important; } + + .ml-sm-7 { + margin-left: 2.5rem !important; } + + .mx-sm-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-sm-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-sm-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-8 { + margin: 3rem !important; } + + .mt-sm-8 { + margin-top: 3rem !important; } + + .mr-sm-8 { + margin-right: 3rem !important; } + + .mb-sm-8 { + margin-bottom: 3rem !important; } + + .ml-sm-8 { + margin-left: 3rem !important; } + + .mx-sm-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-sm-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-sm-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-9 { + margin: 3.5rem !important; } + + .mt-sm-9 { + margin-top: 3.5rem !important; } + + .mr-sm-9 { + margin-right: 3.5rem !important; } + + .mb-sm-9 { + margin-bottom: 3.5rem !important; } + + .ml-sm-9 { + margin-left: 3.5rem !important; } + + .mx-sm-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-sm-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-sm-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-10 { + margin: 4rem !important; } + + .mt-sm-10 { + margin-top: 4rem !important; } + + .mr-sm-10 { + margin-right: 4rem !important; } + + .mb-sm-10 { + margin-bottom: 4rem !important; } + + .ml-sm-10 { + margin-left: 4rem !important; } + + .mx-sm-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-sm-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-sm-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 50rem) { + .m-md-0 { + margin: 0 !important; } + + .mt-md-0 { + margin-top: 0 !important; } + + .mr-md-0 { + margin-right: 0 !important; } + + .mb-md-0 { + margin-bottom: 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; } + + .mxn-md-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 50rem) { + .m-md-1 { + margin: 0.25rem !important; } + + .mt-md-1 { + margin-top: 0.25rem !important; } + + .mr-md-1 { + margin-right: 0.25rem !important; } + + .mb-md-1 { + margin-bottom: 0.25rem !important; } + + .ml-md-1 { + margin-left: 0.25rem !important; } + + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-md-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 50rem) { + .m-md-2 { + margin: 0.5rem !important; } + + .mt-md-2 { + margin-top: 0.5rem !important; } + + .mr-md-2 { + margin-right: 0.5rem !important; } + + .mb-md-2 { + margin-bottom: 0.5rem !important; } + + .ml-md-2 { + margin-left: 0.5rem !important; } + + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-md-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 50rem) { + .m-md-3 { + margin: 0.75rem !important; } + + .mt-md-3 { + margin-top: 0.75rem !important; } + + .mr-md-3 { + margin-right: 0.75rem !important; } + + .mb-md-3 { + margin-bottom: 0.75rem !important; } + + .ml-md-3 { + margin-left: 0.75rem !important; } + + .mx-md-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-md-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-md-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 50rem) { + .m-md-4 { + margin: 1rem !important; } + + .mt-md-4 { + margin-top: 1rem !important; } + + .mr-md-4 { + margin-right: 1rem !important; } + + .mb-md-4 { + margin-bottom: 1rem !important; } + + .ml-md-4 { + margin-left: 1rem !important; } + + .mx-md-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-md-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-md-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 50rem) { + .m-md-5 { + margin: 1.5rem !important; } + + .mt-md-5 { + margin-top: 1.5rem !important; } + + .mr-md-5 { + margin-right: 1.5rem !important; } + + .mb-md-5 { + margin-bottom: 1.5rem !important; } + + .ml-md-5 { + margin-left: 1.5rem !important; } + + .mx-md-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-md-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-md-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 50rem) { + .m-md-6 { + margin: 2rem !important; } + + .mt-md-6 { + margin-top: 2rem !important; } + + .mr-md-6 { + margin-right: 2rem !important; } + + .mb-md-6 { + margin-bottom: 2rem !important; } + + .ml-md-6 { + margin-left: 2rem !important; } + + .mx-md-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-md-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-md-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 50rem) { + .m-md-7 { + margin: 2.5rem !important; } + + .mt-md-7 { + margin-top: 2.5rem !important; } + + .mr-md-7 { + margin-right: 2.5rem !important; } + + .mb-md-7 { + margin-bottom: 2.5rem !important; } + + .ml-md-7 { + margin-left: 2.5rem !important; } + + .mx-md-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-md-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-md-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 50rem) { + .m-md-8 { + margin: 3rem !important; } + + .mt-md-8 { + margin-top: 3rem !important; } + + .mr-md-8 { + margin-right: 3rem !important; } + + .mb-md-8 { + margin-bottom: 3rem !important; } + + .ml-md-8 { + margin-left: 3rem !important; } + + .mx-md-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-md-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-md-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 50rem) { + .m-md-9 { + margin: 3.5rem !important; } + + .mt-md-9 { + margin-top: 3.5rem !important; } + + .mr-md-9 { + margin-right: 3.5rem !important; } + + .mb-md-9 { + margin-bottom: 3.5rem !important; } + + .ml-md-9 { + margin-left: 3.5rem !important; } + + .mx-md-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-md-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-md-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 50rem) { + .m-md-10 { + margin: 4rem !important; } + + .mt-md-10 { + margin-top: 4rem !important; } + + .mr-md-10 { + margin-right: 4rem !important; } + + .mb-md-10 { + margin-bottom: 4rem !important; } + + .ml-md-10 { + margin-left: 4rem !important; } + + .mx-md-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-md-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-md-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-0 { + margin: 0 !important; } + + .mt-lg-0 { + margin-top: 0 !important; } + + .mr-lg-0 { + margin-right: 0 !important; } + + .mb-lg-0 { + margin-bottom: 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; } + + .mxn-lg-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 66.5rem) { + .m-lg-1 { + margin: 0.25rem !important; } + + .mt-lg-1 { + margin-top: 0.25rem !important; } + + .mr-lg-1 { + margin-right: 0.25rem !important; } + + .mb-lg-1 { + margin-bottom: 0.25rem !important; } + + .ml-lg-1 { + margin-left: 0.25rem !important; } + + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-lg-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-2 { + margin: 0.5rem !important; } + + .mt-lg-2 { + margin-top: 0.5rem !important; } + + .mr-lg-2 { + margin-right: 0.5rem !important; } + + .mb-lg-2 { + margin-bottom: 0.5rem !important; } + + .ml-lg-2 { + margin-left: 0.5rem !important; } + + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-lg-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-3 { + margin: 0.75rem !important; } + + .mt-lg-3 { + margin-top: 0.75rem !important; } + + .mr-lg-3 { + margin-right: 0.75rem !important; } + + .mb-lg-3 { + margin-bottom: 0.75rem !important; } + + .ml-lg-3 { + margin-left: 0.75rem !important; } + + .mx-lg-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-lg-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-lg-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-4 { + margin: 1rem !important; } + + .mt-lg-4 { + margin-top: 1rem !important; } + + .mr-lg-4 { + margin-right: 1rem !important; } + + .mb-lg-4 { + margin-bottom: 1rem !important; } + + .ml-lg-4 { + margin-left: 1rem !important; } + + .mx-lg-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-lg-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-lg-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-5 { + margin: 1.5rem !important; } + + .mt-lg-5 { + margin-top: 1.5rem !important; } + + .mr-lg-5 { + margin-right: 1.5rem !important; } + + .mb-lg-5 { + margin-bottom: 1.5rem !important; } + + .ml-lg-5 { + margin-left: 1.5rem !important; } + + .mx-lg-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-lg-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-lg-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-6 { + margin: 2rem !important; } + + .mt-lg-6 { + margin-top: 2rem !important; } + + .mr-lg-6 { + margin-right: 2rem !important; } + + .mb-lg-6 { + margin-bottom: 2rem !important; } + + .ml-lg-6 { + margin-left: 2rem !important; } + + .mx-lg-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-lg-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-lg-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-7 { + margin: 2.5rem !important; } + + .mt-lg-7 { + margin-top: 2.5rem !important; } + + .mr-lg-7 { + margin-right: 2.5rem !important; } + + .mb-lg-7 { + margin-bottom: 2.5rem !important; } + + .ml-lg-7 { + margin-left: 2.5rem !important; } + + .mx-lg-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-lg-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-lg-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-8 { + margin: 3rem !important; } + + .mt-lg-8 { + margin-top: 3rem !important; } + + .mr-lg-8 { + margin-right: 3rem !important; } + + .mb-lg-8 { + margin-bottom: 3rem !important; } + + .ml-lg-8 { + margin-left: 3rem !important; } + + .mx-lg-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-lg-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-lg-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-9 { + margin: 3.5rem !important; } + + .mt-lg-9 { + margin-top: 3.5rem !important; } + + .mr-lg-9 { + margin-right: 3.5rem !important; } + + .mb-lg-9 { + margin-bottom: 3.5rem !important; } + + .ml-lg-9 { + margin-left: 3.5rem !important; } + + .mx-lg-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-lg-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-lg-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-10 { + margin: 4rem !important; } + + .mt-lg-10 { + margin-top: 4rem !important; } + + .mr-lg-10 { + margin-right: 4rem !important; } + + .mb-lg-10 { + margin-bottom: 4rem !important; } + + .ml-lg-10 { + margin-left: 4rem !important; } + + .mx-lg-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-lg-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-lg-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-0 { + margin: 0 !important; } + + .mt-xl-0 { + margin-top: 0 !important; } + + .mr-xl-0 { + margin-right: 0 !important; } + + .mb-xl-0 { + margin-bottom: 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; } + + .mxn-xl-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 87.5rem) { + .m-xl-1 { + margin: 0.25rem !important; } + + .mt-xl-1 { + margin-top: 0.25rem !important; } + + .mr-xl-1 { + margin-right: 0.25rem !important; } + + .mb-xl-1 { + margin-bottom: 0.25rem !important; } + + .ml-xl-1 { + margin-left: 0.25rem !important; } + + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xl-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-2 { + margin: 0.5rem !important; } + + .mt-xl-2 { + margin-top: 0.5rem !important; } + + .mr-xl-2 { + margin-right: 0.5rem !important; } + + .mb-xl-2 { + margin-bottom: 0.5rem !important; } + + .ml-xl-2 { + margin-left: 0.5rem !important; } + + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xl-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-3 { + margin: 0.75rem !important; } + + .mt-xl-3 { + margin-top: 0.75rem !important; } + + .mr-xl-3 { + margin-right: 0.75rem !important; } + + .mb-xl-3 { + margin-bottom: 0.75rem !important; } + + .ml-xl-3 { + margin-left: 0.75rem !important; } + + .mx-xl-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xl-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xl-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-4 { + margin: 1rem !important; } + + .mt-xl-4 { + margin-top: 1rem !important; } + + .mr-xl-4 { + margin-right: 1rem !important; } + + .mb-xl-4 { + margin-bottom: 1rem !important; } + + .ml-xl-4 { + margin-left: 1rem !important; } + + .mx-xl-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xl-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xl-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-5 { + margin: 1.5rem !important; } + + .mt-xl-5 { + margin-top: 1.5rem !important; } + + .mr-xl-5 { + margin-right: 1.5rem !important; } + + .mb-xl-5 { + margin-bottom: 1.5rem !important; } + + .ml-xl-5 { + margin-left: 1.5rem !important; } + + .mx-xl-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xl-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xl-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-6 { + margin: 2rem !important; } + + .mt-xl-6 { + margin-top: 2rem !important; } + + .mr-xl-6 { + margin-right: 2rem !important; } + + .mb-xl-6 { + margin-bottom: 2rem !important; } + + .ml-xl-6 { + margin-left: 2rem !important; } + + .mx-xl-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xl-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xl-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-7 { + margin: 2.5rem !important; } + + .mt-xl-7 { + margin-top: 2.5rem !important; } + + .mr-xl-7 { + margin-right: 2.5rem !important; } + + .mb-xl-7 { + margin-bottom: 2.5rem !important; } + + .ml-xl-7 { + margin-left: 2.5rem !important; } + + .mx-xl-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xl-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xl-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-8 { + margin: 3rem !important; } + + .mt-xl-8 { + margin-top: 3rem !important; } + + .mr-xl-8 { + margin-right: 3rem !important; } + + .mb-xl-8 { + margin-bottom: 3rem !important; } + + .ml-xl-8 { + margin-left: 3rem !important; } + + .mx-xl-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xl-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xl-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-9 { + margin: 3.5rem !important; } + + .mt-xl-9 { + margin-top: 3.5rem !important; } + + .mr-xl-9 { + margin-right: 3.5rem !important; } + + .mb-xl-9 { + margin-bottom: 3.5rem !important; } + + .ml-xl-9 { + margin-left: 3.5rem !important; } + + .mx-xl-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xl-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xl-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-10 { + margin: 4rem !important; } + + .mt-xl-10 { + margin-top: 4rem !important; } + + .mr-xl-10 { + margin-right: 4rem !important; } + + .mb-xl-10 { + margin-bottom: 4rem !important; } + + .ml-xl-10 { + margin-left: 4rem !important; } + + .mx-xl-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xl-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xl-10 { + margin-right: -4rem !important; + margin-left: -4rem !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: 0.25rem !important; } + +.pt-1 { + padding-top: 0.25rem !important; } + +.pr-1 { + padding-right: 0.25rem !important; } + +.pb-1 { + padding-bottom: 0.25rem !important; } + +.pl-1 { + padding-left: 0.25rem !important; } + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2 { + padding-top: 0.5rem !important; } + +.pr-2 { + padding-right: 0.5rem !important; } + +.pb-2 { + padding-bottom: 0.5rem !important; } + +.pl-2 { + padding-left: 0.5rem !important; } + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + +.p-3 { + padding: 0.75rem !important; } + +.pt-3 { + padding-top: 0.75rem !important; } + +.pr-3 { + padding-right: 0.75rem !important; } + +.pb-3 { + padding-bottom: 0.75rem !important; } + +.pl-3 { + padding-left: 0.75rem !important; } + +.px-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + +.p-4 { + padding: 1rem !important; } + +.pt-4 { + padding-top: 1rem !important; } + +.pr-4 { + padding-right: 1rem !important; } + +.pb-4 { + padding-bottom: 1rem !important; } + +.pl-4 { + padding-left: 1rem !important; } + +.px-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + +.p-5 { + padding: 1.5rem !important; } + +.pt-5 { + padding-top: 1.5rem !important; } + +.pr-5 { + padding-right: 1.5rem !important; } + +.pb-5 { + padding-bottom: 1.5rem !important; } + +.pl-5 { + padding-left: 1.5rem !important; } + +.px-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + +.py-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + +.p-6 { + padding: 2rem !important; } + +.pt-6 { + padding-top: 2rem !important; } + +.pr-6 { + padding-right: 2rem !important; } + +.pb-6 { + padding-bottom: 2rem !important; } + +.pl-6 { + padding-left: 2rem !important; } + +.px-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + +.py-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + +.p-7 { + padding: 2.5rem !important; } + +.pt-7 { + padding-top: 2.5rem !important; } + +.pr-7 { + padding-right: 2.5rem !important; } + +.pb-7 { + padding-bottom: 2.5rem !important; } + +.pl-7 { + padding-left: 2.5rem !important; } + +.px-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + +.py-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + +.p-8 { + padding: 3rem !important; } + +.pt-8 { + padding-top: 3rem !important; } + +.pr-8 { + padding-right: 3rem !important; } + +.pb-8 { + padding-bottom: 3rem !important; } + +.pl-8 { + padding-left: 3rem !important; } + +.px-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + +.py-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + +.p-9 { + padding: 3.5rem !important; } + +.pt-9 { + padding-top: 3.5rem !important; } + +.pr-9 { + padding-right: 3.5rem !important; } + +.pb-9 { + padding-bottom: 3.5rem !important; } + +.pl-9 { + padding-left: 3.5rem !important; } + +.px-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + +.py-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + +.p-10 { + padding: 4rem !important; } + +.pt-10 { + padding-top: 4rem !important; } + +.pr-10 { + padding-right: 4rem !important; } + +.pb-10 { + padding-bottom: 4rem !important; } + +.pl-10 { + padding-left: 4rem !important; } + +.px-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + +.py-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { + .p-xs-0 { + padding: 0 !important; } + + .pt-xs-0 { + padding-top: 0 !important; } + + .pr-xs-0 { + padding-right: 0 !important; } + + .pb-xs-0 { + padding-bottom: 0 !important; } + + .pl-xs-0 { + padding-left: 0 !important; } + + .px-xs-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + .py-xs-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + .p-xs-1 { + padding: 0.25rem !important; } + + .pt-xs-1 { + padding-top: 0.25rem !important; } + + .pr-xs-1 { + padding-right: 0.25rem !important; } + + .pb-xs-1 { + padding-bottom: 0.25rem !important; } + + .pl-xs-1 { + padding-left: 0.25rem !important; } + + .px-xs-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xs-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xs-2 { + padding: 0.5rem !important; } + + .pt-xs-2 { + padding-top: 0.5rem !important; } + + .pr-xs-2 { + padding-right: 0.5rem !important; } + + .pb-xs-2 { + padding-bottom: 0.5rem !important; } + + .pl-xs-2 { + padding-left: 0.5rem !important; } + + .px-xs-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xs-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xs-3 { + padding: 0.75rem !important; } + + .pt-xs-3 { + padding-top: 0.75rem !important; } + + .pr-xs-3 { + padding-right: 0.75rem !important; } + + .pb-xs-3 { + padding-bottom: 0.75rem !important; } + + .pl-xs-3 { + padding-left: 0.75rem !important; } + + .px-xs-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xs-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xs-4 { + padding: 1rem !important; } + + .pt-xs-4 { + padding-top: 1rem !important; } + + .pr-xs-4 { + padding-right: 1rem !important; } + + .pb-xs-4 { + padding-bottom: 1rem !important; } + + .pl-xs-4 { + padding-left: 1rem !important; } + + .px-xs-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xs-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xs-5 { + padding: 1.5rem !important; } + + .pt-xs-5 { + padding-top: 1.5rem !important; } + + .pr-xs-5 { + padding-right: 1.5rem !important; } + + .pb-xs-5 { + padding-bottom: 1.5rem !important; } + + .pl-xs-5 { + padding-left: 1.5rem !important; } + + .px-xs-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xs-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xs-6 { + padding: 2rem !important; } + + .pt-xs-6 { + padding-top: 2rem !important; } + + .pr-xs-6 { + padding-right: 2rem !important; } + + .pb-xs-6 { + padding-bottom: 2rem !important; } + + .pl-xs-6 { + padding-left: 2rem !important; } + + .px-xs-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xs-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xs-7 { + padding: 2.5rem !important; } + + .pt-xs-7 { + padding-top: 2.5rem !important; } + + .pr-xs-7 { + padding-right: 2.5rem !important; } + + .pb-xs-7 { + padding-bottom: 2.5rem !important; } + + .pl-xs-7 { + padding-left: 2.5rem !important; } + + .px-xs-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xs-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xs-8 { + padding: 3rem !important; } + + .pt-xs-8 { + padding-top: 3rem !important; } + + .pr-xs-8 { + padding-right: 3rem !important; } + + .pb-xs-8 { + padding-bottom: 3rem !important; } + + .pl-xs-8 { + padding-left: 3rem !important; } + + .px-xs-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xs-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xs-9 { + padding: 3.5rem !important; } + + .pt-xs-9 { + padding-top: 3.5rem !important; } + + .pr-xs-9 { + padding-right: 3.5rem !important; } + + .pb-xs-9 { + padding-bottom: 3.5rem !important; } + + .pl-xs-9 { + padding-left: 3.5rem !important; } + + .px-xs-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xs-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xs-10 { + padding: 4rem !important; } + + .pt-xs-10 { + padding-top: 4rem !important; } + + .pr-xs-10 { + padding-right: 4rem !important; } + + .pb-xs-10 { + padding-bottom: 4rem !important; } + + .pl-xs-10 { + padding-left: 4rem !important; } + + .px-xs-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xs-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 31.25rem) { + .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: 0.25rem !important; } + + .pt-sm-1 { + padding-top: 0.25rem !important; } + + .pr-sm-1 { + padding-right: 0.25rem !important; } + + .pb-sm-1 { + padding-bottom: 0.25rem !important; } + + .pl-sm-1 { + padding-left: 0.25rem !important; } + + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-sm-2 { + padding: 0.5rem !important; } + + .pt-sm-2 { + padding-top: 0.5rem !important; } + + .pr-sm-2 { + padding-right: 0.5rem !important; } + + .pb-sm-2 { + padding-bottom: 0.5rem !important; } + + .pl-sm-2 { + padding-left: 0.5rem !important; } + + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-sm-3 { + padding: 0.75rem !important; } + + .pt-sm-3 { + padding-top: 0.75rem !important; } + + .pr-sm-3 { + padding-right: 0.75rem !important; } + + .pb-sm-3 { + padding-bottom: 0.75rem !important; } + + .pl-sm-3 { + padding-left: 0.75rem !important; } + + .px-sm-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-sm-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-sm-4 { + padding: 1rem !important; } + + .pt-sm-4 { + padding-top: 1rem !important; } + + .pr-sm-4 { + padding-right: 1rem !important; } + + .pb-sm-4 { + padding-bottom: 1rem !important; } + + .pl-sm-4 { + padding-left: 1rem !important; } + + .px-sm-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-sm-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-sm-5 { + padding: 1.5rem !important; } + + .pt-sm-5 { + padding-top: 1.5rem !important; } + + .pr-sm-5 { + padding-right: 1.5rem !important; } + + .pb-sm-5 { + padding-bottom: 1.5rem !important; } + + .pl-sm-5 { + padding-left: 1.5rem !important; } + + .px-sm-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-sm-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-sm-6 { + padding: 2rem !important; } + + .pt-sm-6 { + padding-top: 2rem !important; } + + .pr-sm-6 { + padding-right: 2rem !important; } + + .pb-sm-6 { + padding-bottom: 2rem !important; } + + .pl-sm-6 { + padding-left: 2rem !important; } + + .px-sm-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-sm-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-sm-7 { + padding: 2.5rem !important; } + + .pt-sm-7 { + padding-top: 2.5rem !important; } + + .pr-sm-7 { + padding-right: 2.5rem !important; } + + .pb-sm-7 { + padding-bottom: 2.5rem !important; } + + .pl-sm-7 { + padding-left: 2.5rem !important; } + + .px-sm-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-sm-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-sm-8 { + padding: 3rem !important; } + + .pt-sm-8 { + padding-top: 3rem !important; } + + .pr-sm-8 { + padding-right: 3rem !important; } + + .pb-sm-8 { + padding-bottom: 3rem !important; } + + .pl-sm-8 { + padding-left: 3rem !important; } + + .px-sm-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-sm-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-sm-9 { + padding: 3.5rem !important; } + + .pt-sm-9 { + padding-top: 3.5rem !important; } + + .pr-sm-9 { + padding-right: 3.5rem !important; } + + .pb-sm-9 { + padding-bottom: 3.5rem !important; } + + .pl-sm-9 { + padding-left: 3.5rem !important; } + + .px-sm-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-sm-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-sm-10 { + padding: 4rem !important; } + + .pt-sm-10 { + padding-top: 4rem !important; } + + .pr-sm-10 { + padding-right: 4rem !important; } + + .pb-sm-10 { + padding-bottom: 4rem !important; } + + .pl-sm-10 { + padding-left: 4rem !important; } + + .px-sm-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-sm-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 50rem) { + .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: 0.25rem !important; } + + .pt-md-1 { + padding-top: 0.25rem !important; } + + .pr-md-1 { + padding-right: 0.25rem !important; } + + .pb-md-1 { + padding-bottom: 0.25rem !important; } + + .pl-md-1 { + padding-left: 0.25rem !important; } + + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-md-2 { + padding: 0.5rem !important; } + + .pt-md-2 { + padding-top: 0.5rem !important; } + + .pr-md-2 { + padding-right: 0.5rem !important; } + + .pb-md-2 { + padding-bottom: 0.5rem !important; } + + .pl-md-2 { + padding-left: 0.5rem !important; } + + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-md-3 { + padding: 0.75rem !important; } + + .pt-md-3 { + padding-top: 0.75rem !important; } + + .pr-md-3 { + padding-right: 0.75rem !important; } + + .pb-md-3 { + padding-bottom: 0.75rem !important; } + + .pl-md-3 { + padding-left: 0.75rem !important; } + + .px-md-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-md-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-md-4 { + padding: 1rem !important; } + + .pt-md-4 { + padding-top: 1rem !important; } + + .pr-md-4 { + padding-right: 1rem !important; } + + .pb-md-4 { + padding-bottom: 1rem !important; } + + .pl-md-4 { + padding-left: 1rem !important; } + + .px-md-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-md-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-md-5 { + padding: 1.5rem !important; } + + .pt-md-5 { + padding-top: 1.5rem !important; } + + .pr-md-5 { + padding-right: 1.5rem !important; } + + .pb-md-5 { + padding-bottom: 1.5rem !important; } + + .pl-md-5 { + padding-left: 1.5rem !important; } + + .px-md-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-md-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-md-6 { + padding: 2rem !important; } + + .pt-md-6 { + padding-top: 2rem !important; } + + .pr-md-6 { + padding-right: 2rem !important; } + + .pb-md-6 { + padding-bottom: 2rem !important; } + + .pl-md-6 { + padding-left: 2rem !important; } + + .px-md-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-md-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-md-7 { + padding: 2.5rem !important; } + + .pt-md-7 { + padding-top: 2.5rem !important; } + + .pr-md-7 { + padding-right: 2.5rem !important; } + + .pb-md-7 { + padding-bottom: 2.5rem !important; } + + .pl-md-7 { + padding-left: 2.5rem !important; } + + .px-md-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-md-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-md-8 { + padding: 3rem !important; } + + .pt-md-8 { + padding-top: 3rem !important; } + + .pr-md-8 { + padding-right: 3rem !important; } + + .pb-md-8 { + padding-bottom: 3rem !important; } + + .pl-md-8 { + padding-left: 3rem !important; } + + .px-md-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-md-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-md-9 { + padding: 3.5rem !important; } + + .pt-md-9 { + padding-top: 3.5rem !important; } + + .pr-md-9 { + padding-right: 3.5rem !important; } + + .pb-md-9 { + padding-bottom: 3.5rem !important; } + + .pl-md-9 { + padding-left: 3.5rem !important; } + + .px-md-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-md-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-md-10 { + padding: 4rem !important; } + + .pt-md-10 { + padding-top: 4rem !important; } + + .pr-md-10 { + padding-right: 4rem !important; } + + .pb-md-10 { + padding-bottom: 4rem !important; } + + .pl-md-10 { + padding-left: 4rem !important; } + + .px-md-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-md-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 66.5rem) { + .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: 0.25rem !important; } + + .pt-lg-1 { + padding-top: 0.25rem !important; } + + .pr-lg-1 { + padding-right: 0.25rem !important; } + + .pb-lg-1 { + padding-bottom: 0.25rem !important; } + + .pl-lg-1 { + padding-left: 0.25rem !important; } + + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-lg-2 { + padding: 0.5rem !important; } + + .pt-lg-2 { + padding-top: 0.5rem !important; } + + .pr-lg-2 { + padding-right: 0.5rem !important; } + + .pb-lg-2 { + padding-bottom: 0.5rem !important; } + + .pl-lg-2 { + padding-left: 0.5rem !important; } + + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-lg-3 { + padding: 0.75rem !important; } + + .pt-lg-3 { + padding-top: 0.75rem !important; } + + .pr-lg-3 { + padding-right: 0.75rem !important; } + + .pb-lg-3 { + padding-bottom: 0.75rem !important; } + + .pl-lg-3 { + padding-left: 0.75rem !important; } + + .px-lg-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-lg-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-lg-4 { + padding: 1rem !important; } + + .pt-lg-4 { + padding-top: 1rem !important; } + + .pr-lg-4 { + padding-right: 1rem !important; } + + .pb-lg-4 { + padding-bottom: 1rem !important; } + + .pl-lg-4 { + padding-left: 1rem !important; } + + .px-lg-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-lg-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-lg-5 { + padding: 1.5rem !important; } + + .pt-lg-5 { + padding-top: 1.5rem !important; } + + .pr-lg-5 { + padding-right: 1.5rem !important; } + + .pb-lg-5 { + padding-bottom: 1.5rem !important; } + + .pl-lg-5 { + padding-left: 1.5rem !important; } + + .px-lg-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-lg-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-lg-6 { + padding: 2rem !important; } + + .pt-lg-6 { + padding-top: 2rem !important; } + + .pr-lg-6 { + padding-right: 2rem !important; } + + .pb-lg-6 { + padding-bottom: 2rem !important; } + + .pl-lg-6 { + padding-left: 2rem !important; } + + .px-lg-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-lg-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-lg-7 { + padding: 2.5rem !important; } + + .pt-lg-7 { + padding-top: 2.5rem !important; } + + .pr-lg-7 { + padding-right: 2.5rem !important; } + + .pb-lg-7 { + padding-bottom: 2.5rem !important; } + + .pl-lg-7 { + padding-left: 2.5rem !important; } + + .px-lg-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-lg-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-lg-8 { + padding: 3rem !important; } + + .pt-lg-8 { + padding-top: 3rem !important; } + + .pr-lg-8 { + padding-right: 3rem !important; } + + .pb-lg-8 { + padding-bottom: 3rem !important; } + + .pl-lg-8 { + padding-left: 3rem !important; } + + .px-lg-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-lg-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-lg-9 { + padding: 3.5rem !important; } + + .pt-lg-9 { + padding-top: 3.5rem !important; } + + .pr-lg-9 { + padding-right: 3.5rem !important; } + + .pb-lg-9 { + padding-bottom: 3.5rem !important; } + + .pl-lg-9 { + padding-left: 3.5rem !important; } + + .px-lg-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-lg-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-lg-10 { + padding: 4rem !important; } + + .pt-lg-10 { + padding-top: 4rem !important; } + + .pr-lg-10 { + padding-right: 4rem !important; } + + .pb-lg-10 { + padding-bottom: 4rem !important; } + + .pl-lg-10 { + padding-left: 4rem !important; } + + .px-lg-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-lg-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 87.5rem) { + .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: 0.25rem !important; } + + .pt-xl-1 { + padding-top: 0.25rem !important; } + + .pr-xl-1 { + padding-right: 0.25rem !important; } + + .pb-xl-1 { + padding-bottom: 0.25rem !important; } + + .pl-xl-1 { + padding-left: 0.25rem !important; } + + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xl-2 { + padding: 0.5rem !important; } + + .pt-xl-2 { + padding-top: 0.5rem !important; } + + .pr-xl-2 { + padding-right: 0.5rem !important; } + + .pb-xl-2 { + padding-bottom: 0.5rem !important; } + + .pl-xl-2 { + padding-left: 0.5rem !important; } + + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xl-3 { + padding: 0.75rem !important; } + + .pt-xl-3 { + padding-top: 0.75rem !important; } + + .pr-xl-3 { + padding-right: 0.75rem !important; } + + .pb-xl-3 { + padding-bottom: 0.75rem !important; } + + .pl-xl-3 { + padding-left: 0.75rem !important; } + + .px-xl-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xl-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xl-4 { + padding: 1rem !important; } + + .pt-xl-4 { + padding-top: 1rem !important; } + + .pr-xl-4 { + padding-right: 1rem !important; } + + .pb-xl-4 { + padding-bottom: 1rem !important; } + + .pl-xl-4 { + padding-left: 1rem !important; } + + .px-xl-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xl-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xl-5 { + padding: 1.5rem !important; } + + .pt-xl-5 { + padding-top: 1.5rem !important; } + + .pr-xl-5 { + padding-right: 1.5rem !important; } + + .pb-xl-5 { + padding-bottom: 1.5rem !important; } + + .pl-xl-5 { + padding-left: 1.5rem !important; } + + .px-xl-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xl-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xl-6 { + padding: 2rem !important; } + + .pt-xl-6 { + padding-top: 2rem !important; } + + .pr-xl-6 { + padding-right: 2rem !important; } + + .pb-xl-6 { + padding-bottom: 2rem !important; } + + .pl-xl-6 { + padding-left: 2rem !important; } + + .px-xl-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xl-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xl-7 { + padding: 2.5rem !important; } + + .pt-xl-7 { + padding-top: 2.5rem !important; } + + .pr-xl-7 { + padding-right: 2.5rem !important; } + + .pb-xl-7 { + padding-bottom: 2.5rem !important; } + + .pl-xl-7 { + padding-left: 2.5rem !important; } + + .px-xl-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xl-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xl-8 { + padding: 3rem !important; } + + .pt-xl-8 { + padding-top: 3rem !important; } + + .pr-xl-8 { + padding-right: 3rem !important; } + + .pb-xl-8 { + padding-bottom: 3rem !important; } + + .pl-xl-8 { + padding-left: 3rem !important; } + + .px-xl-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xl-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xl-9 { + padding: 3.5rem !important; } + + .pt-xl-9 { + padding-top: 3.5rem !important; } + + .pr-xl-9 { + padding-right: 3.5rem !important; } + + .pb-xl-9 { + padding-bottom: 3.5rem !important; } + + .pl-xl-9 { + padding-left: 3.5rem !important; } + + .px-xl-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xl-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xl-10 { + padding: 4rem !important; } + + .pt-xl-10 { + padding-top: 4rem !important; } + + .pr-xl-10 { + padding-right: 4rem !important; } + + .pb-xl-10 { + padding-bottom: 4rem !important; } + + .pl-xl-10 { + padding-left: 4rem !important; } + + .px-xl-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xl-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media print { + .site-footer, + .site-button, + #edit-this-page, + #back-to-top, + .site-nav, + .main-header { + display: none !important; } + + .side-bar { + width: 100%; + height: auto; + border-right: 0 !important; } + + .site-header { + border-bottom: 1px solid #44434d; } + + .site-title { + font-size: 1rem !important; + font-weight: 700 !important; } + + .text-small { + font-size: 8pt !important; } + + pre.highlight { + border: 1px solid #44434d; } + + .main { + max-width: none; + margin-left: 0; } } +a.skip-to-main { + left: -999px; + position: absolute; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; + z-index: -999; } + +a.skip-to-main:focus, +a.skip-to-main:active { + color: #2c84fa; + background-color: #27262b; + left: auto; + top: auto; + width: 30%; + height: auto; + overflow: auto; + margin: 10px 35%; + padding: 5px; + border-radius: 15px; + border: 4px solid #264caf; + text-align: center; + font-size: 1.2em; + z-index: 999; } + +div.opaque { + background-color: #27262b; } + +p.note, blockquote.note { + background: rgba(231, 175, 6, 0.2); + border-left: 4px solid #ffeb82; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note::before, blockquote.note::before { + color: #ffeb82; + content: "Note"; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + p.note > .note-title, blockquote.note > .note-title { + color: #ffeb82; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +p.note-title, blockquote.note-title { + background: rgba(231, 175, 6, 0.2); + border-left: 4px solid #ffeb82; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note-title > p:first-child, blockquote.note-title > p:first-child { + margin-top: 0; + margin-bottom: 0; + color: #ffeb82; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +blockquote.note { + margin-left: 0; + margin-right: 0; } + blockquote.note > p:first-child { + margin-top: 0; } + blockquote.note > p:last-child { + margin-bottom: 0; } + +blockquote.note-title { + margin-left: 0; + margin-right: 0; } + blockquote.note-title > p:nth-child(2) { + margin-top: 0; } + blockquote.note-title > p:last-child { + margin-bottom: 0; } diff --git a/2.12.0/assets/css/just-the-docs-default.css b/2.12.0/assets/css/just-the-docs-default.css new file mode 100644 index 000000000..221519285 --- /dev/null +++ b/2.12.0/assets/css/just-the-docs-default.css @@ -0,0 +1,17156 @@ +@charset "UTF-8"; +.highlight, +pre.highlight { + background: #f9f9f9; + color: #383942; } + +.highlight pre { + background: #f9f9f9; } + +.highlight .hll { + background: #f9f9f9; } + +.highlight .c { + color: #9fa0a6; + font-style: italic; } + +.highlight .err { + color: #fff; + background-color: #e05151; } + +.highlight .k { + color: #a625a4; } + +.highlight .l { + color: #50a04f; } + +.highlight .n { + color: #383942; } + +.highlight .o { + color: #383942; } + +.highlight .p { + color: #383942; } + +.highlight .cm { + color: #9fa0a6; + font-style: italic; } + +.highlight .cp { + color: #9fa0a6; + font-style: italic; } + +.highlight .c1 { + color: #9fa0a6; + font-style: italic; } + +.highlight .cs { + color: #9fa0a6; + font-style: italic; } + +.highlight .ge { + font-style: italic; } + +.highlight .gs { + font-weight: 700; } + +.highlight .kc { + color: #a625a4; } + +.highlight .kd { + color: #a625a4; } + +.highlight .kn { + color: #a625a4; } + +.highlight .kp { + color: #a625a4; } + +.highlight .kr { + color: #a625a4; } + +.highlight .kt { + color: #a625a4; } + +.highlight .ld { + color: #50a04f; } + +.highlight .m { + color: #b66a00; } + +.highlight .s { + color: #50a04f; } + +.highlight .na { + color: #b66a00; } + +.highlight .nb { + color: #ca7601; } + +.highlight .nc { + color: #ca7601; } + +.highlight .no { + color: #ca7601; } + +.highlight .nd { + color: #ca7601; } + +.highlight .ni { + color: #ca7601; } + +.highlight .ne { + color: #ca7601; } + +.highlight .nf { + color: #383942; } + +.highlight .nl { + color: #ca7601; } + +.highlight .nn { + color: #383942; } + +.highlight .nx { + color: #383942; } + +.highlight .py { + color: #ca7601; } + +.highlight .nt { + color: #e35549; } + +.highlight .nv { + color: #ca7601; } + +.highlight .ow { + font-weight: 700; } + +.highlight .w { + color: #f8f8f2; } + +.highlight .mf { + color: #b66a00; } + +.highlight .mh { + color: #b66a00; } + +.highlight .mi { + color: #b66a00; } + +.highlight .mo { + color: #b66a00; } + +.highlight .sb { + color: #50a04f; } + +.highlight .sc { + color: #50a04f; } + +.highlight .sd { + color: #50a04f; } + +.highlight .s2 { + color: #50a04f; } + +.highlight .se { + color: #50a04f; } + +.highlight .sh { + color: #50a04f; } + +.highlight .si { + color: #50a04f; } + +.highlight .sx { + color: #50a04f; } + +.highlight .sr { + color: #0083bb; } + +.highlight .s1 { + color: #50a04f; } + +.highlight .ss { + color: #0083bb; } + +.highlight .bp { + color: #ca7601; } + +.highlight .vc { + color: #ca7601; } + +.highlight .vg { + color: #ca7601; } + +.highlight .vi { + color: #e35549; } + +.highlight .il { + color: #b66a00; } + +.highlight .gu { + color: #75715e; } + +.highlight .gd { + color: #e05151; } + +.highlight .gi { + color: #43d089; } + +.highlight .language-json .w + .s2 { + color: #e35549; } + +.highlight .language-json .kc { + color: #0083bb; } + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; } + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; } + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; } + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; } + +* { + box-sizing: border-box; } + +html { + font-size: 0.875rem !important; + scroll-behavior: smooth; } + @media (min-width: 31.25rem) { + html { + font-size: 1rem !important; } } + +body { + font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif; + font-size: inherit; + line-height: 1.4; + color: #5c5962; + background-color: #fff; + overflow-wrap: break-word; } + +ol, +ul, +dl, +pre, +address, +blockquote, +table, +div, +hr, +form, +fieldset, +noscript .table-wrapper { + margin-top: 0; } + +h1, +h2, +h3, +h4, +h5, +h6, +#toctitle { + margin-top: 0; + margin-bottom: 1em; + font-weight: 500; + line-height: 1.25; + color: #27262b; } + +p { + margin-top: 1em; + margin-bottom: 1em; } + +a { + color: #7253ed; + text-decoration: none; } + +a:not([class]) { + text-decoration: underline; + text-decoration-color: #eeebee; + text-underline-offset: 2px; } + a:not([class]):hover { + text-decoration-color: rgba(114, 83, 237, 0.45); } + +code { + font-family: "SFMono-Regular", menlo, consolas, monospace; + font-size: 0.75em; + line-height: 1.4; } + +figure, +pre { + margin: 0; } + +li { + margin: 0.25em 0; } + +img { + max-width: 100%; + height: auto; } + +hr { + height: 1px; + padding: 0; + margin: 2rem 0; + background-color: #eeebee; + border: 0; } + +blockquote { + margin: 10px 0; + margin-block-start: 0; + margin-inline-start: 0; + padding-left: 1rem; + border-left: 3px solid #eeebee; } + +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: #f5f6fa; } + @media (min-width: 50rem) { + .side-bar { + flex-flow: column nowrap; + position: fixed; + width: 15.5rem; + height: 100%; + border-right: 1px solid #eeebee; + align-items: flex-end; } } + @media (min-width: 66.5rem) { + .side-bar { + width: calc((100% - 66.5rem) / 2 + 16.5rem); + min-width: 16.5rem; } } + +@media (min-width: 50rem) { + .main { + position: relative; + max-width: 50rem; + margin-left: 15.5rem; } } +@media (min-width: 66.5rem) { + .main { + margin-left: Max(16.5rem, calc((100% - 66.5rem) / 2 + 16.5rem)); } } + +.main-content-wrap { + padding-right: 1rem; + padding-left: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; } + @media (min-width: 50rem) { + .main-content-wrap { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 50rem) { + .main-content-wrap { + padding-top: 2rem; + padding-bottom: 2rem; } } + +.main-header { + z-index: 0; + display: none; + background-color: #f5f6fa; } + @media (min-width: 50rem) { + .main-header { + display: flex; + justify-content: space-between; + height: 3.75rem; + background-color: #fff; + border-bottom: 1px solid #eeebee; } } + .main-header.nav-open { + display: block; } + @media (min-width: 50rem) { + .main-header.nav-open { + display: flex; } } + +.site-nav, +.site-header, +.site-footer { + width: 100%; } + @media (min-width: 66.5rem) { + .site-nav, + .site-header, + .site-footer { + width: 16.5rem; } } + +.site-nav { + display: none; } + .site-nav.nav-open { + display: block; } + @media (min-width: 50rem) { + .site-nav { + display: block; + padding-top: 3rem; + padding-bottom: 1rem; + overflow-y: auto; + flex: 1 1 auto; } } + +.site-header { + display: flex; + min-height: 3.75rem; + align-items: center; } + @media (min-width: 50rem) { + .site-header { + height: 3.75rem; + max-height: 3.75rem; + border-bottom: 1px solid #eeebee; } } + +.site-title { + padding-right: 1rem; + padding-left: 1rem; + flex-grow: 1; + display: flex; + height: 100%; + align-items: center; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #27262b; + font-size: 1.125rem !important; } + @media (min-width: 50rem) { + .site-title { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-title { + font-size: 1.5rem !important; + line-height: 1.25; } } + @media (min-width: 50rem) { + .site-title { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } } + +.site-button { + display: flex; + height: 100%; + padding: 1rem; + align-items: center; } + +@media (min-width: 50rem) { + .site-header .site-button { + display: none; } } +.site-title:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.site-button:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +body { + position: relative; + padding-bottom: 4rem; + overflow-y: scroll; } + @media (min-width: 50rem) { + body { + position: static; + padding-bottom: 0; } } + +.site-footer { + padding-right: 1rem; + padding-left: 1rem; + position: absolute; + bottom: 0; + left: 0; + padding-top: 1rem; + padding-bottom: 1rem; + color: #959396; + font-size: 0.6875rem !important; } + @media (min-width: 50rem) { + .site-footer { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-footer { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .site-footer { + position: static; + justify-self: end; } } + +.icon { + width: 1.5rem; + height: 1.5rem; + color: #7253ed; } + +.main-content { + line-height: 1.6; } + .main-content ol, + .main-content ul, + .main-content dl, + .main-content pre, + .main-content address, + .main-content blockquote, + .main-content .table-wrapper { + margin-top: 0.5em; } + .main-content a { + overflow: hidden; + text-overflow: ellipsis; } + .main-content ul, + .main-content ol { + padding-left: 1.5em; } + .main-content li .highlight { + margin-top: 0.25rem; } + .main-content ol { + list-style-type: none; + counter-reset: step-counter; } + .main-content ol > li { + position: relative; } + .main-content ol > li::before { + position: absolute; + top: 0.2em; + left: -1.6em; + color: #959396; + content: counter(step-counter); + counter-increment: step-counter; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + font-size: 0.875rem !important; } } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + top: 0.11em; } } + .main-content ol > li ol { + counter-reset: sub-counter; } + .main-content ol > li ol > li::before { + content: counter(sub-counter,lower-alpha); + counter-increment: sub-counter; } + .main-content ul { + list-style: none; } + .main-content ul > li::before { + position: absolute; + margin-left: -1.4em; + color: #959396; + content: "•"; } + .main-content .task-list-item::before { + content: ""; } + .main-content .task-list-item-checkbox { + margin-right: 0.6em; + margin-left: -1.4em; } + .main-content hr + * { + margin-top: 0; } + .main-content h1:first-of-type { + margin-top: 0.5em; } + .main-content dl { + display: grid; + grid-template: auto / 10em 1fr; } + .main-content dt, + .main-content dd { + margin: 0.25em 0; } + .main-content dt { + grid-column: 1; + font-weight: 500; + text-align: right; } + .main-content dt::after { + content: ":"; } + .main-content dd { + grid-column: 2; + margin-bottom: 0; + margin-left: 1em; } + .main-content dd blockquote:first-child, + .main-content dd div:first-child, + .main-content dd dl:first-child, + .main-content dd dt:first-child, + .main-content dd h1:first-child, + .main-content dd h2:first-child, + .main-content dd h3:first-child, + .main-content dd h4:first-child, + .main-content dd h5:first-child, + .main-content dd h6:first-child, + .main-content dd li:first-child, + .main-content dd ol:first-child, + .main-content dd p:first-child, + .main-content dd pre:first-child, + .main-content dd table:first-child, + .main-content dd ul:first-child, + .main-content dd .table-wrapper:first-child { + margin-top: 0; } + .main-content dd dl:first-child dt:first-child, + .main-content dd dl:first-child dd:nth-child(2), + .main-content ol dl:first-child dt:first-child, + .main-content ol dl:first-child dd:nth-child(2), + .main-content ul dl:first-child dt:first-child, + .main-content ul dl:first-child dd:nth-child(2) { + margin-top: 0; } + .main-content .anchor-heading { + position: absolute; + right: -1rem; + width: 1.5rem; + height: 100%; + padding-right: 0.25rem; + padding-left: 0.25rem; + overflow: visible; } + @media (min-width: 50rem) { + .main-content .anchor-heading { + right: auto; + left: -1.5rem; } } + .main-content .anchor-heading svg { + display: inline-block; + width: 100%; + height: 100%; + color: #7253ed; + visibility: hidden; } + .main-content .anchor-heading:hover svg, + .main-content .anchor-heading:focus svg, + .main-content h1:hover > .anchor-heading svg, + .main-content h2:hover > .anchor-heading svg, + .main-content h3:hover > .anchor-heading svg, + .main-content h4:hover > .anchor-heading svg, + .main-content h5:hover > .anchor-heading svg, + .main-content h6:hover > .anchor-heading svg { + visibility: visible; } + .main-content summary { + cursor: pointer; } + .main-content h1, + .main-content h2, + .main-content h3, + .main-content h4, + .main-content h5, + .main-content h6, + .main-content #toctitle { + position: relative; + margin-top: 1.5em; + margin-bottom: 0.25em; } + .main-content h1 + table, + .main-content h1 + .table-wrapper, + .main-content h1 + .code-example, + .main-content h1 + .highlighter-rouge, + .main-content h1 + .sectionbody .listingblock, + .main-content h2 + table, + .main-content h2 + .table-wrapper, + .main-content h2 + .code-example, + .main-content h2 + .highlighter-rouge, + .main-content h2 + .sectionbody .listingblock, + .main-content h3 + table, + .main-content h3 + .table-wrapper, + .main-content h3 + .code-example, + .main-content h3 + .highlighter-rouge, + .main-content h3 + .sectionbody .listingblock, + .main-content h4 + table, + .main-content h4 + .table-wrapper, + .main-content h4 + .code-example, + .main-content h4 + .highlighter-rouge, + .main-content h4 + .sectionbody .listingblock, + .main-content h5 + table, + .main-content h5 + .table-wrapper, + .main-content h5 + .code-example, + .main-content h5 + .highlighter-rouge, + .main-content h5 + .sectionbody .listingblock, + .main-content h6 + table, + .main-content h6 + .table-wrapper, + .main-content h6 + .code-example, + .main-content h6 + .highlighter-rouge, + .main-content h6 + .sectionbody .listingblock, + .main-content #toctitle + table, + .main-content #toctitle + .table-wrapper, + .main-content #toctitle + .code-example, + .main-content #toctitle + .highlighter-rouge, + .main-content #toctitle + .sectionbody .listingblock { + margin-top: 1em; } + .main-content h1 + p:not(.label), + .main-content h2 + p:not(.label), + .main-content h3 + p:not(.label), + .main-content h4 + p:not(.label), + .main-content h5 + p:not(.label), + .main-content h6 + p:not(.label), + .main-content #toctitle + p:not(.label) { + margin-top: 0; } + .main-content > h1:first-child, + .main-content > h2:first-child, + .main-content > h3:first-child, + .main-content > h4:first-child, + .main-content > h5:first-child, + .main-content > h6:first-child, + .main-content > .sect1:first-child > h2, + .main-content > .sect2:first-child > h3, + .main-content > .sect3:first-child > h4, + .main-content > .sect4:first-child > h5, + .main-content > .sect5:first-child > h6 { + margin-top: 0.5rem; } + +.nav-list { + padding: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; } + .nav-list .nav-list-item { + font-size: 0.875rem !important; + position: relative; + margin: 0; } + @media (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .nav-list .nav-list-item { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 0.875rem !important; } } + + .nav-list .nav-list-item .nav-list-link { + display: block; + min-height: 3rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + line-height: 2.5rem; + padding-right: 3rem; + padding-left: 1rem; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-link { + min-height: 2rem; + line-height: 1.5rem; + padding-right: 2rem; + padding-left: 2rem; } } + .nav-list .nav-list-item .nav-list-link.external > svg { + width: 1rem; + height: 1rem; + vertical-align: text-bottom; } + .nav-list .nav-list-item .nav-list-link.active { + font-weight: 600; + text-decoration: none; } + .nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + .nav-list .nav-list-item .nav-list-expander { + position: absolute; + right: 0; + width: 3rem; + height: 3rem; + padding: 0.75rem; + color: #7253ed; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-expander { + width: 2rem; + height: 2rem; + padding: 0.5rem; } } + .nav-list .nav-list-item .nav-list-expander:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + .nav-list .nav-list-item .nav-list-expander svg { + transform: rotate(90deg); } + .nav-list .nav-list-item > .nav-list { + display: none; + padding-left: 0.75rem; + list-style: none; } + .nav-list .nav-list-item > .nav-list .nav-list-item { + position: relative; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { + color: #5c5962; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { + color: #5c5962; } + .nav-list .nav-list-item.active > .nav-list-expander svg { + transform: rotate(-90deg); } + .nav-list .nav-list-item.active > .nav-list { + display: block; } + +.nav-category { + padding: 0.5rem 1rem; + font-weight: 600; + text-align: start; + text-transform: uppercase; + border-bottom: 1px solid #eeebee; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .nav-category { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .nav-category { + padding: 0.5rem 2rem; + margin-top: 1rem; + text-align: start; } + .nav-category:first-child { + margin-top: 0; } } + +.nav-list.nav-category-list > .nav-list-item { + margin: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list { + padding: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { + color: #7253ed; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander { + color: #7253ed; } + +.aux-nav { + height: 100%; + overflow-x: auto; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .aux-nav { + font-size: 0.75rem !important; } } + .aux-nav .aux-nav-list { + display: flex; + height: 100%; + padding: 0; + margin: 0; + list-style: none; } + .aux-nav .aux-nav-list-item { + display: inline-block; + height: 100%; + padding: 0; + margin: 0; } + @media (min-width: 50rem) { + .aux-nav { + padding-right: 1rem; } } + +@media (min-width: 50rem) { + .breadcrumb-nav { + margin-top: -1rem; } } + +.breadcrumb-nav-list { + padding-left: 0; + margin-bottom: 0.75rem; + list-style: none; } + +.breadcrumb-nav-list-item { + display: table-cell; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .breadcrumb-nav-list-item { + font-size: 0.75rem !important; } } + .breadcrumb-nav-list-item::before { + display: none; } + .breadcrumb-nav-list-item::after { + display: inline-block; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #959396; + content: "/"; } + .breadcrumb-nav-list-item:last-child::after { + content: ""; } + +h1, +.text-alpha { + font-size: 2rem !important; + line-height: 1.25; + font-weight: 300; } + @media (min-width: 31.25rem) { + h1, + .text-alpha { + font-size: 2.25rem !important; } } + +h2, +.text-beta, +#toctitle { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + h2, + .text-beta, + #toctitle { + font-size: 1.5rem !important; + line-height: 1.25; } } + +h3, +.text-gamma { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + h3, + .text-gamma { + font-size: 1.125rem !important; } } + +h4, +.text-delta { + font-size: 0.6875rem !important; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.1em; } + @media (min-width: 31.25rem) { + h4, + .text-delta { + font-size: 0.75rem !important; } } + +h4 code { + text-transform: none; } + +h5, +.text-epsilon { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + h5, + .text-epsilon { + font-size: 0.875rem !important; } } + +h6, +.text-zeta { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + h6, + .text-zeta { + font-size: 0.75rem !important; } } + +.text-small { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .text-small { + font-size: 0.75rem !important; } } + +.text-mono { + font-family: "SFMono-Regular", menlo, consolas, monospace !important; } + +.text-left { + text-align: left !important; } + +.text-center { + text-align: center !important; } + +.text-right { + text-align: right !important; } + +.label, +.label-blue { + display: inline-block; + padding: 0.16em 0.56em; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #fff; + text-transform: uppercase; + vertical-align: middle; + background-color: #2869e6; + font-size: 0.6875rem !important; + border-radius: 12px; } + @media (min-width: 31.25rem) { + .label, + .label-blue { + font-size: 0.75rem !important; } } + +.label-green { + background-color: #009c7b; } + +.label-purple { + background-color: #5e41d0; } + +.label-red { + background-color: #e94c4c; } + +.label-yellow { + color: #44434d; + background-color: #f7d12e; } + +.btn { + display: inline-block; + box-sizing: border-box; + padding: 0.3em 1em; + margin: 0; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: #7253ed; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: #f7f7f7; + border-width: 0; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; } + .btn:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:focus:hover, .btn.selected:focus { + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:hover, .btn.zeroclipboard-is-hover { + color: #6a4aec; } + .btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { + text-decoration: none; + background-color: #f4f4f4; } + .btn:active, .btn.selected, .btn.zeroclipboard-is-active { + background-color: #efefef; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn.selected:hover { + background-color: #cfcfcf; } + .btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; } + +.btn-outline { + color: #7253ed; + background: transparent; + box-shadow: inset 0 0 0 2px #e6e1e8; } + .btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { + color: #6341eb; + text-decoration: none; + background-color: transparent; + box-shadow: inset 0 0 0 3px #e6e1e8; } + .btn-outline:focus { + text-decoration: none; + outline: none; + box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn-outline:focus:hover, .btn-outline.selected:focus { + box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { + color: #fff; + background-color: #5739ce; + background-image: linear-gradient(#6f55d5, #5739ce); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-primary:hover, .btn-primary.zeroclipboard-is-hover { + color: #fff; + background-color: #5132cb; + background-image: linear-gradient(#6549d2, #5132cb); } + .btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { + background-color: #4f31c6; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-primary.selected:hover { + background-color: #472cb2; } + +.btn-purple { + color: #fff; + background-color: #5739ce; + background-image: linear-gradient(#6f55d5, #5739ce); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-purple:hover, .btn-purple.zeroclipboard-is-hover { + color: #fff; + background-color: #5132cb; + background-image: linear-gradient(#6549d2, #5132cb); } + .btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { + background-color: #4f31c6; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-purple.selected:hover { + background-color: #472cb2; } + +.btn-blue { + color: #fff; + background-color: #227efa; + background-image: linear-gradient(#4593fb, #227efa); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-blue:hover, .btn-blue.zeroclipboard-is-hover { + color: #fff; + background-color: #1878fa; + background-image: linear-gradient(#368afa, #1878fa); } + .btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { + background-color: #1375f9; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-blue.selected:hover { + background-color: #0669ed; } + +.btn-green { + color: #fff; + background-color: #10ac7d; + background-image: linear-gradient(#13cc95, #10ac7d); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-green:hover, .btn-green.zeroclipboard-is-hover { + color: #fff; + background-color: #0fa276; + background-image: linear-gradient(#12be8b, #0fa276); } + .btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { + background-color: #0f9e73; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-green.selected:hover { + background-color: #0d8662; } + +.btn-reset { + background: none; + border: none; + margin: 0; + text-align: inherit; + font: inherit; + border-radius: 0; + appearance: none; } + +.search { + position: relative; + z-index: 2; + flex-grow: 1; + height: 4rem; + padding: 0.5rem; + transition: padding linear 200ms; } + @media (min-width: 50rem) { + .search { + position: relative !important; + width: auto !important; + height: 100% !important; + padding: 0; + transition: none; } } + +.search-input-wrap { + position: relative; + z-index: 1; + height: 3rem; + overflow: hidden; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + transition: height linear 200ms; } + @media (min-width: 50rem) { + .search-input-wrap { + position: absolute; + width: 100%; + max-width: 33.5rem; + height: 100% !important; + border-radius: 0; + box-shadow: none; + transition: width ease 400ms; } } + +.search-input { + position: absolute; + width: 100%; + height: 100%; + padding: 0.5rem 1rem 0.5rem 2.5rem; + font-size: 1rem; + color: #5c5962; + background-color: #fff; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-left: 0; + border-radius: 0; } + @media (min-width: 50rem) { + .search-input { + padding: 0.5rem 1rem 0.5rem 3.5rem; + font-size: 0.875rem; + background-color: #fff; + transition: padding-left linear 200ms; } } + .search-input:focus { + outline: 0; } + .search-input:focus + .search-label .search-icon { + color: #7253ed; } + +.search-label { + position: absolute; + display: flex; + height: 100%; + padding-left: 1rem; } + @media (min-width: 50rem) { + .search-label { + padding-left: 2rem; + transition: padding-left linear 200ms; } } + .search-label .search-icon { + width: 1.2rem; + height: 1.2rem; + align-self: center; + color: #959396; } + +.search-results { + position: absolute; + left: 0; + display: none; + width: 100%; + max-height: calc(100% - 4rem); + overflow-y: auto; + background-color: #fff; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + @media (min-width: 50rem) { + .search-results { + top: 100%; + width: 33.5rem; + max-height: calc(100vh - 200%) !important; } } + +.search-results-list { + padding-left: 0; + margin-bottom: 0.25rem; + list-style: none; + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .search-results-list { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .search-results-list { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-results-list { + font-size: 0.875rem !important; } } + +.search-results-list-item { + padding: 0; + margin: 0; } + +.search-result { + display: block; + padding: 0.25rem 0.75rem; } + .search-result:hover, .search-result.active { + background-color: #ebedf5; } + +.search-result-title { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + @media (min-width: 31.25rem) { + .search-result-title { + display: inline-block; + width: 40%; + padding-right: 0.5rem; + vertical-align: top; } } + +.search-result-doc { + display: flex; + align-items: center; + word-wrap: break-word; } + .search-result-doc.search-result-doc-parent { + opacity: 0.5; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.875rem !important; } } + @media (min-width: 50rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.6875rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.75rem !important; } } + + .search-result-doc .search-result-icon { + width: 1rem; + height: 1rem; + margin-right: 0.5rem; + color: #7253ed; + flex-shrink: 0; } + .search-result-doc .search-result-doc-title { + overflow: auto; } + +.search-result-section { + margin-left: 1.5rem; + word-wrap: break-word; } + +.search-result-rel-url { + display: block; + margin-left: 1.5rem; + overflow: hidden; + color: #959396; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .search-result-rel-url { + font-size: 0.625rem !important; } } + +.search-result-previews { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + margin-left: 0.5rem; + color: #959396; + word-wrap: break-word; + border-left: 1px solid; + border-left-color: #eeebee; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .search-result-previews { + font-size: 0.75rem !important; } } + @media (min-width: 31.25rem) { + .search-result-previews { + display: inline-block; + width: 60%; + padding-left: 0.5rem; + margin-left: 0; + vertical-align: top; } } + +.search-result-preview + .search-result-preview { + margin-top: 0.25rem; } + +.search-result-highlight { + font-weight: bold; } + +.search-no-result { + padding: 0.5rem 0.75rem; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-no-result { + font-size: 0.875rem !important; } } + +.search-button { + position: fixed; + right: 1rem; + bottom: 1rem; + display: flex; + width: 3.5rem; + height: 3.5rem; + background-color: #fff; + border: 1px solid rgba(114, 83, 237, 0.3); + border-radius: 1.75rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + align-items: center; + justify-content: center; } + +.search-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 0; + height: 0; + background-color: rgba(0, 0, 0, 0.3); + opacity: 0; + transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 0; } +.search-active .search-input-wrap { + height: 4rem; + border-radius: 0; } + @media (min-width: 50rem) { + .search-active .search-input-wrap { + width: 33.5rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } +.search-active .search-input { + background-color: #fff; } + @media (min-width: 50rem) { + .search-active .search-input { + padding-left: 2.3rem; } } +@media (min-width: 50rem) { + .search-active .search-label { + padding-left: 0.6rem; } } +.search-active .search-results { + display: block; } +.search-active .search-overlay { + width: 100%; + height: 100%; + opacity: 1; + transition: opacity ease 400ms, width 0s, height 0s; } +@media (min-width: 50rem) { + .search-active .main { + position: fixed; + right: 0; + left: 0; } } +.search-active .main-header { + padding-top: 4rem; } + @media (min-width: 50rem) { + .search-active .main-header { + padding-top: 0; } } + +.table-wrapper { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: 1.5rem; + overflow-x: auto; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { + display: table; + min-width: 100%; + border-collapse: separate; } + +th, +td { + font-size: 0.75rem !important; + min-width: 7.5rem; + padding: 0.5rem 0.75rem; + background-color: #fff; + border-bottom: 1px solid rgba(238, 235, 238, 0.5); + border-left: 1px solid #eeebee; } + @media (min-width: 31.25rem) { + th, + td { + font-size: 0.875rem !important; } } + th:first-of-type, + td:first-of-type { + border-left: 0; } + +tbody tr:last-of-type th, +tbody tr:last-of-type td { + border-bottom: 0; } +tbody tr:last-of-type td { + padding-bottom: 0.75rem; } + +thead th { + border-bottom: 1px solid #eeebee; } + +:not(pre, figure) > code { + padding: 0.2em 0.15em; + font-weight: 400; + background-color: #f5f6fa; + border: 1px solid #eeebee; + border-radius: 4px; } + +a:visited code { + border-color: #eeebee; } + +div.highlighter-rouge, +div.listingblock > div.content, +figure.highlight { + margin-top: 0; + margin-bottom: 0.75rem; + background-color: #f5f6fa; + border-radius: 4px; + box-shadow: none; + -webkit-overflow-scrolling: touch; + position: relative; + padding: 0; } + div.highlighter-rouge > button, + div.listingblock > div.content > button, + figure.highlight > button { + width: 0.75rem; + opacity: 0; + position: absolute; + top: 0; + right: 0; + border: 0.75rem solid #f5f6fa; + background-color: #f5f6fa; + color: #5c5962; + box-sizing: content-box; } + div.highlighter-rouge > button svg, + div.listingblock > div.content > button svg, + figure.highlight > button svg { + fill: #5c5962; } + div.highlighter-rouge > button:active, + div.listingblock > div.content > button:active, + figure.highlight > button:active { + text-decoration: none; + outline: none; + opacity: 1; } + div.highlighter-rouge > button:focus, + div.listingblock > div.content > button:focus, + figure.highlight > button:focus { + opacity: 1; } + div.highlighter-rouge:hover > button, + div.listingblock > div.content:hover > button, + figure.highlight:hover > button { + cursor: copy; + opacity: 1; } + +div.highlighter-rouge div.highlight { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } +div.highlighter-rouge pre.highlight, +div.highlighter-rouge code { + padding: 0; + margin: 0; + border: 0; } + +div.listingblock { + margin-top: 0; + margin-bottom: 0.75rem; } + div.listingblock div.content { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + div.listingblock div.content > pre, + div.listingblock code { + padding: 0; + margin: 0; + border: 0; } + +figure.highlight pre, +figure.highlight :not(pre) > code { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + +.highlight .table-wrapper { + padding: 0.75rem 0; + margin: 0; + border: 0; + box-shadow: none; } + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.6875rem !important; + min-width: 0; + padding: 0; + background-color: #f5f6fa; + border: 0; } + @media (min-width: 31.25rem) { + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.75rem !important; } } + .highlight .table-wrapper td.gl { + width: 1em; + padding-right: 0.75rem; + padding-left: 0.75rem; } + .highlight .table-wrapper pre { + margin: 0; + line-height: 2; } + +.code-example, +.listingblock > .title { + padding: 0.75rem; + margin-bottom: 0.75rem; + overflow: auto; + border: 1px solid #eeebee; + border-radius: 4px; } + .code-example + .highlighter-rouge, + .code-example + .sectionbody .listingblock, + .code-example + .content, + .code-example + figure.highlight, + .listingblock > .title + .highlighter-rouge, + .listingblock > .title + .sectionbody .listingblock, + .listingblock > .title + .content, + .listingblock > .title + figure.highlight { + position: relative; + margin-top: -1rem; + border-right: 1px solid #eeebee; + border-bottom: 1px solid #eeebee; + border-left: 1px solid #eeebee; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +code.language-mermaid { + padding: 0; + background-color: inherit; + border: 0; } + +.highlight, +pre.highlight { + background: #f5f6fa; + color: #5c5962; } + +.highlight pre { + background: #f5f6fa; } + +.text-grey-dk-000 { + color: #959396 !important; } + +.text-grey-dk-100 { + color: #5c5962 !important; } + +.text-grey-dk-200 { + color: #44434d !important; } + +.text-grey-dk-250 { + color: #302d36 !important; } + +.text-grey-dk-300 { + color: #27262b !important; } + +.text-grey-lt-000 { + color: #f5f6fa !important; } + +.text-grey-lt-100 { + color: #eeebee !important; } + +.text-grey-lt-200 { + color: #ecebed !important; } + +.text-grey-lt-300 { + color: #e6e1e8 !important; } + +.text-blue-000 { + color: #2c84fa !important; } + +.text-blue-100 { + color: #2869e6 !important; } + +.text-blue-200 { + color: #264caf !important; } + +.text-blue-300 { + color: #183385 !important; } + +.text-green-000 { + color: #41d693 !important; } + +.text-green-100 { + color: #11b584 !important; } + +.text-green-200 { + color: #009c7b !important; } + +.text-green-300 { + color: #026e57 !important; } + +.text-purple-000 { + color: #7253ed !important; } + +.text-purple-100 { + color: #5e41d0 !important; } + +.text-purple-200 { + color: #4e26af !important; } + +.text-purple-300 { + color: #381885 !important; } + +.text-yellow-000 { + color: #ffeb82 !important; } + +.text-yellow-100 { + color: #fadf50 !important; } + +.text-yellow-200 { + color: #f7d12e !important; } + +.text-yellow-300 { + color: #e7af06 !important; } + +.text-red-000 { + color: #f77e7e !important; } + +.text-red-100 { + color: #f96e65 !important; } + +.text-red-200 { + color: #e94c4c !important; } + +.text-red-300 { + color: #dd2e2e !important; } + +.bg-grey-dk-000 { + background-color: #959396 !important; } + +.bg-grey-dk-100 { + background-color: #5c5962 !important; } + +.bg-grey-dk-200 { + background-color: #44434d !important; } + +.bg-grey-dk-250 { + background-color: #302d36 !important; } + +.bg-grey-dk-300 { + background-color: #27262b !important; } + +.bg-grey-lt-000 { + background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { + background-color: #eeebee !important; } + +.bg-grey-lt-200 { + background-color: #ecebed !important; } + +.bg-grey-lt-300 { + background-color: #e6e1e8 !important; } + +.bg-blue-000 { + background-color: #2c84fa !important; } + +.bg-blue-100 { + background-color: #2869e6 !important; } + +.bg-blue-200 { + background-color: #264caf !important; } + +.bg-blue-300 { + background-color: #183385 !important; } + +.bg-green-000 { + background-color: #41d693 !important; } + +.bg-green-100 { + background-color: #11b584 !important; } + +.bg-green-200 { + background-color: #009c7b !important; } + +.bg-green-300 { + background-color: #026e57 !important; } + +.bg-purple-000 { + background-color: #7253ed !important; } + +.bg-purple-100 { + background-color: #5e41d0 !important; } + +.bg-purple-200 { + background-color: #4e26af !important; } + +.bg-purple-300 { + background-color: #381885 !important; } + +.bg-yellow-000 { + background-color: #ffeb82 !important; } + +.bg-yellow-100 { + background-color: #fadf50 !important; } + +.bg-yellow-200 { + background-color: #f7d12e !important; } + +.bg-yellow-300 { + background-color: #e7af06 !important; } + +.bg-red-000 { + background-color: #f77e7e !important; } + +.bg-red-100 { + background-color: #f96e65 !important; } + +.bg-red-200 { + background-color: #e94c4c !important; } + +.bg-red-300 { + background-color: #dd2e2e !important; } + +.d-block, .toc.level-1.current > ul, .toc.level-2.current > ul, .toc.level-3.current > ul, .toc.level-4.current > ul, .toc.level-5.current > ul, .toc.level-6.current > ul, .toc.level-7.current > ul, .toc.level-8.current > ul, .toc.level-9.current > ul, .toc.level-10.current > ul, .toc.level-11.current > ul { + display: block !important; } + +.d-flex { + display: flex !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-none, .toc > ul { + display: none !important; } + +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.flex-justify-start { + justify-content: flex-start !important; } + +.flex-justify-end { + justify-content: flex-end !important; } + +.flex-justify-between { + justify-content: space-between !important; } + +.flex-justify-around { + justify-content: space-around !important; } + +.v-align-baseline { + vertical-align: baseline !important; } + +.v-align-bottom { + vertical-align: bottom !important; } + +.v-align-middle { + vertical-align: middle !important; } + +.v-align-text-bottom { + vertical-align: text-bottom !important; } + +.v-align-text-top { + vertical-align: text-top !important; } + +.v-align-top { + vertical-align: top !important; } + +.fs-1 { + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .fs-1 { + font-size: 0.625rem !important; } } + +.fs-2 { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .fs-2 { + font-size: 0.75rem !important; } } + +.fs-3 { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .fs-3 { + font-size: 0.875rem !important; } } + +.fs-4 { + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .fs-4 { + font-size: 1rem !important; } } + +.fs-5 { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + .fs-5 { + font-size: 1.125rem !important; } } + +.fs-6 { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + .fs-6 { + font-size: 1.5rem !important; + line-height: 1.25; } } + +.fs-7 { + font-size: 1.5rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-7 { + font-size: 2rem !important; } } + +.fs-8 { + font-size: 2rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-8 { + font-size: 2.25rem !important; } } + +.fs-9 { + font-size: 2.25rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-9 { + font-size: 2.625rem !important; } } + +.fs-10 { + font-size: 2.625rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-10 { + font-size: 3rem !important; } } + +.fw-300 { + font-weight: 300 !important; } + +.fw-400 { + font-weight: 400 !important; } + +.fw-500 { + font-weight: 500 !important; } + +.fw-700 { + font-weight: 700 !important; } + +.lh-0 { + line-height: 0 !important; } + +.lh-default { + line-height: 1.4; } + +.lh-tight { + line-height: 1.25; } + +.ls-5 { + letter-spacing: 0.05em !important; } + +.ls-10 { + letter-spacing: 0.1em !important; } + +.ls-0 { + letter-spacing: 0 !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.list-style-none { + padding: 0 !important; + margin: 0 !important; + list-style: none !important; } + .list-style-none li::before { + display: none !important; } + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0 { + margin-top: 0 !important; } + +.mr-0 { + margin-right: 0 !important; } + +.mb-0 { + margin-bottom: 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; } + +.mxn-0 { + margin-right: -0 !important; + margin-left: -0 !important; } + +.mx-0-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1 { + margin-top: 0.25rem !important; } + +.mr-1 { + margin-right: 0.25rem !important; } + +.mb-1 { + margin-bottom: 0.25rem !important; } + +.ml-1 { + margin-left: 0.25rem !important; } + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + +.mxn-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } + +.mx-1-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2 { + margin-top: 0.5rem !important; } + +.mr-2 { + margin-right: 0.5rem !important; } + +.mb-2 { + margin-bottom: 0.5rem !important; } + +.ml-2 { + margin-left: 0.5rem !important; } + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + +.mxn-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } + +.mx-2-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-3 { + margin: 0.75rem !important; } + +.mt-3 { + margin-top: 0.75rem !important; } + +.mr-3 { + margin-right: 0.75rem !important; } + +.mb-3 { + margin-bottom: 0.75rem !important; } + +.ml-3 { + margin-left: 0.75rem !important; } + +.mx-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + +.mxn-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } + +.mx-3-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-4 { + margin: 1rem !important; } + +.mt-4 { + margin-top: 1rem !important; } + +.mr-4 { + margin-right: 1rem !important; } + +.mb-4 { + margin-bottom: 1rem !important; } + +.ml-4 { + margin-left: 1rem !important; } + +.mx-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + +.mxn-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } + +.mx-4-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-5 { + margin: 1.5rem !important; } + +.mt-5 { + margin-top: 1.5rem !important; } + +.mr-5 { + margin-right: 1.5rem !important; } + +.mb-5 { + margin-bottom: 1.5rem !important; } + +.ml-5 { + margin-left: 1.5rem !important; } + +.mx-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + +.my-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + +.mxn-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } + +.mx-5-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-6 { + margin: 2rem !important; } + +.mt-6 { + margin-top: 2rem !important; } + +.mr-6 { + margin-right: 2rem !important; } + +.mb-6 { + margin-bottom: 2rem !important; } + +.ml-6 { + margin-left: 2rem !important; } + +.mx-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + +.my-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + +.mxn-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } + +.mx-6-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-7 { + margin: 2.5rem !important; } + +.mt-7 { + margin-top: 2.5rem !important; } + +.mr-7 { + margin-right: 2.5rem !important; } + +.mb-7 { + margin-bottom: 2.5rem !important; } + +.ml-7 { + margin-left: 2.5rem !important; } + +.mx-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + +.my-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + +.mxn-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } + +.mx-7-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-8 { + margin: 3rem !important; } + +.mt-8 { + margin-top: 3rem !important; } + +.mr-8 { + margin-right: 3rem !important; } + +.mb-8 { + margin-bottom: 3rem !important; } + +.ml-8 { + margin-left: 3rem !important; } + +.mx-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + +.my-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + +.mxn-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } + +.mx-8-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-9 { + margin: 3.5rem !important; } + +.mt-9 { + margin-top: 3.5rem !important; } + +.mr-9 { + margin-right: 3.5rem !important; } + +.mb-9 { + margin-bottom: 3.5rem !important; } + +.ml-9 { + margin-left: 3.5rem !important; } + +.mx-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + +.my-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + +.mxn-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } + +.mx-9-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-10 { + margin: 4rem !important; } + +.mt-10 { + margin-top: 4rem !important; } + +.mr-10 { + margin-right: 4rem !important; } + +.mb-10 { + margin-bottom: 4rem !important; } + +.ml-10 { + margin-left: 4rem !important; } + +.mx-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + +.my-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + +.mxn-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } + +.mx-10-auto { + margin-right: auto !important; + margin-left: auto !important; } + +@media (min-width: 20rem) { + .m-xs-0 { + margin: 0 !important; } + + .mt-xs-0 { + margin-top: 0 !important; } + + .mr-xs-0 { + margin-right: 0 !important; } + + .mb-xs-0 { + margin-bottom: 0 !important; } + + .ml-xs-0 { + margin-left: 0 !important; } + + .mx-xs-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + .my-xs-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + .mxn-xs-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 20rem) { + .m-xs-1 { + margin: 0.25rem !important; } + + .mt-xs-1 { + margin-top: 0.25rem !important; } + + .mr-xs-1 { + margin-right: 0.25rem !important; } + + .mb-xs-1 { + margin-bottom: 0.25rem !important; } + + .ml-xs-1 { + margin-left: 0.25rem !important; } + + .mx-xs-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xs-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xs-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 20rem) { + .m-xs-2 { + margin: 0.5rem !important; } + + .mt-xs-2 { + margin-top: 0.5rem !important; } + + .mr-xs-2 { + margin-right: 0.5rem !important; } + + .mb-xs-2 { + margin-bottom: 0.5rem !important; } + + .ml-xs-2 { + margin-left: 0.5rem !important; } + + .mx-xs-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xs-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xs-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-3 { + margin: 0.75rem !important; } + + .mt-xs-3 { + margin-top: 0.75rem !important; } + + .mr-xs-3 { + margin-right: 0.75rem !important; } + + .mb-xs-3 { + margin-bottom: 0.75rem !important; } + + .ml-xs-3 { + margin-left: 0.75rem !important; } + + .mx-xs-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xs-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xs-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 20rem) { + .m-xs-4 { + margin: 1rem !important; } + + .mt-xs-4 { + margin-top: 1rem !important; } + + .mr-xs-4 { + margin-right: 1rem !important; } + + .mb-xs-4 { + margin-bottom: 1rem !important; } + + .ml-xs-4 { + margin-left: 1rem !important; } + + .mx-xs-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xs-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xs-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 20rem) { + .m-xs-5 { + margin: 1.5rem !important; } + + .mt-xs-5 { + margin-top: 1.5rem !important; } + + .mr-xs-5 { + margin-right: 1.5rem !important; } + + .mb-xs-5 { + margin-bottom: 1.5rem !important; } + + .ml-xs-5 { + margin-left: 1.5rem !important; } + + .mx-xs-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xs-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xs-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-6 { + margin: 2rem !important; } + + .mt-xs-6 { + margin-top: 2rem !important; } + + .mr-xs-6 { + margin-right: 2rem !important; } + + .mb-xs-6 { + margin-bottom: 2rem !important; } + + .ml-xs-6 { + margin-left: 2rem !important; } + + .mx-xs-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xs-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xs-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 20rem) { + .m-xs-7 { + margin: 2.5rem !important; } + + .mt-xs-7 { + margin-top: 2.5rem !important; } + + .mr-xs-7 { + margin-right: 2.5rem !important; } + + .mb-xs-7 { + margin-bottom: 2.5rem !important; } + + .ml-xs-7 { + margin-left: 2.5rem !important; } + + .mx-xs-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xs-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xs-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-8 { + margin: 3rem !important; } + + .mt-xs-8 { + margin-top: 3rem !important; } + + .mr-xs-8 { + margin-right: 3rem !important; } + + .mb-xs-8 { + margin-bottom: 3rem !important; } + + .ml-xs-8 { + margin-left: 3rem !important; } + + .mx-xs-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xs-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xs-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 20rem) { + .m-xs-9 { + margin: 3.5rem !important; } + + .mt-xs-9 { + margin-top: 3.5rem !important; } + + .mr-xs-9 { + margin-right: 3.5rem !important; } + + .mb-xs-9 { + margin-bottom: 3.5rem !important; } + + .ml-xs-9 { + margin-left: 3.5rem !important; } + + .mx-xs-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xs-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xs-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-10 { + margin: 4rem !important; } + + .mt-xs-10 { + margin-top: 4rem !important; } + + .mr-xs-10 { + margin-right: 4rem !important; } + + .mb-xs-10 { + margin-bottom: 4rem !important; } + + .ml-xs-10 { + margin-left: 4rem !important; } + + .mx-xs-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xs-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xs-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-0 { + margin: 0 !important; } + + .mt-sm-0 { + margin-top: 0 !important; } + + .mr-sm-0 { + margin-right: 0 !important; } + + .mb-sm-0 { + margin-bottom: 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; } + + .mxn-sm-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 31.25rem) { + .m-sm-1 { + margin: 0.25rem !important; } + + .mt-sm-1 { + margin-top: 0.25rem !important; } + + .mr-sm-1 { + margin-right: 0.25rem !important; } + + .mb-sm-1 { + margin-bottom: 0.25rem !important; } + + .ml-sm-1 { + margin-left: 0.25rem !important; } + + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-sm-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-2 { + margin: 0.5rem !important; } + + .mt-sm-2 { + margin-top: 0.5rem !important; } + + .mr-sm-2 { + margin-right: 0.5rem !important; } + + .mb-sm-2 { + margin-bottom: 0.5rem !important; } + + .ml-sm-2 { + margin-left: 0.5rem !important; } + + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-sm-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-3 { + margin: 0.75rem !important; } + + .mt-sm-3 { + margin-top: 0.75rem !important; } + + .mr-sm-3 { + margin-right: 0.75rem !important; } + + .mb-sm-3 { + margin-bottom: 0.75rem !important; } + + .ml-sm-3 { + margin-left: 0.75rem !important; } + + .mx-sm-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-sm-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-sm-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-4 { + margin: 1rem !important; } + + .mt-sm-4 { + margin-top: 1rem !important; } + + .mr-sm-4 { + margin-right: 1rem !important; } + + .mb-sm-4 { + margin-bottom: 1rem !important; } + + .ml-sm-4 { + margin-left: 1rem !important; } + + .mx-sm-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-sm-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-sm-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-5 { + margin: 1.5rem !important; } + + .mt-sm-5 { + margin-top: 1.5rem !important; } + + .mr-sm-5 { + margin-right: 1.5rem !important; } + + .mb-sm-5 { + margin-bottom: 1.5rem !important; } + + .ml-sm-5 { + margin-left: 1.5rem !important; } + + .mx-sm-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-sm-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-sm-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-6 { + margin: 2rem !important; } + + .mt-sm-6 { + margin-top: 2rem !important; } + + .mr-sm-6 { + margin-right: 2rem !important; } + + .mb-sm-6 { + margin-bottom: 2rem !important; } + + .ml-sm-6 { + margin-left: 2rem !important; } + + .mx-sm-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-sm-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-sm-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-7 { + margin: 2.5rem !important; } + + .mt-sm-7 { + margin-top: 2.5rem !important; } + + .mr-sm-7 { + margin-right: 2.5rem !important; } + + .mb-sm-7 { + margin-bottom: 2.5rem !important; } + + .ml-sm-7 { + margin-left: 2.5rem !important; } + + .mx-sm-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-sm-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-sm-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-8 { + margin: 3rem !important; } + + .mt-sm-8 { + margin-top: 3rem !important; } + + .mr-sm-8 { + margin-right: 3rem !important; } + + .mb-sm-8 { + margin-bottom: 3rem !important; } + + .ml-sm-8 { + margin-left: 3rem !important; } + + .mx-sm-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-sm-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-sm-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-9 { + margin: 3.5rem !important; } + + .mt-sm-9 { + margin-top: 3.5rem !important; } + + .mr-sm-9 { + margin-right: 3.5rem !important; } + + .mb-sm-9 { + margin-bottom: 3.5rem !important; } + + .ml-sm-9 { + margin-left: 3.5rem !important; } + + .mx-sm-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-sm-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-sm-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-10 { + margin: 4rem !important; } + + .mt-sm-10 { + margin-top: 4rem !important; } + + .mr-sm-10 { + margin-right: 4rem !important; } + + .mb-sm-10 { + margin-bottom: 4rem !important; } + + .ml-sm-10 { + margin-left: 4rem !important; } + + .mx-sm-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-sm-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-sm-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 50rem) { + .m-md-0 { + margin: 0 !important; } + + .mt-md-0 { + margin-top: 0 !important; } + + .mr-md-0 { + margin-right: 0 !important; } + + .mb-md-0 { + margin-bottom: 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; } + + .mxn-md-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 50rem) { + .m-md-1 { + margin: 0.25rem !important; } + + .mt-md-1 { + margin-top: 0.25rem !important; } + + .mr-md-1 { + margin-right: 0.25rem !important; } + + .mb-md-1 { + margin-bottom: 0.25rem !important; } + + .ml-md-1 { + margin-left: 0.25rem !important; } + + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-md-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 50rem) { + .m-md-2 { + margin: 0.5rem !important; } + + .mt-md-2 { + margin-top: 0.5rem !important; } + + .mr-md-2 { + margin-right: 0.5rem !important; } + + .mb-md-2 { + margin-bottom: 0.5rem !important; } + + .ml-md-2 { + margin-left: 0.5rem !important; } + + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-md-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 50rem) { + .m-md-3 { + margin: 0.75rem !important; } + + .mt-md-3 { + margin-top: 0.75rem !important; } + + .mr-md-3 { + margin-right: 0.75rem !important; } + + .mb-md-3 { + margin-bottom: 0.75rem !important; } + + .ml-md-3 { + margin-left: 0.75rem !important; } + + .mx-md-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-md-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-md-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 50rem) { + .m-md-4 { + margin: 1rem !important; } + + .mt-md-4 { + margin-top: 1rem !important; } + + .mr-md-4 { + margin-right: 1rem !important; } + + .mb-md-4 { + margin-bottom: 1rem !important; } + + .ml-md-4 { + margin-left: 1rem !important; } + + .mx-md-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-md-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-md-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 50rem) { + .m-md-5 { + margin: 1.5rem !important; } + + .mt-md-5 { + margin-top: 1.5rem !important; } + + .mr-md-5 { + margin-right: 1.5rem !important; } + + .mb-md-5 { + margin-bottom: 1.5rem !important; } + + .ml-md-5 { + margin-left: 1.5rem !important; } + + .mx-md-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-md-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-md-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 50rem) { + .m-md-6 { + margin: 2rem !important; } + + .mt-md-6 { + margin-top: 2rem !important; } + + .mr-md-6 { + margin-right: 2rem !important; } + + .mb-md-6 { + margin-bottom: 2rem !important; } + + .ml-md-6 { + margin-left: 2rem !important; } + + .mx-md-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-md-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-md-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 50rem) { + .m-md-7 { + margin: 2.5rem !important; } + + .mt-md-7 { + margin-top: 2.5rem !important; } + + .mr-md-7 { + margin-right: 2.5rem !important; } + + .mb-md-7 { + margin-bottom: 2.5rem !important; } + + .ml-md-7 { + margin-left: 2.5rem !important; } + + .mx-md-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-md-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-md-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 50rem) { + .m-md-8 { + margin: 3rem !important; } + + .mt-md-8 { + margin-top: 3rem !important; } + + .mr-md-8 { + margin-right: 3rem !important; } + + .mb-md-8 { + margin-bottom: 3rem !important; } + + .ml-md-8 { + margin-left: 3rem !important; } + + .mx-md-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-md-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-md-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 50rem) { + .m-md-9 { + margin: 3.5rem !important; } + + .mt-md-9 { + margin-top: 3.5rem !important; } + + .mr-md-9 { + margin-right: 3.5rem !important; } + + .mb-md-9 { + margin-bottom: 3.5rem !important; } + + .ml-md-9 { + margin-left: 3.5rem !important; } + + .mx-md-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-md-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-md-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 50rem) { + .m-md-10 { + margin: 4rem !important; } + + .mt-md-10 { + margin-top: 4rem !important; } + + .mr-md-10 { + margin-right: 4rem !important; } + + .mb-md-10 { + margin-bottom: 4rem !important; } + + .ml-md-10 { + margin-left: 4rem !important; } + + .mx-md-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-md-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-md-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-0 { + margin: 0 !important; } + + .mt-lg-0 { + margin-top: 0 !important; } + + .mr-lg-0 { + margin-right: 0 !important; } + + .mb-lg-0 { + margin-bottom: 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; } + + .mxn-lg-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 66.5rem) { + .m-lg-1 { + margin: 0.25rem !important; } + + .mt-lg-1 { + margin-top: 0.25rem !important; } + + .mr-lg-1 { + margin-right: 0.25rem !important; } + + .mb-lg-1 { + margin-bottom: 0.25rem !important; } + + .ml-lg-1 { + margin-left: 0.25rem !important; } + + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-lg-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-2 { + margin: 0.5rem !important; } + + .mt-lg-2 { + margin-top: 0.5rem !important; } + + .mr-lg-2 { + margin-right: 0.5rem !important; } + + .mb-lg-2 { + margin-bottom: 0.5rem !important; } + + .ml-lg-2 { + margin-left: 0.5rem !important; } + + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-lg-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-3 { + margin: 0.75rem !important; } + + .mt-lg-3 { + margin-top: 0.75rem !important; } + + .mr-lg-3 { + margin-right: 0.75rem !important; } + + .mb-lg-3 { + margin-bottom: 0.75rem !important; } + + .ml-lg-3 { + margin-left: 0.75rem !important; } + + .mx-lg-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-lg-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-lg-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-4 { + margin: 1rem !important; } + + .mt-lg-4 { + margin-top: 1rem !important; } + + .mr-lg-4 { + margin-right: 1rem !important; } + + .mb-lg-4 { + margin-bottom: 1rem !important; } + + .ml-lg-4 { + margin-left: 1rem !important; } + + .mx-lg-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-lg-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-lg-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-5 { + margin: 1.5rem !important; } + + .mt-lg-5 { + margin-top: 1.5rem !important; } + + .mr-lg-5 { + margin-right: 1.5rem !important; } + + .mb-lg-5 { + margin-bottom: 1.5rem !important; } + + .ml-lg-5 { + margin-left: 1.5rem !important; } + + .mx-lg-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-lg-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-lg-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-6 { + margin: 2rem !important; } + + .mt-lg-6 { + margin-top: 2rem !important; } + + .mr-lg-6 { + margin-right: 2rem !important; } + + .mb-lg-6 { + margin-bottom: 2rem !important; } + + .ml-lg-6 { + margin-left: 2rem !important; } + + .mx-lg-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-lg-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-lg-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-7 { + margin: 2.5rem !important; } + + .mt-lg-7 { + margin-top: 2.5rem !important; } + + .mr-lg-7 { + margin-right: 2.5rem !important; } + + .mb-lg-7 { + margin-bottom: 2.5rem !important; } + + .ml-lg-7 { + margin-left: 2.5rem !important; } + + .mx-lg-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-lg-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-lg-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-8 { + margin: 3rem !important; } + + .mt-lg-8 { + margin-top: 3rem !important; } + + .mr-lg-8 { + margin-right: 3rem !important; } + + .mb-lg-8 { + margin-bottom: 3rem !important; } + + .ml-lg-8 { + margin-left: 3rem !important; } + + .mx-lg-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-lg-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-lg-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-9 { + margin: 3.5rem !important; } + + .mt-lg-9 { + margin-top: 3.5rem !important; } + + .mr-lg-9 { + margin-right: 3.5rem !important; } + + .mb-lg-9 { + margin-bottom: 3.5rem !important; } + + .ml-lg-9 { + margin-left: 3.5rem !important; } + + .mx-lg-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-lg-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-lg-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-10 { + margin: 4rem !important; } + + .mt-lg-10 { + margin-top: 4rem !important; } + + .mr-lg-10 { + margin-right: 4rem !important; } + + .mb-lg-10 { + margin-bottom: 4rem !important; } + + .ml-lg-10 { + margin-left: 4rem !important; } + + .mx-lg-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-lg-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-lg-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-0 { + margin: 0 !important; } + + .mt-xl-0 { + margin-top: 0 !important; } + + .mr-xl-0 { + margin-right: 0 !important; } + + .mb-xl-0 { + margin-bottom: 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; } + + .mxn-xl-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 87.5rem) { + .m-xl-1 { + margin: 0.25rem !important; } + + .mt-xl-1 { + margin-top: 0.25rem !important; } + + .mr-xl-1 { + margin-right: 0.25rem !important; } + + .mb-xl-1 { + margin-bottom: 0.25rem !important; } + + .ml-xl-1 { + margin-left: 0.25rem !important; } + + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xl-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-2 { + margin: 0.5rem !important; } + + .mt-xl-2 { + margin-top: 0.5rem !important; } + + .mr-xl-2 { + margin-right: 0.5rem !important; } + + .mb-xl-2 { + margin-bottom: 0.5rem !important; } + + .ml-xl-2 { + margin-left: 0.5rem !important; } + + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xl-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-3 { + margin: 0.75rem !important; } + + .mt-xl-3 { + margin-top: 0.75rem !important; } + + .mr-xl-3 { + margin-right: 0.75rem !important; } + + .mb-xl-3 { + margin-bottom: 0.75rem !important; } + + .ml-xl-3 { + margin-left: 0.75rem !important; } + + .mx-xl-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xl-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xl-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-4 { + margin: 1rem !important; } + + .mt-xl-4 { + margin-top: 1rem !important; } + + .mr-xl-4 { + margin-right: 1rem !important; } + + .mb-xl-4 { + margin-bottom: 1rem !important; } + + .ml-xl-4 { + margin-left: 1rem !important; } + + .mx-xl-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xl-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xl-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-5 { + margin: 1.5rem !important; } + + .mt-xl-5 { + margin-top: 1.5rem !important; } + + .mr-xl-5 { + margin-right: 1.5rem !important; } + + .mb-xl-5 { + margin-bottom: 1.5rem !important; } + + .ml-xl-5 { + margin-left: 1.5rem !important; } + + .mx-xl-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xl-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xl-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-6 { + margin: 2rem !important; } + + .mt-xl-6 { + margin-top: 2rem !important; } + + .mr-xl-6 { + margin-right: 2rem !important; } + + .mb-xl-6 { + margin-bottom: 2rem !important; } + + .ml-xl-6 { + margin-left: 2rem !important; } + + .mx-xl-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xl-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xl-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-7 { + margin: 2.5rem !important; } + + .mt-xl-7 { + margin-top: 2.5rem !important; } + + .mr-xl-7 { + margin-right: 2.5rem !important; } + + .mb-xl-7 { + margin-bottom: 2.5rem !important; } + + .ml-xl-7 { + margin-left: 2.5rem !important; } + + .mx-xl-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xl-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xl-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-8 { + margin: 3rem !important; } + + .mt-xl-8 { + margin-top: 3rem !important; } + + .mr-xl-8 { + margin-right: 3rem !important; } + + .mb-xl-8 { + margin-bottom: 3rem !important; } + + .ml-xl-8 { + margin-left: 3rem !important; } + + .mx-xl-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xl-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xl-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-9 { + margin: 3.5rem !important; } + + .mt-xl-9 { + margin-top: 3.5rem !important; } + + .mr-xl-9 { + margin-right: 3.5rem !important; } + + .mb-xl-9 { + margin-bottom: 3.5rem !important; } + + .ml-xl-9 { + margin-left: 3.5rem !important; } + + .mx-xl-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xl-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xl-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-10 { + margin: 4rem !important; } + + .mt-xl-10 { + margin-top: 4rem !important; } + + .mr-xl-10 { + margin-right: 4rem !important; } + + .mb-xl-10 { + margin-bottom: 4rem !important; } + + .ml-xl-10 { + margin-left: 4rem !important; } + + .mx-xl-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xl-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xl-10 { + margin-right: -4rem !important; + margin-left: -4rem !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: 0.25rem !important; } + +.pt-1 { + padding-top: 0.25rem !important; } + +.pr-1 { + padding-right: 0.25rem !important; } + +.pb-1 { + padding-bottom: 0.25rem !important; } + +.pl-1 { + padding-left: 0.25rem !important; } + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2 { + padding-top: 0.5rem !important; } + +.pr-2 { + padding-right: 0.5rem !important; } + +.pb-2 { + padding-bottom: 0.5rem !important; } + +.pl-2 { + padding-left: 0.5rem !important; } + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + +.p-3 { + padding: 0.75rem !important; } + +.pt-3 { + padding-top: 0.75rem !important; } + +.pr-3 { + padding-right: 0.75rem !important; } + +.pb-3 { + padding-bottom: 0.75rem !important; } + +.pl-3 { + padding-left: 0.75rem !important; } + +.px-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + +.p-4 { + padding: 1rem !important; } + +.pt-4 { + padding-top: 1rem !important; } + +.pr-4 { + padding-right: 1rem !important; } + +.pb-4 { + padding-bottom: 1rem !important; } + +.pl-4 { + padding-left: 1rem !important; } + +.px-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + +.p-5 { + padding: 1.5rem !important; } + +.pt-5 { + padding-top: 1.5rem !important; } + +.pr-5 { + padding-right: 1.5rem !important; } + +.pb-5 { + padding-bottom: 1.5rem !important; } + +.pl-5 { + padding-left: 1.5rem !important; } + +.px-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + +.py-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + +.p-6 { + padding: 2rem !important; } + +.pt-6 { + padding-top: 2rem !important; } + +.pr-6 { + padding-right: 2rem !important; } + +.pb-6 { + padding-bottom: 2rem !important; } + +.pl-6 { + padding-left: 2rem !important; } + +.px-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + +.py-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + +.p-7 { + padding: 2.5rem !important; } + +.pt-7 { + padding-top: 2.5rem !important; } + +.pr-7 { + padding-right: 2.5rem !important; } + +.pb-7 { + padding-bottom: 2.5rem !important; } + +.pl-7 { + padding-left: 2.5rem !important; } + +.px-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + +.py-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + +.p-8 { + padding: 3rem !important; } + +.pt-8 { + padding-top: 3rem !important; } + +.pr-8 { + padding-right: 3rem !important; } + +.pb-8 { + padding-bottom: 3rem !important; } + +.pl-8 { + padding-left: 3rem !important; } + +.px-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + +.py-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + +.p-9 { + padding: 3.5rem !important; } + +.pt-9 { + padding-top: 3.5rem !important; } + +.pr-9 { + padding-right: 3.5rem !important; } + +.pb-9 { + padding-bottom: 3.5rem !important; } + +.pl-9 { + padding-left: 3.5rem !important; } + +.px-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + +.py-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + +.p-10 { + padding: 4rem !important; } + +.pt-10 { + padding-top: 4rem !important; } + +.pr-10 { + padding-right: 4rem !important; } + +.pb-10 { + padding-bottom: 4rem !important; } + +.pl-10 { + padding-left: 4rem !important; } + +.px-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + +.py-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { + .p-xs-0 { + padding: 0 !important; } + + .pt-xs-0 { + padding-top: 0 !important; } + + .pr-xs-0 { + padding-right: 0 !important; } + + .pb-xs-0 { + padding-bottom: 0 !important; } + + .pl-xs-0 { + padding-left: 0 !important; } + + .px-xs-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + .py-xs-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + .p-xs-1 { + padding: 0.25rem !important; } + + .pt-xs-1 { + padding-top: 0.25rem !important; } + + .pr-xs-1 { + padding-right: 0.25rem !important; } + + .pb-xs-1 { + padding-bottom: 0.25rem !important; } + + .pl-xs-1 { + padding-left: 0.25rem !important; } + + .px-xs-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xs-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xs-2 { + padding: 0.5rem !important; } + + .pt-xs-2 { + padding-top: 0.5rem !important; } + + .pr-xs-2 { + padding-right: 0.5rem !important; } + + .pb-xs-2 { + padding-bottom: 0.5rem !important; } + + .pl-xs-2 { + padding-left: 0.5rem !important; } + + .px-xs-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xs-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xs-3 { + padding: 0.75rem !important; } + + .pt-xs-3 { + padding-top: 0.75rem !important; } + + .pr-xs-3 { + padding-right: 0.75rem !important; } + + .pb-xs-3 { + padding-bottom: 0.75rem !important; } + + .pl-xs-3 { + padding-left: 0.75rem !important; } + + .px-xs-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xs-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xs-4 { + padding: 1rem !important; } + + .pt-xs-4 { + padding-top: 1rem !important; } + + .pr-xs-4 { + padding-right: 1rem !important; } + + .pb-xs-4 { + padding-bottom: 1rem !important; } + + .pl-xs-4 { + padding-left: 1rem !important; } + + .px-xs-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xs-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xs-5 { + padding: 1.5rem !important; } + + .pt-xs-5 { + padding-top: 1.5rem !important; } + + .pr-xs-5 { + padding-right: 1.5rem !important; } + + .pb-xs-5 { + padding-bottom: 1.5rem !important; } + + .pl-xs-5 { + padding-left: 1.5rem !important; } + + .px-xs-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xs-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xs-6 { + padding: 2rem !important; } + + .pt-xs-6 { + padding-top: 2rem !important; } + + .pr-xs-6 { + padding-right: 2rem !important; } + + .pb-xs-6 { + padding-bottom: 2rem !important; } + + .pl-xs-6 { + padding-left: 2rem !important; } + + .px-xs-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xs-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xs-7 { + padding: 2.5rem !important; } + + .pt-xs-7 { + padding-top: 2.5rem !important; } + + .pr-xs-7 { + padding-right: 2.5rem !important; } + + .pb-xs-7 { + padding-bottom: 2.5rem !important; } + + .pl-xs-7 { + padding-left: 2.5rem !important; } + + .px-xs-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xs-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xs-8 { + padding: 3rem !important; } + + .pt-xs-8 { + padding-top: 3rem !important; } + + .pr-xs-8 { + padding-right: 3rem !important; } + + .pb-xs-8 { + padding-bottom: 3rem !important; } + + .pl-xs-8 { + padding-left: 3rem !important; } + + .px-xs-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xs-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xs-9 { + padding: 3.5rem !important; } + + .pt-xs-9 { + padding-top: 3.5rem !important; } + + .pr-xs-9 { + padding-right: 3.5rem !important; } + + .pb-xs-9 { + padding-bottom: 3.5rem !important; } + + .pl-xs-9 { + padding-left: 3.5rem !important; } + + .px-xs-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xs-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xs-10 { + padding: 4rem !important; } + + .pt-xs-10 { + padding-top: 4rem !important; } + + .pr-xs-10 { + padding-right: 4rem !important; } + + .pb-xs-10 { + padding-bottom: 4rem !important; } + + .pl-xs-10 { + padding-left: 4rem !important; } + + .px-xs-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xs-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 31.25rem) { + .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: 0.25rem !important; } + + .pt-sm-1 { + padding-top: 0.25rem !important; } + + .pr-sm-1 { + padding-right: 0.25rem !important; } + + .pb-sm-1 { + padding-bottom: 0.25rem !important; } + + .pl-sm-1 { + padding-left: 0.25rem !important; } + + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-sm-2 { + padding: 0.5rem !important; } + + .pt-sm-2 { + padding-top: 0.5rem !important; } + + .pr-sm-2 { + padding-right: 0.5rem !important; } + + .pb-sm-2 { + padding-bottom: 0.5rem !important; } + + .pl-sm-2 { + padding-left: 0.5rem !important; } + + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-sm-3 { + padding: 0.75rem !important; } + + .pt-sm-3 { + padding-top: 0.75rem !important; } + + .pr-sm-3 { + padding-right: 0.75rem !important; } + + .pb-sm-3 { + padding-bottom: 0.75rem !important; } + + .pl-sm-3 { + padding-left: 0.75rem !important; } + + .px-sm-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-sm-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-sm-4 { + padding: 1rem !important; } + + .pt-sm-4 { + padding-top: 1rem !important; } + + .pr-sm-4 { + padding-right: 1rem !important; } + + .pb-sm-4 { + padding-bottom: 1rem !important; } + + .pl-sm-4 { + padding-left: 1rem !important; } + + .px-sm-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-sm-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-sm-5 { + padding: 1.5rem !important; } + + .pt-sm-5 { + padding-top: 1.5rem !important; } + + .pr-sm-5 { + padding-right: 1.5rem !important; } + + .pb-sm-5 { + padding-bottom: 1.5rem !important; } + + .pl-sm-5 { + padding-left: 1.5rem !important; } + + .px-sm-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-sm-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-sm-6 { + padding: 2rem !important; } + + .pt-sm-6 { + padding-top: 2rem !important; } + + .pr-sm-6 { + padding-right: 2rem !important; } + + .pb-sm-6 { + padding-bottom: 2rem !important; } + + .pl-sm-6 { + padding-left: 2rem !important; } + + .px-sm-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-sm-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-sm-7 { + padding: 2.5rem !important; } + + .pt-sm-7 { + padding-top: 2.5rem !important; } + + .pr-sm-7 { + padding-right: 2.5rem !important; } + + .pb-sm-7 { + padding-bottom: 2.5rem !important; } + + .pl-sm-7 { + padding-left: 2.5rem !important; } + + .px-sm-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-sm-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-sm-8 { + padding: 3rem !important; } + + .pt-sm-8 { + padding-top: 3rem !important; } + + .pr-sm-8 { + padding-right: 3rem !important; } + + .pb-sm-8 { + padding-bottom: 3rem !important; } + + .pl-sm-8 { + padding-left: 3rem !important; } + + .px-sm-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-sm-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-sm-9 { + padding: 3.5rem !important; } + + .pt-sm-9 { + padding-top: 3.5rem !important; } + + .pr-sm-9 { + padding-right: 3.5rem !important; } + + .pb-sm-9 { + padding-bottom: 3.5rem !important; } + + .pl-sm-9 { + padding-left: 3.5rem !important; } + + .px-sm-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-sm-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-sm-10 { + padding: 4rem !important; } + + .pt-sm-10 { + padding-top: 4rem !important; } + + .pr-sm-10 { + padding-right: 4rem !important; } + + .pb-sm-10 { + padding-bottom: 4rem !important; } + + .pl-sm-10 { + padding-left: 4rem !important; } + + .px-sm-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-sm-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 50rem) { + .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: 0.25rem !important; } + + .pt-md-1 { + padding-top: 0.25rem !important; } + + .pr-md-1 { + padding-right: 0.25rem !important; } + + .pb-md-1 { + padding-bottom: 0.25rem !important; } + + .pl-md-1 { + padding-left: 0.25rem !important; } + + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-md-2 { + padding: 0.5rem !important; } + + .pt-md-2 { + padding-top: 0.5rem !important; } + + .pr-md-2 { + padding-right: 0.5rem !important; } + + .pb-md-2 { + padding-bottom: 0.5rem !important; } + + .pl-md-2 { + padding-left: 0.5rem !important; } + + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-md-3 { + padding: 0.75rem !important; } + + .pt-md-3 { + padding-top: 0.75rem !important; } + + .pr-md-3 { + padding-right: 0.75rem !important; } + + .pb-md-3 { + padding-bottom: 0.75rem !important; } + + .pl-md-3 { + padding-left: 0.75rem !important; } + + .px-md-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-md-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-md-4 { + padding: 1rem !important; } + + .pt-md-4 { + padding-top: 1rem !important; } + + .pr-md-4 { + padding-right: 1rem !important; } + + .pb-md-4 { + padding-bottom: 1rem !important; } + + .pl-md-4 { + padding-left: 1rem !important; } + + .px-md-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-md-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-md-5 { + padding: 1.5rem !important; } + + .pt-md-5 { + padding-top: 1.5rem !important; } + + .pr-md-5 { + padding-right: 1.5rem !important; } + + .pb-md-5 { + padding-bottom: 1.5rem !important; } + + .pl-md-5 { + padding-left: 1.5rem !important; } + + .px-md-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-md-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-md-6 { + padding: 2rem !important; } + + .pt-md-6 { + padding-top: 2rem !important; } + + .pr-md-6 { + padding-right: 2rem !important; } + + .pb-md-6 { + padding-bottom: 2rem !important; } + + .pl-md-6 { + padding-left: 2rem !important; } + + .px-md-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-md-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-md-7 { + padding: 2.5rem !important; } + + .pt-md-7 { + padding-top: 2.5rem !important; } + + .pr-md-7 { + padding-right: 2.5rem !important; } + + .pb-md-7 { + padding-bottom: 2.5rem !important; } + + .pl-md-7 { + padding-left: 2.5rem !important; } + + .px-md-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-md-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-md-8 { + padding: 3rem !important; } + + .pt-md-8 { + padding-top: 3rem !important; } + + .pr-md-8 { + padding-right: 3rem !important; } + + .pb-md-8 { + padding-bottom: 3rem !important; } + + .pl-md-8 { + padding-left: 3rem !important; } + + .px-md-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-md-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-md-9 { + padding: 3.5rem !important; } + + .pt-md-9 { + padding-top: 3.5rem !important; } + + .pr-md-9 { + padding-right: 3.5rem !important; } + + .pb-md-9 { + padding-bottom: 3.5rem !important; } + + .pl-md-9 { + padding-left: 3.5rem !important; } + + .px-md-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-md-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-md-10 { + padding: 4rem !important; } + + .pt-md-10 { + padding-top: 4rem !important; } + + .pr-md-10 { + padding-right: 4rem !important; } + + .pb-md-10 { + padding-bottom: 4rem !important; } + + .pl-md-10 { + padding-left: 4rem !important; } + + .px-md-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-md-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 66.5rem) { + .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: 0.25rem !important; } + + .pt-lg-1 { + padding-top: 0.25rem !important; } + + .pr-lg-1 { + padding-right: 0.25rem !important; } + + .pb-lg-1 { + padding-bottom: 0.25rem !important; } + + .pl-lg-1 { + padding-left: 0.25rem !important; } + + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-lg-2 { + padding: 0.5rem !important; } + + .pt-lg-2 { + padding-top: 0.5rem !important; } + + .pr-lg-2 { + padding-right: 0.5rem !important; } + + .pb-lg-2 { + padding-bottom: 0.5rem !important; } + + .pl-lg-2 { + padding-left: 0.5rem !important; } + + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-lg-3 { + padding: 0.75rem !important; } + + .pt-lg-3 { + padding-top: 0.75rem !important; } + + .pr-lg-3 { + padding-right: 0.75rem !important; } + + .pb-lg-3 { + padding-bottom: 0.75rem !important; } + + .pl-lg-3 { + padding-left: 0.75rem !important; } + + .px-lg-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-lg-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-lg-4 { + padding: 1rem !important; } + + .pt-lg-4 { + padding-top: 1rem !important; } + + .pr-lg-4 { + padding-right: 1rem !important; } + + .pb-lg-4 { + padding-bottom: 1rem !important; } + + .pl-lg-4 { + padding-left: 1rem !important; } + + .px-lg-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-lg-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-lg-5 { + padding: 1.5rem !important; } + + .pt-lg-5 { + padding-top: 1.5rem !important; } + + .pr-lg-5 { + padding-right: 1.5rem !important; } + + .pb-lg-5 { + padding-bottom: 1.5rem !important; } + + .pl-lg-5 { + padding-left: 1.5rem !important; } + + .px-lg-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-lg-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-lg-6 { + padding: 2rem !important; } + + .pt-lg-6 { + padding-top: 2rem !important; } + + .pr-lg-6 { + padding-right: 2rem !important; } + + .pb-lg-6 { + padding-bottom: 2rem !important; } + + .pl-lg-6 { + padding-left: 2rem !important; } + + .px-lg-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-lg-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-lg-7 { + padding: 2.5rem !important; } + + .pt-lg-7 { + padding-top: 2.5rem !important; } + + .pr-lg-7 { + padding-right: 2.5rem !important; } + + .pb-lg-7 { + padding-bottom: 2.5rem !important; } + + .pl-lg-7 { + padding-left: 2.5rem !important; } + + .px-lg-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-lg-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-lg-8 { + padding: 3rem !important; } + + .pt-lg-8 { + padding-top: 3rem !important; } + + .pr-lg-8 { + padding-right: 3rem !important; } + + .pb-lg-8 { + padding-bottom: 3rem !important; } + + .pl-lg-8 { + padding-left: 3rem !important; } + + .px-lg-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-lg-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-lg-9 { + padding: 3.5rem !important; } + + .pt-lg-9 { + padding-top: 3.5rem !important; } + + .pr-lg-9 { + padding-right: 3.5rem !important; } + + .pb-lg-9 { + padding-bottom: 3.5rem !important; } + + .pl-lg-9 { + padding-left: 3.5rem !important; } + + .px-lg-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-lg-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-lg-10 { + padding: 4rem !important; } + + .pt-lg-10 { + padding-top: 4rem !important; } + + .pr-lg-10 { + padding-right: 4rem !important; } + + .pb-lg-10 { + padding-bottom: 4rem !important; } + + .pl-lg-10 { + padding-left: 4rem !important; } + + .px-lg-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-lg-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 87.5rem) { + .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: 0.25rem !important; } + + .pt-xl-1 { + padding-top: 0.25rem !important; } + + .pr-xl-1 { + padding-right: 0.25rem !important; } + + .pb-xl-1 { + padding-bottom: 0.25rem !important; } + + .pl-xl-1 { + padding-left: 0.25rem !important; } + + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xl-2 { + padding: 0.5rem !important; } + + .pt-xl-2 { + padding-top: 0.5rem !important; } + + .pr-xl-2 { + padding-right: 0.5rem !important; } + + .pb-xl-2 { + padding-bottom: 0.5rem !important; } + + .pl-xl-2 { + padding-left: 0.5rem !important; } + + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xl-3 { + padding: 0.75rem !important; } + + .pt-xl-3 { + padding-top: 0.75rem !important; } + + .pr-xl-3 { + padding-right: 0.75rem !important; } + + .pb-xl-3 { + padding-bottom: 0.75rem !important; } + + .pl-xl-3 { + padding-left: 0.75rem !important; } + + .px-xl-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xl-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xl-4 { + padding: 1rem !important; } + + .pt-xl-4 { + padding-top: 1rem !important; } + + .pr-xl-4 { + padding-right: 1rem !important; } + + .pb-xl-4 { + padding-bottom: 1rem !important; } + + .pl-xl-4 { + padding-left: 1rem !important; } + + .px-xl-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xl-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xl-5 { + padding: 1.5rem !important; } + + .pt-xl-5 { + padding-top: 1.5rem !important; } + + .pr-xl-5 { + padding-right: 1.5rem !important; } + + .pb-xl-5 { + padding-bottom: 1.5rem !important; } + + .pl-xl-5 { + padding-left: 1.5rem !important; } + + .px-xl-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xl-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xl-6 { + padding: 2rem !important; } + + .pt-xl-6 { + padding-top: 2rem !important; } + + .pr-xl-6 { + padding-right: 2rem !important; } + + .pb-xl-6 { + padding-bottom: 2rem !important; } + + .pl-xl-6 { + padding-left: 2rem !important; } + + .px-xl-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xl-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xl-7 { + padding: 2.5rem !important; } + + .pt-xl-7 { + padding-top: 2.5rem !important; } + + .pr-xl-7 { + padding-right: 2.5rem !important; } + + .pb-xl-7 { + padding-bottom: 2.5rem !important; } + + .pl-xl-7 { + padding-left: 2.5rem !important; } + + .px-xl-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xl-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xl-8 { + padding: 3rem !important; } + + .pt-xl-8 { + padding-top: 3rem !important; } + + .pr-xl-8 { + padding-right: 3rem !important; } + + .pb-xl-8 { + padding-bottom: 3rem !important; } + + .pl-xl-8 { + padding-left: 3rem !important; } + + .px-xl-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xl-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xl-9 { + padding: 3.5rem !important; } + + .pt-xl-9 { + padding-top: 3.5rem !important; } + + .pr-xl-9 { + padding-right: 3.5rem !important; } + + .pb-xl-9 { + padding-bottom: 3.5rem !important; } + + .pl-xl-9 { + padding-left: 3.5rem !important; } + + .px-xl-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xl-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xl-10 { + padding: 4rem !important; } + + .pt-xl-10 { + padding-top: 4rem !important; } + + .pr-xl-10 { + padding-right: 4rem !important; } + + .pb-xl-10 { + padding-bottom: 4rem !important; } + + .pl-xl-10 { + padding-left: 4rem !important; } + + .px-xl-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xl-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media print { + .site-footer, + .site-button, + #edit-this-page, + #back-to-top, + .site-nav, + .main-header { + display: none !important; } + + .side-bar { + width: 100%; + height: auto; + border-right: 0 !important; } + + .site-header { + border-bottom: 1px solid #eeebee; } + + .site-title { + font-size: 1rem !important; + font-weight: 700 !important; } + + .text-small { + font-size: 8pt !important; } + + pre.highlight { + border: 1px solid #eeebee; } + + .main { + max-width: none; + margin-left: 0; } } +a.skip-to-main { + left: -999px; + position: absolute; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; + z-index: -999; } + +a.skip-to-main:focus, +a.skip-to-main:active { + color: #7253ed; + background-color: #fff; + left: auto; + top: auto; + width: 30%; + height: auto; + overflow: auto; + margin: 10px 35%; + padding: 5px; + border-radius: 15px; + border: 4px solid #5e41d0; + text-align: center; + font-size: 1.2em; + z-index: 999; } + +div.opaque { + background-color: #fff; } + +p.note, blockquote.note { + background: rgba(255, 235, 130, 0.2); + border-left: 4px solid #e7af06; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note::before, blockquote.note::before { + color: #e7af06; + content: "Note"; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + p.note > .note-title, blockquote.note > .note-title { + color: #e7af06; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +p.note-title, blockquote.note-title { + background: rgba(255, 235, 130, 0.2); + border-left: 4px solid #e7af06; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note-title > p:first-child, blockquote.note-title > p:first-child { + margin-top: 0; + margin-bottom: 0; + color: #e7af06; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +blockquote.note { + margin-left: 0; + margin-right: 0; } + blockquote.note > p:first-child { + margin-top: 0; } + blockquote.note > p:last-child { + margin-bottom: 0; } + +blockquote.note-title { + margin-left: 0; + margin-right: 0; } + blockquote.note-title > p:nth-child(2) { + margin-top: 0; } + blockquote.note-title > p:last-child { + margin-bottom: 0; } + +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*------------------------------------*\ + $CONTENTS +\*------------------------------------*/ +/** + * STYLE GUIDE VARIABLES------------------Declarations of Sass variables + * -----Typography + * -----Colors + * -----Textfield + * -----Switch + * -----Spinner + * -----Radio + * -----Menu + * -----List + * -----Layout + * -----Icon toggles + * -----Footer + * -----Column + * -----Checkbox + * -----Card + * -----Button + * -----Animation + * -----Progress + * -----Badge + * -----Shadows + * -----Grid + * -----Data table + * -----Dialog + * -----Snackbar + * -----Tooltip + * -----Chip + * + * Even though all variables have the `!default` directive, most of them + * should not be changed as they are dependent one another. This can cause + * visual distortions (like alignment issues) that are hard to track down + * and fix. + */ +/* ========== TYPOGRAPHY ========== */ +/* We're splitting fonts into "preferred" and "performance" in order to optimize + page loading. For important text, such as the body, we want it to load + immediately and not wait for the web font load, whereas for other sections, + such as headers and titles, we're OK with things taking a bit longer to load. + We do have some optional classes and parameters in the mixins, in case you + definitely want to make sure you're using the preferred font and don't mind + the performance hit. + We should be able to improve on this once CSS Font Loading L3 becomes more + widely available. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* ========== Color Palettes ========== */ +/* colors.scss */ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* ========== IMAGES ========== */ +/* ========== Color & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* DIALOG */ +/* SNACKBAR */ +/* TOOLTIP */ +/* CHIP */ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Typography */ +/* Shadows */ +/* Animations */ +/* Dialog */ +:root { + --toc-1: #e6e9eb; + --toc-2: #ccd2d8; + --toc-3: #b3bcc4; + --toc-4: #9aa5b1; + --toc-5: #e6e9eb; + --toc-6: #ccd2d8; + --toc-7: #b3bcc4; + --toc-8: #9aa5b1; + --toc-9: #e6e9eb; + --toc-10: #ccd2d8; + --toc-11: #b3bcc4; + --toc-12: #9aa5b1; } + +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Prevent adjustments of font size after orientation changes in IE and iOS. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + * 2. Add the correct display in IE. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section { + /* 1 */ + display: block; } + +summary { + display: list-item; } + +/** + * Add the correct display in IE 9-. + */ +audio, +canvas, +progress, +video { + display: inline-block; } + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; } + +/** + * Add the correct display in IE 10-. + * 1. Add the correct display in IE. + */ +template, +[hidden] { + display: none !important; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; + /* 1 */ } + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ +a:active, +a:hover { + outline-width: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #1b1f23; } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; } + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; } + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/* Forms + ========================================================================== */ +/** + * 1. Change font properties to `inherit` in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +select, +textarea { + font: inherit; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Restore the font weight unset by the previous rule. + */ +optgroup { + font-weight: 600; } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. + */ +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Correct the text style of placeholders in Chrome, Edge, and Safari. + */ +::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +* { + box-sizing: border-box; } + +input, +select, +textarea, +button { + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +body { + font-family: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-size: 14px; + line-height: 1.4; + color: #24292e; + background-color: #fff; } + +a { + color: #0366d6; + 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 #dfe2e5; } + 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 Consolas, "Liberation Mono", Menlo, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #d1d5da; + border-radius: 4px; + box-shadow: inset 0 -1px 0 #d1d5da; } + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0; } + +@font-face { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } +h1 { + font-size: 32px; + font-weight: 600; + font-family: "FlandersArtSans-SerifThin"; } + +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 { + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; } + +pre { + margin-top: 0; + margin-bottom: 0; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; } + +.octicon { + vertical-align: text-bottom; } + +.breadcrumb-item { + display: inline-block; + margin-left: -0.35em; + white-space: nowrap; + list-style: none; } + .breadcrumb-item::after { + padding-right: 0.5em; + padding-left: 0.5em; + color: #e1e4e8; + content: "/"; } + .breadcrumb-item:first-child { + margin-left: 0; } + +.breadcrumb-item-selected, +.breadcrumb-item[aria-current]:not([aria-current="false"]) { + color: #586069; } + .breadcrumb-item-selected::after, + .breadcrumb-item[aria-current]:not([aria-current="false"])::after { + content: none; } + +.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; + user-select: none; + border: 1px solid; + border-radius: 4px; + appearance: none; } + .btn:hover { + text-decoration: none; } + .btn:disabled, .btn.disabled, .btn[aria-disabled="true"] { + cursor: default; } + .btn:disabled .octicon, .btn.disabled .octicon, .btn[aria-disabled="true"] .octicon { + color: inherit; } + .btn i { + font-style: normal; + font-weight: 500; + opacity: 0.75; } + .btn .octicon { + margin-right: 4px; + color: #6a737d; + 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: rgba(27, 31, 35, 0.08); } + .btn .dropdown-caret { + margin-left: 4px; + opacity: 0.8; } + +.btn { + color: #24292e; + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); + transition: background-color 0.2s cubic-bezier(0.3, 0, 0.5, 1); } + .btn:hover, .btn.hover, [open] > .btn { + background-color: #f3f4f6; + transition-duration: 0.1s; } + .btn:active, .btn.selected, .btn[aria-selected="true"] { + background-color: #edeff2; + box-shadow: inset 0 1px 0 rgba(238, 235, 238, 0.2); + transition: none; } + .btn:disabled, .btn.disabled, .btn[aria-disabled="true"] { + color: #959da5; + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); } + .btn:focus, .btn.focus { + outline: 1px dotted transparent; + outline-offset: 2px; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + +.btn-primary { + color: #fff; + background-color: #2ea44f; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-primary:hover, .btn-primary.hover, [open] > .btn-primary { + background-color: #2c974b; } + .btn-primary:active, .btn-primary.selected, .btn-primary[aria-selected="true"] { + background-color: #2a8f47; + box-shadow: inset 0 1px 0 rgba(20, 70, 32, 0.2); } + .btn-primary:disabled, .btn-primary.disabled, .btn-primary[aria-disabled="true"] { + color: rgba(255, 255, 255, 0.8); + background-color: #94d3a2; + border-color: rgba(27, 31, 35, 0.1); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 3px rgba(46, 164, 79, 0.4); } + .btn-primary .Counter { + color: inherit; + background-color: rgba(255, 255, 255, 0.2); } + .btn-primary .octicon { + color: rgba(255, 255, 255, 0.8); } + +.btn-danger { + color: #cb2431; + transition: none; } + .btn-danger:hover, [open] > .btn-danger { + color: #fff; + background-color: #cb2431; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-danger:hover .Counter, [open] > .btn-danger .Counter { + background-color: rgba(255, 255, 255, 0.2); } + .btn-danger:hover .octicon, [open] > .btn-danger .octicon { + color: inherit; } + .btn-danger:active, .btn-danger.selected, .btn-danger[aria-selected="true"] { + color: #fff; + background-color: #be222e; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: inset 0 1px 0 rgba(134, 24, 29, 0.2); } + .btn-danger:disabled, .btn-danger.disabled, .btn-danger[aria-disabled="true"] { + color: rgba(203, 36, 49, 0.5); + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .btn-danger:disabled .Counter, .btn-danger.disabled .Counter, .btn-danger[aria-disabled="true"] .Counter { + background-color: rgba(203, 36, 49, 0.05); } + .btn-danger:focus { + box-shadow: 0 0 0 3px rgba(203, 36, 49, 0.4); } + .btn-danger .Counter { + color: inherit; + background-color: rgba(203, 36, 49, 0.1); } + +.btn-outline { + color: #0366d6; + transition: none; } + .btn-outline:hover, [open] > .btn-outline { + color: #fff; + background-color: #0366d6; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-outline:hover .Counter, [open] > .btn-outline .Counter { + background-color: rgba(255, 255, 255, 0.2); } + .btn-outline:hover .octicon, [open] > .btn-outline .octicon { + color: inherit; } + .btn-outline:active, .btn-outline.selected, .btn-outline[aria-selected="true"] { + color: #fff; + background-color: #035fc7; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: inset 0 1px 0 rgba(5, 38, 76, 0.2); } + .btn-outline:disabled, .btn-outline.disabled, .btn-outline[aria-disabled="true"] { + color: rgba(3, 102, 214, 0.5); + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .btn-outline:disabled .Counter, .btn-outline.disabled .Counter, .btn-outline[aria-disabled="true"] .Counter { + background-color: rgba(3, 102, 214, 0.05); } + .btn-outline:focus { + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.4); } + .btn-outline .Counter { + color: inherit; + background-color: rgba(3, 102, 214, 0.1); } + +.btn-blue { + color: #fff; + background-color: #0361cc; + background-image: linear-gradient(-180deg, #0679fc 0%, #0361cc 90%); } + .btn-blue:focus, .btn-blue.focus { + box-shadow: 0 0 0 0.2em rgba(6, 121, 252, 0.4); } + .btn-blue:hover, .btn-blue.hover { + background-color: #035cc2; + background-image: linear-gradient(-180deg, #0374f4 0%, #035cc2 90%); + background-position: -0.5em; + border-color: rgba(27, 31, 35, 0.5); } + .btn-blue:active, .btn-blue.selected, .btn-blue[aria-selected="true"], [open] > .btn-blue { + background-color: #045cc1; + background-image: none; + border-color: rgba(27, 31, 35, 0.5); + box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15); } + .btn-blue:disabled, .btn-blue.disabled, .btn-blue[aria-disabled="true"] { + color: rgba(255, 255, 255, 0.75); + background-color: #81b0e6; + background-image: none; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: none; } + .btn-blue .Counter { + color: #0366d6; + background-color: #fff; } + +.btn-sm { + padding: 3px 12px; + font-size: 12px; + line-height: 20px; } + .btn-sm .octicon { + vertical-align: text-top; } + +.btn-large { + padding: 0.75em 1.5em; + font-size: inherit; + line-height: 1.5; + border-radius: 0.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: 4px; + border-bottom-left-radius: 4px; } + .BtnGroup-item:last-child { + border-right-width: 1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + .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: 4px; + border-bottom-left-radius: 4px; } + .BtnGroup-parent:last-child .BtnGroup-item { + border-right-width: 1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + .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: #0366d6; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + user-select: none; + background-color: transparent; + border: 0; + 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: rgba(88, 96, 105, 0.5); + cursor: default; } + +.btn-invisible { + color: #0366d6; + background-color: transparent; + border: 0; + border-radius: 0; + box-shadow: none; } + .btn-invisible:hover, .btn-invisible:active, .btn-invisible:focus, .btn-invisible.selected, .btn-invisible[aria-selected="true"], .btn-invisible.zeroclipboard-is-hover, .btn-invisible.zeroclipboard-is-active { + color: #0366d6; + background: none; + outline: none; + box-shadow: none; } + +.btn-octicon { + display: inline-block; + padding: 5px; + margin-left: 5px; + line-height: 1; + color: #586069; + vertical-align: middle; + background: transparent; + border: 0; } + .btn-octicon:hover { + color: #0366d6; } + .btn-octicon.disabled, .btn-octicon[aria-disabled="true"] { + color: #959da5; + cursor: default; } + .btn-octicon.disabled:hover, .btn-octicon[aria-disabled="true"]:hover { + color: #959da5; } + +.btn-octicon-danger:hover { + color: #cb2431; } + +.close-button { + padding: 0; + background: transparent; + border: 0; + outline: none; } + +.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: #444d56; + text-decoration: none; + vertical-align: middle; + background: #dfe2e5; + border: 0; + border-radius: 1px; } + .hidden-text-expander a:hover, + .ellipsis-expander:hover { + text-decoration: none; + background-color: #c6cbd1; } + .hidden-text-expander a:active, + .ellipsis-expander:active { + color: #fff; + background-color: #2188ff; } + +.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: #24292e; + vertical-align: middle; + background-color: #fff; + border: 1px solid rgba(27, 31, 35, 0.15); + border-left: 0; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .social-count:hover, .social-count:active { + text-decoration: none; } + .social-count:hover { + color: #0366d6; + cursor: pointer; } + .social-count:focus { + z-index: 1; + outline: 0; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + +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: #24292e; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #eeebee; + border-radius: 4px; + outline: none; + box-shadow: inset 0 1px 0 rgba(238, 235, 238, 0.2); } + .form-control.focus, .form-control:focus, + .form-select.focus, + .form-select:focus { + border-color: #0366d6; + outline: none; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + .form-control[disabled], + .form-select[disabled] { + color: #959da5; + background-color: #f3f4f6; } + @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: #fafbfc; } + .input-contrast:focus { + background-color: #fff; } + +.input-dark { + color: #fff; + background-color: rgba(255, 255, 255, 0.15); + border-color: transparent; + box-shadow: none; } + .input-dark::placeholder { + color: inherit; + opacity: 0.6; } + .input-dark.focus, .input-dark:focus { + border-color: rgba(27, 31, 35, 0.3); + box-shadow: 0 0 0 0.2em rgba(24, 51, 133, 0.4); } + +::placeholder { + color: #6a737d; + opacity: 1; } + +.input-sm { + 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: Consolas, "Liberation Mono", Menlo, 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: #fadf50; + border-radius: 4px; } + .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: #586069; } + +.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: #586069; } + .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; + 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: #735c0f; + background: #fadf50; + border: 1px solid #f9c513; + border-radius: 4px; } + .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: #fff; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: right 8px center; + background-size: 8px 10px; + appearance: none; } + .form-select::-ms-expand { + opacity: 0; } + .form-select[multiple] { + height: auto; } + +.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: #fafbfc; } + .form-group .form-control:focus { + background-color: #fff; } + .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: #cb2431; } + .form-group dd h4.is-success, + .form-group .form-group-body h4.is-success { + color: #22863a; } + .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: #cb2431; + content: "*"; } + .form-group .success, + .form-group .error, + .form-group .indicator { + display: none; + font-size: 12px; + font-weight: 600; } + .form-group.loading { + opacity: 0.5; } + .form-group.loading .indicator { + display: inline; } + .form-group.loading .spinner { + display: inline-block; + vertical-align: middle; } + .form-group.successful .success { + display: inline; + color: #22863a; } + .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: 4px; } + .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: #144620; + background-color: #11b584; + border-color: #34d058; } + .form-group.successed .success::after { + border-bottom-color: #11b584; } + .form-group.successed .success::before { + border-bottom-color: #34d058; } + .form-group.warn .form-control { + border-color: #f9c513; } + .form-group.warn .warning { + background-color: #f7d12e; + border-color: #f9c513; } + .form-group.warn .warning::after { + border-bottom-color: #f7d12e; } + .form-group.warn .warning::before { + border-bottom-color: #f9c513; } + .form-group.errored .form-control { + border-color: #cb2431; } + .form-group.errored label { + color: #cb2431; } + .form-group.errored .error { + background-color: #f77e7e; + border-color: #dd2e2e; } + .form-group.errored .error::after { + border-bottom-color: #f77e7e; } + .form-group.errored .error::before { + border-bottom-color: #dd2e2e; } + +.note { + min-height: 17px; + margin: 4px 0 2px; + font-size: 12px; + color: #586069; } + .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 (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), 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: #28a745; + fill: #28a745; } +.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: #cb2431; + fill: #d73a49; } + +.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: #586069; + background-color: #fafbfc; + border: 1px solid #c3c8cf; + border-top: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; } + .drag-and-drop .default, + .drag-and-drop .loading, + .drag-and-drop .error { + display: none; } + .drag-and-drop .error { + color: #cb2431; } + .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: #586069; } + .drag-and-drop-error-info a { + color: #0366d6; } + +.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: 0.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 #dfe2e5; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } +.upload-enabled.focused { + border-radius: 4px; + box-shadow: inset 0 1px 2px rgba(27, 31, 35, 0.075), 0 0 0 0.2em rgba(3, 102, 214, 0.3); } + .upload-enabled.focused .form-control { + box-shadow: none; } + .upload-enabled.focused .drag-and-drop { + border-color: #4a9eff; } + +.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 #c3c8cf; } + .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: #586069; } + +p.explain { + position: relative; + font-size: 12px; + color: #586069; } + p.explain strong { + color: #24292e; } + p.explain .octicon { + margin-right: 5px; + color: #959da5; } + 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: #24292e; + cursor: pointer; + border: 1px solid #eeebee; } + :checked + .radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; } + .radio-label:first-of-type { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; } + .radio-label:last-of-type { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + +.radio-input { + z-index: 3; + float: left; + margin: 10px -32px 0 16px; } + +.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: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-size: 16px; + line-height: 1.4; + word-wrap: break-word; } + .markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px Consolas, "Liberation Mono", Menlo, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #d1d5da; + border-radius: 4px; + box-shadow: inset 0 -1px 0 #d1d5da; } + .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: #cb2431; } + .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: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; } + .markdown-body blockquote { + padding: 0 1em; + color: #6a737d; + border-left: 0.25em solid #dfe2e5; } + .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: #1b1f23; + 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 { + font-size: inherit; } +.markdown-body h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid #eaecef; } +.markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #eaecef; } +.markdown-body h3 { + font-size: 1.25em; } +.markdown-body h4 { + font-size: 1em; } +.markdown-body h5 { + font-size: 0.875em; } +.markdown-body h6 { + font-size: 0.85em; + color: #6a737d; } + +.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 ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; } +.markdown-body li { + word-wrap: break-all; } +.markdown-body li > p { + margin-top: 16px; } +.markdown-body li + li { + margin-top: 0.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 #dfe2e5; } + .markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; } + .markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; } + .markdown-body table img { + background-color: transparent; } + +.markdown-body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; } + .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 #dfe2e5; } + .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: #24292e; } +.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: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: rgba(27, 31, 35, 0.05); + border-radius: 4px; } + .markdown-body code br, + .markdown-body tt br { + display: none; } +.markdown-body del code { + text-decoration: inherit; } +.markdown-body pre { + word-wrap: normal; } + .markdown-body pre > code { + padding: 0; + margin: 0; + font-size: 100%; + 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: #f6f8fa; + border-radius: 4px; } +.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: #fff; + border: 0; } +.markdown-body .csv-data tr { + border-top: 0; } +.markdown-body .csv-data th { + font-weight: 600; + background: #f6f8fa; + border-top: 0; } + +.highlight { + background-color: #f8f8f8; } + .highlight table td { + padding: 5px; } + .highlight table pre { + margin: 0; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .c, + .highlight .ch, + .highlight .cd, + .highlight .cpf { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc, + .highlight .kd, + .highlight .kn, + .highlight .kp, + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; + font-weight: bold; } + .highlight .k, + .highlight .kv { + color: #000000; + font-weight: bold; } + .highlight .mf, + .highlight .mh, + .highlight .il, + .highlight .mi, + .highlight .mo, + .highlight .m, + .highlight .mb, + .highlight .mx { + color: #009999; } + .highlight .sb, + .highlight .sc, + .highlight .sd, + .highlight .s2, + .highlight .se, + .highlight .sh, + .highlight .si, + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .s, + .highlight .sa, + .highlight .dl { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .bp { + color: #999999; } + .highlight .nb { + color: #0086b3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .nd { + color: #3c5d5d; + font-weight: bold; } + .highlight .ni { + color: #800080; } + .highlight .ne, + .highlight .nf, + .highlight .fm, + .highlight .nl { + color: #990000; + font-weight: bold; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .vc, + .highlight .vg, + .highlight .vi, + .highlight .nv, + .highlight .vm { + color: #008080; } + .highlight .ow, + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + +@font-face { + font-family: "FlandersArtSans-Medium"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/sans/FlandersArtSans-Medium.woff2") format("woff2"), url("../webfonts/sans/FlandersArtSans-Medium.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-Regular"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/sans/FlandersArtSans-Regular.woff2") format("woff2"), url("../webfonts/sans/FlandersArtSans-Regular.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-Serif"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Regular.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Regular.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("fonts/lato-normal.woff2") format("woff2"), url("fonts/lato-normal.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 400; + font-style: italic; + font-display: block; + src: url("fonts/lato-normal-italic.woff2") format("woff2"), url("fonts/lato-normal-italic.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 600; + font-style: normal; + font-display: block; + src: url("fonts/lato-bold.woff2") format("woff2"), url("fonts/lato-bold.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 600; + font-style: italic; + font-display: block; + src: url("fonts/lato-bold-italic.woff2") format("woff2"), url("fonts/lato-bold-italic.woff") format("woff"); } +@font-face { + font-family: "Roboto-Slab"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("fonts/Roboto-Slab-Regular.woff2") format("woff2"), url("fonts/Roboto-Slab-Regular.woff") format("woff"); } +@font-face { + font-family: "Roboto-Slab"; + font-weight: 600; + font-style: normal; + font-display: block; + src: url("fonts/Roboto-Slab-Bold.woff2") format("woff2"), url("fonts/Roboto-Slab-Bold.woff") format("woff"); } +@font-face { + font-family: "FontAwesome"; + font-weight: normal; + font-style: normal; + font-display: block; + src: url("fonts/fontawesome-webfont.eot"); + src: url("fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/fontawesome-webfont.woff2") format("woff2"), url("fonts/fontawesome-webfont.woff") format("woff"), url("fonts/fontawesome-webfont.ttf") format("truetype"), url("fonts/fontawesome-webfont.svg#fontawesomeregular") format("svg"); } +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: ""; } + +.fa-music:before { + content: ""; } + +.fa-search:before { + content: ""; } + +.fa-envelope-o:before { + content: ""; } + +.fa-heart:before { + content: ""; } + +.fa-star:before { + content: ""; } + +.fa-star-o:before { + content: ""; } + +.fa-user:before { + content: ""; } + +.fa-film:before { + content: ""; } + +.fa-th-large:before { + content: ""; } + +.fa-th:before { + content: ""; } + +.fa-th-list:before { + content: ""; } + +.fa-check:before { + content: ""; } + +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: ""; } + +.fa-search-plus:before { + content: ""; } + +.fa-search-minus:before { + content: ""; } + +.fa-power-off:before { + content: ""; } + +.fa-signal:before { + content: ""; } + +.fa-gear:before, +.fa-cog:before { + content: ""; } + +.fa-trash-o:before { + content: ""; } + +.fa-home:before { + content: ""; } + +.fa-file-o:before { + content: ""; } + +.fa-clock-o:before { + content: ""; } + +.fa-road:before { + content: ""; } + +.fa-download:before { + content: ""; } + +.fa-arrow-circle-o-down:before { + content: ""; } + +.fa-arrow-circle-o-up:before { + content: ""; } + +.fa-inbox:before { + content: ""; } + +.fa-play-circle-o:before { + content: ""; } + +.fa-rotate-right:before, +.fa-repeat:before { + content: ""; } + +.fa-refresh:before { + content: ""; } + +.fa-list-alt:before { + content: ""; } + +.fa-lock:before { + content: ""; } + +.fa-flag:before { + content: ""; } + +.fa-headphones:before { + content: ""; } + +.fa-volume-off:before { + content: ""; } + +.fa-volume-down:before { + content: ""; } + +.fa-volume-up:before { + content: ""; } + +.fa-qrcode:before { + content: ""; } + +.fa-barcode:before { + content: ""; } + +.fa-tag:before { + content: ""; } + +.fa-tags:before { + content: ""; } + +.fa-book:before { + content: ""; } + +.fa-bookmark:before { + content: ""; } + +.fa-print:before { + content: ""; } + +.fa-camera:before { + content: ""; } + +.fa-font:before { + content: ""; } + +.fa-bold:before { + content: ""; } + +.fa-italic:before { + content: ""; } + +.fa-text-height:before { + content: ""; } + +.fa-text-width:before { + content: ""; } + +.fa-align-left:before { + content: ""; } + +.fa-align-center:before { + content: ""; } + +.fa-align-right:before { + content: ""; } + +.fa-align-justify:before { + content: ""; } + +.fa-list:before { + content: ""; } + +.fa-dedent:before, +.fa-outdent:before { + content: ""; } + +.fa-indent:before { + content: ""; } + +.fa-video-camera:before { + content: ""; } + +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: ""; } + +.fa-pencil:before { + content: ""; } + +.fa-map-marker:before { + content: ""; } + +.fa-adjust:before { + content: ""; } + +.fa-tint:before { + content: ""; } + +.fa-edit:before, +.fa-pencil-square-o:before { + content: ""; } + +.fa-share-square-o:before { + content: ""; } + +.fa-check-square-o:before { + content: ""; } + +.fa-arrows:before { + content: ""; } + +.fa-step-backward:before { + content: ""; } + +.fa-fast-backward:before { + content: ""; } + +.fa-backward:before { + content: ""; } + +.fa-play:before { + content: ""; } + +.fa-pause:before { + content: ""; } + +.fa-stop:before { + content: ""; } + +.fa-forward:before { + content: ""; } + +.fa-fast-forward:before { + content: ""; } + +.fa-step-forward:before { + content: ""; } + +.fa-eject:before { + content: ""; } + +.fa-chevron-left:before { + content: ""; } + +.fa-chevron-right:before { + content: ""; } + +.fa-plus-circle:before { + content: ""; } + +.fa-minus-circle:before { + content: ""; } + +.fa-times-circle:before { + content: ""; } + +.fa-check-circle:before { + content: ""; } + +.fa-question-circle:before { + content: ""; } + +.fa-info-circle:before { + content: ""; } + +.fa-crosshairs:before { + content: ""; } + +.fa-times-circle-o:before { + content: ""; } + +.fa-check-circle-o:before { + content: ""; } + +.fa-ban:before { + content: ""; } + +.fa-arrow-left:before { + content: ""; } + +.fa-arrow-right:before { + content: ""; } + +.fa-arrow-up:before { + content: ""; } + +.fa-arrow-down:before { + content: ""; } + +.fa-mail-forward:before, +.fa-share:before { + content: ""; } + +.fa-expand:before { + content: ""; } + +.fa-compress:before { + content: ""; } + +.fa-plus:before { + content: ""; } + +.fa-minus:before { + content: ""; } + +.fa-asterisk:before { + content: ""; } + +.fa-exclamation-circle:before { + content: ""; } + +.fa-gift:before { + content: ""; } + +.fa-leaf:before { + content: ""; } + +.fa-fire:before { + content: ""; } + +.fa-eye:before { + content: ""; } + +.fa-eye-slash:before { + content: ""; } + +.fa-warning:before, +.fa-exclamation-triangle:before { + content: ""; } + +.fa-plane:before { + content: ""; } + +.fa-calendar:before { + content: ""; } + +.fa-random:before { + content: ""; } + +.fa-comment:before { + content: ""; } + +.fa-magnet:before { + content: ""; } + +.fa-chevron-up:before { + content: ""; } + +.fa-chevron-down:before { + content: ""; } + +.fa-retweet:before { + content: ""; } + +.fa-shopping-cart:before { + content: ""; } + +.fa-folder:before { + content: ""; } + +.fa-folder-open:before { + content: ""; } + +.fa-arrows-v:before { + content: ""; } + +.fa-arrows-h:before { + content: ""; } + +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: ""; } + +.fa-twitter-square:before { + content: ""; } + +.fa-facebook-square:before { + content: ""; } + +.fa-camera-retro:before { + content: ""; } + +.fa-key:before { + content: ""; } + +.fa-gears:before, +.fa-cogs:before { + content: ""; } + +.fa-comments:before { + content: ""; } + +.fa-thumbs-o-up:before { + content: ""; } + +.fa-thumbs-o-down:before { + content: ""; } + +.fa-star-half:before { + content: ""; } + +.fa-heart-o:before { + content: ""; } + +.fa-sign-out:before { + content: ""; } + +.fa-linkedin-square:before { + content: ""; } + +.fa-thumb-tack:before { + content: ""; } + +.fa-external-link:before { + content: ""; } + +.fa-sign-in:before { + content: ""; } + +.fa-trophy:before { + content: ""; } + +.fa-github-square:before { + content: ""; } + +.fa-upload:before { + content: ""; } + +.fa-lemon-o:before { + content: ""; } + +.fa-phone:before { + content: ""; } + +.fa-square-o:before { + content: ""; } + +.fa-bookmark-o:before { + content: ""; } + +.fa-phone-square:before { + content: ""; } + +.fa-twitter:before { + content: ""; } + +.fa-facebook-f:before, +.fa-facebook:before { + content: ""; } + +.fa-github:before { + content: ""; } + +.fa-unlock:before { + content: ""; } + +.fa-credit-card:before { + content: ""; } + +.fa-feed:before, +.fa-rss:before { + content: ""; } + +.fa-hdd-o:before { + content: ""; } + +.fa-bullhorn:before { + content: ""; } + +.fa-bell:before { + content: ""; } + +.fa-certificate:before { + content: ""; } + +.fa-hand-o-right:before { + content: ""; } + +.fa-hand-o-left:before { + content: ""; } + +.fa-hand-o-up:before { + content: ""; } + +.fa-hand-o-down:before { + content: ""; } + +.fa-arrow-circle-left:before { + content: ""; } + +.fa-arrow-circle-right:before { + content: ""; } + +.fa-arrow-circle-up:before { + content: ""; } + +.fa-arrow-circle-down:before { + content: ""; } + +.fa-globe:before { + content: ""; } + +.fa-wrench:before { + content: ""; } + +.fa-tasks:before { + content: ""; } + +.fa-filter:before { + content: ""; } + +.fa-briefcase:before { + content: ""; } + +.fa-arrows-alt:before { + content: ""; } + +.fa-group:before, +.fa-users:before { + content: ""; } + +.fa-chain:before, +.fa-link:before { + content: ""; } + +.fa-cloud:before { + content: ""; } + +.fa-flask:before { + content: ""; } + +.fa-cut:before, +.fa-scissors:before { + content: ""; } + +.fa-copy:before, +.fa-files-o:before { + content: ""; } + +.fa-paperclip:before { + content: ""; } + +.fa-save:before, +.fa-floppy-o:before { + content: ""; } + +.fa-square:before { + content: ""; } + +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: ""; } + +.fa-list-ul:before { + content: ""; } + +.fa-list-ol:before { + content: ""; } + +.fa-strikethrough:before { + content: ""; } + +.fa-underline:before { + content: ""; } + +.fa-table:before { + content: ""; } + +.fa-magic:before { + content: ""; } + +.fa-truck:before { + content: ""; } + +.fa-pinterest:before { + content: ""; } + +.fa-pinterest-square:before { + content: ""; } + +.fa-google-plus-square:before { + content: ""; } + +.fa-google-plus:before { + content: ""; } + +.fa-money:before { + content: ""; } + +.fa-caret-down:before { + content: ""; } + +.fa-caret-up:before { + content: ""; } + +.fa-caret-left:before { + content: ""; } + +.fa-caret-right:before { + content: ""; } + +.fa-columns:before { + content: ""; } + +.fa-unsorted:before, +.fa-sort:before { + content: ""; } + +.fa-sort-down:before, +.fa-sort-desc:before { + content: ""; } + +.fa-sort-up:before, +.fa-sort-asc:before { + content: ""; } + +.fa-envelope:before { + content: ""; } + +.fa-linkedin:before { + content: ""; } + +.fa-rotate-left:before, +.fa-undo:before { + content: ""; } + +.fa-legal:before, +.fa-gavel:before { + content: ""; } + +.fa-dashboard:before, +.fa-tachometer:before { + content: ""; } + +.fa-comment-o:before { + content: ""; } + +.fa-comments-o:before { + content: ""; } + +.fa-flash:before, +.fa-bolt:before { + content: ""; } + +.fa-sitemap:before { + content: ""; } + +.fa-umbrella:before { + content: ""; } + +.fa-paste:before, +.fa-clipboard:before { + content: ""; } + +.fa-lightbulb-o:before { + content: ""; } + +.fa-exchange:before { + content: ""; } + +.fa-cloud-download:before { + content: ""; } + +.fa-cloud-upload:before { + content: ""; } + +.fa-user-md:before { + content: ""; } + +.fa-stethoscope:before { + content: ""; } + +.fa-suitcase:before { + content: ""; } + +.fa-bell-o:before { + content: ""; } + +.fa-coffee:before { + content: ""; } + +.fa-cutlery:before { + content: ""; } + +.fa-file-text-o:before { + content: ""; } + +.fa-building-o:before { + content: ""; } + +.fa-hospital-o:before { + content: ""; } + +.fa-ambulance:before { + content: ""; } + +.fa-medkit:before { + content: ""; } + +.fa-fighter-jet:before { + content: ""; } + +.fa-beer:before { + content: ""; } + +.fa-h-square:before { + content: ""; } + +.fa-plus-square:before { + content: ""; } + +.fa-angle-double-left:before { + content: ""; } + +.fa-angle-double-right:before { + content: ""; } + +.fa-angle-double-up:before { + content: ""; } + +.fa-angle-double-down:before { + content: ""; } + +.fa-angle-left:before { + content: ""; } + +.fa-angle-right:before { + content: ""; } + +.fa-angle-up:before { + content: ""; } + +.fa-angle-down:before { + content: ""; } + +.fa-desktop:before { + content: ""; } + +.fa-laptop:before { + content: ""; } + +.fa-tablet:before { + content: ""; } + +.fa-mobile-phone:before, +.fa-mobile:before { + content: ""; } + +.fa-circle-o:before { + content: ""; } + +.fa-quote-left:before { + content: ""; } + +.fa-quote-right:before { + content: ""; } + +.fa-spinner:before { + content: ""; } + +.fa-circle:before { + content: ""; } + +.fa-mail-reply:before, +.fa-reply:before { + content: ""; } + +.fa-github-alt:before { + content: ""; } + +.fa-folder-o:before { + content: ""; } + +.fa-folder-open-o:before { + content: ""; } + +.fa-smile-o:before { + content: ""; } + +.fa-frown-o:before { + content: ""; } + +.fa-meh-o:before { + content: ""; } + +.fa-gamepad:before { + content: ""; } + +.fa-keyboard-o:before { + content: ""; } + +.fa-flag-o:before { + content: ""; } + +.fa-flag-checkered:before { + content: ""; } + +.fa-terminal:before { + content: ""; } + +.fa-code:before { + content: ""; } + +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: ""; } + +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: ""; } + +.fa-location-arrow:before { + content: ""; } + +.fa-crop:before { + content: ""; } + +.fa-code-fork:before { + content: ""; } + +.fa-unlink:before, +.fa-chain-broken:before { + content: ""; } + +.fa-question:before { + content: ""; } + +.fa-info:before { + content: ""; } + +.fa-exclamation:before { + content: ""; } + +.fa-superscript:before { + content: ""; } + +.fa-subscript:before { + content: ""; } + +.fa-eraser:before { + content: ""; } + +.fa-puzzle-piece:before { + content: ""; } + +.fa-microphone:before { + content: ""; } + +.fa-microphone-slash:before { + content: ""; } + +.fa-shield:before { + content: ""; } + +.fa-calendar-o:before { + content: ""; } + +.fa-fire-extinguisher:before { + content: ""; } + +.fa-rocket:before { + content: ""; } + +.fa-maxcdn:before { + content: ""; } + +.fa-chevron-circle-left:before { + content: ""; } + +.fa-chevron-circle-right:before { + content: ""; } + +.fa-chevron-circle-up:before { + content: ""; } + +.fa-chevron-circle-down:before { + content: ""; } + +.fa-html5:before { + content: ""; } + +.fa-css3:before { + content: ""; } + +.fa-anchor:before { + content: ""; } + +.fa-unlock-alt:before { + content: ""; } + +.fa-bullseye:before { + content: ""; } + +.fa-ellipsis-h:before { + content: ""; } + +.fa-ellipsis-v:before { + content: ""; } + +.fa-rss-square:before { + content: ""; } + +.fa-play-circle:before { + content: ""; } + +.fa-ticket:before { + content: ""; } + +.fa-minus-square:before { + content: ""; } + +.fa-minus-square-o:before, .toctree > ul .toc.current > a .fa-plus-square-o:before { + content: ""; } + +.fa-level-up:before { + content: ""; } + +.fa-level-down:before { + content: ""; } + +.fa-check-square:before { + content: ""; } + +.fa-pencil-square:before { + content: ""; } + +.fa-external-link-square:before { + content: ""; } + +.fa-share-square:before { + content: ""; } + +.fa-compass:before { + content: ""; } + +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: ""; } + +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: ""; } + +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: ""; } + +.fa-euro:before, +.fa-eur:before { + content: ""; } + +.fa-gbp:before { + content: ""; } + +.fa-dollar:before, +.fa-usd:before { + content: ""; } + +.fa-rupee:before, +.fa-inr:before { + content: ""; } + +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: ""; } + +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: ""; } + +.fa-won:before, +.fa-krw:before { + content: ""; } + +.fa-bitcoin:before, +.fa-btc:before { + content: ""; } + +.fa-file:before { + content: ""; } + +.fa-file-text:before { + content: ""; } + +.fa-sort-alpha-asc:before { + content: ""; } + +.fa-sort-alpha-desc:before { + content: ""; } + +.fa-sort-amount-asc:before { + content: ""; } + +.fa-sort-amount-desc:before { + content: ""; } + +.fa-sort-numeric-asc:before { + content: ""; } + +.fa-sort-numeric-desc:before { + content: ""; } + +.fa-thumbs-up:before { + content: ""; } + +.fa-thumbs-down:before { + content: ""; } + +.fa-youtube-square:before { + content: ""; } + +.fa-youtube:before { + content: ""; } + +.fa-xing:before { + content: ""; } + +.fa-xing-square:before { + content: ""; } + +.fa-youtube-play:before { + content: ""; } + +.fa-dropbox:before { + content: ""; } + +.fa-stack-overflow:before { + content: ""; } + +.fa-instagram:before { + content: ""; } + +.fa-flickr:before { + content: ""; } + +.fa-adn:before { + content: ""; } + +.fa-bitbucket:before { + content: ""; } + +.fa-bitbucket-square:before { + content: ""; } + +.fa-tumblr:before { + content: ""; } + +.fa-tumblr-square:before { + content: ""; } + +.fa-long-arrow-down:before { + content: ""; } + +.fa-long-arrow-up:before { + content: ""; } + +.fa-long-arrow-left:before { + content: ""; } + +.fa-long-arrow-right:before { + content: ""; } + +.fa-apple:before { + content: ""; } + +.fa-windows:before { + content: ""; } + +.fa-android:before { + content: ""; } + +.fa-linux:before { + content: ""; } + +.fa-dribbble:before { + content: ""; } + +.fa-skype:before { + content: ""; } + +.fa-foursquare:before { + content: ""; } + +.fa-trello:before { + content: ""; } + +.fa-female:before { + content: ""; } + +.fa-male:before { + content: ""; } + +.fa-gittip:before, +.fa-gratipay:before { + content: ""; } + +.fa-sun-o:before { + content: ""; } + +.fa-moon-o:before { + content: ""; } + +.fa-archive:before { + content: ""; } + +.fa-bug:before { + content: ""; } + +.fa-vk:before { + content: ""; } + +.fa-weibo:before { + content: ""; } + +.fa-renren:before { + content: ""; } + +.fa-pagelines:before { + content: ""; } + +.fa-stack-exchange:before { + content: ""; } + +.fa-arrow-circle-o-right:before { + content: ""; } + +.fa-arrow-circle-o-left:before { + content: ""; } + +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: ""; } + +.fa-dot-circle-o:before { + content: ""; } + +.fa-wheelchair:before { + content: ""; } + +.fa-vimeo-square:before { + content: ""; } + +.fa-turkish-lira:before, +.fa-try:before { + content: ""; } + +.fa-plus-square-o:before { + content: ""; } + +.fa-space-shuttle:before { + content: ""; } + +.fa-slack:before { + content: ""; } + +.fa-envelope-square:before { + content: ""; } + +.fa-wordpress:before { + content: ""; } + +.fa-openid:before { + content: ""; } + +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: ""; } + +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: ""; } + +.fa-yahoo:before { + content: ""; } + +.fa-google:before { + content: ""; } + +.fa-reddit:before { + content: ""; } + +.fa-reddit-square:before { + content: ""; } + +.fa-stumbleupon-circle:before { + content: ""; } + +.fa-stumbleupon:before { + content: ""; } + +.fa-delicious:before { + content: ""; } + +.fa-digg:before { + content: ""; } + +.fa-pied-piper-pp:before { + content: ""; } + +.fa-pied-piper-alt:before { + content: ""; } + +.fa-drupal:before { + content: ""; } + +.fa-joomla:before { + content: ""; } + +.fa-language:before { + content: ""; } + +.fa-fax:before { + content: ""; } + +.fa-building:before { + content: ""; } + +.fa-child:before { + content: ""; } + +.fa-paw:before { + content: ""; } + +.fa-spoon:before { + content: ""; } + +.fa-cube:before { + content: ""; } + +.fa-cubes:before { + content: ""; } + +.fa-behance:before { + content: ""; } + +.fa-behance-square:before { + content: ""; } + +.fa-steam:before { + content: ""; } + +.fa-steam-square:before { + content: ""; } + +.fa-recycle:before { + content: ""; } + +.fa-automobile:before, +.fa-car:before { + content: ""; } + +.fa-cab:before, +.fa-taxi:before { + content: ""; } + +.fa-tree:before { + content: ""; } + +.fa-spotify:before { + content: ""; } + +.fa-deviantart:before { + content: ""; } + +.fa-soundcloud:before { + content: ""; } + +.fa-database:before { + content: ""; } + +.fa-file-pdf-o:before { + content: ""; } + +.fa-file-word-o:before { + content: ""; } + +.fa-file-excel-o:before { + content: ""; } + +.fa-file-powerpoint-o:before { + content: ""; } + +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: ""; } + +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: ""; } + +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: ""; } + +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: ""; } + +.fa-file-code-o:before { + content: ""; } + +.fa-vine:before { + content: ""; } + +.fa-codepen:before { + content: ""; } + +.fa-jsfiddle:before { + content: ""; } + +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: ""; } + +.fa-circle-o-notch:before { + content: ""; } + +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: ""; } + +.fa-ge:before, +.fa-empire:before { + content: ""; } + +.fa-git-square:before { + content: ""; } + +.fa-git:before { + content: ""; } + +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: ""; } + +.fa-tencent-weibo:before { + content: ""; } + +.fa-qq:before { + content: ""; } + +.fa-wechat:before, +.fa-weixin:before { + content: ""; } + +.fa-send:before, +.fa-paper-plane:before { + content: ""; } + +.fa-send-o:before, +.fa-paper-plane-o:before { + content: ""; } + +.fa-history:before { + content: ""; } + +.fa-circle-thin:before { + content: ""; } + +.fa-header:before { + content: ""; } + +.fa-paragraph:before { + content: ""; } + +.fa-sliders:before { + content: ""; } + +.fa-share-alt:before { + content: ""; } + +.fa-share-alt-square:before { + content: ""; } + +.fa-bomb:before { + content: ""; } + +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: ""; } + +.fa-tty:before { + content: ""; } + +.fa-binoculars:before { + content: ""; } + +.fa-plug:before { + content: ""; } + +.fa-slideshare:before { + content: ""; } + +.fa-twitch:before { + content: ""; } + +.fa-yelp:before { + content: ""; } + +.fa-newspaper-o:before { + content: ""; } + +.fa-wifi:before { + content: ""; } + +.fa-calculator:before { + content: ""; } + +.fa-paypal:before { + content: ""; } + +.fa-google-wallet:before { + content: ""; } + +.fa-cc-visa:before { + content: ""; } + +.fa-cc-mastercard:before { + content: ""; } + +.fa-cc-discover:before { + content: ""; } + +.fa-cc-amex:before { + content: ""; } + +.fa-cc-paypal:before { + content: ""; } + +.fa-cc-stripe:before { + content: ""; } + +.fa-bell-slash:before { + content: ""; } + +.fa-bell-slash-o:before { + content: ""; } + +.fa-trash:before { + content: ""; } + +.fa-copyright:before { + content: ""; } + +.fa-at:before { + content: ""; } + +.fa-eyedropper:before { + content: ""; } + +.fa-paint-brush:before { + content: ""; } + +.fa-birthday-cake:before { + content: ""; } + +.fa-area-chart:before { + content: ""; } + +.fa-pie-chart:before { + content: ""; } + +.fa-line-chart:before { + content: ""; } + +.fa-lastfm:before { + content: ""; } + +.fa-lastfm-square:before { + content: ""; } + +.fa-toggle-off:before { + content: ""; } + +.fa-toggle-on:before { + content: ""; } + +.fa-bicycle:before { + content: ""; } + +.fa-bus:before { + content: ""; } + +.fa-ioxhost:before { + content: ""; } + +.fa-angellist:before { + content: ""; } + +.fa-cc:before { + content: ""; } + +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: ""; } + +.fa-meanpath:before { + content: ""; } + +.fa-buysellads:before { + content: ""; } + +.fa-connectdevelop:before { + content: ""; } + +.fa-dashcube:before { + content: ""; } + +.fa-forumbee:before { + content: ""; } + +.fa-leanpub:before { + content: ""; } + +.fa-sellsy:before { + content: ""; } + +.fa-shirtsinbulk:before { + content: ""; } + +.fa-simplybuilt:before { + content: ""; } + +.fa-skyatlas:before { + content: ""; } + +.fa-cart-plus:before { + content: ""; } + +.fa-cart-arrow-down:before { + content: ""; } + +.fa-diamond:before { + content: ""; } + +.fa-ship:before { + content: ""; } + +.fa-user-secret:before { + content: ""; } + +.fa-motorcycle:before { + content: ""; } + +.fa-street-view:before { + content: ""; } + +.fa-heartbeat:before { + content: ""; } + +.fa-venus:before { + content: ""; } + +.fa-mars:before { + content: ""; } + +.fa-mercury:before { + content: ""; } + +.fa-intersex:before, +.fa-transgender:before { + content: ""; } + +.fa-transgender-alt:before { + content: ""; } + +.fa-venus-double:before { + content: ""; } + +.fa-mars-double:before { + content: ""; } + +.fa-venus-mars:before { + content: ""; } + +.fa-mars-stroke:before { + content: ""; } + +.fa-mars-stroke-v:before { + content: ""; } + +.fa-mars-stroke-h:before { + content: ""; } + +.fa-neuter:before { + content: ""; } + +.fa-genderless:before { + content: ""; } + +.fa-facebook-official:before { + content: ""; } + +.fa-pinterest-p:before { + content: ""; } + +.fa-whatsapp:before { + content: ""; } + +.fa-server:before { + content: ""; } + +.fa-user-plus:before { + content: ""; } + +.fa-user-times:before { + content: ""; } + +.fa-hotel:before, +.fa-bed:before { + content: ""; } + +.fa-viacoin:before { + content: ""; } + +.fa-train:before { + content: ""; } + +.fa-subway:before { + content: ""; } + +.fa-medium:before { + content: ""; } + +.fa-yc:before, +.fa-y-combinator:before { + content: ""; } + +.fa-optin-monster:before { + content: ""; } + +.fa-opencart:before { + content: ""; } + +.fa-expeditedssl:before { + content: ""; } + +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: ""; } + +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: ""; } + +.fa-battery-2:before, +.fa-battery-half:before { + content: ""; } + +.fa-battery-1:before, +.fa-battery-quarter:before { + content: ""; } + +.fa-battery-0:before, +.fa-battery-empty:before { + content: ""; } + +.fa-mouse-pointer:before { + content: ""; } + +.fa-i-cursor:before { + content: ""; } + +.fa-object-group:before { + content: ""; } + +.fa-object-ungroup:before { + content: ""; } + +.fa-sticky-note:before { + content: ""; } + +.fa-sticky-note-o:before { + content: ""; } + +.fa-cc-jcb:before { + content: ""; } + +.fa-cc-diners-club:before { + content: ""; } + +.fa-clone:before { + content: ""; } + +.fa-balance-scale:before { + content: ""; } + +.fa-hourglass-o:before { + content: ""; } + +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: ""; } + +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: ""; } + +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: ""; } + +.fa-hourglass:before { + content: ""; } + +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: ""; } + +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: ""; } + +.fa-hand-scissors-o:before { + content: ""; } + +.fa-hand-lizard-o:before { + content: ""; } + +.fa-hand-spock-o:before { + content: ""; } + +.fa-hand-pointer-o:before { + content: ""; } + +.fa-hand-peace-o:before { + content: ""; } + +.fa-trademark:before { + content: ""; } + +.fa-registered:before { + content: ""; } + +.fa-creative-commons:before { + content: ""; } + +.fa-gg:before { + content: ""; } + +.fa-gg-circle:before { + content: ""; } + +.fa-tripadvisor:before { + content: ""; } + +.fa-odnoklassniki:before { + content: ""; } + +.fa-odnoklassniki-square:before { + content: ""; } + +.fa-get-pocket:before { + content: ""; } + +.fa-wikipedia-w:before { + content: ""; } + +.fa-safari:before { + content: ""; } + +.fa-chrome:before { + content: ""; } + +.fa-firefox:before { + content: ""; } + +.fa-opera:before { + content: ""; } + +.fa-internet-explorer:before { + content: ""; } + +.fa-tv:before, +.fa-television:before { + content: ""; } + +.fa-contao:before { + content: ""; } + +.fa-500px:before { + content: ""; } + +.fa-amazon:before { + content: ""; } + +.fa-calendar-plus-o:before { + content: ""; } + +.fa-calendar-minus-o:before { + content: ""; } + +.fa-calendar-times-o:before { + content: ""; } + +.fa-calendar-check-o:before { + content: ""; } + +.fa-industry:before { + content: ""; } + +.fa-map-pin:before { + content: ""; } + +.fa-map-signs:before { + content: ""; } + +.fa-map-o:before { + content: ""; } + +.fa-map:before { + content: ""; } + +.fa-commenting:before { + content: ""; } + +.fa-commenting-o:before { + content: ""; } + +.fa-houzz:before { + content: ""; } + +.fa-vimeo:before { + content: ""; } + +.fa-black-tie:before { + content: ""; } + +.fa-fonticons:before { + content: ""; } + +.fa-reddit-alien:before { + content: ""; } + +.fa-edge:before { + content: ""; } + +.fa-credit-card-alt:before { + content: ""; } + +.fa-codiepie:before { + content: ""; } + +.fa-modx:before { + content: ""; } + +.fa-fort-awesome:before { + content: ""; } + +.fa-usb:before { + content: ""; } + +.fa-product-hunt:before { + content: ""; } + +.fa-mixcloud:before { + content: ""; } + +.fa-scribd:before { + content: ""; } + +.fa-pause-circle:before { + content: ""; } + +.fa-pause-circle-o:before { + content: ""; } + +.fa-stop-circle:before { + content: ""; } + +.fa-stop-circle-o:before { + content: ""; } + +.fa-shopping-bag:before { + content: ""; } + +.fa-shopping-basket:before { + content: ""; } + +.fa-hashtag:before { + content: ""; } + +.fa-bluetooth:before { + content: ""; } + +.fa-bluetooth-b:before { + content: ""; } + +.fa-percent:before { + content: ""; } + +.fa-gitlab:before { + content: ""; } + +.fa-wpbeginner:before { + content: ""; } + +.fa-wpforms:before { + content: ""; } + +.fa-envira:before { + content: ""; } + +.fa-universal-access:before { + content: ""; } + +.fa-wheelchair-alt:before { + content: ""; } + +.fa-question-circle-o:before { + content: ""; } + +.fa-blind:before { + content: ""; } + +.fa-audio-description:before { + content: ""; } + +.fa-volume-control-phone:before { + content: ""; } + +.fa-braille:before { + content: ""; } + +.fa-assistive-listening-systems:before { + content: ""; } + +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: ""; } + +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: ""; } + +.fa-glide:before { + content: ""; } + +.fa-glide-g:before { + content: ""; } + +.fa-signing:before, +.fa-sign-language:before { + content: ""; } + +.fa-low-vision:before { + content: ""; } + +.fa-viadeo:before { + content: ""; } + +.fa-viadeo-square:before { + content: ""; } + +.fa-snapchat:before { + content: ""; } + +.fa-snapchat-ghost:before { + content: ""; } + +.fa-snapchat-square:before { + content: ""; } + +.fa-pied-piper:before { + content: ""; } + +.fa-first-order:before { + content: ""; } + +.fa-yoast:before { + content: ""; } + +.fa-themeisle:before { + content: ""; } + +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: ""; } + +.fa-fa:before, +.fa-font-awesome:before { + content: ""; } + +.fa-handshake-o:before { + content: ""; } + +.fa-envelope-open:before { + content: ""; } + +.fa-envelope-open-o:before { + content: ""; } + +.fa-linode:before { + content: ""; } + +.fa-address-book:before { + content: ""; } + +.fa-address-book-o:before { + content: ""; } + +.fa-vcard:before, +.fa-address-card:before { + content: ""; } + +.fa-vcard-o:before, +.fa-address-card-o:before { + content: ""; } + +.fa-user-circle:before { + content: ""; } + +.fa-user-circle-o:before { + content: ""; } + +.fa-user-o:before { + content: ""; } + +.fa-id-badge:before { + content: ""; } + +.fa-drivers-license:before, +.fa-id-card:before { + content: ""; } + +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: ""; } + +.fa-quora:before { + content: ""; } + +.fa-free-code-camp:before { + content: ""; } + +.fa-telegram:before { + content: ""; } + +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: ""; } + +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: ""; } + +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: ""; } + +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: ""; } + +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: ""; } + +.fa-shower:before { + content: ""; } + +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: ""; } + +.fa-podcast:before { + content: ""; } + +.fa-window-maximize:before { + content: ""; } + +.fa-window-minimize:before { + content: ""; } + +.fa-window-restore:before { + content: ""; } + +.fa-times-rectangle:before, +.fa-window-close:before { + content: ""; } + +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: ""; } + +.fa-bandcamp:before { + content: ""; } + +.fa-grav:before { + content: ""; } + +.fa-etsy:before { + content: ""; } + +.fa-imdb:before { + content: ""; } + +.fa-ravelry:before { + content: ""; } + +.fa-eercast:before { + content: ""; } + +.fa-microchip:before { + content: ""; } + +.fa-snowflake-o:before { + content: ""; } + +.fa-superpowers:before { + content: ""; } + +.fa-wpexplorer:before { + content: ""; } + +.fa-meetup:before { + content: ""; } + +.menu-sm, .sidebar-wrap, .addons-wrap { + position: fixed; + bottom: 0; + left: -85%; + width: 85%; + max-height: 100%; } + .menu-sm.shift, .shift.sidebar-wrap, .shift.addons-wrap { + left: 0; } + +.sidebar-wrap { + top: 0; } + .sidebar-wrap .sidebar > :last-child { + margin-bottom: 5em; } + +.addons-wrap { + color: #666; + background-color: #fff; } + +.addons { + color: #666; + background-color: #fff; } + +.content-wrap.shift { + position: fixed; + top: 0; + bottom: 0; + left: 85%; + min-width: 100%; } + +@media (min-width: 768px) { + .menu-md, .sidebar-wrap, .addons-wrap { + left: 0; + width: 300px; } + + .sidebar-wrap .sidebar { + width: 320px; } + .sidebar-wrap .sidebar .header, + .sidebar-wrap .sidebar .toctree { + width: 300px; } + + .content-wrap { + margin-left: 300px; } + .content-wrap.shift { + position: relative; + left: 0; + min-width: 0; } } +@media (min-width: 1280px) { + .content-wrap { + max-width: 980px; } } +.highlight .kd { + color: #008000; } + +.highlight .nn, +.highlight .k { + color: #0000FF; + font-weight: normal; } + +.highlight .ne, +.highlight .nf, +.highlight .fm, +.highlight .nl { + color: #19177C; + font-weight: normal; } + +.highlight .mf, +.highlight .mh, +.highlight .il, +.highlight .mi, +.highlight .mo, +.highlight .m, +.highlight .mb, +.highlight .mx { + color: #d14; } + +.highlight .n { + color: #008000; + font-weight: normal; } + +@media (min-width: 66.5rem) { + .side-bar { + width: calc((100% - 90rem) / 2 + 16.5rem); + min-width: 16.5rem; } + + .main { + margin-left: Max(16.5rem, calc((100% - 90rem) / 2 + 16.5rem)); } } +.font-body { + font-family: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-weight: 400; } + +.font-head { + font-family: "FlandersArtSans-SerifThin", sans-serif; + font-weight: 600; } + +.font-mono { + font-family: Consolas, "Liberation Mono", Menlo, monospace; } + +.fa { + display: inline-block; + font: normal normal normal 14px/1 "FontAwesome"; } + +.breadcrumb-item { + margin: 0; } + .breadcrumb-item::after { + padding-right: 3px; + padding-left: 3px; } + +.container { + font-weight: 400; + color: #666; + background: white; } + +@media (min-width: 1280px) { + .container { + background: rgba(60, 69, 78, 0.1); } } +.sidebar { + color: #666; + background: #fff; } + .sidebar a { + text-decoration: none; } + .sidebar li { + list-style: none; } + .sidebar .version { + color: #666; } + +.toctree a { + color: #666; + padding: 0.5em; } +.toctree .caption { + color: #666; + font-weight: 600; + line-height: 32px; } +.toctree .fa { + margin-right: 2px; } +.toctree > ul > .toc > a { + padding-left: 12px; } +.toctree > ul > .toc:not(.current) > a:hover { + background: rgba(255, 255, 255, 0.1); } +.toctree > ul > .toc:not(.current) > a:active { + background: #c8b200; } +.toctree > ul .toc.current a { + color: #666; } + .toctree > ul .toc.current a:hover { + background: rgba(255, 255, 255, 0.1); } + .toctree > ul .toc.current a.current { + font-weight: bold; + background: white; + border-top: 1px solid var(--toc-2); + border-bottom: 1px solid var(--toc-2); } +.toctree > ul > .toc.current { + background: var(--toc-1); } + +.toc.level-1.current > a { + padding-left: 12px; + background: var(--toc-1); } +.toc.level-1.current > ul { + background: var(--toc-2); } +.toc.level-1.current .level-2 > a { + padding-left: 36px; } +.toc.level-2.current > a { + padding-left: 36px; + background: var(--toc-2); } +.toc.level-2.current > ul { + background: var(--toc-3); } +.toc.level-2.current .level-3 > a { + padding-left: 60px; } +.toc.level-3.current > a { + padding-left: 60px; + background: var(--toc-3); } +.toc.level-3.current > ul { + background: var(--toc-4); } +.toc.level-3.current .level-4 > a { + padding-left: 84px; } +.toc.level-4.current > a { + padding-left: 84px; + background: var(--toc-4); } +.toc.level-4.current > ul { + background: var(--toc-5); } +.toc.level-4.current .level-5 > a { + padding-left: 108px; } +.toc.level-5.current > a { + padding-left: 108px; + background: var(--toc-5); } +.toc.level-5.current > ul { + background: var(--toc-6); } +.toc.level-5.current .level-6 > a { + padding-left: 132px; } +.toc.level-6.current > a { + padding-left: 132px; + background: var(--toc-6); } +.toc.level-6.current > ul { + background: var(--toc-7); } +.toc.level-6.current .level-7 > a { + padding-left: 156px; } +.toc.level-7.current > a { + padding-left: 156px; + background: var(--toc-7); } +.toc.level-7.current > ul { + background: var(--toc-8); } +.toc.level-7.current .level-8 > a { + padding-left: 180px; } +.toc.level-8.current > a { + padding-left: 180px; + background: var(--toc-8); } +.toc.level-8.current > ul { + background: var(--toc-9); } +.toc.level-8.current .level-9 > a { + padding-left: 204px; } +.toc.level-9.current > a { + padding-left: 204px; + background: var(--toc-9); } +.toc.level-9.current > ul { + background: var(--toc-10); } +.toc.level-9.current .level-10 > a { + padding-left: 228px; } +.toc.level-10.current > a { + padding-left: 228px; + background: var(--toc-10); } +.toc.level-10.current > ul { + background: var(--toc-11); } +.toc.level-10.current .level-11 > a { + padding-left: 252px; } +.toc.level-11.current > a { + padding-left: 252px; + background: var(--toc-11); } +.toc.level-11.current > ul { + background: var(--toc-12); } +.toc.level-11.current .level-12 > a { + padding-left: 276px; } + +.addons-wrap { + background-color: #14171a; } + .addons-wrap .status { + cursor: pointer; + background-color: #1b1f23; } + .addons-wrap .status .branch .fa { + color: white; } + .addons-wrap .status .branch .name { + color: #28a745; } + .addons-wrap .status:active { + background: #c8b200; } + .addons-wrap .addons { + color: grey; } + .addons-wrap .addons dl { + margin: 0; } + .addons-wrap .addons dd { + display: inline-block; } + .addons-wrap .addons dd a { + display: inline-block; + padding: 6px; + color: white; } + +.content-wrap { + font-size: 16px; + background: white; } + +.header { + color: white; + background: #ffe615; } + .header input { + border-radius: 50px; + border: 1px solid #ffe615; + font-size: 80%; } + +.title { + font-weight: 600; + color: #666; } + .title a { + color: #666; } + .title a:hover { + background: rgba(255, 255, 255, 0.1); } + +.markdown-body { + font-weight: 400; } + .markdown-body .d-lang, .markdown-body div.highlighter-rouge, .markdown-body .mermaid-wrap { + position: relative; } + .markdown-body .d-lang:after, .markdown-body div.highlighter-rouge:after, .markdown-body .mermaid-wrap:after { + position: absolute; + right: 0px; + top: 0px; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; + content: attr(data-lang); + padding: 0 5px; + color: #bbc0c5; } + .markdown-body a { + color: #0366d6; } + .markdown-body a:hover { + color: #107ffc; } + .markdown-body a code, + .markdown-body a tt { + color: #0366d6; } + .markdown-body h1, + .markdown-body h2, + .markdown-body h3, + .markdown-body h4, + .markdown-body h5, + .markdown-body h6, + .markdown-body dt { + font-family: "FlandersArtSans-SerifThin", sans-serif; } + .markdown-body table { + font-size: 14px; } + .markdown-body figure { + margin: 0; } + .markdown-body .anchor { + float: none; + padding-right: 0; + margin-left: 3px; + margin-right: 3px; } + .markdown-body code, + .markdown-body tt { + font-size: 12px; + border: 1px solid; + color: #e74c3c; + background-color: #f9fafb; } + .markdown-body pre > code { + color: #3c454e; } + .markdown-body .highlight pre, + .markdown-body pre { + font-size: 12px; + border: 1px solid; + background-color: #f6f8fa; } + .markdown-body .search-results li { + list-style: none; } + .markdown-body .task-list-item-checkbox { + margin-right: 3px; } + .markdown-body .mermaid-wrap { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); } + .markdown-body .mermaid-wrap .mermaid { + font-size: 12px; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + white-space: pre; } + +.toasts { + font-size: 16px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); } +@font-face { + .toasts { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } } + .toasts .title { + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.14); + color: #666; + font-family: "FlandersArtSans-SerifThin"; } + .toasts .content :first-child { + margin-top: 0; } + .toasts .content :last-child { + margin-bottom: 0; } + .toasts.note { + background-color: white; } + .toasts.note .title { + background: #ffe71a; } + .toasts.tip { + background-color: #dbfaf4; } + .toasts.tip .title { + background: #1abc9c; } + .toasts.warning { + background-color: #fbe9d9; } + .toasts.warning .title { + background: #f0b37e; } + .toasts.danger { + background-color: #fdf3f2; } + .toasts.danger .title { + background: #f29f97; } + +html[dir="rtl"] ul, +html[dir="rtl"] ol { + padding-right: 0; } +html[dir="rtl"] dd { + margin-right: 0; } +html[dir="rtl"] .menu-sm, html[dir="rtl"] .sidebar-wrap, html[dir="rtl"] .addons-wrap { + left: unset; + right: -85%; } + html[dir="rtl"] .menu-sm.shift, html[dir="rtl"] .shift.sidebar-wrap, html[dir="rtl"] .shift.addons-wrap { + left: unset; + right: 0; } +html[dir="rtl"] .content-wrap.shift { + left: unset; + right: 85%; } +@media (min-width: 768px) { + html[dir="rtl"] .menu-md, html[dir="rtl"] .sidebar-wrap, html[dir="rtl"] .addons-wrap { + left: unset; + right: 0; } + html[dir="rtl"] .content-wrap { + margin-left: unset; + margin-right: 300px; } + html[dir="rtl"] .content-wrap.shift { + left: unset; + right: 0; } } +html[dir="rtl"] .toctree .fa { + margin-right: unset; + margin-left: 2px; } +html[dir="rtl"] .toctree > ul > .toc > a { + padding-left: unset; + padding-right: 12px; } +html[dir="rtl"] .toc.level-1.current > a { + padding-left: unset; + padding-right: 12px; } +html[dir="rtl"] .toc.level-1.current .level-2 > a { + padding-left: unset; + padding-right: 36px; } +html[dir="rtl"] .toc.level-2.current > a { + padding-left: unset; + padding-right: 36px; } +html[dir="rtl"] .toc.level-2.current .level-3 > a { + padding-left: unset; + padding-right: 60px; } +html[dir="rtl"] .toc.level-3.current > a { + padding-left: unset; + padding-right: 60px; } +html[dir="rtl"] .toc.level-3.current .level-4 > a { + padding-left: unset; + padding-right: 84px; } +html[dir="rtl"] .toc.level-4.current > a { + padding-left: unset; + padding-right: 84px; } +html[dir="rtl"] .toc.level-4.current .level-5 > a { + padding-left: unset; + padding-right: 108px; } +html[dir="rtl"] .toc.level-5.current > a { + padding-left: unset; + padding-right: 108px; } +html[dir="rtl"] .toc.level-5.current .level-6 > a { + padding-left: unset; + padding-right: 132px; } +html[dir="rtl"] .toc.level-6.current > a { + padding-left: unset; + padding-right: 132px; } +html[dir="rtl"] .toc.level-6.current .level-7 > a { + padding-left: unset; + padding-right: 156px; } +html[dir="rtl"] .toc.level-7.current > a { + padding-left: unset; + padding-right: 156px; } +html[dir="rtl"] .toc.level-7.current .level-8 > a { + padding-left: unset; + padding-right: 180px; } +html[dir="rtl"] .toc.level-8.current > a { + padding-left: unset; + padding-right: 180px; } +html[dir="rtl"] .toc.level-8.current .level-9 > a { + padding-left: unset; + padding-right: 204px; } +html[dir="rtl"] .toc.level-9.current > a { + padding-left: unset; + padding-right: 204px; } +html[dir="rtl"] .toc.level-9.current .level-10 > a { + padding-left: unset; + padding-right: 228px; } +html[dir="rtl"] .toc.level-10.current > a { + padding-left: unset; + padding-right: 228px; } +html[dir="rtl"] .toc.level-10.current .level-11 > a { + padding-left: unset; + padding-right: 252px; } +html[dir="rtl"] .toc.level-11.current > a { + padding-left: unset; + padding-right: 252px; } +html[dir="rtl"] .toc.level-11.current .level-12 > a { + padding-left: unset; + padding-right: 276px; } +html[dir="rtl"] .markdown-body .highlight { + direction: ltr; } +html[dir="rtl"] .markdown-body blockquote { + border-left: none; + border-right: 0.25em solid #dfe2e5; } +html[dir="rtl"] .markdown-body ul, +html[dir="rtl"] .markdown-body ol { + padding-left: 0; + padding-right: 2em; } +html[dir="rtl"] .markdown-body .task-list-item-checkbox { + margin-right: unset; + margin-left: 3px; } +html[dir="rtl"] .fa-arrow-circle-left:before { + content: ""; } +html[dir="rtl"] .fa-arrow-circle-right:before { + content: ""; } + +/* Fade in an element */ +.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; } } +/* Fade out an element */ +.anim-fade-out { + animation-name: fade-out; + animation-duration: 1s; + animation-timing-function: ease-out; } + .anim-fade-out.fast { + animation-duration: 0.3s; } + +@keyframes fade-out { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } +/* Fade in and slide up an element */ +.anim-fade-up { + opacity: 0; + animation-name: fade-up; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-out; + animation-delay: 1s; } + +@keyframes fade-up { + 0% { + opacity: 0.8; + transform: translateY(100%); } + 100% { + opacity: 1; + transform: translateY(0); } } +/* Fade an element out and slide down */ +.anim-fade-down { + animation-name: fade-down; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-in; } + +@keyframes fade-down { + 0% { + opacity: 1; + transform: translateY(0); } + 100% { + opacity: 0.5; + transform: translateY(100%); } } +/* Grow an element width from 0 to 100% */ +.anim-grow-x { + width: 0%; + animation-name: grow-x; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease; + animation-delay: 0.5s; } + +@keyframes grow-x { + to { + width: 100%; } } +/* Shrink an element from 100% to 0% */ +.anim-shrink-x { + animation-name: shrink-x; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-in-out; + animation-delay: 0.5s; } + +@keyframes shrink-x { + to { + width: 0%; } } +/* Fade in an element and scale it fast */ +.anim-scale-in { + animation-name: scale-in; + animation-duration: 0.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); } } +/* Pulse an element's opacity */ +.anim-pulse { + animation-name: pulse; + animation-duration: 2s; + animation-timing-function: linear; + animation-iteration-count: infinite; } + +@keyframes pulse { + 0% { + opacity: 0.3; } + 10% { + opacity: 1; } + 100% { + opacity: 0.3; } } +/* Pulse in an element */ +.anim-pulse-in { + animation-name: pulse-in; + animation-duration: 0.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); } } +/* Increase scale of an element on hover */ +.hover-grow { + transition: transform 0.3s; + backface-visibility: hidden; } + .hover-grow:hover { + transform: scale(1.025); } + +/* Add a gray border to the left and right */ +.border-x { + border-right: 1px solid !important; + border-left: 1px solid !important; } + +/* Add a gray border to the top and bottom */ +.border-y { + border-top: 1px solid !important; + border-bottom: 1px solid !important; } + +/* Responsive gray borders */ +/* Add a gray border on all sides at/above this breakpoint */ +.border { + border: 1px solid !important; } + +/* Set the border width to 0 on all sides at/above this breakpoint */ +.border-0 { + border: 0 !important; } + +/* Add a gray border to the top */ +.border-top { + border-top: 1px solid !important; } + +/* Add a gray border to the right */ +.border-right { + border-right: 1px solid !important; } + +/* Add a gray border to the bottom */ +.border-bottom { + border-bottom: 1px solid !important; } + +/* Add a gray border to the left */ +.border-left { + border-left: 1px solid !important; } + +/* Remove the top border */ +.border-top-0 { + border-top: 0 !important; } + +/* Remove the right border */ +.border-right-0 { + border-right: 0 !important; } + +/* Remove the bottom border */ +.border-bottom-0 { + border-bottom: 0 !important; } + +/* Remove the left border */ +.border-left-0 { + border-left: 0 !important; } + +.rounded { + border-radius: 4px !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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-sm { + border: 1px solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-sm-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-sm-top { + border-top: 1px solid !important; } + + /* Add a gray border to the right */ + .border-sm-right { + border-right: 1px solid !important; } + + /* Add a gray border to the bottom */ + .border-sm-bottom { + border-bottom: 1px solid !important; } + + /* Add a gray border to the left */ + .border-sm-left { + border-left: 1px solid !important; } + + /* Remove the top border */ + .border-sm-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-sm-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-sm-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .border-sm-left-0 { + border-left: 0 !important; } + + .rounded-sm { + border-radius: 4px !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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-md { + border: 1px solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-md-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-md-top { + border-top: 1px solid !important; } + + /* Add a gray border to the right */ + .border-md-right { + border-right: 1px solid !important; } + + /* Add a gray border to the bottom */ + .border-md-bottom { + border-bottom: 1px solid !important; } + + /* Add a gray border to the left */ + .border-md-left { + border-left: 1px solid !important; } + + /* Remove the top border */ + .border-md-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-md-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-md-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .border-md-left-0 { + border-left: 0 !important; } + + .rounded-md { + border-radius: 4px !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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-lg { + border: 1px solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-lg-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-lg-top { + border-top: 1px solid !important; } + + /* Add a gray border to the right */ + .border-lg-right { + border-right: 1px solid !important; } + + /* Add a gray border to the bottom */ + .border-lg-bottom { + border-bottom: 1px solid !important; } + + /* Add a gray border to the left */ + .border-lg-left { + border-left: 1px solid !important; } + + /* Remove the top border */ + .border-lg-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-lg-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-lg-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .border-lg-left-0 { + border-left: 0 !important; } + + .rounded-lg { + border-radius: 4px !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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-xl { + border: 1px solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-xl-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-xl-top { + border-top: 1px solid !important; } + + /* Add a gray border to the right */ + .border-xl-right { + border-right: 1px solid !important; } + + /* Add a gray border to the bottom */ + .border-xl-bottom { + border-bottom: 1px solid !important; } + + /* Add a gray border to the left */ + .border-xl-left { + border-left: 1px solid !important; } + + /* Remove the top border */ + .border-xl-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-xl-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-xl-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .border-xl-left-0 { + border-left: 0 !important; } + + .rounded-xl { + border-radius: 4px !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; } } +/* Add a 50% border-radius to make something into a circle */ +.circle { + border-radius: 50% !important; } + +/* Change the border style to dashed, in conjunction with another utility */ +.border-dashed { + border-style: dashed !important; } + +/* Use with .border to turn the border blue */ +.border-blue { + border-color: #0366d6 !important; } + +/* Use with .border to turn the border blue-light */ +.border-blue-light { + border-color: #264caf !important; } + +/* Use with .border to turn the border green */ +.border-green { + border-color: #34d058 !important; } + +/* Use with .border to turn the border green light */ +.border-green-light { + border-color: #18584a !important; } + +/* Use with .border to turn the border red */ +.border-red { + border-color: #d73a49 !important; } + +/* Use with .border to turn the border red-light */ +.border-red-light { + border-color: #dd2e2e !important; } + +/* Use with .border to turn the border purple */ +.border-purple { + border-color: #6f42c1 !important; } + +/* Use with .border to turn the border yellow */ +.border-yellow { + border-color: #f9c513 !important; } + +/* Use with .border to turn the border gray-light */ +.border-gray-light { + border-color: #eaecef !important; } + +/* Use with .border to turn the border gray-dark */ +.border-gray-dark { + border-color: #d1d5da !important; } + +/* Use with .border to turn the border rgba black 0.15 */ +.border-black-fade { + border-color: rgba(27, 31, 35, 0.15) !important; } + +/* Use with .border to turn the border rgba white 0.15 */ +.border-white-fade { + border-color: rgba(255, 255, 255, 0.15) !important; } + +/* Use with .border to turn the border white w/varying transparency */ +.border-white-fade-15 { + border-color: rgba(255, 255, 255, 0.15) !important; } + +.border-white-fade-30 { + border-color: rgba(255, 255, 255, 0.3) !important; } + +.border-white-fade-50 { + border-color: rgba(255, 255, 255, 0.5) !important; } + +.border-white-fade-70 { + border-color: rgba(255, 255, 255, 0.7) !important; } + +.border-white-fade-85 { + border-color: rgba(255, 255, 255, 0.85) !important; } + +.box-shadow { + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04) !important; } + +.box-shadow-medium { + box-shadow: 0 3px 6px rgba(149, 157, 165, 0.15) !important; } + +.box-shadow-large { + box-shadow: 0 8px 24px rgba(149, 157, 165, 0.2) !important; } + +.box-shadow-extra-large { + box-shadow: 0 12px 48px rgba(149, 157, 165, 0.3) !important; } + +.box-shadow-none { + box-shadow: none !important; } + +/* Set the background to $bg-white */ +.bg-white { + background-color: #fff !important; } + +/* Set the background to $bg-blue */ +.bg-blue { + background-color: #0366d6 !important; } + +/* Set the background to $bg-blue-light */ +.bg-blue-light { + background-color: #2c84fa !important; } + +/* Set the background to $bg-gray-dark */ +.bg-gray-dark { + background-color: #24292e !important; } + +/* Set the background to $bg-gray */ +.bg-gray { + background-color: #f6f8fa !important; } + +/* Set the background to $bg-gray-light */ +.bg-gray-light { + background-color: #fafbfc !important; } + +/* Set the background to $bg-green */ +.bg-green { + background-color: #28a745 !important; } + +/* Set the background to $bg-green-light */ +.bg-green-light { + background-color: #11b584 !important; } + +/* Set the background to $bg-red */ +.bg-red { + background-color: #d73a49 !important; } + +/* Set the background to $bg-red-light */ +.bg-red-light { + background-color: #f77e7e !important; } + +/* Set the background to $bg-yellow */ +.bg-yellow { + background-color: #ffd33d !important; } + +/* Set the background to $bg-yellow-light */ +.bg-yellow-light { + background-color: #f7d12e !important; } + +/* Set the background to $bg-yellow-dark */ +.bg-yellow-dark { + background-color: #dbab09 !important; } + +/* Set the background to $bg-purple */ +.bg-purple { + background-color: #6f42c1 !important; } + +/* Set the background to $bg-pink */ +.bg-pink { + background-color: #ea4aaa !important; } + +/* Set the background to $bg-purple-light */ +.bg-purple-light { + background-color: #7253ed !important; } + +/* Set the background to $bg-orange */ +.bg-orange { + background-color: #d15704 !important; } + +.color-gray-0 { + color: #fafbfc !important; } + +.bg-gray-0 { + background-color: #fafbfc !important; } + +.color-gray-1 { + color: #f6f8fa !important; } + +.bg-gray-1 { + background-color: #f6f8fa !important; } + +.color-gray-2 { + color: #e1e4e8 !important; } + +.bg-gray-2 { + background-color: #e1e4e8 !important; } + +.color-gray-3 { + color: #d1d5da !important; } + +.bg-gray-3 { + background-color: #d1d5da !important; } + +.color-gray-4 { + color: #959da5 !important; } + +.bg-gray-4 { + background-color: #959da5 !important; } + +.color-gray-5 { + color: #6a737d !important; } + +.bg-gray-5 { + background-color: #6a737d !important; } + +.color-gray-6 { + color: #586069 !important; } + +.bg-gray-6 { + background-color: #586069 !important; } + +.color-gray-7 { + color: #444d56 !important; } + +.bg-gray-7 { + background-color: #444d56 !important; } + +.color-gray-8 { + color: #2f363d !important; } + +.bg-gray-8 { + background-color: #2f363d !important; } + +.color-gray-9 { + color: #24292e !important; } + +.bg-gray-9 { + background-color: #24292e !important; } + +.color-blue-0 { + color: #2c84fa !important; } + +.bg-blue-0 { + background-color: #2c84fa !important; } + +.color-blue-1 { + color: #2869e6 !important; } + +.bg-blue-1 { + background-color: #2869e6 !important; } + +.color-blue-2 { + color: #264caf !important; } + +.bg-blue-2 { + background-color: #264caf !important; } + +.color-blue-3 { + color: #183385 !important; } + +.bg-blue-3 { + background-color: #183385 !important; } + +.color-blue-4 { + color: #2188ff !important; } + +.bg-blue-4 { + background-color: #2188ff !important; } + +.color-blue-5 { + color: #0366d6 !important; } + +.bg-blue-5 { + background-color: #0366d6 !important; } + +.color-blue-6 { + color: #005cc5 !important; } + +.bg-blue-6 { + background-color: #005cc5 !important; } + +.color-blue-7 { + color: #044289 !important; } + +.bg-blue-7 { + background-color: #044289 !important; } + +.color-blue-8 { + color: #032f62 !important; } + +.bg-blue-8 { + background-color: #032f62 !important; } + +.color-blue-9 { + color: #05264c !important; } + +.bg-blue-9 { + background-color: #05264c !important; } + +.color-green-0 { + color: #41d693 !important; } + +.bg-green-0 { + background-color: #41d693 !important; } + +.color-green-1 { + color: #11b584 !important; } + +.bg-green-1 { + background-color: #11b584 !important; } + +.color-green-2 { + color: #009c7b !important; } + +.bg-green-2 { + background-color: #009c7b !important; } + +.color-green-3 { + color: #026e57 !important; } + +.bg-green-3 { + background-color: #026e57 !important; } + +.color-green-4 { + color: #34d058 !important; } + +.bg-green-4 { + background-color: #34d058 !important; } + +.color-green-5 { + color: #28a745 !important; } + +.bg-green-5 { + background-color: #28a745 !important; } + +.color-green-6 { + color: #22863a !important; } + +.bg-green-6 { + background-color: #22863a !important; } + +.color-green-7 { + color: #176f2c !important; } + +.bg-green-7 { + background-color: #176f2c !important; } + +.color-green-8 { + color: #165c26 !important; } + +.bg-green-8 { + background-color: #165c26 !important; } + +.color-green-9 { + color: #144620 !important; } + +.bg-green-9 { + background-color: #144620 !important; } + +.color-yellow-0 { + color: #ffeb82 !important; } + +.bg-yellow-0 { + background-color: #ffeb82 !important; } + +.color-yellow-1 { + color: #fadf50 !important; } + +.bg-yellow-1 { + background-color: #fadf50 !important; } + +.color-yellow-2 { + color: #f7d12e !important; } + +.bg-yellow-2 { + background-color: #f7d12e !important; } + +.color-yellow-3 { + color: #e7af06 !important; } + +.bg-yellow-3 { + background-color: #e7af06 !important; } + +.color-yellow-4 { + color: #ffdf5d !important; } + +.bg-yellow-4 { + background-color: #ffdf5d !important; } + +.color-yellow-5 { + color: #ffd33d !important; } + +.bg-yellow-5 { + background-color: #ffd33d !important; } + +.color-yellow-6 { + color: #f9c513 !important; } + +.bg-yellow-6 { + background-color: #f9c513 !important; } + +.color-yellow-7 { + color: #dbab09 !important; } + +.bg-yellow-7 { + background-color: #dbab09 !important; } + +.color-yellow-8 { + color: #b08800 !important; } + +.bg-yellow-8 { + background-color: #b08800 !important; } + +.color-yellow-9 { + color: #735c0f !important; } + +.bg-yellow-9 { + background-color: #735c0f !important; } + +.color-orange-0 { + color: #fff8f2 !important; } + +.bg-orange-0 { + background-color: #fff8f2 !important; } + +.color-orange-1 { + color: #ffebda !important; } + +.bg-orange-1 { + background-color: #ffebda !important; } + +.color-orange-2 { + color: #ffd1ac !important; } + +.bg-orange-2 { + background-color: #ffd1ac !important; } + +.color-orange-3 { + color: #ffab70 !important; } + +.bg-orange-3 { + background-color: #ffab70 !important; } + +.color-orange-4 { + color: #fb8532 !important; } + +.bg-orange-4 { + background-color: #fb8532 !important; } + +.color-orange-5 { + color: #f66a0a !important; } + +.bg-orange-5 { + background-color: #f66a0a !important; } + +.color-orange-6 { + color: #e36209 !important; } + +.bg-orange-6 { + background-color: #e36209 !important; } + +.color-orange-7 { + color: #d15704 !important; } + +.bg-orange-7 { + background-color: #d15704 !important; } + +.color-orange-8 { + color: #c24e00 !important; } + +.bg-orange-8 { + background-color: #c24e00 !important; } + +.color-orange-9 { + color: #a04100 !important; } + +.bg-orange-9 { + background-color: #a04100 !important; } + +.color-red-0 { + color: #f77e7e !important; } + +.bg-red-0 { + background-color: #f77e7e !important; } + +.color-red-1 { + color: #f96e65 !important; } + +.bg-red-1 { + background-color: #f96e65 !important; } + +.color-red-2 { + color: #e94c4c !important; } + +.bg-red-2 { + background-color: #e94c4c !important; } + +.color-red-3 { + color: #dd2e2e !important; } + +.bg-red-3 { + background-color: #dd2e2e !important; } + +.color-red-4 { + color: #ea4a5a !important; } + +.bg-red-4 { + background-color: #ea4a5a !important; } + +.color-red-5 { + color: #d73a49 !important; } + +.bg-red-5 { + background-color: #d73a49 !important; } + +.color-red-6 { + color: #cb2431 !important; } + +.bg-red-6 { + background-color: #cb2431 !important; } + +.color-red-7 { + color: #b31d28 !important; } + +.bg-red-7 { + background-color: #b31d28 !important; } + +.color-red-8 { + color: #9e1c23 !important; } + +.bg-red-8 { + background-color: #9e1c23 !important; } + +.color-red-9 { + color: #86181d !important; } + +.bg-red-9 { + background-color: #86181d !important; } + +.color-purple-0 { + color: #7253ed !important; } + +.bg-purple-0 { + background-color: #7253ed !important; } + +.color-purple-1 { + color: #5e41d0 !important; } + +.bg-purple-1 { + background-color: #5e41d0 !important; } + +.color-purple-2 { + color: #4e26af !important; } + +.bg-purple-2 { + background-color: #4e26af !important; } + +.color-purple-3 { + color: #381885 !important; } + +.bg-purple-3 { + background-color: #381885 !important; } + +.color-purple-4 { + color: #8a63d2 !important; } + +.bg-purple-4 { + background-color: #8a63d2 !important; } + +.color-purple-5 { + color: #6f42c1 !important; } + +.bg-purple-5 { + background-color: #6f42c1 !important; } + +.color-purple-6 { + color: #5a32a3 !important; } + +.bg-purple-6 { + background-color: #5a32a3 !important; } + +.color-purple-7 { + color: #4c2889 !important; } + +.bg-purple-7 { + background-color: #4c2889 !important; } + +.color-purple-8 { + color: #3a1d6e !important; } + +.bg-purple-8 { + background-color: #3a1d6e !important; } + +.color-purple-9 { + color: #29134e !important; } + +.bg-purple-9 { + background-color: #29134e !important; } + +.color-pink-0 { + color: #ffeef8 !important; } + +.bg-pink-0 { + background-color: #ffeef8 !important; } + +.color-pink-1 { + color: #fedbf0 !important; } + +.bg-pink-1 { + background-color: #fedbf0 !important; } + +.color-pink-2 { + color: #f9b3dd !important; } + +.bg-pink-2 { + background-color: #f9b3dd !important; } + +.color-pink-3 { + color: #f692ce !important; } + +.bg-pink-3 { + background-color: #f692ce !important; } + +.color-pink-4 { + color: #ec6cb9 !important; } + +.bg-pink-4 { + background-color: #ec6cb9 !important; } + +.color-pink-5 { + color: #ea4aaa !important; } + +.bg-pink-5 { + background-color: #ea4aaa !important; } + +.color-pink-6 { + color: #d03592 !important; } + +.bg-pink-6 { + background-color: #d03592 !important; } + +.color-pink-7 { + color: #b93a86 !important; } + +.bg-pink-7 { + background-color: #b93a86 !important; } + +.color-pink-8 { + color: #99306f !important; } + +.bg-pink-8 { + background-color: #99306f !important; } + +.color-pink-9 { + color: #6d224f !important; } + +.bg-pink-9 { + background-color: #6d224f !important; } + +.bg-shade-gradient { + background-image: linear-gradient(180deg, rgba(27, 31, 35, 0.065), rgba(27, 31, 35, 0)) !important; + background-repeat: no-repeat !important; + background-size: 100% 200px !important; } + +/* Set the text color to $text-blue */ +.text-blue { + color: #0366d6 !important; } + +/* Set the text color to $text-red */ +.text-red { + color: #cb2431 !important; } + +/* Set the text color to $text-gray-light */ +.text-gray-light { + color: #6a737d !important; } + +/* Set the text color to $text-gray */ +.text-gray { + color: #586069 !important; } + +/* Set the text color to $text-gray-dark */ +.text-gray-dark { + color: #24292e !important; } + +/* Set the text color to $text-green */ +.text-green { + color: #22863a !important; } + +/* Set the text color to $text-yellow */ +.text-yellow { + color: #b08800 !important; } + +/* Set the text color to $text-orange */ +.text-orange { + color: #a04100 !important; } + +/* Set the text color to $text-orange-light */ +.text-orange-light { + color: #e36209 !important; } + +/* Set the text color to $text-purple */ +.text-purple { + color: #6f42c1 !important; } + +/* Set the text color to $text-pink */ +.text-pink { + color: #ea4aaa !important; } + +/* Set the text color to $text-white */ +.text-white { + color: #fff !important; } + +/* Set the text color to inherit */ +.text-inherit { + color: inherit !important; } + +.link-gray { + color: #586069 !important; } + .link-gray:hover { + color: #0366d6 !important; } + +.link-gray-dark { + color: #24292e !important; } + .link-gray-dark:hover { + color: #0366d6 !important; } + +/* Set the link color to $text-blue on hover + Useful when you want only part of a link to turn blue on hover */ +.link-hover-blue:hover { + color: #0366d6 !important; } + +/* Make a link $text-gray, then $text-blue on hover and removes the underline */ +.muted-link { + color: #586069 !important; } + .muted-link:hover { + color: #0366d6 !important; + text-decoration: none; } + +.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: 99; + background: rgba(27, 31, 35, 0.5); } + +.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 */ +.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; } } +/* Final position */ +.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; } } +/* Vertical align middle */ +.v-align-middle { + vertical-align: middle !important; } + +/* Vertical align top */ +.v-align-top { + vertical-align: top !important; } + +/* Vertical align bottom */ +.v-align-bottom { + vertical-align: bottom !important; } + +/* Vertical align to the top of the text */ +.v-align-text-top { + vertical-align: text-top !important; } + +/* Vertical align to the bottom of the text */ +.v-align-text-bottom { + vertical-align: text-bottom !important; } + +/* Vertical align to the parent's baseline */ +.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; } } +/* Clear floats around the element */ +.clearfix::before { + display: table; + content: ""; } +.clearfix::after { + display: table; + clear: both; + content: ""; } + +/* Float to the left */ +.float-left { + float: left !important; } + +/* Float to the right */ +.float-right { + float: right !important; } + +/* No float */ +.float-none { + float: none !important; } + +@media (min-width: 544px) { + /* Float to the left */ + .float-sm-left { + float: left !important; } + + /* Float to the right */ + .float-sm-right { + float: right !important; } + + /* No float */ + .float-sm-none { + float: none !important; } } +@media (min-width: 768px) { + /* Float to the left */ + .float-md-left { + float: left !important; } + + /* Float to the right */ + .float-md-right { + float: right !important; } + + /* No float */ + .float-md-none { + float: none !important; } } +@media (min-width: 1012px) { + /* Float to the left */ + .float-lg-left { + float: left !important; } + + /* Float to the right */ + .float-lg-right { + float: right !important; } + + /* No float */ + .float-lg-none { + float: none !important; } } +@media (min-width: 1280px) { + /* Float to the left */ + .float-xl-left { + float: left !important; } + + /* Float to the right */ + .float-xl-right { + float: right !important; } + + /* No float */ + .float-xl-none { + float: none !important; } } +/* Max width 100% */ +.width-fit { + max-width: 100% !important; } + +/* Set the width to 100% */ +.width-full { + width: 100% !important; } + +/* Max height 100% */ +.height-fit { + max-height: 100% !important; } + +/* Set the height to 100% */ +.height-full { + height: 100% !important; } + +/* Remove min-width from element */ +.min-width-0 { + min-width: 0 !important; } + +.width-auto { + width: auto !important; } + +/* Set the direction to rtl */ +.direction-rtl { + direction: rtl !important; } + +/* Set the direction to ltr */ +.direction-ltr { + direction: ltr !important; } + +@media (min-width: 544px) { + .width-sm-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-sm-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-sm-ltr { + direction: ltr !important; } } +@media (min-width: 768px) { + .width-md-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-md-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-md-ltr { + direction: ltr !important; } } +@media (min-width: 1012px) { + .width-lg-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-lg-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-lg-ltr { + direction: ltr !important; } } +@media (min-width: 1280px) { + .width-xl-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-xl-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-xl-ltr { + direction: ltr !important; } } +/* Set a $size margin to all sides at $breakpoint */ +.m-0 { + margin: 0 !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-0 { + margin-top: 0 !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-0 { + margin-right: 0 !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-0 { + margin-bottom: 0 !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-0 { + margin-left: 0 !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-1 { + margin: 4px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-1 { + margin-top: 4px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-1 { + margin-right: 4px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-1 { + margin-bottom: 4px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-1 { + margin-left: 4px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n1 { + margin-top: -4px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n1 { + margin-right: -4px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n1 { + margin-bottom: -4px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n1 { + margin-left: -4px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-2 { + margin: 8px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-2 { + margin-top: 8px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-2 { + margin-right: 8px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-2 { + margin-bottom: 8px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-2 { + margin-left: 8px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n2 { + margin-top: -8px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n2 { + margin-right: -8px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n2 { + margin-bottom: -8px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n2 { + margin-left: -8px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-3 { + margin: 16px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-3 { + margin-top: 16px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-3 { + margin-right: 16px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-3 { + margin-bottom: 16px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-3 { + margin-left: 16px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n3 { + margin-top: -16px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n3 { + margin-right: -16px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n3 { + margin-bottom: -16px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n3 { + margin-left: -16px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-4 { + margin: 24px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-4 { + margin-top: 24px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-4 { + margin-right: 24px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-4 { + margin-bottom: 24px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-4 { + margin-left: 24px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n4 { + margin-top: -24px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n4 { + margin-right: -24px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n4 { + margin-bottom: -24px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n4 { + margin-left: -24px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-5 { + margin: 32px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-5 { + margin-top: 32px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-5 { + margin-right: 32px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-5 { + margin-bottom: 32px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-5 { + margin-left: 32px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n5 { + margin-top: -32px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n5 { + margin-right: -32px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n5 { + margin-bottom: -32px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n5 { + margin-left: -32px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-6 { + margin: 40px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-6 { + margin-top: 40px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-6 { + margin-right: 40px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-6 { + margin-bottom: 40px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-6 { + margin-left: 40px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n6 { + margin-top: -40px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n6 { + margin-right: -40px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n6 { + margin-bottom: -40px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n6 { + margin-left: -40px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + +/* responsive horizontal auto margins */ +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; } + +@media (min-width: 544px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 768px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-md-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 1012px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 1280px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; } } +/* Set a $size padding to all sides at $breakpoint */ +.p-0 { + padding: 0 !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-0 { + padding-top: 0 !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-0 { + padding-right: 0 !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-0 { + padding-bottom: 0 !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-0 { + padding-left: 0 !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-1 { + padding: 4px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-1 { + padding-top: 4px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-1 { + padding-right: 4px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-1 { + padding-bottom: 4px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-1 { + padding-left: 4px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-2 { + padding: 8px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-2 { + padding-top: 8px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-2 { + padding-right: 8px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-2 { + padding-bottom: 8px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-2 { + padding-left: 8px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-3 { + padding: 16px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-3 { + padding-top: 16px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-3 { + padding-right: 16px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-3 { + padding-bottom: 16px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-3 { + padding-left: 16px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-4 { + padding: 24px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-4 { + padding-top: 24px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-4 { + padding-right: 24px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-4 { + padding-bottom: 24px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-4 { + padding-left: 24px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-5 { + padding: 32px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-5 { + padding-top: 32px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-5 { + padding-right: 32px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-5 { + padding-bottom: 32px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-5 { + padding-left: 32px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-6 { + padding: 40px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-6 { + padding-top: 40px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-6 { + padding-right: 40px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-6 { + padding-bottom: 40px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-6 { + padding-left: 40px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } + +@media (min-width: 544px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 768px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-md-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 1012px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 1280px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-6 { + padding-top: 40px !important; + padding-bottom: 40px !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; } } + +/* Set the font size to 26px */ +.h1 { + font-size: 26px !important; } + @media (min-width: 768px) { + .h1 { + font-size: 32px !important; } } + +/* Set the font size to 22px */ +.h2 { + font-size: 22px !important; } + @media (min-width: 768px) { + .h2 { + font-size: 24px !important; } } + +/* Set the font size to 18px */ +.h3 { + font-size: 18px !important; } + @media (min-width: 768px) { + .h3 { + font-size: 20px !important; } } + +/* Set the font size to 16px */ +.h4 { + font-size: 16px !important; } + +/* Set the font size to 14px */ +.h5 { + font-size: 14px !important; } + +/* Set the font size to 12px */ +.h6 { + font-size: 12px !important; } + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-weight: 600 !important; } + +/* Set the font size to 26px */ +.f1 { + font-size: 26px !important; } + @media (min-width: 768px) { + .f1 { + font-size: 32px !important; } } + +/* Set the font size to 22px */ +.f2 { + font-size: 22px !important; } + @media (min-width: 768px) { + .f2 { + font-size: 24px !important; } } + +/* Set the font size to 18px */ +.f3 { + font-size: 18px !important; } + @media (min-width: 768px) { + .f3 { + font-size: 20px !important; } } + +/* Set the font size to 16px */ +.f4 { + font-size: 16px !important; } + @media (min-width: 768px) { + .f4 { + font-size: 16px !important; } } + +/* Set the font size to 14px */ +.f5 { + font-size: 14px !important; } + +/* Set the font size to 12px */ +.f6 { + font-size: 12px !important; } + +/* Set the font size to 40px and weight to light */ +.f00-light { + font-size: 40px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f00-light { + font-size: 48px !important; } } + +/* Set the font size to 32px and weight to light */ +.f0-light { + font-size: 32px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f0-light { + font-size: 40px !important; } } + +/* Set the font size to 26px and weight to light */ +.f1-light { + font-size: 26px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f1-light { + font-size: 32px !important; } } + +/* Set the font size to 22px and weight to light */ +.f2-light { + font-size: 22px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f2-light { + font-size: 24px !important; } } + +/* Set the font size to 18px and weight to light */ +.f3-light { + font-size: 18px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f3-light { + font-size: 20px !important; } } + +/* Set the font size to ${#h6-size} */ +.text-small { + font-size: 12px !important; } + +/* Large leading paragraphs */ +.lead { + margin-bottom: 30px; + font-size: 20px; + font-weight: 300; + color: #586069; } + +/* Set the line height to ultra condensed */ +.lh-condensed-ultra { + line-height: 1 !important; } + +/* Set the line height to condensed */ +.lh-condensed { + line-height: 1.25 !important; } + +/* Set the line height to default */ +.lh-default { + line-height: 1.5 !important; } + +/* Set the line height to zero */ +.lh-0 { + line-height: 0 !important; } + +@media (min-width: 544px) { + /* Set the line height to ultra condensed */ + .lh-sm-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-sm-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-sm-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-sm-0 { + line-height: 0 !important; } } +@media (min-width: 768px) { + /* Set the line height to ultra condensed */ + .lh-md-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-md-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-md-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-md-0 { + line-height: 0 !important; } } +@media (min-width: 1012px) { + /* Set the line height to ultra condensed */ + .lh-lg-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-lg-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-lg-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-lg-0 { + line-height: 0 !important; } } +@media (min-width: 1280px) { + /* Set the line height to ultra condensed */ + .lh-xl-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-xl-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-xl-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-xl-0 { + line-height: 0 !important; } } +/* Text align to the right */ +.text-right { + text-align: right !important; } + +/* Text align to the left */ +.text-left { + text-align: left !important; } + +/* Text align to the center */ +.text-center { + text-align: center !important; } + +@media (min-width: 544px) { + /* Text align to the right */ + .text-sm-right { + text-align: right !important; } + + /* Text align to the left */ + .text-sm-left { + text-align: left !important; } + + /* Text align to the center */ + .text-sm-center { + text-align: center !important; } } +@media (min-width: 768px) { + /* Text align to the right */ + .text-md-right { + text-align: right !important; } + + /* Text align to the left */ + .text-md-left { + text-align: left !important; } + + /* Text align to the center */ + .text-md-center { + text-align: center !important; } } +@media (min-width: 1012px) { + /* Text align to the right */ + .text-lg-right { + text-align: right !important; } + + /* Text align to the left */ + .text-lg-left { + text-align: left !important; } + + /* Text align to the center */ + .text-lg-center { + text-align: center !important; } } +@media (min-width: 1280px) { + /* Text align to the right */ + .text-xl-right { + text-align: right !important; } + + /* Text align to the left */ + .text-xl-left { + text-align: left !important; } + + /* Text align to the center */ + .text-xl-center { + text-align: center !important; } } +/* Set the font weight to normal */ +.text-normal { + font-weight: 400 !important; } + +/* Set the font weight to bold */ +.text-bold { + font-weight: 600 !important; } + +/* Set the font to italic */ +.text-italic { + font-style: italic !important; } + +/* Make text uppercase */ +.text-uppercase { + text-transform: uppercase !important; } + +/* Underline text */ +.text-underline { + text-decoration: underline !important; } + +/* Don't underline text */ +.no-underline { + text-decoration: none !important; } + +/* Don't wrap white space */ +.no-wrap { + white-space: nowrap !important; } + +/* Normal white space */ +.ws-normal { + white-space: normal !important; } + +/* Force long "words" to wrap if they exceed the width of the container */ +.break-word { + word-break: break-word !important; + word-wrap: break-word !important; + overflow-wrap: break-word !important; } + +/* + * Specifically apply word-break: break-all; per MDN: + * + * > Note: In contrast to `word-break: break-word` and `overflow-wrap: break-word`, + * > `word-break: break-all` will create a break at the exact place where text would + * > otherwise overflow its container (even if putting an entire word on its own line + * > would negate the need for a break). + * + * see: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break#Values + */ +.wb-break-all { + word-break: break-all !important; } + +.text-emphasized { + font-weight: 600; + color: #24292e; } + +.list-style-none { + list-style: none !important; } + +/* Add a dark text shadow */ +.text-shadow-dark { + text-shadow: 0 1px 1px rgba(27, 31, 35, 0.25), 0 1px 25px rgba(27, 31, 35, 0.75); } + +/* Add a light text shadow */ +.text-shadow-light { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } + +/* Set to monospace font */ +.text-mono { + font-family: Consolas, "Liberation Mono", Menlo, monospace !important; } + +/* Disallow user from selecting text */ +.user-select-none { + user-select: none !important; } + +.d-block, .toc.level-1.current > ul, .toc.level-2.current > ul, .toc.level-3.current > ul, .toc.level-4.current > ul, .toc.level-5.current > ul, .toc.level-6.current > ul, .toc.level-7.current > ul, .toc.level-8.current > ul, .toc.level-9.current > ul, .toc.level-10.current > ul, .toc.level-11.current > ul { + 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, .toc > ul { + 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: 543px) { + .hide-sm { + display: none !important; } } +@media (min-width: 544px) and (max-width: 767px) { + .hide-md { + display: none !important; } } +@media (min-width: 768px) and (max-width: 1011px) { + .hide-lg { + display: none !important; } } +@media (min-width: 1012px) { + .hide-xl { + display: none !important; } } +/* Set the table-layout to fixed */ +.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; } + +.container { + background: #fff; } + +.pb-1 { + color: #666; } + +.addons-wrap .status { + background-color: #ccd2d8; } + +.addons-wrap .addons dd a { + color: #666; } + +.addons-wrap .status .branch .name { + color: #05c; } + +.side-bar { + background-color: white; + margin-top: 23px; } + +/*.site-header{ + background-color: #ffe615; + color: #666; + text-decoration: none; + + } + */ +.sidebar-wrap .sidebar .header, +.sidebar-wrap .sidebar .toctree { + width: 300px; } + +.nav-list-item { + color: #666; + text-decoration: none; } + +.scrollbar { + background-color: #F5F5F5; + float: left; + height: 300px; + margin-bottom: 25px; + margin-left: 22px; + margin-top: 40px; + width: 65px; + overflow-y: scroll; } + +.force-overflow { + min-height: 450px; } + +::-webkit-scrollbar { + width: 12px; } + +/* Track */ +/* Handle */ +::-webkit-scrollbar-thumb { + background: rgba(211, 224, 244, 0.8); + -webkit-box-shadow: inset 0 0 6px rgba(225, 223, 223, 0.5); } + +::-webkit-scrollbar-thumb:window-inactive { + background: rgba(245, 241, 241, 0.4); } + +#style-1::-webkit-scrollbar { + width: 6px; + background-color: #F5F5F5; } + +#style-1::-webkit-scrollbar-thumb { + background-color: #000000; } + +#style-1::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + background-color: #F5F5F5; } + +html, +body { + max-width: 100%; + overflow-x: hidden; } + +body { + background: white !important; } + +/* Add a black background color to the top navigation */ +.topnav { + background-color: white; + overflow: hidden; + border-bottom: 1px solid lightgray; } + +/* Style the links inside the navigation bar */ +.topnav a { + float: left; + font-size: 14px; + font-weight: 500; + display: grid; + align-items: center; + color: #333332; + text-align: center; + text-decoration: none; + font-size: 17px; } + +.space { + background-color: white; + overflow: hidden; } + +.space a { + float: left; + color: white; + text-align: center; + text-decoration: none; + font-size: 17px; } + +/* Change the color of links on hover */ +/* Add a color to the active/current link */ +.topnav a.active { + background-color: white; + color: white; } + +.logo { + height: 60px; + width: auto; + display: grid; } + +.logo_img { + height: 60px; + width: auto; + display: grid; } + +a:link a:visited a:hover a:active { + color: #05c; } + +.side-bar { + height: 90%; } + +.main { + max-width: 66.5rem !important; } + +.main-content { + margin-top: 100px; } + +.main-header { + margin-top: 23px; + position: fixed; + width: 100%; + background: white; + z-index: 100; } + +.container { + background: #fff; } + +.pb-1 { + color: #666; } + +.addons-wrap .status { + background-color: #ccd2d8; } + +.addons-wrap .addons dd a { + color: #666; } + +.addons-wrap .status .branch .name { + color: #0055CC; } diff --git a/2.12.0/assets/css/just-the-docs-light.css b/2.12.0/assets/css/just-the-docs-light.css new file mode 100644 index 000000000..f4feb5515 --- /dev/null +++ b/2.12.0/assets/css/just-the-docs-light.css @@ -0,0 +1,6414 @@ +@charset "UTF-8"; +.highlight, +pre.highlight { + background: #f9f9f9; + color: #383942; } + +.highlight pre { + background: #f9f9f9; } + +.highlight .hll { + background: #f9f9f9; } + +.highlight .c { + color: #9fa0a6; + font-style: italic; } + +.highlight .err { + color: #fff; + background-color: #e05151; } + +.highlight .k { + color: #a625a4; } + +.highlight .l { + color: #50a04f; } + +.highlight .n { + color: #383942; } + +.highlight .o { + color: #383942; } + +.highlight .p { + color: #383942; } + +.highlight .cm { + color: #9fa0a6; + font-style: italic; } + +.highlight .cp { + color: #9fa0a6; + font-style: italic; } + +.highlight .c1 { + color: #9fa0a6; + font-style: italic; } + +.highlight .cs { + color: #9fa0a6; + font-style: italic; } + +.highlight .ge { + font-style: italic; } + +.highlight .gs { + font-weight: 700; } + +.highlight .kc { + color: #a625a4; } + +.highlight .kd { + color: #a625a4; } + +.highlight .kn { + color: #a625a4; } + +.highlight .kp { + color: #a625a4; } + +.highlight .kr { + color: #a625a4; } + +.highlight .kt { + color: #a625a4; } + +.highlight .ld { + color: #50a04f; } + +.highlight .m { + color: #b66a00; } + +.highlight .s { + color: #50a04f; } + +.highlight .na { + color: #b66a00; } + +.highlight .nb { + color: #ca7601; } + +.highlight .nc { + color: #ca7601; } + +.highlight .no { + color: #ca7601; } + +.highlight .nd { + color: #ca7601; } + +.highlight .ni { + color: #ca7601; } + +.highlight .ne { + color: #ca7601; } + +.highlight .nf { + color: #383942; } + +.highlight .nl { + color: #ca7601; } + +.highlight .nn { + color: #383942; } + +.highlight .nx { + color: #383942; } + +.highlight .py { + color: #ca7601; } + +.highlight .nt { + color: #e35549; } + +.highlight .nv { + color: #ca7601; } + +.highlight .ow { + font-weight: 700; } + +.highlight .w { + color: #f8f8f2; } + +.highlight .mf { + color: #b66a00; } + +.highlight .mh { + color: #b66a00; } + +.highlight .mi { + color: #b66a00; } + +.highlight .mo { + color: #b66a00; } + +.highlight .sb { + color: #50a04f; } + +.highlight .sc { + color: #50a04f; } + +.highlight .sd { + color: #50a04f; } + +.highlight .s2 { + color: #50a04f; } + +.highlight .se { + color: #50a04f; } + +.highlight .sh { + color: #50a04f; } + +.highlight .si { + color: #50a04f; } + +.highlight .sx { + color: #50a04f; } + +.highlight .sr { + color: #0083bb; } + +.highlight .s1 { + color: #50a04f; } + +.highlight .ss { + color: #0083bb; } + +.highlight .bp { + color: #ca7601; } + +.highlight .vc { + color: #ca7601; } + +.highlight .vg { + color: #ca7601; } + +.highlight .vi { + color: #e35549; } + +.highlight .il { + color: #b66a00; } + +.highlight .gu { + color: #75715e; } + +.highlight .gd { + color: #e05151; } + +.highlight .gi { + color: #43d089; } + +.highlight .language-json .w + .s2 { + color: #e35549; } + +.highlight .language-json .kc { + color: #0083bb; } + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; } + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; } + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; } + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; } + +* { + box-sizing: border-box; } + +html { + font-size: 0.875rem !important; + scroll-behavior: smooth; } + @media (min-width: 31.25rem) { + html { + font-size: 1rem !important; } } + +body { + font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif; + font-size: inherit; + line-height: 1.4; + color: #5c5962; + background-color: #fff; + overflow-wrap: break-word; } + +ol, +ul, +dl, +pre, +address, +blockquote, +table, +div, +hr, +form, +fieldset, +noscript .table-wrapper { + margin-top: 0; } + +h1, +h2, +h3, +h4, +h5, +h6, +#toctitle { + margin-top: 0; + margin-bottom: 1em; + font-weight: 500; + line-height: 1.25; + color: #27262b; } + +p { + margin-top: 1em; + margin-bottom: 1em; } + +a { + color: #7253ed; + text-decoration: none; } + +a:not([class]) { + text-decoration: underline; + text-decoration-color: #eeebee; + text-underline-offset: 2px; } + a:not([class]):hover { + text-decoration-color: rgba(114, 83, 237, 0.45); } + +code { + font-family: "SFMono-Regular", menlo, consolas, monospace; + font-size: 0.75em; + line-height: 1.4; } + +figure, +pre { + margin: 0; } + +li { + margin: 0.25em 0; } + +img { + max-width: 100%; + height: auto; } + +hr { + height: 1px; + padding: 0; + margin: 2rem 0; + background-color: #eeebee; + border: 0; } + +blockquote { + margin: 10px 0; + margin-block-start: 0; + margin-inline-start: 0; + padding-left: 1rem; + border-left: 3px solid #eeebee; } + +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: #f5f6fa; } + @media (min-width: 50rem) { + .side-bar { + flex-flow: column nowrap; + position: fixed; + width: 15.5rem; + height: 100%; + border-right: 1px solid #eeebee; + align-items: flex-end; } } + @media (min-width: 66.5rem) { + .side-bar { + width: calc((100% - 66.5rem) / 2 + 16.5rem); + min-width: 16.5rem; } } + +@media (min-width: 50rem) { + .main { + position: relative; + max-width: 50rem; + margin-left: 15.5rem; } } +@media (min-width: 66.5rem) { + .main { + margin-left: Max(16.5rem, calc((100% - 66.5rem) / 2 + 16.5rem)); } } + +.main-content-wrap { + padding-right: 1rem; + padding-left: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; } + @media (min-width: 50rem) { + .main-content-wrap { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 50rem) { + .main-content-wrap { + padding-top: 2rem; + padding-bottom: 2rem; } } + +.main-header { + z-index: 0; + display: none; + background-color: #f5f6fa; } + @media (min-width: 50rem) { + .main-header { + display: flex; + justify-content: space-between; + height: 3.75rem; + background-color: #fff; + border-bottom: 1px solid #eeebee; } } + .main-header.nav-open { + display: block; } + @media (min-width: 50rem) { + .main-header.nav-open { + display: flex; } } + +.site-nav, +.site-header, +.site-footer { + width: 100%; } + @media (min-width: 66.5rem) { + .site-nav, + .site-header, + .site-footer { + width: 16.5rem; } } + +.site-nav { + display: none; } + .site-nav.nav-open { + display: block; } + @media (min-width: 50rem) { + .site-nav { + display: block; + padding-top: 3rem; + padding-bottom: 1rem; + overflow-y: auto; + flex: 1 1 auto; } } + +.site-header { + display: flex; + min-height: 3.75rem; + align-items: center; } + @media (min-width: 50rem) { + .site-header { + height: 3.75rem; + max-height: 3.75rem; + border-bottom: 1px solid #eeebee; } } + +.site-title { + padding-right: 1rem; + padding-left: 1rem; + flex-grow: 1; + display: flex; + height: 100%; + align-items: center; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #27262b; + font-size: 1.125rem !important; } + @media (min-width: 50rem) { + .site-title { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-title { + font-size: 1.5rem !important; + line-height: 1.25; } } + @media (min-width: 50rem) { + .site-title { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } } + +.site-button { + display: flex; + height: 100%; + padding: 1rem; + align-items: center; } + +@media (min-width: 50rem) { + .site-header .site-button { + display: none; } } +.site-title:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.site-button:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +body { + position: relative; + padding-bottom: 4rem; + overflow-y: scroll; } + @media (min-width: 50rem) { + body { + position: static; + padding-bottom: 0; } } + +.site-footer { + padding-right: 1rem; + padding-left: 1rem; + position: absolute; + bottom: 0; + left: 0; + padding-top: 1rem; + padding-bottom: 1rem; + color: #959396; + font-size: 0.6875rem !important; } + @media (min-width: 50rem) { + .site-footer { + padding-right: 2rem; + padding-left: 2rem; } } + @media (min-width: 31.25rem) { + .site-footer { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .site-footer { + position: static; + justify-self: end; } } + +.icon { + width: 1.5rem; + height: 1.5rem; + color: #7253ed; } + +.main-content { + line-height: 1.6; } + .main-content ol, + .main-content ul, + .main-content dl, + .main-content pre, + .main-content address, + .main-content blockquote, + .main-content .table-wrapper { + margin-top: 0.5em; } + .main-content a { + overflow: hidden; + text-overflow: ellipsis; } + .main-content ul, + .main-content ol { + padding-left: 1.5em; } + .main-content li .highlight { + margin-top: 0.25rem; } + .main-content ol { + list-style-type: none; + counter-reset: step-counter; } + .main-content ol > li { + position: relative; } + .main-content ol > li::before { + position: absolute; + top: 0.2em; + left: -1.6em; + color: #959396; + content: counter(step-counter); + counter-increment: step-counter; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + font-size: 0.875rem !important; } } + @media (min-width: 31.25rem) { + .main-content ol > li::before { + top: 0.11em; } } + .main-content ol > li ol { + counter-reset: sub-counter; } + .main-content ol > li ol > li::before { + content: counter(sub-counter,lower-alpha); + counter-increment: sub-counter; } + .main-content ul { + list-style: none; } + .main-content ul > li::before { + position: absolute; + margin-left: -1.4em; + color: #959396; + content: "•"; } + .main-content .task-list-item::before { + content: ""; } + .main-content .task-list-item-checkbox { + margin-right: 0.6em; + margin-left: -1.4em; } + .main-content hr + * { + margin-top: 0; } + .main-content h1:first-of-type { + margin-top: 0.5em; } + .main-content dl { + display: grid; + grid-template: auto / 10em 1fr; } + .main-content dt, + .main-content dd { + margin: 0.25em 0; } + .main-content dt { + grid-column: 1; + font-weight: 500; + text-align: right; } + .main-content dt::after { + content: ":"; } + .main-content dd { + grid-column: 2; + margin-bottom: 0; + margin-left: 1em; } + .main-content dd blockquote:first-child, + .main-content dd div:first-child, + .main-content dd dl:first-child, + .main-content dd dt:first-child, + .main-content dd h1:first-child, + .main-content dd h2:first-child, + .main-content dd h3:first-child, + .main-content dd h4:first-child, + .main-content dd h5:first-child, + .main-content dd h6:first-child, + .main-content dd li:first-child, + .main-content dd ol:first-child, + .main-content dd p:first-child, + .main-content dd pre:first-child, + .main-content dd table:first-child, + .main-content dd ul:first-child, + .main-content dd .table-wrapper:first-child { + margin-top: 0; } + .main-content dd dl:first-child dt:first-child, + .main-content dd dl:first-child dd:nth-child(2), + .main-content ol dl:first-child dt:first-child, + .main-content ol dl:first-child dd:nth-child(2), + .main-content ul dl:first-child dt:first-child, + .main-content ul dl:first-child dd:nth-child(2) { + margin-top: 0; } + .main-content .anchor-heading { + position: absolute; + right: -1rem; + width: 1.5rem; + height: 100%; + padding-right: 0.25rem; + padding-left: 0.25rem; + overflow: visible; } + @media (min-width: 50rem) { + .main-content .anchor-heading { + right: auto; + left: -1.5rem; } } + .main-content .anchor-heading svg { + display: inline-block; + width: 100%; + height: 100%; + color: #7253ed; + visibility: hidden; } + .main-content .anchor-heading:hover svg, + .main-content .anchor-heading:focus svg, + .main-content h1:hover > .anchor-heading svg, + .main-content h2:hover > .anchor-heading svg, + .main-content h3:hover > .anchor-heading svg, + .main-content h4:hover > .anchor-heading svg, + .main-content h5:hover > .anchor-heading svg, + .main-content h6:hover > .anchor-heading svg { + visibility: visible; } + .main-content summary { + cursor: pointer; } + .main-content h1, + .main-content h2, + .main-content h3, + .main-content h4, + .main-content h5, + .main-content h6, + .main-content #toctitle { + position: relative; + margin-top: 1.5em; + margin-bottom: 0.25em; } + .main-content h1 + table, + .main-content h1 + .table-wrapper, + .main-content h1 + .code-example, + .main-content h1 + .highlighter-rouge, + .main-content h1 + .sectionbody .listingblock, + .main-content h2 + table, + .main-content h2 + .table-wrapper, + .main-content h2 + .code-example, + .main-content h2 + .highlighter-rouge, + .main-content h2 + .sectionbody .listingblock, + .main-content h3 + table, + .main-content h3 + .table-wrapper, + .main-content h3 + .code-example, + .main-content h3 + .highlighter-rouge, + .main-content h3 + .sectionbody .listingblock, + .main-content h4 + table, + .main-content h4 + .table-wrapper, + .main-content h4 + .code-example, + .main-content h4 + .highlighter-rouge, + .main-content h4 + .sectionbody .listingblock, + .main-content h5 + table, + .main-content h5 + .table-wrapper, + .main-content h5 + .code-example, + .main-content h5 + .highlighter-rouge, + .main-content h5 + .sectionbody .listingblock, + .main-content h6 + table, + .main-content h6 + .table-wrapper, + .main-content h6 + .code-example, + .main-content h6 + .highlighter-rouge, + .main-content h6 + .sectionbody .listingblock, + .main-content #toctitle + table, + .main-content #toctitle + .table-wrapper, + .main-content #toctitle + .code-example, + .main-content #toctitle + .highlighter-rouge, + .main-content #toctitle + .sectionbody .listingblock { + margin-top: 1em; } + .main-content h1 + p:not(.label), + .main-content h2 + p:not(.label), + .main-content h3 + p:not(.label), + .main-content h4 + p:not(.label), + .main-content h5 + p:not(.label), + .main-content h6 + p:not(.label), + .main-content #toctitle + p:not(.label) { + margin-top: 0; } + .main-content > h1:first-child, + .main-content > h2:first-child, + .main-content > h3:first-child, + .main-content > h4:first-child, + .main-content > h5:first-child, + .main-content > h6:first-child, + .main-content > .sect1:first-child > h2, + .main-content > .sect2:first-child > h3, + .main-content > .sect3:first-child > h4, + .main-content > .sect4:first-child > h5, + .main-content > .sect5:first-child > h6 { + margin-top: 0.5rem; } + +.nav-list { + padding: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; } + .nav-list .nav-list-item { + font-size: 0.875rem !important; + position: relative; + margin: 0; } + @media (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .nav-list .nav-list-item { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .nav-list .nav-list-item { + font-size: 0.875rem !important; } } + + .nav-list .nav-list-item .nav-list-link { + display: block; + min-height: 3rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + line-height: 2.5rem; + padding-right: 3rem; + padding-left: 1rem; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-link { + min-height: 2rem; + line-height: 1.5rem; + padding-right: 2rem; + padding-left: 2rem; } } + .nav-list .nav-list-item .nav-list-link.external > svg { + width: 1rem; + height: 1rem; + vertical-align: text-bottom; } + .nav-list .nav-list-item .nav-list-link.active { + font-weight: 600; + text-decoration: none; } + .nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + .nav-list .nav-list-item .nav-list-expander { + position: absolute; + right: 0; + width: 3rem; + height: 3rem; + padding: 0.75rem; + color: #7253ed; } + @media (min-width: 50rem) { + .nav-list .nav-list-item .nav-list-expander { + width: 2rem; + height: 2rem; + padding: 0.5rem; } } + .nav-list .nav-list-item .nav-list-expander:hover { + background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + .nav-list .nav-list-item .nav-list-expander svg { + transform: rotate(90deg); } + .nav-list .nav-list-item > .nav-list { + display: none; + padding-left: 0.75rem; + list-style: none; } + .nav-list .nav-list-item > .nav-list .nav-list-item { + position: relative; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { + color: #5c5962; } + .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { + color: #5c5962; } + .nav-list .nav-list-item.active > .nav-list-expander svg { + transform: rotate(-90deg); } + .nav-list .nav-list-item.active > .nav-list { + display: block; } + +.nav-category { + padding: 0.5rem 1rem; + font-weight: 600; + text-align: start; + text-transform: uppercase; + border-bottom: 1px solid #eeebee; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .nav-category { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) { + .nav-category { + padding: 0.5rem 2rem; + margin-top: 1rem; + text-align: start; } + .nav-category:first-child { + margin-top: 0; } } + +.nav-list.nav-category-list > .nav-list-item { + margin: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list { + padding: 0; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { + color: #7253ed; } + .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander { + color: #7253ed; } + +.aux-nav { + height: 100%; + overflow-x: auto; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .aux-nav { + font-size: 0.75rem !important; } } + .aux-nav .aux-nav-list { + display: flex; + height: 100%; + padding: 0; + margin: 0; + list-style: none; } + .aux-nav .aux-nav-list-item { + display: inline-block; + height: 100%; + padding: 0; + margin: 0; } + @media (min-width: 50rem) { + .aux-nav { + padding-right: 1rem; } } + +@media (min-width: 50rem) { + .breadcrumb-nav { + margin-top: -1rem; } } + +.breadcrumb-nav-list { + padding-left: 0; + margin-bottom: 0.75rem; + list-style: none; } + +.breadcrumb-nav-list-item { + display: table-cell; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .breadcrumb-nav-list-item { + font-size: 0.75rem !important; } } + .breadcrumb-nav-list-item::before { + display: none; } + .breadcrumb-nav-list-item::after { + display: inline-block; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #959396; + content: "/"; } + .breadcrumb-nav-list-item:last-child::after { + content: ""; } + +h1, +.text-alpha { + font-size: 2rem !important; + line-height: 1.25; + font-weight: 300; } + @media (min-width: 31.25rem) { + h1, + .text-alpha { + font-size: 2.25rem !important; } } + +h2, +.text-beta, +#toctitle { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + h2, + .text-beta, + #toctitle { + font-size: 1.5rem !important; + line-height: 1.25; } } + +h3, +.text-gamma { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + h3, + .text-gamma { + font-size: 1.125rem !important; } } + +h4, +.text-delta { + font-size: 0.6875rem !important; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.1em; } + @media (min-width: 31.25rem) { + h4, + .text-delta { + font-size: 0.75rem !important; } } + +h4 code { + text-transform: none; } + +h5, +.text-epsilon { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + h5, + .text-epsilon { + font-size: 0.875rem !important; } } + +h6, +.text-zeta { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + h6, + .text-zeta { + font-size: 0.75rem !important; } } + +.text-small { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .text-small { + font-size: 0.75rem !important; } } + +.text-mono { + font-family: "SFMono-Regular", menlo, consolas, monospace !important; } + +.text-left { + text-align: left !important; } + +.text-center { + text-align: center !important; } + +.text-right { + text-align: right !important; } + +.label, +.label-blue { + display: inline-block; + padding: 0.16em 0.56em; + margin-right: 0.5rem; + margin-left: 0.5rem; + color: #fff; + text-transform: uppercase; + vertical-align: middle; + background-color: #2869e6; + font-size: 0.6875rem !important; + border-radius: 12px; } + @media (min-width: 31.25rem) { + .label, + .label-blue { + font-size: 0.75rem !important; } } + +.label-green { + background-color: #009c7b; } + +.label-purple { + background-color: #5e41d0; } + +.label-red { + background-color: #e94c4c; } + +.label-yellow { + color: #44434d; + background-color: #f7d12e; } + +.btn { + display: inline-block; + box-sizing: border-box; + padding: 0.3em 1em; + margin: 0; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: #7253ed; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: #f7f7f7; + border-width: 0; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; } + .btn:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:focus:hover, .btn.selected:focus { + box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn:hover, .btn.zeroclipboard-is-hover { + color: #6a4aec; } + .btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { + text-decoration: none; + background-color: #f4f4f4; } + .btn:active, .btn.selected, .btn.zeroclipboard-is-active { + background-color: #efefef; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn.selected:hover { + background-color: #cfcfcf; } + .btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; } + +.btn-outline { + color: #7253ed; + background: transparent; + box-shadow: inset 0 0 0 2px #e6e1e8; } + .btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { + color: #6341eb; + text-decoration: none; + background-color: transparent; + box-shadow: inset 0 0 0 3px #e6e1e8; } + .btn-outline:focus { + text-decoration: none; + outline: none; + box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + .btn-outline:focus:hover, .btn-outline.selected:focus { + box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { + color: #fff; + background-color: #5739ce; + background-image: linear-gradient(#6f55d5, #5739ce); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-primary:hover, .btn-primary.zeroclipboard-is-hover { + color: #fff; + background-color: #5132cb; + background-image: linear-gradient(#6549d2, #5132cb); } + .btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { + background-color: #4f31c6; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-primary.selected:hover { + background-color: #472cb2; } + +.btn-purple { + color: #fff; + background-color: #5739ce; + background-image: linear-gradient(#6f55d5, #5739ce); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-purple:hover, .btn-purple.zeroclipboard-is-hover { + color: #fff; + background-color: #5132cb; + background-image: linear-gradient(#6549d2, #5132cb); } + .btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { + background-color: #4f31c6; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-purple.selected:hover { + background-color: #472cb2; } + +.btn-blue { + color: #fff; + background-color: #227efa; + background-image: linear-gradient(#4593fb, #227efa); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-blue:hover, .btn-blue.zeroclipboard-is-hover { + color: #fff; + background-color: #1878fa; + background-image: linear-gradient(#368afa, #1878fa); } + .btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { + background-color: #1375f9; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-blue.selected:hover { + background-color: #0669ed; } + +.btn-green { + color: #fff; + background-color: #10ac7d; + background-image: linear-gradient(#13cc95, #10ac7d); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + .btn-green:hover, .btn-green.zeroclipboard-is-hover { + color: #fff; + background-color: #0fa276; + background-image: linear-gradient(#12be8b, #0fa276); } + .btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { + background-color: #0f9e73; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + .btn-green.selected:hover { + background-color: #0d8662; } + +.btn-reset { + background: none; + border: none; + margin: 0; + text-align: inherit; + font: inherit; + border-radius: 0; + appearance: none; } + +.search { + position: relative; + z-index: 2; + flex-grow: 1; + height: 4rem; + padding: 0.5rem; + transition: padding linear 200ms; } + @media (min-width: 50rem) { + .search { + position: relative !important; + width: auto !important; + height: 100% !important; + padding: 0; + transition: none; } } + +.search-input-wrap { + position: relative; + z-index: 1; + height: 3rem; + overflow: hidden; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + transition: height linear 200ms; } + @media (min-width: 50rem) { + .search-input-wrap { + position: absolute; + width: 100%; + max-width: 33.5rem; + height: 100% !important; + border-radius: 0; + box-shadow: none; + transition: width ease 400ms; } } + +.search-input { + position: absolute; + width: 100%; + height: 100%; + padding: 0.5rem 1rem 0.5rem 2.5rem; + font-size: 1rem; + color: #5c5962; + background-color: #fff; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-left: 0; + border-radius: 0; } + @media (min-width: 50rem) { + .search-input { + padding: 0.5rem 1rem 0.5rem 3.5rem; + font-size: 0.875rem; + background-color: #fff; + transition: padding-left linear 200ms; } } + .search-input:focus { + outline: 0; } + .search-input:focus + .search-label .search-icon { + color: #7253ed; } + +.search-label { + position: absolute; + display: flex; + height: 100%; + padding-left: 1rem; } + @media (min-width: 50rem) { + .search-label { + padding-left: 2rem; + transition: padding-left linear 200ms; } } + .search-label .search-icon { + width: 1.2rem; + height: 1.2rem; + align-self: center; + color: #959396; } + +.search-results { + position: absolute; + left: 0; + display: none; + width: 100%; + max-height: calc(100% - 4rem); + overflow-y: auto; + background-color: #fff; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + @media (min-width: 50rem) { + .search-results { + top: 100%; + width: 33.5rem; + max-height: calc(100vh - 200%) !important; } } + +.search-results-list { + padding-left: 0; + margin-bottom: 0.25rem; + list-style: none; + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .search-results-list { + font-size: 1rem !important; } } + @media (min-width: 50rem) { + .search-results-list { + font-size: 0.75rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-results-list { + font-size: 0.875rem !important; } } + +.search-results-list-item { + padding: 0; + margin: 0; } + +.search-result { + display: block; + padding: 0.25rem 0.75rem; } + .search-result:hover, .search-result.active { + background-color: #ebedf5; } + +.search-result-title { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + @media (min-width: 31.25rem) { + .search-result-title { + display: inline-block; + width: 40%; + padding-right: 0.5rem; + vertical-align: top; } } + +.search-result-doc { + display: flex; + align-items: center; + word-wrap: break-word; } + .search-result-doc.search-result-doc-parent { + opacity: 0.5; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.875rem !important; } } + @media (min-width: 50rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.6875rem !important; } } + @media (min-width: 50rem) and (min-width: 31.25rem) { + .search-result-doc.search-result-doc-parent { + font-size: 0.75rem !important; } } + + .search-result-doc .search-result-icon { + width: 1rem; + height: 1rem; + margin-right: 0.5rem; + color: #7253ed; + flex-shrink: 0; } + .search-result-doc .search-result-doc-title { + overflow: auto; } + +.search-result-section { + margin-left: 1.5rem; + word-wrap: break-word; } + +.search-result-rel-url { + display: block; + margin-left: 1.5rem; + overflow: hidden; + color: #959396; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .search-result-rel-url { + font-size: 0.625rem !important; } } + +.search-result-previews { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + margin-left: 0.5rem; + color: #959396; + word-wrap: break-word; + border-left: 1px solid; + border-left-color: #eeebee; + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .search-result-previews { + font-size: 0.75rem !important; } } + @media (min-width: 31.25rem) { + .search-result-previews { + display: inline-block; + width: 60%; + padding-left: 0.5rem; + margin-left: 0; + vertical-align: top; } } + +.search-result-preview + .search-result-preview { + margin-top: 0.25rem; } + +.search-result-highlight { + font-weight: bold; } + +.search-no-result { + padding: 0.5rem 0.75rem; + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .search-no-result { + font-size: 0.875rem !important; } } + +.search-button { + position: fixed; + right: 1rem; + bottom: 1rem; + display: flex; + width: 3.5rem; + height: 3.5rem; + background-color: #fff; + border: 1px solid rgba(114, 83, 237, 0.3); + border-radius: 1.75rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + align-items: center; + justify-content: center; } + +.search-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 0; + height: 0; + background-color: rgba(0, 0, 0, 0.3); + opacity: 0; + transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 0; } +.search-active .search-input-wrap { + height: 4rem; + border-radius: 0; } + @media (min-width: 50rem) { + .search-active .search-input-wrap { + width: 33.5rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } +.search-active .search-input { + background-color: #fff; } + @media (min-width: 50rem) { + .search-active .search-input { + padding-left: 2.3rem; } } +@media (min-width: 50rem) { + .search-active .search-label { + padding-left: 0.6rem; } } +.search-active .search-results { + display: block; } +.search-active .search-overlay { + width: 100%; + height: 100%; + opacity: 1; + transition: opacity ease 400ms, width 0s, height 0s; } +@media (min-width: 50rem) { + .search-active .main { + position: fixed; + right: 0; + left: 0; } } +.search-active .main-header { + padding-top: 4rem; } + @media (min-width: 50rem) { + .search-active .main-header { + padding-top: 0; } } + +.table-wrapper { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: 1.5rem; + overflow-x: auto; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { + display: table; + min-width: 100%; + border-collapse: separate; } + +th, +td { + font-size: 0.75rem !important; + min-width: 7.5rem; + padding: 0.5rem 0.75rem; + background-color: #fff; + border-bottom: 1px solid rgba(238, 235, 238, 0.5); + border-left: 1px solid #eeebee; } + @media (min-width: 31.25rem) { + th, + td { + font-size: 0.875rem !important; } } + th:first-of-type, + td:first-of-type { + border-left: 0; } + +tbody tr:last-of-type th, +tbody tr:last-of-type td { + border-bottom: 0; } +tbody tr:last-of-type td { + padding-bottom: 0.75rem; } + +thead th { + border-bottom: 1px solid #eeebee; } + +:not(pre, figure) > code { + padding: 0.2em 0.15em; + font-weight: 400; + background-color: #f5f6fa; + border: 1px solid #eeebee; + border-radius: 4px; } + +a:visited code { + border-color: #eeebee; } + +div.highlighter-rouge, +div.listingblock > div.content, +figure.highlight { + margin-top: 0; + margin-bottom: 0.75rem; + background-color: #f5f6fa; + border-radius: 4px; + box-shadow: none; + -webkit-overflow-scrolling: touch; + position: relative; + padding: 0; } + div.highlighter-rouge > button, + div.listingblock > div.content > button, + figure.highlight > button { + width: 0.75rem; + opacity: 0; + position: absolute; + top: 0; + right: 0; + border: 0.75rem solid #f5f6fa; + background-color: #f5f6fa; + color: #5c5962; + box-sizing: content-box; } + div.highlighter-rouge > button svg, + div.listingblock > div.content > button svg, + figure.highlight > button svg { + fill: #5c5962; } + div.highlighter-rouge > button:active, + div.listingblock > div.content > button:active, + figure.highlight > button:active { + text-decoration: none; + outline: none; + opacity: 1; } + div.highlighter-rouge > button:focus, + div.listingblock > div.content > button:focus, + figure.highlight > button:focus { + opacity: 1; } + div.highlighter-rouge:hover > button, + div.listingblock > div.content:hover > button, + figure.highlight:hover > button { + cursor: copy; + opacity: 1; } + +div.highlighter-rouge div.highlight { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } +div.highlighter-rouge pre.highlight, +div.highlighter-rouge code { + padding: 0; + margin: 0; + border: 0; } + +div.listingblock { + margin-top: 0; + margin-bottom: 0.75rem; } + div.listingblock div.content { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + div.listingblock div.content > pre, + div.listingblock code { + padding: 0; + margin: 0; + border: 0; } + +figure.highlight pre, +figure.highlight :not(pre) > code { + overflow-x: auto; + padding: 0.75rem; + margin: 0; + border: 0; } + +.highlight .table-wrapper { + padding: 0.75rem 0; + margin: 0; + border: 0; + box-shadow: none; } + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.6875rem !important; + min-width: 0; + padding: 0; + background-color: #f5f6fa; + border: 0; } + @media (min-width: 31.25rem) { + .highlight .table-wrapper td, + .highlight .table-wrapper pre { + font-size: 0.75rem !important; } } + .highlight .table-wrapper td.gl { + width: 1em; + padding-right: 0.75rem; + padding-left: 0.75rem; } + .highlight .table-wrapper pre { + margin: 0; + line-height: 2; } + +.code-example, +.listingblock > .title { + padding: 0.75rem; + margin-bottom: 0.75rem; + overflow: auto; + border: 1px solid #eeebee; + border-radius: 4px; } + .code-example + .highlighter-rouge, + .code-example + .sectionbody .listingblock, + .code-example + .content, + .code-example + figure.highlight, + .listingblock > .title + .highlighter-rouge, + .listingblock > .title + .sectionbody .listingblock, + .listingblock > .title + .content, + .listingblock > .title + figure.highlight { + position: relative; + margin-top: -1rem; + border-right: 1px solid #eeebee; + border-bottom: 1px solid #eeebee; + border-left: 1px solid #eeebee; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +code.language-mermaid { + padding: 0; + background-color: inherit; + border: 0; } + +.highlight, +pre.highlight { + background: #f5f6fa; + color: #5c5962; } + +.highlight pre { + background: #f5f6fa; } + +.text-grey-dk-000 { + color: #959396 !important; } + +.text-grey-dk-100 { + color: #5c5962 !important; } + +.text-grey-dk-200 { + color: #44434d !important; } + +.text-grey-dk-250 { + color: #302d36 !important; } + +.text-grey-dk-300 { + color: #27262b !important; } + +.text-grey-lt-000 { + color: #f5f6fa !important; } + +.text-grey-lt-100 { + color: #eeebee !important; } + +.text-grey-lt-200 { + color: #ecebed !important; } + +.text-grey-lt-300 { + color: #e6e1e8 !important; } + +.text-blue-000 { + color: #2c84fa !important; } + +.text-blue-100 { + color: #2869e6 !important; } + +.text-blue-200 { + color: #264caf !important; } + +.text-blue-300 { + color: #183385 !important; } + +.text-green-000 { + color: #41d693 !important; } + +.text-green-100 { + color: #11b584 !important; } + +.text-green-200 { + color: #009c7b !important; } + +.text-green-300 { + color: #026e57 !important; } + +.text-purple-000 { + color: #7253ed !important; } + +.text-purple-100 { + color: #5e41d0 !important; } + +.text-purple-200 { + color: #4e26af !important; } + +.text-purple-300 { + color: #381885 !important; } + +.text-yellow-000 { + color: #ffeb82 !important; } + +.text-yellow-100 { + color: #fadf50 !important; } + +.text-yellow-200 { + color: #f7d12e !important; } + +.text-yellow-300 { + color: #e7af06 !important; } + +.text-red-000 { + color: #f77e7e !important; } + +.text-red-100 { + color: #f96e65 !important; } + +.text-red-200 { + color: #e94c4c !important; } + +.text-red-300 { + color: #dd2e2e !important; } + +.bg-grey-dk-000 { + background-color: #959396 !important; } + +.bg-grey-dk-100 { + background-color: #5c5962 !important; } + +.bg-grey-dk-200 { + background-color: #44434d !important; } + +.bg-grey-dk-250 { + background-color: #302d36 !important; } + +.bg-grey-dk-300 { + background-color: #27262b !important; } + +.bg-grey-lt-000 { + background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { + background-color: #eeebee !important; } + +.bg-grey-lt-200 { + background-color: #ecebed !important; } + +.bg-grey-lt-300 { + background-color: #e6e1e8 !important; } + +.bg-blue-000 { + background-color: #2c84fa !important; } + +.bg-blue-100 { + background-color: #2869e6 !important; } + +.bg-blue-200 { + background-color: #264caf !important; } + +.bg-blue-300 { + background-color: #183385 !important; } + +.bg-green-000 { + background-color: #41d693 !important; } + +.bg-green-100 { + background-color: #11b584 !important; } + +.bg-green-200 { + background-color: #009c7b !important; } + +.bg-green-300 { + background-color: #026e57 !important; } + +.bg-purple-000 { + background-color: #7253ed !important; } + +.bg-purple-100 { + background-color: #5e41d0 !important; } + +.bg-purple-200 { + background-color: #4e26af !important; } + +.bg-purple-300 { + background-color: #381885 !important; } + +.bg-yellow-000 { + background-color: #ffeb82 !important; } + +.bg-yellow-100 { + background-color: #fadf50 !important; } + +.bg-yellow-200 { + background-color: #f7d12e !important; } + +.bg-yellow-300 { + background-color: #e7af06 !important; } + +.bg-red-000 { + background-color: #f77e7e !important; } + +.bg-red-100 { + background-color: #f96e65 !important; } + +.bg-red-200 { + background-color: #e94c4c !important; } + +.bg-red-300 { + background-color: #dd2e2e !important; } + +.d-block { + display: block !important; } + +.d-flex { + display: flex !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-none { + display: none !important; } + +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 20rem) { + .d-xs-block { + display: block !important; } + + .d-xs-flex { + display: flex !important; } + + .d-xs-inline { + display: inline !important; } + + .d-xs-inline-block { + display: inline-block !important; } + + .d-xs-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 31.25rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 50rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 66.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +@media (min-width: 87.5rem) { + .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-none { + display: none !important; } } +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.flex-justify-start { + justify-content: flex-start !important; } + +.flex-justify-end { + justify-content: flex-end !important; } + +.flex-justify-between { + justify-content: space-between !important; } + +.flex-justify-around { + justify-content: space-around !important; } + +.v-align-baseline { + vertical-align: baseline !important; } + +.v-align-bottom { + vertical-align: bottom !important; } + +.v-align-middle { + vertical-align: middle !important; } + +.v-align-text-bottom { + vertical-align: text-bottom !important; } + +.v-align-text-top { + vertical-align: text-top !important; } + +.v-align-top { + vertical-align: top !important; } + +.fs-1 { + font-size: 0.5625rem !important; } + @media (min-width: 31.25rem) { + .fs-1 { + font-size: 0.625rem !important; } } + +.fs-2 { + font-size: 0.6875rem !important; } + @media (min-width: 31.25rem) { + .fs-2 { + font-size: 0.75rem !important; } } + +.fs-3 { + font-size: 0.75rem !important; } + @media (min-width: 31.25rem) { + .fs-3 { + font-size: 0.875rem !important; } } + +.fs-4 { + font-size: 0.875rem !important; } + @media (min-width: 31.25rem) { + .fs-4 { + font-size: 1rem !important; } } + +.fs-5 { + font-size: 1rem !important; } + @media (min-width: 31.25rem) { + .fs-5 { + font-size: 1.125rem !important; } } + +.fs-6 { + font-size: 1.125rem !important; } + @media (min-width: 31.25rem) { + .fs-6 { + font-size: 1.5rem !important; + line-height: 1.25; } } + +.fs-7 { + font-size: 1.5rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-7 { + font-size: 2rem !important; } } + +.fs-8 { + font-size: 2rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-8 { + font-size: 2.25rem !important; } } + +.fs-9 { + font-size: 2.25rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-9 { + font-size: 2.625rem !important; } } + +.fs-10 { + font-size: 2.625rem !important; + line-height: 1.25; } + @media (min-width: 31.25rem) { + .fs-10 { + font-size: 3rem !important; } } + +.fw-300 { + font-weight: 300 !important; } + +.fw-400 { + font-weight: 400 !important; } + +.fw-500 { + font-weight: 500 !important; } + +.fw-700 { + font-weight: 700 !important; } + +.lh-0 { + line-height: 0 !important; } + +.lh-default { + line-height: 1.4; } + +.lh-tight { + line-height: 1.25; } + +.ls-5 { + letter-spacing: 0.05em !important; } + +.ls-10 { + letter-spacing: 0.1em !important; } + +.ls-0 { + letter-spacing: 0 !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.list-style-none { + padding: 0 !important; + margin: 0 !important; + list-style: none !important; } + .list-style-none li::before { + display: none !important; } + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0 { + margin-top: 0 !important; } + +.mr-0 { + margin-right: 0 !important; } + +.mb-0 { + margin-bottom: 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; } + +.mxn-0 { + margin-right: -0 !important; + margin-left: -0 !important; } + +.mx-0-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1 { + margin-top: 0.25rem !important; } + +.mr-1 { + margin-right: 0.25rem !important; } + +.mb-1 { + margin-bottom: 0.25rem !important; } + +.ml-1 { + margin-left: 0.25rem !important; } + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + +.mxn-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } + +.mx-1-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2 { + margin-top: 0.5rem !important; } + +.mr-2 { + margin-right: 0.5rem !important; } + +.mb-2 { + margin-bottom: 0.5rem !important; } + +.ml-2 { + margin-left: 0.5rem !important; } + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + +.mxn-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } + +.mx-2-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-3 { + margin: 0.75rem !important; } + +.mt-3 { + margin-top: 0.75rem !important; } + +.mr-3 { + margin-right: 0.75rem !important; } + +.mb-3 { + margin-bottom: 0.75rem !important; } + +.ml-3 { + margin-left: 0.75rem !important; } + +.mx-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + +.mxn-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } + +.mx-3-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-4 { + margin: 1rem !important; } + +.mt-4 { + margin-top: 1rem !important; } + +.mr-4 { + margin-right: 1rem !important; } + +.mb-4 { + margin-bottom: 1rem !important; } + +.ml-4 { + margin-left: 1rem !important; } + +.mx-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + +.mxn-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } + +.mx-4-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-5 { + margin: 1.5rem !important; } + +.mt-5 { + margin-top: 1.5rem !important; } + +.mr-5 { + margin-right: 1.5rem !important; } + +.mb-5 { + margin-bottom: 1.5rem !important; } + +.ml-5 { + margin-left: 1.5rem !important; } + +.mx-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + +.my-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + +.mxn-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } + +.mx-5-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-6 { + margin: 2rem !important; } + +.mt-6 { + margin-top: 2rem !important; } + +.mr-6 { + margin-right: 2rem !important; } + +.mb-6 { + margin-bottom: 2rem !important; } + +.ml-6 { + margin-left: 2rem !important; } + +.mx-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + +.my-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + +.mxn-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } + +.mx-6-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-7 { + margin: 2.5rem !important; } + +.mt-7 { + margin-top: 2.5rem !important; } + +.mr-7 { + margin-right: 2.5rem !important; } + +.mb-7 { + margin-bottom: 2.5rem !important; } + +.ml-7 { + margin-left: 2.5rem !important; } + +.mx-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + +.my-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + +.mxn-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } + +.mx-7-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-8 { + margin: 3rem !important; } + +.mt-8 { + margin-top: 3rem !important; } + +.mr-8 { + margin-right: 3rem !important; } + +.mb-8 { + margin-bottom: 3rem !important; } + +.ml-8 { + margin-left: 3rem !important; } + +.mx-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + +.my-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + +.mxn-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } + +.mx-8-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-9 { + margin: 3.5rem !important; } + +.mt-9 { + margin-top: 3.5rem !important; } + +.mr-9 { + margin-right: 3.5rem !important; } + +.mb-9 { + margin-bottom: 3.5rem !important; } + +.ml-9 { + margin-left: 3.5rem !important; } + +.mx-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + +.my-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + +.mxn-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } + +.mx-9-auto { + margin-right: auto !important; + margin-left: auto !important; } + +.m-10 { + margin: 4rem !important; } + +.mt-10 { + margin-top: 4rem !important; } + +.mr-10 { + margin-right: 4rem !important; } + +.mb-10 { + margin-bottom: 4rem !important; } + +.ml-10 { + margin-left: 4rem !important; } + +.mx-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + +.my-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + +.mxn-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } + +.mx-10-auto { + margin-right: auto !important; + margin-left: auto !important; } + +@media (min-width: 20rem) { + .m-xs-0 { + margin: 0 !important; } + + .mt-xs-0 { + margin-top: 0 !important; } + + .mr-xs-0 { + margin-right: 0 !important; } + + .mb-xs-0 { + margin-bottom: 0 !important; } + + .ml-xs-0 { + margin-left: 0 !important; } + + .mx-xs-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + .my-xs-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + .mxn-xs-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 20rem) { + .m-xs-1 { + margin: 0.25rem !important; } + + .mt-xs-1 { + margin-top: 0.25rem !important; } + + .mr-xs-1 { + margin-right: 0.25rem !important; } + + .mb-xs-1 { + margin-bottom: 0.25rem !important; } + + .ml-xs-1 { + margin-left: 0.25rem !important; } + + .mx-xs-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xs-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xs-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 20rem) { + .m-xs-2 { + margin: 0.5rem !important; } + + .mt-xs-2 { + margin-top: 0.5rem !important; } + + .mr-xs-2 { + margin-right: 0.5rem !important; } + + .mb-xs-2 { + margin-bottom: 0.5rem !important; } + + .ml-xs-2 { + margin-left: 0.5rem !important; } + + .mx-xs-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xs-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xs-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-3 { + margin: 0.75rem !important; } + + .mt-xs-3 { + margin-top: 0.75rem !important; } + + .mr-xs-3 { + margin-right: 0.75rem !important; } + + .mb-xs-3 { + margin-bottom: 0.75rem !important; } + + .ml-xs-3 { + margin-left: 0.75rem !important; } + + .mx-xs-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xs-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xs-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 20rem) { + .m-xs-4 { + margin: 1rem !important; } + + .mt-xs-4 { + margin-top: 1rem !important; } + + .mr-xs-4 { + margin-right: 1rem !important; } + + .mb-xs-4 { + margin-bottom: 1rem !important; } + + .ml-xs-4 { + margin-left: 1rem !important; } + + .mx-xs-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xs-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xs-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 20rem) { + .m-xs-5 { + margin: 1.5rem !important; } + + .mt-xs-5 { + margin-top: 1.5rem !important; } + + .mr-xs-5 { + margin-right: 1.5rem !important; } + + .mb-xs-5 { + margin-bottom: 1.5rem !important; } + + .ml-xs-5 { + margin-left: 1.5rem !important; } + + .mx-xs-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xs-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xs-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-6 { + margin: 2rem !important; } + + .mt-xs-6 { + margin-top: 2rem !important; } + + .mr-xs-6 { + margin-right: 2rem !important; } + + .mb-xs-6 { + margin-bottom: 2rem !important; } + + .ml-xs-6 { + margin-left: 2rem !important; } + + .mx-xs-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xs-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xs-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 20rem) { + .m-xs-7 { + margin: 2.5rem !important; } + + .mt-xs-7 { + margin-top: 2.5rem !important; } + + .mr-xs-7 { + margin-right: 2.5rem !important; } + + .mb-xs-7 { + margin-bottom: 2.5rem !important; } + + .ml-xs-7 { + margin-left: 2.5rem !important; } + + .mx-xs-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xs-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xs-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-8 { + margin: 3rem !important; } + + .mt-xs-8 { + margin-top: 3rem !important; } + + .mr-xs-8 { + margin-right: 3rem !important; } + + .mb-xs-8 { + margin-bottom: 3rem !important; } + + .ml-xs-8 { + margin-left: 3rem !important; } + + .mx-xs-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xs-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xs-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 20rem) { + .m-xs-9 { + margin: 3.5rem !important; } + + .mt-xs-9 { + margin-top: 3.5rem !important; } + + .mr-xs-9 { + margin-right: 3.5rem !important; } + + .mb-xs-9 { + margin-bottom: 3.5rem !important; } + + .ml-xs-9 { + margin-left: 3.5rem !important; } + + .mx-xs-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xs-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xs-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 20rem) { + .m-xs-10 { + margin: 4rem !important; } + + .mt-xs-10 { + margin-top: 4rem !important; } + + .mr-xs-10 { + margin-right: 4rem !important; } + + .mb-xs-10 { + margin-bottom: 4rem !important; } + + .ml-xs-10 { + margin-left: 4rem !important; } + + .mx-xs-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xs-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xs-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-0 { + margin: 0 !important; } + + .mt-sm-0 { + margin-top: 0 !important; } + + .mr-sm-0 { + margin-right: 0 !important; } + + .mb-sm-0 { + margin-bottom: 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; } + + .mxn-sm-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 31.25rem) { + .m-sm-1 { + margin: 0.25rem !important; } + + .mt-sm-1 { + margin-top: 0.25rem !important; } + + .mr-sm-1 { + margin-right: 0.25rem !important; } + + .mb-sm-1 { + margin-bottom: 0.25rem !important; } + + .ml-sm-1 { + margin-left: 0.25rem !important; } + + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-sm-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-2 { + margin: 0.5rem !important; } + + .mt-sm-2 { + margin-top: 0.5rem !important; } + + .mr-sm-2 { + margin-right: 0.5rem !important; } + + .mb-sm-2 { + margin-bottom: 0.5rem !important; } + + .ml-sm-2 { + margin-left: 0.5rem !important; } + + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-sm-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-3 { + margin: 0.75rem !important; } + + .mt-sm-3 { + margin-top: 0.75rem !important; } + + .mr-sm-3 { + margin-right: 0.75rem !important; } + + .mb-sm-3 { + margin-bottom: 0.75rem !important; } + + .ml-sm-3 { + margin-left: 0.75rem !important; } + + .mx-sm-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-sm-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-sm-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-4 { + margin: 1rem !important; } + + .mt-sm-4 { + margin-top: 1rem !important; } + + .mr-sm-4 { + margin-right: 1rem !important; } + + .mb-sm-4 { + margin-bottom: 1rem !important; } + + .ml-sm-4 { + margin-left: 1rem !important; } + + .mx-sm-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-sm-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-sm-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-5 { + margin: 1.5rem !important; } + + .mt-sm-5 { + margin-top: 1.5rem !important; } + + .mr-sm-5 { + margin-right: 1.5rem !important; } + + .mb-sm-5 { + margin-bottom: 1.5rem !important; } + + .ml-sm-5 { + margin-left: 1.5rem !important; } + + .mx-sm-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-sm-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-sm-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-6 { + margin: 2rem !important; } + + .mt-sm-6 { + margin-top: 2rem !important; } + + .mr-sm-6 { + margin-right: 2rem !important; } + + .mb-sm-6 { + margin-bottom: 2rem !important; } + + .ml-sm-6 { + margin-left: 2rem !important; } + + .mx-sm-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-sm-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-sm-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-7 { + margin: 2.5rem !important; } + + .mt-sm-7 { + margin-top: 2.5rem !important; } + + .mr-sm-7 { + margin-right: 2.5rem !important; } + + .mb-sm-7 { + margin-bottom: 2.5rem !important; } + + .ml-sm-7 { + margin-left: 2.5rem !important; } + + .mx-sm-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-sm-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-sm-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-8 { + margin: 3rem !important; } + + .mt-sm-8 { + margin-top: 3rem !important; } + + .mr-sm-8 { + margin-right: 3rem !important; } + + .mb-sm-8 { + margin-bottom: 3rem !important; } + + .ml-sm-8 { + margin-left: 3rem !important; } + + .mx-sm-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-sm-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-sm-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-9 { + margin: 3.5rem !important; } + + .mt-sm-9 { + margin-top: 3.5rem !important; } + + .mr-sm-9 { + margin-right: 3.5rem !important; } + + .mb-sm-9 { + margin-bottom: 3.5rem !important; } + + .ml-sm-9 { + margin-left: 3.5rem !important; } + + .mx-sm-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-sm-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-sm-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 31.25rem) { + .m-sm-10 { + margin: 4rem !important; } + + .mt-sm-10 { + margin-top: 4rem !important; } + + .mr-sm-10 { + margin-right: 4rem !important; } + + .mb-sm-10 { + margin-bottom: 4rem !important; } + + .ml-sm-10 { + margin-left: 4rem !important; } + + .mx-sm-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-sm-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-sm-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 50rem) { + .m-md-0 { + margin: 0 !important; } + + .mt-md-0 { + margin-top: 0 !important; } + + .mr-md-0 { + margin-right: 0 !important; } + + .mb-md-0 { + margin-bottom: 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; } + + .mxn-md-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 50rem) { + .m-md-1 { + margin: 0.25rem !important; } + + .mt-md-1 { + margin-top: 0.25rem !important; } + + .mr-md-1 { + margin-right: 0.25rem !important; } + + .mb-md-1 { + margin-bottom: 0.25rem !important; } + + .ml-md-1 { + margin-left: 0.25rem !important; } + + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-md-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 50rem) { + .m-md-2 { + margin: 0.5rem !important; } + + .mt-md-2 { + margin-top: 0.5rem !important; } + + .mr-md-2 { + margin-right: 0.5rem !important; } + + .mb-md-2 { + margin-bottom: 0.5rem !important; } + + .ml-md-2 { + margin-left: 0.5rem !important; } + + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-md-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 50rem) { + .m-md-3 { + margin: 0.75rem !important; } + + .mt-md-3 { + margin-top: 0.75rem !important; } + + .mr-md-3 { + margin-right: 0.75rem !important; } + + .mb-md-3 { + margin-bottom: 0.75rem !important; } + + .ml-md-3 { + margin-left: 0.75rem !important; } + + .mx-md-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-md-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-md-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 50rem) { + .m-md-4 { + margin: 1rem !important; } + + .mt-md-4 { + margin-top: 1rem !important; } + + .mr-md-4 { + margin-right: 1rem !important; } + + .mb-md-4 { + margin-bottom: 1rem !important; } + + .ml-md-4 { + margin-left: 1rem !important; } + + .mx-md-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-md-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-md-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 50rem) { + .m-md-5 { + margin: 1.5rem !important; } + + .mt-md-5 { + margin-top: 1.5rem !important; } + + .mr-md-5 { + margin-right: 1.5rem !important; } + + .mb-md-5 { + margin-bottom: 1.5rem !important; } + + .ml-md-5 { + margin-left: 1.5rem !important; } + + .mx-md-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-md-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-md-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 50rem) { + .m-md-6 { + margin: 2rem !important; } + + .mt-md-6 { + margin-top: 2rem !important; } + + .mr-md-6 { + margin-right: 2rem !important; } + + .mb-md-6 { + margin-bottom: 2rem !important; } + + .ml-md-6 { + margin-left: 2rem !important; } + + .mx-md-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-md-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-md-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 50rem) { + .m-md-7 { + margin: 2.5rem !important; } + + .mt-md-7 { + margin-top: 2.5rem !important; } + + .mr-md-7 { + margin-right: 2.5rem !important; } + + .mb-md-7 { + margin-bottom: 2.5rem !important; } + + .ml-md-7 { + margin-left: 2.5rem !important; } + + .mx-md-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-md-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-md-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 50rem) { + .m-md-8 { + margin: 3rem !important; } + + .mt-md-8 { + margin-top: 3rem !important; } + + .mr-md-8 { + margin-right: 3rem !important; } + + .mb-md-8 { + margin-bottom: 3rem !important; } + + .ml-md-8 { + margin-left: 3rem !important; } + + .mx-md-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-md-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-md-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 50rem) { + .m-md-9 { + margin: 3.5rem !important; } + + .mt-md-9 { + margin-top: 3.5rem !important; } + + .mr-md-9 { + margin-right: 3.5rem !important; } + + .mb-md-9 { + margin-bottom: 3.5rem !important; } + + .ml-md-9 { + margin-left: 3.5rem !important; } + + .mx-md-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-md-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-md-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 50rem) { + .m-md-10 { + margin: 4rem !important; } + + .mt-md-10 { + margin-top: 4rem !important; } + + .mr-md-10 { + margin-right: 4rem !important; } + + .mb-md-10 { + margin-bottom: 4rem !important; } + + .ml-md-10 { + margin-left: 4rem !important; } + + .mx-md-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-md-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-md-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-0 { + margin: 0 !important; } + + .mt-lg-0 { + margin-top: 0 !important; } + + .mr-lg-0 { + margin-right: 0 !important; } + + .mb-lg-0 { + margin-bottom: 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; } + + .mxn-lg-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 66.5rem) { + .m-lg-1 { + margin: 0.25rem !important; } + + .mt-lg-1 { + margin-top: 0.25rem !important; } + + .mr-lg-1 { + margin-right: 0.25rem !important; } + + .mb-lg-1 { + margin-bottom: 0.25rem !important; } + + .ml-lg-1 { + margin-left: 0.25rem !important; } + + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-lg-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-2 { + margin: 0.5rem !important; } + + .mt-lg-2 { + margin-top: 0.5rem !important; } + + .mr-lg-2 { + margin-right: 0.5rem !important; } + + .mb-lg-2 { + margin-bottom: 0.5rem !important; } + + .ml-lg-2 { + margin-left: 0.5rem !important; } + + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-lg-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-3 { + margin: 0.75rem !important; } + + .mt-lg-3 { + margin-top: 0.75rem !important; } + + .mr-lg-3 { + margin-right: 0.75rem !important; } + + .mb-lg-3 { + margin-bottom: 0.75rem !important; } + + .ml-lg-3 { + margin-left: 0.75rem !important; } + + .mx-lg-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-lg-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-lg-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-4 { + margin: 1rem !important; } + + .mt-lg-4 { + margin-top: 1rem !important; } + + .mr-lg-4 { + margin-right: 1rem !important; } + + .mb-lg-4 { + margin-bottom: 1rem !important; } + + .ml-lg-4 { + margin-left: 1rem !important; } + + .mx-lg-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-lg-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-lg-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-5 { + margin: 1.5rem !important; } + + .mt-lg-5 { + margin-top: 1.5rem !important; } + + .mr-lg-5 { + margin-right: 1.5rem !important; } + + .mb-lg-5 { + margin-bottom: 1.5rem !important; } + + .ml-lg-5 { + margin-left: 1.5rem !important; } + + .mx-lg-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-lg-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-lg-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-6 { + margin: 2rem !important; } + + .mt-lg-6 { + margin-top: 2rem !important; } + + .mr-lg-6 { + margin-right: 2rem !important; } + + .mb-lg-6 { + margin-bottom: 2rem !important; } + + .ml-lg-6 { + margin-left: 2rem !important; } + + .mx-lg-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-lg-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-lg-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-7 { + margin: 2.5rem !important; } + + .mt-lg-7 { + margin-top: 2.5rem !important; } + + .mr-lg-7 { + margin-right: 2.5rem !important; } + + .mb-lg-7 { + margin-bottom: 2.5rem !important; } + + .ml-lg-7 { + margin-left: 2.5rem !important; } + + .mx-lg-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-lg-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-lg-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-8 { + margin: 3rem !important; } + + .mt-lg-8 { + margin-top: 3rem !important; } + + .mr-lg-8 { + margin-right: 3rem !important; } + + .mb-lg-8 { + margin-bottom: 3rem !important; } + + .ml-lg-8 { + margin-left: 3rem !important; } + + .mx-lg-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-lg-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-lg-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-9 { + margin: 3.5rem !important; } + + .mt-lg-9 { + margin-top: 3.5rem !important; } + + .mr-lg-9 { + margin-right: 3.5rem !important; } + + .mb-lg-9 { + margin-bottom: 3.5rem !important; } + + .ml-lg-9 { + margin-left: 3.5rem !important; } + + .mx-lg-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-lg-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-lg-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 66.5rem) { + .m-lg-10 { + margin: 4rem !important; } + + .mt-lg-10 { + margin-top: 4rem !important; } + + .mr-lg-10 { + margin-right: 4rem !important; } + + .mb-lg-10 { + margin-bottom: 4rem !important; } + + .ml-lg-10 { + margin-left: 4rem !important; } + + .mx-lg-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-lg-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-lg-10 { + margin-right: -4rem !important; + margin-left: -4rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-0 { + margin: 0 !important; } + + .mt-xl-0 { + margin-top: 0 !important; } + + .mr-xl-0 { + margin-right: 0 !important; } + + .mb-xl-0 { + margin-bottom: 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; } + + .mxn-xl-0 { + margin-right: -0 !important; + margin-left: -0 !important; } } +@media (min-width: 87.5rem) { + .m-xl-1 { + margin: 0.25rem !important; } + + .mt-xl-1 { + margin-top: 0.25rem !important; } + + .mr-xl-1 { + margin-right: 0.25rem !important; } + + .mb-xl-1 { + margin-bottom: 0.25rem !important; } + + .ml-xl-1 { + margin-left: 0.25rem !important; } + + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; } + + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } + + .mxn-xl-1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-2 { + margin: 0.5rem !important; } + + .mt-xl-2 { + margin-top: 0.5rem !important; } + + .mr-xl-2 { + margin-right: 0.5rem !important; } + + .mb-xl-2 { + margin-bottom: 0.5rem !important; } + + .ml-xl-2 { + margin-left: 0.5rem !important; } + + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } + + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } + + .mxn-xl-2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-3 { + margin: 0.75rem !important; } + + .mt-xl-3 { + margin-top: 0.75rem !important; } + + .mr-xl-3 { + margin-right: 0.75rem !important; } + + .mb-xl-3 { + margin-bottom: 0.75rem !important; } + + .ml-xl-3 { + margin-left: 0.75rem !important; } + + .mx-xl-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; } + + .my-xl-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; } + + .mxn-xl-3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-4 { + margin: 1rem !important; } + + .mt-xl-4 { + margin-top: 1rem !important; } + + .mr-xl-4 { + margin-right: 1rem !important; } + + .mb-xl-4 { + margin-bottom: 1rem !important; } + + .ml-xl-4 { + margin-left: 1rem !important; } + + .mx-xl-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; } + + .my-xl-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; } + + .mxn-xl-4 { + margin-right: -1rem !important; + margin-left: -1rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-5 { + margin: 1.5rem !important; } + + .mt-xl-5 { + margin-top: 1.5rem !important; } + + .mr-xl-5 { + margin-right: 1.5rem !important; } + + .mb-xl-5 { + margin-bottom: 1.5rem !important; } + + .ml-xl-5 { + margin-left: 1.5rem !important; } + + .mx-xl-5 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } + + .my-xl-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; } + + .mxn-xl-5 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-6 { + margin: 2rem !important; } + + .mt-xl-6 { + margin-top: 2rem !important; } + + .mr-xl-6 { + margin-right: 2rem !important; } + + .mb-xl-6 { + margin-bottom: 2rem !important; } + + .ml-xl-6 { + margin-left: 2rem !important; } + + .mx-xl-6 { + margin-right: 2rem !important; + margin-left: 2rem !important; } + + .my-xl-6 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; } + + .mxn-xl-6 { + margin-right: -2rem !important; + margin-left: -2rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-7 { + margin: 2.5rem !important; } + + .mt-xl-7 { + margin-top: 2.5rem !important; } + + .mr-xl-7 { + margin-right: 2.5rem !important; } + + .mb-xl-7 { + margin-bottom: 2.5rem !important; } + + .ml-xl-7 { + margin-left: 2.5rem !important; } + + .mx-xl-7 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; } + + .my-xl-7 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; } + + .mxn-xl-7 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-8 { + margin: 3rem !important; } + + .mt-xl-8 { + margin-top: 3rem !important; } + + .mr-xl-8 { + margin-right: 3rem !important; } + + .mb-xl-8 { + margin-bottom: 3rem !important; } + + .ml-xl-8 { + margin-left: 3rem !important; } + + .mx-xl-8 { + margin-right: 3rem !important; + margin-left: 3rem !important; } + + .my-xl-8 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; } + + .mxn-xl-8 { + margin-right: -3rem !important; + margin-left: -3rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-9 { + margin: 3.5rem !important; } + + .mt-xl-9 { + margin-top: 3.5rem !important; } + + .mr-xl-9 { + margin-right: 3.5rem !important; } + + .mb-xl-9 { + margin-bottom: 3.5rem !important; } + + .ml-xl-9 { + margin-left: 3.5rem !important; } + + .mx-xl-9 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; } + + .my-xl-9 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; } + + .mxn-xl-9 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; } } +@media (min-width: 87.5rem) { + .m-xl-10 { + margin: 4rem !important; } + + .mt-xl-10 { + margin-top: 4rem !important; } + + .mr-xl-10 { + margin-right: 4rem !important; } + + .mb-xl-10 { + margin-bottom: 4rem !important; } + + .ml-xl-10 { + margin-left: 4rem !important; } + + .mx-xl-10 { + margin-right: 4rem !important; + margin-left: 4rem !important; } + + .my-xl-10 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; } + + .mxn-xl-10 { + margin-right: -4rem !important; + margin-left: -4rem !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: 0.25rem !important; } + +.pt-1 { + padding-top: 0.25rem !important; } + +.pr-1 { + padding-right: 0.25rem !important; } + +.pb-1 { + padding-bottom: 0.25rem !important; } + +.pl-1 { + padding-left: 0.25rem !important; } + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2 { + padding-top: 0.5rem !important; } + +.pr-2 { + padding-right: 0.5rem !important; } + +.pb-2 { + padding-bottom: 0.5rem !important; } + +.pl-2 { + padding-left: 0.5rem !important; } + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + +.p-3 { + padding: 0.75rem !important; } + +.pt-3 { + padding-top: 0.75rem !important; } + +.pr-3 { + padding-right: 0.75rem !important; } + +.pb-3 { + padding-bottom: 0.75rem !important; } + +.pl-3 { + padding-left: 0.75rem !important; } + +.px-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + +.p-4 { + padding: 1rem !important; } + +.pt-4 { + padding-top: 1rem !important; } + +.pr-4 { + padding-right: 1rem !important; } + +.pb-4 { + padding-bottom: 1rem !important; } + +.pl-4 { + padding-left: 1rem !important; } + +.px-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + +.p-5 { + padding: 1.5rem !important; } + +.pt-5 { + padding-top: 1.5rem !important; } + +.pr-5 { + padding-right: 1.5rem !important; } + +.pb-5 { + padding-bottom: 1.5rem !important; } + +.pl-5 { + padding-left: 1.5rem !important; } + +.px-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + +.py-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + +.p-6 { + padding: 2rem !important; } + +.pt-6 { + padding-top: 2rem !important; } + +.pr-6 { + padding-right: 2rem !important; } + +.pb-6 { + padding-bottom: 2rem !important; } + +.pl-6 { + padding-left: 2rem !important; } + +.px-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + +.py-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + +.p-7 { + padding: 2.5rem !important; } + +.pt-7 { + padding-top: 2.5rem !important; } + +.pr-7 { + padding-right: 2.5rem !important; } + +.pb-7 { + padding-bottom: 2.5rem !important; } + +.pl-7 { + padding-left: 2.5rem !important; } + +.px-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + +.py-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + +.p-8 { + padding: 3rem !important; } + +.pt-8 { + padding-top: 3rem !important; } + +.pr-8 { + padding-right: 3rem !important; } + +.pb-8 { + padding-bottom: 3rem !important; } + +.pl-8 { + padding-left: 3rem !important; } + +.px-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + +.py-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + +.p-9 { + padding: 3.5rem !important; } + +.pt-9 { + padding-top: 3.5rem !important; } + +.pr-9 { + padding-right: 3.5rem !important; } + +.pb-9 { + padding-bottom: 3.5rem !important; } + +.pl-9 { + padding-left: 3.5rem !important; } + +.px-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + +.py-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + +.p-10 { + padding: 4rem !important; } + +.pt-10 { + padding-top: 4rem !important; } + +.pr-10 { + padding-right: 4rem !important; } + +.pb-10 { + padding-bottom: 4rem !important; } + +.pl-10 { + padding-left: 4rem !important; } + +.px-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + +.py-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { + .p-xs-0 { + padding: 0 !important; } + + .pt-xs-0 { + padding-top: 0 !important; } + + .pr-xs-0 { + padding-right: 0 !important; } + + .pb-xs-0 { + padding-bottom: 0 !important; } + + .pl-xs-0 { + padding-left: 0 !important; } + + .px-xs-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + .py-xs-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + .p-xs-1 { + padding: 0.25rem !important; } + + .pt-xs-1 { + padding-top: 0.25rem !important; } + + .pr-xs-1 { + padding-right: 0.25rem !important; } + + .pb-xs-1 { + padding-bottom: 0.25rem !important; } + + .pl-xs-1 { + padding-left: 0.25rem !important; } + + .px-xs-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xs-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xs-2 { + padding: 0.5rem !important; } + + .pt-xs-2 { + padding-top: 0.5rem !important; } + + .pr-xs-2 { + padding-right: 0.5rem !important; } + + .pb-xs-2 { + padding-bottom: 0.5rem !important; } + + .pl-xs-2 { + padding-left: 0.5rem !important; } + + .px-xs-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xs-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xs-3 { + padding: 0.75rem !important; } + + .pt-xs-3 { + padding-top: 0.75rem !important; } + + .pr-xs-3 { + padding-right: 0.75rem !important; } + + .pb-xs-3 { + padding-bottom: 0.75rem !important; } + + .pl-xs-3 { + padding-left: 0.75rem !important; } + + .px-xs-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xs-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xs-4 { + padding: 1rem !important; } + + .pt-xs-4 { + padding-top: 1rem !important; } + + .pr-xs-4 { + padding-right: 1rem !important; } + + .pb-xs-4 { + padding-bottom: 1rem !important; } + + .pl-xs-4 { + padding-left: 1rem !important; } + + .px-xs-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xs-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xs-5 { + padding: 1.5rem !important; } + + .pt-xs-5 { + padding-top: 1.5rem !important; } + + .pr-xs-5 { + padding-right: 1.5rem !important; } + + .pb-xs-5 { + padding-bottom: 1.5rem !important; } + + .pl-xs-5 { + padding-left: 1.5rem !important; } + + .px-xs-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xs-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xs-6 { + padding: 2rem !important; } + + .pt-xs-6 { + padding-top: 2rem !important; } + + .pr-xs-6 { + padding-right: 2rem !important; } + + .pb-xs-6 { + padding-bottom: 2rem !important; } + + .pl-xs-6 { + padding-left: 2rem !important; } + + .px-xs-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xs-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xs-7 { + padding: 2.5rem !important; } + + .pt-xs-7 { + padding-top: 2.5rem !important; } + + .pr-xs-7 { + padding-right: 2.5rem !important; } + + .pb-xs-7 { + padding-bottom: 2.5rem !important; } + + .pl-xs-7 { + padding-left: 2.5rem !important; } + + .px-xs-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xs-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xs-8 { + padding: 3rem !important; } + + .pt-xs-8 { + padding-top: 3rem !important; } + + .pr-xs-8 { + padding-right: 3rem !important; } + + .pb-xs-8 { + padding-bottom: 3rem !important; } + + .pl-xs-8 { + padding-left: 3rem !important; } + + .px-xs-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xs-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xs-9 { + padding: 3.5rem !important; } + + .pt-xs-9 { + padding-top: 3.5rem !important; } + + .pr-xs-9 { + padding-right: 3.5rem !important; } + + .pb-xs-9 { + padding-bottom: 3.5rem !important; } + + .pl-xs-9 { + padding-left: 3.5rem !important; } + + .px-xs-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xs-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xs-10 { + padding: 4rem !important; } + + .pt-xs-10 { + padding-top: 4rem !important; } + + .pr-xs-10 { + padding-right: 4rem !important; } + + .pb-xs-10 { + padding-bottom: 4rem !important; } + + .pl-xs-10 { + padding-left: 4rem !important; } + + .px-xs-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xs-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 31.25rem) { + .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: 0.25rem !important; } + + .pt-sm-1 { + padding-top: 0.25rem !important; } + + .pr-sm-1 { + padding-right: 0.25rem !important; } + + .pb-sm-1 { + padding-bottom: 0.25rem !important; } + + .pl-sm-1 { + padding-left: 0.25rem !important; } + + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-sm-2 { + padding: 0.5rem !important; } + + .pt-sm-2 { + padding-top: 0.5rem !important; } + + .pr-sm-2 { + padding-right: 0.5rem !important; } + + .pb-sm-2 { + padding-bottom: 0.5rem !important; } + + .pl-sm-2 { + padding-left: 0.5rem !important; } + + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-sm-3 { + padding: 0.75rem !important; } + + .pt-sm-3 { + padding-top: 0.75rem !important; } + + .pr-sm-3 { + padding-right: 0.75rem !important; } + + .pb-sm-3 { + padding-bottom: 0.75rem !important; } + + .pl-sm-3 { + padding-left: 0.75rem !important; } + + .px-sm-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-sm-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-sm-4 { + padding: 1rem !important; } + + .pt-sm-4 { + padding-top: 1rem !important; } + + .pr-sm-4 { + padding-right: 1rem !important; } + + .pb-sm-4 { + padding-bottom: 1rem !important; } + + .pl-sm-4 { + padding-left: 1rem !important; } + + .px-sm-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-sm-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-sm-5 { + padding: 1.5rem !important; } + + .pt-sm-5 { + padding-top: 1.5rem !important; } + + .pr-sm-5 { + padding-right: 1.5rem !important; } + + .pb-sm-5 { + padding-bottom: 1.5rem !important; } + + .pl-sm-5 { + padding-left: 1.5rem !important; } + + .px-sm-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-sm-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-sm-6 { + padding: 2rem !important; } + + .pt-sm-6 { + padding-top: 2rem !important; } + + .pr-sm-6 { + padding-right: 2rem !important; } + + .pb-sm-6 { + padding-bottom: 2rem !important; } + + .pl-sm-6 { + padding-left: 2rem !important; } + + .px-sm-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-sm-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-sm-7 { + padding: 2.5rem !important; } + + .pt-sm-7 { + padding-top: 2.5rem !important; } + + .pr-sm-7 { + padding-right: 2.5rem !important; } + + .pb-sm-7 { + padding-bottom: 2.5rem !important; } + + .pl-sm-7 { + padding-left: 2.5rem !important; } + + .px-sm-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-sm-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-sm-8 { + padding: 3rem !important; } + + .pt-sm-8 { + padding-top: 3rem !important; } + + .pr-sm-8 { + padding-right: 3rem !important; } + + .pb-sm-8 { + padding-bottom: 3rem !important; } + + .pl-sm-8 { + padding-left: 3rem !important; } + + .px-sm-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-sm-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-sm-9 { + padding: 3.5rem !important; } + + .pt-sm-9 { + padding-top: 3.5rem !important; } + + .pr-sm-9 { + padding-right: 3.5rem !important; } + + .pb-sm-9 { + padding-bottom: 3.5rem !important; } + + .pl-sm-9 { + padding-left: 3.5rem !important; } + + .px-sm-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-sm-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-sm-10 { + padding: 4rem !important; } + + .pt-sm-10 { + padding-top: 4rem !important; } + + .pr-sm-10 { + padding-right: 4rem !important; } + + .pb-sm-10 { + padding-bottom: 4rem !important; } + + .pl-sm-10 { + padding-left: 4rem !important; } + + .px-sm-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-sm-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 50rem) { + .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: 0.25rem !important; } + + .pt-md-1 { + padding-top: 0.25rem !important; } + + .pr-md-1 { + padding-right: 0.25rem !important; } + + .pb-md-1 { + padding-bottom: 0.25rem !important; } + + .pl-md-1 { + padding-left: 0.25rem !important; } + + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-md-2 { + padding: 0.5rem !important; } + + .pt-md-2 { + padding-top: 0.5rem !important; } + + .pr-md-2 { + padding-right: 0.5rem !important; } + + .pb-md-2 { + padding-bottom: 0.5rem !important; } + + .pl-md-2 { + padding-left: 0.5rem !important; } + + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-md-3 { + padding: 0.75rem !important; } + + .pt-md-3 { + padding-top: 0.75rem !important; } + + .pr-md-3 { + padding-right: 0.75rem !important; } + + .pb-md-3 { + padding-bottom: 0.75rem !important; } + + .pl-md-3 { + padding-left: 0.75rem !important; } + + .px-md-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-md-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-md-4 { + padding: 1rem !important; } + + .pt-md-4 { + padding-top: 1rem !important; } + + .pr-md-4 { + padding-right: 1rem !important; } + + .pb-md-4 { + padding-bottom: 1rem !important; } + + .pl-md-4 { + padding-left: 1rem !important; } + + .px-md-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-md-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-md-5 { + padding: 1.5rem !important; } + + .pt-md-5 { + padding-top: 1.5rem !important; } + + .pr-md-5 { + padding-right: 1.5rem !important; } + + .pb-md-5 { + padding-bottom: 1.5rem !important; } + + .pl-md-5 { + padding-left: 1.5rem !important; } + + .px-md-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-md-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-md-6 { + padding: 2rem !important; } + + .pt-md-6 { + padding-top: 2rem !important; } + + .pr-md-6 { + padding-right: 2rem !important; } + + .pb-md-6 { + padding-bottom: 2rem !important; } + + .pl-md-6 { + padding-left: 2rem !important; } + + .px-md-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-md-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-md-7 { + padding: 2.5rem !important; } + + .pt-md-7 { + padding-top: 2.5rem !important; } + + .pr-md-7 { + padding-right: 2.5rem !important; } + + .pb-md-7 { + padding-bottom: 2.5rem !important; } + + .pl-md-7 { + padding-left: 2.5rem !important; } + + .px-md-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-md-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-md-8 { + padding: 3rem !important; } + + .pt-md-8 { + padding-top: 3rem !important; } + + .pr-md-8 { + padding-right: 3rem !important; } + + .pb-md-8 { + padding-bottom: 3rem !important; } + + .pl-md-8 { + padding-left: 3rem !important; } + + .px-md-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-md-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-md-9 { + padding: 3.5rem !important; } + + .pt-md-9 { + padding-top: 3.5rem !important; } + + .pr-md-9 { + padding-right: 3.5rem !important; } + + .pb-md-9 { + padding-bottom: 3.5rem !important; } + + .pl-md-9 { + padding-left: 3.5rem !important; } + + .px-md-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-md-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-md-10 { + padding: 4rem !important; } + + .pt-md-10 { + padding-top: 4rem !important; } + + .pr-md-10 { + padding-right: 4rem !important; } + + .pb-md-10 { + padding-bottom: 4rem !important; } + + .pl-md-10 { + padding-left: 4rem !important; } + + .px-md-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-md-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 66.5rem) { + .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: 0.25rem !important; } + + .pt-lg-1 { + padding-top: 0.25rem !important; } + + .pr-lg-1 { + padding-right: 0.25rem !important; } + + .pb-lg-1 { + padding-bottom: 0.25rem !important; } + + .pl-lg-1 { + padding-left: 0.25rem !important; } + + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-lg-2 { + padding: 0.5rem !important; } + + .pt-lg-2 { + padding-top: 0.5rem !important; } + + .pr-lg-2 { + padding-right: 0.5rem !important; } + + .pb-lg-2 { + padding-bottom: 0.5rem !important; } + + .pl-lg-2 { + padding-left: 0.5rem !important; } + + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-lg-3 { + padding: 0.75rem !important; } + + .pt-lg-3 { + padding-top: 0.75rem !important; } + + .pr-lg-3 { + padding-right: 0.75rem !important; } + + .pb-lg-3 { + padding-bottom: 0.75rem !important; } + + .pl-lg-3 { + padding-left: 0.75rem !important; } + + .px-lg-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-lg-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-lg-4 { + padding: 1rem !important; } + + .pt-lg-4 { + padding-top: 1rem !important; } + + .pr-lg-4 { + padding-right: 1rem !important; } + + .pb-lg-4 { + padding-bottom: 1rem !important; } + + .pl-lg-4 { + padding-left: 1rem !important; } + + .px-lg-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-lg-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-lg-5 { + padding: 1.5rem !important; } + + .pt-lg-5 { + padding-top: 1.5rem !important; } + + .pr-lg-5 { + padding-right: 1.5rem !important; } + + .pb-lg-5 { + padding-bottom: 1.5rem !important; } + + .pl-lg-5 { + padding-left: 1.5rem !important; } + + .px-lg-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-lg-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-lg-6 { + padding: 2rem !important; } + + .pt-lg-6 { + padding-top: 2rem !important; } + + .pr-lg-6 { + padding-right: 2rem !important; } + + .pb-lg-6 { + padding-bottom: 2rem !important; } + + .pl-lg-6 { + padding-left: 2rem !important; } + + .px-lg-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-lg-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-lg-7 { + padding: 2.5rem !important; } + + .pt-lg-7 { + padding-top: 2.5rem !important; } + + .pr-lg-7 { + padding-right: 2.5rem !important; } + + .pb-lg-7 { + padding-bottom: 2.5rem !important; } + + .pl-lg-7 { + padding-left: 2.5rem !important; } + + .px-lg-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-lg-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-lg-8 { + padding: 3rem !important; } + + .pt-lg-8 { + padding-top: 3rem !important; } + + .pr-lg-8 { + padding-right: 3rem !important; } + + .pb-lg-8 { + padding-bottom: 3rem !important; } + + .pl-lg-8 { + padding-left: 3rem !important; } + + .px-lg-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-lg-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-lg-9 { + padding: 3.5rem !important; } + + .pt-lg-9 { + padding-top: 3.5rem !important; } + + .pr-lg-9 { + padding-right: 3.5rem !important; } + + .pb-lg-9 { + padding-bottom: 3.5rem !important; } + + .pl-lg-9 { + padding-left: 3.5rem !important; } + + .px-lg-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-lg-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-lg-10 { + padding: 4rem !important; } + + .pt-lg-10 { + padding-top: 4rem !important; } + + .pr-lg-10 { + padding-right: 4rem !important; } + + .pb-lg-10 { + padding-bottom: 4rem !important; } + + .pl-lg-10 { + padding-left: 4rem !important; } + + .px-lg-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-lg-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media (min-width: 87.5rem) { + .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: 0.25rem !important; } + + .pt-xl-1 { + padding-top: 0.25rem !important; } + + .pr-xl-1 { + padding-right: 0.25rem !important; } + + .pb-xl-1 { + padding-bottom: 0.25rem !important; } + + .pl-xl-1 { + padding-left: 0.25rem !important; } + + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; } + + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; } + + .p-xl-2 { + padding: 0.5rem !important; } + + .pt-xl-2 { + padding-top: 0.5rem !important; } + + .pr-xl-2 { + padding-right: 0.5rem !important; } + + .pb-xl-2 { + padding-bottom: 0.5rem !important; } + + .pl-xl-2 { + padding-left: 0.5rem !important; } + + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; } + + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; } + + .p-xl-3 { + padding: 0.75rem !important; } + + .pt-xl-3 { + padding-top: 0.75rem !important; } + + .pr-xl-3 { + padding-right: 0.75rem !important; } + + .pb-xl-3 { + padding-bottom: 0.75rem !important; } + + .pl-xl-3 { + padding-left: 0.75rem !important; } + + .px-xl-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; } + + .py-xl-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; } + + .p-xl-4 { + padding: 1rem !important; } + + .pt-xl-4 { + padding-top: 1rem !important; } + + .pr-xl-4 { + padding-right: 1rem !important; } + + .pb-xl-4 { + padding-bottom: 1rem !important; } + + .pl-xl-4 { + padding-left: 1rem !important; } + + .px-xl-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; } + + .py-xl-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; } + + .p-xl-5 { + padding: 1.5rem !important; } + + .pt-xl-5 { + padding-top: 1.5rem !important; } + + .pr-xl-5 { + padding-right: 1.5rem !important; } + + .pb-xl-5 { + padding-bottom: 1.5rem !important; } + + .pl-xl-5 { + padding-left: 1.5rem !important; } + + .px-xl-5 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; } + + .py-xl-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; } + + .p-xl-6 { + padding: 2rem !important; } + + .pt-xl-6 { + padding-top: 2rem !important; } + + .pr-xl-6 { + padding-right: 2rem !important; } + + .pb-xl-6 { + padding-bottom: 2rem !important; } + + .pl-xl-6 { + padding-left: 2rem !important; } + + .px-xl-6 { + padding-right: 2rem !important; + padding-left: 2rem !important; } + + .py-xl-6 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; } + + .p-xl-7 { + padding: 2.5rem !important; } + + .pt-xl-7 { + padding-top: 2.5rem !important; } + + .pr-xl-7 { + padding-right: 2.5rem !important; } + + .pb-xl-7 { + padding-bottom: 2.5rem !important; } + + .pl-xl-7 { + padding-left: 2.5rem !important; } + + .px-xl-7 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; } + + .py-xl-7 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; } + + .p-xl-8 { + padding: 3rem !important; } + + .pt-xl-8 { + padding-top: 3rem !important; } + + .pr-xl-8 { + padding-right: 3rem !important; } + + .pb-xl-8 { + padding-bottom: 3rem !important; } + + .pl-xl-8 { + padding-left: 3rem !important; } + + .px-xl-8 { + padding-right: 3rem !important; + padding-left: 3rem !important; } + + .py-xl-8 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; } + + .p-xl-9 { + padding: 3.5rem !important; } + + .pt-xl-9 { + padding-top: 3.5rem !important; } + + .pr-xl-9 { + padding-right: 3.5rem !important; } + + .pb-xl-9 { + padding-bottom: 3.5rem !important; } + + .pl-xl-9 { + padding-left: 3.5rem !important; } + + .px-xl-9 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; } + + .py-xl-9 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; } + + .p-xl-10 { + padding: 4rem !important; } + + .pt-xl-10 { + padding-top: 4rem !important; } + + .pr-xl-10 { + padding-right: 4rem !important; } + + .pb-xl-10 { + padding-bottom: 4rem !important; } + + .pl-xl-10 { + padding-left: 4rem !important; } + + .px-xl-10 { + padding-right: 4rem !important; + padding-left: 4rem !important; } + + .py-xl-10 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; } } +@media print { + .site-footer, + .site-button, + #edit-this-page, + #back-to-top, + .site-nav, + .main-header { + display: none !important; } + + .side-bar { + width: 100%; + height: auto; + border-right: 0 !important; } + + .site-header { + border-bottom: 1px solid #eeebee; } + + .site-title { + font-size: 1rem !important; + font-weight: 700 !important; } + + .text-small { + font-size: 8pt !important; } + + pre.highlight { + border: 1px solid #eeebee; } + + .main { + max-width: none; + margin-left: 0; } } +a.skip-to-main { + left: -999px; + position: absolute; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; + z-index: -999; } + +a.skip-to-main:focus, +a.skip-to-main:active { + color: #7253ed; + background-color: #fff; + left: auto; + top: auto; + width: 30%; + height: auto; + overflow: auto; + margin: 10px 35%; + padding: 5px; + border-radius: 15px; + border: 4px solid #5e41d0; + text-align: center; + font-size: 1.2em; + z-index: 999; } + +div.opaque { + background-color: #fff; } + +p.note, blockquote.note { + background: rgba(255, 235, 130, 0.2); + border-left: 4px solid #e7af06; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note::before, blockquote.note::before { + color: #e7af06; + content: "Note"; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + p.note > .note-title, blockquote.note > .note-title { + color: #e7af06; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +p.note-title, blockquote.note-title { + background: rgba(255, 235, 130, 0.2); + border-left: 4px solid #e7af06; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + padding: .8rem; } + p.note-title > p:first-child, blockquote.note-title > p:first-child { + margin-top: 0; + margin-bottom: 0; + color: #e7af06; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: .75em; + padding-bottom: .125rem; } + +blockquote.note { + margin-left: 0; + margin-right: 0; } + blockquote.note > p:first-child { + margin-top: 0; } + blockquote.note > p:last-child { + margin-bottom: 0; } + +blockquote.note-title { + margin-left: 0; + margin-right: 0; } + blockquote.note-title > p:nth-child(2) { + margin-top: 0; } + blockquote.note-title > p:last-child { + margin-bottom: 0; } diff --git a/2.12.0/assets/css/theme.css b/2.12.0/assets/css/theme.css new file mode 100644 index 000000000..1f738381c --- /dev/null +++ b/2.12.0/assets/css/theme.css @@ -0,0 +1,10727 @@ +@charset "UTF-8"; +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*------------------------------------*\ + $CONTENTS +\*------------------------------------*/ +/** + * STYLE GUIDE VARIABLES------------------Declarations of Sass variables + * -----Typography + * -----Colors + * -----Textfield + * -----Switch + * -----Spinner + * -----Radio + * -----Menu + * -----List + * -----Layout + * -----Icon toggles + * -----Footer + * -----Column + * -----Checkbox + * -----Card + * -----Button + * -----Animation + * -----Progress + * -----Badge + * -----Shadows + * -----Grid + * -----Data table + * -----Dialog + * -----Snackbar + * -----Tooltip + * -----Chip + * + * Even though all variables have the `!default` directive, most of them + * should not be changed as they are dependent one another. This can cause + * visual distortions (like alignment issues) that are hard to track down + * and fix. + */ +/* ========== TYPOGRAPHY ========== */ +/* We're splitting fonts into "preferred" and "performance" in order to optimize + page loading. For important text, such as the body, we want it to load + immediately and not wait for the web font load, whereas for other sections, + such as headers and titles, we're OK with things taking a bit longer to load. + We do have some optional classes and parameters in the mixins, in case you + definitely want to make sure you're using the preferred font and don't mind + the performance hit. + We should be able to improve on this once CSS Font Loading L3 becomes more + widely available. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* ========== Color Palettes ========== */ +/* colors.scss */ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* ========== IMAGES ========== */ +/* ========== Color & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* DIALOG */ +/* SNACKBAR */ +/* TOOLTIP */ +/* CHIP */ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Typography */ +/* Shadows */ +/* Animations */ +/* Dialog */ +:root { + --toc-1: #e6e9eb; + --toc-2: #ccd2d8; + --toc-3: #b3bcc4; + --toc-4: #9aa5b1; + --toc-5: #e6e9eb; + --toc-6: #ccd2d8; + --toc-7: #b3bcc4; + --toc-8: #9aa5b1; + --toc-9: #e6e9eb; + --toc-10: #ccd2d8; + --toc-11: #b3bcc4; + --toc-12: #9aa5b1; } + +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Prevent adjustments of font size after orientation changes in IE and iOS. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + * 2. Add the correct display in IE. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section { + /* 1 */ + display: block; } + +summary { + display: list-item; } + +/** + * Add the correct display in IE 9-. + */ +audio, +canvas, +progress, +video { + display: inline-block; } + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; } + +/** + * Add the correct display in IE 10-. + * 1. Add the correct display in IE. + */ +template, +[hidden] { + display: none !important; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; + /* 1 */ } + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ +a:active, +a:hover { + outline-width: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #1b1f23; } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; } + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; } + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/* Forms + ========================================================================== */ +/** + * 1. Change font properties to `inherit` in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +select, +textarea { + font: inherit; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Restore the font weight unset by the previous rule. + */ +optgroup { + font-weight: 600; } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. + */ +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Correct the text style of placeholders in Chrome, Edge, and Safari. + */ +::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +* { + box-sizing: border-box; } + +input, +select, +textarea, +button { + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +body { + font-family: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #24292e; + background-color: #fff; } + +a { + color: #0366d6; + 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 #dfe2e5; } + 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 Consolas, "Liberation Mono", Menlo, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #d1d5da; + border-radius: 6px; + box-shadow: inset 0 -1px 0 #d1d5da; } + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0; } + +@font-face { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } +h1 { + font-size: 32px; + font-weight: 600; + font-family: "FlandersArtSans-SerifThin"; } + +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 { + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; } + +pre { + margin-top: 0; + margin-bottom: 0; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; } + +.octicon { + vertical-align: text-bottom; } + +.breadcrumb-item { + display: inline-block; + margin-left: -0.35em; + white-space: nowrap; + list-style: none; } + .breadcrumb-item::after { + padding-right: 0.5em; + padding-left: 0.5em; + color: #e1e4e8; + content: "/"; } + .breadcrumb-item:first-child { + margin-left: 0; } + +.breadcrumb-item-selected, +.breadcrumb-item[aria-current]:not([aria-current="false"]) { + color: #586069; } + .breadcrumb-item-selected::after, + .breadcrumb-item[aria-current]:not([aria-current="false"])::after { + content: none; } + +.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; + user-select: none; + border: 1px solid; + border-radius: 6px; + appearance: none; } + .btn:hover { + text-decoration: none; } + .btn:disabled, .btn.disabled, .btn[aria-disabled="true"] { + cursor: default; } + .btn:disabled .octicon, .btn.disabled .octicon, .btn[aria-disabled="true"] .octicon { + color: inherit; } + .btn i { + font-style: normal; + font-weight: 500; + opacity: 0.75; } + .btn .octicon { + margin-right: 4px; + color: #6a737d; + 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: rgba(27, 31, 35, 0.08); } + .btn .dropdown-caret { + margin-left: 4px; + opacity: 0.8; } + +.btn { + color: #24292e; + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); + transition: background-color 0.2s cubic-bezier(0.3, 0, 0.5, 1); } + .btn:hover, .btn.hover, [open] > .btn { + background-color: #f3f4f6; + transition-duration: 0.1s; } + .btn:active, .btn.selected, .btn[aria-selected="true"] { + background-color: #edeff2; + box-shadow: inset 0 1px 0 rgba(225, 228, 232, 0.2); + transition: none; } + .btn:disabled, .btn.disabled, .btn[aria-disabled="true"] { + color: #959da5; + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); } + .btn:focus, .btn.focus { + outline: 1px dotted transparent; + outline-offset: 2px; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + +.btn-primary { + color: #fff; + background-color: #2ea44f; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-primary:hover, .btn-primary.hover, [open] > .btn-primary { + background-color: #2c974b; } + .btn-primary:active, .btn-primary.selected, .btn-primary[aria-selected="true"] { + background-color: #2a8f47; + box-shadow: inset 0 1px 0 rgba(20, 70, 32, 0.2); } + .btn-primary:disabled, .btn-primary.disabled, .btn-primary[aria-disabled="true"] { + color: rgba(255, 255, 255, 0.8); + background-color: #94d3a2; + border-color: rgba(27, 31, 35, 0.1); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 3px rgba(46, 164, 79, 0.4); } + .btn-primary .Counter { + color: inherit; + background-color: rgba(255, 255, 255, 0.2); } + .btn-primary .octicon { + color: rgba(255, 255, 255, 0.8); } + +.btn-danger { + color: #cb2431; + transition: none; } + .btn-danger:hover, [open] > .btn-danger { + color: #fff; + background-color: #cb2431; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-danger:hover .Counter, [open] > .btn-danger .Counter { + background-color: rgba(255, 255, 255, 0.2); } + .btn-danger:hover .octicon, [open] > .btn-danger .octicon { + color: inherit; } + .btn-danger:active, .btn-danger.selected, .btn-danger[aria-selected="true"] { + color: #fff; + background-color: #be222e; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: inset 0 1px 0 rgba(134, 24, 29, 0.2); } + .btn-danger:disabled, .btn-danger.disabled, .btn-danger[aria-disabled="true"] { + color: rgba(203, 36, 49, 0.5); + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .btn-danger:disabled .Counter, .btn-danger.disabled .Counter, .btn-danger[aria-disabled="true"] .Counter { + background-color: rgba(203, 36, 49, 0.05); } + .btn-danger:focus { + box-shadow: 0 0 0 3px rgba(203, 36, 49, 0.4); } + .btn-danger .Counter { + color: inherit; + background-color: rgba(203, 36, 49, 0.1); } + +.btn-outline { + color: #0366d6; + transition: none; } + .btn-outline:hover, [open] > .btn-outline { + color: #fff; + background-color: #0366d6; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.03); } + .btn-outline:hover .Counter, [open] > .btn-outline .Counter { + background-color: rgba(255, 255, 255, 0.2); } + .btn-outline:hover .octicon, [open] > .btn-outline .octicon { + color: inherit; } + .btn-outline:active, .btn-outline.selected, .btn-outline[aria-selected="true"] { + color: #fff; + background-color: #035fc7; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: inset 0 1px 0 rgba(5, 38, 76, 0.2); } + .btn-outline:disabled, .btn-outline.disabled, .btn-outline[aria-disabled="true"] { + color: rgba(3, 102, 214, 0.5); + background-color: #fafbfc; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .btn-outline:disabled .Counter, .btn-outline.disabled .Counter, .btn-outline[aria-disabled="true"] .Counter { + background-color: rgba(3, 102, 214, 0.05); } + .btn-outline:focus { + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.4); } + .btn-outline .Counter { + color: inherit; + background-color: rgba(3, 102, 214, 0.1); } + +.btn-blue { + color: #fff; + background-color: #0361cc; + background-image: linear-gradient(-180deg, #0679fc 0%, #0361cc 90%); } + .btn-blue:focus, .btn-blue.focus { + box-shadow: 0 0 0 0.2em rgba(6, 121, 252, 0.4); } + .btn-blue:hover, .btn-blue.hover { + background-color: #035cc2; + background-image: linear-gradient(-180deg, #0374f4 0%, #035cc2 90%); + background-position: -0.5em; + border-color: rgba(27, 31, 35, 0.5); } + .btn-blue:active, .btn-blue.selected, .btn-blue[aria-selected="true"], [open] > .btn-blue { + background-color: #045cc1; + background-image: none; + border-color: rgba(27, 31, 35, 0.5); + box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15); } + .btn-blue:disabled, .btn-blue.disabled, .btn-blue[aria-disabled="true"] { + color: rgba(255, 255, 255, 0.75); + background-color: #81b0e6; + background-image: none; + border-color: rgba(27, 31, 35, 0.15); + box-shadow: none; } + .btn-blue .Counter { + color: #0366d6; + background-color: #fff; } + +.btn-sm { + padding: 3px 12px; + font-size: 12px; + line-height: 20px; } + .btn-sm .octicon { + vertical-align: text-top; } + +.btn-large { + padding: 0.75em 1.5em; + font-size: inherit; + line-height: 1.5; + border-radius: 0.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: #0366d6; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + user-select: none; + background-color: transparent; + border: 0; + 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: rgba(88, 96, 105, 0.5); + cursor: default; } + +.btn-invisible { + color: #0366d6; + background-color: transparent; + border: 0; + border-radius: 0; + box-shadow: none; } + .btn-invisible:hover, .btn-invisible:active, .btn-invisible:focus, .btn-invisible.selected, .btn-invisible[aria-selected="true"], .btn-invisible.zeroclipboard-is-hover, .btn-invisible.zeroclipboard-is-active { + color: #0366d6; + background: none; + outline: none; + box-shadow: none; } + +.btn-octicon { + display: inline-block; + padding: 5px; + margin-left: 5px; + line-height: 1; + color: #586069; + vertical-align: middle; + background: transparent; + border: 0; } + .btn-octicon:hover { + color: #0366d6; } + .btn-octicon.disabled, .btn-octicon[aria-disabled="true"] { + color: #959da5; + cursor: default; } + .btn-octicon.disabled:hover, .btn-octicon[aria-disabled="true"]:hover { + color: #959da5; } + +.btn-octicon-danger:hover { + color: #cb2431; } + +.close-button { + padding: 0; + background: transparent; + border: 0; + outline: none; } + +.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: #444d56; + text-decoration: none; + vertical-align: middle; + background: #dfe2e5; + border: 0; + border-radius: 1px; } + .hidden-text-expander a:hover, + .ellipsis-expander:hover { + text-decoration: none; + background-color: #c6cbd1; } + .hidden-text-expander a:active, + .ellipsis-expander:active { + color: #fff; + background-color: #2188ff; } + +.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: #24292e; + vertical-align: middle; + background-color: #fff; + border: 1px solid rgba(27, 31, 35, 0.15); + border-left: 0; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.25); } + .social-count:hover, .social-count:active { + text-decoration: none; } + .social-count:hover { + color: #0366d6; + cursor: pointer; } + .social-count:focus { + z-index: 1; + outline: 0; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + +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: #24292e; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #e1e4e8; + border-radius: 6px; + outline: none; + box-shadow: inset 0 1px 0 rgba(225, 228, 232, 0.2); } + .form-control.focus, .form-control:focus, + .form-select.focus, + .form-select:focus { + border-color: #0366d6; + outline: none; + box-shadow: 0 0 0 3px rgba(3, 102, 214, 0.3); } + .form-control[disabled], + .form-select[disabled] { + color: #959da5; + background-color: #f3f4f6; } + @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: #fafbfc; } + .input-contrast:focus { + background-color: #fff; } + +.input-dark { + color: #fff; + background-color: rgba(255, 255, 255, 0.15); + border-color: transparent; + box-shadow: none; } + .input-dark::placeholder { + color: inherit; + opacity: 0.6; } + .input-dark.focus, .input-dark:focus { + border-color: rgba(27, 31, 35, 0.3); + box-shadow: 0 0 0 0.2em rgba(121, 184, 255, 0.4); } + +::placeholder { + color: #6a737d; + opacity: 1; } + +.input-sm { + 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: Consolas, "Liberation Mono", Menlo, 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: #fffbdd; + 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: #586069; } + +.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: #586069; } + .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; + 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: #735c0f; + background: #fffbdd; + border: 1px solid #f9c513; + 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: #fff; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: right 8px center; + background-size: 8px 10px; + appearance: none; } + .form-select::-ms-expand { + opacity: 0; } + .form-select[multiple] { + height: auto; } + +.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: #fafbfc; } + .form-group .form-control:focus { + background-color: #fff; } + .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: #cb2431; } + .form-group dd h4.is-success, + .form-group .form-group-body h4.is-success { + color: #22863a; } + .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: #cb2431; + content: "*"; } + .form-group .success, + .form-group .error, + .form-group .indicator { + display: none; + font-size: 12px; + font-weight: 600; } + .form-group.loading { + opacity: 0.5; } + .form-group.loading .indicator { + display: inline; } + .form-group.loading .spinner { + display: inline-block; + vertical-align: middle; } + .form-group.successful .success { + display: inline; + color: #22863a; } + .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: #144620; + background-color: #dcffe4; + border-color: #34d058; } + .form-group.successed .success::after { + border-bottom-color: #dcffe4; } + .form-group.successed .success::before { + border-bottom-color: #34d058; } + .form-group.warn .form-control { + border-color: #f9c513; } + .form-group.warn .warning { + background-color: #fff5b1; + border-color: #f9c513; } + .form-group.warn .warning::after { + border-bottom-color: #fff5b1; } + .form-group.warn .warning::before { + border-bottom-color: #f9c513; } + .form-group.errored .form-control { + border-color: #cb2431; } + .form-group.errored label { + color: #cb2431; } + .form-group.errored .error { + background-color: #ffeef0; + border-color: #f97583; } + .form-group.errored .error::after { + border-bottom-color: #ffeef0; } + .form-group.errored .error::before { + border-bottom-color: #f97583; } + +.note { + min-height: 17px; + margin: 4px 0 2px; + font-size: 12px; + color: #586069; } + .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 (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), 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: #28a745; + fill: #28a745; } +.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: #cb2431; + fill: #d73a49; } + +.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: #586069; + background-color: #fafbfc; + border: 1px solid #c3c8cf; + 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: #cb2431; } + .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: #586069; } + .drag-and-drop-error-info a { + color: #0366d6; } + +.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: 0.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 #dfe2e5; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } +.upload-enabled.focused { + border-radius: 6px; + box-shadow: inset 0 1px 2px rgba(27, 31, 35, 0.075), 0 0 0 0.2em rgba(3, 102, 214, 0.3); } + .upload-enabled.focused .form-control { + box-shadow: none; } + .upload-enabled.focused .drag-and-drop { + border-color: #4a9eff; } + +.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 #c3c8cf; } + .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: #586069; } + +p.explain { + position: relative; + font-size: 12px; + color: #586069; } + p.explain strong { + color: #24292e; } + p.explain .octicon { + margin-right: 5px; + color: #959da5; } + 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: #24292e; + cursor: pointer; + border: 1px solid #e1e4e8; } + :checked + .radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; } + .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-input { + z-index: 3; + float: left; + margin: 10px -32px 0 16px; } + +.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: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; } + .markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px Consolas, "Liberation Mono", Menlo, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #d1d5da; + border-radius: 6px; + box-shadow: inset 0 -1px 0 #d1d5da; } + .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: #cb2431; } + .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: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; } + .markdown-body blockquote { + padding: 0 1em; + color: #6a737d; + border-left: 0.25em solid #dfe2e5; } + .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: #1b1f23; + 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 { + font-size: inherit; } +.markdown-body h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid #eaecef; } +.markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #eaecef; } +.markdown-body h3 { + font-size: 1.25em; } +.markdown-body h4 { + font-size: 1em; } +.markdown-body h5 { + font-size: 0.875em; } +.markdown-body h6 { + font-size: 0.85em; + color: #6a737d; } + +.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 ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; } +.markdown-body li { + word-wrap: break-all; } +.markdown-body li > p { + margin-top: 16px; } +.markdown-body li + li { + margin-top: 0.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 #dfe2e5; } + .markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; } + .markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; } + .markdown-body table img { + background-color: transparent; } + +.markdown-body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; } + .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 #dfe2e5; } + .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: #24292e; } +.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: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: rgba(27, 31, 35, 0.05); + border-radius: 6px; } + .markdown-body code br, + .markdown-body tt br { + display: none; } +.markdown-body del code { + text-decoration: inherit; } +.markdown-body pre { + word-wrap: normal; } + .markdown-body pre > code { + padding: 0; + margin: 0; + font-size: 100%; + 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: #f6f8fa; + 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: #fff; + border: 0; } +.markdown-body .csv-data tr { + border-top: 0; } +.markdown-body .csv-data th { + font-weight: 600; + background: #f6f8fa; + border-top: 0; } + +.highlight { + background-color: #f8f8f8; } + .highlight table td { + padding: 5px; } + .highlight table pre { + margin: 0; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .c, + .highlight .ch, + .highlight .cd, + .highlight .cpf { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc, + .highlight .kd, + .highlight .kn, + .highlight .kp, + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; + font-weight: bold; } + .highlight .k, + .highlight .kv { + color: #000000; + font-weight: bold; } + .highlight .mf, + .highlight .mh, + .highlight .il, + .highlight .mi, + .highlight .mo, + .highlight .m, + .highlight .mb, + .highlight .mx { + color: #009999; } + .highlight .sb, + .highlight .sc, + .highlight .sd, + .highlight .s2, + .highlight .se, + .highlight .sh, + .highlight .si, + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .s, + .highlight .sa, + .highlight .dl { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .bp { + color: #999999; } + .highlight .nb { + color: #0086b3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .nd { + color: #3c5d5d; + font-weight: bold; } + .highlight .ni { + color: #800080; } + .highlight .ne, + .highlight .nf, + .highlight .fm, + .highlight .nl { + color: #990000; + font-weight: bold; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .vc, + .highlight .vg, + .highlight .vi, + .highlight .nv, + .highlight .vm { + color: #008080; } + .highlight .ow, + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + +@font-face { + font-family: "FlandersArtSans-Medium"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/sans/FlandersArtSans-Medium.woff2") format("woff2"), url("../webfonts/sans/FlandersArtSans-Medium.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-Regular"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/sans/FlandersArtSans-Regular.woff2") format("woff2"), url("../webfonts/sans/FlandersArtSans-Regular.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-Serif"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Regular.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Regular.woff") format("woff"); } +@font-face { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("fonts/lato-normal.woff2") format("woff2"), url("fonts/lato-normal.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 400; + font-style: italic; + font-display: block; + src: url("fonts/lato-normal-italic.woff2") format("woff2"), url("fonts/lato-normal-italic.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 600; + font-style: normal; + font-display: block; + src: url("fonts/lato-bold.woff2") format("woff2"), url("fonts/lato-bold.woff") format("woff"); } +@font-face { + font-family: "Lato"; + font-weight: 600; + font-style: italic; + font-display: block; + src: url("fonts/lato-bold-italic.woff2") format("woff2"), url("fonts/lato-bold-italic.woff") format("woff"); } +@font-face { + font-family: "Roboto-Slab"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("fonts/Roboto-Slab-Regular.woff2") format("woff2"), url("fonts/Roboto-Slab-Regular.woff") format("woff"); } +@font-face { + font-family: "Roboto-Slab"; + font-weight: 600; + font-style: normal; + font-display: block; + src: url("fonts/Roboto-Slab-Bold.woff2") format("woff2"), url("fonts/Roboto-Slab-Bold.woff") format("woff"); } +@font-face { + font-family: "FontAwesome"; + font-weight: normal; + font-style: normal; + font-display: block; + src: url("fonts/fontawesome-webfont.eot"); + src: url("fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/fontawesome-webfont.woff2") format("woff2"), url("fonts/fontawesome-webfont.woff") format("woff"), url("fonts/fontawesome-webfont.ttf") format("truetype"), url("fonts/fontawesome-webfont.svg#fontawesomeregular") format("svg"); } +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: ""; } + +.fa-music:before { + content: ""; } + +.fa-search:before { + content: ""; } + +.fa-envelope-o:before { + content: ""; } + +.fa-heart:before { + content: ""; } + +.fa-star:before { + content: ""; } + +.fa-star-o:before { + content: ""; } + +.fa-user:before { + content: ""; } + +.fa-film:before { + content: ""; } + +.fa-th-large:before { + content: ""; } + +.fa-th:before { + content: ""; } + +.fa-th-list:before { + content: ""; } + +.fa-check:before { + content: ""; } + +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: ""; } + +.fa-search-plus:before { + content: ""; } + +.fa-search-minus:before { + content: ""; } + +.fa-power-off:before { + content: ""; } + +.fa-signal:before { + content: ""; } + +.fa-gear:before, +.fa-cog:before { + content: ""; } + +.fa-trash-o:before { + content: ""; } + +.fa-home:before { + content: ""; } + +.fa-file-o:before { + content: ""; } + +.fa-clock-o:before { + content: ""; } + +.fa-road:before { + content: ""; } + +.fa-download:before { + content: ""; } + +.fa-arrow-circle-o-down:before { + content: ""; } + +.fa-arrow-circle-o-up:before { + content: ""; } + +.fa-inbox:before { + content: ""; } + +.fa-play-circle-o:before { + content: ""; } + +.fa-rotate-right:before, +.fa-repeat:before { + content: ""; } + +.fa-refresh:before { + content: ""; } + +.fa-list-alt:before { + content: ""; } + +.fa-lock:before { + content: ""; } + +.fa-flag:before { + content: ""; } + +.fa-headphones:before { + content: ""; } + +.fa-volume-off:before { + content: ""; } + +.fa-volume-down:before { + content: ""; } + +.fa-volume-up:before { + content: ""; } + +.fa-qrcode:before { + content: ""; } + +.fa-barcode:before { + content: ""; } + +.fa-tag:before { + content: ""; } + +.fa-tags:before { + content: ""; } + +.fa-book:before { + content: ""; } + +.fa-bookmark:before { + content: ""; } + +.fa-print:before { + content: ""; } + +.fa-camera:before { + content: ""; } + +.fa-font:before { + content: ""; } + +.fa-bold:before { + content: ""; } + +.fa-italic:before { + content: ""; } + +.fa-text-height:before { + content: ""; } + +.fa-text-width:before { + content: ""; } + +.fa-align-left:before { + content: ""; } + +.fa-align-center:before { + content: ""; } + +.fa-align-right:before { + content: ""; } + +.fa-align-justify:before { + content: ""; } + +.fa-list:before { + content: ""; } + +.fa-dedent:before, +.fa-outdent:before { + content: ""; } + +.fa-indent:before { + content: ""; } + +.fa-video-camera:before { + content: ""; } + +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: ""; } + +.fa-pencil:before { + content: ""; } + +.fa-map-marker:before { + content: ""; } + +.fa-adjust:before { + content: ""; } + +.fa-tint:before { + content: ""; } + +.fa-edit:before, +.fa-pencil-square-o:before { + content: ""; } + +.fa-share-square-o:before { + content: ""; } + +.fa-check-square-o:before { + content: ""; } + +.fa-arrows:before { + content: ""; } + +.fa-step-backward:before { + content: ""; } + +.fa-fast-backward:before { + content: ""; } + +.fa-backward:before { + content: ""; } + +.fa-play:before { + content: ""; } + +.fa-pause:before { + content: ""; } + +.fa-stop:before { + content: ""; } + +.fa-forward:before { + content: ""; } + +.fa-fast-forward:before { + content: ""; } + +.fa-step-forward:before { + content: ""; } + +.fa-eject:before { + content: ""; } + +.fa-chevron-left:before { + content: ""; } + +.fa-chevron-right:before { + content: ""; } + +.fa-plus-circle:before { + content: ""; } + +.fa-minus-circle:before { + content: ""; } + +.fa-times-circle:before { + content: ""; } + +.fa-check-circle:before { + content: ""; } + +.fa-question-circle:before { + content: ""; } + +.fa-info-circle:before { + content: ""; } + +.fa-crosshairs:before { + content: ""; } + +.fa-times-circle-o:before { + content: ""; } + +.fa-check-circle-o:before { + content: ""; } + +.fa-ban:before { + content: ""; } + +.fa-arrow-left:before { + content: ""; } + +.fa-arrow-right:before { + content: ""; } + +.fa-arrow-up:before { + content: ""; } + +.fa-arrow-down:before { + content: ""; } + +.fa-mail-forward:before, +.fa-share:before { + content: ""; } + +.fa-expand:before { + content: ""; } + +.fa-compress:before { + content: ""; } + +.fa-plus:before { + content: ""; } + +.fa-minus:before { + content: ""; } + +.fa-asterisk:before { + content: ""; } + +.fa-exclamation-circle:before { + content: ""; } + +.fa-gift:before { + content: ""; } + +.fa-leaf:before { + content: ""; } + +.fa-fire:before { + content: ""; } + +.fa-eye:before { + content: ""; } + +.fa-eye-slash:before { + content: ""; } + +.fa-warning:before, +.fa-exclamation-triangle:before { + content: ""; } + +.fa-plane:before { + content: ""; } + +.fa-calendar:before { + content: ""; } + +.fa-random:before { + content: ""; } + +.fa-comment:before { + content: ""; } + +.fa-magnet:before { + content: ""; } + +.fa-chevron-up:before { + content: ""; } + +.fa-chevron-down:before { + content: ""; } + +.fa-retweet:before { + content: ""; } + +.fa-shopping-cart:before { + content: ""; } + +.fa-folder:before { + content: ""; } + +.fa-folder-open:before { + content: ""; } + +.fa-arrows-v:before { + content: ""; } + +.fa-arrows-h:before { + content: ""; } + +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: ""; } + +.fa-twitter-square:before { + content: ""; } + +.fa-facebook-square:before { + content: ""; } + +.fa-camera-retro:before { + content: ""; } + +.fa-key:before { + content: ""; } + +.fa-gears:before, +.fa-cogs:before { + content: ""; } + +.fa-comments:before { + content: ""; } + +.fa-thumbs-o-up:before { + content: ""; } + +.fa-thumbs-o-down:before { + content: ""; } + +.fa-star-half:before { + content: ""; } + +.fa-heart-o:before { + content: ""; } + +.fa-sign-out:before { + content: ""; } + +.fa-linkedin-square:before { + content: ""; } + +.fa-thumb-tack:before { + content: ""; } + +.fa-external-link:before { + content: ""; } + +.fa-sign-in:before { + content: ""; } + +.fa-trophy:before { + content: ""; } + +.fa-github-square:before { + content: ""; } + +.fa-upload:before { + content: ""; } + +.fa-lemon-o:before { + content: ""; } + +.fa-phone:before { + content: ""; } + +.fa-square-o:before { + content: ""; } + +.fa-bookmark-o:before { + content: ""; } + +.fa-phone-square:before { + content: ""; } + +.fa-twitter:before { + content: ""; } + +.fa-facebook-f:before, +.fa-facebook:before { + content: ""; } + +.fa-github:before { + content: ""; } + +.fa-unlock:before { + content: ""; } + +.fa-credit-card:before { + content: ""; } + +.fa-feed:before, +.fa-rss:before { + content: ""; } + +.fa-hdd-o:before { + content: ""; } + +.fa-bullhorn:before { + content: ""; } + +.fa-bell:before { + content: ""; } + +.fa-certificate:before { + content: ""; } + +.fa-hand-o-right:before { + content: ""; } + +.fa-hand-o-left:before { + content: ""; } + +.fa-hand-o-up:before { + content: ""; } + +.fa-hand-o-down:before { + content: ""; } + +.fa-arrow-circle-left:before { + content: ""; } + +.fa-arrow-circle-right:before { + content: ""; } + +.fa-arrow-circle-up:before { + content: ""; } + +.fa-arrow-circle-down:before { + content: ""; } + +.fa-globe:before { + content: ""; } + +.fa-wrench:before { + content: ""; } + +.fa-tasks:before { + content: ""; } + +.fa-filter:before { + content: ""; } + +.fa-briefcase:before { + content: ""; } + +.fa-arrows-alt:before { + content: ""; } + +.fa-group:before, +.fa-users:before { + content: ""; } + +.fa-chain:before, +.fa-link:before { + content: ""; } + +.fa-cloud:before { + content: ""; } + +.fa-flask:before { + content: ""; } + +.fa-cut:before, +.fa-scissors:before { + content: ""; } + +.fa-copy:before, +.fa-files-o:before { + content: ""; } + +.fa-paperclip:before { + content: ""; } + +.fa-save:before, +.fa-floppy-o:before { + content: ""; } + +.fa-square:before { + content: ""; } + +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: ""; } + +.fa-list-ul:before { + content: ""; } + +.fa-list-ol:before { + content: ""; } + +.fa-strikethrough:before { + content: ""; } + +.fa-underline:before { + content: ""; } + +.fa-table:before { + content: ""; } + +.fa-magic:before { + content: ""; } + +.fa-truck:before { + content: ""; } + +.fa-pinterest:before { + content: ""; } + +.fa-pinterest-square:before { + content: ""; } + +.fa-google-plus-square:before { + content: ""; } + +.fa-google-plus:before { + content: ""; } + +.fa-money:before { + content: ""; } + +.fa-caret-down:before { + content: ""; } + +.fa-caret-up:before { + content: ""; } + +.fa-caret-left:before { + content: ""; } + +.fa-caret-right:before { + content: ""; } + +.fa-columns:before { + content: ""; } + +.fa-unsorted:before, +.fa-sort:before { + content: ""; } + +.fa-sort-down:before, +.fa-sort-desc:before { + content: ""; } + +.fa-sort-up:before, +.fa-sort-asc:before { + content: ""; } + +.fa-envelope:before { + content: ""; } + +.fa-linkedin:before { + content: ""; } + +.fa-rotate-left:before, +.fa-undo:before { + content: ""; } + +.fa-legal:before, +.fa-gavel:before { + content: ""; } + +.fa-dashboard:before, +.fa-tachometer:before { + content: ""; } + +.fa-comment-o:before { + content: ""; } + +.fa-comments-o:before { + content: ""; } + +.fa-flash:before, +.fa-bolt:before { + content: ""; } + +.fa-sitemap:before { + content: ""; } + +.fa-umbrella:before { + content: ""; } + +.fa-paste:before, +.fa-clipboard:before { + content: ""; } + +.fa-lightbulb-o:before { + content: ""; } + +.fa-exchange:before { + content: ""; } + +.fa-cloud-download:before { + content: ""; } + +.fa-cloud-upload:before { + content: ""; } + +.fa-user-md:before { + content: ""; } + +.fa-stethoscope:before { + content: ""; } + +.fa-suitcase:before { + content: ""; } + +.fa-bell-o:before { + content: ""; } + +.fa-coffee:before { + content: ""; } + +.fa-cutlery:before { + content: ""; } + +.fa-file-text-o:before { + content: ""; } + +.fa-building-o:before { + content: ""; } + +.fa-hospital-o:before { + content: ""; } + +.fa-ambulance:before { + content: ""; } + +.fa-medkit:before { + content: ""; } + +.fa-fighter-jet:before { + content: ""; } + +.fa-beer:before { + content: ""; } + +.fa-h-square:before { + content: ""; } + +.fa-plus-square:before { + content: ""; } + +.fa-angle-double-left:before { + content: ""; } + +.fa-angle-double-right:before { + content: ""; } + +.fa-angle-double-up:before { + content: ""; } + +.fa-angle-double-down:before { + content: ""; } + +.fa-angle-left:before { + content: ""; } + +.fa-angle-right:before { + content: ""; } + +.fa-angle-up:before { + content: ""; } + +.fa-angle-down:before { + content: ""; } + +.fa-desktop:before { + content: ""; } + +.fa-laptop:before { + content: ""; } + +.fa-tablet:before { + content: ""; } + +.fa-mobile-phone:before, +.fa-mobile:before { + content: ""; } + +.fa-circle-o:before { + content: ""; } + +.fa-quote-left:before { + content: ""; } + +.fa-quote-right:before { + content: ""; } + +.fa-spinner:before { + content: ""; } + +.fa-circle:before { + content: ""; } + +.fa-mail-reply:before, +.fa-reply:before { + content: ""; } + +.fa-github-alt:before { + content: ""; } + +.fa-folder-o:before { + content: ""; } + +.fa-folder-open-o:before { + content: ""; } + +.fa-smile-o:before { + content: ""; } + +.fa-frown-o:before { + content: ""; } + +.fa-meh-o:before { + content: ""; } + +.fa-gamepad:before { + content: ""; } + +.fa-keyboard-o:before { + content: ""; } + +.fa-flag-o:before { + content: ""; } + +.fa-flag-checkered:before { + content: ""; } + +.fa-terminal:before { + content: ""; } + +.fa-code:before { + content: ""; } + +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: ""; } + +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: ""; } + +.fa-location-arrow:before { + content: ""; } + +.fa-crop:before { + content: ""; } + +.fa-code-fork:before { + content: ""; } + +.fa-unlink:before, +.fa-chain-broken:before { + content: ""; } + +.fa-question:before { + content: ""; } + +.fa-info:before { + content: ""; } + +.fa-exclamation:before { + content: ""; } + +.fa-superscript:before { + content: ""; } + +.fa-subscript:before { + content: ""; } + +.fa-eraser:before { + content: ""; } + +.fa-puzzle-piece:before { + content: ""; } + +.fa-microphone:before { + content: ""; } + +.fa-microphone-slash:before { + content: ""; } + +.fa-shield:before { + content: ""; } + +.fa-calendar-o:before { + content: ""; } + +.fa-fire-extinguisher:before { + content: ""; } + +.fa-rocket:before { + content: ""; } + +.fa-maxcdn:before { + content: ""; } + +.fa-chevron-circle-left:before { + content: ""; } + +.fa-chevron-circle-right:before { + content: ""; } + +.fa-chevron-circle-up:before { + content: ""; } + +.fa-chevron-circle-down:before { + content: ""; } + +.fa-html5:before { + content: ""; } + +.fa-css3:before { + content: ""; } + +.fa-anchor:before { + content: ""; } + +.fa-unlock-alt:before { + content: ""; } + +.fa-bullseye:before { + content: ""; } + +.fa-ellipsis-h:before { + content: ""; } + +.fa-ellipsis-v:before { + content: ""; } + +.fa-rss-square:before { + content: ""; } + +.fa-play-circle:before { + content: ""; } + +.fa-ticket:before { + content: ""; } + +.fa-minus-square:before { + content: ""; } + +.fa-minus-square-o:before, .toctree > ul .toc.current > a .fa-plus-square-o:before { + content: ""; } + +.fa-level-up:before { + content: ""; } + +.fa-level-down:before { + content: ""; } + +.fa-check-square:before { + content: ""; } + +.fa-pencil-square:before { + content: ""; } + +.fa-external-link-square:before { + content: ""; } + +.fa-share-square:before { + content: ""; } + +.fa-compass:before { + content: ""; } + +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: ""; } + +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: ""; } + +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: ""; } + +.fa-euro:before, +.fa-eur:before { + content: ""; } + +.fa-gbp:before { + content: ""; } + +.fa-dollar:before, +.fa-usd:before { + content: ""; } + +.fa-rupee:before, +.fa-inr:before { + content: ""; } + +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: ""; } + +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: ""; } + +.fa-won:before, +.fa-krw:before { + content: ""; } + +.fa-bitcoin:before, +.fa-btc:before { + content: ""; } + +.fa-file:before { + content: ""; } + +.fa-file-text:before { + content: ""; } + +.fa-sort-alpha-asc:before { + content: ""; } + +.fa-sort-alpha-desc:before { + content: ""; } + +.fa-sort-amount-asc:before { + content: ""; } + +.fa-sort-amount-desc:before { + content: ""; } + +.fa-sort-numeric-asc:before { + content: ""; } + +.fa-sort-numeric-desc:before { + content: ""; } + +.fa-thumbs-up:before { + content: ""; } + +.fa-thumbs-down:before { + content: ""; } + +.fa-youtube-square:before { + content: ""; } + +.fa-youtube:before { + content: ""; } + +.fa-xing:before { + content: ""; } + +.fa-xing-square:before { + content: ""; } + +.fa-youtube-play:before { + content: ""; } + +.fa-dropbox:before { + content: ""; } + +.fa-stack-overflow:before { + content: ""; } + +.fa-instagram:before { + content: ""; } + +.fa-flickr:before { + content: ""; } + +.fa-adn:before { + content: ""; } + +.fa-bitbucket:before { + content: ""; } + +.fa-bitbucket-square:before { + content: ""; } + +.fa-tumblr:before { + content: ""; } + +.fa-tumblr-square:before { + content: ""; } + +.fa-long-arrow-down:before { + content: ""; } + +.fa-long-arrow-up:before { + content: ""; } + +.fa-long-arrow-left:before { + content: ""; } + +.fa-long-arrow-right:before { + content: ""; } + +.fa-apple:before { + content: ""; } + +.fa-windows:before { + content: ""; } + +.fa-android:before { + content: ""; } + +.fa-linux:before { + content: ""; } + +.fa-dribbble:before { + content: ""; } + +.fa-skype:before { + content: ""; } + +.fa-foursquare:before { + content: ""; } + +.fa-trello:before { + content: ""; } + +.fa-female:before { + content: ""; } + +.fa-male:before { + content: ""; } + +.fa-gittip:before, +.fa-gratipay:before { + content: ""; } + +.fa-sun-o:before { + content: ""; } + +.fa-moon-o:before { + content: ""; } + +.fa-archive:before { + content: ""; } + +.fa-bug:before { + content: ""; } + +.fa-vk:before { + content: ""; } + +.fa-weibo:before { + content: ""; } + +.fa-renren:before { + content: ""; } + +.fa-pagelines:before { + content: ""; } + +.fa-stack-exchange:before { + content: ""; } + +.fa-arrow-circle-o-right:before { + content: ""; } + +.fa-arrow-circle-o-left:before { + content: ""; } + +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: ""; } + +.fa-dot-circle-o:before { + content: ""; } + +.fa-wheelchair:before { + content: ""; } + +.fa-vimeo-square:before { + content: ""; } + +.fa-turkish-lira:before, +.fa-try:before { + content: ""; } + +.fa-plus-square-o:before { + content: ""; } + +.fa-space-shuttle:before { + content: ""; } + +.fa-slack:before { + content: ""; } + +.fa-envelope-square:before { + content: ""; } + +.fa-wordpress:before { + content: ""; } + +.fa-openid:before { + content: ""; } + +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: ""; } + +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: ""; } + +.fa-yahoo:before { + content: ""; } + +.fa-google:before { + content: ""; } + +.fa-reddit:before { + content: ""; } + +.fa-reddit-square:before { + content: ""; } + +.fa-stumbleupon-circle:before { + content: ""; } + +.fa-stumbleupon:before { + content: ""; } + +.fa-delicious:before { + content: ""; } + +.fa-digg:before { + content: ""; } + +.fa-pied-piper-pp:before { + content: ""; } + +.fa-pied-piper-alt:before { + content: ""; } + +.fa-drupal:before { + content: ""; } + +.fa-joomla:before { + content: ""; } + +.fa-language:before { + content: ""; } + +.fa-fax:before { + content: ""; } + +.fa-building:before { + content: ""; } + +.fa-child:before { + content: ""; } + +.fa-paw:before { + content: ""; } + +.fa-spoon:before { + content: ""; } + +.fa-cube:before { + content: ""; } + +.fa-cubes:before { + content: ""; } + +.fa-behance:before { + content: ""; } + +.fa-behance-square:before { + content: ""; } + +.fa-steam:before { + content: ""; } + +.fa-steam-square:before { + content: ""; } + +.fa-recycle:before { + content: ""; } + +.fa-automobile:before, +.fa-car:before { + content: ""; } + +.fa-cab:before, +.fa-taxi:before { + content: ""; } + +.fa-tree:before { + content: ""; } + +.fa-spotify:before { + content: ""; } + +.fa-deviantart:before { + content: ""; } + +.fa-soundcloud:before { + content: ""; } + +.fa-database:before { + content: ""; } + +.fa-file-pdf-o:before { + content: ""; } + +.fa-file-word-o:before { + content: ""; } + +.fa-file-excel-o:before { + content: ""; } + +.fa-file-powerpoint-o:before { + content: ""; } + +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: ""; } + +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: ""; } + +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: ""; } + +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: ""; } + +.fa-file-code-o:before { + content: ""; } + +.fa-vine:before { + content: ""; } + +.fa-codepen:before { + content: ""; } + +.fa-jsfiddle:before { + content: ""; } + +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: ""; } + +.fa-circle-o-notch:before { + content: ""; } + +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: ""; } + +.fa-ge:before, +.fa-empire:before { + content: ""; } + +.fa-git-square:before { + content: ""; } + +.fa-git:before { + content: ""; } + +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: ""; } + +.fa-tencent-weibo:before { + content: ""; } + +.fa-qq:before { + content: ""; } + +.fa-wechat:before, +.fa-weixin:before { + content: ""; } + +.fa-send:before, +.fa-paper-plane:before { + content: ""; } + +.fa-send-o:before, +.fa-paper-plane-o:before { + content: ""; } + +.fa-history:before { + content: ""; } + +.fa-circle-thin:before { + content: ""; } + +.fa-header:before { + content: ""; } + +.fa-paragraph:before { + content: ""; } + +.fa-sliders:before { + content: ""; } + +.fa-share-alt:before { + content: ""; } + +.fa-share-alt-square:before { + content: ""; } + +.fa-bomb:before { + content: ""; } + +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: ""; } + +.fa-tty:before { + content: ""; } + +.fa-binoculars:before { + content: ""; } + +.fa-plug:before { + content: ""; } + +.fa-slideshare:before { + content: ""; } + +.fa-twitch:before { + content: ""; } + +.fa-yelp:before { + content: ""; } + +.fa-newspaper-o:before { + content: ""; } + +.fa-wifi:before { + content: ""; } + +.fa-calculator:before { + content: ""; } + +.fa-paypal:before { + content: ""; } + +.fa-google-wallet:before { + content: ""; } + +.fa-cc-visa:before { + content: ""; } + +.fa-cc-mastercard:before { + content: ""; } + +.fa-cc-discover:before { + content: ""; } + +.fa-cc-amex:before { + content: ""; } + +.fa-cc-paypal:before { + content: ""; } + +.fa-cc-stripe:before { + content: ""; } + +.fa-bell-slash:before { + content: ""; } + +.fa-bell-slash-o:before { + content: ""; } + +.fa-trash:before { + content: ""; } + +.fa-copyright:before { + content: ""; } + +.fa-at:before { + content: ""; } + +.fa-eyedropper:before { + content: ""; } + +.fa-paint-brush:before { + content: ""; } + +.fa-birthday-cake:before { + content: ""; } + +.fa-area-chart:before { + content: ""; } + +.fa-pie-chart:before { + content: ""; } + +.fa-line-chart:before { + content: ""; } + +.fa-lastfm:before { + content: ""; } + +.fa-lastfm-square:before { + content: ""; } + +.fa-toggle-off:before { + content: ""; } + +.fa-toggle-on:before { + content: ""; } + +.fa-bicycle:before { + content: ""; } + +.fa-bus:before { + content: ""; } + +.fa-ioxhost:before { + content: ""; } + +.fa-angellist:before { + content: ""; } + +.fa-cc:before { + content: ""; } + +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: ""; } + +.fa-meanpath:before { + content: ""; } + +.fa-buysellads:before { + content: ""; } + +.fa-connectdevelop:before { + content: ""; } + +.fa-dashcube:before { + content: ""; } + +.fa-forumbee:before { + content: ""; } + +.fa-leanpub:before { + content: ""; } + +.fa-sellsy:before { + content: ""; } + +.fa-shirtsinbulk:before { + content: ""; } + +.fa-simplybuilt:before { + content: ""; } + +.fa-skyatlas:before { + content: ""; } + +.fa-cart-plus:before { + content: ""; } + +.fa-cart-arrow-down:before { + content: ""; } + +.fa-diamond:before { + content: ""; } + +.fa-ship:before { + content: ""; } + +.fa-user-secret:before { + content: ""; } + +.fa-motorcycle:before { + content: ""; } + +.fa-street-view:before { + content: ""; } + +.fa-heartbeat:before { + content: ""; } + +.fa-venus:before { + content: ""; } + +.fa-mars:before { + content: ""; } + +.fa-mercury:before { + content: ""; } + +.fa-intersex:before, +.fa-transgender:before { + content: ""; } + +.fa-transgender-alt:before { + content: ""; } + +.fa-venus-double:before { + content: ""; } + +.fa-mars-double:before { + content: ""; } + +.fa-venus-mars:before { + content: ""; } + +.fa-mars-stroke:before { + content: ""; } + +.fa-mars-stroke-v:before { + content: ""; } + +.fa-mars-stroke-h:before { + content: ""; } + +.fa-neuter:before { + content: ""; } + +.fa-genderless:before { + content: ""; } + +.fa-facebook-official:before { + content: ""; } + +.fa-pinterest-p:before { + content: ""; } + +.fa-whatsapp:before { + content: ""; } + +.fa-server:before { + content: ""; } + +.fa-user-plus:before { + content: ""; } + +.fa-user-times:before { + content: ""; } + +.fa-hotel:before, +.fa-bed:before { + content: ""; } + +.fa-viacoin:before { + content: ""; } + +.fa-train:before { + content: ""; } + +.fa-subway:before { + content: ""; } + +.fa-medium:before { + content: ""; } + +.fa-yc:before, +.fa-y-combinator:before { + content: ""; } + +.fa-optin-monster:before { + content: ""; } + +.fa-opencart:before { + content: ""; } + +.fa-expeditedssl:before { + content: ""; } + +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: ""; } + +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: ""; } + +.fa-battery-2:before, +.fa-battery-half:before { + content: ""; } + +.fa-battery-1:before, +.fa-battery-quarter:before { + content: ""; } + +.fa-battery-0:before, +.fa-battery-empty:before { + content: ""; } + +.fa-mouse-pointer:before { + content: ""; } + +.fa-i-cursor:before { + content: ""; } + +.fa-object-group:before { + content: ""; } + +.fa-object-ungroup:before { + content: ""; } + +.fa-sticky-note:before { + content: ""; } + +.fa-sticky-note-o:before { + content: ""; } + +.fa-cc-jcb:before { + content: ""; } + +.fa-cc-diners-club:before { + content: ""; } + +.fa-clone:before { + content: ""; } + +.fa-balance-scale:before { + content: ""; } + +.fa-hourglass-o:before { + content: ""; } + +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: ""; } + +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: ""; } + +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: ""; } + +.fa-hourglass:before { + content: ""; } + +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: ""; } + +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: ""; } + +.fa-hand-scissors-o:before { + content: ""; } + +.fa-hand-lizard-o:before { + content: ""; } + +.fa-hand-spock-o:before { + content: ""; } + +.fa-hand-pointer-o:before { + content: ""; } + +.fa-hand-peace-o:before { + content: ""; } + +.fa-trademark:before { + content: ""; } + +.fa-registered:before { + content: ""; } + +.fa-creative-commons:before { + content: ""; } + +.fa-gg:before { + content: ""; } + +.fa-gg-circle:before { + content: ""; } + +.fa-tripadvisor:before { + content: ""; } + +.fa-odnoklassniki:before { + content: ""; } + +.fa-odnoklassniki-square:before { + content: ""; } + +.fa-get-pocket:before { + content: ""; } + +.fa-wikipedia-w:before { + content: ""; } + +.fa-safari:before { + content: ""; } + +.fa-chrome:before { + content: ""; } + +.fa-firefox:before { + content: ""; } + +.fa-opera:before { + content: ""; } + +.fa-internet-explorer:before { + content: ""; } + +.fa-tv:before, +.fa-television:before { + content: ""; } + +.fa-contao:before { + content: ""; } + +.fa-500px:before { + content: ""; } + +.fa-amazon:before { + content: ""; } + +.fa-calendar-plus-o:before { + content: ""; } + +.fa-calendar-minus-o:before { + content: ""; } + +.fa-calendar-times-o:before { + content: ""; } + +.fa-calendar-check-o:before { + content: ""; } + +.fa-industry:before { + content: ""; } + +.fa-map-pin:before { + content: ""; } + +.fa-map-signs:before { + content: ""; } + +.fa-map-o:before { + content: ""; } + +.fa-map:before { + content: ""; } + +.fa-commenting:before { + content: ""; } + +.fa-commenting-o:before { + content: ""; } + +.fa-houzz:before { + content: ""; } + +.fa-vimeo:before { + content: ""; } + +.fa-black-tie:before { + content: ""; } + +.fa-fonticons:before { + content: ""; } + +.fa-reddit-alien:before { + content: ""; } + +.fa-edge:before { + content: ""; } + +.fa-credit-card-alt:before { + content: ""; } + +.fa-codiepie:before { + content: ""; } + +.fa-modx:before { + content: ""; } + +.fa-fort-awesome:before { + content: ""; } + +.fa-usb:before { + content: ""; } + +.fa-product-hunt:before { + content: ""; } + +.fa-mixcloud:before { + content: ""; } + +.fa-scribd:before { + content: ""; } + +.fa-pause-circle:before { + content: ""; } + +.fa-pause-circle-o:before { + content: ""; } + +.fa-stop-circle:before { + content: ""; } + +.fa-stop-circle-o:before { + content: ""; } + +.fa-shopping-bag:before { + content: ""; } + +.fa-shopping-basket:before { + content: ""; } + +.fa-hashtag:before { + content: ""; } + +.fa-bluetooth:before { + content: ""; } + +.fa-bluetooth-b:before { + content: ""; } + +.fa-percent:before { + content: ""; } + +.fa-gitlab:before { + content: ""; } + +.fa-wpbeginner:before { + content: ""; } + +.fa-wpforms:before { + content: ""; } + +.fa-envira:before { + content: ""; } + +.fa-universal-access:before { + content: ""; } + +.fa-wheelchair-alt:before { + content: ""; } + +.fa-question-circle-o:before { + content: ""; } + +.fa-blind:before { + content: ""; } + +.fa-audio-description:before { + content: ""; } + +.fa-volume-control-phone:before { + content: ""; } + +.fa-braille:before { + content: ""; } + +.fa-assistive-listening-systems:before { + content: ""; } + +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: ""; } + +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: ""; } + +.fa-glide:before { + content: ""; } + +.fa-glide-g:before { + content: ""; } + +.fa-signing:before, +.fa-sign-language:before { + content: ""; } + +.fa-low-vision:before { + content: ""; } + +.fa-viadeo:before { + content: ""; } + +.fa-viadeo-square:before { + content: ""; } + +.fa-snapchat:before { + content: ""; } + +.fa-snapchat-ghost:before { + content: ""; } + +.fa-snapchat-square:before { + content: ""; } + +.fa-pied-piper:before { + content: ""; } + +.fa-first-order:before { + content: ""; } + +.fa-yoast:before { + content: ""; } + +.fa-themeisle:before { + content: ""; } + +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: ""; } + +.fa-fa:before, +.fa-font-awesome:before { + content: ""; } + +.fa-handshake-o:before { + content: ""; } + +.fa-envelope-open:before { + content: ""; } + +.fa-envelope-open-o:before { + content: ""; } + +.fa-linode:before { + content: ""; } + +.fa-address-book:before { + content: ""; } + +.fa-address-book-o:before { + content: ""; } + +.fa-vcard:before, +.fa-address-card:before { + content: ""; } + +.fa-vcard-o:before, +.fa-address-card-o:before { + content: ""; } + +.fa-user-circle:before { + content: ""; } + +.fa-user-circle-o:before { + content: ""; } + +.fa-user-o:before { + content: ""; } + +.fa-id-badge:before { + content: ""; } + +.fa-drivers-license:before, +.fa-id-card:before { + content: ""; } + +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: ""; } + +.fa-quora:before { + content: ""; } + +.fa-free-code-camp:before { + content: ""; } + +.fa-telegram:before { + content: ""; } + +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: ""; } + +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: ""; } + +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: ""; } + +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: ""; } + +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: ""; } + +.fa-shower:before { + content: ""; } + +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: ""; } + +.fa-podcast:before { + content: ""; } + +.fa-window-maximize:before { + content: ""; } + +.fa-window-minimize:before { + content: ""; } + +.fa-window-restore:before { + content: ""; } + +.fa-times-rectangle:before, +.fa-window-close:before { + content: ""; } + +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: ""; } + +.fa-bandcamp:before { + content: ""; } + +.fa-grav:before { + content: ""; } + +.fa-etsy:before { + content: ""; } + +.fa-imdb:before { + content: ""; } + +.fa-ravelry:before { + content: ""; } + +.fa-eercast:before { + content: ""; } + +.fa-microchip:before { + content: ""; } + +.fa-snowflake-o:before { + content: ""; } + +.fa-superpowers:before { + content: ""; } + +.fa-wpexplorer:before { + content: ""; } + +.fa-meetup:before { + content: ""; } + +.menu-sm, .sidebar-wrap, .addons-wrap { + position: fixed; + bottom: 0; + left: -85%; + width: 85%; + max-height: 100%; } + .menu-sm.shift, .shift.sidebar-wrap, .shift.addons-wrap { + left: 0; } + +.sidebar-wrap { + top: 0; } + .sidebar-wrap .sidebar > :last-child { + margin-bottom: 5em; } + +.addons-wrap { + color: #666; + background-color: #fff; } + +.addons { + color: #666; + background-color: #fff; } + +.content-wrap.shift { + position: fixed; + top: 0; + bottom: 0; + left: 85%; + min-width: 100%; } + +@media (min-width: 768px) { + .menu-md, .sidebar-wrap, .addons-wrap { + left: 0; + width: 300px; } + + .sidebar-wrap .sidebar { + width: 320px; } + .sidebar-wrap .sidebar .header, + .sidebar-wrap .sidebar .toctree { + width: 300px; } + + .content-wrap { + margin-left: 300px; } + .content-wrap.shift { + position: relative; + left: 0; + min-width: 0; } } +@media (min-width: 1280px) { + .content-wrap { + max-width: 980px; } } +.highlight .kd { + color: #008000; } + +.highlight .nn, +.highlight .k { + color: #0000FF; + font-weight: normal; } + +.highlight .ne, +.highlight .nf, +.highlight .fm, +.highlight .nl { + color: #19177C; + font-weight: normal; } + +.highlight .mf, +.highlight .mh, +.highlight .il, +.highlight .mi, +.highlight .mo, +.highlight .m, +.highlight .mb, +.highlight .mx { + color: #d14; } + +.highlight .n { + color: #008000; + font-weight: normal; } + +@media (min-width: 66.5rem) { + .side-bar { + width: calc((100% - 90rem) / 2 + 16.5rem); + min-width: 16.5rem; } + + .main { + margin-left: Max(16.5rem, calc((100% - 90rem) / 2 + 16.5rem)); } } +.font-body { + font-family: "FlandersArtSans-Regular", BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif; + font-weight: 400; } + +.font-head { + font-family: "FlandersArtSans-SerifThin", sans-serif; + font-weight: 600; } + +.font-mono { + font-family: Consolas, "Liberation Mono", Menlo, monospace; } + +.fa { + display: inline-block; + font: normal normal normal 14px/1 "FontAwesome"; } + +.breadcrumb-item { + margin: 0; } + .breadcrumb-item::after { + padding-right: 3px; + padding-left: 3px; } + +.container { + font-weight: 400; + color: #666; + background: white; } + +@media (min-width: 1280px) { + .container { + background: rgba(60, 69, 78, 0.1); } } +.sidebar { + color: #666; + background: #fff; } + .sidebar a { + text-decoration: none; } + .sidebar li { + list-style: none; } + .sidebar .version { + color: #666; } + +.toctree a { + color: #666; + padding: 0.5em; } +.toctree .caption { + color: #666; + font-weight: 600; + line-height: 32px; } +.toctree .fa { + margin-right: 2px; } +.toctree > ul > .toc > a { + padding-left: 12px; } +.toctree > ul > .toc:not(.current) > a:hover { + background: rgba(255, 255, 255, 0.1); } +.toctree > ul > .toc:not(.current) > a:active { + background: #c8b200; } +.toctree > ul .toc.current a { + color: #666; } + .toctree > ul .toc.current a:hover { + background: rgba(255, 255, 255, 0.1); } + .toctree > ul .toc.current a.current { + font-weight: bold; + background: white; + border-top: 1px solid var(--toc-2); + border-bottom: 1px solid var(--toc-2); } +.toctree > ul > .toc.current { + background: var(--toc-1); } + +.toc.level-1.current > a { + padding-left: 12px; + background: var(--toc-1); } +.toc.level-1.current > ul { + background: var(--toc-2); } +.toc.level-1.current .level-2 > a { + padding-left: 36px; } +.toc.level-2.current > a { + padding-left: 36px; + background: var(--toc-2); } +.toc.level-2.current > ul { + background: var(--toc-3); } +.toc.level-2.current .level-3 > a { + padding-left: 60px; } +.toc.level-3.current > a { + padding-left: 60px; + background: var(--toc-3); } +.toc.level-3.current > ul { + background: var(--toc-4); } +.toc.level-3.current .level-4 > a { + padding-left: 84px; } +.toc.level-4.current > a { + padding-left: 84px; + background: var(--toc-4); } +.toc.level-4.current > ul { + background: var(--toc-5); } +.toc.level-4.current .level-5 > a { + padding-left: 108px; } +.toc.level-5.current > a { + padding-left: 108px; + background: var(--toc-5); } +.toc.level-5.current > ul { + background: var(--toc-6); } +.toc.level-5.current .level-6 > a { + padding-left: 132px; } +.toc.level-6.current > a { + padding-left: 132px; + background: var(--toc-6); } +.toc.level-6.current > ul { + background: var(--toc-7); } +.toc.level-6.current .level-7 > a { + padding-left: 156px; } +.toc.level-7.current > a { + padding-left: 156px; + background: var(--toc-7); } +.toc.level-7.current > ul { + background: var(--toc-8); } +.toc.level-7.current .level-8 > a { + padding-left: 180px; } +.toc.level-8.current > a { + padding-left: 180px; + background: var(--toc-8); } +.toc.level-8.current > ul { + background: var(--toc-9); } +.toc.level-8.current .level-9 > a { + padding-left: 204px; } +.toc.level-9.current > a { + padding-left: 204px; + background: var(--toc-9); } +.toc.level-9.current > ul { + background: var(--toc-10); } +.toc.level-9.current .level-10 > a { + padding-left: 228px; } +.toc.level-10.current > a { + padding-left: 228px; + background: var(--toc-10); } +.toc.level-10.current > ul { + background: var(--toc-11); } +.toc.level-10.current .level-11 > a { + padding-left: 252px; } +.toc.level-11.current > a { + padding-left: 252px; + background: var(--toc-11); } +.toc.level-11.current > ul { + background: var(--toc-12); } +.toc.level-11.current .level-12 > a { + padding-left: 276px; } + +.addons-wrap { + background-color: #14171a; } + .addons-wrap .status { + cursor: pointer; + background-color: #1b1f23; } + .addons-wrap .status .branch .fa { + color: white; } + .addons-wrap .status .branch .name { + color: #28a745; } + .addons-wrap .status:active { + background: #c8b200; } + .addons-wrap .addons { + color: grey; } + .addons-wrap .addons dl { + margin: 0; } + .addons-wrap .addons dd { + display: inline-block; } + .addons-wrap .addons dd a { + display: inline-block; + padding: 6px; + color: white; } + +.content-wrap { + font-size: 16px; + background: white; } + +.header { + color: white; + background: #ffe615; } + .header input { + border-radius: 50px; + border: 1px solid #ffe615; + font-size: 80%; } + +.title { + font-weight: 600; + color: #666; } + .title a { + color: #666; } + .title a:hover { + background: rgba(255, 255, 255, 0.1); } + +.markdown-body { + font-weight: 400; } + .markdown-body .d-lang, .markdown-body div.highlighter-rouge, .markdown-body .mermaid-wrap { + position: relative; } + .markdown-body .d-lang:after, .markdown-body div.highlighter-rouge:after, .markdown-body .mermaid-wrap:after { + position: absolute; + right: 0px; + top: 0px; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + font-size: 12px; + content: attr(data-lang); + padding: 0 5px; + color: #bbc0c5; } + .markdown-body a { + color: #0366d6; } + .markdown-body a:hover { + color: #107ffc; } + .markdown-body a code, + .markdown-body a tt { + color: #0366d6; } + .markdown-body h1, + .markdown-body h2, + .markdown-body h3, + .markdown-body h4, + .markdown-body h5, + .markdown-body h6, + .markdown-body dt { + font-family: "FlandersArtSans-SerifThin", sans-serif; } + .markdown-body table { + font-size: 14px; } + .markdown-body figure { + margin: 0; } + .markdown-body .anchor { + float: none; + padding-right: 0; + margin-left: 3px; + margin-right: 3px; } + .markdown-body code, + .markdown-body tt { + font-size: 12px; + border: 1px #e1e4e8 solid; + color: #e74c3c; + background-color: #f9fafb; } + .markdown-body pre > code { + color: #3c454e; } + .markdown-body .highlight pre, + .markdown-body pre { + font-size: 12px; + border: 1px #e1e4e8 solid; + background-color: #f6f8fa; } + .markdown-body .search-results li { + list-style: none; } + .markdown-body .task-list-item-checkbox { + margin-right: 3px; } + .markdown-body .mermaid-wrap { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); } + .markdown-body .mermaid-wrap .mermaid { + font-size: 12px; + font-family: Consolas, "Liberation Mono", Menlo, monospace; + white-space: pre; } + +.toasts { + font-size: 16px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); } +@font-face { + .toasts { + font-family: "FlandersArtSans-SerifThin"; + font-weight: 400; + font-style: normal; + font-display: block; + src: url("../webfonts/serif/FlandersArtSerif-Thin.woff2") format("woff2"), url("../webfonts/serif/FlandersArtSerif-Thin.woff") format("woff"); } } + .toasts .title { + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.14); + color: #666; + font-family: "FlandersArtSans-SerifThin"; } + .toasts .content :first-child { + margin-top: 0; } + .toasts .content :last-child { + margin-bottom: 0; } + .toasts.note { + background-color: white; } + .toasts.note .title { + background: #ffe71a; } + .toasts.tip { + background-color: #dbfaf4; } + .toasts.tip .title { + background: #1abc9c; } + .toasts.warning { + background-color: #fbe9d9; } + .toasts.warning .title { + background: #f0b37e; } + .toasts.danger { + background-color: #fdf3f2; } + .toasts.danger .title { + background: #f29f97; } + +html[dir="rtl"] ul, +html[dir="rtl"] ol { + padding-right: 0; } +html[dir="rtl"] dd { + margin-right: 0; } +html[dir="rtl"] .menu-sm, html[dir="rtl"] .sidebar-wrap, html[dir="rtl"] .addons-wrap { + left: unset; + right: -85%; } + html[dir="rtl"] .menu-sm.shift, html[dir="rtl"] .shift.sidebar-wrap, html[dir="rtl"] .shift.addons-wrap { + left: unset; + right: 0; } +html[dir="rtl"] .content-wrap.shift { + left: unset; + right: 85%; } +@media (min-width: 768px) { + html[dir="rtl"] .menu-md, html[dir="rtl"] .sidebar-wrap, html[dir="rtl"] .addons-wrap { + left: unset; + right: 0; } + html[dir="rtl"] .content-wrap { + margin-left: unset; + margin-right: 300px; } + html[dir="rtl"] .content-wrap.shift { + left: unset; + right: 0; } } +html[dir="rtl"] .toctree .fa { + margin-right: unset; + margin-left: 2px; } +html[dir="rtl"] .toctree > ul > .toc > a { + padding-left: unset; + padding-right: 12px; } +html[dir="rtl"] .toc.level-1.current > a { + padding-left: unset; + padding-right: 12px; } +html[dir="rtl"] .toc.level-1.current .level-2 > a { + padding-left: unset; + padding-right: 36px; } +html[dir="rtl"] .toc.level-2.current > a { + padding-left: unset; + padding-right: 36px; } +html[dir="rtl"] .toc.level-2.current .level-3 > a { + padding-left: unset; + padding-right: 60px; } +html[dir="rtl"] .toc.level-3.current > a { + padding-left: unset; + padding-right: 60px; } +html[dir="rtl"] .toc.level-3.current .level-4 > a { + padding-left: unset; + padding-right: 84px; } +html[dir="rtl"] .toc.level-4.current > a { + padding-left: unset; + padding-right: 84px; } +html[dir="rtl"] .toc.level-4.current .level-5 > a { + padding-left: unset; + padding-right: 108px; } +html[dir="rtl"] .toc.level-5.current > a { + padding-left: unset; + padding-right: 108px; } +html[dir="rtl"] .toc.level-5.current .level-6 > a { + padding-left: unset; + padding-right: 132px; } +html[dir="rtl"] .toc.level-6.current > a { + padding-left: unset; + padding-right: 132px; } +html[dir="rtl"] .toc.level-6.current .level-7 > a { + padding-left: unset; + padding-right: 156px; } +html[dir="rtl"] .toc.level-7.current > a { + padding-left: unset; + padding-right: 156px; } +html[dir="rtl"] .toc.level-7.current .level-8 > a { + padding-left: unset; + padding-right: 180px; } +html[dir="rtl"] .toc.level-8.current > a { + padding-left: unset; + padding-right: 180px; } +html[dir="rtl"] .toc.level-8.current .level-9 > a { + padding-left: unset; + padding-right: 204px; } +html[dir="rtl"] .toc.level-9.current > a { + padding-left: unset; + padding-right: 204px; } +html[dir="rtl"] .toc.level-9.current .level-10 > a { + padding-left: unset; + padding-right: 228px; } +html[dir="rtl"] .toc.level-10.current > a { + padding-left: unset; + padding-right: 228px; } +html[dir="rtl"] .toc.level-10.current .level-11 > a { + padding-left: unset; + padding-right: 252px; } +html[dir="rtl"] .toc.level-11.current > a { + padding-left: unset; + padding-right: 252px; } +html[dir="rtl"] .toc.level-11.current .level-12 > a { + padding-left: unset; + padding-right: 276px; } +html[dir="rtl"] .markdown-body .highlight { + direction: ltr; } +html[dir="rtl"] .markdown-body blockquote { + border-left: none; + border-right: 0.25em solid #dfe2e5; } +html[dir="rtl"] .markdown-body ul, +html[dir="rtl"] .markdown-body ol { + padding-left: 0; + padding-right: 2em; } +html[dir="rtl"] .markdown-body .task-list-item-checkbox { + margin-right: unset; + margin-left: 3px; } +html[dir="rtl"] .fa-arrow-circle-left:before { + content: ""; } +html[dir="rtl"] .fa-arrow-circle-right:before { + content: ""; } + +/* Fade in an element */ +.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; } } +/* Fade out an element */ +.anim-fade-out { + animation-name: fade-out; + animation-duration: 1s; + animation-timing-function: ease-out; } + .anim-fade-out.fast { + animation-duration: 0.3s; } + +@keyframes fade-out { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } +/* Fade in and slide up an element */ +.anim-fade-up { + opacity: 0; + animation-name: fade-up; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-out; + animation-delay: 1s; } + +@keyframes fade-up { + 0% { + opacity: 0.8; + transform: translateY(100%); } + 100% { + opacity: 1; + transform: translateY(0); } } +/* Fade an element out and slide down */ +.anim-fade-down { + animation-name: fade-down; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-in; } + +@keyframes fade-down { + 0% { + opacity: 1; + transform: translateY(0); } + 100% { + opacity: 0.5; + transform: translateY(100%); } } +/* Grow an element width from 0 to 100% */ +.anim-grow-x { + width: 0%; + animation-name: grow-x; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease; + animation-delay: 0.5s; } + +@keyframes grow-x { + to { + width: 100%; } } +/* Shrink an element from 100% to 0% */ +.anim-shrink-x { + animation-name: shrink-x; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease-in-out; + animation-delay: 0.5s; } + +@keyframes shrink-x { + to { + width: 0%; } } +/* Fade in an element and scale it fast */ +.anim-scale-in { + animation-name: scale-in; + animation-duration: 0.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); } } +/* Pulse an element's opacity */ +.anim-pulse { + animation-name: pulse; + animation-duration: 2s; + animation-timing-function: linear; + animation-iteration-count: infinite; } + +@keyframes pulse { + 0% { + opacity: 0.3; } + 10% { + opacity: 1; } + 100% { + opacity: 0.3; } } +/* Pulse in an element */ +.anim-pulse-in { + animation-name: pulse-in; + animation-duration: 0.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); } } +/* Increase scale of an element on hover */ +.hover-grow { + transition: transform 0.3s; + backface-visibility: hidden; } + .hover-grow:hover { + transform: scale(1.025); } + +/* Add a gray border to the left and right */ +.border-x { + border-right: 1px #e1e4e8 solid !important; + border-left: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the top and bottom */ +.border-y { + border-top: 1px #e1e4e8 solid !important; + border-bottom: 1px #e1e4e8 solid !important; } + +/* Responsive gray borders */ +/* Add a gray border on all sides at/above this breakpoint */ +.border { + border: 1px #e1e4e8 solid !important; } + +/* Set the border width to 0 on all sides at/above this breakpoint */ +.border-0 { + border: 0 !important; } + +/* Add a gray border to the top */ +.border-top { + border-top: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the right */ +.border-right { + border-right: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the bottom */ +.border-bottom { + border-bottom: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the left */ +.border-left { + border-left: 1px #e1e4e8 solid !important; } + +/* Remove the top border */ +.border-top-0 { + border-top: 0 !important; } + +/* Remove the right border */ +.border-right-0 { + border-right: 0 !important; } + +/* Remove the bottom border */ +.border-bottom-0 { + border-bottom: 0 !important; } + +/* Remove the left border */ +.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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-sm { + border: 1px #e1e4e8 solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-sm-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-sm-top { + border-top: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the right */ + .border-sm-right { + border-right: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the bottom */ + .border-sm-bottom { + border-bottom: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the left */ + .border-sm-left { + border-left: 1px #e1e4e8 solid !important; } + + /* Remove the top border */ + .border-sm-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-sm-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-sm-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-md { + border: 1px #e1e4e8 solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-md-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-md-top { + border-top: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the right */ + .border-md-right { + border-right: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the bottom */ + .border-md-bottom { + border-bottom: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the left */ + .border-md-left { + border-left: 1px #e1e4e8 solid !important; } + + /* Remove the top border */ + .border-md-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-md-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-md-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-lg { + border: 1px #e1e4e8 solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-lg-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-lg-top { + border-top: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the right */ + .border-lg-right { + border-right: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the bottom */ + .border-lg-bottom { + border-bottom: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the left */ + .border-lg-left { + border-left: 1px #e1e4e8 solid !important; } + + /* Remove the top border */ + .border-lg-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-lg-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-lg-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .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) { + /* Add a gray border on all sides at/above this breakpoint */ + .border-xl { + border: 1px #e1e4e8 solid !important; } + + /* Set the border width to 0 on all sides at/above this breakpoint */ + .border-xl-0 { + border: 0 !important; } + + /* Add a gray border to the top */ + .border-xl-top { + border-top: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the right */ + .border-xl-right { + border-right: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the bottom */ + .border-xl-bottom { + border-bottom: 1px #e1e4e8 solid !important; } + + /* Add a gray border to the left */ + .border-xl-left { + border-left: 1px #e1e4e8 solid !important; } + + /* Remove the top border */ + .border-xl-top-0 { + border-top: 0 !important; } + + /* Remove the right border */ + .border-xl-right-0 { + border-right: 0 !important; } + + /* Remove the bottom border */ + .border-xl-bottom-0 { + border-bottom: 0 !important; } + + /* Remove the left border */ + .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; } } +/* Add a 50% border-radius to make something into a circle */ +.circle { + border-radius: 50% !important; } + +/* Change the border style to dashed, in conjunction with another utility */ +.border-dashed { + border-style: dashed !important; } + +/* Use with .border to turn the border blue */ +.border-blue { + border-color: #0366d6 !important; } + +/* Use with .border to turn the border blue-light */ +.border-blue-light { + border-color: #c8e1ff !important; } + +/* Use with .border to turn the border green */ +.border-green { + border-color: #34d058 !important; } + +/* Use with .border to turn the border green light */ +.border-green-light { + border-color: #a2cbac !important; } + +/* Use with .border to turn the border red */ +.border-red { + border-color: #d73a49 !important; } + +/* Use with .border to turn the border red-light */ +.border-red-light { + border-color: #f97583 !important; } + +/* Use with .border to turn the border purple */ +.border-purple { + border-color: #6f42c1 !important; } + +/* Use with .border to turn the border yellow */ +.border-yellow { + border-color: #f9c513 !important; } + +/* Use with .border to turn the border gray-light */ +.border-gray-light { + border-color: #eaecef !important; } + +/* Use with .border to turn the border gray-dark */ +.border-gray-dark { + border-color: #d1d5da !important; } + +/* Use with .border to turn the border rgba black 0.15 */ +.border-black-fade { + border-color: rgba(27, 31, 35, 0.15) !important; } + +/* Use with .border to turn the border rgba white 0.15 */ +.border-white-fade { + border-color: rgba(255, 255, 255, 0.15) !important; } + +/* Use with .border to turn the border white w/varying transparency */ +.border-white-fade-15 { + border-color: rgba(255, 255, 255, 0.15) !important; } + +.border-white-fade-30 { + border-color: rgba(255, 255, 255, 0.3) !important; } + +.border-white-fade-50 { + border-color: rgba(255, 255, 255, 0.5) !important; } + +.border-white-fade-70 { + border-color: rgba(255, 255, 255, 0.7) !important; } + +.border-white-fade-85 { + border-color: rgba(255, 255, 255, 0.85) !important; } + +.box-shadow { + box-shadow: 0 1px 0 rgba(27, 31, 35, 0.04) !important; } + +.box-shadow-medium { + box-shadow: 0 3px 6px rgba(149, 157, 165, 0.15) !important; } + +.box-shadow-large { + box-shadow: 0 8px 24px rgba(149, 157, 165, 0.2) !important; } + +.box-shadow-extra-large { + box-shadow: 0 12px 48px rgba(149, 157, 165, 0.3) !important; } + +.box-shadow-none { + box-shadow: none !important; } + +/* Set the background to $bg-white */ +.bg-white { + background-color: #fff !important; } + +/* Set the background to $bg-blue */ +.bg-blue { + background-color: #0366d6 !important; } + +/* Set the background to $bg-blue-light */ +.bg-blue-light { + background-color: #f1f8ff !important; } + +/* Set the background to $bg-gray-dark */ +.bg-gray-dark { + background-color: #24292e !important; } + +/* Set the background to $bg-gray */ +.bg-gray { + background-color: #f6f8fa !important; } + +/* Set the background to $bg-gray-light */ +.bg-gray-light { + background-color: #fafbfc !important; } + +/* Set the background to $bg-green */ +.bg-green { + background-color: #28a745 !important; } + +/* Set the background to $bg-green-light */ +.bg-green-light { + background-color: #dcffe4 !important; } + +/* Set the background to $bg-red */ +.bg-red { + background-color: #d73a49 !important; } + +/* Set the background to $bg-red-light */ +.bg-red-light { + background-color: #ffeef0 !important; } + +/* Set the background to $bg-yellow */ +.bg-yellow { + background-color: #ffd33d !important; } + +/* Set the background to $bg-yellow-light */ +.bg-yellow-light { + background-color: #fff5b1 !important; } + +/* Set the background to $bg-yellow-dark */ +.bg-yellow-dark { + background-color: #dbab09 !important; } + +/* Set the background to $bg-purple */ +.bg-purple { + background-color: #6f42c1 !important; } + +/* Set the background to $bg-pink */ +.bg-pink { + background-color: #ea4aaa !important; } + +/* Set the background to $bg-purple-light */ +.bg-purple-light { + background-color: #f5f0ff !important; } + +/* Set the background to $bg-orange */ +.bg-orange { + background-color: #d15704 !important; } + +.color-gray-0 { + color: #fafbfc !important; } + +.bg-gray-0 { + background-color: #fafbfc !important; } + +.color-gray-1 { + color: #f6f8fa !important; } + +.bg-gray-1 { + background-color: #f6f8fa !important; } + +.color-gray-2 { + color: #e1e4e8 !important; } + +.bg-gray-2 { + background-color: #e1e4e8 !important; } + +.color-gray-3 { + color: #d1d5da !important; } + +.bg-gray-3 { + background-color: #d1d5da !important; } + +.color-gray-4 { + color: #959da5 !important; } + +.bg-gray-4 { + background-color: #959da5 !important; } + +.color-gray-5 { + color: #6a737d !important; } + +.bg-gray-5 { + background-color: #6a737d !important; } + +.color-gray-6 { + color: #586069 !important; } + +.bg-gray-6 { + background-color: #586069 !important; } + +.color-gray-7 { + color: #444d56 !important; } + +.bg-gray-7 { + background-color: #444d56 !important; } + +.color-gray-8 { + color: #2f363d !important; } + +.bg-gray-8 { + background-color: #2f363d !important; } + +.color-gray-9 { + color: #24292e !important; } + +.bg-gray-9 { + background-color: #24292e !important; } + +.color-blue-0 { + color: #f1f8ff !important; } + +.bg-blue-0 { + background-color: #f1f8ff !important; } + +.color-blue-1 { + color: #dbedff !important; } + +.bg-blue-1 { + background-color: #dbedff !important; } + +.color-blue-2 { + color: #c8e1ff !important; } + +.bg-blue-2 { + background-color: #c8e1ff !important; } + +.color-blue-3 { + color: #79b8ff !important; } + +.bg-blue-3 { + background-color: #79b8ff !important; } + +.color-blue-4 { + color: #2188ff !important; } + +.bg-blue-4 { + background-color: #2188ff !important; } + +.color-blue-5 { + color: #0366d6 !important; } + +.bg-blue-5 { + background-color: #0366d6 !important; } + +.color-blue-6 { + color: #005cc5 !important; } + +.bg-blue-6 { + background-color: #005cc5 !important; } + +.color-blue-7 { + color: #044289 !important; } + +.bg-blue-7 { + background-color: #044289 !important; } + +.color-blue-8 { + color: #032f62 !important; } + +.bg-blue-8 { + background-color: #032f62 !important; } + +.color-blue-9 { + color: #05264c !important; } + +.bg-blue-9 { + background-color: #05264c !important; } + +.color-green-0 { + color: #f0fff4 !important; } + +.bg-green-0 { + background-color: #f0fff4 !important; } + +.color-green-1 { + color: #dcffe4 !important; } + +.bg-green-1 { + background-color: #dcffe4 !important; } + +.color-green-2 { + color: #bef5cb !important; } + +.bg-green-2 { + background-color: #bef5cb !important; } + +.color-green-3 { + color: #85e89d !important; } + +.bg-green-3 { + background-color: #85e89d !important; } + +.color-green-4 { + color: #34d058 !important; } + +.bg-green-4 { + background-color: #34d058 !important; } + +.color-green-5 { + color: #28a745 !important; } + +.bg-green-5 { + background-color: #28a745 !important; } + +.color-green-6 { + color: #22863a !important; } + +.bg-green-6 { + background-color: #22863a !important; } + +.color-green-7 { + color: #176f2c !important; } + +.bg-green-7 { + background-color: #176f2c !important; } + +.color-green-8 { + color: #165c26 !important; } + +.bg-green-8 { + background-color: #165c26 !important; } + +.color-green-9 { + color: #144620 !important; } + +.bg-green-9 { + background-color: #144620 !important; } + +.color-yellow-0 { + color: #fffdef !important; } + +.bg-yellow-0 { + background-color: #fffdef !important; } + +.color-yellow-1 { + color: #fffbdd !important; } + +.bg-yellow-1 { + background-color: #fffbdd !important; } + +.color-yellow-2 { + color: #fff5b1 !important; } + +.bg-yellow-2 { + background-color: #fff5b1 !important; } + +.color-yellow-3 { + color: #ffea7f !important; } + +.bg-yellow-3 { + background-color: #ffea7f !important; } + +.color-yellow-4 { + color: #ffdf5d !important; } + +.bg-yellow-4 { + background-color: #ffdf5d !important; } + +.color-yellow-5 { + color: #ffd33d !important; } + +.bg-yellow-5 { + background-color: #ffd33d !important; } + +.color-yellow-6 { + color: #f9c513 !important; } + +.bg-yellow-6 { + background-color: #f9c513 !important; } + +.color-yellow-7 { + color: #dbab09 !important; } + +.bg-yellow-7 { + background-color: #dbab09 !important; } + +.color-yellow-8 { + color: #b08800 !important; } + +.bg-yellow-8 { + background-color: #b08800 !important; } + +.color-yellow-9 { + color: #735c0f !important; } + +.bg-yellow-9 { + background-color: #735c0f !important; } + +.color-orange-0 { + color: #fff8f2 !important; } + +.bg-orange-0 { + background-color: #fff8f2 !important; } + +.color-orange-1 { + color: #ffebda !important; } + +.bg-orange-1 { + background-color: #ffebda !important; } + +.color-orange-2 { + color: #ffd1ac !important; } + +.bg-orange-2 { + background-color: #ffd1ac !important; } + +.color-orange-3 { + color: #ffab70 !important; } + +.bg-orange-3 { + background-color: #ffab70 !important; } + +.color-orange-4 { + color: #fb8532 !important; } + +.bg-orange-4 { + background-color: #fb8532 !important; } + +.color-orange-5 { + color: #f66a0a !important; } + +.bg-orange-5 { + background-color: #f66a0a !important; } + +.color-orange-6 { + color: #e36209 !important; } + +.bg-orange-6 { + background-color: #e36209 !important; } + +.color-orange-7 { + color: #d15704 !important; } + +.bg-orange-7 { + background-color: #d15704 !important; } + +.color-orange-8 { + color: #c24e00 !important; } + +.bg-orange-8 { + background-color: #c24e00 !important; } + +.color-orange-9 { + color: #a04100 !important; } + +.bg-orange-9 { + background-color: #a04100 !important; } + +.color-red-0 { + color: #ffeef0 !important; } + +.bg-red-0 { + background-color: #ffeef0 !important; } + +.color-red-1 { + color: #ffdce0 !important; } + +.bg-red-1 { + background-color: #ffdce0 !important; } + +.color-red-2 { + color: #fdaeb7 !important; } + +.bg-red-2 { + background-color: #fdaeb7 !important; } + +.color-red-3 { + color: #f97583 !important; } + +.bg-red-3 { + background-color: #f97583 !important; } + +.color-red-4 { + color: #ea4a5a !important; } + +.bg-red-4 { + background-color: #ea4a5a !important; } + +.color-red-5 { + color: #d73a49 !important; } + +.bg-red-5 { + background-color: #d73a49 !important; } + +.color-red-6 { + color: #cb2431 !important; } + +.bg-red-6 { + background-color: #cb2431 !important; } + +.color-red-7 { + color: #b31d28 !important; } + +.bg-red-7 { + background-color: #b31d28 !important; } + +.color-red-8 { + color: #9e1c23 !important; } + +.bg-red-8 { + background-color: #9e1c23 !important; } + +.color-red-9 { + color: #86181d !important; } + +.bg-red-9 { + background-color: #86181d !important; } + +.color-purple-0 { + color: #f5f0ff !important; } + +.bg-purple-0 { + background-color: #f5f0ff !important; } + +.color-purple-1 { + color: #e6dcfd !important; } + +.bg-purple-1 { + background-color: #e6dcfd !important; } + +.color-purple-2 { + color: #d1bcf9 !important; } + +.bg-purple-2 { + background-color: #d1bcf9 !important; } + +.color-purple-3 { + color: #b392f0 !important; } + +.bg-purple-3 { + background-color: #b392f0 !important; } + +.color-purple-4 { + color: #8a63d2 !important; } + +.bg-purple-4 { + background-color: #8a63d2 !important; } + +.color-purple-5 { + color: #6f42c1 !important; } + +.bg-purple-5 { + background-color: #6f42c1 !important; } + +.color-purple-6 { + color: #5a32a3 !important; } + +.bg-purple-6 { + background-color: #5a32a3 !important; } + +.color-purple-7 { + color: #4c2889 !important; } + +.bg-purple-7 { + background-color: #4c2889 !important; } + +.color-purple-8 { + color: #3a1d6e !important; } + +.bg-purple-8 { + background-color: #3a1d6e !important; } + +.color-purple-9 { + color: #29134e !important; } + +.bg-purple-9 { + background-color: #29134e !important; } + +.color-pink-0 { + color: #ffeef8 !important; } + +.bg-pink-0 { + background-color: #ffeef8 !important; } + +.color-pink-1 { + color: #fedbf0 !important; } + +.bg-pink-1 { + background-color: #fedbf0 !important; } + +.color-pink-2 { + color: #f9b3dd !important; } + +.bg-pink-2 { + background-color: #f9b3dd !important; } + +.color-pink-3 { + color: #f692ce !important; } + +.bg-pink-3 { + background-color: #f692ce !important; } + +.color-pink-4 { + color: #ec6cb9 !important; } + +.bg-pink-4 { + background-color: #ec6cb9 !important; } + +.color-pink-5 { + color: #ea4aaa !important; } + +.bg-pink-5 { + background-color: #ea4aaa !important; } + +.color-pink-6 { + color: #d03592 !important; } + +.bg-pink-6 { + background-color: #d03592 !important; } + +.color-pink-7 { + color: #b93a86 !important; } + +.bg-pink-7 { + background-color: #b93a86 !important; } + +.color-pink-8 { + color: #99306f !important; } + +.bg-pink-8 { + background-color: #99306f !important; } + +.color-pink-9 { + color: #6d224f !important; } + +.bg-pink-9 { + background-color: #6d224f !important; } + +.bg-shade-gradient { + background-image: linear-gradient(180deg, rgba(27, 31, 35, 0.065), rgba(27, 31, 35, 0)) !important; + background-repeat: no-repeat !important; + background-size: 100% 200px !important; } + +/* Set the text color to $text-blue */ +.text-blue { + color: #0366d6 !important; } + +/* Set the text color to $text-red */ +.text-red { + color: #cb2431 !important; } + +/* Set the text color to $text-gray-light */ +.text-gray-light { + color: #6a737d !important; } + +/* Set the text color to $text-gray */ +.text-gray { + color: #586069 !important; } + +/* Set the text color to $text-gray-dark */ +.text-gray-dark { + color: #24292e !important; } + +/* Set the text color to $text-green */ +.text-green { + color: #22863a !important; } + +/* Set the text color to $text-yellow */ +.text-yellow { + color: #b08800 !important; } + +/* Set the text color to $text-orange */ +.text-orange { + color: #a04100 !important; } + +/* Set the text color to $text-orange-light */ +.text-orange-light { + color: #e36209 !important; } + +/* Set the text color to $text-purple */ +.text-purple { + color: #6f42c1 !important; } + +/* Set the text color to $text-pink */ +.text-pink { + color: #ea4aaa !important; } + +/* Set the text color to $text-white */ +.text-white { + color: #fff !important; } + +/* Set the text color to inherit */ +.text-inherit { + color: inherit !important; } + +.link-gray { + color: #586069 !important; } + .link-gray:hover { + color: #0366d6 !important; } + +.link-gray-dark { + color: #24292e !important; } + .link-gray-dark:hover { + color: #0366d6 !important; } + +/* Set the link color to $text-blue on hover + Useful when you want only part of a link to turn blue on hover */ +.link-hover-blue:hover { + color: #0366d6 !important; } + +/* Make a link $text-gray, then $text-blue on hover and removes the underline */ +.muted-link { + color: #586069 !important; } + .muted-link:hover { + color: #0366d6 !important; + text-decoration: none; } + +.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: 99; + background: rgba(27, 31, 35, 0.5); } + +.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 */ +.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; } } +/* Final position */ +.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; } } +/* Vertical align middle */ +.v-align-middle { + vertical-align: middle !important; } + +/* Vertical align top */ +.v-align-top { + vertical-align: top !important; } + +/* Vertical align bottom */ +.v-align-bottom { + vertical-align: bottom !important; } + +/* Vertical align to the top of the text */ +.v-align-text-top { + vertical-align: text-top !important; } + +/* Vertical align to the bottom of the text */ +.v-align-text-bottom { + vertical-align: text-bottom !important; } + +/* Vertical align to the parent's baseline */ +.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; } } +/* Clear floats around the element */ +.clearfix::before { + display: table; + content: ""; } +.clearfix::after { + display: table; + clear: both; + content: ""; } + +/* Float to the left */ +.float-left { + float: left !important; } + +/* Float to the right */ +.float-right { + float: right !important; } + +/* No float */ +.float-none { + float: none !important; } + +@media (min-width: 544px) { + /* Float to the left */ + .float-sm-left { + float: left !important; } + + /* Float to the right */ + .float-sm-right { + float: right !important; } + + /* No float */ + .float-sm-none { + float: none !important; } } +@media (min-width: 768px) { + /* Float to the left */ + .float-md-left { + float: left !important; } + + /* Float to the right */ + .float-md-right { + float: right !important; } + + /* No float */ + .float-md-none { + float: none !important; } } +@media (min-width: 1012px) { + /* Float to the left */ + .float-lg-left { + float: left !important; } + + /* Float to the right */ + .float-lg-right { + float: right !important; } + + /* No float */ + .float-lg-none { + float: none !important; } } +@media (min-width: 1280px) { + /* Float to the left */ + .float-xl-left { + float: left !important; } + + /* Float to the right */ + .float-xl-right { + float: right !important; } + + /* No float */ + .float-xl-none { + float: none !important; } } +/* Max width 100% */ +.width-fit { + max-width: 100% !important; } + +/* Set the width to 100% */ +.width-full { + width: 100% !important; } + +/* Max height 100% */ +.height-fit { + max-height: 100% !important; } + +/* Set the height to 100% */ +.height-full { + height: 100% !important; } + +/* Remove min-width from element */ +.min-width-0 { + min-width: 0 !important; } + +.width-auto { + width: auto !important; } + +/* Set the direction to rtl */ +.direction-rtl { + direction: rtl !important; } + +/* Set the direction to ltr */ +.direction-ltr { + direction: ltr !important; } + +@media (min-width: 544px) { + .width-sm-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-sm-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-sm-ltr { + direction: ltr !important; } } +@media (min-width: 768px) { + .width-md-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-md-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-md-ltr { + direction: ltr !important; } } +@media (min-width: 1012px) { + .width-lg-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-lg-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-lg-ltr { + direction: ltr !important; } } +@media (min-width: 1280px) { + .width-xl-auto { + width: auto !important; } + + /* Set the direction to rtl */ + .direction-xl-rtl { + direction: rtl !important; } + + /* Set the direction to ltr */ + .direction-xl-ltr { + direction: ltr !important; } } +/* Set a $size margin to all sides at $breakpoint */ +.m-0 { + margin: 0 !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-0 { + margin-top: 0 !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-0 { + margin-right: 0 !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-0 { + margin-bottom: 0 !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-0 { + margin-left: 0 !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-1 { + margin: 4px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-1 { + margin-top: 4px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-1 { + margin-right: 4px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-1 { + margin-bottom: 4px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-1 { + margin-left: 4px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n1 { + margin-top: -4px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n1 { + margin-right: -4px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n1 { + margin-bottom: -4px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n1 { + margin-left: -4px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-2 { + margin: 8px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-2 { + margin-top: 8px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-2 { + margin-right: 8px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-2 { + margin-bottom: 8px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-2 { + margin-left: 8px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n2 { + margin-top: -8px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n2 { + margin-right: -8px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n2 { + margin-bottom: -8px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n2 { + margin-left: -8px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-3 { + margin: 16px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-3 { + margin-top: 16px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-3 { + margin-right: 16px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-3 { + margin-bottom: 16px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-3 { + margin-left: 16px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n3 { + margin-top: -16px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n3 { + margin-right: -16px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n3 { + margin-bottom: -16px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n3 { + margin-left: -16px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-4 { + margin: 24px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-4 { + margin-top: 24px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-4 { + margin-right: 24px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-4 { + margin-bottom: 24px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-4 { + margin-left: 24px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n4 { + margin-top: -24px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n4 { + margin-right: -24px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n4 { + margin-bottom: -24px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n4 { + margin-left: -24px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-5 { + margin: 32px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-5 { + margin-top: 32px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-5 { + margin-right: 32px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-5 { + margin-bottom: 32px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-5 { + margin-left: 32px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n5 { + margin-top: -32px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n5 { + margin-right: -32px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n5 { + margin-bottom: -32px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n5 { + margin-left: -32px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-6 { + margin: 40px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-6 { + margin-top: 40px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-6 { + margin-right: 40px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-6 { + margin-bottom: 40px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-6 { + margin-left: 40px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n6 { + margin-top: -40px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n6 { + margin-right: -40px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n6 { + margin-bottom: -40px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n6 { + margin-left: -40px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + +/* responsive horizontal auto margins */ +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; } + +@media (min-width: 544px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 768px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-md-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-md-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-md-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-md-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-md-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 1012px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; } } +@media (min-width: 1280px) { + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-0 { + margin: 0 !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-0 { + margin-top: 0 !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-0 { + margin-right: 0 !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-0 { + margin-bottom: 0 !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-0 { + margin-left: 0 !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-1 { + margin: 4px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-1 { + margin-top: 4px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-1 { + margin-right: 4px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-1 { + margin-bottom: 4px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-1 { + margin-left: 4px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n1 { + margin-top: -4px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n1 { + margin-right: -4px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n1 { + margin-bottom: -4px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n1 { + margin-left: -4px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-1 { + margin-right: 4px !important; + margin-left: 4px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-1 { + margin-top: 4px !important; + margin-bottom: 4px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-2 { + margin: 8px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-2 { + margin-top: 8px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-2 { + margin-right: 8px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-2 { + margin-bottom: 8px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-2 { + margin-left: 8px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n2 { + margin-top: -8px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n2 { + margin-right: -8px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n2 { + margin-bottom: -8px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n2 { + margin-left: -8px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-2 { + margin-right: 8px !important; + margin-left: 8px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-3 { + margin: 16px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-3 { + margin-top: 16px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-3 { + margin-right: 16px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-3 { + margin-bottom: 16px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-3 { + margin-left: 16px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n3 { + margin-top: -16px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n3 { + margin-right: -16px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n3 { + margin-bottom: -16px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n3 { + margin-left: -16px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-3 { + margin-right: 16px !important; + margin-left: 16px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-3 { + margin-top: 16px !important; + margin-bottom: 16px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-4 { + margin: 24px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-4 { + margin-top: 24px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-4 { + margin-right: 24px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-4 { + margin-bottom: 24px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-4 { + margin-left: 24px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n4 { + margin-top: -24px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n4 { + margin-right: -24px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n4 { + margin-bottom: -24px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n4 { + margin-left: -24px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-4 { + margin-right: 24px !important; + margin-left: 24px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-4 { + margin-top: 24px !important; + margin-bottom: 24px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-5 { + margin: 32px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-5 { + margin-top: 32px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-5 { + margin-right: 32px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-5 { + margin-bottom: 32px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-5 { + margin-left: 32px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n5 { + margin-top: -32px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n5 { + margin-right: -32px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n5 { + margin-bottom: -32px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n5 { + margin-left: -32px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-5 { + margin-right: 32px !important; + margin-left: 32px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-5 { + margin-top: 32px !important; + margin-bottom: 32px !important; } + + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-6 { + margin: 40px !important; } + + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-6 { + margin-top: 40px !important; } + + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-6 { + margin-right: 40px !important; } + + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-6 { + margin-bottom: 40px !important; } + + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-6 { + margin-left: 40px !important; } + + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n6 { + margin-top: -40px !important; } + + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n6 { + margin-right: -40px !important; } + + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n6 { + margin-bottom: -40px !important; } + + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n6 { + margin-left: -40px !important; } + + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-6 { + margin-right: 40px !important; + margin-left: 40px !important; } + + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-6 { + margin-top: 40px !important; + margin-bottom: 40px !important; } + + /* responsive horizontal auto margins */ + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; } } +/* Set a $size padding to all sides at $breakpoint */ +.p-0 { + padding: 0 !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-0 { + padding-top: 0 !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-0 { + padding-right: 0 !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-0 { + padding-bottom: 0 !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-0 { + padding-left: 0 !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-1 { + padding: 4px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-1 { + padding-top: 4px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-1 { + padding-right: 4px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-1 { + padding-bottom: 4px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-1 { + padding-left: 4px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-2 { + padding: 8px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-2 { + padding-top: 8px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-2 { + padding-right: 8px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-2 { + padding-bottom: 8px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-2 { + padding-left: 8px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-3 { + padding: 16px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-3 { + padding-top: 16px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-3 { + padding-right: 16px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-3 { + padding-bottom: 16px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-3 { + padding-left: 16px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-4 { + padding: 24px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-4 { + padding-top: 24px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-4 { + padding-right: 24px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-4 { + padding-bottom: 24px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-4 { + padding-left: 24px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-5 { + padding: 32px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-5 { + padding-top: 32px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-5 { + padding-right: 32px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-5 { + padding-bottom: 32px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-5 { + padding-left: 32px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-6 { + padding: 40px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-6 { + padding-top: 40px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-6 { + padding-right: 40px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-6 { + padding-bottom: 40px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-6 { + padding-left: 40px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } + +@media (min-width: 544px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 768px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-md-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-md-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-md-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-md-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-md-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 1012px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-6 { + padding-top: 40px !important; + padding-bottom: 40px !important; } } +@media (min-width: 1280px) { + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-0 { + padding: 0 !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-0 { + padding-top: 0 !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-0 { + padding-right: 0 !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-0 { + padding-bottom: 0 !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-0 { + padding-left: 0 !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-1 { + padding: 4px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-1 { + padding-top: 4px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-1 { + padding-right: 4px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-1 { + padding-bottom: 4px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-1 { + padding-left: 4px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-1 { + padding-right: 4px !important; + padding-left: 4px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-1 { + padding-top: 4px !important; + padding-bottom: 4px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-2 { + padding: 8px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-2 { + padding-top: 8px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-2 { + padding-right: 8px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-2 { + padding-bottom: 8px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-2 { + padding-left: 8px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-2 { + padding-right: 8px !important; + padding-left: 8px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-3 { + padding: 16px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-3 { + padding-top: 16px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-3 { + padding-right: 16px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-3 { + padding-bottom: 16px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-3 { + padding-left: 16px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-3 { + padding-right: 16px !important; + padding-left: 16px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-3 { + padding-top: 16px !important; + padding-bottom: 16px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-4 { + padding: 24px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-4 { + padding-top: 24px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-4 { + padding-right: 24px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-4 { + padding-bottom: 24px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-4 { + padding-left: 24px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-4 { + padding-right: 24px !important; + padding-left: 24px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-4 { + padding-top: 24px !important; + padding-bottom: 24px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-5 { + padding: 32px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-5 { + padding-top: 32px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-5 { + padding-right: 32px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-5 { + padding-bottom: 32px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-5 { + padding-left: 32px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-5 { + padding-right: 32px !important; + padding-left: 32px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-5 { + padding-top: 32px !important; + padding-bottom: 32px !important; } + + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-6 { + padding: 40px !important; } + + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-6 { + padding-top: 40px !important; } + + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-6 { + padding-right: 40px !important; } + + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-6 { + padding-bottom: 40px !important; } + + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-6 { + padding-left: 40px !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-6 { + padding-right: 40px !important; + padding-left: 40px !important; } + + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-6 { + padding-top: 40px !important; + padding-bottom: 40px !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; } } + +/* Set the font size to 26px */ +.h1 { + font-size: 26px !important; } + @media (min-width: 768px) { + .h1 { + font-size: 32px !important; } } + +/* Set the font size to 22px */ +.h2 { + font-size: 22px !important; } + @media (min-width: 768px) { + .h2 { + font-size: 24px !important; } } + +/* Set the font size to 18px */ +.h3 { + font-size: 18px !important; } + @media (min-width: 768px) { + .h3 { + font-size: 20px !important; } } + +/* Set the font size to 16px */ +.h4 { + font-size: 16px !important; } + +/* Set the font size to 14px */ +.h5 { + font-size: 14px !important; } + +/* Set the font size to 12px */ +.h6 { + font-size: 12px !important; } + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-weight: 600 !important; } + +/* Set the font size to 26px */ +.f1 { + font-size: 26px !important; } + @media (min-width: 768px) { + .f1 { + font-size: 32px !important; } } + +/* Set the font size to 22px */ +.f2 { + font-size: 22px !important; } + @media (min-width: 768px) { + .f2 { + font-size: 24px !important; } } + +/* Set the font size to 18px */ +.f3 { + font-size: 18px !important; } + @media (min-width: 768px) { + .f3 { + font-size: 20px !important; } } + +/* Set the font size to 16px */ +.f4 { + font-size: 16px !important; } + @media (min-width: 768px) { + .f4 { + font-size: 16px !important; } } + +/* Set the font size to 14px */ +.f5 { + font-size: 14px !important; } + +/* Set the font size to 12px */ +.f6 { + font-size: 12px !important; } + +/* Set the font size to 40px and weight to light */ +.f00-light { + font-size: 40px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f00-light { + font-size: 48px !important; } } + +/* Set the font size to 32px and weight to light */ +.f0-light { + font-size: 32px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f0-light { + font-size: 40px !important; } } + +/* Set the font size to 26px and weight to light */ +.f1-light { + font-size: 26px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f1-light { + font-size: 32px !important; } } + +/* Set the font size to 22px and weight to light */ +.f2-light { + font-size: 22px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f2-light { + font-size: 24px !important; } } + +/* Set the font size to 18px and weight to light */ +.f3-light { + font-size: 18px !important; + font-weight: 300 !important; } + @media (min-width: 768px) { + .f3-light { + font-size: 20px !important; } } + +/* Set the font size to ${#h6-size} */ +.text-small { + font-size: 12px !important; } + +/* Large leading paragraphs */ +.lead { + margin-bottom: 30px; + font-size: 20px; + font-weight: 300; + color: #586069; } + +/* Set the line height to ultra condensed */ +.lh-condensed-ultra { + line-height: 1 !important; } + +/* Set the line height to condensed */ +.lh-condensed { + line-height: 1.25 !important; } + +/* Set the line height to default */ +.lh-default { + line-height: 1.5 !important; } + +/* Set the line height to zero */ +.lh-0 { + line-height: 0 !important; } + +@media (min-width: 544px) { + /* Set the line height to ultra condensed */ + .lh-sm-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-sm-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-sm-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-sm-0 { + line-height: 0 !important; } } +@media (min-width: 768px) { + /* Set the line height to ultra condensed */ + .lh-md-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-md-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-md-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-md-0 { + line-height: 0 !important; } } +@media (min-width: 1012px) { + /* Set the line height to ultra condensed */ + .lh-lg-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-lg-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-lg-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-lg-0 { + line-height: 0 !important; } } +@media (min-width: 1280px) { + /* Set the line height to ultra condensed */ + .lh-xl-condensed-ultra { + line-height: 1 !important; } + + /* Set the line height to condensed */ + .lh-xl-condensed { + line-height: 1.25 !important; } + + /* Set the line height to default */ + .lh-xl-default { + line-height: 1.5 !important; } + + /* Set the line height to zero */ + .lh-xl-0 { + line-height: 0 !important; } } +/* Text align to the right */ +.text-right { + text-align: right !important; } + +/* Text align to the left */ +.text-left { + text-align: left !important; } + +/* Text align to the center */ +.text-center { + text-align: center !important; } + +@media (min-width: 544px) { + /* Text align to the right */ + .text-sm-right { + text-align: right !important; } + + /* Text align to the left */ + .text-sm-left { + text-align: left !important; } + + /* Text align to the center */ + .text-sm-center { + text-align: center !important; } } +@media (min-width: 768px) { + /* Text align to the right */ + .text-md-right { + text-align: right !important; } + + /* Text align to the left */ + .text-md-left { + text-align: left !important; } + + /* Text align to the center */ + .text-md-center { + text-align: center !important; } } +@media (min-width: 1012px) { + /* Text align to the right */ + .text-lg-right { + text-align: right !important; } + + /* Text align to the left */ + .text-lg-left { + text-align: left !important; } + + /* Text align to the center */ + .text-lg-center { + text-align: center !important; } } +@media (min-width: 1280px) { + /* Text align to the right */ + .text-xl-right { + text-align: right !important; } + + /* Text align to the left */ + .text-xl-left { + text-align: left !important; } + + /* Text align to the center */ + .text-xl-center { + text-align: center !important; } } +/* Set the font weight to normal */ +.text-normal { + font-weight: 400 !important; } + +/* Set the font weight to bold */ +.text-bold { + font-weight: 600 !important; } + +/* Set the font to italic */ +.text-italic { + font-style: italic !important; } + +/* Make text uppercase */ +.text-uppercase { + text-transform: uppercase !important; } + +/* Underline text */ +.text-underline { + text-decoration: underline !important; } + +/* Don't underline text */ +.no-underline { + text-decoration: none !important; } + +/* Don't wrap white space */ +.no-wrap { + white-space: nowrap !important; } + +/* Normal white space */ +.ws-normal { + white-space: normal !important; } + +/* Force long "words" to wrap if they exceed the width of the container */ +.break-word { + word-break: break-word !important; + word-wrap: break-word !important; + overflow-wrap: break-word !important; } + +/* + * Specifically apply word-break: break-all; per MDN: + * + * > Note: In contrast to `word-break: break-word` and `overflow-wrap: break-word`, + * > `word-break: break-all` will create a break at the exact place where text would + * > otherwise overflow its container (even if putting an entire word on its own line + * > would negate the need for a break). + * + * see: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break#Values + */ +.wb-break-all { + word-break: break-all !important; } + +.text-emphasized { + font-weight: 600; + color: #24292e; } + +.list-style-none { + list-style: none !important; } + +/* Add a dark text shadow */ +.text-shadow-dark { + text-shadow: 0 1px 1px rgba(27, 31, 35, 0.25), 0 1px 25px rgba(27, 31, 35, 0.75); } + +/* Add a light text shadow */ +.text-shadow-light { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } + +/* Set to monospace font */ +.text-mono { + font-family: Consolas, "Liberation Mono", Menlo, monospace !important; } + +/* Disallow user from selecting text */ +.user-select-none { + user-select: none !important; } + +.d-block, .toc.level-1.current > ul, .toc.level-2.current > ul, .toc.level-3.current > ul, .toc.level-4.current > ul, .toc.level-5.current > ul, .toc.level-6.current > ul, .toc.level-7.current > ul, .toc.level-8.current > ul, .toc.level-9.current > ul, .toc.level-10.current > ul, .toc.level-11.current > ul { + 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, .toc > ul { + 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: 543px) { + .hide-sm { + display: none !important; } } +@media (min-width: 544px) and (max-width: 767px) { + .hide-md { + display: none !important; } } +@media (min-width: 768px) and (max-width: 1011px) { + .hide-lg { + display: none !important; } } +@media (min-width: 1012px) { + .hide-xl { + display: none !important; } } +/* Set the table-layout to fixed */ +.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; } + +.container { + background: #fff; } + +.pb-1 { + color: #666; } + +.addons-wrap .status { + background-color: #ccd2d8; } + +.addons-wrap .addons dd a { + color: #666; } + +.addons-wrap .status .branch .name { + color: #05c; } + +.side-bar { + background-color: white; + margin-top: 23px; } + +/*.site-header{ + background-color: #ffe615; + color: #666; + text-decoration: none; + + } + */ +.sidebar-wrap .sidebar .header, +.sidebar-wrap .sidebar .toctree { + width: 300px; } + +.nav-list-item { + color: #666; + text-decoration: none; } + +.scrollbar { + background-color: #F5F5F5; + float: left; + height: 300px; + margin-bottom: 25px; + margin-left: 22px; + margin-top: 40px; + width: 65px; + overflow-y: scroll; } + +.force-overflow { + min-height: 450px; } + +::-webkit-scrollbar { + width: 12px; } + +/* Track */ +/* Handle */ +::-webkit-scrollbar-thumb { + background: rgba(211, 224, 244, 0.8); + -webkit-box-shadow: inset 0 0 6px rgba(225, 223, 223, 0.5); } + +::-webkit-scrollbar-thumb:window-inactive { + background: rgba(245, 241, 241, 0.4); } + +#style-1::-webkit-scrollbar { + width: 6px; + background-color: #F5F5F5; } + +#style-1::-webkit-scrollbar-thumb { + background-color: #000000; } + +#style-1::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + background-color: #F5F5F5; } + +html, +body { + max-width: 100%; + overflow-x: hidden; } + +body { + background: white !important; } + +/* Add a black background color to the top navigation */ +.topnav { + background-color: white; + overflow: hidden; + border-bottom: 1px solid lightgray; } + +/* Style the links inside the navigation bar */ +.topnav a { + float: left; + font-size: 14px; + font-weight: 500; + display: grid; + align-items: center; + color: #333332; + text-align: center; + text-decoration: none; + font-size: 17px; } + +.space { + background-color: white; + overflow: hidden; } + +.space a { + float: left; + color: white; + text-align: center; + text-decoration: none; + font-size: 17px; } + +/* Change the color of links on hover */ +/* Add a color to the active/current link */ +.topnav a.active { + background-color: white; + color: white; } + +.logo { + height: 60px; + width: auto; + display: grid; } + +.logo_img { + height: 60px; + width: auto; + display: grid; } + +a:link a:visited a:hover a:active { + color: #05c; } + +.side-bar { + height: 90%; } + +.main { + max-width: 66.5rem !important; } + +.main-content { + margin-top: 100px; } + +.main-header { + margin-top: 23px; + position: fixed; + width: 100%; + background: white; + z-index: 100; } diff --git a/2.12.0/assets/css/theme.min.css b/2.12.0/assets/css/theme.min.css new file mode 100644 index 000000000..dbfb91c89 --- /dev/null +++ b/2.12.0/assets/css/theme.min.css @@ -0,0 +1 @@ +:root{--toc-1: #e6e9eb;--toc-2: #ccd2d8;--toc-3: #b3bcc4;--toc-4: #9aa5b1;--toc-5: #e6e9eb;--toc-6: #ccd2d8;--toc-7: #b3bcc4;--toc-8: #9aa5b1;--toc-9: #e6e9eb;--toc-10: #ccd2d8;--toc-11: #b3bcc4;--toc-12: #9aa5b1}/*! 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:#ff0;color:#1b1f23}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,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:"Lato",BlinkMacSystemFont,"Segoe UI",Helvetica,sans-serif;font-size:14px;line-height:1.5;color:#24292e;background-color:#fff}a{color:#0366d6;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 #dfe2e5}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 "SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#d1d5da;border-radius:6px;box-shadow:inset 0 -1px 0 #d1d5da}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{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:12px}pre{margin-top:0;margin-bottom:0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:12px}.octicon{vertical-align:text-bottom}.breadcrumb-item{display:inline-block;margin-left:-0.35em;white-space:nowrap;list-style:none}.breadcrumb-item::after{padding-right:.5em;padding-left:.5em;color:#e1e4e8;content:"/"}.breadcrumb-item:first-child{margin-left:0}.breadcrumb-item-selected,.breadcrumb-item[aria-current]:not([aria-current=false]){color:#586069}.breadcrumb-item-selected::after,.breadcrumb-item[aria-current]:not([aria-current=false])::after{content:none}.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;user-select:none;border:1px solid;border-radius:6px;appearance:none}.btn:hover{text-decoration:none}.btn:disabled,.btn.disabled,.btn[aria-disabled=true]{cursor:default}.btn:disabled .octicon,.btn.disabled .octicon,.btn[aria-disabled=true] .octicon{color:inherit}.btn i{font-style:normal;font-weight:500;opacity:.75}.btn .octicon{margin-right:4px;color:#6a737d;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:rgba(27,31,35,.08)}.btn .dropdown-caret{margin-left:4px;opacity:.8}.btn{color:#24292e;background-color:#fafbfc;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.04),inset 0 1px 0 rgba(255,255,255,.25);transition:background-color .2s cubic-bezier(0.3, 0, 0.5, 1)}.btn:hover,.btn.hover,[open]>.btn{background-color:#f3f4f6;transition-duration:.1s}.btn:active,.btn.selected,.btn[aria-selected=true]{background-color:#edeff2;box-shadow:inset 0 1px 0 rgba(225,228,232,.2);transition:none}.btn:disabled,.btn.disabled,.btn[aria-disabled=true]{color:#959da5;background-color:#fafbfc;border-color:rgba(27,31,35,.15)}.btn:focus,.btn.focus{outline:1px dotted transparent;outline-offset:2px;box-shadow:0 0 0 3px rgba(3,102,214,.3)}.btn-primary{color:#fff;background-color:#2ea44f;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.1),inset 0 1px 0 rgba(255,255,255,.03)}.btn-primary:hover,.btn-primary.hover,[open]>.btn-primary{background-color:#2c974b}.btn-primary:active,.btn-primary.selected,.btn-primary[aria-selected=true]{background-color:#2a8f47;box-shadow:inset 0 1px 0 rgba(20,70,32,.2)}.btn-primary:disabled,.btn-primary.disabled,.btn-primary[aria-disabled=true]{color:rgba(255,255,255,.8);background-color:#94d3a2;border-color:rgba(27,31,35,.1);box-shadow:0 1px 0 rgba(27,31,35,.1),inset 0 1px 0 rgba(255,255,255,.03)}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 3px rgba(46,164,79,.4)}.btn-primary .Counter{color:inherit;background-color:rgba(255,255,255,.2)}.btn-primary .octicon{color:rgba(255,255,255,.8)}.btn-danger{color:#cb2431;transition:none}.btn-danger:hover,[open]>.btn-danger{color:#fff;background-color:#cb2431;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.1),inset 0 1px 0 rgba(255,255,255,.03)}.btn-danger:hover .Counter,[open]>.btn-danger .Counter{background-color:rgba(255,255,255,.2)}.btn-danger:hover .octicon,[open]>.btn-danger .octicon{color:inherit}.btn-danger:active,.btn-danger.selected,.btn-danger[aria-selected=true]{color:#fff;background-color:#be222e;border-color:rgba(27,31,35,.15);box-shadow:inset 0 1px 0 rgba(134,24,29,.2)}.btn-danger:disabled,.btn-danger.disabled,.btn-danger[aria-disabled=true]{color:rgba(203,36,49,.5);background-color:#fafbfc;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.04),inset 0 1px 0 rgba(255,255,255,.25)}.btn-danger:disabled .Counter,.btn-danger.disabled .Counter,.btn-danger[aria-disabled=true] .Counter{background-color:rgba(203,36,49,.05)}.btn-danger:focus{box-shadow:0 0 0 3px rgba(203,36,49,.4)}.btn-danger .Counter{color:inherit;background-color:rgba(203,36,49,.1)}.btn-outline{color:#0366d6;transition:none}.btn-outline:hover,[open]>.btn-outline{color:#fff;background-color:#0366d6;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.1),inset 0 1px 0 rgba(255,255,255,.03)}.btn-outline:hover .Counter,[open]>.btn-outline .Counter{background-color:rgba(255,255,255,.2)}.btn-outline:hover .octicon,[open]>.btn-outline .octicon{color:inherit}.btn-outline:active,.btn-outline.selected,.btn-outline[aria-selected=true]{color:#fff;background-color:#035fc7;border-color:rgba(27,31,35,.15);box-shadow:inset 0 1px 0 rgba(5,38,76,.2)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline[aria-disabled=true]{color:rgba(3,102,214,.5);background-color:#fafbfc;border-color:rgba(27,31,35,.15);box-shadow:0 1px 0 rgba(27,31,35,.04),inset 0 1px 0 rgba(255,255,255,.25)}.btn-outline:disabled .Counter,.btn-outline.disabled .Counter,.btn-outline[aria-disabled=true] .Counter{background-color:rgba(3,102,214,.05)}.btn-outline:focus{box-shadow:0 0 0 3px rgba(3,102,214,.4)}.btn-outline .Counter{color:inherit;background-color:rgba(3,102,214,.1)}.btn-blue{color:#fff;background-color:#0361cc;background-image:linear-gradient(-180deg, #0679fc 0%, #0361cc 90%)}.btn-blue:focus,.btn-blue.focus{box-shadow:0 0 0 .2em rgba(6,121,252,.4)}.btn-blue:hover,.btn-blue.hover{background-color:#035cc2;background-image:linear-gradient(-180deg, #0374f4 0%, #035cc2 90%);background-position:-0.5em;border-color:rgba(27,31,35,.5)}.btn-blue:active,.btn-blue.selected,.btn-blue[aria-selected=true],[open]>.btn-blue{background-color:#045cc1;background-image:none;border-color:rgba(27,31,35,.5);box-shadow:inset 0 .15em .3em rgba(27,31,35,.15)}.btn-blue:disabled,.btn-blue.disabled,.btn-blue[aria-disabled=true]{color:rgba(255,255,255,.75);background-color:#81b0e6;background-image:none;border-color:rgba(27,31,35,.15);box-shadow:none}.btn-blue .Counter{color:#0366d6;background-color:#fff}.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:#0366d6;text-decoration:none;white-space:nowrap;cursor:pointer;user-select:none;background-color:transparent;border:0;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:rgba(88,96,105,.5);cursor:default}.btn-invisible{color:#0366d6;background-color:transparent;border:0;border-radius:0;box-shadow:none}.btn-invisible:hover,.btn-invisible:active,.btn-invisible:focus,.btn-invisible.selected,.btn-invisible[aria-selected=true],.btn-invisible.zeroclipboard-is-hover,.btn-invisible.zeroclipboard-is-active{color:#0366d6;background:none;outline:none;box-shadow:none}.btn-octicon{display:inline-block;padding:5px;margin-left:5px;line-height:1;color:#586069;vertical-align:middle;background:transparent;border:0}.btn-octicon:hover{color:#0366d6}.btn-octicon.disabled,.btn-octicon[aria-disabled=true]{color:#959da5;cursor:default}.btn-octicon.disabled:hover,.btn-octicon[aria-disabled=true]:hover{color:#959da5}.btn-octicon-danger:hover{color:#cb2431}.close-button{padding:0;background:transparent;border:0;outline:none}.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:#444d56;text-decoration:none;vertical-align:middle;background:#dfe2e5;border:0;border-radius:1px}.hidden-text-expander a:hover,.ellipsis-expander:hover{text-decoration:none;background-color:#c6cbd1}.hidden-text-expander a:active,.ellipsis-expander:active{color:#fff;background-color:#2188ff}.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:#24292e;vertical-align:middle;background-color:#fff;border:1px solid rgba(27,31,35,.15);border-left:0;border-top-right-radius:6px;border-bottom-right-radius:6px;box-shadow:0 1px 0 rgba(27,31,35,.04),inset 0 1px 0 rgba(255,255,255,.25)}.social-count:hover,.social-count:active{text-decoration:none}.social-count:hover{color:#0366d6;cursor:pointer}.social-count:focus{z-index:1;outline:0;box-shadow:0 0 0 3px rgba(3,102,214,.3)}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:#24292e;vertical-align:middle;background-color:#fff;background-repeat:no-repeat;background-position:right 8px center;border:1px solid #e1e4e8;border-radius:6px;outline:none;box-shadow:inset 0 1px 0 rgba(225,228,232,.2)}.form-control.focus,.form-control:focus,.form-select.focus,.form-select:focus{border-color:#0366d6;outline:none;box-shadow:0 0 0 3px rgba(3,102,214,.3)}.form-control[disabled],.form-select[disabled]{color:#959da5;background-color:#f3f4f6}@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:#fafbfc}.input-contrast:focus{background-color:#fff}.input-dark{color:#fff;background-color:rgba(255,255,255,.15);border-color:transparent;box-shadow:none}.input-dark::placeholder{color:inherit;opacity:.6}.input-dark.focus,.input-dark:focus{border-color:rgba(27,31,35,.3);box-shadow:0 0 0 .2em rgba(121,184,255,.4)}::placeholder{color:#6a737d;opacity:1}.input-sm{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:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,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:#fffbdd;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:#586069}.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:#586069}.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;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:#735c0f;background:#fffbdd;border:1px solid #f9c513;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:#fff;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:right 8px center;background-size:8px 10px;appearance:none}.form-select::-ms-expand{opacity:0}.form-select[multiple]{height:auto}.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:#fafbfc}.form-group .form-control:focus{background-color:#fff}.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:#cb2431}.form-group dd h4.is-success,.form-group .form-group-body h4.is-success{color:#22863a}.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:#cb2431;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:#22863a}.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:#144620;background-color:#dcffe4;border-color:#34d058}.form-group.successed .success::after{border-bottom-color:#dcffe4}.form-group.successed .success::before{border-bottom-color:#34d058}.form-group.warn .form-control{border-color:#f9c513}.form-group.warn .warning{background-color:#fff5b1;border-color:#f9c513}.form-group.warn .warning::after{border-bottom-color:#fff5b1}.form-group.warn .warning::before{border-bottom-color:#f9c513}.form-group.errored .form-control{border-color:#cb2431}.form-group.errored label{color:#cb2431}.form-group.errored .error{background-color:#ffeef0;border-color:#f97583}.form-group.errored .error::after{border-bottom-color:#ffeef0}.form-group.errored .error::before{border-bottom-color:#f97583}.note{min-height:17px;margin:4px 0 2px;font-size:12px;color:#586069}.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 (min--moz-device-pixel-ratio: 2),only screen and (-moz-min-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),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:#28a745;fill:#28a745}.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:#cb2431;fill:#d73a49}.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:#586069;background-color:#fafbfc;border:1px solid #c3c8cf;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:#cb2431}.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:#586069}.drag-and-drop-error-info a{color:#0366d6}.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 #dfe2e5;border-bottom-right-radius:0;border-bottom-left-radius:0}.upload-enabled.focused{border-radius:6px;box-shadow:inset 0 1px 2px rgba(27,31,35,.075),0 0 0 .2em rgba(3,102,214,.3)}.upload-enabled.focused .form-control{box-shadow:none}.upload-enabled.focused .drag-and-drop{border-color:#4a9eff}.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 #c3c8cf}.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:#586069}p.explain{position:relative;font-size:12px;color:#586069}p.explain strong{color:#24292e}p.explain .octicon{margin-right:5px;color:#959da5}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:#24292e;cursor:pointer;border:1px solid #e1e4e8}:checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.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-input{z-index:3;float:left;margin:10px -32px 0 16px}.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:"Lato",BlinkMacSystemFont,"Segoe UI",Helvetica,sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px "SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#d1d5da;border-radius:6px;box-shadow:inset 0 -1px 0 #d1d5da}.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:#cb2431}.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:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.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:#1b1f23;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{font-size:inherit}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.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:#6a737d}.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 ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.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 #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:transparent}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.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 #dfe2e5}.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:#24292e}.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:rgba(27,31,35,.05);border-radius:6px}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;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:#f6f8fa;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:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:600;background:#f6f8fa;border-top:0}.highlight{background-color:#f8f8f8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .c,.highlight .ch,.highlight .cd,.highlight .cpf{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#000;font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .k,.highlight .kv{color:#000;font-weight:bold}.highlight .mf,.highlight .mh,.highlight .il,.highlight .mi,.highlight .mo,.highlight .m,.highlight .mb,.highlight .mx{color:#099}.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .s,.highlight .sa,.highlight .dl{color:#d14}.highlight .na{color:teal}.highlight .bp{color:#999}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:purple}.highlight .ne,.highlight .nf,.highlight .fm,.highlight .nl{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .nv,.highlight .vm{color:teal}.highlight .ow,.highlight .o{color:#000;font-weight:bold}.highlight .w{color:#bbb}@font-face{font-family:"Lato";font-weight:400;font-style:normal;font-display:block;src:url("fonts/lato-normal.woff2") format("woff2"),url("fonts/lato-normal.woff") format("woff")}@font-face{font-family:"Lato";font-weight:400;font-style:italic;font-display:block;src:url("fonts/lato-normal-italic.woff2") format("woff2"),url("fonts/lato-normal-italic.woff") format("woff")}@font-face{font-family:"Lato";font-weight:600;font-style:normal;font-display:block;src:url("fonts/lato-bold.woff2") format("woff2"),url("fonts/lato-bold.woff") format("woff")}@font-face{font-family:"Lato";font-weight:600;font-style:italic;font-display:block;src:url("fonts/lato-bold-italic.woff2") format("woff2"),url("fonts/lato-bold-italic.woff") format("woff")}@font-face{font-family:"Roboto-Slab";font-weight:400;font-style:normal;font-display:block;src:url("fonts/Roboto-Slab-Regular.woff2") format("woff2"),url("fonts/Roboto-Slab-Regular.woff") format("woff")}@font-face{font-family:"Roboto-Slab";font-weight:600;font-style:normal;font-display:block;src:url("fonts/Roboto-Slab-Bold.woff2") format("woff2"),url("fonts/Roboto-Slab-Bold.woff") format("woff")}@font-face{font-family:"FontAwesome";font-weight:normal;font-style:normal;font-display:block;src:url("fonts/fontawesome-webfont.eot");src:url("fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("fonts/fontawesome-webfont.woff2") format("woff2"),url("fonts/fontawesome-webfont.woff") format("woff"),url("fonts/fontawesome-webfont.ttf") format("truetype"),url("fonts/fontawesome-webfont.svg#fontawesomeregular") format("svg")}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.toctree>ul .toc.current>a .fa-plus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.menu-sm,.addons-wrap,.sidebar-wrap{position:fixed;bottom:0;left:-85%;width:85%;max-height:100%}.menu-sm.shift,.shift.addons-wrap,.shift.sidebar-wrap{left:0}.sidebar-wrap{top:0}.sidebar-wrap .sidebar>:last-child{margin-bottom:5em}.content-wrap.shift{position:fixed;top:0;bottom:0;left:85%;min-width:100%}@media(min-width: 768px){.menu-md,.addons-wrap,.sidebar-wrap{left:0;width:300px}.sidebar-wrap .sidebar{width:320px}.sidebar-wrap .sidebar .header,.sidebar-wrap .sidebar .toctree{width:300px}.content-wrap{margin-left:300px}.content-wrap.shift{position:relative;left:0;min-width:0}}@media(min-width: 1280px){.content-wrap{max-width:980px}}.font-body{font-family:"Lato",BlinkMacSystemFont,"Segoe UI",Helvetica,sans-serif;font-weight:400}.font-head{font-family:"Roboto-Slab",sans-serif;font-weight:600}.font-mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace}.fa{display:inline-block;font:normal normal normal 14px/1 "FontAwesome"}.breadcrumb-item{margin:0}.breadcrumb-item::after{padding-right:3px;padding-left:3px}.container{font-weight:400;color:#3c454e;background:#fff}@media(min-width: 1280px){.container{background:rgba(60,69,78,.1)}}.sidebar{color:#fff;background:#262c31}.sidebar a{text-decoration:none}.sidebar li{list-style:none}.sidebar .version{color:rgba(255,255,255,.3)}.toctree a{color:#fff;padding:.5em}.toctree .caption{color:#55a5d9;font-weight:600;line-height:32px}.toctree .fa{margin-right:2px}.toctree>ul>.toc>a{padding-left:12px}.toctree>ul>.toc:not(.current)>a:hover{background:rgba(255,255,255,.1)}.toctree>ul>.toc:not(.current)>a:active{background:#1b557a}.toctree>ul .toc.current a{color:#404040}.toctree>ul .toc.current a:hover{background:rgba(255,255,255,.1)}.toctree>ul .toc.current a.current{font-weight:bold;background:#fff;border-top:1px solid var(--toc-2);border-bottom:1px solid var(--toc-2)}.toctree>ul>.toc.current{background:var(--toc-1)}.toc.level-1.current>a{padding-left:12px;background:var(--toc-1)}.toc.level-1.current>ul{background:var(--toc-2)}.toc.level-1.current .level-2>a{padding-left:36px}.toc.level-2.current>a{padding-left:36px;background:var(--toc-2)}.toc.level-2.current>ul{background:var(--toc-3)}.toc.level-2.current .level-3>a{padding-left:60px}.toc.level-3.current>a{padding-left:60px;background:var(--toc-3)}.toc.level-3.current>ul{background:var(--toc-4)}.toc.level-3.current .level-4>a{padding-left:84px}.toc.level-4.current>a{padding-left:84px;background:var(--toc-4)}.toc.level-4.current>ul{background:var(--toc-5)}.toc.level-4.current .level-5>a{padding-left:108px}.toc.level-5.current>a{padding-left:108px;background:var(--toc-5)}.toc.level-5.current>ul{background:var(--toc-6)}.toc.level-5.current .level-6>a{padding-left:132px}.toc.level-6.current>a{padding-left:132px;background:var(--toc-6)}.toc.level-6.current>ul{background:var(--toc-7)}.toc.level-6.current .level-7>a{padding-left:156px}.toc.level-7.current>a{padding-left:156px;background:var(--toc-7)}.toc.level-7.current>ul{background:var(--toc-8)}.toc.level-7.current .level-8>a{padding-left:180px}.toc.level-8.current>a{padding-left:180px;background:var(--toc-8)}.toc.level-8.current>ul{background:var(--toc-9)}.toc.level-8.current .level-9>a{padding-left:204px}.toc.level-9.current>a{padding-left:204px;background:var(--toc-9)}.toc.level-9.current>ul{background:var(--toc-10)}.toc.level-9.current .level-10>a{padding-left:228px}.toc.level-10.current>a{padding-left:228px;background:var(--toc-10)}.toc.level-10.current>ul{background:var(--toc-11)}.toc.level-10.current .level-11>a{padding-left:252px}.toc.level-11.current>a{padding-left:252px;background:var(--toc-11)}.toc.level-11.current>ul{background:var(--toc-12)}.toc.level-11.current .level-12>a{padding-left:276px}.addons-wrap{background-color:#14171a}.addons-wrap .status{cursor:pointer;background-color:#1b1f23}.addons-wrap .status .branch .fa{color:#fff}.addons-wrap .status .branch .name{color:#28a745}.addons-wrap .status:active{background:#1b557a}.addons-wrap .addons{color:gray}.addons-wrap .addons dl{margin:0}.addons-wrap .addons dd{display:inline-block}.addons-wrap .addons dd a{display:inline-block;padding:6px;color:#fff}.content-wrap{font-size:16px;background:#fff}.header{color:#fff;background:#2980b9}.header input{border-radius:50px;border:1px solid #2472a4;font-size:80%}.title{font-weight:600;color:#fff}.title a{color:#fff}.title a:hover{background:rgba(255,255,255,.1)}.markdown-body{font-weight:400}.markdown-body .d-lang,.markdown-body .mermaid-wrap,.markdown-body div.highlighter-rouge{position:relative}.markdown-body .d-lang:after,.markdown-body .mermaid-wrap:after,.markdown-body div.highlighter-rouge:after{position:absolute;right:0px;top:0px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;content:attr(data-lang);padding:0 5px;color:#bbc0c5}.markdown-body a{color:#0366d6}.markdown-body a:hover{color:#107ffc}.markdown-body a code,.markdown-body a tt{color:#0366d6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6,.markdown-body dt{font-family:"Roboto-Slab",sans-serif}.markdown-body table{font-size:14px}.markdown-body figure{margin:0}.markdown-body .anchor{float:none;padding-right:0;margin-left:3px;margin-right:3px}.markdown-body code,.markdown-body tt{font-size:12px;border:1px #e1e4e8 solid;color:#e74c3c;background-color:#f9fafb}.markdown-body pre>code{color:#3c454e}.markdown-body .highlight pre,.markdown-body pre{font-size:12px;border:1px #e1e4e8 solid;background-color:#f6f8fa}.markdown-body .search-results li{list-style:none}.markdown-body .task-list-item-checkbox{margin-right:3px}.markdown-body .mermaid-wrap{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.markdown-body .mermaid-wrap .mermaid{font-size:12px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;white-space:pre}.toasts{font-size:16px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.toasts .title{box-shadow:0 0 1px 1px rgba(0,0,0,.14)}.toasts .content :first-child{margin-top:0}.toasts .content :last-child{margin-bottom:0}.toasts.note{background-color:#e7f2fa}.toasts.note .title{background:#6ab0de}.toasts.tip{background-color:#dbfaf4}.toasts.tip .title{background:#1abc9c}.toasts.warning{background-color:#fbe9d9}.toasts.warning .title{background:#f0b37e}.toasts.danger{background-color:#fdf3f2}.toasts.danger .title{background:#f29f97}html[dir=rtl] ul,html[dir=rtl] ol{padding-right:0}html[dir=rtl] dd{margin-right:0}html[dir=rtl] .menu-sm,html[dir=rtl] .sidebar-wrap,html[dir=rtl] .addons-wrap{left:unset;right:-85%}html[dir=rtl] .menu-sm.shift,html[dir=rtl] .shift.sidebar-wrap,html[dir=rtl] .shift.addons-wrap{left:unset;right:0}html[dir=rtl] .content-wrap.shift{left:unset;right:85%}@media(min-width: 768px){html[dir=rtl] .menu-md,html[dir=rtl] .sidebar-wrap,html[dir=rtl] .addons-wrap{left:unset;right:0}html[dir=rtl] .content-wrap{margin-left:unset;margin-right:300px}html[dir=rtl] .content-wrap.shift{left:unset;right:0}}html[dir=rtl] .toctree .fa{margin-right:unset;margin-left:2px}html[dir=rtl] .toctree>ul>.toc>a{padding-left:unset;padding-right:12px}html[dir=rtl] .toc.level-1.current>a{padding-left:unset;padding-right:12px}html[dir=rtl] .toc.level-1.current .level-2>a{padding-left:unset;padding-right:36px}html[dir=rtl] .toc.level-2.current>a{padding-left:unset;padding-right:36px}html[dir=rtl] .toc.level-2.current .level-3>a{padding-left:unset;padding-right:60px}html[dir=rtl] .toc.level-3.current>a{padding-left:unset;padding-right:60px}html[dir=rtl] .toc.level-3.current .level-4>a{padding-left:unset;padding-right:84px}html[dir=rtl] .toc.level-4.current>a{padding-left:unset;padding-right:84px}html[dir=rtl] .toc.level-4.current .level-5>a{padding-left:unset;padding-right:108px}html[dir=rtl] .toc.level-5.current>a{padding-left:unset;padding-right:108px}html[dir=rtl] .toc.level-5.current .level-6>a{padding-left:unset;padding-right:132px}html[dir=rtl] .toc.level-6.current>a{padding-left:unset;padding-right:132px}html[dir=rtl] .toc.level-6.current .level-7>a{padding-left:unset;padding-right:156px}html[dir=rtl] .toc.level-7.current>a{padding-left:unset;padding-right:156px}html[dir=rtl] .toc.level-7.current .level-8>a{padding-left:unset;padding-right:180px}html[dir=rtl] .toc.level-8.current>a{padding-left:unset;padding-right:180px}html[dir=rtl] .toc.level-8.current .level-9>a{padding-left:unset;padding-right:204px}html[dir=rtl] .toc.level-9.current>a{padding-left:unset;padding-right:204px}html[dir=rtl] .toc.level-9.current .level-10>a{padding-left:unset;padding-right:228px}html[dir=rtl] .toc.level-10.current>a{padding-left:unset;padding-right:228px}html[dir=rtl] .toc.level-10.current .level-11>a{padding-left:unset;padding-right:252px}html[dir=rtl] .toc.level-11.current>a{padding-left:unset;padding-right:252px}html[dir=rtl] .toc.level-11.current .level-12>a{padding-left:unset;padding-right:276px}html[dir=rtl] .markdown-body .highlight{direction:ltr}html[dir=rtl] .markdown-body blockquote{border-left:none;border-right:.25em solid #dfe2e5}html[dir=rtl] .markdown-body ul,html[dir=rtl] .markdown-body ol{padding-left:0;padding-right:2em}html[dir=rtl] .markdown-body .task-list-item-checkbox{margin-right:unset;margin-left:3px}html[dir=rtl] .fa-arrow-circle-left:before{content:""}html[dir=rtl] .fa-arrow-circle-right:before{content:""}.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-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{transition:transform .3s;backface-visibility:hidden}.hover-grow:hover{transform:scale(1.025)}.border-x{border-right:1px #e1e4e8 solid !important;border-left:1px #e1e4e8 solid !important}.border-y{border-top:1px #e1e4e8 solid !important;border-bottom:1px #e1e4e8 solid !important}.border{border:1px #e1e4e8 solid !important}.border-0{border:0 !important}.border-top{border-top:1px #e1e4e8 solid !important}.border-right{border-right:1px #e1e4e8 solid !important}.border-bottom{border-bottom:1px #e1e4e8 solid !important}.border-left{border-left:1px #e1e4e8 solid !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 #e1e4e8 solid !important}.border-sm-0{border:0 !important}.border-sm-top{border-top:1px #e1e4e8 solid !important}.border-sm-right{border-right:1px #e1e4e8 solid !important}.border-sm-bottom{border-bottom:1px #e1e4e8 solid !important}.border-sm-left{border-left:1px #e1e4e8 solid !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 #e1e4e8 solid !important}.border-md-0{border:0 !important}.border-md-top{border-top:1px #e1e4e8 solid !important}.border-md-right{border-right:1px #e1e4e8 solid !important}.border-md-bottom{border-bottom:1px #e1e4e8 solid !important}.border-md-left{border-left:1px #e1e4e8 solid !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 #e1e4e8 solid !important}.border-lg-0{border:0 !important}.border-lg-top{border-top:1px #e1e4e8 solid !important}.border-lg-right{border-right:1px #e1e4e8 solid !important}.border-lg-bottom{border-bottom:1px #e1e4e8 solid !important}.border-lg-left{border-left:1px #e1e4e8 solid !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 #e1e4e8 solid !important}.border-xl-0{border:0 !important}.border-xl-top{border-top:1px #e1e4e8 solid !important}.border-xl-right{border-right:1px #e1e4e8 solid !important}.border-xl-bottom{border-bottom:1px #e1e4e8 solid !important}.border-xl-left{border-left:1px #e1e4e8 solid !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}.border-blue{border-color:#0366d6 !important}.border-blue-light{border-color:#c8e1ff !important}.border-green{border-color:#34d058 !important}.border-green-light{border-color:#a2cbac !important}.border-red{border-color:#d73a49 !important}.border-red-light{border-color:#f97583 !important}.border-purple{border-color:#6f42c1 !important}.border-yellow{border-color:#f9c513 !important}.border-gray-light{border-color:#eaecef !important}.border-gray-dark{border-color:#d1d5da !important}.border-black-fade{border-color:rgba(27,31,35,.15) !important}.border-white-fade{border-color:rgba(255,255,255,.15) !important}.border-white-fade-15{border-color:rgba(255,255,255,.15) !important}.border-white-fade-30{border-color:rgba(255,255,255,.3) !important}.border-white-fade-50{border-color:rgba(255,255,255,.5) !important}.border-white-fade-70{border-color:rgba(255,255,255,.7) !important}.border-white-fade-85{border-color:rgba(255,255,255,.85) !important}.box-shadow{box-shadow:0 1px 0 rgba(27,31,35,.04) !important}.box-shadow-medium{box-shadow:0 3px 6px rgba(149,157,165,.15) !important}.box-shadow-large{box-shadow:0 8px 24px rgba(149,157,165,.2) !important}.box-shadow-extra-large{box-shadow:0 12px 48px rgba(149,157,165,.3) !important}.box-shadow-none{box-shadow:none !important}.bg-white{background-color:#fff !important}.bg-blue{background-color:#0366d6 !important}.bg-blue-light{background-color:#f1f8ff !important}.bg-gray-dark{background-color:#24292e !important}.bg-gray{background-color:#f6f8fa !important}.bg-gray-light{background-color:#fafbfc !important}.bg-green{background-color:#28a745 !important}.bg-green-light{background-color:#dcffe4 !important}.bg-red{background-color:#d73a49 !important}.bg-red-light{background-color:#ffeef0 !important}.bg-yellow{background-color:#ffd33d !important}.bg-yellow-light{background-color:#fff5b1 !important}.bg-yellow-dark{background-color:#dbab09 !important}.bg-purple{background-color:#6f42c1 !important}.bg-pink{background-color:#ea4aaa !important}.bg-purple-light{background-color:#f5f0ff !important}.bg-orange{background-color:#d15704 !important}.color-gray-0{color:#fafbfc !important}.bg-gray-0{background-color:#fafbfc !important}.color-gray-1{color:#f6f8fa !important}.bg-gray-1{background-color:#f6f8fa !important}.color-gray-2{color:#e1e4e8 !important}.bg-gray-2{background-color:#e1e4e8 !important}.color-gray-3{color:#d1d5da !important}.bg-gray-3{background-color:#d1d5da !important}.color-gray-4{color:#959da5 !important}.bg-gray-4{background-color:#959da5 !important}.color-gray-5{color:#6a737d !important}.bg-gray-5{background-color:#6a737d !important}.color-gray-6{color:#586069 !important}.bg-gray-6{background-color:#586069 !important}.color-gray-7{color:#444d56 !important}.bg-gray-7{background-color:#444d56 !important}.color-gray-8{color:#2f363d !important}.bg-gray-8{background-color:#2f363d !important}.color-gray-9{color:#24292e !important}.bg-gray-9{background-color:#24292e !important}.color-blue-0{color:#f1f8ff !important}.bg-blue-0{background-color:#f1f8ff !important}.color-blue-1{color:#dbedff !important}.bg-blue-1{background-color:#dbedff !important}.color-blue-2{color:#c8e1ff !important}.bg-blue-2{background-color:#c8e1ff !important}.color-blue-3{color:#79b8ff !important}.bg-blue-3{background-color:#79b8ff !important}.color-blue-4{color:#2188ff !important}.bg-blue-4{background-color:#2188ff !important}.color-blue-5{color:#0366d6 !important}.bg-blue-5{background-color:#0366d6 !important}.color-blue-6{color:#005cc5 !important}.bg-blue-6{background-color:#005cc5 !important}.color-blue-7{color:#044289 !important}.bg-blue-7{background-color:#044289 !important}.color-blue-8{color:#032f62 !important}.bg-blue-8{background-color:#032f62 !important}.color-blue-9{color:#05264c !important}.bg-blue-9{background-color:#05264c !important}.color-green-0{color:#f0fff4 !important}.bg-green-0{background-color:#f0fff4 !important}.color-green-1{color:#dcffe4 !important}.bg-green-1{background-color:#dcffe4 !important}.color-green-2{color:#bef5cb !important}.bg-green-2{background-color:#bef5cb !important}.color-green-3{color:#85e89d !important}.bg-green-3{background-color:#85e89d !important}.color-green-4{color:#34d058 !important}.bg-green-4{background-color:#34d058 !important}.color-green-5{color:#28a745 !important}.bg-green-5{background-color:#28a745 !important}.color-green-6{color:#22863a !important}.bg-green-6{background-color:#22863a !important}.color-green-7{color:#176f2c !important}.bg-green-7{background-color:#176f2c !important}.color-green-8{color:#165c26 !important}.bg-green-8{background-color:#165c26 !important}.color-green-9{color:#144620 !important}.bg-green-9{background-color:#144620 !important}.color-yellow-0{color:#fffdef !important}.bg-yellow-0{background-color:#fffdef !important}.color-yellow-1{color:#fffbdd !important}.bg-yellow-1{background-color:#fffbdd !important}.color-yellow-2{color:#fff5b1 !important}.bg-yellow-2{background-color:#fff5b1 !important}.color-yellow-3{color:#ffea7f !important}.bg-yellow-3{background-color:#ffea7f !important}.color-yellow-4{color:#ffdf5d !important}.bg-yellow-4{background-color:#ffdf5d !important}.color-yellow-5{color:#ffd33d !important}.bg-yellow-5{background-color:#ffd33d !important}.color-yellow-6{color:#f9c513 !important}.bg-yellow-6{background-color:#f9c513 !important}.color-yellow-7{color:#dbab09 !important}.bg-yellow-7{background-color:#dbab09 !important}.color-yellow-8{color:#b08800 !important}.bg-yellow-8{background-color:#b08800 !important}.color-yellow-9{color:#735c0f !important}.bg-yellow-9{background-color:#735c0f !important}.color-orange-0{color:#fff8f2 !important}.bg-orange-0{background-color:#fff8f2 !important}.color-orange-1{color:#ffebda !important}.bg-orange-1{background-color:#ffebda !important}.color-orange-2{color:#ffd1ac !important}.bg-orange-2{background-color:#ffd1ac !important}.color-orange-3{color:#ffab70 !important}.bg-orange-3{background-color:#ffab70 !important}.color-orange-4{color:#fb8532 !important}.bg-orange-4{background-color:#fb8532 !important}.color-orange-5{color:#f66a0a !important}.bg-orange-5{background-color:#f66a0a !important}.color-orange-6{color:#e36209 !important}.bg-orange-6{background-color:#e36209 !important}.color-orange-7{color:#d15704 !important}.bg-orange-7{background-color:#d15704 !important}.color-orange-8{color:#c24e00 !important}.bg-orange-8{background-color:#c24e00 !important}.color-orange-9{color:#a04100 !important}.bg-orange-9{background-color:#a04100 !important}.color-red-0{color:#ffeef0 !important}.bg-red-0{background-color:#ffeef0 !important}.color-red-1{color:#ffdce0 !important}.bg-red-1{background-color:#ffdce0 !important}.color-red-2{color:#fdaeb7 !important}.bg-red-2{background-color:#fdaeb7 !important}.color-red-3{color:#f97583 !important}.bg-red-3{background-color:#f97583 !important}.color-red-4{color:#ea4a5a !important}.bg-red-4{background-color:#ea4a5a !important}.color-red-5{color:#d73a49 !important}.bg-red-5{background-color:#d73a49 !important}.color-red-6{color:#cb2431 !important}.bg-red-6{background-color:#cb2431 !important}.color-red-7{color:#b31d28 !important}.bg-red-7{background-color:#b31d28 !important}.color-red-8{color:#9e1c23 !important}.bg-red-8{background-color:#9e1c23 !important}.color-red-9{color:#86181d !important}.bg-red-9{background-color:#86181d !important}.color-purple-0{color:#f5f0ff !important}.bg-purple-0{background-color:#f5f0ff !important}.color-purple-1{color:#e6dcfd !important}.bg-purple-1{background-color:#e6dcfd !important}.color-purple-2{color:#d1bcf9 !important}.bg-purple-2{background-color:#d1bcf9 !important}.color-purple-3{color:#b392f0 !important}.bg-purple-3{background-color:#b392f0 !important}.color-purple-4{color:#8a63d2 !important}.bg-purple-4{background-color:#8a63d2 !important}.color-purple-5{color:#6f42c1 !important}.bg-purple-5{background-color:#6f42c1 !important}.color-purple-6{color:#5a32a3 !important}.bg-purple-6{background-color:#5a32a3 !important}.color-purple-7{color:#4c2889 !important}.bg-purple-7{background-color:#4c2889 !important}.color-purple-8{color:#3a1d6e !important}.bg-purple-8{background-color:#3a1d6e !important}.color-purple-9{color:#29134e !important}.bg-purple-9{background-color:#29134e !important}.color-pink-0{color:#ffeef8 !important}.bg-pink-0{background-color:#ffeef8 !important}.color-pink-1{color:#fedbf0 !important}.bg-pink-1{background-color:#fedbf0 !important}.color-pink-2{color:#f9b3dd !important}.bg-pink-2{background-color:#f9b3dd !important}.color-pink-3{color:#f692ce !important}.bg-pink-3{background-color:#f692ce !important}.color-pink-4{color:#ec6cb9 !important}.bg-pink-4{background-color:#ec6cb9 !important}.color-pink-5{color:#ea4aaa !important}.bg-pink-5{background-color:#ea4aaa !important}.color-pink-6{color:#d03592 !important}.bg-pink-6{background-color:#d03592 !important}.color-pink-7{color:#b93a86 !important}.bg-pink-7{background-color:#b93a86 !important}.color-pink-8{color:#99306f !important}.bg-pink-8{background-color:#99306f !important}.color-pink-9{color:#6d224f !important}.bg-pink-9{background-color:#6d224f !important}.bg-shade-gradient{background-image:linear-gradient(180deg, rgba(27, 31, 35, 0.065), rgba(27, 31, 35, 0)) !important;background-repeat:no-repeat !important;background-size:100% 200px !important}.text-blue{color:#0366d6 !important}.text-red{color:#cb2431 !important}.text-gray-light{color:#6a737d !important}.text-gray{color:#586069 !important}.text-gray-dark{color:#24292e !important}.text-green{color:#22863a !important}.text-yellow{color:#b08800 !important}.text-orange{color:#a04100 !important}.text-orange-light{color:#e36209 !important}.text-purple{color:#6f42c1 !important}.text-pink{color:#ea4aaa !important}.text-white{color:#fff !important}.text-inherit{color:inherit !important}.link-gray{color:#586069 !important}.link-gray:hover{color:#0366d6 !important}.link-gray-dark{color:#24292e !important}.link-gray-dark:hover{color:#0366d6 !important}.link-hover-blue:hover{color:#0366d6 !important}.muted-link{color:#586069 !important}.muted-link:hover{color:#0366d6 !important;text-decoration:none}.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:99;background:rgba(27,31,35,.5)}.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}.mr-0{margin-right:0 !important}.mb-0{margin-bottom: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}.mr-1{margin-right:4px !important}.mb-1{margin-bottom:4px !important}.ml-1{margin-left:4px !important}.mt-n1{margin-top:-4px !important}.mr-n1{margin-right:-4px !important}.mb-n1{margin-bottom:-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}.mr-2{margin-right:8px !important}.mb-2{margin-bottom:8px !important}.ml-2{margin-left:8px !important}.mt-n2{margin-top:-8px !important}.mr-n2{margin-right:-8px !important}.mb-n2{margin-bottom:-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}.mr-3{margin-right:16px !important}.mb-3{margin-bottom:16px !important}.ml-3{margin-left:16px !important}.mt-n3{margin-top:-16px !important}.mr-n3{margin-right:-16px !important}.mb-n3{margin-bottom:-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}.mr-4{margin-right:24px !important}.mb-4{margin-bottom:24px !important}.ml-4{margin-left:24px !important}.mt-n4{margin-top:-24px !important}.mr-n4{margin-right:-24px !important}.mb-n4{margin-bottom:-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}.mr-5{margin-right:32px !important}.mb-5{margin-bottom:32px !important}.ml-5{margin-left:32px !important}.mt-n5{margin-top:-32px !important}.mr-n5{margin-right:-32px !important}.mb-n5{margin-bottom:-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}.mr-6{margin-right:40px !important}.mb-6{margin-bottom:40px !important}.ml-6{margin-left:40px !important}.mt-n6{margin-top:-40px !important}.mr-n6{margin-right:-40px !important}.mb-n6{margin-bottom:-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}.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}.mr-sm-0{margin-right:0 !important}.mb-sm-0{margin-bottom: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}.mr-sm-1{margin-right:4px !important}.mb-sm-1{margin-bottom:4px !important}.ml-sm-1{margin-left:4px !important}.mt-sm-n1{margin-top:-4px !important}.mr-sm-n1{margin-right:-4px !important}.mb-sm-n1{margin-bottom:-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}.mr-sm-2{margin-right:8px !important}.mb-sm-2{margin-bottom:8px !important}.ml-sm-2{margin-left:8px !important}.mt-sm-n2{margin-top:-8px !important}.mr-sm-n2{margin-right:-8px !important}.mb-sm-n2{margin-bottom:-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}.mr-sm-3{margin-right:16px !important}.mb-sm-3{margin-bottom:16px !important}.ml-sm-3{margin-left:16px !important}.mt-sm-n3{margin-top:-16px !important}.mr-sm-n3{margin-right:-16px !important}.mb-sm-n3{margin-bottom:-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}.mr-sm-4{margin-right:24px !important}.mb-sm-4{margin-bottom:24px !important}.ml-sm-4{margin-left:24px !important}.mt-sm-n4{margin-top:-24px !important}.mr-sm-n4{margin-right:-24px !important}.mb-sm-n4{margin-bottom:-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}.mr-sm-5{margin-right:32px !important}.mb-sm-5{margin-bottom:32px !important}.ml-sm-5{margin-left:32px !important}.mt-sm-n5{margin-top:-32px !important}.mr-sm-n5{margin-right:-32px !important}.mb-sm-n5{margin-bottom:-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}.mr-sm-6{margin-right:40px !important}.mb-sm-6{margin-bottom:40px !important}.ml-sm-6{margin-left:40px !important}.mt-sm-n6{margin-top:-40px !important}.mr-sm-n6{margin-right:-40px !important}.mb-sm-n6{margin-bottom:-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}.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}.mr-md-0{margin-right:0 !important}.mb-md-0{margin-bottom: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}.mr-md-1{margin-right:4px !important}.mb-md-1{margin-bottom:4px !important}.ml-md-1{margin-left:4px !important}.mt-md-n1{margin-top:-4px !important}.mr-md-n1{margin-right:-4px !important}.mb-md-n1{margin-bottom:-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}.mr-md-2{margin-right:8px !important}.mb-md-2{margin-bottom:8px !important}.ml-md-2{margin-left:8px !important}.mt-md-n2{margin-top:-8px !important}.mr-md-n2{margin-right:-8px !important}.mb-md-n2{margin-bottom:-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}.mr-md-3{margin-right:16px !important}.mb-md-3{margin-bottom:16px !important}.ml-md-3{margin-left:16px !important}.mt-md-n3{margin-top:-16px !important}.mr-md-n3{margin-right:-16px !important}.mb-md-n3{margin-bottom:-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}.mr-md-4{margin-right:24px !important}.mb-md-4{margin-bottom:24px !important}.ml-md-4{margin-left:24px !important}.mt-md-n4{margin-top:-24px !important}.mr-md-n4{margin-right:-24px !important}.mb-md-n4{margin-bottom:-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}.mr-md-5{margin-right:32px !important}.mb-md-5{margin-bottom:32px !important}.ml-md-5{margin-left:32px !important}.mt-md-n5{margin-top:-32px !important}.mr-md-n5{margin-right:-32px !important}.mb-md-n5{margin-bottom:-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}.mr-md-6{margin-right:40px !important}.mb-md-6{margin-bottom:40px !important}.ml-md-6{margin-left:40px !important}.mt-md-n6{margin-top:-40px !important}.mr-md-n6{margin-right:-40px !important}.mb-md-n6{margin-bottom:-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}.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}.mr-lg-0{margin-right:0 !important}.mb-lg-0{margin-bottom: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}.mr-lg-1{margin-right:4px !important}.mb-lg-1{margin-bottom:4px !important}.ml-lg-1{margin-left:4px !important}.mt-lg-n1{margin-top:-4px !important}.mr-lg-n1{margin-right:-4px !important}.mb-lg-n1{margin-bottom:-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}.mr-lg-2{margin-right:8px !important}.mb-lg-2{margin-bottom:8px !important}.ml-lg-2{margin-left:8px !important}.mt-lg-n2{margin-top:-8px !important}.mr-lg-n2{margin-right:-8px !important}.mb-lg-n2{margin-bottom:-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}.mr-lg-3{margin-right:16px !important}.mb-lg-3{margin-bottom:16px !important}.ml-lg-3{margin-left:16px !important}.mt-lg-n3{margin-top:-16px !important}.mr-lg-n3{margin-right:-16px !important}.mb-lg-n3{margin-bottom:-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}.mr-lg-4{margin-right:24px !important}.mb-lg-4{margin-bottom:24px !important}.ml-lg-4{margin-left:24px !important}.mt-lg-n4{margin-top:-24px !important}.mr-lg-n4{margin-right:-24px !important}.mb-lg-n4{margin-bottom:-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}.mr-lg-5{margin-right:32px !important}.mb-lg-5{margin-bottom:32px !important}.ml-lg-5{margin-left:32px !important}.mt-lg-n5{margin-top:-32px !important}.mr-lg-n5{margin-right:-32px !important}.mb-lg-n5{margin-bottom:-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}.mr-lg-6{margin-right:40px !important}.mb-lg-6{margin-bottom:40px !important}.ml-lg-6{margin-left:40px !important}.mt-lg-n6{margin-top:-40px !important}.mr-lg-n6{margin-right:-40px !important}.mb-lg-n6{margin-bottom:-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}.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}.mr-xl-0{margin-right:0 !important}.mb-xl-0{margin-bottom: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}.mr-xl-1{margin-right:4px !important}.mb-xl-1{margin-bottom:4px !important}.ml-xl-1{margin-left:4px !important}.mt-xl-n1{margin-top:-4px !important}.mr-xl-n1{margin-right:-4px !important}.mb-xl-n1{margin-bottom:-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}.mr-xl-2{margin-right:8px !important}.mb-xl-2{margin-bottom:8px !important}.ml-xl-2{margin-left:8px !important}.mt-xl-n2{margin-top:-8px !important}.mr-xl-n2{margin-right:-8px !important}.mb-xl-n2{margin-bottom:-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}.mr-xl-3{margin-right:16px !important}.mb-xl-3{margin-bottom:16px !important}.ml-xl-3{margin-left:16px !important}.mt-xl-n3{margin-top:-16px !important}.mr-xl-n3{margin-right:-16px !important}.mb-xl-n3{margin-bottom:-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}.mr-xl-4{margin-right:24px !important}.mb-xl-4{margin-bottom:24px !important}.ml-xl-4{margin-left:24px !important}.mt-xl-n4{margin-top:-24px !important}.mr-xl-n4{margin-right:-24px !important}.mb-xl-n4{margin-bottom:-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}.mr-xl-5{margin-right:32px !important}.mb-xl-5{margin-bottom:32px !important}.ml-xl-5{margin-left:32px !important}.mt-xl-n5{margin-top:-32px !important}.mr-xl-n5{margin-right:-32px !important}.mb-xl-n5{margin-bottom:-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}.mr-xl-6{margin-right:40px !important}.mb-xl-6{margin-bottom:40px !important}.ml-xl-6{margin-left:40px !important}.mt-xl-n6{margin-top:-40px !important}.mr-xl-n6{margin-right:-40px !important}.mb-xl-n6{margin-bottom:-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}.mx-xl-auto{margin-right:auto !important;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}@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}}@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}}@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}}@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}}.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;color:#586069}.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-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}.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;color:#24292e}.list-style-none{list-style:none !important}.text-shadow-dark{text-shadow:0 1px 1px rgba(27,31,35,.25),0 1px 25px rgba(27,31,35,.75)}.text-shadow-light{text-shadow:0 1px 0 rgba(255,255,255,.5)}.text-mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace !important}.user-select-none{user-select:none !important}.d-block,.toc.level-1.current>ul,.toc.level-2.current>ul,.toc.level-3.current>ul,.toc.level-4.current>ul,.toc.level-5.current>ul,.toc.level-6.current>ul,.toc.level-7.current>ul,.toc.level-8.current>ul,.toc.level-9.current>ul,.toc.level-10.current>ul,.toc.level-11.current>ul{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,.toc>ul{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: 543px){.hide-sm{display:none !important}}@media(min-width: 544px)and (max-width: 767px){.hide-md{display:none !important}}@media(min-width: 768px)and (max-width: 1011px){.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} diff --git a/2.12.0/assets/images/Fiware.png b/2.12.0/assets/images/Fiware.png new file mode 100644 index 000000000..84135f3c2 Binary files /dev/null and b/2.12.0/assets/images/Fiware.png differ diff --git a/2.12.0/assets/images/GitHub.jpeg b/2.12.0/assets/images/GitHub.jpeg new file mode 100644 index 000000000..669d24d93 Binary files /dev/null and b/2.12.0/assets/images/GitHub.jpeg differ diff --git a/2.12.0/assets/images/GrapDB.png b/2.12.0/assets/images/GrapDB.png new file mode 100644 index 000000000..c3d8b63b3 Binary files /dev/null and b/2.12.0/assets/images/GrapDB.png differ diff --git a/2.12.0/assets/images/Kafka_onboarding.png b/2.12.0/assets/images/Kafka_onboarding.png new file mode 100644 index 000000000..a06cfa892 Binary files /dev/null and b/2.12.0/assets/images/Kafka_onboarding.png differ diff --git a/2.12.0/assets/images/LDES client.png b/2.12.0/assets/images/LDES client.png new file mode 100644 index 000000000..a4e895fe6 Binary files /dev/null and b/2.12.0/assets/images/LDES client.png differ diff --git a/2.12.0/assets/images/LDES server.png b/2.12.0/assets/images/LDES server.png new file mode 100644 index 000000000..1f1ccbe1c Binary files /dev/null and b/2.12.0/assets/images/LDES server.png differ diff --git a/2.12.0/assets/images/LDES.png b/2.12.0/assets/images/LDES.png new file mode 100644 index 000000000..3b608002c Binary files /dev/null and b/2.12.0/assets/images/LDES.png differ diff --git a/2.12.0/assets/images/LDES_API.png b/2.12.0/assets/images/LDES_API.png new file mode 100644 index 000000000..278782750 Binary files /dev/null and b/2.12.0/assets/images/LDES_API.png differ diff --git a/2.12.0/assets/images/LOGO_Vlaanderen_NIV2.svg b/2.12.0/assets/images/LOGO_Vlaanderen_NIV2.svg new file mode 100644 index 000000000..6caaea4ed --- /dev/null +++ b/2.12.0/assets/images/LOGO_Vlaanderen_NIV2.svg @@ -0,0 +1,3 @@ + + + diff --git a/2.12.0/assets/images/LdesToGrapDB.PNG b/2.12.0/assets/images/LdesToGrapDB.PNG new file mode 100644 index 000000000..9d9381275 Binary files /dev/null and b/2.12.0/assets/images/LdesToGrapDB.PNG differ diff --git a/2.12.0/assets/images/MQQ.png b/2.12.0/assets/images/MQQ.png new file mode 100644 index 000000000..1d49e2e9a Binary files /dev/null and b/2.12.0/assets/images/MQQ.png differ diff --git a/2.12.0/assets/images/MQTT.png b/2.12.0/assets/images/MQTT.png new file mode 100644 index 000000000..8674234d7 Binary files /dev/null and b/2.12.0/assets/images/MQTT.png differ diff --git a/2.12.0/assets/images/Onboarding_LDES_core.png b/2.12.0/assets/images/Onboarding_LDES_core.png new file mode 100644 index 000000000..2f4ef7179 Binary files /dev/null and b/2.12.0/assets/images/Onboarding_LDES_core.png differ diff --git a/2.12.0/assets/images/Real-timeTimeseries.PNG b/2.12.0/assets/images/Real-timeTimeseries.PNG new file mode 100644 index 000000000..df1010a3b Binary files /dev/null and b/2.12.0/assets/images/Real-timeTimeseries.PNG differ diff --git a/2.12.0/assets/images/State.png b/2.12.0/assets/images/State.png new file mode 100644 index 000000000..f08be319d Binary files /dev/null and b/2.12.0/assets/images/State.png differ diff --git a/2.12.0/assets/images/aggregation.png b/2.12.0/assets/images/aggregation.png new file mode 100644 index 000000000..be0ba6796 Binary files /dev/null and b/2.12.0/assets/images/aggregation.png differ diff --git a/2.12.0/assets/images/anonymization.png b/2.12.0/assets/images/anonymization.png new file mode 100644 index 000000000..f798dd85a Binary files /dev/null and b/2.12.0/assets/images/anonymization.png differ diff --git a/2.12.0/assets/images/apache_grar_onboarding.png b/2.12.0/assets/images/apache_grar_onboarding.png new file mode 100644 index 000000000..9e630f2c0 Binary files /dev/null and b/2.12.0/assets/images/apache_grar_onboarding.png differ diff --git a/2.12.0/assets/images/authorisation.png b/2.12.0/assets/images/authorisation.png new file mode 100644 index 000000000..94b79fef6 Binary files /dev/null and b/2.12.0/assets/images/authorisation.png differ diff --git a/2.12.0/assets/images/data_publisher.png b/2.12.0/assets/images/data_publisher.png new file mode 100644 index 000000000..50257fe99 Binary files /dev/null and b/2.12.0/assets/images/data_publisher.png differ diff --git a/2.12.0/assets/images/divider_globalheader.svg b/2.12.0/assets/images/divider_globalheader.svg new file mode 100644 index 000000000..74bbdf524 --- /dev/null +++ b/2.12.0/assets/images/divider_globalheader.svg @@ -0,0 +1,3 @@ + + + diff --git a/2.12.0/assets/images/exampleTwoFlow.png b/2.12.0/assets/images/exampleTwoFlow.png new file mode 100644 index 000000000..50de94aad Binary files /dev/null and b/2.12.0/assets/images/exampleTwoFlow.png differ diff --git a/2.12.0/assets/images/favicon.ico b/2.12.0/assets/images/favicon.ico new file mode 100644 index 000000000..a0686e436 Binary files /dev/null and b/2.12.0/assets/images/favicon.ico differ diff --git a/2.12.0/assets/images/fragmentation.png b/2.12.0/assets/images/fragmentation.png new file mode 100644 index 000000000..c5c986780 Binary files /dev/null and b/2.12.0/assets/images/fragmentation.png differ diff --git a/2.12.0/assets/images/geoserver.png b/2.12.0/assets/images/geoserver.png new file mode 100644 index 000000000..fd1204d07 Binary files /dev/null and b/2.12.0/assets/images/geoserver.png differ diff --git a/2.12.0/assets/images/geospatial.png b/2.12.0/assets/images/geospatial.png new file mode 100644 index 000000000..ef6141e6d Binary files /dev/null and b/2.12.0/assets/images/geospatial.png differ diff --git a/2.12.0/assets/images/graphdb.png b/2.12.0/assets/images/graphdb.png new file mode 100644 index 000000000..f54974c8c Binary files /dev/null and b/2.12.0/assets/images/graphdb.png differ diff --git a/2.12.0/assets/images/hulp_nodig.svg b/2.12.0/assets/images/hulp_nodig.svg new file mode 100644 index 000000000..f18f9e071 --- /dev/null +++ b/2.12.0/assets/images/hulp_nodig.svg @@ -0,0 +1,3 @@ + + + diff --git a/2.12.0/assets/images/kafka.png b/2.12.0/assets/images/kafka.png new file mode 100644 index 000000000..e2abbfb21 Binary files /dev/null and b/2.12.0/assets/images/kafka.png differ diff --git a/2.12.0/assets/images/large-image.jpg b/2.12.0/assets/images/large-image.jpg new file mode 100644 index 000000000..c007781c2 Binary files /dev/null and b/2.12.0/assets/images/large-image.jpg differ diff --git a/2.12.0/assets/images/ml.png b/2.12.0/assets/images/ml.png new file mode 100644 index 000000000..5932b0a5f Binary files /dev/null and b/2.12.0/assets/images/ml.png differ diff --git a/2.12.0/assets/images/onboarding.png b/2.12.0/assets/images/onboarding.png new file mode 100644 index 000000000..507273a7c Binary files /dev/null and b/2.12.0/assets/images/onboarding.png differ diff --git a/2.12.0/assets/images/orion_onboarding_iow.png b/2.12.0/assets/images/orion_onboarding_iow.png new file mode 100644 index 000000000..645cd07fc Binary files /dev/null and b/2.12.0/assets/images/orion_onboarding_iow.png differ diff --git a/2.12.0/assets/images/powerbi.png b/2.12.0/assets/images/powerbi.png new file mode 100644 index 000000000..cba4debeb Binary files /dev/null and b/2.12.0/assets/images/powerbi.png differ diff --git a/2.12.0/assets/images/qgis.png b/2.12.0/assets/images/qgis.png new file mode 100644 index 000000000..8eab94b2a Binary files /dev/null and b/2.12.0/assets/images/qgis.png differ diff --git a/2.12.0/assets/images/question-mark.svg b/2.12.0/assets/images/question-mark.svg new file mode 100644 index 000000000..cbe622c46 --- /dev/null +++ b/2.12.0/assets/images/question-mark.svg @@ -0,0 +1,3 @@ + + + diff --git a/2.12.0/assets/images/releases.png b/2.12.0/assets/images/releases.png new file mode 100644 index 000000000..887d6d73d Binary files /dev/null and b/2.12.0/assets/images/releases.png differ diff --git a/2.12.0/assets/images/replication.png b/2.12.0/assets/images/replication.png new file mode 100644 index 000000000..6ec81d72f Binary files /dev/null and b/2.12.0/assets/images/replication.png differ diff --git a/2.12.0/assets/images/retention_policy.png b/2.12.0/assets/images/retention_policy.png new file mode 100644 index 000000000..254971cea Binary files /dev/null and b/2.12.0/assets/images/retention_policy.png differ diff --git a/2.12.0/assets/images/scalableApplications.png b/2.12.0/assets/images/scalableApplications.png new file mode 100644 index 000000000..a96c186ab Binary files /dev/null and b/2.12.0/assets/images/scalableApplications.png differ diff --git a/2.12.0/assets/images/small-image.jpg b/2.12.0/assets/images/small-image.jpg new file mode 100644 index 000000000..5bf58a949 Binary files /dev/null and b/2.12.0/assets/images/small-image.jpg differ diff --git a/2.12.0/assets/images/spec.png b/2.12.0/assets/images/spec.png new file mode 100644 index 000000000..2144643df Binary files /dev/null and b/2.12.0/assets/images/spec.png differ diff --git a/2.12.0/assets/images/synchronisation.png b/2.12.0/assets/images/synchronisation.png new file mode 100644 index 000000000..cc8be9f0d Binary files /dev/null and b/2.12.0/assets/images/synchronisation.png differ diff --git a/2.12.0/assets/images/temporal.png b/2.12.0/assets/images/temporal.png new file mode 100644 index 000000000..21f0ab5f4 Binary files /dev/null and b/2.12.0/assets/images/temporal.png differ diff --git a/2.12.0/assets/images/timescaledb.png b/2.12.0/assets/images/timescaledb.png new file mode 100644 index 000000000..1ce9d661f Binary files /dev/null and b/2.12.0/assets/images/timescaledb.png differ diff --git a/2.12.0/assets/images/versioning.png b/2.12.0/assets/images/versioning.png new file mode 100644 index 000000000..da7134326 Binary files /dev/null and b/2.12.0/assets/images/versioning.png differ diff --git a/2.12.0/assets/images/vlaanderen.png b/2.12.0/assets/images/vlaanderen.png new file mode 100644 index 000000000..fa0cc1718 Binary files /dev/null and b/2.12.0/assets/images/vlaanderen.png differ diff --git a/2.12.0/assets/js/just-the-docs.js b/2.12.0/assets/js/just-the-docs.js new file mode 100644 index 000000000..9a8ac30ba --- /dev/null +++ b/2.12.0/assets/js/just-the-docs.js @@ -0,0 +1,504 @@ +(function (jtd, undefined) { + +// Event handling + +jtd.addEvent = function(el, type, handler) { + if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); +} +jtd.removeEvent = function(el, type, handler) { + if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); +} +jtd.onReady = function(ready) { + // in case the document is already rendered + if (document.readyState!='loading') ready(); + // modern browsers + else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); + // IE <= 8 + else document.attachEvent('onreadystatechange', function(){ + if (document.readyState=='complete') ready(); + }); +} + +// Show/hide mobile menu + +function initNav() { + jtd.addEvent(document, 'click', function(e){ + var target = e.target; + while (target && !(target.classList && target.classList.contains('nav-list-expander'))) { + target = target.parentNode; + } + if (target) { + e.preventDefault(); + target.ariaPressed = target.parentNode.classList.toggle('active'); + } + }); + + const siteNav = document.getElementById('site-nav'); + const mainHeader = document.getElementById('main-header'); + const menuButton = document.getElementById('menu-button'); + + jtd.addEvent(menuButton, 'click', function(e){ + e.preventDefault(); + + if (menuButton.classList.toggle('nav-open')) { + siteNav.classList.add('nav-open'); + mainHeader.classList.add('nav-open'); + menuButton.ariaPressed = true; + } else { + siteNav.classList.remove('nav-open'); + mainHeader.classList.remove('nav-open'); + menuButton.ariaPressed = false; + } + }); +} +// Site search + +function initSearch() { + var request = new XMLHttpRequest(); + request.open('GET', '/VSDS-Linked-Data-Interactions/2.12.0/assets/js/search-data.json', true); + + request.onload = function(){ + if (request.status >= 200 && request.status < 400) { + var docs = JSON.parse(request.responseText); + + lunr.tokenizer.separator = /[\s\-/]+/ + + var index = lunr(function(){ + this.ref('id'); + this.field('title', { boost: 200 }); + this.field('content', { boost: 2 }); + this.field('relUrl'); + this.metadataWhitelist = ['position'] + + for (var i in docs) { + + this.add({ + id: i, + title: docs[i].title, + content: docs[i].content, + relUrl: docs[i].relUrl + }); + } + }); + + searchLoaded(index, docs); + } else { + console.log('Error loading ajax request. Request status:' + request.status); + } + }; + + request.onerror = function(){ + console.log('There was a connection error'); + }; + + request.send(); +} + +function searchLoaded(index, docs) { + var index = index; + var docs = docs; + var searchInput = document.getElementById('search-input'); + var searchResults = document.getElementById('search-results'); + var mainHeader = document.getElementById('main-header'); + var currentInput; + var currentSearchIndex = 0; + + function showSearch() { + document.documentElement.classList.add('search-active'); + } + + function hideSearch() { + document.documentElement.classList.remove('search-active'); + } + + function update() { + currentSearchIndex++; + + var input = searchInput.value; + if (input === '') { + hideSearch(); + } else { + showSearch(); + // scroll search input into view, workaround for iOS Safari + window.scroll(0, -1); + setTimeout(function(){ window.scroll(0, 0); }, 0); + } + if (input === currentInput) { + return; + } + currentInput = input; + searchResults.innerHTML = ''; + if (input === '') { + return; + } + + var results = index.query(function (query) { + var tokens = lunr.tokenizer(input) + query.term(tokens, { + boost: 10 + }); + query.term(tokens, { + wildcard: lunr.Query.wildcard.TRAILING + }); + }); + + if ((results.length == 0) && (input.length > 2)) { + var tokens = lunr.tokenizer(input).filter(function(token, i) { + return token.str.length < 20; + }) + if (tokens.length > 0) { + results = index.query(function (query) { + query.term(tokens, { + editDistance: Math.round(Math.sqrt(input.length / 2 - 1)) + }); + }); + } + } + + if (results.length == 0) { + var noResultsDiv = document.createElement('div'); + noResultsDiv.classList.add('search-no-result'); + noResultsDiv.innerText = 'No results found'; + searchResults.appendChild(noResultsDiv); + + } else { + var resultsList = document.createElement('ul'); + resultsList.classList.add('search-results-list'); + searchResults.appendChild(resultsList); + + addResults(resultsList, results, 0, 10, 100, currentSearchIndex); + } + + function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) { + if (searchIndex != currentSearchIndex) { + return; + } + for (var i = start; i < (start + batchSize); i++) { + if (i == results.length) { + return; + } + addResult(resultsList, results[i]); + } + setTimeout(function() { + addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex); + }, batchMillis); + } + + function addResult(resultsList, result) { + var doc = docs[result.ref]; + + var resultsListItem = document.createElement('li'); + resultsListItem.classList.add('search-results-list-item'); + resultsList.appendChild(resultsListItem); + + var resultLink = document.createElement('a'); + resultLink.classList.add('search-result'); + resultLink.setAttribute('href', doc.url); + resultsListItem.appendChild(resultLink); + + var resultTitle = document.createElement('div'); + resultTitle.classList.add('search-result-title'); + resultLink.appendChild(resultTitle); + + // note: the SVG svg-doc is only loaded as a Jekyll include if site.search_enabled is true; see _includes/icons/icons.html + var resultDoc = document.createElement('div'); + resultDoc.classList.add('search-result-doc'); + resultDoc.innerHTML = ''; + resultTitle.appendChild(resultDoc); + + var resultDocTitle = document.createElement('div'); + resultDocTitle.classList.add('search-result-doc-title'); + resultDocTitle.innerHTML = doc.doc; + resultDoc.appendChild(resultDocTitle); + var resultDocOrSection = resultDocTitle; + + if (doc.doc != doc.title) { + resultDoc.classList.add('search-result-doc-parent'); + var resultSection = document.createElement('div'); + resultSection.classList.add('search-result-section'); + resultSection.innerHTML = doc.title; + resultTitle.appendChild(resultSection); + resultDocOrSection = resultSection; + } + + var metadata = result.matchData.metadata; + var titlePositions = []; + var contentPositions = []; + for (var j in metadata) { + var meta = metadata[j]; + if (meta.title) { + var positions = meta.title.position; + for (var k in positions) { + titlePositions.push(positions[k]); + } + } + if (meta.content) { + var positions = meta.content.position; + for (var k in positions) { + var position = positions[k]; + var previewStart = position[0]; + var previewEnd = position[0] + position[1]; + var ellipsesBefore = true; + var ellipsesAfter = true; + for (var k = 0; k < 5; k++) { + var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); + var nextDot = doc.content.lastIndexOf('. ', previewStart - 2); + if ((nextDot >= 0) && (nextDot > nextSpace)) { + previewStart = nextDot + 1; + ellipsesBefore = false; + break; + } + if (nextSpace < 0) { + previewStart = 0; + ellipsesBefore = false; + break; + } + previewStart = nextSpace + 1; + } + for (var k = 0; k < 10; k++) { + var nextSpace = doc.content.indexOf(' ', previewEnd + 1); + var nextDot = doc.content.indexOf('. ', previewEnd + 1); + if ((nextDot >= 0) && (nextDot < nextSpace)) { + previewEnd = nextDot; + ellipsesAfter = false; + break; + } + if (nextSpace < 0) { + previewEnd = doc.content.length; + ellipsesAfter = false; + break; + } + previewEnd = nextSpace; + } + contentPositions.push({ + highlight: position, + previewStart: previewStart, previewEnd: previewEnd, + ellipsesBefore: ellipsesBefore, ellipsesAfter: ellipsesAfter + }); + } + } + } + + if (titlePositions.length > 0) { + titlePositions.sort(function(p1, p2){ return p1[0] - p2[0] }); + resultDocOrSection.innerHTML = ''; + addHighlightedText(resultDocOrSection, doc.title, 0, doc.title.length, titlePositions); + } + + if (contentPositions.length > 0) { + contentPositions.sort(function(p1, p2){ return p1.highlight[0] - p2.highlight[0] }); + var contentPosition = contentPositions[0]; + var previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + }; + var previewPositions = [previewPosition]; + for (var j = 1; j < contentPositions.length; j++) { + contentPosition = contentPositions[j]; + if (previewPosition.previewEnd < contentPosition.previewStart) { + previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + } + previewPositions.push(previewPosition); + } else { + previewPosition.highlight.push(contentPosition.highlight); + previewPosition.previewEnd = contentPosition.previewEnd; + previewPosition.ellipsesAfter = contentPosition.ellipsesAfter; + } + } + + var resultPreviews = document.createElement('div'); + resultPreviews.classList.add('search-result-previews'); + resultLink.appendChild(resultPreviews); + + var content = doc.content; + for (var j = 0; j < Math.min(previewPositions.length, 3); j++) { + var position = previewPositions[j]; + + var resultPreview = document.createElement('div'); + resultPreview.classList.add('search-result-preview'); + resultPreviews.appendChild(resultPreview); + + if (position.ellipsesBefore) { + resultPreview.appendChild(document.createTextNode('... ')); + } + addHighlightedText(resultPreview, content, position.previewStart, position.previewEnd, position.highlight); + if (position.ellipsesAfter) { + resultPreview.appendChild(document.createTextNode(' ...')); + } + } + } + var resultRelUrl = document.createElement('span'); + resultRelUrl.classList.add('search-result-rel-url'); + resultRelUrl.innerText = doc.relUrl; + resultTitle.appendChild(resultRelUrl); + } + + function addHighlightedText(parent, text, start, end, positions) { + var index = start; + for (var i in positions) { + var position = positions[i]; + var span = document.createElement('span'); + span.innerHTML = text.substring(index, position[0]); + parent.appendChild(span); + index = position[0] + position[1]; + var highlight = document.createElement('span'); + highlight.classList.add('search-result-highlight'); + highlight.innerHTML = text.substring(position[0], index); + parent.appendChild(highlight); + } + var span = document.createElement('span'); + span.innerHTML = text.substring(index, end); + parent.appendChild(span); + } + } + + jtd.addEvent(searchInput, 'focus', function(){ + setTimeout(update, 0); + }); + + jtd.addEvent(searchInput, 'keyup', function(e){ + switch (e.keyCode) { + case 27: // When esc key is pressed, hide the results and clear the field + searchInput.value = ''; + break; + case 38: // arrow up + case 40: // arrow down + case 13: // enter + e.preventDefault(); + return; + } + update(); + }); + + jtd.addEvent(searchInput, 'keydown', function(e){ + switch (e.keyCode) { + case 38: // arrow up + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.classList.remove('active'); + if (active.parentElement.previousSibling) { + var previous = active.parentElement.previousSibling.querySelector('.search-result'); + previous.classList.add('active'); + } + } + return; + case 40: // arrow down + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + if (active.parentElement.nextSibling) { + var next = active.parentElement.nextSibling.querySelector('.search-result'); + active.classList.remove('active'); + next.classList.add('active'); + } + } else { + var next = document.querySelector('.search-result'); + if (next) { + next.classList.add('active'); + } + } + return; + case 13: // enter + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.click(); + } else { + var first = document.querySelector('.search-result'); + if (first) { + first.click(); + } + } + return; + } + }); + + jtd.addEvent(document, 'click', function(e){ + if (e.target != searchInput) { + hideSearch(); + } + }); +} + +// Switch theme + +jtd.getTheme = function() { + var cssFileHref = document.querySelector('[rel="stylesheet"]').getAttribute('href'); + return cssFileHref.substring(cssFileHref.lastIndexOf('-') + 1, cssFileHref.length - 4); +} + +jtd.setTheme = function(theme) { + var cssFile = document.querySelector('[rel="stylesheet"]'); + cssFile.setAttribute('href', '/VSDS-Linked-Data-Interactions/2.12.0/assets/css/just-the-docs-' + theme + '.css'); +} + +// Scroll site-nav to ensure the link to the current page is visible + +function scrollNav() { + const href = document.location.pathname; + const siteNav = document.getElementById('site-nav'); + const targetLink = siteNav.querySelector('a[href="' + href + '"], a[href="' + href + '/"]'); + if(targetLink){ + const rect = targetLink.getBoundingClientRect(); + siteNav.scrollBy(0, rect.top - 3*rect.height); + } +} + +// Document ready + +jtd.onReady(function(){ + initNav(); + initSearch(); + scrollNav(); +}); + +// Copy button on code + +jtd.onReady(function(){ + + if (!window.isSecureContext) { + console.log('Window does not have a secure context, therefore code clipboard copy functionality will not be available. For more details see https://web.dev/async-clipboard/#security-and-permissions'); + return; + } + + var codeBlocks = document.querySelectorAll('div.highlighter-rouge, div.listingblock > div.content, figure.highlight'); + + // note: the SVG svg-copied and svg-copy is only loaded as a Jekyll include if site.enable_copy_code_button is true; see _includes/icons/icons.html + var svgCopied = ''; + var svgCopy = ''; + + codeBlocks.forEach(codeBlock => { + var copyButton = document.createElement('button'); + var timeout = null; + copyButton.type = 'button'; + copyButton.ariaLabel = 'Copy code to clipboard'; + copyButton.innerHTML = svgCopy; + codeBlock.append(copyButton); + + copyButton.addEventListener('click', function () { + if(timeout === null) { + var code = (codeBlock.querySelector('pre:not(.lineno, .highlight)') || codeBlock.querySelector('code')).innerText; + window.navigator.clipboard.writeText(code); + + copyButton.innerHTML = svgCopied; + + var timeoutSetting = 4000; + + timeout = setTimeout(function () { + copyButton.innerHTML = svgCopy; + timeout = null; + }, timeoutSetting); + } + }); + }); + +}); + +})(window.jtd = window.jtd || {}); + + diff --git a/2.12.0/assets/js/search-data.json b/2.12.0/assets/js/search-data.json new file mode 100644 index 000000000..39ac6da3e --- /dev/null +++ b/2.12.0/assets/js/search-data.json @@ -0,0 +1,1031 @@ +{"0": { + "doc": "Home", + "title": "Linked Data Interactions Project", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#linked-data-interactions-project", + + "relUrl": "/#linked-data-interactions-project" + },"1": { + "doc": "Home", + "title": "Introduction", + "content": "The Linked Data Interactions project is an effort to make interactions with Linked Data more fluently by providing easy building blocks. This project was created in function of the VSDS project . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#introduction", + + "relUrl": "/#introduction" + },"2": { + "doc": "Home", + "title": "Supported Frameworks", + "content": "Currently, we support 2 frameworks to use these building blocks in: . | Linked Data Interactions Orchestrator: A lightweight application maintained by the LDI team. | Apache Nifi: A powerful system to easily process and distribute data | . Component support over frameworks . As the LDI team is rather small and focused on supporting the VSDS project, we sometimes have to postpone full integration of our building blocks in all supported frameworks. However, since the LDI project is open source, feel free to contribute and/or create issues at our GitHub project . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#supported-frameworks", + + "relUrl": "/#supported-frameworks" + },"3": { + "doc": "Home", + "title": "Home", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/", + + "relUrl": "/" + },"4": { + "doc": "Basic Http In to Console", + "title": "Basic Http In to Console", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp", + + "relUrl": "/ldio/examples/ex1-basicHttp" + },"5": { + "doc": "Basic Http In to Console", + "title": "Used Components", + "content": ". | Http In | Console Out | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#used-components", + + "relUrl": "/ldio/examples/ex1-basicHttp#used-components" + },"6": { + "doc": "Basic Http In to Console", + "title": "Setup", + "content": "For this setup, we will start with a Http Listener who will take in data and write it back out via the console . ldio.config.yaml: . orchestrator: pipelines: - name: data description: \"This pipeline uses a HTTP listener to read incoming RDF data and writes them to the console\" input: name: Ldio:HttpIn adapter: name: Ldio:RdfAdapter outputs: - name: Ldio:ConsoleOut . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#setup", + + "relUrl": "/ldio/examples/ex1-basicHttp#setup" + },"7": { + "doc": "Basic Http In to Console", + "title": "Execution", + "content": "We can now post the following data to http://{hostname}:{port}/data whilst including the header Content-Type: application/n-quads : . { \"@context\": \"http://schema.org/\", \"@type\": \"Person\", \"name\": \"Jane Doe\", \"jobTitle\": \"Professor\", \"telephone\": \"(425) 123-4567\", \"url\": \"http://www.janedoe.com\" } . If done successfully, you will see in the console the converted model which defaults to application/n-quads: . _:b0 <http://schema.org/jobTitle> \"Professor\" . _:b0 <http://schema.org/name> \"Jane Doe\" . _:b0 <http://schema.org/telephone> \"(425) 123-4567\" . _:b0 <http://schema.org/url> <http://www.janedoe.com> . _:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#execution", + + "relUrl": "/ldio/examples/ex1-basicHttp#execution" + },"8": { + "doc": "Scraping an API", + "title": "Scraping an API", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api", + + "relUrl": "/ldio/examples/ex2-scrape-api" + },"9": { + "doc": "Scraping an API", + "title": "Used Components", + "content": ". | Http In Poller | RML Adapter | Version Object Creator | Console Out | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#used-components", + + "relUrl": "/ldio/examples/ex2-scrape-api#used-components" + },"10": { + "doc": "Scraping an API", + "title": "Setup", + "content": "For this setup, we will periodically scrape a public API, map it with RML to Linked Data, Transform it to a Version Object and write it to console. RML Mapping . Since RML can sometimes be hard on human eyes, we’ll convert our YARRRML to RML via Matey. Through this, we can convert this YARRRML to the following RML. prefixes: ex: \"http://example.com/\" cs: \"http://www.cheapshark.com/\" ldi: \"http://www.vlaanderen.be/ns/ldi#\" mappings: person: sources: - ['deals.json~jsonpath', '$[*]'] s: http://www.cheapshark.com/gamedeals/$(gameID) g: http://www.cheapshark.com/gamedeals/$(gameID)/$(lastChange) po: - [a, cs:GameDeal] - [cs:title, $(title)] - [cs:metacriticLink, $(metacriticLink)] - [cs:thumb, $(thumb)] - p: cs:releaseDate o: function: ldi:epochToIso8601 parameters: - [ldi:epoch, $(releaseDate) ] datatype: xsd:DateTime - p: cs:lastChange o: function: ldi:epochToIso8601 parameters: - [ldi:epoch, $(lastChange) ] datatype: xsd:DateTime - [cs:isOnSale, $(isOnSale), xsd:Boolean] - [cs:normalPrice, $(normalPrice), xsd:Double] - [cs:salePrice, $(salePrice), xsd:Double] . mapping.ttl . Let’s save the mapping.ttl in our current directory. ldio.config.yaml: . orchestrator: pipelines: - name: data input: name: Ldio:HttpInPoller config: url: https://www.cheapshark.com/api/1.0/deals?pageSize=1000 interval: PT30M adapter: name: Ldio:RmlAdapter config: mapping: \"mapping.ttl\" transformers: - name: Ldio:VersionObjectCreator config: date-observed-property: \"http://www.cheapshark.com/lastChange\" member-type: \"http://www.cheapshark.com/GameDeal\" generatedAt-property: \"https://w3id.org/ldes#timestampPath\" versionOf-property: \"https://w3id.org/ldes#versionOfPath\" outputs: - name: Ldio:ConsoleOut config: content-type: text/turtle . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#setup", + + "relUrl": "/ldio/examples/ex2-scrape-api#setup" + },"11": { + "doc": "Scraping an API", + "title": "Execution", + "content": "Once started, you should be seeing data in your console similar to . <http://www.cheapshark.com/gamedeals/157072/2023-06-28T21:31:20.000Z> a <http://www.cheapshark.com/GameDeal> ; <http://www.cheapshark.com/isOnSale> \"1\"^^<http://www.w3.org/2001/XMLSchema#Boolean> ; <http://www.cheapshark.com/lastChange> \"2023-06-28T21:31:20.000Z\"^^<http://www.w3.org/2001/XMLSchema#DateTime> ; <http://www.cheapshark.com/metacriticLink> \"/game/pc/one-piece-burning-blood---gold-edition\" ; <http://www.cheapshark.com/normalPrice> \"74.98\"^^<http://www.w3.org/2001/XMLSchema#Double> ; <http://www.cheapshark.com/releaseDate> \"2016-09-01T00:00:00.000Z\"^^<http://www.w3.org/2001/XMLSchema#DateTime> ; <http://www.cheapshark.com/salePrice> \"6.45\"^^<http://www.w3.org/2001/XMLSchema#Double> ; <http://www.cheapshark.com/thumb> <https://gamersgatep.imgix.net/a/3/4/026d064cc7e1fb721f497398a3435dfcfbe0c43a.jpg?auto=&w=> ; <http://www.cheapshark.com/title> \"ONE PIECE BURNING BLOOD GOLD EDITION\" ; <https://w3id.org/ldes#timestampPath> \"2023-06-28T21:31:20.000Z\"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; <https://w3id.org/ldes#versionOfPath> <http://www.cheapshark.com/gamedeals/157072> . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#execution", + + "relUrl": "/ldio/examples/ex2-scrape-api#execution" + },"12": { + "doc": "Enrich a model", + "title": "Enrich A Model", + "content": "As part of this example, we will store some Car data in a Graph Database. We will later use that data to extend our user data Model to include the Car data. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#enrich-a-model", + + "relUrl": "/ldio/examples/ex3-enrich-model#enrich-a-model" + },"13": { + "doc": "Enrich a model", + "title": "Used Components", + "content": ". | Http In | RDF Adapter | Console Out | Repository Sink | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#used-components", + + "relUrl": "/ldio/examples/ex3-enrich-model#used-components" + },"14": { + "doc": "Enrich a model", + "title": "Setup", + "content": "For this setup, we will have two pipelines: . | A to-graph pipeline that will take in our “Car” Linked Data and send it straight to a GraphDB | A enriched pipeline that will extend the data with the saved car data | . RDF4J Server . To save the “Car” data, we first need to set up a GraphDB Server. This can be done by mounting a rdf4j workbench image. docker run -d -p 8081:8080 -e JAVA_OPTS=\"-Xms1g -Xmx4g\" eclipse/rdf4j-workbench:latest . Once spun up, a simple repository can be configured via doing the following curl command: . test-db.ttl: . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix rep: <http://www.openrdf.org/config/repository#>. @prefix sr: <http://www.openrdf.org/config/repository/sail#>. @prefix sail: <http://www.openrdf.org/config/sail#>. @prefix ms: <http://www.openrdf.org/config/sail/memory#>. [] a rep:Repository ; rep:repositoryID \"test\" ; rdfs:label \"test memory store\" ; rep:repositoryImpl [ rep:repositoryType \"openrdf:SailRepository\" ; sr:sailImpl [ sail:sailType \"openrdf:MemoryStore\" ; ms:persist true ; ms:syncDelay 120 ] ]. curl -X PUT -H \"Content-Type: text/turtle\" --data-binary @test-db.ttl http://localhost:8081/rdf4j-server/repositories/test . LDIO . ldio.config.yaml: . orchestrator: pipelines: - name: \"to-graph\" input: name: \"Ldio:HttpIn\" adapter: name: \"Ldio:RdfAdapter\" outputs: - name: \"Ldio:RepositoryMaterialiser\" config: sparql-host: http://localhost:8081/rdf4j-server repository-id: test - name: \"enriched\" input: name: \"Ldio:HttpIn\" adapter: name: \"Ldio:RdfAdapter\" transformers: - name: \"Ldio:SparqlConstructTransformer\" config: query: \" PREFIX schema: <http://schema.org/> CONSTRUCT { ?s ?p ?o . ?car ?cp ?co . } WHERE { ?s ?p ?o . ?s schema:hasCar ?car SERVICE <http://localhost:8081/rdf4j-server/repositories/test> { ?car ?cp ?co . } } \" outputs: - name: \"Ldio:ConsoleOut\" . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#setup", + + "relUrl": "/ldio/examples/ex3-enrich-model#setup" + },"15": { + "doc": "Enrich a model", + "title": "Execution", + "content": "1. Ingestion of Car Data . First, we will post these three turtle files to our “to-graph” pipeline at endpoint http://localhost:8080/to-graph with the Content-Type header set to ‘text/turtle’ . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Volvo/XC40> a schema:Car ; schema:brand \"Volvo\"^^xsd:string ; schema:max-speed \"180\"^^xsd:integer ; schema:model \"XC40\"^^xsd:string . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Ferrari/F40> a schema:Car ; schema:brand \"Ferrari\"^^xsd:string ; schema:max-speed \"315\"^^xsd:integer ; schema:model \"F40\"^^xsd:string . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Reliant/Robin> a schema:Car ; schema:brand \"Reliant\"^^xsd:string ; schema:max-speed \"136\"^^xsd:integer ; schema:model \"Robin\"^^xsd:string . 2. Send un-enriched member to pipeline . Secondly, we will post our un-enriched User model to our “enriched” pipeline at endpoint http://localhost:8080/enriched with the Content-Type header set to ‘text/turtle’. This pipeline will not only include the posted statements, but will include the models from the GraphDB based on their URI. @prefix schema: <http://schema.org/> . <http://example.com/people/SpideyBoy> schema:hasCar <http://example.com/cars/Ferrari/F40>, <http://example.com/cars/Volvo/XC40> ; schema:jobTitle \"Spidey Boy\" ; schema:name \"Peter Parker\" ; a schema:Person . 3. Result: an Enriched Model . After posting the User model, you should be seeing data in your console similar to . @prefix Ferrari: <http://example.com/cars/Ferrari/> . @prefix Volvo: <http://example.com/cars/Volvo/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix schema: <http://schema.org/> . Volvo:XC40 rdf:type schema:Car ; schema:brand \"Volvo\" ; schema:max-speed 180 ; schema:model \"XC40\" . <http://example.com/people/SpideyBoy> rdf:type schema:Person ; schema:hasCar Ferrari:F40 , Volvo:XC40 ; schema:jobTitle \"Spidey Boy\" ; schema:name \"Peter Parker\" . Ferrari:F40 rdf:type schema:Car ; schema:brand \"Ferrari\" ; schema:max-speed 315 ; schema:model \"F40\" . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#execution", + + "relUrl": "/ldio/examples/ex3-enrich-model#execution" + },"16": { + "doc": "Enrich a model", + "title": "Enrich a model", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model", + + "relUrl": "/ldio/examples/ex3-enrich-model" + },"17": { + "doc": "Examples", + "title": "Linked Data Interactions Orchestrator Examples", + "content": "Through the table of contents, you will find examples of the LDIO config that can be placed inside the ldio.config.yml to get the desired results. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/index#linked-data-interactions-orchestrator-examples", + + "relUrl": "/ldio/examples/index#linked-data-interactions-orchestrator-examples" + },"18": { + "doc": "Examples", + "title": "Examples", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/index", + + "relUrl": "/ldio/examples/index" + },"19": { + "doc": "The Linked Data Interactions Orchestrator", + "title": "The Linked Data Interactions Orchestrator", + "content": "A lightweight application maintained by the LDI team. Its creation came when a more lightweight alternative for Apache NiFi was needed. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index", + + "relUrl": "/ldio/index" + },"20": { + "doc": "The Linked Data Interactions Orchestrator", + "title": "Docker Compose", + "content": "The easiest way to start working with the LDIO is by using Docker. The image is located on the Docker Hub. To set up your environment, start by creating a new folder dedicated to your LDIO project. Within this folder, create two files: a docker-compose.yml and a YAML configuration file. The YAML file can be named according to your preference and can be added to the volume bindings pointing to the ldio/application.yml file. To enable Swagger UI, debug logging, or monitoring, please follow the instructions provided below on how to incorporate them into the LDIO YAML configuration file. docker-compose.yml: . version: '3.3' services: ldio-workbench: container_name: ldio-workbench image: ldes/ldi-orchestrator:2.4.0-SNAPSHOT volumes: - ./ldio.config.yml:/ldio/application.yml:ro ports: - \"<port>:8080\" . Once configured with the LDIO config, execute the command . docker compose up . If any extra files are required for a processor (mapping/queries/…), you can add them in your volume binding pointing to the ldio folder as follows: . Note that the name given for the file can be whatever, as long as it is unique. - ./file.extension:/ldio/file.extension:ro . If any custom processors have been created, you can add the jars in your volume binding pointing to the ldio/lib folder as follows: . Note that the name given for the jar file can be whatever, as long as it is unique. - <path to custom processor>:/ldio/lib/custom-processor.jar:ro . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#docker-compose", + + "relUrl": "/ldio/index#docker-compose" + },"21": { + "doc": "The Linked Data Interactions Orchestrator", + "title": "Enable swagger UI", + "content": "To use the swagger UI on your own LDIO deployment you can add the below config, and go to <base-url>/v1/swagger. springdoc: swagger-ui: path: /v1/swagger . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#enable-swagger-ui", + + "relUrl": "/ldio/index#enable-swagger-ui" + },"22": { + "doc": "The Linked Data Interactions Orchestrator", + "title": "LDIO DEBUG Logging", + "content": "To enable logging the input model for a . | LDIO Adapter | LDIO Transformer | LDIO Output | . Make sure you . | Add the following property in your application config: logging: level: be.vlaanderen.informatievlaanderen: DEBUG . | Add the debug: true property to your transformer or output config. | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#ldio-debug-logging", + + "relUrl": "/ldio/index#ldio-debug-logging" + },"23": { + "doc": "The Linked Data Interactions Orchestrator", + "title": "LDIO Logging & Monitoring", + "content": "To provide a better insight in the workings in the LDIO, we expose a prometheus endpoint (/actuator/prometheus) that encloses some metrics (with included tags): . | ldio_data_in_total: Number (Amount of items passed at the start of Transformer Pipeline) . | pipeline: String (Refers to the pipeline name) | ldio_type: String (Refers to the LDIO Input Type of pipeline) | . | ldio_data_out_total: Number (Amount of items passed at the end of Transformer Pipeline) . | pipeline: String (Refers to the pipeline name) | . | . To consult these metrics, make sure the prometheus endpoint is enabled by setting the following setting: . management: endpoints: web: exposure: include: - prometheus . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#ldio-logging--monitoring", + + "relUrl": "/ldio/index#ldio-logging--monitoring" + },"24": { + "doc": "LDIO Adapters", + "title": "Linked Data Orchestrator Adapters", + "content": "Adapters are be used in conjunction with the LDI Input. They will transform the provided content into and internal Linked Data model and sends it down the pipeline for further processing. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index#linked-data-orchestrator-adapters", + + "relUrl": "/ldio/ldio-adapters/index#linked-data-orchestrator-adapters" + },"25": { + "doc": "LDIO Adapters", + "title": "Overview", + "content": "| Adapter | Description | Inputs | Advantages | Disadvantages | . | JSON to JSON-LD | Receives JSON messages and adds linked data context to transform the messages to JSON-LD | . | JSON | . | . | Easy to set up: plug in context | . | . | Only works with JSON as input | Slower performance when deserializing model | . | . | RDF | Takes in an RDF string and converts it into an internal linked data model | . | RDF string | . | . | Easy to set up: no configuration needed | . | . | Only works with RDF as input | Only supports valid RDF MIME types | . | . | RML | Transform a non-linked data object (JSON/CSV/XML) to RDF object | . | JSON | CSV | XML | . | . | Most powerful adapter | Can convert multiple input objects | . | . | RML knowledge needed to do mapping | . | . | NGSIv2 to NGSI-LD | Converts NGSIv2 to an NGSI-LD model | . | NGSIv2 (JSON) | . |   | . | Only works with NGSIv2 as input | Slower performance when deserializing model | . | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index#overview", + + "relUrl": "/ldio/ldio-adapters/index#overview" + },"26": { + "doc": "LDIO Adapters", + "title": "LDIO Adapters", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index", + + "relUrl": "/ldio/ldio-adapters/index" + },"27": { + "doc": "Json To JsonLd Transformer", + "title": "LDIO Json To JsonLd Adapter", + "content": "Ldio:JsonToLdAdapter . The json-to-ld-adapter receives json messages and adds a linked data context to transform the messages to json-ld. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld#ldio-json-to-jsonld-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld#ldio-json-to-jsonld-adapter" + },"28": { + "doc": "Json To JsonLd Transformer", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | context | URI of json-ld context Or an JSON-LD context object. | Yes | N/A | http://example.com/my-api | URI or Json Object (containing “@context” entry) | . | force-content-type | Flag that indicates if application/json should be forced as mime type. | No | false | true | true or false | . | max-jsonld-cache-capacity | After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). | No | 100 | 100 | Integer | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld#config", + + "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld#config" + },"29": { + "doc": "Json To JsonLd Transformer", + "title": "Json To JsonLd Transformer", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld", + + "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld" + },"30": { + "doc": "NGSIv2 To LD Adapter", + "title": "LDIO NGSIv2 To LD Adapter", + "content": "Ldio:NgsiV2ToLdAdapter . This adapter will transform a NGSI V2 input into NGSI LD. Jackson is used to first deserialize the input to java objects which can then be serialized to the LD format. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#ldio-ngsiv2-to-ld-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#ldio-ngsiv2-to-ld-adapter" + },"31": { + "doc": "NGSIv2 To LD Adapter", + "title": "Notes", + "content": "The algorithm applies several deviations from the standard formats. These deviations are: . | The observedAt attribute is added to every property, its value is determined by the dateObserved attribute of the input. | The timestamp attribute of a metadata property normally determines the observedAt property but is ignored in this algorithm. | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#notes", + + "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#notes" + },"32": { + "doc": "NGSIv2 To LD Adapter", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | core-context | URI of a core json-ld context. | Yes | N/A | http://example.com/my-api | HTTP and HTTPS urls | . | ld-context | URI of a custom json-ld context. | No | N/A | http://example.com/my-api | HTTP and HTTPS urls | . | data-identifier | Identifier that points to data in provided json. | Yes | N/A | data | String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#config", + + "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#config" + },"33": { + "doc": "NGSIv2 To LD Adapter", + "title": "NGSIv2 To LD Adapter", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld", + + "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld" + },"34": { + "doc": "RDF Adapter", + "title": "LDIO RDF Adapter", + "content": "Ldio:RdfAdapter . As the most basic adapter, the RDF Adapter will take in an RDF string and convert it into an internal Linked Data model based on the given content type. This internal Linked Data model is then available for utilization in various other components, such as transformers and outputs. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#ldio-rdf-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#ldio-rdf-adapter" + },"35": { + "doc": "RDF Adapter", + "title": "Notes", + "content": "This Adapter only supports valid RDF mime types . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#notes", + + "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#notes" + },"36": { + "doc": "RDF Adapter", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | max-jsonld-cache-capacity | After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). | No | 100 | 100 | Integer | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#config", + + "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#config" + },"37": { + "doc": "RDF Adapter", + "title": "RDF Adapter", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter" + },"38": { + "doc": "RML Adapter", + "title": "LDIO RML Adapter", + "content": "Ldio:RmlAdapter . The RML Adapter allows a user to transform a non-LD object (json/CSV/XML) to an RDF object. This is done by providing a RML mapping file. For more details on how to form a correct RML mapping, visit the RML documentation. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter#ldio-rml-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter#ldio-rml-adapter" + },"39": { + "doc": "RML Adapter", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | mapping | Path to content of RML/content of RML mapping. | Yes | N/A | mapping.ttl | Path/String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter#config", + + "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter#config" + },"40": { + "doc": "RML Adapter", + "title": "RML Adapter", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter", + + "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter" + },"41": { + "doc": "LDIO Inputs", + "title": "Linked Data Orchestrator Inputs", + "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/index#linked-data-orchestrator-inputs", + + "relUrl": "/ldio/ldio-inputs/index#linked-data-orchestrator-inputs" + },"42": { + "doc": "LDIO Inputs", + "title": "LDIO Inputs", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/index", + + "relUrl": "/ldio/ldio-inputs/index" + },"43": { + "doc": "AMQP In", + "title": "LDIO AMQP In", + "content": "Ldio:AmqpIn . The LDIO AMQP In listens to messages from an AMQP 1.0 queue. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#ldio-amqp-in", + + "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#ldio-amqp-in" + },"44": { + "doc": "AMQP In", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | remote-url | URI to AMQP queue | Yes | N/A | amqp://server:61616 | In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] | . | queue | Name of the queue | Yes | N/A | quickstart-events | String | . | username | Username used in authentication | Yes | N/A | client | String | . | password | Password used in the authentication | Yes | N/A | secret | String | . | content-type | Content-type suggestion* for received messages of queue | No | application/n-quads | application/n-quads | Any content type supported by Apache Jena | . | When the header of the message contains a “contentType” property, the listener will use the content type provided by the header. | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#config", + + "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#config" + },"45": { + "doc": "AMQP In", + "title": "Example", + "content": "input: name: Ldio:AmqpIn config: remote-url: amqp://localhost:61616 username: artemis password: artemis queue: example content-type: application/ld+json . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#example", + + "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#example" + },"46": { + "doc": "AMQP In", + "title": "Pausing", + "content": "When paused, this component will not receive any messages from the queue and will start syncing with the queue when unpaused. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#pausing", + + "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#pausing" + },"47": { + "doc": "AMQP In", + "title": "AMQP In", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in", + + "relUrl": "/ldio/ldio-inputs/ldio-amqp-in" + },"48": { + "doc": "HTTP In Poller", + "title": "LDIO HTTP In Poller", + "content": "Ldio:HttpInPoller . The LDIO Http In Poller is a basic Http Poller that will poll a target URL on a specified interval. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#ldio-http-in-poller", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#ldio-http-in-poller" + },"49": { + "doc": "HTTP In Poller", + "title": "Config", + "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | url | Target URL to poll from. | Yes | N/A | http://example.com/my-api | HTTP and HTTPS urls (lists are supported) | . | cron | Cron expression to declare when the polling should take place 1 | Yes2 | N/A | */10 * * * * * | Spring Cron Expression | . | interval | Polling interval declared in ISO 8601 format. | Yes2 | N/A | PT1S | ISO 8601 formatted String | . | continueOnFail | Indicated if continue if polling results in failure | No | true | true | true or false | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Multiple urls . The Http In Poller supports polling multiple endpoints. Example configuration: . name: Ldio:HttpInPoller config: auth: type: API_KEY api-key: my-key api-key-header: X-API-Key url: - https://webhook.site/6cb49dd1-aa05-4e77-8870-f06903805b30 - https://webhook.site/e8078b99-4b09-496d-baa8-8ba309dec6b6 interval: PT3S . When using multiple endpoints, the other config (auth config, interval, etc.) applies to all endpoints. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#config", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#config" + },"50": { + "doc": "HTTP In Poller", + "title": "Pausing", + "content": "When paused, this component will stop making any of the scheduled HTTP-calls. When resumed, it will restart these calls as if the component had been restarted, meaning any configured periods will start counting from the moment the pipeline was resumed instead of when it was originally created. | The cron schedules are in timezone ‘UTC’. ↩ . | Either choose the ‘cron’ option or the ‘interval’. However, the interval property will become deprecated. ↩ ↩2 . | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#pausing", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#pausing" + },"51": { + "doc": "HTTP In Poller", + "title": "HTTP In Poller", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller" + },"52": { + "doc": "HTTP In", + "title": "LDIO HTTP In", + "content": "Ldio:HttpIn . The LDIO Http In is a basic Http Listener. Data can be written to http://{hostname}:{port}/{pipeline name} . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#ldio-http-in", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in#ldio-http-in" + },"53": { + "doc": "HTTP In", + "title": "Config", + "content": "This component has no required config . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#config", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in#config" + },"54": { + "doc": "HTTP In", + "title": "Pausing", + "content": "When paused, this component will return an 503 response to any HTTP-calls it receives . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#pausing", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in#pausing" + },"55": { + "doc": "HTTP In", + "title": "HTTP In", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in", + + "relUrl": "/ldio/ldio-inputs/ldio-http-in" + },"56": { + "doc": "Kafka In", + "title": "LDIO Kafka In", + "content": "Ldio:KafkaIn . The LDIO Kafka In listens to messages from a kafka topic. Two security protocols are supported: . | NO SECURITY | SASL SSL PLAIN | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#ldio-kafka-in", + + "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#ldio-kafka-in" + },"57": { + "doc": "Kafka In", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | content-type | Any content type supported by Apache Jena | Yes | N/A | application/n-quads | Any type supported by Apache Jena | . | bootstrap-servers | Comma separated list of uris of the bootstrap servers | Yes | N/A | localhost:9012 | url | . | topics | Names of the topics (comma separated) | Yes | N/A | quickstart-events | String | . | group-id | Group identifier the consumer belongs to | No | generated value | group-1 | String | . | security-protocol | Security protocol to be used to connect to the kafka broker | No | NO_AUTH | SASL_SSL_PLAIN | SASL_SSL_PLAIN or NO_AUTH | . | sasl-jaas-user | Username used in the security protocol | No | null | client | String | . | sasl-jaas-password | Password used in the security protocol | No | null | secret | String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#config", + + "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#config" + },"58": { + "doc": "Kafka In", + "title": "Example", + "content": "NO SECURITY . outputs: - name: Ldio:KafkaIn config: content-type: application/n-quads topics: quickstart-events bootstrap-servers: localhost:9092 . SASL SSL PLAIN . outputs: - name: Ldio:KafkaIn config: content-type: application/n-quads topics: quickstart-events bootstrap-servers: localhost:9092 group-id: testing_group security-protocol: SASL_SSL_PLAIN sasl-jaas-user: client sasl-jaas-password: client-secret . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#example", + + "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#example" + },"59": { + "doc": "Kafka In", + "title": "Pausing", + "content": "When paused, this component will stop listening to the kafka topics. When resumed, it will try to resync with all topics. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#pausing", + + "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#pausing" + },"60": { + "doc": "Kafka In", + "title": "Kafka In", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in", + + "relUrl": "/ldio/ldio-inputs/ldio-kafka-in" + },"61": { + "doc": "LDES Client with Connector", + "title": "LDIO Ldes Client Connector", + "content": "Ldio:LdesClientConnector . An EDC (Eclipse dataspace Connector) LDIO wrapper component for the ldio ldes client to add EDC support to this component. If you’d like to know how to configure the LDES Client, we refer to the ldio ldes client. The additional functionality provided by this component makes it possible to use the Ldes Client to consume an LDES through an EDC connector. This component exposes two endpoints: . | http://://transfer The Ldio component will start the data transfer with the connector. You have to send the transfer request to the LdioLdesClientConnector instead of the EDC consumer connector. The LDIO Ldes Client Connector will start the transfer with the connector and also keep the transfer alive while consuming the LDES (e.g. request a new token when it expires). | http://://token This endpoint should never be called directly. This is the callback to be provided in the transfer request. The EDC connector will use this callback endpoint to provide the LDES Client with a token. | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#ldio-ldes-client-connector", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#ldio-ldes-client-connector" + },"62": { + "doc": "LDES Client with Connector", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | connector-transfer-url | The transfer url of the EDC connector which has to be called to start a transfer | Yes | N/A | http://consumer-connector:29193/management/v2/transferprocesses | HTTP and HTTPS urls | . | proxy-url-to-replace | Makes it possible to proxy a part of the url of the LDES**. Indicates which part of the url should be replaced. | No | empty string | http://ldes-behind-connectors.dev | string | . | proxy-url-replacement | Makes it possible to proxy a part of the url of the LDES**. Indicates the replacement url part. | No | memory | http://consumer-connector:29193 | string | . ** The url mentioned here are the actual url’s used by the LDES Server (hostname). These are included in the results bodies to indicate relations, etc. This is a temporary solution until the client and server support relative urls. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#config", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#config" + },"63": { + "doc": "LDES Client with Connector", + "title": "Examples", + "content": "input: name: Ldio:LdesClientConnector config: url: http://consumer-connector:29291/public connector-transfer-url: http://consumer-connector:29193/management/v2/transferprocesses proxy-url-to-replace: http://localhost:8081/devices proxy-url-replacement: http://consumer-connector:29291/public source-format: application/n-quads . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#examples", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#examples" + },"64": { + "doc": "LDES Client with Connector", + "title": "INIT phase", + "content": "Contrary to the other ldio-input components, the connector waits in the INIT status for the edc-token and will only progress to the RUNNING status once it has received this token. More on the statuses in ldio can be found here. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#init-phase", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#init-phase" + },"65": { + "doc": "LDES Client with Connector", + "title": "Pausing", + "content": "When paused, this component will stop processing the current fragment and not make any calls to the server. When resumed, it will continue with the fragment where it stopped and continue as normal. This component can not be paused while waiting for the token. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#pausing", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#pausing" + },"66": { + "doc": "LDES Client with Connector", + "title": "LDES Client with Connector", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector" + },"67": { + "doc": "LDES Client", + "title": "LDIO LDES Client", + "content": "The LDES Client is a component which can be used by data consumers to replicate and synchronize an LDES. When replication or synchronization is halted, the LDES Client is able to resume where it has stopped. More information on how consumption of an LDES works can be found here. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#ldio-ldes-client", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#ldio-ldes-client" + },"68": { + "doc": "LDES Client", + "title": "Processing fragments", + "content": "One or more URLs need to be configured in the LDES Client. If more URLs are configured, they need to be part of the same LDES. The configured fragments (URLs) will be processed and all relations will be added to the (non-persisted) queue. As long as the LDES Client runs, new fragments that need to be processed can be added to the queue. The LDES Client will keep track of the mutable and immutable fragments it did already process. When an immutable fragment that already has been processed is added to the queue, it will be ignored. Mutable fragments usually have a max-age set in the Cache-control header. If this isn’t the case, a default expiration interval will be used to set an expiration date on the fragment. When the max-age or default expiration interval of a fragment expires, the fragment will be put into the queue again so that the LDES Client fetches it again. Processing members within fragments . The LDES Client keeps track of the processed members of mutable fragments, to make sure members are only processed once within a fragment. When the fragment is marked as immutable, and no members can be added anymore, the LDES Client will stop keeping track of members processed within that fragment. Filtering . Exactly-once-filter . To have the possibility to filter out already received members, the “exactly-once-filter” can be enabled in configuration. The filter will check whether a member was already processed in other fragments. The IDs of all processed members will be remembered by the filter and when a duplicate member is processed, it will be filtered out before sending it to the output of the Client. Note that this filter can not be enabled with version materialisation. Latest-state-filter . When version materialisation is enabled, state objects that does not represent the latest state can be filter out by enabling the “latest-state-filter” in the configuration. Both the versionOf and the timestamp of the version object members will be remembered by the filter. When a new member with the same versionOf and a timestamp that is before or equal to the latest remembered timestamp, the member will be filtered out. When a member is processed that has a later timestamp than the last remembered member, that last remembered member will be overwritten and the new member will be processed. Flow of the Latest State Filter . flowchart LR ; CLIENT[LDIO LDES Client] --> Version_Object((Version\\n object)); Version_Object --> Latest_State_Filter(Latest State\\nFilter); Latest_State_Filter --> Filtering{Newer then\\n last processed\\n member?}; Filtering -->|Yes| Version_Materialiser(Version\\nMaterialiser); Version_Materialiser --> State_Object((State\\n object)); State_Object --> Sender[Ldio Sender]; Filtering ---->|No| Ignore[Ignore member]; . This Latest State Filter is only available for the version materialiser within the LDIO LDES Client, not for the transformer component . Persistence strategies . The Client offers different ways to persist state of the processed members: . | Strategy | Description | Advantages | Disadvantages | . | Memory | Store the state of members in the memory of the LDES Client | . | Fastest processing | Easiest setup | . | . | Not suitable for large datasets (>500k), heap will overflow | State is lost when the client stops/restarts | . | . | SQLite | A SQLite database is used to store state of members | . | Easy setup | State is not lost between runs | . | . | Slowest processing** | . | . | PostgreSQL | A PostgreSQL database is used to store state of the members | . | Fastest processing for larger datasets | State is not lost between runs | . | . | Database is needed | . | . ** We use a transaction for every processed record and SQLite is limited by the CPU (source). ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#processing-fragments", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#processing-fragments" + },"69": { + "doc": "LDES Client", + "title": "Config", + "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | urls | List of URLs of the LDES data sources | Yes | N/A | http://localhost:8080/my-ldes | HTTP and HTTPS URLs | . | source-format | The ‘Content-Type’ that should be requested to the server | No | text/turtle | application/n-quads | Any type supported by Apache Jena | . | state | ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted | No | memory | sqlite | ‘memory’, ‘sqlite’ or ‘postgres’ | . | keep-state | Indicates if the state should be persisted on shutdown (n/a for in memory states) | No | false | false | true or false | . | enable-exactly-once | Indicates whether a member must be sent exactly once or at least once | No | true | true | true or false | . The default source-format is text/turtle, as this RDF format supports relative URIs. However, if relative URIs are not used, application/n-quads or even the binary format application/rdf+protobuf are better options, as these formats are faster to parse. Setting the keep-state property to true makes it so that the state can not be deleted through the pipeline-management api . Version materialisation properties . | Property | Description | Required | Default | Example | Supported values | . | materialisation.enabled | Indicates if the client should return state-objects (true) or version-objects (false) | No | false | true | true or false | . | materialisation.enable-latest-state | Indicates whether all state or only the latest state must be sent | No | true | false | true or false | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . SQLite properties . | Property | Description | Required | Default | Example | Supported values | . | sqlite.directory | Directory wherein the .db file can be saved | No | N/A | /ldio/sqlite | String | . Postgres properties . | Property | Description | Required | Default | Example | Supported values | . | postgres.url | JDBC URL of the Postgres database | No | N/A | jdbc:postgresql://test.postgres.database.azure.com:5432/sample | String | . | postgres.username | Username used to connect to Postgres database | No | N/A | myUsername@test | String | . | postgres.password | Password used to connect to Postgres database | No | N/A | myPassword | String | . Configuration Examples . input: name: Ldio:LdesClient config: urls: - http://localhost:8080/my-ldes sourceFormat: text/turtle materialisation: enabled: true retries: enabled: true auth: type: OAUTH2_CLIENT_CREDENTIALS client-id: clientId client-secret: secret token-endpoint: http://localhost:8000/token . input: name: Ldio:LdesClient config: urls: - http://localhost:8080/my-ldes sourceFormat: text/turtle retries: enabled: true state: postgres postgres: url: jdbc:postgresql://test.postgres.database.azure.com:5432/sample username: myUsername@test password: myPassword . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#config", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#config" + },"70": { + "doc": "LDES Client", + "title": "Pausing the LDES Client", + "content": ". | When paused, the LDES Client will stop processing the current fragment and will not request new fragments from the server. | When resumed, the LDES Client will continue processing the fragment where it has stopped and it will request new fragments form the server. | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#pausing-the-ldes-client", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#pausing-the-ldes-client" + },"71": { + "doc": "LDES Client", + "title": "LDES Client", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client", + + "relUrl": "/ldio/ldio-inputs/ldio-ldes-client" + },"72": { + "doc": "LDIO Outputs", + "title": "Linked Data Orchestrator Outputs", + "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/index#linked-data-orchestrator-outputs", + + "relUrl": "/ldio/ldio-outputs/index#linked-data-orchestrator-outputs" + },"73": { + "doc": "LDIO Outputs", + "title": "LDIO Outputs", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/index", + + "relUrl": "/ldio/ldio-outputs/index" + },"74": { + "doc": "AMQP Out", + "title": "LDIO AMQP Out", + "content": "Ldio:AmqpOut . The LDIO AMQP Out sends messages to an AMQP 1.0 queue. The content-type configured in the rdf-writer.content-type is added as a header to the message with key “contentType”. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#ldio-amqp-out", + + "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#ldio-amqp-out" + },"75": { + "doc": "AMQP Out", + "title": "Config", + "content": "| Property | Description | Required | Default | Supported values | Example | . | remote-url | URI to AMQP queue | Yes | N/A | In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] | amqp://server:61616 | . | queue | Name of the queue | Yes | N/A | String | quickstart-events | . | username | Username used in authentication | Yes | N/A | String | client | . | password | Password used in the authentication | Yes | N/A | String | secret | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#config", + + "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#config" + },"76": { + "doc": "AMQP Out", + "title": "Example", + "content": "outputs: - name: Ldio:AmqpOut config: remote-url: amqp://localhost:61616 username: artemis password: artemis queue: example rdf-writer: content-type: application/n-quads . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#example", + + "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#example" + },"77": { + "doc": "AMQP Out", + "title": "AMQP Out", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out", + + "relUrl": "/ldio/ldio-outputs/ldio-amqp-out" + },"78": { + "doc": "Console Out", + "title": "LDIO Console Out", + "content": "Ldio:ConsoleOut . The LDIO Console Out will output its given model to the console. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out#ldio-console-out", + + "relUrl": "/ldio/ldio-outputs/ldio-console-out#ldio-console-out" + },"79": { + "doc": "Console Out", + "title": "Config", + "content": "RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out#config", + + "relUrl": "/ldio/ldio-outputs/ldio-console-out#config" + },"80": { + "doc": "Console Out", + "title": "Console Out", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out", + + "relUrl": "/ldio/ldio-outputs/ldio-console-out" + },"81": { + "doc": "HTTP Out", + "title": "LDIO HTTP Out", + "content": "Ldio:HttpOut . The LDIO HTTP Out is a basic Http Client that will send the given Linked Data model to a target url. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out#ldio-http-out", + + "relUrl": "/ldio/ldio-outputs/ldio-http-out#ldio-http-out" + },"82": { + "doc": "HTTP Out", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | endpoint | Target url. | Yes | N/A | http://example.com/endpoint | HTTP and HTTPS urls | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out#config", + + "relUrl": "/ldio/ldio-outputs/ldio-http-out#config" + },"83": { + "doc": "HTTP Out", + "title": "HTTP Out", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out", + + "relUrl": "/ldio/ldio-outputs/ldio-http-out" + },"84": { + "doc": "HTTP Sparql Out", + "title": "HTTP Sparql Out", + "content": "Ldio:HttpSparqlOut . The HTTP SPARQL Out component can be used to write data to a SPARQL host, with Virtuoso as the most common known one. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out", + + "relUrl": "/ldio/ldio-outputs/ldio-http-sparql-out" + },"85": { + "doc": "HTTP Sparql Out", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | endpoint | The url of the sparql host | Yes | N/A | http://localhost:8890/sparql | URL | . | graph | The graph whereto must be written | No | N/A | http://example.graph.com | String | . | skolemisation.skolemDomain | If the skolem domain is set, skolemisation will be triggered before the triples are written to the sparql host | No | N/A | http://example.org | Any valid IRI | . | replacement.enabled | Whether the old nodes must be replaced by the new ones | No | true | false | Boolean value | . | replacement.depth | How deep the default delete query must delete nested nodes from the existing subject, will be ignored if replacement.deleteFunctionis set | No | 10 | 15 | Integer | . | replacement.deleteFunction | If this property is set, then the default delete function will be overridden with this delete function | No | N/A | DELETE { ?s ?p ?o} WHERE { ?s ?p ?o } | String | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Replacement . Replacement includes that all old nodes from certain subjects must be deleted before the new nodes with the same subject can be inserted. By default, a delete query is constructed by the service that delete all nodes, including nested nodes to a level, specified by the replacement.depth property, deep. If for some reason, the constructed delete query is not sufficient, or the query is too complex, a custom delete query can be configured. This query will override the default query created by the service, which also mean the replacement.depth property will be ignored. Skolemisation . Not all sparql hosts can deal that well with blank nodes, therefore, those nodes can first be skolemised. However, to skolemise nodes, a skolem domain is required, which can be set by the skolemisation.skolemDomain property, which directly enables the service. More information about skolemisation can be found on the skolemisation-transformer page . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out#config", + + "relUrl": "/ldio/ldio-outputs/ldio-http-sparql-out#config" + },"86": { + "doc": "Kafka Out", + "title": "LDIO Kafka Out", + "content": "Ldio:KafkaOut . The LDIO Kafka Out sends messages to a kafka topic. Two security protocols are supported: . | NO SECURITY | SASL SSL PLAIN | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#ldio-kafka-out", + + "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#ldio-kafka-out" + },"87": { + "doc": "Kafka Out", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | bootstrap-servers | Comma separated list of uris of the bootstrap servers | Yes | N/A | localhost:9012 | url | . | topic | Name of the topic | Yes | N/A | quickstart-events | String | . | key-property-path | Optional property path to extract the kafka key from the data model | No | null | http://purl.org/dc/terms/title | ARQ property path | . | security-protocol | Security protocol to be used to connect to the kafka broker | No | NO_AUTH | SASL_SSL_PLAIN | SASL_SSL_PLAIN or NO_AUTH | . | sasl-jaas-user | Username used in the security protocol | No | null | client | String | . | sasl-jaas-password | Password used in the security protocol | No | null | secret | String | . | frame-type | RDF type of the objects that need to be included for JSON-LD framing. | No | N/A | http://purl.org/goodrelations/v1#Offering | Any RDF type | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#config", + + "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#config" + },"88": { + "doc": "Kafka Out", + "title": "Example", + "content": "NO SECURITY . outputs: - name: Ldio:KafkaOut config: bootstrap-servers: localhost:9092 topic: quickstart-events key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title> . SASL SSL PLAIN . outputs: - name: Ldio:KafkaOut config: bootstrap-servers: localhost:9092 topic: quickstart-events key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title> security-protocol: SASL_SSL_PLAIN sasl-jaas-user: client sasl-jaas-password: client-secret . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#example", + + "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#example" + },"89": { + "doc": "Kafka Out", + "title": "Kafka Out", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out", + + "relUrl": "/ldio/ldio-outputs/ldio-kafka-out" + },"90": { + "doc": "Repository Sink", + "title": "Repository Sink", + "content": "Ldio:RepositorySink . The repository Sink is used to flush an LDES stream into a triplestore. Any triplestore that supports the RDF4J remote repository API can be used. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-repository-sink", + + "relUrl": "/ldio/ldio-outputs/ldio-repository-sink" + },"91": { + "doc": "Repository Sink", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | sparql-host | The url of the server hosting the repository | Yes | N/A | http://repositoryServer | URL | . | repository-id | The rdf4j repository id | Yes | N/A | repoId | String | . | named-graph | If set, the triples will be written to this named graph | No | N/A | http://name | Any valid IRI | . | batch-size | Number of members or models that will be committed at once | No | 500 | 500 | Integer | . | batch-timeout | If the batch size has not been reached within this number of milliseconds, the members will be committed anyway. | No | 120000 | 30000 | Integer | . Batching . To increase the performance of this materialiser, members will be committed in batch to the triple store. However, it’s important to notice that this can have an impact on the data integrity. First of all, there could be a delay, with a maximum delay of the configured batch timeout, when the triple store will be up-to-date. Secondly, if something goes wrong halfway of a batch, all the members in that batch will not be committed to triple story and thus will be gone. So the more important data integrity is, the lower the batch-size and batch-timeout should be configured. If a more performant repository materialiser is desired, batch-size and batch-timeout should be configured somewhat higher. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-repository-sink#config", + + "relUrl": "/ldio/ldio-outputs/ldio-repository-sink#config" + },"92": { + "doc": "LDIO Transformers", + "title": "Linked Data Interactions Orchestrator Transformers", + "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/index#linked-data-interactions-orchestrator-transformers", + + "relUrl": "/ldio/ldio-transformers/index#linked-data-interactions-orchestrator-transformers" + },"93": { + "doc": "LDIO Transformers", + "title": "LDIO Transformers", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/index", + + "relUrl": "/ldio/ldio-transformers/index" + },"94": { + "doc": "Change Detection Filter", + "title": "LDIO Change Detection Filter", + "content": "Ldio:ChangeDetectionFilter . The LDIO Change Detection Filter, which is in fact a transformer, keeps track of each member with the same subject if the state has changed. If not, the member will be ignored, otherwise the member will be sent further through the pipeline. This can come in handy when you do not want to spam your server for example with duplicate state objects. Flow of the Change Detection Filter . flowchart LR ; PREV_TRANSFORMER[Previous transformer] --> State_Object((State\\n object)); State_Object --> FILTER(Change Detection\\nFilter); FILTER --> HASH((Hashed\\n model)) HASH --> Filtering{Contains\\n member with\\n same subject and\\n same hashed\\n model?}; Filtering -->|No| NEXT_TRANSFORMER[Next\\n transformer]; Filtering -->|Yes| Ignore[Ignore member]; . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter#ldio-change-detection-filter", + + "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter#ldio-change-detection-filter" + },"95": { + "doc": "Change Detection Filter", + "title": "Config", + "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | state | ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted | No | memory | sqlite | ‘memory’, ‘sqlite’ or ‘postgres’ | . | keep-state | Indicates if the state should be persisted on shutdown (n/a for in memory states) | No | false | false | true or false | . SQLite properties . | Property | Description | Required | Default | Example | Supported values | . | sqlite.directory | Directory wherein the .db file can be saved | No | N/A | /ldio/sqlite | String | . Postgres properties . | Property | Description | Required | Default | Example | Supported values | . | postgres.url | JDBC URL of the Postgres database | No | N/A | jdbc:postgresql://test.postgres.database.azure.com:5432/sample | String | . | postgres.username | Username used to connect to Postgres database | No | N/A | myUsername@test | String | . | postgres.password | Password used to connect to Postgres database | No | N/A | myPassword | String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter#config", + + "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter#config" + },"96": { + "doc": "Change Detection Filter", + "title": "Change Detection Filter", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter", + + "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter" + },"97": { + "doc": "GeoJson To WKT Transformer", + "title": "LDIO GeoJson To WKT Transformer", + "content": "Ldio:GeoJsonToWktTransformer . The GeoJson to Wkt Transformer will transform any GeoJson statements (with predicate https://purl.org/geojson/vocab#geometry) to a wkt string. When the transform-to-rdf+wkt-enabled configuration is enabled, GeoJSON statements will be converted into RDF+WKT format. For example: . { \"https://purl.org/geojson/vocab#geojson:geometry\": { \"@type\": \"Point\", \"https://purl.org/geojson/vocab#geojson:coordinates\": [ 100.0, 0.0 ] } } . becomes: . { \"http://www.w3.org/ns/locn#geometry\": { \"@value\": \"POINT (100 0)\", \"@type\": \"http://www.opengis.net/ont/geosparql#wktLiteral\" } } . With transform-to-rdf+wkt-enabled set to true it becomes: . @prefix geojson: <https://purl.org/geojson/vocab#> . @prefix sf: <http://www.opengis.net/ont/sf#> . @prefix geo: <http://www.opengis.net/ont/geosparql#> . @prefix locn: <http://www.w3.org/ns/locn#> . <http://example.com/features/point> a geojson:Feature; locn:geometry [ a sf:Point; geo:asWKT \"POINT (100 0)\"^^geo:wktLiteral ] . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt#ldio-geojson-to-wkt-transformer", + + "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt#ldio-geojson-to-wkt-transformer" + },"98": { + "doc": "GeoJson To WKT Transformer", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | transform-to-rdf+wkt-enabled | Transform GeoJson to RDF+WKT format, defaults to false and the default format is WKT | No | false | false | true/false | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt#config", + + "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt#config" + },"99": { + "doc": "GeoJson To WKT Transformer", + "title": "GeoJson To WKT Transformer", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt", + + "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt" + },"100": { + "doc": "Http Enricher Transformer", + "title": "LDIO Http Enricher", + "content": "Ldio:HttpEnricher . A transformer which allows to send a GET or POST HTTP request to a dynamic URL provided by the model. The response is converted to linked data and added to the incoming model. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher#ldio-http-enricher", + + "relUrl": "/ldio/ldio-transformers/ldio-http-enricher#ldio-http-enricher" + },"101": { + "doc": "Http Enricher Transformer", + "title": "Config", + "content": "| Property | Description | Required | Default | Supported values | Example | . | adapter.name | This transformer requires an ldio-adapter to convert the responses to linked data. | Yes | N/A | Paths of supported LDIO Adapters | Ldio:RdfAdapter | . | adapter.config.xxx | Optional config that may be required by the adapter | No | N/A | Paths of supported LDIO Adapters | Ldio:RdfAdapter | . | url-property-path | Path defining the url that needs to be selected on the model for the http request. | Yes | N/A | Valid property paths | http://example.org/url | . | header-property-path | Path defining the headers that needs to be selected on the model for the http request. | No | N/A | Valid property paths | http://example.org/header | . | body-property-path | Path defining the body that needs to be selected on the model to be added when a POST http request is used. | No | N/A | Valid property paths | http://example.org/meta/http://example.org/body | . | http-method-property-path | Path defining the http method that needs to be selected on the model for the http request. | No | GET | GET or POST | GET | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Note that all adapters are supported. When the adapter requires additional config, this can be added as seen below in the example. Example: . This example contains a JsonToLdAdapter which needs “core-context” as config. At the bottom there is also “auth” config provided for the request executor. - name: Ldio:HttpEnricher config: adapter: name: Ldio:JsonToLdAdapter config: core-context: file:///ldio/jsonld/observation.jsonld url-property-path: <http://example.org/url> header-property-path: <http://example.org/meta>/<http://example.org/headers> body-property-path: <http://example.org/meta>/<http://example.org/body> http-method-property-path: <http://example.org/meta>/<http://example.org/method> auth: type: API_KEY api-key: my-secret api-key-header: x-api-key . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher#config", + + "relUrl": "/ldio/ldio-transformers/ldio-http-enricher#config" + },"102": { + "doc": "Http Enricher Transformer", + "title": "Http Enricher Transformer", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher", + + "relUrl": "/ldio/ldio-transformers/ldio-http-enricher" + },"103": { + "doc": "Skolemisation Transformer", + "title": "LDIO Skolemisation Transformer", + "content": "Ldio:SkolemisationTransformer . A transformer which skolemises the incoming model. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#ldio-skolemisation-transformer", + + "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#ldio-skolemisation-transformer" + },"104": { + "doc": "Skolemisation Transformer", + "title": "What is Skolemisation", + "content": "In the context of Linked Data, Skolemisation is a process used to handle blank nodes or anonymous nodes in RDF (Resource Description Framework) graphs. These nodes, which lack unique identifiers, are frequently employed in RDF/S knowledge bases to represent complex attributes or resources with known properties but unknown identities. Skolemisation in Linked Data involves the transformation of these blank nodes into Skolem Uniform Resource Identifiers ( URIs). The process enhances the clarity makes it easier to reference these nodes in future datasets. This process is particularly useful when dealing with substantial volumes of unstructured data distributed across diverse sources. By improving the accuracy and relevance of RDF summaries in relation to original datasets, Skolemisation enhances the efficiency and effectiveness of subsequent queries against these summaries. In summary, Skolemisation in Linked Data provides a way to handle the complexity introduced by blank nodes in RDF graphs, thereby enhancing the clarity, interoperability, and usability of the data. Example . Suppose we have the following RDF triples with a blank node represented as _:: . _:bnode <http://purl.org/dc/terms/title> \"The Lord of the Rings\" . _:bnode <http://purl.org/dc/terms/creator> \"J.R.R. Tolkien\" . In this example, _: is a blank node that represents a resource (a book in this case) with known properties (title and creator) but an unknown identity. Through Skolemisation, we can replace the blank node with a Skolem URI. The Skolem URI is typically a URL that is unique to the blank node and is generated by the system handling the RDF data. Here’s how it might look: . <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/title> \"The Lord of the Rings\" . <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/creator> \"J.R.R. Tolkien\" . In this Skolemized version, the blank node has been replaced with the Skolem URI http://example.com/.well-known/genid/123456. This URI is unique to the resource previously represented by the blank node, and can now be used to reference this resource in other datasets. This is a simple example, but it illustrates the basic process of Skolemisation in Linked Data. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#what-is-skolemisation", + + "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#what-is-skolemisation" + },"105": { + "doc": "Skolemisation Transformer", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | skolemDomain | Skolemisation domain | true | N/A | http://example.com | Any valid URI | . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:SkolemisationTransformer config: skolemDomain: http://example.com . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#config", + + "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#config" + },"106": { + "doc": "Skolemisation Transformer", + "title": "Skolemisation Transformer", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer", + + "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer" + },"107": { + "doc": "SPARQL Construct", + "title": "LDIO SPARQL Construct", + "content": "Ldio:SparqlConstructTransformer . The SPARQL Construct Transformer will modify the model based on the given SPARQL Construct Query. SPARQL Construct is a query language used in semantic Web technologies to create RDF (Resource Description Framework) graphs from existing RDF data. It allows users to specify a pattern of data they wish to extract from the RDF data and construct a new graph based on that pattern. The SPARQL Construct query language provides a powerful way to create new RDF data by using existing data as the input. It can be used to transform RDF data into different formats, as well as to simplify the structure of RDF data by aggregating or filtering data. This SPARQL Construct Transfomer building block can be used to execute model transformations. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#ldio-sparql-construct", + + "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#ldio-sparql-construct" + },"108": { + "doc": "SPARQL Construct", + "title": "Splitting models using SPARQL Construct", + "content": "This component can be used to split models into multiple models using graphs. For example, the below query will create a dataset containing multiple models defined by ‘GRAPH’. The SPARQL construct component will extract all named models from the dataset and add all statements from the default model. The component will then return a collection of models. CONSTRUCT { GRAPH ?s { ?s ?p ?o } } WHERE { ?s ?p ?o } . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#splitting-models-using-sparql-construct", + + "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#splitting-models-using-sparql-construct" + },"109": { + "doc": "SPARQL Construct", + "title": "SPARQL functions", + "content": "We support some additional geo functions that can call inside your SPARQL Construct query, . with the following namespace: . prefix geoc: https://opengis.net/def/function/geosparql/custom# . | Function | Description | Input | Output | . | geoc:lineAtIndex | get LineString from MultiLineString by index. | MultiLineString(wktLiteral) & index | LineString(wktLiteral) | . | geoc:firstCoordinate | get first Coordinate of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:lastCoordinate | get last Coordinate of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:lineLength | calculate total line length of LineString. | LineString(wktLiteral) | distance in meters | . | geoc:midPoint | calculate midpoint of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:pointAtFromStart | calculate point on LineString by distance. | LineString(wktLiteral) & distance in meters | Coordinate(wktLiteral) | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#sparql-functions", + + "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#sparql-functions" + },"110": { + "doc": "SPARQL Construct", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | query | Path to content of SPARQL Query/content of SPARQL query. | Yes | N/A | query.rq | Path/String | . | infer | Include original model in end result. | No | false | false | true or false | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#config", + + "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#config" + },"111": { + "doc": "SPARQL Construct", + "title": "SPARQL Construct", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct", + + "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct" + },"112": { + "doc": "Version Materializer", + "title": "LDIO Version Materializer", + "content": "Ldio:VersionMaterialiser . The Version Materializer will transform a Version Object to a State Object. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#ldio-version-materializer", + + "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#ldio-version-materializer" + },"113": { + "doc": "Version Materializer", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | versionOf-property | Property that points to the versionOfPath. | Yes | N/A | “http://purl.org/dc/terms/isVersionOf” | String | . | restrict-to-members | Only returns the statements of the node containing the versionOf property, including potential nested blank nodes. | No | false | false | true or false | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#config", + + "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#config" + },"114": { + "doc": "Version Materializer", + "title": "Example", + "content": "Version Object . A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model. An example would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix dc: <http://purl.org/dc/terms/> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member#2024-01-01T13:00:00+01:00> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ] ; prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; dc:isVersionOf <http://example.org/Something> ; . State Object . For each version object, the transformer will generate a corresponding state object and remove all statements that include the versionOf predicate. An example of the created state object by the previous version object would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2023-08-18T13:08:00+01:00\"^^xsd:DateTime ] . prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:VersionMaterialiser config: versionOf-property: http://purl.org/dc/terms/isVersionOf . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#example", + + "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#example" + },"115": { + "doc": "Version Materializer", + "title": "Version Materializer", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer", + + "relUrl": "/ldio/ldio-transformers/ldio-version-materializer" + },"116": { + "doc": "Version Object Creator", + "title": "LDIO Version Object Creator", + "content": "Ldio:VersionObjectCreator . The Version Object Creator will transform a State Object to a Version Object. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#ldio-version-object-creator", + + "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#ldio-version-object-creator" + },"117": { + "doc": "Version Object Creator", + "title": "Config", + "content": "| Property | Description | Required | Default | Example | Supported values | . | date-observed-property | Property path (IRI format ‘<>’) that points to a literal which should be used as timestampPath. Defaults to current timestamp. | No | Current Timestamp | <https://example.org/ObservedAt> | String | . | member-type | Defines the RDF type of the object to be transformed to a version object. | Yes | N/A | https://example.org/Person | String | . | delimiter | Defines how the version object id will be constructed. (versionOf + delimiter + dateObserved) | No | / | / | String | . | generatedAt-property | A statement will be added to the model with the generatedAt value and the given property. | No | http://www.w3.org/ns/prov#generatedAtTime | http://www.w3.org/ns/prov#generatedAtTime | String | . | versionOf-property | A statement will be added to the model with the versionOf value and the given property. | No | http://purl.org/dc/terms/isVersionOf | http://purl.org/dc/terms/isVersionOf | String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#config", + + "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#config" + },"118": { + "doc": "Version Object Creator", + "title": "Example", + "content": "State Object . A state object is an entity that represents the most recent state of an object, and in this context, the subject is not unique. Below is an example presented in RDF format: Below is an example presented in RDF format: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.org/member> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2023-08-18T13:08:00+01:00\"^^xsd:DateTime ] . A property path can be provided for the date-observed-property. You can provide the following date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp> to select time:inXSDDateTimeStamp within ex:created. Version Object . A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model. The transformer will perform three key tasks: . | Modify the named subject with a unique identifier based on the provided date-observed-property and delimiter | Add a timestamp statement | Add a versionOf statement | . An example of the created version object by the previous state object would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix dc: <http://purl.org/dc/terms/> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member#2024-01-01T13:00:00+01:00> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ] ; prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; dc:isVersionOf <http://example.org/Something> ; . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:VersionObjectCreator config: member-type: - http://example.org/Something - http://example.org/SomethingElse delimiter: \"#\" date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp> generatedAt-property: http://www.w3.org/ns/prov#generatedAtTime versionOf-property: http://purl.org/dc/terms/isVersionOf . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#example", + + "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#example" + },"119": { + "doc": "Version Object Creator", + "title": "Version Object Creator", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator", + + "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator" + },"120": { + "doc": "Pipeline Management", + "title": "Pipeline Management", + "content": " ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/index", + + "relUrl": "/ldio/pipeline-management/index" + },"121": { + "doc": "LDES Client Status", + "title": "LDES Client Status", + "content": "Just like the LDIO pipelines have a status, so does the Ldio:LdesClient. The client status can be fetched when a pipeline that has a running status, and of course when it contains an LDES client as input component. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status", + + "relUrl": "/ldio/pipeline-management/ldes-client-status" + },"122": { + "doc": "LDES Client Status", + "title": "Overview Of The Status Flow", + "content": "graph LR ; REPLICATING --> SYNCHRONISING; REPLICATING --> COMPLETED; SYNCHRONISING --> COMPLETED; SYNCHRONISING --> ERROR; REPLICATING --> ERROR; . The above diagram shows the flow between the different statuses of the client. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#overview-of-the-status-flow", + + "relUrl": "/ldio/pipeline-management/ldes-client-status#overview-of-the-status-flow" + },"123": { + "doc": "LDES Client Status", + "title": "REPLICATING", + "content": "The startup status of the client. This status indicates that the LDES client have not yet fetched all the available fragments of a view (or views if so configured) . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#replicating", + + "relUrl": "/ldio/pipeline-management/ldes-client-status#replicating" + },"124": { + "doc": "LDES Client Status", + "title": "SYNCHRONISING", + "content": "This status indicates that all the fragments of the configured view(s) have been fetched at least once, and there is at least one fragment that does not have an immutable state yet. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#synchronising", + + "relUrl": "/ldio/pipeline-management/ldes-client-status#synchronising" + },"125": { + "doc": "LDES Client Status", + "title": "ERROR", + "content": "This status indicates that an error has occurred somewhere while REPLICATING or SYNCHRONISING . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#error", + + "relUrl": "/ldio/pipeline-management/ldes-client-status#error" + },"126": { + "doc": "LDES Client Status", + "title": "COMPLETED", + "content": "This status indicates that all the fragments of the configured view has been fetched at least once and all those have an immutable state, or in other words, the end of the LDES has been reached. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#completed", + + "relUrl": "/ldio/pipeline-management/ldes-client-status#completed" + },"127": { + "doc": "Management of Pipelines", + "title": "Management of Pipelines", + "content": "Pipelines in LDIO can be created in YAML or JSON configuration (although all example configurations are made in YAML, these can also be formatted in JSON). A default pipeline looks as follows: . name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Transformer config: foo: bar . | Note that one orchestrator can have multiple pipelines | Note that one pipeline can have multiple LDI Transformers and LDI Outputs | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines", + + "relUrl": "/ldio/pipeline-management/management-of-pipelines" + },"128": { + "doc": "Management of Pipelines", + "title": "Anatomy of a pipeline", + "content": "Each pipeline is built up of the following components: . | LDIO Input: A component that will receive data (not necessarily LD) to then feed the LDIO pipeline. | LDIO Adapter: To be used in conjunction with the LDIO Input, the LDIO Adapter will transform the provided content into and internal Linked Data model and sends it down the pipeline. | LDIO Transformer: A component that takes in a Linked Data model, transforms/modifies it and then puts it back on the pipeline. | LDIO Output: A component that will take in Linked Data and will export it to external sources. | . stateDiagram-v2 direction LR LDI_Input --> LDI_Transformer : LD LDI_Transformer --> LDI_Output : LD state LDI_Input { direction LR [*] --> LDI_Adapter : Non LD state LDI_Adapter { direction LR [*] --> adapt adapt --> [*] } LDI_Adapter --> [*] : LD } state LDI_Transformer { direction LR [*] --> transform transform --> [*] } state LDI_Output { direction LR [*] --> [*] } . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#anatomy-of-a-pipeline", + + "relUrl": "/ldio/pipeline-management/management-of-pipelines#anatomy-of-a-pipeline" + },"129": { + "doc": "Management of Pipelines", + "title": "Persistence of Pipelines", + "content": "By default, all pipelines defined after startup (via management API) will be lost on restart. To prevent this behaviour, add the orchestrator.directory property as follows: . orchestrator: directory: \"{directory in application folder}\" . If this directory does not exist, it will be created. NOTE: An application config can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml). ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#persistence-of-pipelines", + + "relUrl": "/ldio/pipeline-management/management-of-pipelines#persistence-of-pipelines" + },"130": { + "doc": "Management of Pipelines", + "title": "Pausing & Resuming LDIO", + "content": "Sometimes it might be preferred to pause an LDIO pipeline instead of deleting and recreating it. The endpoints to manage pipelines can be found here . The exact behaviour of a paused pipeline depends on its input component and can be found in the documentation of these components. However, it will always complete its current run through the pipeline and then seize sending any output. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#pausing--resuming-ldio", + + "relUrl": "/ldio/pipeline-management/management-of-pipelines#pausing--resuming-ldio" + },"131": { + "doc": "Pipeline Management API", + "title": "Pipeline Management API", + "content": "Swagger UI | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-api", + + "relUrl": "/ldio/pipeline-management/pipeline-api" + },"132": { + "doc": "Pipeline Status", + "title": "Pipeline Status", + "content": "An individual ldio-pipeline can be in one of several different statuses. These different statuses and their behaviour are dependent on the input component of the pipeline. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status", + + "relUrl": "/ldio/pipeline-management/pipeline-status" + },"133": { + "doc": "Pipeline Status", + "title": "Overview Of The Status Flow", + "content": "graph LR ; INIT --> RUNNING; INIT --> STOPPED; RUNNING --> STOPPED; RUNNING --> HALTED; HALTED --> RUNNING; HALTED --> STOPPED; . The above diagram shows the flow between the different statuses of the pipeline. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#overview-of-the-status-flow", + + "relUrl": "/ldio/pipeline-management/pipeline-status#overview-of-the-status-flow" + },"134": { + "doc": "Pipeline Status", + "title": "INIT", + "content": "The startup step of the ldio pipeline. This is the preparation step before the input component can receive data and pass it on to the rest of the pipeline. In most components this step will take little time. The only exception for now is the client-connector. It is not possible to pause the pipeline while in this state. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#init", + + "relUrl": "/ldio/pipeline-management/pipeline-status#init" + },"135": { + "doc": "Pipeline Status", + "title": "RUNNING", + "content": "This status indicates that the ldio pipeline is running and that the input component is ready to or currently receiving or fetching data. This is the only state in which the pipeline can be paused. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#running", + + "relUrl": "/ldio/pipeline-management/pipeline-status#running" + },"136": { + "doc": "Pipeline Status", + "title": "HALTED", + "content": "Every ldio pipeline can be paused, the exact behavior of which depends on the ldio input component used. A more in depth explanation can be found on the pages for the individual input components. Currently, the HALTED status can only be reached through manually pausing the pipeline through the pipeline-api. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#halted", + + "relUrl": "/ldio/pipeline-management/pipeline-status#halted" + },"137": { + "doc": "Pipeline Status", + "title": "STOPPED", + "content": "When a pipeline is deleted, it will first change to the STOPPED status, this ensures the state is correctly saved in stateful components and that the entire pipeline can be gracefully shutdown. This status will only last a short while before the pipeline is deleted and the status can no longer be queried. The pipeline can be stopped from any other status. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#stopped", + + "relUrl": "/ldio/pipeline-management/pipeline-status#stopped" + },"138": { + "doc": "Pipeline Status", + "title": "Status Change Source", + "content": "The ldio pipeline keeps track of if the last status change was triggered manually or automatic. Manually changing the status can be done through the pipeline-api. When in the RUNNING state, this indicates if the pipeline has been started (automatic) or unpaused (manual). ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#status-change-source", + + "relUrl": "/ldio/pipeline-management/pipeline-status#status-change-source" + },"139": { + "doc": "Startup Configuration", + "title": "Startup Configuration", + "content": "On startup, pipelines can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml) that looks as follows: . orchestrator: pipelines: - name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Output config: foo: bar . Since the introduction of dynamic pipelines . Since version 2.1.0, it is possible to manage pipelines on the fly. If pipelines must be instantiated on startup, those pipelines can be added to a configured directory. First of all, to configure the directory, the /ldio/application.yml should look like this: . orchestrator: directory: <PIPELINE_DIRECTORY> . The folder contains a yaml file for each pipeline. It is the preferred way to call the file the same way as the name of the pipeline, in this case, that would be my-first-pipeline.yml: . name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Output config: foo: bar . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/startup-config", + + "relUrl": "/ldio/pipeline-management/startup-config" + },"140": { + "doc": "Linked Data Interactions For Apache NiFi", + "title": "Linked Data Interactions For Apache NiFi", + "content": "Apache Nifi is an easy to use, powerful, and reliable system to process and distribute data. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/index", + + "relUrl": "/ldi-nifi/index" + },"141": { + "doc": "Linked Data Interactions For Apache NiFi", + "title": "Set up NiFi instance with LDI processors", + "content": "The processors can be imported into a NiFi docker instance via volume binding: . | Create a docker-compose.yml file with the following content in a new directory services: nifi: image: apache/nifi:2.0.0 environment: SINGLE_USER_CREDENTIALS_USERNAME: admin SINGLE_USER_CREDENTIALS_PASSWORD: ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB ports: - 8443:8443 volumes: - ./nifi-ext:/opt/nifi/nifi-current/nar_extensions:rw . | Create a directory nifi-ext in your current directory. | Download either the ...-nar-bundle.jar and unpack this or download the individual required processors (.nar extension) from the nexus repository. Next, place the required processors in the nifi-ext directory. | Finally, start your instance. docker compose up . | Log in at https://localhost:8443/nifi with the credentials mentioned in step 1 | All downloaded extensions are available under the be.vlaanderen.informatievlaanderen.ldes.ldi.nifi group. | . All documentation and notes about configuration are available in the NiFi component itself. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/index#set-up-nifi-instance-with-ldi-processors", + + "relUrl": "/ldi-nifi/index#set-up-nifi-instance-with-ldi-processors" + },"142": { + "doc": "LDI NiFi Processors", + "title": "LDI NiFi Processors", + "content": "Due to special requests, non conformance to the LDI APIs or extra complexity, a few processors were only implemented in NiFi. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/processors/index", + + "relUrl": "/ldi-nifi/processors/index" + },"143": { + "doc": "SPARQL Interactions Processors", + "title": "SPARQL Interactions Processors", + "content": "The SPARQL Interactions Processors is a bundle of the LDI SPARQL Construct and also a SPARQL SELECT Processor. The SPARQL SELECT provides the option to query your dataset. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/processors/sparql-interactions", + + "relUrl": "/ldi-nifi/processors/sparql-interactions" + },"144": { + "doc": "Linked Data Interactions LDES Discoverer", + "title": "Linked Data Interactions LDES Discoverer", + "content": "A lightweight application that discovers the structure of an LDES or a view by retrieving all the tree node relations of that LDES or view. A use case for this could be when you are only interested in a part of the event stream. To know what part you can follow, the structure can be discovered first. ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer", + + "relUrl": "/ldi-standalones/ldes-discoverer" + },"145": { + "doc": "Linked Data Interactions LDES Discoverer", + "title": "Config", + "content": "Base configuration . | Property | Description | Required | Default | Example | Supported values | . | url | Url where from the discoverer needs to start | true | N/A | http://example.com/my-api | HTTP and HTTPS url | . | source-format | The ‘Content-Type’ that should be requested to the server. | false | text/turtle | application/n-quads | Any type supported by Apache Jena | . Optional config . Authentication . | Property | Description | Default | Example | Supported values | . | auth-type | The type of authentication required by the LDES server | NO_AUTH | OAUTH2_CLIENT_CREDENTIALS | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | . | api-key | The api key when using auth-type ‘API_KEY’ | N/A | myKey | String | . | api-key-header | The header for the api key when using auth-type ‘API_KEY’ | X-API-KEY | X-API-KEY | String | . | client-id | The client identifier when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | myId | String | . | client-secret | The client secret when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | mySecret | String | . | token-endpoint | The token endpoint when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | http://localhost:8000/token | HTTP and HTTPS urls | . | scope | The Oauth2 scope when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | http://localhost:8000/token | HTTP and HTTPS urls | . Further customization . | Property | Description | Default | Example | Supported values | . | disable-retry | Boolean flag that disables retrying to send http requests when the server cannot be reached. (enabled when omitted) | N/A | N/A | N/A | . | retry-limit | Max number of retries the http client should do (only on absence of disable-retry) | 5 | 100 | Integer | . | retry-statuses | Custom comma seperated list of http status codes that can trigger a retry in the http client. | N/A | 410,451 | Comma seperated list of Integers | . | rate-limit | Limit of requests per period, which is defined below, that the http client should do | N/A | 500 | Integer | . | rate-limit-period | Period in which the limit of requests, which is defined above, can be reached by the http client | PT1M | PT1H | ISO 8601 Duration | . | header | Parameter for each individual header that is required | N/A | Connection: keep-alive | String | . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer#config", + + "relUrl": "/ldi-standalones/ldes-discoverer#config" + },"146": { + "doc": "Linked Data Interactions LDES Discoverer", + "title": "How to run", + "content": "This tutorial will show how to use the discoverer in Docker. In this example, we will try to discover the structure of an event stream called observations. For simplicity, we recommend passing the config as arguments. Run the ldes-discoverer with minimal config . docker run ldes/ldes-discoverer --url=\"http://ldes-server/observations\" . Run the ldes-discoverer with rate-limit, authentication and two additional headers . docker run ldes/ldes-discoverer --url=\"http://ldes-server/observations\" --retry-limit=3 --rate-limit=400 \\ --header=\"Connection: keep alive\" --header=\"X-Source-App: ldes-discoverer\" \\ --auth-type=API_KEY --api-key=\"my-secret-api-key\" . NOTE: when an url contains a & symbol, which will be picked up by the shell as an operator. For instance, running docker run ldes/ldes-discoverer --url=http://ldes-server/observations?year=2023&month=05&day=11 will result in the shell trying to execute three different command, where the last two will be month=05 and day=11, which will fail of course. To resolve this, make sure the url is encapsulated in quotation marks. Example output . In the logging of the application, both the total number of relations and the relations itself will be displayed. This will be present as the last logging statement of the app and would look something like this: . 2024-02-08T14:26:25.279+01:00 INFO 48176 --- [ main] b.v.i.l.l.d.common.LdesDiscovererExecutor : http://ldes-server/observations contains a total of 10 relations: http://ldes-server/observations +- http://ldes-server/observations/by-time | +- http://ldes-server/observations/by-time?year=2022 | +- http://ldes-server/observations/by-time?year=2022&month=08 | +- http://ldes-server/observations/by-time?year=2023 | +- http://ldes-server/observations/by-time?year=2023&month=05 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=07 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=16 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=20 +- http://ldes-server/observations/paged +- http://ldes-server/observations/paged?pageNumber=1 . ", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer#how-to-run", + + "relUrl": "/ldi-standalones/ldes-discoverer#how-to-run" + } +} diff --git a/2.12.0/assets/js/vendor/lunr.min.js b/2.12.0/assets/js/vendor/lunr.min.js new file mode 100644 index 000000000..46c594b80 --- /dev/null +++ b/2.12.0/assets/js/vendor/lunr.min.js @@ -0,0 +1,61 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +/** + * ORIGINAL MIT LICENSE + * Copyright (C) 2013 by Oliver Nightingale + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +!function(){var e,t,r,i,n,s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T=function(e){var t=new T.Builder;return t.pipeline.add(T.trimmer,T.stopWordFilter,T.stemmer),t.searchPipeline.add(T.stemmer),e.call(t,t),t.build()};T.version="2.3.9" +/*! +* lunr.utils +* Copyright (C) 2020 Oliver Nightingale +*/,T.utils={},T.utils.warn=(e=this,function(t){e.console&&console.warn&&console.warn(t)}),T.utils.asString=function(e){return null==e?"":e.toString()},T.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var u=T.utils.clone(t)||{};u.position=[o,a],u.index=n.length,n.push(new T.Token(r.slice(o,s),u))}o=s+1}}return n},T.tokenizer.separator=/[\s\-]+/ +/*! +* lunr.Pipeline +* Copyright (C) 2020 Oliver Nightingale +*/,T.Pipeline=function(){this._stack=[]},T.Pipeline.registeredFunctions=Object.create(null),T.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&T.utils.warn("Overwriting existing registered function: "+t),e.label=t,T.Pipeline.registeredFunctions[e.label]=e},T.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||T.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},T.Pipeline.load=function(e){var t=new T.Pipeline;return e.forEach((function(e){var r=T.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},T.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){T.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},T.Pipeline.prototype.after=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},T.Pipeline.prototype.before=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},T.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},T.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e||s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},T.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},T.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var s,o=n.str.charAt(0);o in n.node.edges?s=n.node.edges[o]:(s=new T.TokenSet,n.node.edges[o]=s),1==n.str.length&&(s.final=!0),i.push({node:s,editsRemaining:n.editsRemaining,str:n.str.slice(1)})}if(0!=n.editsRemaining){if("*"in n.node.edges)var a=n.node.edges["*"];else{a=new T.TokenSet;n.node.edges["*"]=a}if(0==n.str.length&&(a.final=!0),i.push({node:a,editsRemaining:n.editsRemaining-1,str:n.str}),n.str.length>1&&i.push({node:n.node,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)}),1==n.str.length&&(n.node.final=!0),n.str.length>=1){if("*"in n.node.edges)var u=n.node.edges["*"];else{u=new T.TokenSet;n.node.edges["*"]=u}1==n.str.length&&(u.final=!0),i.push({node:u,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)})}if(n.str.length>1){var l,c=n.str.charAt(0),h=n.str.charAt(1);h in n.node.edges?l=n.node.edges[h]:(l=new T.TokenSet,n.node.edges[h]=l),1==n.str.length&&(l.final=!0),i.push({node:l,editsRemaining:n.editsRemaining-1,str:c+n.str.slice(2)})}}}return r},T.TokenSet.fromString=function(e){for(var t=new T.TokenSet,r=t,i=0,n=e.length;i=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}} +/*! +* lunr.Index +* Copyright (C) 2020 Oliver Nightingale +*/,T.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},T.Index.prototype.search=function(e){return this.query((function(t){new T.QueryParser(e,t).parse()}))},T.Index.prototype.query=function(e){for(var t=new T.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a1?1:e},T.Builder.prototype.k1=function(e){this._k1=e},T.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n=this.length)return T.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},T.QueryLexer.prototype.width=function(){return this.pos-this.start},T.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},T.QueryLexer.prototype.backup=function(){this.pos-=1},T.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=T.QueryLexer.EOS&&this.backup()},T.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(T.QueryLexer.TERM)),e.ignore(),e.more())return T.QueryLexer.lexText},T.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.EDIT_DISTANCE),T.QueryLexer.lexText},T.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.BOOST),T.QueryLexer.lexText},T.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(T.QueryLexer.TERM)},T.QueryLexer.termSeparator=T.tokenizer.separator,T.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==T.QueryLexer.EOS)return T.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return T.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if(t.match(T.QueryLexer.termSeparator))return T.QueryLexer.lexTerm}else e.escapeCharacter()}},T.QueryParser=function(e,t){this.lexer=new T.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},T.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=T.QueryParser.parseClause;e;)e=e(this);return this.query},T.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},T.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},T.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},T.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case T.QueryLexer.PRESENCE:return T.QueryParser.parsePresence;case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new T.QueryParseError(r,t.start,t.end)}},T.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=T.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=T.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new T.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(null==i){r="expecting term or field, found nothing";throw new T.QueryParseError(r,t.start,t.end)}switch(i.type){case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new T.QueryParseError(r,i.start,i.end)}}},T.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(null==n){i="expecting term, found nothing";throw new T.QueryParseError(i,t.start,t.end)}if(n.type===T.QueryLexer.TERM)return T.QueryParser.parseTerm;i="expecting term, found '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}},T.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new T.QueryParseError(i,r.start,r.end)}else e.nextClause()}},T.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},T.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},b=this,P=function(){return T},"function"==typeof define&&define.amd?define(P):"object"==typeof exports?module.exports=P():b.lunr=P()}(); diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff new file mode 100644 index 000000000..c735b11b6 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff2 new file mode 100644 index 000000000..dd10cec1d Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Black.woff2 differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff new file mode 100644 index 000000000..92ed2f685 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff2 new file mode 100644 index 000000000..898f1f4ea Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Bold.woff2 differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff new file mode 100644 index 000000000..ebdc3067f Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff2 new file mode 100644 index 000000000..efcdd950e Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Light.woff2 differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff new file mode 100644 index 000000000..a27eaeb5c Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff2 new file mode 100644 index 000000000..b5c3e1275 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Medium.woff2 differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff new file mode 100644 index 000000000..b3a007475 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff2 new file mode 100644 index 000000000..d2aa02f76 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Regular.woff2 differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff b/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff new file mode 100644 index 000000000..bdbffb0c3 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff differ diff --git a/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff2 b/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff2 new file mode 100644 index 000000000..c22721583 Binary files /dev/null and b/2.12.0/assets/webfonts/italic/FlandersArtSans-Thin.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff new file mode 100644 index 000000000..c556f3045 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff2 new file mode 100644 index 000000000..601205cd0 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Black.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff new file mode 100644 index 000000000..2b4a5085e Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff2 new file mode 100644 index 000000000..edb92d99a Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Bold.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff new file mode 100644 index 000000000..fa87c6a9f Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff2 new file mode 100644 index 000000000..65cca88d5 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Light.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff new file mode 100644 index 000000000..267c13df3 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff2 new file mode 100644 index 000000000..7531628f9 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Medium.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff new file mode 100644 index 000000000..0fdce9f63 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff2 new file mode 100644 index 000000000..e7b84a17c Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Regular.woff2 differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff b/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff new file mode 100644 index 000000000..2087ff014 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff differ diff --git a/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff2 b/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff2 new file mode 100644 index 000000000..34da60691 Binary files /dev/null and b/2.12.0/assets/webfonts/sans/FlandersArtSans-Thin.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff new file mode 100644 index 000000000..1e98e2214 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff2 new file mode 100644 index 000000000..d622d9eee Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Black.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff new file mode 100644 index 000000000..634f9ddb3 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff2 new file mode 100644 index 000000000..8094c26ee Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Bold.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff new file mode 100644 index 000000000..3e052f3aa Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff2 new file mode 100644 index 000000000..8c100f1e6 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Light.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff new file mode 100644 index 000000000..21abbfd53 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff2 new file mode 100644 index 000000000..dc59c0eb4 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Medium.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff new file mode 100644 index 000000000..434655717 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff2 new file mode 100644 index 000000000..a6325eb94 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Regular.woff2 differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff new file mode 100644 index 000000000..294ed2116 Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff differ diff --git a/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff2 b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff2 new file mode 100644 index 000000000..5971b52bd Binary files /dev/null and b/2.12.0/assets/webfonts/serif/FlandersArtSerif-Thin.woff2 differ diff --git a/2.12.0/docker-compose.yml b/2.12.0/docker-compose.yml new file mode 100644 index 000000000..3c10890fa --- /dev/null +++ b/2.12.0/docker-compose.yml @@ -0,0 +1,7 @@ +services: + jekyll: + image: bretfisher/jekyll-serve + ports: + - 4000:4000 + volumes: + - .:/site \ No newline at end of file diff --git a/2.12.0/index.html b/2.12.0/index.html new file mode 100644 index 000000000..568f93c5d --- /dev/null +++ b/2.12.0/index.html @@ -0,0 +1 @@ + Home | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions Project

Introduction

The Linked Data Interactions project is an effort to make interactions with Linked Data more fluently by providing easy building blocks.

This project was created in function of the VSDS project

Supported Frameworks

Currently, we support 2 frameworks to use these building blocks in:

Component support over frameworks

As the LDI team is rather small and focused on supporting the VSDS project, we sometimes have to postpone full integration of our building blocks in all supported frameworks.

However, since the LDI project is open source, feel free to contribute and/or create issues at our GitHub project


diff --git a/2.12.0/ldi-nifi/index.html b/2.12.0/ldi-nifi/index.html new file mode 100644 index 000000000..c9c75e91b --- /dev/null +++ b/2.12.0/ldi-nifi/index.html @@ -0,0 +1,12 @@ + Linked Data Interactions For Apache NiFi | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions For Apache NiFi

Apache Nifi is an easy to use, powerful, and reliable system to process and distribute data.

Set up NiFi instance with LDI processors

The processors can be imported into a NiFi docker instance via volume binding:

  1. Create a docker-compose.yml file with the following content in a new directory
     services:
    +   nifi:
    +     image: apache/nifi:2.0.0
    +     environment:
    +       SINGLE_USER_CREDENTIALS_USERNAME: admin
    +       SINGLE_USER_CREDENTIALS_PASSWORD: ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB
    +     ports:
    +       - 8443:8443
    +     volumes:
    +       - ./nifi-ext:/opt/nifi/nifi-current/nar_extensions:rw
    +
  2. Create a directory nifi-ext in your current directory.
  3. Download either the ...-nar-bundle.jar and unpack this or download the individual required processors (.nar extension) from the nexus repository. Next, place the required processors in the nifi-ext directory.
  4. Finally, start your instance.
     docker compose up
    +
  5. Log in at https://localhost:8443/nifi with the credentials mentioned in step 1
  6. All downloaded extensions are available under the be.vlaanderen.informatievlaanderen.ldes.ldi.nifi group.

All documentation and notes about configuration are available in the NiFi component itself.


diff --git a/2.12.0/ldi-nifi/processors/index.html b/2.12.0/ldi-nifi/processors/index.html new file mode 100644 index 000000000..e271c4167 --- /dev/null +++ b/2.12.0/ldi-nifi/processors/index.html @@ -0,0 +1 @@ + LDI NiFi Processors | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDI NiFi Processors

Due to special requests, non conformance to the LDI APIs or extra complexity, a few processors were only implemented in NiFi.


Table of contents


diff --git a/2.12.0/ldi-nifi/processors/sparql-interactions.html b/2.12.0/ldi-nifi/processors/sparql-interactions.html new file mode 100644 index 000000000..234137bc9 --- /dev/null +++ b/2.12.0/ldi-nifi/processors/sparql-interactions.html @@ -0,0 +1 @@ + SPARQL Interactions Processors | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

SPARQL Interactions Processors

The SPARQL Interactions Processors is a bundle of the LDI SPARQL Construct and also a SPARQL SELECT Processor.

The SPARQL SELECT provides the option to query your dataset.


diff --git a/2.12.0/ldi-standalones/ldes-discoverer.html b/2.12.0/ldi-standalones/ldes-discoverer.html new file mode 100644 index 000000000..9c86cfaf3 --- /dev/null +++ b/2.12.0/ldi-standalones/ldes-discoverer.html @@ -0,0 +1,17 @@ + Linked Data Interactions LDES Discoverer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions LDES Discoverer

A lightweight application that discovers the structure of an LDES or a view by retrieving all the tree node relations of that LDES or view.

A use case for this could be when you are only interested in a part of the event stream. To know what part you can follow, the structure can be discovered first.

Config

Base configuration

Property Description Required Default Example Supported values
url Url where from the discoverer needs to start true N/A http://example.com/my-api HTTP and HTTPS url
source-format The ‘Content-Type’ that should be requested to the server. false text/turtle application/n-quads Any type supported by Apache Jena

Optional config

Authentication

Property Description Default Example Supported values
auth-type The type of authentication required by the LDES server NO_AUTH OAUTH2_CLIENT_CREDENTIALS NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS
api-key The api key when using auth-type ‘API_KEY’ N/A myKey String
api-key-header The header for the api key when using auth-type ‘API_KEY’ X-API-KEY X-API-KEY String
client-id The client identifier when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A myId String
client-secret The client secret when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A mySecret String
token-endpoint The token endpoint when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls
scope The Oauth2 scope when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls

Further customization

Property Description Default Example Supported values
disable-retry Boolean flag that disables retrying to send http requests when the server cannot be reached. (enabled when omitted) N/A N/A N/A
retry-limit Max number of retries the http client should do (only on absence of disable-retry) 5 100 Integer
retry-statuses Custom comma seperated list of http status codes that can trigger a retry in the http client. N/A 410,451 Comma seperated list of Integers
rate-limit Limit of requests per period, which is defined below, that the http client should do N/A 500 Integer
rate-limit-period Period in which the limit of requests, which is defined above, can be reached by the http client PT1M PT1H ISO 8601 Duration
header Parameter for each individual header that is required N/A Connection: keep-alive String

How to run

This tutorial will show how to use the discoverer in Docker. In this example, we will try to discover the structure of an event stream called observations.

For simplicity, we recommend passing the config as arguments.

Run the ldes-discoverer with minimal config

docker run ldes/ldes-discoverer --url="http://ldes-server/observations"
+

Run the ldes-discoverer with rate-limit, authentication and two additional headers

docker run ldes/ldes-discoverer --url="http://ldes-server/observations" --retry-limit=3 --rate-limit=400 \
+ --header="Connection: keep alive" --header="X-Source-App: ldes-discoverer" \
+ --auth-type=API_KEY --api-key="my-secret-api-key"
+

NOTE: when an url contains a & symbol, which will be picked up by the shell as an operator. For instance, running docker run ldes/ldes-discoverer --url=http://ldes-server/observations?year=2023&month=05&day=11 will result in the shell trying to execute three different command, where the last two will be month=05 and day=11, which will fail of course.

To resolve this, make sure the url is encapsulated in quotation marks.

Example output

In the logging of the application, both the total number of relations and the relations itself will be displayed. This will be present as the last logging statement of the app and would look something like this:

2024-02-08T14:26:25.279+01:00  INFO 48176 --- [           main] b.v.i.l.l.d.common.LdesDiscovererExecutor        : http://ldes-server/observations contains a total of 10 relations:
+http://ldes-server/observations
++- http://ldes-server/observations/by-time
+|  +- http://ldes-server/observations/by-time?year=2022
+|  |  +- http://ldes-server/observations/by-time?year=2022&month=08
+|  +- http://ldes-server/observations/by-time?year=2023
+|     +- http://ldes-server/observations/by-time?year=2023&month=05
+|        +- http://ldes-server/observations/by-time?year=2023&month=05&day=07
+|        +- http://ldes-server/observations/by-time?year=2023&month=05&day=16
+|        +- http://ldes-server/observations/by-time?year=2023&month=05&day=20
++- http://ldes-server/observations/paged
+   +- http://ldes-server/observations/paged?pageNumber=1
+

diff --git a/2.12.0/ldio/examples/ex1-basicHttp.html b/2.12.0/ldio/examples/ex1-basicHttp.html new file mode 100644 index 000000000..e108d6c07 --- /dev/null +++ b/2.12.0/ldio/examples/ex1-basicHttp.html @@ -0,0 +1,24 @@ + Basic Http In to Console | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Basic Http In to Console

Used Components

Setup

For this setup, we will start with a Http Listener who will take in data and write it back out via the console

ldio.config.yaml:

orchestrator:
+  pipelines:
+    - name: data
+      description: "This pipeline uses a HTTP listener to read incoming RDF data and writes them to the console"
+      input:
+        name: Ldio:HttpIn
+        adapter:
+          name: Ldio:RdfAdapter
+      outputs:
+        - name: Ldio:ConsoleOut
+

Execution

We can now post the following data to http://{hostname}:{port}/data whilst including the header Content-Type: application/n-quads :

{
+  "@context": "http://schema.org/",
+  "@type": "Person",
+  "name": "Jane Doe",
+  "jobTitle": "Professor",
+  "telephone": "(425) 123-4567",
+  "url": "http://www.janedoe.com"
+}
+

If done successfully, you will see in the console the converted model which defaults to application/n-quads:

_:b0 <http://schema.org/jobTitle> "Professor" .
+_:b0 <http://schema.org/name> "Jane Doe" .
+_:b0 <http://schema.org/telephone> "(425) 123-4567" .
+_:b0 <http://schema.org/url> <http://www.janedoe.com> .
+_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> .
+

diff --git a/2.12.0/ldio/examples/ex2-scrape-api.html b/2.12.0/ldio/examples/ex2-scrape-api.html new file mode 100644 index 000000000..09f5c8d5b --- /dev/null +++ b/2.12.0/ldio/examples/ex2-scrape-api.html @@ -0,0 +1,68 @@ + Scraping an API | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Scraping an API

Used Components

Setup

For this setup, we will periodically scrape a public API, map it with RML to Linked Data, Transform it to a Version Object and write it to console.

RML Mapping

Since RML can sometimes be hard on human eyes, we’ll convert our YARRRML to RML via Matey.

Through this, we can convert this YARRRML to the following RML.

prefixes:
+ ex: "http://example.com/"
+ cs: "http://www.cheapshark.com/"
+ ldi: "http://www.vlaanderen.be/ns/ldi#"
+
+mappings:
+  person:
+    sources:
+      - ['deals.json~jsonpath', '$[*]']
+    s: http://www.cheapshark.com/gamedeals/$(gameID)
+    g: http://www.cheapshark.com/gamedeals/$(gameID)/$(lastChange)
+    po:
+      - [a, cs:GameDeal]
+      - [cs:title, $(title)]
+      - [cs:metacriticLink, $(metacriticLink)]
+      - [cs:thumb, $(thumb)]
+      - p: cs:releaseDate
+        o:
+            function: ldi:epochToIso8601
+            parameters:
+            - [ldi:epoch, $(releaseDate) ]
+            datatype: xsd:DateTime
+      - p: cs:lastChange
+        o:
+            function: ldi:epochToIso8601
+            parameters:
+            - [ldi:epoch, $(lastChange) ]
+            datatype: xsd:DateTime
+            
+      - [cs:isOnSale, $(isOnSale), xsd:Boolean]
+      - [cs:normalPrice, $(normalPrice), xsd:Double]
+      - [cs:salePrice, $(salePrice), xsd:Double]
+

mapping.ttl

Let’s save the mapping.ttl in our current directory.

ldio.config.yaml:

orchestrator:
+  pipelines:
+    - name: data
+      input:
+        name: Ldio:HttpInPoller
+        config:
+          url: https://www.cheapshark.com/api/1.0/deals?pageSize=1000
+          interval: PT30M
+        adapter:
+          name: Ldio:RmlAdapter
+          config:
+            mapping: "mapping.ttl"
+      transformers:
+        - name: Ldio:VersionObjectCreator
+          config:
+            date-observed-property: "http://www.cheapshark.com/lastChange"
+            member-type: "http://www.cheapshark.com/GameDeal"
+            generatedAt-property: "https://w3id.org/ldes#timestampPath"
+            versionOf-property: "https://w3id.org/ldes#versionOfPath"
+      outputs:
+        - name: Ldio:ConsoleOut
+          config:
+            content-type: text/turtle
+

Execution

Once started, you should be seeing data in your console similar to

<http://www.cheapshark.com/gamedeals/157072/2023-06-28T21:31:20.000Z>
+    a       <http://www.cheapshark.com/GameDeal> ;
+    <http://www.cheapshark.com/isOnSale> "1"^^<http://www.w3.org/2001/XMLSchema#Boolean> ;
+    <http://www.cheapshark.com/lastChange> "2023-06-28T21:31:20.000Z"^^<http://www.w3.org/2001/XMLSchema#DateTime> ;
+    <http://www.cheapshark.com/metacriticLink> "/game/pc/one-piece-burning-blood---gold-edition" ;
+    <http://www.cheapshark.com/normalPrice> "74.98"^^<http://www.w3.org/2001/XMLSchema#Double> ;
+    <http://www.cheapshark.com/releaseDate> "2016-09-01T00:00:00.000Z"^^<http://www.w3.org/2001/XMLSchema#DateTime> ;
+    <http://www.cheapshark.com/salePrice> "6.45"^^<http://www.w3.org/2001/XMLSchema#Double> ;
+    <http://www.cheapshark.com/thumb> <https://gamersgatep.imgix.net/a/3/4/026d064cc7e1fb721f497398a3435dfcfbe0c43a.jpg?auto=&w=> ;
+    <http://www.cheapshark.com/title> "ONE PIECE BURNING BLOOD GOLD EDITION" ;
+    <https://w3id.org/ldes#timestampPath> "2023-06-28T21:31:20.000Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
+    <https://w3id.org/ldes#versionOfPath> <http://www.cheapshark.com/gamedeals/157072> .
+

diff --git a/2.12.0/ldio/examples/ex2/ex2-mapping.ttl b/2.12.0/ldio/examples/ex2/ex2-mapping.ttl new file mode 100644 index 000000000..0cf19adc2 --- /dev/null +++ b/2.12.0/ldio/examples/ex2/ex2-mapping.ttl @@ -0,0 +1,180 @@ +@prefix rr: . +@prefix rml: . +@prefix rdf: . +@prefix rdfs: . +@prefix ql: . +@prefix map: . +@prefix xsd: . +@prefix sd: . +@prefix ex: . +@prefix cs: . +@prefix ldi: . + +map:fn_000 rml:logicalSource map:source_000 ; + rr:predicateObjectMap map:pom_005, map:pomexec_000 . + +map:fn_001 rml:logicalSource map:source_000 ; + rr:predicateObjectMap map:pom_007, map:pomexec_001 . + +map:gm_000 rdf:type rr:GraphMap ; + rr:template "http://www.cheapshark.com/gamedeals/{gameID}/{lastChange}" . + +map:map_person_000 rml:logicalSource map:source_000 ; + rdf:type rr:TriplesMap ; + rdfs:label "person" ; + rr:predicateObjectMap map:pom_000, map:pom_001, map:pom_002, map:pom_003, map:pom_004, map:pom_006, map:pom_008, map:pom_009, map:pom_010 ; + rr:subjectMap map:s_000 . + +map:om_000 rdf:type rr:ObjectMap ; + rr:constant ; + rr:termType rr:IRI . + +map:om_001 rml:reference "title" ; + rdf:type rr:ObjectMap ; + rr:termType rr:Literal . + +map:om_002 rml:reference "metacriticLink" ; + rdf:type rr:ObjectMap ; + rr:termType rr:Literal . + +map:om_003 rml:reference "thumb" ; + rdf:type rr:ObjectMap ; + rr:termType rr:Literal . + +map:om_004 map:fn_000 ; + rdf:type ; + rr:datatype xsd:DateTime ; + rr:termType rr:Literal . + +map:om_005 rml:reference "releaseDate" ; + rdf:type rr:ObjectMap ; + rr:termType rr:Literal . + +map:om_006 map:fn_001 ; + rdf:type ; + rr:datatype xsd:DateTime ; + rr:termType rr:Literal . + +map:om_007 rml:reference "lastChange" ; + rdf:type rr:ObjectMap ; + rr:termType rr:Literal . + +map:om_008 rml:reference "isOnSale" ; + rdf:type rr:ObjectMap ; + rr:datatype xsd:Boolean ; + rr:termType rr:Literal . + +map:om_009 rml:reference "normalPrice" ; + rdf:type rr:ObjectMap ; + rr:datatype xsd:Double ; + rr:termType rr:Literal . + +map:om_010 rml:reference "salePrice" ; + rdf:type rr:ObjectMap ; + rr:datatype xsd:Double ; + rr:termType rr:Literal . + +map:omexec_000 rr:constant ; + rr:termType rr:IRI . + +map:omexec_001 rr:constant ; + rr:termType rr:IRI . + +map:pm_000 rdf:type rr:PredicateMap ; + rr:constant rdf:type . + +map:pm_001 rdf:type rr:PredicateMap ; + rr:constant cs:title . + +map:pm_002 rdf:type rr:PredicateMap ; + rr:constant cs:metacriticLink . + +map:pm_003 rdf:type rr:PredicateMap ; + rr:constant cs:thumb . + +map:pm_004 rdf:type rr:PredicateMap ; + rr:constant cs:releaseDate . + +map:pm_005 rdf:type rr:PredicateMap ; + rr:constant ldi:epoch . + +map:pm_006 rdf:type rr:PredicateMap ; + rr:constant cs:lastChange . + +map:pm_007 rdf:type rr:PredicateMap ; + rr:constant ldi:epoch . + +map:pm_008 rdf:type rr:PredicateMap ; + rr:constant cs:isOnSale . + +map:pm_009 rdf:type rr:PredicateMap ; + rr:constant cs:normalPrice . + +map:pm_010 rdf:type rr:PredicateMap ; + rr:constant cs:salePrice . + +map:pmexec_000 rr:constant . + +map:pmexec_001 rr:constant . + +map:pom_000 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_000 ; + rr:predicateMap map:pm_000 . + +map:pom_001 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_001 ; + rr:predicateMap map:pm_001 . + +map:pom_002 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_002 ; + rr:predicateMap map:pm_002 . + +map:pom_003 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_003 ; + rr:predicateMap map:pm_003 . + +map:pom_004 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_004 ; + rr:predicateMap map:pm_004 . + +map:pom_005 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_005 ; + rr:predicateMap map:pm_005 . + +map:pom_006 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_006 ; + rr:predicateMap map:pm_006 . + +map:pom_007 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_007 ; + rr:predicateMap map:pm_007 . + +map:pom_008 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_008 ; + rr:predicateMap map:pm_008 . + +map:pom_009 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_009 ; + rr:predicateMap map:pm_009 . + +map:pom_010 rdf:type rr:PredicateObjectMap ; + rr:objectMap map:om_010 ; + rr:predicateMap map:pm_010 . + +map:pomexec_000 rr:objectMap map:omexec_000 ; + rr:predicateMap map:pmexec_000 . + +map:pomexec_001 rr:objectMap map:omexec_001 ; + rr:predicateMap map:pmexec_001 . + +map:rules_000 map:map_person_000 ; + rdf:type . + +map:s_000 rdf:type rr:SubjectMap ; + rr:graphMap map:gm_000 ; + rr:template "http://www.cheapshark.com/gamedeals/{gameID}" . + +map:source_000 rml:iterator "$[*]" ; + rml:referenceFormulation ql:JSONPath ; + rml:source "deals.json" ; + rdf:type rml:LogicalSource . \ No newline at end of file diff --git a/2.12.0/ldio/examples/ex3-enrich-model.html b/2.12.0/ldio/examples/ex3-enrich-model.html new file mode 100644 index 000000000..1ce5faf30 --- /dev/null +++ b/2.12.0/ldio/examples/ex3-enrich-model.html @@ -0,0 +1,108 @@ + Enrich a model | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Enrich A Model

As part of this example, we will store some Car data in a Graph Database. We will later use that data to extend our user data Model to include the Car data.

Used Components

Setup

For this setup, we will have two pipelines:

  • A to-graph pipeline that will take in our “Car” Linked Data and send it straight to a GraphDB
  • A enriched pipeline that will extend the data with the saved car data

RDF4J Server

To save the “Car” data, we first need to set up a GraphDB Server. This can be done by mounting a rdf4j workbench image.

docker run -d -p 8081:8080 -e JAVA_OPTS="-Xms1g -Xmx4g" eclipse/rdf4j-workbench:latest
+

Once spun up, a simple repository can be configured via doing the following curl command:

test-db.ttl:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
+@prefix rep: <http://www.openrdf.org/config/repository#>.
+@prefix sr: <http://www.openrdf.org/config/repository/sail#>.
+@prefix sail: <http://www.openrdf.org/config/sail#>.
+@prefix ms: <http://www.openrdf.org/config/sail/memory#>.
+
+[] a rep:Repository ;
+   rep:repositoryID "test" ;
+   rdfs:label "test memory store" ;
+   rep:repositoryImpl [
+      rep:repositoryType "openrdf:SailRepository" ;
+      sr:sailImpl [
+	 sail:sailType "openrdf:MemoryStore" ;
+	 ms:persist true ;
+	 ms:syncDelay 120
+      ]
+   ].
+
curl -X PUT -H "Content-Type: text/turtle" --data-binary @test-db.ttl http://localhost:8081/rdf4j-server/repositories/test
+

LDIO

ldio.config.yaml:

orchestrator:
+  pipelines:
+    - name: "to-graph"
+      input:
+        name: "Ldio:HttpIn"
+        adapter:
+          name: "Ldio:RdfAdapter"
+      outputs:
+        - name: "Ldio:RepositoryMaterialiser"
+          config:
+            sparql-host: http://localhost:8081/rdf4j-server
+            repository-id: test
+    - name: "enriched"
+      input:
+        name: "Ldio:HttpIn"
+        adapter:
+          name: "Ldio:RdfAdapter"
+      transformers:
+        - name: "Ldio:SparqlConstructTransformer"
+          config:
+            query: "
+              PREFIX schema: <http://schema.org/>
+            
+              CONSTRUCT {
+                ?s ?p ?o .
+                ?car ?cp ?co .
+              }
+              WHERE { 
+                ?s ?p ?o .
+                ?s schema:hasCar ?car
+                SERVICE <http://localhost:8081/rdf4j-server/repositories/test> { 
+                  ?car ?cp ?co .
+                }
+              }
+            "
+      outputs:
+        - name: "Ldio:ConsoleOut"
+

Execution

1. Ingestion of Car Data

First, we will post these three turtle files to our “to-graph” pipeline at endpoint http://localhost:8080/to-graph with the Content-Type header set to ‘text/turtle’

@prefix schema: <http://schema.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://example.com/cars/Volvo/XC40>
+  a schema:Car ;
+  schema:brand "Volvo"^^xsd:string ;
+  schema:max-speed "180"^^xsd:integer ;
+  schema:model "XC40"^^xsd:string .
+
@prefix schema: <http://schema.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://example.com/cars/Ferrari/F40>
+  a schema:Car ;
+  schema:brand "Ferrari"^^xsd:string ;
+  schema:max-speed "315"^^xsd:integer ;
+  schema:model "F40"^^xsd:string .
+
@prefix schema: <http://schema.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://example.com/cars/Reliant/Robin>
+  a schema:Car ;
+  schema:brand "Reliant"^^xsd:string ;
+  schema:max-speed "136"^^xsd:integer ;
+  schema:model "Robin"^^xsd:string .
+

2. Send un-enriched member to pipeline

Secondly, we will post our un-enriched User model to our “enriched” pipeline at endpoint http://localhost:8080/enriched with the Content-Type header set to ‘text/turtle’.

This pipeline will not only include the posted statements, but will include the models from the GraphDB based on their URI.

@prefix schema: <http://schema.org/> .
+
+<http://example.com/people/SpideyBoy>
+  schema:hasCar <http://example.com/cars/Ferrari/F40>, <http://example.com/cars/Volvo/XC40> ;
+  schema:jobTitle "Spidey Boy" ;
+  schema:name "Peter Parker" ;
+  a schema:Person .
+

3. Result: an Enriched Model

After posting the User model, you should be seeing data in your console similar to

@prefix Ferrari: <http://example.com/cars/Ferrari/> .
+@prefix Volvo:   <http://example.com/cars/Volvo/> .
+@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix schema:  <http://schema.org/> .
+
+Volvo:XC40  rdf:type      schema:Car ;
+        schema:brand      "Volvo" ;
+        schema:max-speed  180 ;
+        schema:model      "XC40" .
+
+<http://example.com/people/SpideyBoy>
+        rdf:type         schema:Person ;
+        schema:hasCar    Ferrari:F40 , Volvo:XC40 ;
+        schema:jobTitle  "Spidey Boy" ;
+        schema:name      "Peter Parker" .
+
+Ferrari:F40  rdf:type     schema:Car ;
+        schema:brand      "Ferrari" ;
+        schema:max-speed  315 ;
+        schema:model      "F40" .
+

diff --git a/2.12.0/ldio/examples/index.html b/2.12.0/ldio/examples/index.html new file mode 100644 index 000000000..c3c53c36a --- /dev/null +++ b/2.12.0/ldio/examples/index.html @@ -0,0 +1 @@ + Examples | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions Orchestrator Examples

Through the table of contents, you will find examples of the LDIO config that can be placed inside the ldio.config.yml to get the desired results.


Table of contents


diff --git a/2.12.0/ldio/index.html b/2.12.0/ldio/index.html new file mode 100644 index 000000000..221f7192f --- /dev/null +++ b/2.12.0/ldio/index.html @@ -0,0 +1,23 @@ + The Linked Data Interactions Orchestrator | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

The Linked Data Interactions Orchestrator

A lightweight application maintained by the LDI team. Its creation came when a more lightweight alternative for Apache NiFi was needed.

Docker Compose

The easiest way to start working with the LDIO is by using Docker. The image is located on the Docker Hub.

To set up your environment, start by creating a new folder dedicated to your LDIO project. Within this folder, create two files: a docker-compose.yml and a YAML configuration file. The YAML file can be named according to your preference and can be added to the volume bindings pointing to the ldio/application.yml file.

To enable Swagger UI, debug logging, or monitoring, please follow the instructions provided below on how to incorporate them into the LDIO YAML configuration file.

docker-compose.yml:

version: '3.3'
+services:
+  ldio-workbench:
+    container_name: ldio-workbench
+    image: ldes/ldi-orchestrator:2.4.0-SNAPSHOT
+    volumes:
+      - ./ldio.config.yml:/ldio/application.yml:ro
+    ports:
+      - "<port>:8080"
+

Once configured with the LDIO config, execute the command

docker compose up
+

If any extra files are required for a processor (mapping/queries/…), you can add them in your volume binding pointing to the ldio folder as follows:

Note that the name given for the file can be whatever, as long as it is unique.

- ./file.extension:/ldio/file.extension:ro

If any custom processors have been created, you can add the jars in your volume binding pointing to the ldio/lib folder as follows:

Note that the name given for the jar file can be whatever, as long as it is unique.

- <path to custom processor>:/ldio/lib/custom-processor.jar:ro

Enable swagger UI

To use the swagger UI on your own LDIO deployment you can add the below config, and go to <base-url>/v1/swagger.

springdoc:
+  swagger-ui:
+    path: /v1/swagger
+

LDIO DEBUG Logging

To enable logging the input model for a

Make sure you

  • Add the following property in your application config:
      logging:
    +      level:
    +          be.vlaanderen.informatievlaanderen: DEBUG
    +
  • Add the debug: true property to your transformer or output config.

LDIO Logging & Monitoring

To provide a better insight in the workings in the LDIO, we expose a prometheus endpoint (/actuator/prometheus) that encloses some metrics (with included tags):

  • ldio_data_in_total: Number (Amount of items passed at the start of Transformer Pipeline)
    • pipeline: String (Refers to the pipeline name)
    • ldio_type: String (Refers to the LDIO Input Type of pipeline)
  • ldio_data_out_total: Number (Amount of items passed at the end of Transformer Pipeline)
    • pipeline: String (Refers to the pipeline name)

To consult these metrics, make sure the prometheus endpoint is enabled by setting the following setting:

management:
+  endpoints:
+    web:
+      exposure:
+        include:
+          - prometheus
+

diff --git a/2.12.0/ldio/ldio-adapters/index.html b/2.12.0/ldio/ldio-adapters/index.html new file mode 100644 index 000000000..ccafe65cf --- /dev/null +++ b/2.12.0/ldio/ldio-adapters/index.html @@ -0,0 +1 @@ + LDIO Adapters | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Orchestrator Adapters

Adapters are be used in conjunction with the LDI Input. They will transform the provided content into and internal Linked Data model and sends it down the pipeline for further processing.

Overview

Adapter Description Inputs Advantages Disadvantages
JSON to JSON-LD Receives JSON messages and adds linked data context to transform the messages to JSON-LD
  • JSON
  • Easy to set up: plug in context
  • Only works with JSON as input
  • Slower performance when deserializing model
RDF Takes in an RDF string and converts it into an internal linked data model
  • RDF string
  • Easy to set up: no configuration needed
  • Only works with RDF as input
  • Only supports valid RDF MIME types
RML Transform a non-linked data object (JSON/CSV/XML) to RDF object
  • JSON
  • CSV
  • XML
  • Most powerful adapter
  • Can convert multiple input objects
  • RML knowledge needed to do mapping
NGSIv2 to NGSI-LD Converts NGSIv2 to an NGSI-LD model
  • NGSIv2 (JSON)
 
  • Only works with NGSIv2 as input
  • Slower performance when deserializing model

Table of contents


diff --git a/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld.html b/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld.html new file mode 100644 index 000000000..408136ffd --- /dev/null +++ b/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld.html @@ -0,0 +1 @@ + Json To JsonLd Transformer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Json To JsonLd Adapter

Ldio:JsonToLdAdapter

The json-to-ld-adapter receives json messages and adds a linked data context to transform the messages to json-ld.

Config

Property Description Required Default Example Supported values
context URI of json-ld context Or an JSON-LD context object. Yes N/A http://example.com/my-api URI or Json Object (containing “@context” entry)
force-content-type Flag that indicates if application/json should be forced as mime type. No false true true or false
max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

diff --git a/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html b/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html new file mode 100644 index 000000000..2f8207d85 --- /dev/null +++ b/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html @@ -0,0 +1 @@ + NGSIv2 To LD Adapter | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO NGSIv2 To LD Adapter

Ldio:NgsiV2ToLdAdapter

This adapter will transform a NGSI V2 input into NGSI LD.

Jackson is used to first deserialize the input to java objects which can then be serialized to the LD format.

Notes

The algorithm applies several deviations from the standard formats. These deviations are:

  1. The observedAt attribute is added to every property, its value is determined by the dateObserved attribute of the input.
  2. The timestamp attribute of a metadata property normally determines the observedAt property but is ignored in this algorithm.

Config

Property Description Required Default Example Supported values
core-context URI of a core json-ld context. Yes N/A http://example.com/my-api HTTP and HTTPS urls
ld-context URI of a custom json-ld context. No N/A http://example.com/my-api HTTP and HTTPS urls
data-identifier Identifier that points to data in provided json. Yes N/A data String

diff --git a/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter.html b/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter.html new file mode 100644 index 000000000..5253b51ef --- /dev/null +++ b/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter.html @@ -0,0 +1 @@ + RDF Adapter | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO RDF Adapter

Ldio:RdfAdapter

As the most basic adapter, the RDF Adapter will take in an RDF string and convert it into an internal Linked Data model based on the given content type. This internal Linked Data model is then available for utilization in various other components, such as transformers and outputs.

Notes

This Adapter only supports valid RDF mime types

Config

Property Description Required Default Example Supported values
max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

diff --git a/2.12.0/ldio/ldio-adapters/ldio-rml-adapter.html b/2.12.0/ldio/ldio-adapters/ldio-rml-adapter.html new file mode 100644 index 000000000..9014f866e --- /dev/null +++ b/2.12.0/ldio/ldio-adapters/ldio-rml-adapter.html @@ -0,0 +1 @@ + RML Adapter | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO RML Adapter

Ldio:RmlAdapter

The RML Adapter allows a user to transform a non-LD object (json/CSV/XML) to an RDF object.

This is done by providing a RML mapping file. For more details on how to form a correct RML mapping, visit the RML documentation.

Config

Property Description Required Default Example Supported values
mapping Path to content of RML/content of RML mapping. Yes N/A mapping.ttl Path/String

diff --git a/2.12.0/ldio/ldio-inputs/art/ldes-client-connector.svg b/2.12.0/ldio/ldio-inputs/art/ldes-client-connector.svg new file mode 100644 index 000000000..f1c1d5e92 --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/art/ldes-client-connector.svg @@ -0,0 +1,4 @@ + + + +
Actor
Actor
Consumer connector
Consumer connector
Provider connector
Provider connector
LDES Server
LDES Server
LDES Client
LDES Client
transfer endpoint
transfer...
token endpoint
token en...
Authorization token
Authorizat...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/2.12.0/ldio/ldio-inputs/index.html b/2.12.0/ldio/ldio-inputs/index.html new file mode 100644 index 000000000..8b1c80a1a --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/index.html @@ -0,0 +1 @@ + LDIO Inputs | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Orchestrator Inputs

The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


Table of contents


diff --git a/2.12.0/ldio/ldio-inputs/ldio-amqp-in.html b/2.12.0/ldio/ldio-inputs/ldio-amqp-in.html new file mode 100644 index 000000000..5d14eedd3 --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-amqp-in.html @@ -0,0 +1,9 @@ + AMQP In | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO AMQP In

Ldio:AmqpIn

The LDIO AMQP In listens to messages from an AMQP 1.0 queue.

Config

Property Description Required Default Example Supported values
remote-url URI to AMQP queue Yes N/A amqp://server:61616 In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]]
queue Name of the queue Yes N/A quickstart-events String
username Username used in authentication Yes N/A client String
password Password used in the authentication Yes N/A secret String
content-type Content-type suggestion* for received messages of queue No application/n-quads application/n-quads Any content type supported by Apache Jena
  • When the header of the message contains a “contentType” property, the listener will use the content type provided by the header.

Example

      input:
+        name: Ldio:AmqpIn
+        config:
+          remote-url: amqp://localhost:61616
+          username: artemis
+          password: artemis
+          queue: example
+          content-type: application/ld+json
+

Pausing

When paused, this component will not receive any messages from the queue and will start syncing with the queue when unpaused.


diff --git a/2.12.0/ldio/ldio-inputs/ldio-http-in-poller.html b/2.12.0/ldio/ldio-inputs/ldio-http-in-poller.html new file mode 100644 index 000000000..8146364e1 --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-http-in-poller.html @@ -0,0 +1,30 @@ + HTTP In Poller | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO HTTP In Poller

Ldio:HttpInPoller

The LDIO Http In Poller is a basic Http Poller that will poll a target URL on a specified interval.

Config

General properties

Property Description Required Default Example Supported values
url Target URL to poll from. Yes N/A http://example.com/my-api HTTP and HTTPS urls (lists are supported)
cron Cron expression to declare when the polling should take place 1 Yes2 N/A */10 * * * * * Spring Cron Expression
interval Polling interval declared in ISO 8601 format. Yes2 N/A PT1S ISO 8601 formatted String
continueOnFail Indicated if continue if polling results in failure No true true true or false

LDIO Http Requester properties

Authentication properties

Property Description Required Default Supported values Example
auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

Retry properties

Property Description Required Default Supported values Example
retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

  • 429
  • 5xx (500 and above)

Rate limit properties

Property Description Required Default Supported values Example
rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

Http headers

Property Description Required Default Supported values Example
http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
Example Http Requester config
      config:
+        http:
+          headers:
+            - key: role
+              value: developer
+            - key: alt-role
+              value: programmer
+        auth:
+          type: API_KEY
+          api-key: my-secret
+          api-key-header: x-api-key
+        retries:
+          enabled: true
+          max: 10
+          statuses-to-retry: 410,451
+        rate-limit:
+          enabled: true
+          period: P1D
+          limit: 1000
+

Multiple urls

The Http In Poller supports polling multiple endpoints. Example configuration:

name: Ldio:HttpInPoller
+config:
+  auth:
+    type: API_KEY
+    api-key: my-key
+    api-key-header: X-API-Key
+  url:
+    - https://webhook.site/6cb49dd1-aa05-4e77-8870-f06903805b30
+    - https://webhook.site/e8078b99-4b09-496d-baa8-8ba309dec6b6
+  interval: PT3S
+

When using multiple endpoints, the other config (auth config, interval, etc.) applies to all endpoints.

Pausing

When paused, this component will stop making any of the scheduled HTTP-calls. When resumed, it will restart these calls as if the component had been restarted, meaning any configured periods will start counting from the moment the pipeline was resumed instead of when it was originally created.


  1. The cron schedules are in timezone ‘UTC’. 

  2. Either choose the ‘cron’ option or the ‘interval’. However, the interval property will become deprecated 2


diff --git a/2.12.0/ldio/ldio-inputs/ldio-http-in.html b/2.12.0/ldio/ldio-inputs/ldio-http-in.html new file mode 100644 index 000000000..f289d051a --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-http-in.html @@ -0,0 +1 @@ + HTTP In | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO HTTP In

Ldio:HttpIn

The LDIO Http In is a basic Http Listener.

Data can be written to http://{hostname}:{port}/{pipeline name}

Config

This component has no required config

Pausing

When paused, this component will return an 503 response to any HTTP-calls it receives


diff --git a/2.12.0/ldio/ldio-inputs/ldio-kafka-in.html b/2.12.0/ldio/ldio-inputs/ldio-kafka-in.html new file mode 100644 index 000000000..a5acdd75e --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-kafka-in.html @@ -0,0 +1,17 @@ + Kafka In | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Kafka In

Ldio:KafkaIn

The LDIO Kafka In listens to messages from a kafka topic.

Two security protocols are supported:

Config

Property Description Required Default Example Supported values
content-type Any content type supported by Apache Jena Yes N/A application/n-quads Any type supported by Apache Jena
bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
topics Names of the topics (comma separated) Yes N/A quickstart-events String
group-id Group identifier the consumer belongs to No generated value group-1 String
security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
sasl-jaas-user Username used in the security protocol No null client String
sasl-jaas-password Password used in the security protocol No null secret String

Example

NO SECURITY

outputs:
+  - name: Ldio:KafkaIn
+    config:
+      content-type: application/n-quads
+      topics: quickstart-events
+      bootstrap-servers: localhost:9092
+

SASL SSL PLAIN

outputs:
+  - name: Ldio:KafkaIn
+    config:
+      content-type: application/n-quads
+      topics: quickstart-events
+      bootstrap-servers: localhost:9092
+      group-id: testing_group
+      security-protocol: SASL_SSL_PLAIN
+      sasl-jaas-user: client
+      sasl-jaas-password: client-secret
+

Pausing

When paused, this component will stop listening to the kafka topics. When resumed, it will try to resync with all topics.


diff --git a/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector.html b/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector.html new file mode 100644 index 000000000..d0477802d --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector.html @@ -0,0 +1,9 @@ + LDES Client with Connector | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Ldes Client Connector

Ldio:LdesClientConnector

An EDC (Eclipse dataspace Connector) LDIO wrapper component for the ldio ldes client to add EDC support to this component. If you’d like to know how to configure the LDES Client, we refer to the ldio ldes client. The additional functionality provided by this component makes it possible to use the Ldes Client to consume an LDES through an EDC connector. This component exposes two endpoints:

  1. http://://transfer The Ldio component will start the data transfer with the connector. You have to send the transfer request to the LdioLdesClientConnector instead of the EDC consumer connector. The LDIO Ldes Client Connector will start the transfer with the connector and also keep the transfer alive while consuming the LDES (e.g. request a new token when it expires).
  2. http://://token This endpoint should never be called directly. This is the callback to be provided in the transfer request. The EDC connector will use this callback endpoint to provide the LDES Client with a token.

img

Config

Property Description Required Default Example Supported values
connector-transfer-url The transfer url of the EDC connector which has to be called to start a transfer Yes N/A http://consumer-connector:29193/management/v2/transferprocesses HTTP and HTTPS urls
proxy-url-to-replace Makes it possible to proxy a part of the url of the LDES**. Indicates which part of the url should be replaced. No empty string http://ldes-behind-connectors.dev string
proxy-url-replacement Makes it possible to proxy a part of the url of the LDES**. Indicates the replacement url part. No memory http://consumer-connector:29193 string

** The url mentioned here are the actual url’s used by the LDES Server (hostname). These are included in the results bodies to indicate relations, etc. This is a temporary solution until the client and server support relative urls.

Examples

input:
+  name: Ldio:LdesClientConnector
+  config:
+    url: http://consumer-connector:29291/public
+    connector-transfer-url: http://consumer-connector:29193/management/v2/transferprocesses
+    proxy-url-to-replace: http://localhost:8081/devices
+    proxy-url-replacement: http://consumer-connector:29291/public
+    source-format: application/n-quads
+

INIT phase

Contrary to the other ldio-input components, the connector waits in the INIT status for the edc-token and will only progress to the RUNNING status once it has received this token. More on the statuses in ldio can be found here.

Pausing

When paused, this component will stop processing the current fragment and not make any calls to the server. When resumed, it will continue with the fragment where it stopped and continue as normal. This component can not be paused while waiting for the token.


diff --git a/2.12.0/ldio/ldio-inputs/ldio-ldes-client.html b/2.12.0/ldio/ldio-inputs/ldio-ldes-client.html new file mode 100644 index 000000000..31b41980f --- /dev/null +++ b/2.12.0/ldio/ldio-inputs/ldio-ldes-client.html @@ -0,0 +1,57 @@ + LDES Client | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO LDES Client

The LDES Client is a component which can be used by data consumers to replicate and synchronize an LDES.
When replication or synchronization is halted, the LDES Client is able to resume where it has stopped. More information on how consumption of an LDES works can be found here.

Processing fragments

One or more URLs need to be configured in the LDES Client. If more URLs are configured, they need to be part of the same LDES.
The configured fragments (URLs) will be processed and all relations will be added to the (non-persisted) queue.
As long as the LDES Client runs, new fragments that need to be processed can be added to the queue. The LDES Client will keep track of the mutable and immutable fragments it did already process. When an immutable fragment that already has been processed is added to the queue, it will be ignored.

Mutable fragments usually have a max-age set in the Cache-control header. If this isn’t the case, a default expiration interval will be used to set an expiration date on the fragment. When the max-age or default expiration interval of a fragment expires, the fragment will be put into the queue again so that the LDES Client fetches it again.

Processing members within fragments

The LDES Client keeps track of the processed members of mutable fragments, to make sure members are only processed once within a fragment. When the fragment is marked as immutable, and no members can be added anymore, the LDES Client will stop keeping track of members processed within that fragment.

Filtering

Exactly-once-filter

To have the possibility to filter out already received members, the “exactly-once-filter” can be enabled in configuration. The filter will check whether a member was already processed in other fragments.
The IDs of all processed members will be remembered by the filter and when a duplicate member is processed, it will be filtered out before sending it to the output of the Client.

Note that this filter can not be enabled with version materialisation.

Latest-state-filter

When version materialisation is enabled, state objects that does not represent the latest state can be filter out by enabling the “latest-state-filter” in the configuration.

Both the versionOf and the timestamp of the version object members will be remembered by the filter. When a new member with the same versionOf and a timestamp that is before or equal to the latest remembered timestamp, the member will be filtered out. When a member is processed that has a later timestamp than the last remembered member, that last remembered member will be overwritten and the new member will be processed.

Flow of the Latest State Filter

flowchart LR
+;
+    CLIENT[LDIO LDES Client] --> Version_Object((Version\n object));
+    Version_Object --> Latest_State_Filter(Latest State\nFilter);
+    Latest_State_Filter --> Filtering{Newer then\n last processed\n member?};
+    Filtering -->|Yes| Version_Materialiser(Version\nMaterialiser);
+    Version_Materialiser --> State_Object((State\n object));
+    State_Object --> Sender[Ldio Sender];
+    Filtering ---->|No| Ignore[Ignore member];
+

This Latest State Filter is only available for the version materialiser within the LDIO LDES Client, not for the transformer component

Persistence strategies

The Client offers different ways to persist state of the processed members:

Strategy Description Advantages Disadvantages
Memory Store the state of members in the memory of the LDES Client
  • Fastest processing
  • Easiest setup
  • Not suitable for large datasets (>500k), heap will overflow
  • State is lost when the client stops/restarts
SQLite A SQLite database is used to store state of members
  • Easy setup
  • State is not lost between runs
  • Slowest processing**
PostgreSQL A PostgreSQL database is used to store state of the members
  • Fastest processing for larger datasets
  • State is not lost between runs
  • Database is needed

** We use a transaction for every processed record and SQLite is limited by the CPU (source).

Config

General properties

Property Description Required Default Example Supported values
urls List of URLs of the LDES data sources Yes N/A http://localhost:8080/my-ldes HTTP and HTTPS URLs
source-format The ‘Content-Type’ that should be requested to the server No text/turtle application/n-quads Any type supported by Apache Jena
state ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted No memory sqlite ‘memory’, ‘sqlite’ or ‘postgres’
keep-state Indicates if the state should be persisted on shutdown (n/a for in memory states) No false false true or false
enable-exactly-once Indicates whether a member must be sent exactly once or at least once No true true true or false

The default source-format is text/turtle, as this RDF format supports relative URIs. However, if relative URIs are not used, application/n-quads or even the binary format application/rdf+protobuf are better options, as these formats are faster to parse.

Setting the keep-state property to true makes it so that the state can not be deleted through the pipeline-management api

Version materialisation properties

Property Description Required Default Example Supported values
materialisation.enabled Indicates if the client should return state-objects (true) or version-objects (false) No false true true or false
materialisation.enable-latest-state Indicates whether all state or only the latest state must be sent No true false true or false

LDIO Http Requester properties

Authentication properties

Property Description Required Default Supported values Example
auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

Retry properties

Property Description Required Default Supported values Example
retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

  • 429
  • 5xx (500 and above)

Rate limit properties

Property Description Required Default Supported values Example
rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

Http headers

Property Description Required Default Supported values Example
http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
Example Http Requester config
      config:
+        http:
+          headers:
+            - key: role
+              value: developer
+            - key: alt-role
+              value: programmer
+        auth:
+          type: API_KEY
+          api-key: my-secret
+          api-key-header: x-api-key
+        retries:
+          enabled: true
+          max: 10
+          statuses-to-retry: 410,451
+        rate-limit:
+          enabled: true
+          period: P1D
+          limit: 1000
+

SQLite properties

Property Description Required Default Example Supported values
sqlite.directory Directory wherein the .db file can be saved No N/A /ldio/sqlite String

Postgres properties

Property Description Required Default Example Supported values
postgres.url JDBC URL of the Postgres database No N/A jdbc:postgresql://test.postgres.database.azure.com:5432/sample String
postgres.username Username used to connect to Postgres database No N/A myUsername@test String
postgres.password Password used to connect to Postgres database No N/A myPassword String

Configuration Examples

  input:
+    name: Ldio:LdesClient
+    config:
+      urls:
+        - http://localhost:8080/my-ldes
+      sourceFormat: text/turtle
+      materialisation:
+        enabled: true
+      retries:
+        enabled: true
+      auth:
+        type: OAUTH2_CLIENT_CREDENTIALS
+        client-id: clientId
+        client-secret: secret
+        token-endpoint: http://localhost:8000/token
+
  input:
+    name: Ldio:LdesClient
+    config:
+      urls:
+        - http://localhost:8080/my-ldes
+      sourceFormat: text/turtle
+      retries:
+        enabled: true
+      state: postgres
+      postgres:
+        url: jdbc:postgresql://test.postgres.database.azure.com:5432/sample
+        username: myUsername@test
+        password: myPassword
+

Pausing the LDES Client

  • When paused, the LDES Client will stop processing the current fragment and will not request new fragments from the server.
  • When resumed, the LDES Client will continue processing the fragment where it has stopped and it will request new fragments form the server.

diff --git a/2.12.0/ldio/ldio-outputs/index.html b/2.12.0/ldio/ldio-outputs/index.html new file mode 100644 index 000000000..f66d9bccb --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/index.html @@ -0,0 +1 @@ + LDIO Outputs | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Orchestrator Outputs

The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


Table of contents


diff --git a/2.12.0/ldio/ldio-outputs/ldio-amqp-out.html b/2.12.0/ldio/ldio-outputs/ldio-amqp-out.html new file mode 100644 index 000000000..d61f7572d --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-amqp-out.html @@ -0,0 +1,27 @@ + AMQP Out | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO AMQP Out

Ldio:AmqpOut

The LDIO AMQP Out sends messages to an AMQP 1.0 queue. The content-type configured in the rdf-writer.content-type is added as a header to the message with key “contentType”.

Config

Property Description Required Default Supported values Example
remote-url URI to AMQP queue Yes N/A In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] amqp://server:61616
queue Name of the queue Yes N/A String quickstart-events
username Username used in authentication Yes N/A String client
password Password used in the authentication Yes N/A String secret

RDF Writer Properties

Property Description Required Default Supported values Example
rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
Example RDF Writer config

Format as N-Quads:

      config:
+        rdf-writer:
+          content-type: application/n-quads
+

Format as JSON-LD with given frame:

      config:
+        rdf-writer:
+          content-type: application/ld+json
+          frame: |
+            {
+              "@context": {"@vocab": "http://example.org/"},
+              "@type": "Library",
+              "contains": {
+                "@type": "Book",
+                "contains": {
+                  "@type": "Chapter"
+                }
+              }
+            }
+

Example

      outputs:
+        - name: Ldio:AmqpOut
+          config:
+            remote-url: amqp://localhost:61616
+            username: artemis
+            password: artemis
+            queue: example
+            rdf-writer:
+              content-type: application/n-quads
+

diff --git a/2.12.0/ldio/ldio-outputs/ldio-console-out.html b/2.12.0/ldio/ldio-outputs/ldio-console-out.html new file mode 100644 index 000000000..9f35a1757 --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-console-out.html @@ -0,0 +1,18 @@ + Console Out | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Console Out

Ldio:ConsoleOut

The LDIO Console Out will output its given model to the console.

Config

RDF Writer Properties

Property Description Required Default Supported values Example
rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
Example RDF Writer config

Format as N-Quads:

      config:
+        rdf-writer:
+          content-type: application/n-quads
+

Format as JSON-LD with given frame:

      config:
+        rdf-writer:
+          content-type: application/ld+json
+          frame: |
+            {
+              "@context": {"@vocab": "http://example.org/"},
+              "@type": "Library",
+              "contains": {
+                "@type": "Book",
+                "contains": {
+                  "@type": "Chapter"
+                }
+              }
+            }
+

diff --git a/2.12.0/ldio/ldio-outputs/ldio-http-out.html b/2.12.0/ldio/ldio-outputs/ldio-http-out.html new file mode 100644 index 000000000..6005e18fb --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-http-out.html @@ -0,0 +1,37 @@ + HTTP Out | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO HTTP Out

Ldio:HttpOut

The LDIO HTTP Out is a basic Http Client that will send the given Linked Data model to a target url.

Config

Property Description Required Default Example Supported values
endpoint Target url. Yes N/A http://example.com/endpoint HTTP and HTTPS urls

RDF Writer Properties

Property Description Required Default Supported values Example
rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
Example RDF Writer config

Format as N-Quads:

      config:
+        rdf-writer:
+          content-type: application/n-quads
+

Format as JSON-LD with given frame:

      config:
+        rdf-writer:
+          content-type: application/ld+json
+          frame: |
+            {
+              "@context": {"@vocab": "http://example.org/"},
+              "@type": "Library",
+              "contains": {
+                "@type": "Book",
+                "contains": {
+                  "@type": "Chapter"
+                }
+              }
+            }
+

LDIO Http Requester properties

Authentication properties

Property Description Required Default Supported values Example
auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

Retry properties

Property Description Required Default Supported values Example
retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

  • 429
  • 5xx (500 and above)

Rate limit properties

Property Description Required Default Supported values Example
rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

Http headers

Property Description Required Default Supported values Example
http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
Example Http Requester config
      config:
+        http:
+          headers:
+            - key: role
+              value: developer
+            - key: alt-role
+              value: programmer
+        auth:
+          type: API_KEY
+          api-key: my-secret
+          api-key-header: x-api-key
+        retries:
+          enabled: true
+          max: 10
+          statuses-to-retry: 410,451
+        rate-limit:
+          enabled: true
+          period: P1D
+          limit: 1000
+

diff --git a/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out.html b/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out.html new file mode 100644 index 000000000..c1a9a395c --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out.html @@ -0,0 +1,20 @@ + HTTP Sparql Out | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

HTTP Sparql Out

Ldio:HttpSparqlOut

The HTTP SPARQL Out component can be used to write data to a SPARQL host, with Virtuoso as the most common known one.

Config

Property Description Required Default Example Supported values
endpoint The url of the sparql host Yes N/A http://localhost:8890/sparql URL
graph The graph whereto must be written No N/A http://example.graph.com String
skolemisation.skolemDomain If the skolem domain is set, skolemisation will be triggered before the triples are written to the sparql host No N/A http://example.org Any valid IRI
replacement.enabled Whether the old nodes must be replaced by the new ones No true false Boolean value
replacement.depth How deep the default delete query must delete nested nodes from the existing subject, will be ignored if replacement.deleteFunctionis set No 10 15 Integer
replacement.deleteFunction If this property is set, then the default delete function will be overridden with this delete function No N/A DELETE { ?s ?p ?o} WHERE { ?s ?p ?o } String

LDIO Http Requester properties

Authentication properties

Property Description Required Default Supported values Example
auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

Retry properties

Property Description Required Default Supported values Example
retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

  • 429
  • 5xx (500 and above)

Rate limit properties

Property Description Required Default Supported values Example
rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

Http headers

Property Description Required Default Supported values Example
http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
Example Http Requester config
      config:
+        http:
+          headers:
+            - key: role
+              value: developer
+            - key: alt-role
+              value: programmer
+        auth:
+          type: API_KEY
+          api-key: my-secret
+          api-key-header: x-api-key
+        retries:
+          enabled: true
+          max: 10
+          statuses-to-retry: 410,451
+        rate-limit:
+          enabled: true
+          period: P1D
+          limit: 1000
+

Replacement

Replacement includes that all old nodes from certain subjects must be deleted before the new nodes with the same subject can be inserted.
By default, a delete query is constructed by the service that delete all nodes, including nested nodes to a level, specified by the replacement.depth property, deep. If for some reason, the constructed delete query is not sufficient, or the query is too complex, a custom delete query can be configured. This query will override the default query created by the service, which also mean the replacement.depth property will be ignored.

Skolemisation

Not all sparql hosts can deal that well with blank nodes, therefore, those nodes can first be skolemised. However, to skolemise nodes, a skolem domain is required, which can be set by the skolemisation.skolemDomain property, which directly enables the service. More information about skolemisation can be found on the skolemisation-transformer page


diff --git a/2.12.0/ldio/ldio-outputs/ldio-kafka-out.html b/2.12.0/ldio/ldio-outputs/ldio-kafka-out.html new file mode 100644 index 000000000..2551e1888 --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-kafka-out.html @@ -0,0 +1,33 @@ + Kafka Out | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Kafka Out

Ldio:KafkaOut

The LDIO Kafka Out sends messages to a kafka topic. Two security protocols are supported:

Config

Property Description Required Default Example Supported values
bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
topic Name of the topic Yes N/A quickstart-events String
key-property-path Optional property path to extract the kafka key from the data model No null http://purl.org/dc/terms/title ARQ property path
security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
sasl-jaas-user Username used in the security protocol No null client String
sasl-jaas-password Password used in the security protocol No null secret String
frame-type RDF type of the objects that need to be included for JSON-LD framing. No N/A http://purl.org/goodrelations/v1#Offering Any RDF type

RDF Writer Properties

Property Description Required Default Supported values Example
rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
Example RDF Writer config

Format as N-Quads:

      config:
+        rdf-writer:
+          content-type: application/n-quads
+

Format as JSON-LD with given frame:

      config:
+        rdf-writer:
+          content-type: application/ld+json
+          frame: |
+            {
+              "@context": {"@vocab": "http://example.org/"},
+              "@type": "Library",
+              "contains": {
+                "@type": "Book",
+                "contains": {
+                  "@type": "Chapter"
+                }
+              }
+            }
+

Example

NO SECURITY

outputs:
+  - name: Ldio:KafkaOut
+    config:
+      bootstrap-servers: localhost:9092
+      topic: quickstart-events
+      key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title>
+

SASL SSL PLAIN

outputs:
+  - name: Ldio:KafkaOut
+    config:
+      bootstrap-servers: localhost:9092
+      topic: quickstart-events
+      key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title>
+      security-protocol: SASL_SSL_PLAIN
+      sasl-jaas-user: client
+      sasl-jaas-password: client-secret
+

diff --git a/2.12.0/ldio/ldio-outputs/ldio-repository-sink.html b/2.12.0/ldio/ldio-outputs/ldio-repository-sink.html new file mode 100644 index 000000000..05b8fd907 --- /dev/null +++ b/2.12.0/ldio/ldio-outputs/ldio-repository-sink.html @@ -0,0 +1 @@ + Repository Sink | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Repository Sink

Ldio:RepositorySink

The repository Sink is used to flush an LDES stream into a triplestore. Any triplestore that supports the RDF4J remote repository API can be used.

Config

Property Description Required Default Example Supported values
sparql-host The url of the server hosting the repository Yes N/A http://repositoryServer URL
repository-id The rdf4j repository id Yes N/A repoId String
named-graph If set, the triples will be written to this named graph No N/A http://name Any valid IRI
batch-size Number of members or models that will be committed at once No 500 500 Integer
batch-timeout If the batch size has not been reached within this number of milliseconds, the members will be committed anyway. No 120000 30000 Integer

Batching

To increase the performance of this materialiser, members will be committed in batch to the triple store. However, it’s important to notice that this can have an impact on the data integrity. First of all, there could be a delay, with a maximum delay of the configured batch timeout, when the triple store will be up-to-date. Secondly, if something goes wrong halfway of a batch, all the members in that batch will not be committed to triple story and thus will be gone.

So the more important data integrity is, the lower the batch-size and batch-timeout should be configured. If a more performant repository materialiser is desired, batch-size and batch-timeout should be configured somewhat higher.


diff --git a/2.12.0/ldio/ldio-transformers/index.html b/2.12.0/ldio/ldio-transformers/index.html new file mode 100644 index 000000000..9c88abcd7 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/index.html @@ -0,0 +1 @@ + LDIO Transformers | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions Orchestrator Transformers

The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


Table of contents


diff --git a/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter.html b/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter.html new file mode 100644 index 000000000..7308bb380 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter.html @@ -0,0 +1,9 @@ + Change Detection Filter | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Change Detection Filter

Ldio:ChangeDetectionFilter

The LDIO Change Detection Filter, which is in fact a transformer, keeps track of each member with the same subject if the state has changed. If not, the member will be ignored, otherwise the member will be sent further through the pipeline. This can come in handy when you do not want to spam your server for example with duplicate state objects.

Flow of the Change Detection Filter

flowchart LR
+;
+    PREV_TRANSFORMER[Previous transformer] --> State_Object((State\n object));
+    State_Object --> FILTER(Change Detection\nFilter);
+    FILTER --> HASH((Hashed\n model))
+    HASH --> Filtering{Contains\n member with\n same subject and\n same hashed\n model?};
+    Filtering -->|No| NEXT_TRANSFORMER[Next\n transformer];
+    Filtering -->|Yes| Ignore[Ignore member];
+

Config

General properties

Property Description Required Default Example Supported values
state ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted No memory sqlite ‘memory’, ‘sqlite’ or ‘postgres’
keep-state Indicates if the state should be persisted on shutdown (n/a for in memory states) No false false true or false

SQLite properties

Property Description Required Default Example Supported values
sqlite.directory Directory wherein the .db file can be saved No N/A /ldio/sqlite String

Postgres properties

Property Description Required Default Example Supported values
postgres.url JDBC URL of the Postgres database No N/A jdbc:postgresql://test.postgres.database.azure.com:5432/sample String
postgres.username Username used to connect to Postgres database No N/A myUsername@test String
postgres.password Password used to connect to Postgres database No N/A myPassword String

diff --git a/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt.html b/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt.html new file mode 100644 index 000000000..d4fd233b4 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt.html @@ -0,0 +1,28 @@ + GeoJson To WKT Transformer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO GeoJson To WKT Transformer

Ldio:GeoJsonToWktTransformer

The GeoJson to Wkt Transformer will transform any GeoJson statements (with predicate https://purl.org/geojson/vocab#geometry) to a wkt string.

When the transform-to-rdf+wkt-enabled configuration is enabled, GeoJSON statements will be converted into RDF+WKT format.

For example:

{
+  "https://purl.org/geojson/vocab#geojson:geometry": {
+    "@type": "Point",
+    "https://purl.org/geojson/vocab#geojson:coordinates": [
+      100.0,
+      0.0
+    ]
+  }
+}
+

becomes:

{
+  "http://www.w3.org/ns/locn#geometry": {
+    "@value": "POINT (100 0)",
+    "@type": "http://www.opengis.net/ont/geosparql#wktLiteral"
+  }
+}
+

With transform-to-rdf+wkt-enabled set to true it becomes:

@prefix geojson: <https://purl.org/geojson/vocab#> .
+@prefix sf: <http://www.opengis.net/ont/sf#> .
+@prefix geo: <http://www.opengis.net/ont/geosparql#> .
+@prefix locn: <http://www.w3.org/ns/locn#> .
+
+<http://example.com/features/point>
+        a       geojson:Feature;
+        locn:geometry
+                [ a       sf:Point;
+                  geo:asWKT
+                          "POINT (100 0)"^^geo:wktLiteral
+                ] .
+

Config

Property Description Required Default Example Supported values
transform-to-rdf+wkt-enabled Transform GeoJson to RDF+WKT format, defaults to false and the default format is WKT No false false true/false

diff --git a/2.12.0/ldio/ldio-transformers/ldio-http-enricher.html b/2.12.0/ldio/ldio-transformers/ldio-http-enricher.html new file mode 100644 index 000000000..f329be493 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-http-enricher.html @@ -0,0 +1,34 @@ + Http Enricher Transformer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Http Enricher

Ldio:HttpEnricher

A transformer which allows to send a GET or POST HTTP request to a dynamic URL provided by the model. The response is converted to linked data and added to the incoming model.

Config

Property Description Required Default Supported values Example
adapter.name This transformer requires an ldio-adapter to convert the responses to linked data. Yes N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
adapter.config.xxx Optional config that may be required by the adapter No N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
url-property-path Path defining the url that needs to be selected on the model for the http request. Yes N/A Valid property paths http://example.org/url
header-property-path Path defining the headers that needs to be selected on the model for the http request. No N/A Valid property paths http://example.org/header
body-property-path Path defining the body that needs to be selected on the model to be added when a POST http request is used. No N/A Valid property paths http://example.org/meta/http://example.org/body
http-method-property-path Path defining the http method that needs to be selected on the model for the http request. No GET GET or POST GET

LDIO Http Requester properties

Authentication properties

Property Description Required Default Supported values Example
auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

Retry properties

Property Description Required Default Supported values Example
retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

  • 429
  • 5xx (500 and above)

Rate limit properties

Property Description Required Default Supported values Example
rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

Http headers

Property Description Required Default Supported values Example
http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
Example Http Requester config
      config:
+        http:
+          headers:
+            - key: role
+              value: developer
+            - key: alt-role
+              value: programmer
+        auth:
+          type: API_KEY
+          api-key: my-secret
+          api-key-header: x-api-key
+        retries:
+          enabled: true
+          max: 10
+          statuses-to-retry: 410,451
+        rate-limit:
+          enabled: true
+          period: P1D
+          limit: 1000
+

Note that all adapters are supported. When the adapter requires additional config, this can be added as seen below in the example.

Example:

This example contains a JsonToLdAdapter which needs “core-context” as config. At the bottom there is also “auth” config provided for the request executor.

        - name: Ldio:HttpEnricher
+          config:
+            adapter:
+              name: Ldio:JsonToLdAdapter
+              config:
+                core-context: file:///ldio/jsonld/observation.jsonld
+            url-property-path: <http://example.org/url>
+            header-property-path: <http://example.org/meta>/<http://example.org/headers>
+            body-property-path: <http://example.org/meta>/<http://example.org/body>
+            http-method-property-path: <http://example.org/meta>/<http://example.org/method>
+            auth:
+              type: API_KEY
+              api-key: my-secret
+              api-key-header: x-api-key
+

diff --git a/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer.html b/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer.html new file mode 100644 index 000000000..3b7c55214 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer.html @@ -0,0 +1,9 @@ + Skolemisation Transformer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Skolemisation Transformer

Ldio:SkolemisationTransformer

A transformer which skolemises the incoming model.

What is Skolemisation

In the context of Linked Data, Skolemisation is a process used to handle blank nodes or anonymous nodes in RDF (Resource Description Framework) graphs. These nodes, which lack unique identifiers, are frequently employed in RDF/S knowledge bases to represent complex attributes or resources with known properties but unknown identities.

Skolemisation in Linked Data involves the transformation of these blank nodes into Skolem Uniform Resource Identifiers ( URIs). The process enhances the clarity makes it easier to reference these nodes in future datasets.

This process is particularly useful when dealing with substantial volumes of unstructured data distributed across diverse sources. By improving the accuracy and relevance of RDF summaries in relation to original datasets, Skolemisation enhances the efficiency and effectiveness of subsequent queries against these summaries.

In summary, Skolemisation in Linked Data provides a way to handle the complexity introduced by blank nodes in RDF graphs, thereby enhancing the clarity, interoperability, and usability of the data.

Example

Suppose we have the following RDF triples with a blank node represented as _::

_:bnode <http://purl.org/dc/terms/title> "The Lord of the Rings" .
+_:bnode <http://purl.org/dc/terms/creator> "J.R.R. Tolkien" .
+

In this example, _: is a blank node that represents a resource (a book in this case) with known properties (title and creator) but an unknown identity.

Through Skolemisation, we can replace the blank node with a Skolem URI. The Skolem URI is typically a URL that is unique to the blank node and is generated by the system handling the RDF data. Here’s how it might look:

<http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/title> "The Lord of the Rings" .
+<http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/creator> "J.R.R. Tolkien" .
+

In this Skolemized version, the blank node has been replaced with the Skolem URI http://example.com/.well-known/genid/123456. This URI is unique to the resource previously represented by the blank node, and can now be used to reference this resource in other datasets. This is a simple example, but it illustrates the basic process of Skolemisation in Linked Data.

Config

Property Description Required Default Example Supported values
skolemDomain Skolemisation domain true N/A http://example.com Any valid URI

Configuration

The YAML configuration of this example would be as follows:

transformers:
+  - name: Ldio:SkolemisationTransformer
+    config:
+      skolemDomain: http://example.com
+

diff --git a/2.12.0/ldio/ldio-transformers/ldio-sparql-construct.html b/2.12.0/ldio/ldio-transformers/ldio-sparql-construct.html new file mode 100644 index 000000000..347553706 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-sparql-construct.html @@ -0,0 +1,7 @@ + SPARQL Construct | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO SPARQL Construct

Ldio:SparqlConstructTransformer

The SPARQL Construct Transformer will modify the model based on the given SPARQL Construct Query.

SPARQL Construct is a query language used in semantic Web technologies to create RDF (Resource Description Framework) graphs from existing RDF data. It allows users to specify a pattern of data they wish to extract from the RDF data and construct a new graph based on that pattern.

The SPARQL Construct query language provides a powerful way to create new RDF data by using existing data as the input. It can be used to transform RDF data into different formats, as well as to simplify the structure of RDF data by aggregating or filtering data.

This SPARQL Construct Transfomer building block can be used to execute model transformations.

Splitting models using SPARQL Construct

This component can be used to split models into multiple models using graphs. For example, the below query will create a dataset containing multiple models defined by ‘GRAPH’. The SPARQL construct component will extract all named models from the dataset and add all statements from the default model. The component will then return a collection of models.

CONSTRUCT {
+    GRAPH ?s {
+        ?s ?p ?o
+    }
+}
+WHERE { ?s ?p ?o }
+

SPARQL functions

We support some additional geo functions that can call inside your SPARQL Construct query,

with the following namespace:

prefix geoc: https://opengis.net/def/function/geosparql/custom#

Function Description Input Output
geoc:lineAtIndex get LineString from MultiLineString by index. MultiLineString(wktLiteral) & index LineString(wktLiteral)
geoc:firstCoordinate get first Coordinate of LineString. LineString(wktLiteral) Coordinate(wktLiteral)
geoc:lastCoordinate get last Coordinate of LineString. LineString(wktLiteral) Coordinate(wktLiteral)
geoc:lineLength calculate total line length of LineString. LineString(wktLiteral) distance in meters
geoc:midPoint calculate midpoint of LineString. LineString(wktLiteral) Coordinate(wktLiteral)
geoc:pointAtFromStart calculate point on LineString by distance. LineString(wktLiteral) & distance in meters Coordinate(wktLiteral)

Config

Property Description Required Default Example Supported values
query Path to content of SPARQL Query/content of SPARQL query. Yes N/A query.rq Path/String
infer Include original model in end result. No false false true or false

diff --git a/2.12.0/ldio/ldio-transformers/ldio-version-materializer.html b/2.12.0/ldio/ldio-transformers/ldio-version-materializer.html new file mode 100644 index 000000000..d3f8d3bb6 --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-version-materializer.html @@ -0,0 +1,31 @@ + Version Materializer | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Version Materializer

Ldio:VersionMaterialiser

The Version Materializer will transform a Version Object to a State Object.

Config

Property Description Required Default Example Supported values
versionOf-property Property that points to the versionOfPath. Yes N/A “http://purl.org/dc/terms/isVersionOf” String
restrict-to-members Only returns the statements of the node containing the versionOf property, including potential nested blank nodes. No false false true or false

Example

Version Object

A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model.

An example would be:

@prefix time: <http://www.w3.org/2006/time#> .
+@prefix ex:   <http://example.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix dc: <http://purl.org/dc/terms/> .
+@prefix prov: <http://www.w3.org/ns/prov#> .
+
+<http://example.org/member#2024-01-01T13:00:00+01:00>
+  a ex:Something ;
+  ex:created [
+    a time:Instant ;
+    time:inXSDDateTimeStamp "2024-01-01T13:00:00+01:00"^^xsd:DateTime
+  ] ;
+  prov:generatedAtTime "2024-01-01T13:00:00+01:00"^^xsd:DateTime ;
+  dc:isVersionOf <http://example.org/Something> ;
+

State Object

For each version object, the transformer will generate a corresponding state object and remove all statements that include the versionOf predicate.

An example of the created state object by the previous version object would be:

@prefix time: <http://www.w3.org/2006/time#> .
+@prefix ex:   <http://example.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix prov: <http://www.w3.org/ns/prov#> .
+
+<http://example.org/member>
+  a ex:Something ;
+  ex:created [
+    a time:Instant ;
+    time:inXSDDateTimeStamp "2023-08-18T13:08:00+01:00"^^xsd:DateTime
+  ] .
+  prov:generatedAtTime "2024-01-01T13:00:00+01:00"^^xsd:DateTime ;
+

Configuration

The YAML configuration of this example would be as follows:

transformers:
+  - name: Ldio:VersionMaterialiser
+    config:
+      versionOf-property: http://purl.org/dc/terms/isVersionOf
+

diff --git a/2.12.0/ldio/ldio-transformers/ldio-version-object-creator.html b/2.12.0/ldio/ldio-transformers/ldio-version-object-creator.html new file mode 100644 index 000000000..6896af25c --- /dev/null +++ b/2.12.0/ldio/ldio-transformers/ldio-version-object-creator.html @@ -0,0 +1,35 @@ + Version Object Creator | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDIO Version Object Creator

Ldio:VersionObjectCreator

The Version Object Creator will transform a State Object to a Version Object.

Config

Property Description Required Default Example Supported values
date-observed-property Property path (IRI format ‘<>’) that points to a literal which should be used as timestampPath. Defaults to current timestamp. No Current Timestamp <https://example.org/ObservedAt> String
member-type Defines the RDF type of the object to be transformed to a version object. Yes N/A https://example.org/Person String
delimiter Defines how the version object id will be constructed. (versionOf + delimiter + dateObserved) No / / String
generatedAt-property A statement will be added to the model with the generatedAt value and the given property. No http://www.w3.org/ns/prov#generatedAtTime http://www.w3.org/ns/prov#generatedAtTime String
versionOf-property A statement will be added to the model with the versionOf value and the given property. No http://purl.org/dc/terms/isVersionOf http://purl.org/dc/terms/isVersionOf String

Example

State Object

A state object is an entity that represents the most recent state of an object, and in this context, the subject is not unique. Below is an example presented in RDF format: Below is an example presented in RDF format:

@prefix time: <http://www.w3.org/2006/time#> .
+@prefix ex:   <http://example.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://example.org/member>
+  a ex:Something ;
+  ex:created [
+    a time:Instant ;
+    time:inXSDDateTimeStamp "2023-08-18T13:08:00+01:00"^^xsd:DateTime
+  ] .
+

A property path can be provided for the date-observed-property. You can provide the following date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp> to select time:inXSDDateTimeStamp within ex:created.

Version Object

A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model.

The transformer will perform three key tasks:

  • Modify the named subject with a unique identifier based on the provided date-observed-property and delimiter
  • Add a timestamp statement
  • Add a versionOf statement

An example of the created version object by the previous state object would be:

@prefix time: <http://www.w3.org/2006/time#> .
+@prefix ex:   <http://example.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix dc: <http://purl.org/dc/terms/> .
+@prefix prov: <http://www.w3.org/ns/prov#> .
+
+<http://example.org/member#2024-01-01T13:00:00+01:00>
+  a ex:Something ;
+  ex:created [
+    a time:Instant ;
+    time:inXSDDateTimeStamp "2024-01-01T13:00:00+01:00"^^xsd:DateTime
+  ] ;
+  prov:generatedAtTime "2024-01-01T13:00:00+01:00"^^xsd:DateTime ;
+  dc:isVersionOf <http://example.org/Something> ;
+

Configuration

The YAML configuration of this example would be as follows:

transformers:
+  - name: Ldio:VersionObjectCreator
+    config:
+      member-type: 
+        - http://example.org/Something
+        - http://example.org/SomethingElse
+      delimiter: "#"
+      date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp>
+      generatedAt-property: http://www.w3.org/ns/prov#generatedAtTime
+      versionOf-property: http://purl.org/dc/terms/isVersionOf
+

diff --git a/2.12.0/ldio/pipeline-management/index.html b/2.12.0/ldio/pipeline-management/index.html new file mode 100644 index 000000000..ad335dda0 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/index.html @@ -0,0 +1 @@ + Pipeline Management | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied diff --git a/2.12.0/ldio/pipeline-management/ldes-client-status.html b/2.12.0/ldio/pipeline-management/ldes-client-status.html new file mode 100644 index 000000000..f95b598b2 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/ldes-client-status.html @@ -0,0 +1,8 @@ + LDES Client Status | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

LDES Client Status

Just like the LDIO pipelines have a status, so does the Ldio:LdesClient. The client status can be fetched when a pipeline that has a running status, and of course when it contains an LDES client as input component.

Overview Of The Status Flow

graph LR
+;
+    REPLICATING --> SYNCHRONISING;
+    REPLICATING --> COMPLETED;
+    SYNCHRONISING --> COMPLETED;
+    SYNCHRONISING --> ERROR;
+    REPLICATING --> ERROR;
+

The above diagram shows the flow between the different statuses of the client.

REPLICATING

The startup status of the client. This status indicates that the LDES client have not yet fetched all the available fragments of a view (or views if so configured)

SYNCHRONISING

This status indicates that all the fragments of the configured view(s) have been fetched at least once, and there is at least one fragment that does not have an immutable state yet.

ERROR

This status indicates that an error has occurred somewhere while REPLICATING or SYNCHRONISING

COMPLETED

This status indicates that all the fragments of the configured view has been fetched at least once and all those have an immutable state, or in other words, the end of the LDES has been reached.


diff --git a/2.12.0/ldio/pipeline-management/management-of-pipelines.html b/2.12.0/ldio/pipeline-management/management-of-pipelines.html new file mode 100644 index 000000000..39aeb2217 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/management-of-pipelines.html @@ -0,0 +1,48 @@ + Management of Pipelines | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Management of Pipelines

Pipelines in LDIO can be created in YAML or JSON configuration (although all example configurations are made in YAML, these can also be formatted in JSON).

A default pipeline looks as follows:

  name: my-first-pipeline
+  input:
+    name: name of LDI Input
+    config:
+      foo: bar
+    adapter:
+      name: name of LDI Adapter
+      config:
+        foo: bar
+  transformers:
+    - name: name of LDI Transformer
+      config:
+        foo: bar
+  outputs:
+    - name: name of LDI Transformer
+      config:
+        foo: bar
+
  • Note that one orchestrator can have multiple pipelines
  • Note that one pipeline can have multiple LDI Transformers and LDI Outputs

Anatomy of a pipeline

Each pipeline is built up of the following components:

  • LDIO Input: A component that will receive data (not necessarily LD) to then feed the LDIO pipeline.
  • LDIO Adapter: To be used in conjunction with the LDIO Input, the LDIO Adapter will transform the provided content into and internal Linked Data model and sends it down the pipeline.
  • LDIO Transformer: A component that takes in a Linked Data model, transforms/modifies it and then puts it back on the pipeline.
  • LDIO Output: A component that will take in Linked Data and will export it to external sources.
stateDiagram-v2
+    direction LR
+
+    LDI_Input --> LDI_Transformer : LD
+    LDI_Transformer --> LDI_Output : LD
+
+    state LDI_Input {
+        direction LR
+        [*] --> LDI_Adapter : Non LD
+
+        state LDI_Adapter {
+            direction LR
+            [*] --> adapt
+            adapt --> [*]
+        }
+
+        LDI_Adapter --> [*] : LD
+    }
+    
+    state LDI_Transformer {
+        direction LR
+        [*] --> transform
+        transform --> [*]
+    }
+    state LDI_Output {
+        direction LR
+        [*] --> [*]
+    }
+

Persistence of Pipelines

By default, all pipelines defined after startup (via management API) will be lost on restart.

To prevent this behaviour, add the orchestrator.directory property as follows:

orchestrator:
+  directory: "{directory in application folder}"
+

If this directory does not exist, it will be created.

NOTE: An application config can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml).

Pausing & Resuming LDIO

Sometimes it might be preferred to pause an LDIO pipeline instead of deleting and recreating it. The endpoints to manage pipelines can be found here

The exact behaviour of a paused pipeline depends on its input component and can be found in the documentation of these components. However, it will always complete its current run through the pipeline and then seize sending any output.


diff --git a/2.12.0/ldio/pipeline-management/openapi.json b/2.12.0/ldio/pipeline-management/openapi.json new file mode 100644 index 000000000..b0f232034 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/openapi.json @@ -0,0 +1,491 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "LDIO Management API", + "description": "This API makes it possible manage the LDIO application.", + "version": "2.3.0-SNAPSHOT" + }, + "externalDocs": { + "description": "LDIO documentation", + "url": "https://informatievlaanderen.github.io/VSDS-Linked-Data-Interactions/" + }, + "servers": [ + { + "url": "http://localhost:8088", + "description": "Generated server url" + } + ], + "paths": { + "/admin/api/v1/pipeline": { + "get": { + "tags": [ + "Pipeline controller" + ], + "summary": "Get a list of all active pipelines.", + "operationId": "overview", + "responses": { + "200": { + "description": "A list of all active pipelines is shown.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PipelineTO" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/PipelineTO" + } + } + } + } + } + }, + "post": { + "tags": [ + "Pipeline controller" + ], + "summary": "Create a new pipeline.", + "operationId": "addPipeline", + "requestBody": { + "description": "The pipeline configuration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PipelineConfigTO" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/PipelineConfigTO" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "The new pipeline is returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PipelineTO" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/PipelineTO" + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/{pipelineId}/resume": { + "post": { + "tags": [ + "Pipeline status controller" + ], + "summary": "Resume a pipeline.", + "operationId": "resumePipeline", + "parameters": [ + { + "name": "pipelineId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Resumes the current pipeline", + "content": { + "text/plain": { + "schema": { + "type": "string", + "enum": [ + "INIT", + "STARTING", + "RESUMING", + "RUNNING", + "HALTED", + "STOPPING", + "STOPPED" + ] + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/{pipelineId}/halt": { + "post": { + "tags": [ + "Pipeline status controller" + ], + "summary": "Pause a pipeline.", + "operationId": "haltPipeline", + "parameters": [ + { + "name": "pipelineId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Halts the current pipeline", + "content": { + "text/plain": { + "schema": { + "type": "string", + "enum": [ + "INIT", + "STARTING", + "RESUMING", + "RUNNING", + "HALTED", + "STOPPING", + "STOPPED" + ] + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/{pipelineId}/status": { + "get": { + "tags": [ + "Pipeline status controller" + ], + "summary": "Get the current status of a given pipeline.", + "operationId": "getPipelineStatus", + "parameters": [ + { + "name": "pipelineId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the current pipeline status", + "content": { + "text/plain": { + "schema": { + "type": "string", + "enum": [ + "INIT", + "STARTING", + "RESUMING", + "RUNNING", + "HALTED", + "STOPPING", + "STOPPED" + ] + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/status": { + "get": { + "tags": [ + "Pipeline status controller" + ], + "summary": "Get a list of all pipelines with their status.", + "operationId": "getPipelineStatus_1", + "responses": { + "200": { + "description": "Returns a list of all the pipelines with their current status.", + "content": { + "application/json": {} + } + } + } + } + }, + "/admin/api/v1/pipeline/ldes-client": { + "get": { + "tags": [ + "LDES Client Status" + ], + "summary": "Get a list of all LDES Client statuses pipelines.", + "operationId": "getStatusses", + "responses": { + "200": { + "description": "A list statuses of all active LDES Client pipelines.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClientStatusTo" + } + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/ldes-client/{pipeline}": { + "get": { + "tags": [ + "LDES Client Status" + ], + "summary": "Get the status of a requested LDES Client pipeline.", + "operationId": "getPipelineStatus_2", + "parameters": [ + { + "name": "pipeline", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "404": { + "description": "No LDES Client pipeline exists by that name" + }, + "200": { + "description": "Status of a requested pipeline", + "content": { + "text/plain": { + "schema": { + "type": "string", + "enum": [ + "REPLICATING", + "SYNCHRONISING", + "COMPLETED", + "ERROR" + ] + } + } + } + } + } + } + }, + "/admin/api/v1/catalog": { + "get": { + "tags": [ + "Catalog controller" + ], + "summary": "Get a list of all available components.", + "operationId": "catalog", + "responses": { + "200": { + "description": "A list of all available components is returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LdioCatalog" + } + } + } + } + } + } + }, + "/admin/api/v1/pipeline/{pipeline}": { + "delete": { + "tags": [ + "Pipeline controller" + ], + "summary": "Delete a pipeline.", + "operationId": "deletePipeline", + "parameters": [ + { + "name": "pipeline", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + } + } + } + } + }, + "components": { + "schemas": { + "ComponentDefinitionTO": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "InputComponentDefinitionTO": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "adapter": { + "$ref": "#/components/schemas/ComponentDefinitionTO" + }, + "config": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "PipelineConfigTO": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "input": { + "$ref": "#/components/schemas/InputComponentDefinitionTO" + }, + "transformers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDefinitionTO" + } + }, + "outputs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDefinitionTO" + } + } + } + }, + "PipelineTO": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "INIT", + "STARTING", + "RESUMING", + "RUNNING", + "HALTED", + "STOPPING", + "STOPPED" + ] + }, + "updateSource": { + "type": "string", + "enum": [ + "AUTO", + "MANUAL" + ] + }, + "description": { + "type": "string" + }, + "input": { + "$ref": "#/components/schemas/InputComponentDefinitionTO" + }, + "transformers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDefinitionTO" + } + }, + "outputs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDefinitionTO" + } + } + } + }, + "ClientStatusTo": { + "type": "object", + "properties": { + "pipeline": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "REPLICATING", + "SYNCHRONISING", + "COMPLETED", + "ERROR" + ] + } + } + }, + "LdioCatalog": { + "type": "object", + "properties": { + "inputs": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + }, + "adapters": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + }, + "transformers": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + }, + "outputs": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/2.12.0/ldio/pipeline-management/pipeline-api.html b/2.12.0/ldio/pipeline-management/pipeline-api.html new file mode 100644 index 000000000..ea1700629 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/pipeline-api.html @@ -0,0 +1 @@ + Pipeline Management API | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Swagger UI

diff --git a/2.12.0/ldio/pipeline-management/pipeline-status.html b/2.12.0/ldio/pipeline-management/pipeline-status.html new file mode 100644 index 000000000..d39f1440c --- /dev/null +++ b/2.12.0/ldio/pipeline-management/pipeline-status.html @@ -0,0 +1,9 @@ + Pipeline Status | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Pipeline Status

An individual ldio-pipeline can be in one of several different statuses. These different statuses and their behaviour are dependent on the input component of the pipeline.

Overview Of The Status Flow

graph LR
+;
+    INIT --> RUNNING;
+    INIT --> STOPPED;
+    RUNNING --> STOPPED;
+    RUNNING --> HALTED;
+    HALTED --> RUNNING;
+    HALTED --> STOPPED;
+

The above diagram shows the flow between the different statuses of the pipeline.

INIT

The startup step of the ldio pipeline. This is the preparation step before the input component can receive data and pass it on to the rest of the pipeline. In most components this step will take little time. The only exception for now is the client-connector. It is not possible to pause the pipeline while in this state.

RUNNING

This status indicates that the ldio pipeline is running and that the input component is ready to or currently receiving or fetching data. This is the only state in which the pipeline can be paused.

HALTED

Every ldio pipeline can be paused, the exact behavior of which depends on the ldio input component used. A more in depth explanation can be found on the pages for the individual input components. Currently, the HALTED status can only be reached through manually pausing the pipeline through the pipeline-api.

STOPPED

When a pipeline is deleted, it will first change to the STOPPED status, this ensures the state is correctly saved in stateful components and that the entire pipeline can be gracefully shutdown. This status will only last a short while before the pipeline is deleted and the status can no longer be queried. The pipeline can be stopped from any other status.

Status Change Source

The ldio pipeline keeps track of if the last status change was triggered manually or automatic. Manually changing the status can be done through the pipeline-api. When in the RUNNING state, this indicates if the pipeline has been started (automatic) or unpaused (manual).


diff --git a/2.12.0/ldio/pipeline-management/startup-config.html b/2.12.0/ldio/pipeline-management/startup-config.html new file mode 100644 index 000000000..d2d758ed2 --- /dev/null +++ b/2.12.0/ldio/pipeline-management/startup-config.html @@ -0,0 +1,39 @@ + Startup Configuration | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Startup Configuration

On startup, pipelines can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml) that looks as follows:

orchestrator:
+  pipelines:
+    - name: my-first-pipeline
+      input:
+        name: name of LDI Input
+        config:
+          foo: bar
+        adapter:
+          name: name of LDI Adapter
+          config:
+            foo: bar
+      transformers:
+        - name: name of LDI Transformer
+          config:
+            foo: bar
+      outputs:
+        - name: name of LDI Output
+          config:
+            foo: bar
+

Since the introduction of dynamic pipelines

Since version 2.1.0, it is possible to manage pipelines on the fly. If pipelines must be instantiated on startup, those pipelines can be added to a configured directory.

First of all, to configure the directory, the /ldio/application.yml should look like this:

orchestrator:
+  directory: <PIPELINE_DIRECTORY>
+

The folder contains a yaml file for each pipeline. It is the preferred way to call the file the same way as the name of the pipeline, in this case, that would be my-first-pipeline.yml:

name: my-first-pipeline
+input:
+  name: name of LDI Input
+  config:
+    foo: bar
+  adapter:
+    name: name of LDI Adapter
+    config:
+      foo: bar
+transformers:
+  - name: name of LDI Transformer
+    config:
+      foo: bar
+outputs:
+  - name: name of LDI Output
+    config:
+      foo: bar
+

diff --git a/index.html b/index.html index d2a048c7a..40ab16c6a 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Linked Data Interactions \ No newline at end of file +Linked Data Interactions

Linked Data Interactions

Documentation Links (LATEST)

\ No newline at end of file diff --git a/latest/assets/js/just-the-docs.js b/latest/assets/js/just-the-docs.js index 51df53812..9a8ac30ba 100644 --- a/latest/assets/js/just-the-docs.js +++ b/latest/assets/js/just-the-docs.js @@ -55,7 +55,7 @@ function initNav() { function initSearch() { var request = new XMLHttpRequest(); - request.open('GET', '/VSDS-Linked-Data-Interactions/2.11.0/assets/js/search-data.json', true); + request.open('GET', '/VSDS-Linked-Data-Interactions/2.12.0/assets/js/search-data.json', true); request.onload = function(){ if (request.status >= 200 && request.status < 400) { @@ -434,7 +434,7 @@ jtd.getTheme = function() { jtd.setTheme = function(theme) { var cssFile = document.querySelector('[rel="stylesheet"]'); - cssFile.setAttribute('href', '/VSDS-Linked-Data-Interactions/2.11.0/assets/css/just-the-docs-' + theme + '.css'); + cssFile.setAttribute('href', '/VSDS-Linked-Data-Interactions/2.12.0/assets/css/just-the-docs-' + theme + '.css'); } // Scroll site-nav to ensure the link to the current page is visible diff --git a/latest/assets/js/search-data.json b/latest/assets/js/search-data.json index 7935869ab..39ac6da3e 100644 --- a/latest/assets/js/search-data.json +++ b/latest/assets/js/search-data.json @@ -2,1029 +2,1029 @@ "doc": "Home", "title": "Linked Data Interactions Project", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/#linked-data-interactions-project", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#linked-data-interactions-project", "relUrl": "/#linked-data-interactions-project" },"1": { "doc": "Home", "title": "Introduction", "content": "The Linked Data Interactions project is an effort to make interactions with Linked Data more fluently by providing easy building blocks. This project was created in function of the VSDS project . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/#introduction", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#introduction", "relUrl": "/#introduction" },"2": { "doc": "Home", "title": "Supported Frameworks", "content": "Currently, we support 2 frameworks to use these building blocks in: . | Linked Data Interactions Orchestrator: A lightweight application maintained by the LDI team. | Apache Nifi: A powerful system to easily process and distribute data | . Component support over frameworks . As the LDI team is rather small and focused on supporting the VSDS project, we sometimes have to postpone full integration of our building blocks in all supported frameworks. However, since the LDI project is open source, feel free to contribute and/or create issues at our GitHub project . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/#supported-frameworks", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/#supported-frameworks", "relUrl": "/#supported-frameworks" },"3": { "doc": "Home", "title": "Home", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/", "relUrl": "/" },"4": { "doc": "Basic Http In to Console", "title": "Basic Http In to Console", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex1-basicHttp", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp", "relUrl": "/ldio/examples/ex1-basicHttp" },"5": { "doc": "Basic Http In to Console", "title": "Used Components", "content": ". | Http In | Console Out | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex1-basicHttp#used-components", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#used-components", "relUrl": "/ldio/examples/ex1-basicHttp#used-components" },"6": { "doc": "Basic Http In to Console", "title": "Setup", "content": "For this setup, we will start with a Http Listener who will take in data and write it back out via the console . ldio.config.yaml: . orchestrator: pipelines: - name: data description: \"This pipeline uses a HTTP listener to read incoming RDF data and writes them to the console\" input: name: Ldio:HttpIn adapter: name: Ldio:RdfAdapter outputs: - name: Ldio:ConsoleOut . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex1-basicHttp#setup", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#setup", "relUrl": "/ldio/examples/ex1-basicHttp#setup" },"7": { "doc": "Basic Http In to Console", "title": "Execution", "content": "We can now post the following data to http://{hostname}:{port}/data whilst including the header Content-Type: application/n-quads : . { \"@context\": \"http://schema.org/\", \"@type\": \"Person\", \"name\": \"Jane Doe\", \"jobTitle\": \"Professor\", \"telephone\": \"(425) 123-4567\", \"url\": \"http://www.janedoe.com\" } . If done successfully, you will see in the console the converted model which defaults to application/n-quads: . _:b0 <http://schema.org/jobTitle> \"Professor\" . _:b0 <http://schema.org/name> \"Jane Doe\" . _:b0 <http://schema.org/telephone> \"(425) 123-4567\" . _:b0 <http://schema.org/url> <http://www.janedoe.com> . _:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex1-basicHttp#execution", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex1-basicHttp#execution", "relUrl": "/ldio/examples/ex1-basicHttp#execution" },"8": { "doc": "Scraping an API", "title": "Scraping an API", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex2-scrape-api", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api", "relUrl": "/ldio/examples/ex2-scrape-api" },"9": { "doc": "Scraping an API", "title": "Used Components", "content": ". | Http In Poller | RML Adapter | Version Object Creator | Console Out | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex2-scrape-api#used-components", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#used-components", "relUrl": "/ldio/examples/ex2-scrape-api#used-components" },"10": { "doc": "Scraping an API", "title": "Setup", "content": "For this setup, we will periodically scrape a public API, map it with RML to Linked Data, Transform it to a Version Object and write it to console. RML Mapping . Since RML can sometimes be hard on human eyes, we’ll convert our YARRRML to RML via Matey. Through this, we can convert this YARRRML to the following RML. prefixes: ex: \"http://example.com/\" cs: \"http://www.cheapshark.com/\" ldi: \"http://www.vlaanderen.be/ns/ldi#\" mappings: person: sources: - ['deals.json~jsonpath', '$[*]'] s: http://www.cheapshark.com/gamedeals/$(gameID) g: http://www.cheapshark.com/gamedeals/$(gameID)/$(lastChange) po: - [a, cs:GameDeal] - [cs:title, $(title)] - [cs:metacriticLink, $(metacriticLink)] - [cs:thumb, $(thumb)] - p: cs:releaseDate o: function: ldi:epochToIso8601 parameters: - [ldi:epoch, $(releaseDate) ] datatype: xsd:DateTime - p: cs:lastChange o: function: ldi:epochToIso8601 parameters: - [ldi:epoch, $(lastChange) ] datatype: xsd:DateTime - [cs:isOnSale, $(isOnSale), xsd:Boolean] - [cs:normalPrice, $(normalPrice), xsd:Double] - [cs:salePrice, $(salePrice), xsd:Double] . mapping.ttl . Let’s save the mapping.ttl in our current directory. ldio.config.yaml: . orchestrator: pipelines: - name: data input: name: Ldio:HttpInPoller config: url: https://www.cheapshark.com/api/1.0/deals?pageSize=1000 interval: PT30M adapter: name: Ldio:RmlAdapter config: mapping: \"mapping.ttl\" transformers: - name: Ldio:VersionObjectCreator config: date-observed-property: \"http://www.cheapshark.com/lastChange\" member-type: \"http://www.cheapshark.com/GameDeal\" generatedAt-property: \"https://w3id.org/ldes#timestampPath\" versionOf-property: \"https://w3id.org/ldes#versionOfPath\" outputs: - name: Ldio:ConsoleOut config: content-type: text/turtle . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex2-scrape-api#setup", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#setup", "relUrl": "/ldio/examples/ex2-scrape-api#setup" },"11": { "doc": "Scraping an API", "title": "Execution", "content": "Once started, you should be seeing data in your console similar to . <http://www.cheapshark.com/gamedeals/157072/2023-06-28T21:31:20.000Z> a <http://www.cheapshark.com/GameDeal> ; <http://www.cheapshark.com/isOnSale> \"1\"^^<http://www.w3.org/2001/XMLSchema#Boolean> ; <http://www.cheapshark.com/lastChange> \"2023-06-28T21:31:20.000Z\"^^<http://www.w3.org/2001/XMLSchema#DateTime> ; <http://www.cheapshark.com/metacriticLink> \"/game/pc/one-piece-burning-blood---gold-edition\" ; <http://www.cheapshark.com/normalPrice> \"74.98\"^^<http://www.w3.org/2001/XMLSchema#Double> ; <http://www.cheapshark.com/releaseDate> \"2016-09-01T00:00:00.000Z\"^^<http://www.w3.org/2001/XMLSchema#DateTime> ; <http://www.cheapshark.com/salePrice> \"6.45\"^^<http://www.w3.org/2001/XMLSchema#Double> ; <http://www.cheapshark.com/thumb> <https://gamersgatep.imgix.net/a/3/4/026d064cc7e1fb721f497398a3435dfcfbe0c43a.jpg?auto=&w=> ; <http://www.cheapshark.com/title> \"ONE PIECE BURNING BLOOD GOLD EDITION\" ; <https://w3id.org/ldes#timestampPath> \"2023-06-28T21:31:20.000Z\"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; <https://w3id.org/ldes#versionOfPath> <http://www.cheapshark.com/gamedeals/157072> . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex2-scrape-api#execution", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex2-scrape-api#execution", "relUrl": "/ldio/examples/ex2-scrape-api#execution" },"12": { "doc": "Enrich a model", "title": "Enrich A Model", "content": "As part of this example, we will store some Car data in a Graph Database. We will later use that data to extend our user data Model to include the Car data. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex3-enrich-model#enrich-a-model", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#enrich-a-model", "relUrl": "/ldio/examples/ex3-enrich-model#enrich-a-model" },"13": { "doc": "Enrich a model", "title": "Used Components", "content": ". | Http In | RDF Adapter | Console Out | Repository Sink | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex3-enrich-model#used-components", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#used-components", "relUrl": "/ldio/examples/ex3-enrich-model#used-components" },"14": { "doc": "Enrich a model", "title": "Setup", "content": "For this setup, we will have two pipelines: . | A to-graph pipeline that will take in our “Car” Linked Data and send it straight to a GraphDB | A enriched pipeline that will extend the data with the saved car data | . RDF4J Server . To save the “Car” data, we first need to set up a GraphDB Server. This can be done by mounting a rdf4j workbench image. docker run -d -p 8081:8080 -e JAVA_OPTS=\"-Xms1g -Xmx4g\" eclipse/rdf4j-workbench:latest . Once spun up, a simple repository can be configured via doing the following curl command: . test-db.ttl: . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix rep: <http://www.openrdf.org/config/repository#>. @prefix sr: <http://www.openrdf.org/config/repository/sail#>. @prefix sail: <http://www.openrdf.org/config/sail#>. @prefix ms: <http://www.openrdf.org/config/sail/memory#>. [] a rep:Repository ; rep:repositoryID \"test\" ; rdfs:label \"test memory store\" ; rep:repositoryImpl [ rep:repositoryType \"openrdf:SailRepository\" ; sr:sailImpl [ sail:sailType \"openrdf:MemoryStore\" ; ms:persist true ; ms:syncDelay 120 ] ]. curl -X PUT -H \"Content-Type: text/turtle\" --data-binary @test-db.ttl http://localhost:8081/rdf4j-server/repositories/test . LDIO . ldio.config.yaml: . orchestrator: pipelines: - name: \"to-graph\" input: name: \"Ldio:HttpIn\" adapter: name: \"Ldio:RdfAdapter\" outputs: - name: \"Ldio:RepositoryMaterialiser\" config: sparql-host: http://localhost:8081/rdf4j-server repository-id: test - name: \"enriched\" input: name: \"Ldio:HttpIn\" adapter: name: \"Ldio:RdfAdapter\" transformers: - name: \"Ldio:SparqlConstructTransformer\" config: query: \" PREFIX schema: <http://schema.org/> CONSTRUCT { ?s ?p ?o . ?car ?cp ?co . } WHERE { ?s ?p ?o . ?s schema:hasCar ?car SERVICE <http://localhost:8081/rdf4j-server/repositories/test> { ?car ?cp ?co . } } \" outputs: - name: \"Ldio:ConsoleOut\" . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex3-enrich-model#setup", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#setup", "relUrl": "/ldio/examples/ex3-enrich-model#setup" },"15": { "doc": "Enrich a model", "title": "Execution", "content": "1. Ingestion of Car Data . First, we will post these three turtle files to our “to-graph” pipeline at endpoint http://localhost:8080/to-graph with the Content-Type header set to ‘text/turtle’ . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Volvo/XC40> a schema:Car ; schema:brand \"Volvo\"^^xsd:string ; schema:max-speed \"180\"^^xsd:integer ; schema:model \"XC40\"^^xsd:string . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Ferrari/F40> a schema:Car ; schema:brand \"Ferrari\"^^xsd:string ; schema:max-speed \"315\"^^xsd:integer ; schema:model \"F40\"^^xsd:string . @prefix schema: <http://schema.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/cars/Reliant/Robin> a schema:Car ; schema:brand \"Reliant\"^^xsd:string ; schema:max-speed \"136\"^^xsd:integer ; schema:model \"Robin\"^^xsd:string . 2. Send un-enriched member to pipeline . Secondly, we will post our un-enriched User model to our “enriched” pipeline at endpoint http://localhost:8080/enriched with the Content-Type header set to ‘text/turtle’. This pipeline will not only include the posted statements, but will include the models from the GraphDB based on their URI. @prefix schema: <http://schema.org/> . <http://example.com/people/SpideyBoy> schema:hasCar <http://example.com/cars/Ferrari/F40>, <http://example.com/cars/Volvo/XC40> ; schema:jobTitle \"Spidey Boy\" ; schema:name \"Peter Parker\" ; a schema:Person . 3. Result: an Enriched Model . After posting the User model, you should be seeing data in your console similar to . @prefix Ferrari: <http://example.com/cars/Ferrari/> . @prefix Volvo: <http://example.com/cars/Volvo/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix schema: <http://schema.org/> . Volvo:XC40 rdf:type schema:Car ; schema:brand \"Volvo\" ; schema:max-speed 180 ; schema:model \"XC40\" . <http://example.com/people/SpideyBoy> rdf:type schema:Person ; schema:hasCar Ferrari:F40 , Volvo:XC40 ; schema:jobTitle \"Spidey Boy\" ; schema:name \"Peter Parker\" . Ferrari:F40 rdf:type schema:Car ; schema:brand \"Ferrari\" ; schema:max-speed 315 ; schema:model \"F40\" . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex3-enrich-model#execution", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model#execution", "relUrl": "/ldio/examples/ex3-enrich-model#execution" },"16": { "doc": "Enrich a model", "title": "Enrich a model", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/ex3-enrich-model", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/ex3-enrich-model", "relUrl": "/ldio/examples/ex3-enrich-model" },"17": { "doc": "Examples", "title": "Linked Data Interactions Orchestrator Examples", "content": "Through the table of contents, you will find examples of the LDIO config that can be placed inside the ldio.config.yml to get the desired results. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/index#linked-data-interactions-orchestrator-examples", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/index#linked-data-interactions-orchestrator-examples", "relUrl": "/ldio/examples/index#linked-data-interactions-orchestrator-examples" },"18": { "doc": "Examples", "title": "Examples", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/examples/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/examples/index", "relUrl": "/ldio/examples/index" },"19": { "doc": "The Linked Data Interactions Orchestrator", "title": "The Linked Data Interactions Orchestrator", "content": "A lightweight application maintained by the LDI team. Its creation came when a more lightweight alternative for Apache NiFi was needed. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index", "relUrl": "/ldio/index" },"20": { "doc": "The Linked Data Interactions Orchestrator", "title": "Docker Compose", "content": "The easiest way to start working with the LDIO is by using Docker. The image is located on the Docker Hub. To set up your environment, start by creating a new folder dedicated to your LDIO project. Within this folder, create two files: a docker-compose.yml and a YAML configuration file. The YAML file can be named according to your preference and can be added to the volume bindings pointing to the ldio/application.yml file. To enable Swagger UI, debug logging, or monitoring, please follow the instructions provided below on how to incorporate them into the LDIO YAML configuration file. docker-compose.yml: . version: '3.3' services: ldio-workbench: container_name: ldio-workbench image: ldes/ldi-orchestrator:2.4.0-SNAPSHOT volumes: - ./ldio.config.yml:/ldio/application.yml:ro ports: - \"<port>:8080\" . Once configured with the LDIO config, execute the command . docker compose up . If any extra files are required for a processor (mapping/queries/…), you can add them in your volume binding pointing to the ldio folder as follows: . Note that the name given for the file can be whatever, as long as it is unique. - ./file.extension:/ldio/file.extension:ro . If any custom processors have been created, you can add the jars in your volume binding pointing to the ldio/lib folder as follows: . Note that the name given for the jar file can be whatever, as long as it is unique. - <path to custom processor>:/ldio/lib/custom-processor.jar:ro . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/index#docker-compose", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#docker-compose", "relUrl": "/ldio/index#docker-compose" },"21": { "doc": "The Linked Data Interactions Orchestrator", "title": "Enable swagger UI", "content": "To use the swagger UI on your own LDIO deployment you can add the below config, and go to <base-url>/v1/swagger. springdoc: swagger-ui: path: /v1/swagger . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/index#enable-swagger-ui", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#enable-swagger-ui", "relUrl": "/ldio/index#enable-swagger-ui" },"22": { "doc": "The Linked Data Interactions Orchestrator", "title": "LDIO DEBUG Logging", "content": "To enable logging the input model for a . | LDIO Adapter | LDIO Transformer | LDIO Output | . Make sure you . | Add the following property in your application config: logging: level: be.vlaanderen.informatievlaanderen: DEBUG . | Add the debug: true property to your transformer or output config. | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/index#ldio-debug-logging", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#ldio-debug-logging", "relUrl": "/ldio/index#ldio-debug-logging" },"23": { "doc": "The Linked Data Interactions Orchestrator", "title": "LDIO Logging & Monitoring", "content": "To provide a better insight in the workings in the LDIO, we expose a prometheus endpoint (/actuator/prometheus) that encloses some metrics (with included tags): . | ldio_data_in_total: Number (Amount of items passed at the start of Transformer Pipeline) . | pipeline: String (Refers to the pipeline name) | ldio_type: String (Refers to the LDIO Input Type of pipeline) | . | ldio_data_out_total: Number (Amount of items passed at the end of Transformer Pipeline) . | pipeline: String (Refers to the pipeline name) | . | . To consult these metrics, make sure the prometheus endpoint is enabled by setting the following setting: . management: endpoints: web: exposure: include: - prometheus . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/index#ldio-logging--monitoring", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/index#ldio-logging--monitoring", "relUrl": "/ldio/index#ldio-logging--monitoring" },"24": { "doc": "LDIO Adapters", "title": "Linked Data Orchestrator Adapters", "content": "Adapters are be used in conjunction with the LDI Input. They will transform the provided content into and internal Linked Data model and sends it down the pipeline for further processing. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/index#linked-data-orchestrator-adapters", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index#linked-data-orchestrator-adapters", "relUrl": "/ldio/ldio-adapters/index#linked-data-orchestrator-adapters" },"25": { "doc": "LDIO Adapters", "title": "Overview", "content": "| Adapter | Description | Inputs | Advantages | Disadvantages | . | JSON to JSON-LD | Receives JSON messages and adds linked data context to transform the messages to JSON-LD | . | JSON | . | . | Easy to set up: plug in context | . | . | Only works with JSON as input | Slower performance when deserializing model | . | . | RDF | Takes in an RDF string and converts it into an internal linked data model | . | RDF string | . | . | Easy to set up: no configuration needed | . | . | Only works with RDF as input | Only supports valid RDF MIME types | . | . | RML | Transform a non-linked data object (JSON/CSV/XML) to RDF object | . | JSON | CSV | XML | . | . | Most powerful adapter | Can convert multiple input objects | . | . | RML knowledge needed to do mapping | . | . | NGSIv2 to NGSI-LD | Converts NGSIv2 to an NGSI-LD model | . | NGSIv2 (JSON) | . |   | . | Only works with NGSIv2 as input | Slower performance when deserializing model | . | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/index#overview", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index#overview", "relUrl": "/ldio/ldio-adapters/index#overview" },"26": { "doc": "LDIO Adapters", "title": "LDIO Adapters", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/index", "relUrl": "/ldio/ldio-adapters/index" },"27": { "doc": "Json To JsonLd Transformer", "title": "LDIO Json To JsonLd Adapter", "content": "Ldio:JsonToLdAdapter . The json-to-ld-adapter receives json messages and adds a linked data context to transform the messages to json-ld. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-json-to-json-ld#ldio-json-to-jsonld-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld#ldio-json-to-jsonld-adapter", "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld#ldio-json-to-jsonld-adapter" },"28": { "doc": "Json To JsonLd Transformer", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | context | URI of json-ld context Or an JSON-LD context object. | Yes | N/A | http://example.com/my-api | URI or Json Object (containing “@context” entry) | . | force-content-type | Flag that indicates if application/json should be forced as mime type. | No | false | true | true or false | . | max-jsonld-cache-capacity | After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). | No | 100 | 100 | Integer | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-json-to-json-ld#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld#config", "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld#config" },"29": { "doc": "Json To JsonLd Transformer", "title": "Json To JsonLd Transformer", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-json-to-json-ld", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-json-to-json-ld", "relUrl": "/ldio/ldio-adapters/ldio-json-to-json-ld" },"30": { "doc": "NGSIv2 To LD Adapter", "title": "LDIO NGSIv2 To LD Adapter", "content": "Ldio:NgsiV2ToLdAdapter . This adapter will transform a NGSI V2 input into NGSI LD. Jackson is used to first deserialize the input to java objects which can then be serialized to the LD format. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#ldio-ngsiv2-to-ld-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#ldio-ngsiv2-to-ld-adapter", "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#ldio-ngsiv2-to-ld-adapter" },"31": { "doc": "NGSIv2 To LD Adapter", "title": "Notes", "content": "The algorithm applies several deviations from the standard formats. These deviations are: . | The observedAt attribute is added to every property, its value is determined by the dateObserved attribute of the input. | The timestamp attribute of a metadata property normally determines the observedAt property but is ignored in this algorithm. | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#notes", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#notes", "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#notes" },"32": { "doc": "NGSIv2 To LD Adapter", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | core-context | URI of a core json-ld context. | Yes | N/A | http://example.com/my-api | HTTP and HTTPS urls | . | ld-context | URI of a custom json-ld context. | No | N/A | http://example.com/my-api | HTTP and HTTPS urls | . | data-identifier | Identifier that points to data in provided json. | Yes | N/A | data | String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld#config", "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld#config" },"33": { "doc": "NGSIv2 To LD Adapter", "title": "NGSIv2 To LD Adapter", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-ngsiv2-to-ld", "relUrl": "/ldio/ldio-adapters/ldio-ngsiv2-to-ld" },"34": { "doc": "RDF Adapter", "title": "LDIO RDF Adapter", "content": "Ldio:RdfAdapter . As the most basic adapter, the RDF Adapter will take in an RDF string and convert it into an internal Linked Data model based on the given content type. This internal Linked Data model is then available for utilization in various other components, such as transformers and outputs. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rdf-adapter#ldio-rdf-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#ldio-rdf-adapter", "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#ldio-rdf-adapter" },"35": { "doc": "RDF Adapter", "title": "Notes", "content": "This Adapter only supports valid RDF mime types . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rdf-adapter#notes", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#notes", "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#notes" },"36": { "doc": "RDF Adapter", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | max-jsonld-cache-capacity | After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). | No | 100 | 100 | Integer | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rdf-adapter#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter#config", "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter#config" },"37": { "doc": "RDF Adapter", "title": "RDF Adapter", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rdf-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rdf-adapter", "relUrl": "/ldio/ldio-adapters/ldio-rdf-adapter" },"38": { "doc": "RML Adapter", "title": "LDIO RML Adapter", "content": "Ldio:RmlAdapter . The RML Adapter allows a user to transform a non-LD object (json/CSV/XML) to an RDF object. This is done by providing a RML mapping file. For more details on how to form a correct RML mapping, visit the RML documentation. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rml-adapter#ldio-rml-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter#ldio-rml-adapter", "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter#ldio-rml-adapter" },"39": { "doc": "RML Adapter", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | mapping | Path to content of RML/content of RML mapping. | Yes | N/A | mapping.ttl | Path/String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rml-adapter#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter#config", "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter#config" },"40": { "doc": "RML Adapter", "title": "RML Adapter", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-adapters/ldio-rml-adapter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-adapters/ldio-rml-adapter", "relUrl": "/ldio/ldio-adapters/ldio-rml-adapter" },"41": { "doc": "LDIO Inputs", "title": "Linked Data Orchestrator Inputs", "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/index#linked-data-orchestrator-inputs", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/index#linked-data-orchestrator-inputs", "relUrl": "/ldio/ldio-inputs/index#linked-data-orchestrator-inputs" },"42": { "doc": "LDIO Inputs", "title": "LDIO Inputs", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/index", "relUrl": "/ldio/ldio-inputs/index" },"43": { "doc": "AMQP In", "title": "LDIO AMQP In", "content": "Ldio:AmqpIn . The LDIO AMQP In listens to messages from an AMQP 1.0 queue. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-amqp-in#ldio-amqp-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#ldio-amqp-in", "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#ldio-amqp-in" },"44": { "doc": "AMQP In", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | remote-url | URI to AMQP queue | Yes | N/A | amqp://server:61616 | In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] | . | queue | Name of the queue | Yes | N/A | quickstart-events | String | . | username | Username used in authentication | Yes | N/A | client | String | . | password | Password used in the authentication | Yes | N/A | secret | String | . | content-type | Content-type suggestion* for received messages of queue | No | application/n-quads | application/n-quads | Any content type supported by Apache Jena | . | When the header of the message contains a “contentType” property, the listener will use the content type provided by the header. | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-amqp-in#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#config", "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#config" },"45": { "doc": "AMQP In", "title": "Example", "content": "input: name: Ldio:AmqpIn config: remote-url: amqp://localhost:61616 username: artemis password: artemis queue: example content-type: application/ld+json . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-amqp-in#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#example", "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#example" },"46": { "doc": "AMQP In", "title": "Pausing", "content": "When paused, this component will not receive any messages from the queue and will start syncing with the queue when unpaused. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-amqp-in#pausing", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in#pausing", "relUrl": "/ldio/ldio-inputs/ldio-amqp-in#pausing" },"47": { "doc": "AMQP In", "title": "AMQP In", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-amqp-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-amqp-in", "relUrl": "/ldio/ldio-inputs/ldio-amqp-in" },"48": { "doc": "HTTP In Poller", "title": "LDIO HTTP In Poller", "content": "Ldio:HttpInPoller . The LDIO Http In Poller is a basic Http Poller that will poll a target URL on a specified interval. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in-poller#ldio-http-in-poller", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#ldio-http-in-poller", "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#ldio-http-in-poller" },"49": { "doc": "HTTP In Poller", "title": "Config", "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | url | Target URL to poll from. | Yes | N/A | http://example.com/my-api | HTTP and HTTPS urls (lists are supported) | . | cron | Cron expression to declare when the polling should take place 1 | Yes2 | N/A | */10 * * * * * | Spring Cron Expression | . | interval | Polling interval declared in ISO 8601 format. | Yes2 | N/A | PT1S | ISO 8601 formatted String | . | continueOnFail | Indicated if continue if polling results in failure | No | true | true | true or false | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Multiple urls . The Http In Poller supports polling multiple endpoints. Example configuration: . name: Ldio:HttpInPoller config: auth: type: API_KEY api-key: my-key api-key-header: X-API-Key url: - https://webhook.site/6cb49dd1-aa05-4e77-8870-f06903805b30 - https://webhook.site/e8078b99-4b09-496d-baa8-8ba309dec6b6 interval: PT3S . When using multiple endpoints, the other config (auth config, interval, etc.) applies to all endpoints. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in-poller#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#config", "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#config" },"50": { "doc": "HTTP In Poller", "title": "Pausing", "content": "When paused, this component will stop making any of the scheduled HTTP-calls. When resumed, it will restart these calls as if the component had been restarted, meaning any configured periods will start counting from the moment the pipeline was resumed instead of when it was originally created. | The cron schedules are in timezone ‘UTC’. ↩ . | Either choose the ‘cron’ option or the ‘interval’. However, the interval property will become deprecated. ↩ ↩2 . | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in-poller#pausing", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller#pausing", "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller#pausing" },"51": { "doc": "HTTP In Poller", "title": "HTTP In Poller", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in-poller", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in-poller", "relUrl": "/ldio/ldio-inputs/ldio-http-in-poller" },"52": { "doc": "HTTP In", "title": "LDIO HTTP In", "content": "Ldio:HttpIn . The LDIO Http In is a basic Http Listener. Data can be written to http://{hostname}:{port}/{pipeline name} . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in#ldio-http-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#ldio-http-in", "relUrl": "/ldio/ldio-inputs/ldio-http-in#ldio-http-in" },"53": { "doc": "HTTP In", "title": "Config", "content": "This component has no required config . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#config", "relUrl": "/ldio/ldio-inputs/ldio-http-in#config" },"54": { "doc": "HTTP In", "title": "Pausing", "content": "When paused, this component will return an 503 response to any HTTP-calls it receives . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in#pausing", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in#pausing", "relUrl": "/ldio/ldio-inputs/ldio-http-in#pausing" },"55": { "doc": "HTTP In", "title": "HTTP In", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-http-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-http-in", "relUrl": "/ldio/ldio-inputs/ldio-http-in" },"56": { "doc": "Kafka In", "title": "LDIO Kafka In", "content": "Ldio:KafkaIn . The LDIO Kafka In listens to messages from a kafka topic. Two security protocols are supported: . | NO SECURITY | SASL SSL PLAIN | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-kafka-in#ldio-kafka-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#ldio-kafka-in", "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#ldio-kafka-in" },"57": { "doc": "Kafka In", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | content-type | Any content type supported by Apache Jena | Yes | N/A | application/n-quads | Any type supported by Apache Jena | . | bootstrap-servers | Comma separated list of uris of the bootstrap servers | Yes | N/A | localhost:9012 | url | . | topics | Names of the topics (comma separated) | Yes | N/A | quickstart-events | String | . | group-id | Group identifier the consumer belongs to | No | generated value | group-1 | String | . | security-protocol | Security protocol to be used to connect to the kafka broker | No | NO_AUTH | SASL_SSL_PLAIN | SASL_SSL_PLAIN or NO_AUTH | . | sasl-jaas-user | Username used in the security protocol | No | null | client | String | . | sasl-jaas-password | Password used in the security protocol | No | null | secret | String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-kafka-in#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#config", "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#config" },"58": { "doc": "Kafka In", "title": "Example", "content": "NO SECURITY . outputs: - name: Ldio:KafkaIn config: content-type: application/n-quads topics: quickstart-events bootstrap-servers: localhost:9092 . SASL SSL PLAIN . outputs: - name: Ldio:KafkaIn config: content-type: application/n-quads topics: quickstart-events bootstrap-servers: localhost:9092 group-id: testing_group security-protocol: SASL_SSL_PLAIN sasl-jaas-user: client sasl-jaas-password: client-secret . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-kafka-in#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#example", "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#example" },"59": { "doc": "Kafka In", "title": "Pausing", "content": "When paused, this component will stop listening to the kafka topics. When resumed, it will try to resync with all topics. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-kafka-in#pausing", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in#pausing", "relUrl": "/ldio/ldio-inputs/ldio-kafka-in#pausing" },"60": { "doc": "Kafka In", "title": "Kafka In", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-kafka-in", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-kafka-in", "relUrl": "/ldio/ldio-inputs/ldio-kafka-in" },"61": { "doc": "LDES Client with Connector", "title": "LDIO Ldes Client Connector", "content": "Ldio:LdesClientConnector . An EDC (Eclipse dataspace Connector) LDIO wrapper component for the ldio ldes client to add EDC support to this component. If you’d like to know how to configure the LDES Client, we refer to the ldio ldes client. The additional functionality provided by this component makes it possible to use the Ldes Client to consume an LDES through an EDC connector. This component exposes two endpoints: . | http://://transfer The Ldio component will start the data transfer with the connector. You have to send the transfer request to the LdioLdesClientConnector instead of the EDC consumer connector. The LDIO Ldes Client Connector will start the transfer with the connector and also keep the transfer alive while consuming the LDES (e.g. request a new token when it expires). | http://://token This endpoint should never be called directly. This is the callback to be provided in the transfer request. The EDC connector will use this callback endpoint to provide the LDES Client with a token. | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector#ldio-ldes-client-connector", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#ldio-ldes-client-connector", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#ldio-ldes-client-connector" },"62": { "doc": "LDES Client with Connector", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | connector-transfer-url | The transfer url of the EDC connector which has to be called to start a transfer | Yes | N/A | http://consumer-connector:29193/management/v2/transferprocesses | HTTP and HTTPS urls | . | proxy-url-to-replace | Makes it possible to proxy a part of the url of the LDES**. Indicates which part of the url should be replaced. | No | empty string | http://ldes-behind-connectors.dev | string | . | proxy-url-replacement | Makes it possible to proxy a part of the url of the LDES**. Indicates the replacement url part. | No | memory | http://consumer-connector:29193 | string | . ** The url mentioned here are the actual url’s used by the LDES Server (hostname). These are included in the results bodies to indicate relations, etc. This is a temporary solution until the client and server support relative urls. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#config", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#config" },"63": { "doc": "LDES Client with Connector", "title": "Examples", "content": "input: name: Ldio:LdesClientConnector config: url: http://consumer-connector:29291/public connector-transfer-url: http://consumer-connector:29193/management/v2/transferprocesses proxy-url-to-replace: http://localhost:8081/devices proxy-url-replacement: http://consumer-connector:29291/public source-format: application/n-quads . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector#examples", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#examples", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#examples" },"64": { "doc": "LDES Client with Connector", "title": "INIT phase", "content": "Contrary to the other ldio-input components, the connector waits in the INIT status for the edc-token and will only progress to the RUNNING status once it has received this token. More on the statuses in ldio can be found here. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector#init-phase", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#init-phase", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#init-phase" },"65": { "doc": "LDES Client with Connector", "title": "Pausing", "content": "When paused, this component will stop processing the current fragment and not make any calls to the server. When resumed, it will continue with the fragment where it stopped and continue as normal. This component can not be paused while waiting for the token. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector#pausing", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector#pausing", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector#pausing" },"66": { "doc": "LDES Client with Connector", "title": "LDES Client with Connector", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client-connector", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client-connector", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client-connector" },"67": { "doc": "LDES Client", "title": "LDIO LDES Client", "content": "The LDES Client is a component which can be used by data consumers to replicate and synchronize an LDES. When replication or synchronization is halted, the LDES Client is able to resume where it has stopped. More information on how consumption of an LDES works can be found here. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client#ldio-ldes-client", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#ldio-ldes-client", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#ldio-ldes-client" },"68": { "doc": "LDES Client", "title": "Processing fragments", "content": "One or more URLs need to be configured in the LDES Client. If more URLs are configured, they need to be part of the same LDES. The configured fragments (URLs) will be processed and all relations will be added to the (non-persisted) queue. As long as the LDES Client runs, new fragments that need to be processed can be added to the queue. The LDES Client will keep track of the mutable and immutable fragments it did already process. When an immutable fragment that already has been processed is added to the queue, it will be ignored. Mutable fragments usually have a max-age set in the Cache-control header. If this isn’t the case, a default expiration interval will be used to set an expiration date on the fragment. When the max-age or default expiration interval of a fragment expires, the fragment will be put into the queue again so that the LDES Client fetches it again. Processing members within fragments . The LDES Client keeps track of the processed members of mutable fragments, to make sure members are only processed once within a fragment. When the fragment is marked as immutable, and no members can be added anymore, the LDES Client will stop keeping track of members processed within that fragment. Filtering . Exactly-once-filter . To have the possibility to filter out already received members, the “exactly-once-filter” can be enabled in configuration. The filter will check whether a member was already processed in other fragments. The IDs of all processed members will be remembered by the filter and when a duplicate member is processed, it will be filtered out before sending it to the output of the Client. Note that this filter can not be enabled with version materialisation. Latest-state-filter . When version materialisation is enabled, state objects that does not represent the latest state can be filter out by enabling the “latest-state-filter” in the configuration. Both the versionOf and the timestamp of the version object members will be remembered by the filter. When a new member with the same versionOf and a timestamp that is before or equal to the latest remembered timestamp, the member will be filtered out. When a member is processed that has a later timestamp than the last remembered member, that last remembered member will be overwritten and the new member will be processed. Flow of the Latest State Filter . flowchart LR ; CLIENT[LDIO LDES Client] --> Version_Object((Version\\n object)); Version_Object --> Latest_State_Filter(Latest State\\nFilter); Latest_State_Filter --> Filtering{Newer then\\n last processed\\n member?}; Filtering -->|Yes| Version_Materialiser(Version\\nMaterialiser); Version_Materialiser --> State_Object((State\\n object)); State_Object --> Sender[Ldio Sender]; Filtering ---->|No| Ignore[Ignore member]; . This Latest State Filter is only available for the version materialiser within the LDIO LDES Client, not for the transformer component . Persistence strategies . The Client offers different ways to persist state of the processed members: . | Strategy | Description | Advantages | Disadvantages | . | Memory | Store the state of members in the memory of the LDES Client | . | Fastest processing | Easiest setup | . | . | Not suitable for large datasets (>500k), heap will overflow | State is lost when the client stops/restarts | . | . | SQLite | A SQLite database is used to store state of members | . | Easy setup | State is not lost between runs | . | . | Slowest processing** | . | . | PostgreSQL | A PostgreSQL database is used to store state of the members | . | Fastest processing for larger datasets | State is not lost between runs | . | . | Database is needed | . | . ** We use a transaction for every processed record and SQLite is limited by the CPU (source). ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client#processing-fragments", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#processing-fragments", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#processing-fragments" },"69": { "doc": "LDES Client", "title": "Config", "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | urls | List of URLs of the LDES data sources | Yes | N/A | http://localhost:8080/my-ldes | HTTP and HTTPS URLs | . | source-format | The ‘Content-Type’ that should be requested to the server | No | text/turtle | application/n-quads | Any type supported by Apache Jena | . | state | ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted | No | memory | sqlite | ‘memory’, ‘sqlite’ or ‘postgres’ | . | keep-state | Indicates if the state should be persisted on shutdown (n/a for in memory states) | No | false | false | true or false | . | enable-exactly-once | Indicates whether a member must be sent exactly once or at least once | No | true | true | true or false | . The default source-format is text/turtle, as this RDF format supports relative URIs. However, if relative URIs are not used, application/n-quads or even the binary format application/rdf+protobuf are better options, as these formats are faster to parse. Setting the keep-state property to true makes it so that the state can not be deleted through the pipeline-management api . Version materialisation properties . | Property | Description | Required | Default | Example | Supported values | . | materialisation.enabled | Indicates if the client should return state-objects (true) or version-objects (false) | No | false | true | true or false | . | materialisation.enable-latest-state | Indicates whether all state or only the latest state must be sent | No | true | false | true or false | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . SQLite properties . | Property | Description | Required | Default | Example | Supported values | . | sqlite.directory | Directory wherein the .db file can be saved | No | N/A | /ldio/sqlite | String | . Postgres properties . | Property | Description | Required | Default | Example | Supported values | . | postgres.url | JDBC URL of the Postgres database | No | N/A | jdbc:postgresql://test.postgres.database.azure.com:5432/sample | String | . | postgres.username | Username used to connect to Postgres database | No | N/A | myUsername@test | String | . | postgres.password | Password used to connect to Postgres database | No | N/A | myPassword | String | . Configuration Examples . input: name: Ldio:LdesClient config: urls: - http://localhost:8080/my-ldes sourceFormat: text/turtle materialisation: enabled: true retries: enabled: true auth: type: OAUTH2_CLIENT_CREDENTIALS client-id: clientId client-secret: secret token-endpoint: http://localhost:8000/token . input: name: Ldio:LdesClient config: urls: - http://localhost:8080/my-ldes sourceFormat: text/turtle retries: enabled: true state: postgres postgres: url: jdbc:postgresql://test.postgres.database.azure.com:5432/sample username: myUsername@test password: myPassword . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#config", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#config" },"70": { "doc": "LDES Client", "title": "Pausing the LDES Client", "content": ". | When paused, the LDES Client will stop processing the current fragment and will not request new fragments from the server. | When resumed, the LDES Client will continue processing the fragment where it has stopped and it will request new fragments form the server. | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client#pausing-the-ldes-client", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client#pausing-the-ldes-client", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client#pausing-the-ldes-client" },"71": { "doc": "LDES Client", "title": "LDES Client", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-inputs/ldio-ldes-client", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-inputs/ldio-ldes-client", "relUrl": "/ldio/ldio-inputs/ldio-ldes-client" },"72": { "doc": "LDIO Outputs", "title": "Linked Data Orchestrator Outputs", "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/index#linked-data-orchestrator-outputs", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/index#linked-data-orchestrator-outputs", "relUrl": "/ldio/ldio-outputs/index#linked-data-orchestrator-outputs" },"73": { "doc": "LDIO Outputs", "title": "LDIO Outputs", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/index", "relUrl": "/ldio/ldio-outputs/index" },"74": { "doc": "AMQP Out", "title": "LDIO AMQP Out", "content": "Ldio:AmqpOut . The LDIO AMQP Out sends messages to an AMQP 1.0 queue. The content-type configured in the rdf-writer.content-type is added as a header to the message with key “contentType”. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-amqp-out#ldio-amqp-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#ldio-amqp-out", "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#ldio-amqp-out" },"75": { "doc": "AMQP Out", "title": "Config", "content": "| Property | Description | Required | Default | Supported values | Example | . | remote-url | URI to AMQP queue | Yes | N/A | In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] | amqp://server:61616 | . | queue | Name of the queue | Yes | N/A | String | quickstart-events | . | username | Username used in authentication | Yes | N/A | String | client | . | password | Password used in the authentication | Yes | N/A | String | secret | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-amqp-out#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#config", "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#config" },"76": { "doc": "AMQP Out", "title": "Example", "content": "outputs: - name: Ldio:AmqpOut config: remote-url: amqp://localhost:61616 username: artemis password: artemis queue: example rdf-writer: content-type: application/n-quads . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-amqp-out#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out#example", "relUrl": "/ldio/ldio-outputs/ldio-amqp-out#example" },"77": { "doc": "AMQP Out", "title": "AMQP Out", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-amqp-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-amqp-out", "relUrl": "/ldio/ldio-outputs/ldio-amqp-out" },"78": { "doc": "Console Out", "title": "LDIO Console Out", "content": "Ldio:ConsoleOut . The LDIO Console Out will output its given model to the console. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-console-out#ldio-console-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out#ldio-console-out", "relUrl": "/ldio/ldio-outputs/ldio-console-out#ldio-console-out" },"79": { "doc": "Console Out", "title": "Config", "content": "RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-console-out#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out#config", "relUrl": "/ldio/ldio-outputs/ldio-console-out#config" },"80": { "doc": "Console Out", "title": "Console Out", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-console-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-console-out", "relUrl": "/ldio/ldio-outputs/ldio-console-out" },"81": { "doc": "HTTP Out", "title": "LDIO HTTP Out", "content": "Ldio:HttpOut . The LDIO HTTP Out is a basic Http Client that will send the given Linked Data model to a target url. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-http-out#ldio-http-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out#ldio-http-out", "relUrl": "/ldio/ldio-outputs/ldio-http-out#ldio-http-out" },"82": { "doc": "HTTP Out", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | endpoint | Target url. | Yes | N/A | http://example.com/endpoint | HTTP and HTTPS urls | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-http-out#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out#config", "relUrl": "/ldio/ldio-outputs/ldio-http-out#config" },"83": { "doc": "HTTP Out", "title": "HTTP Out", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-http-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-out", "relUrl": "/ldio/ldio-outputs/ldio-http-out" },"84": { "doc": "HTTP Sparql Out", "title": "HTTP Sparql Out", "content": "Ldio:HttpSparqlOut . The HTTP SPARQL Out component can be used to write data to a SPARQL host, with Virtuoso as the most common known one. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-http-sparql-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out", "relUrl": "/ldio/ldio-outputs/ldio-http-sparql-out" },"85": { "doc": "HTTP Sparql Out", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | endpoint | The url of the sparql host | Yes | N/A | http://localhost:8890/sparql | URL | . | graph | The graph whereto must be written | No | N/A | http://example.graph.com | String | . | skolemisation.skolemDomain | If the skolem domain is set, skolemisation will be triggered before the triples are written to the sparql host | No | N/A | http://example.org | Any valid IRI | . | replacement.enabled | Whether the old nodes must be replaced by the new ones | No | true | false | Boolean value | . | replacement.depth | How deep the default delete query must delete nested nodes from the existing subject, will be ignored if replacement.deleteFunctionis set | No | 10 | 15 | Integer | . | replacement.deleteFunction | If this property is set, then the default delete function will be overridden with this delete function | No | N/A | DELETE { ?s ?p ?o} WHERE { ?s ?p ?o } | String | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Replacement . Replacement includes that all old nodes from certain subjects must be deleted before the new nodes with the same subject can be inserted. By default, a delete query is constructed by the service that delete all nodes, including nested nodes to a level, specified by the replacement.depth property, deep. If for some reason, the constructed delete query is not sufficient, or the query is too complex, a custom delete query can be configured. This query will override the default query created by the service, which also mean the replacement.depth property will be ignored. Skolemisation . Not all sparql hosts can deal that well with blank nodes, therefore, those nodes can first be skolemised. However, to skolemise nodes, a skolem domain is required, which can be set by the skolemisation.skolemDomain property, which directly enables the service. More information about skolemisation can be found on the skolemisation-transformer page . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-http-sparql-out#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-http-sparql-out#config", "relUrl": "/ldio/ldio-outputs/ldio-http-sparql-out#config" },"86": { "doc": "Kafka Out", "title": "LDIO Kafka Out", "content": "Ldio:KafkaOut . The LDIO Kafka Out sends messages to a kafka topic. Two security protocols are supported: . | NO SECURITY | SASL SSL PLAIN | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-kafka-out#ldio-kafka-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#ldio-kafka-out", "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#ldio-kafka-out" },"87": { "doc": "Kafka Out", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | bootstrap-servers | Comma separated list of uris of the bootstrap servers | Yes | N/A | localhost:9012 | url | . | topic | Name of the topic | Yes | N/A | quickstart-events | String | . | key-property-path | Optional property path to extract the kafka key from the data model | No | null | http://purl.org/dc/terms/title | ARQ property path | . | security-protocol | Security protocol to be used to connect to the kafka broker | No | NO_AUTH | SASL_SSL_PLAIN | SASL_SSL_PLAIN or NO_AUTH | . | sasl-jaas-user | Username used in the security protocol | No | null | client | String | . | sasl-jaas-password | Password used in the security protocol | No | null | secret | String | . | frame-type | RDF type of the objects that need to be included for JSON-LD framing. | No | N/A | http://purl.org/goodrelations/v1#Offering | Any RDF type | . RDF Writer Properties . | Property | Description | Required | Default | Supported values | Example | . | rdf-writer.content-type | Target content type. | No | text/turtle | Any type supported by Apache Jena | application/ld+json | . | rdf-writer.frame | Additional JSON-LD Frame to format the outputted JSON-LD Object. | No | N/A | Any valid JSON Object that describes a JSON-LD Frame | See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame | . Example RDF Writer config Format as N-Quads: . config: rdf-writer: content-type: application/n-quads . Format as JSON-LD with given frame: . config: rdf-writer: content-type: application/ld+json frame: | { \"@context\": {\"@vocab\": \"http://example.org/\"}, \"@type\": \"Library\", \"contains\": { \"@type\": \"Book\", \"contains\": { \"@type\": \"Chapter\" } } } . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-kafka-out#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#config", "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#config" },"88": { "doc": "Kafka Out", "title": "Example", "content": "NO SECURITY . outputs: - name: Ldio:KafkaOut config: bootstrap-servers: localhost:9092 topic: quickstart-events key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title> . SASL SSL PLAIN . outputs: - name: Ldio:KafkaOut config: bootstrap-servers: localhost:9092 topic: quickstart-events key-property-path: <https://purl.org/geojson/vocab#properties>/<http://purl.org/dc/terms/title> security-protocol: SASL_SSL_PLAIN sasl-jaas-user: client sasl-jaas-password: client-secret . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-kafka-out#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out#example", "relUrl": "/ldio/ldio-outputs/ldio-kafka-out#example" },"89": { "doc": "Kafka Out", "title": "Kafka Out", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-kafka-out", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-kafka-out", "relUrl": "/ldio/ldio-outputs/ldio-kafka-out" },"90": { "doc": "Repository Sink", "title": "Repository Sink", "content": "Ldio:RepositorySink . The repository Sink is used to flush an LDES stream into a triplestore. Any triplestore that supports the RDF4J remote repository API can be used. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-repository-sink", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-repository-sink", "relUrl": "/ldio/ldio-outputs/ldio-repository-sink" },"91": { "doc": "Repository Sink", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | sparql-host | The url of the server hosting the repository | Yes | N/A | http://repositoryServer | URL | . | repository-id | The rdf4j repository id | Yes | N/A | repoId | String | . | named-graph | If set, the triples will be written to this named graph | No | N/A | http://name | Any valid IRI | . | batch-size | Number of members or models that will be committed at once | No | 500 | 500 | Integer | . | batch-timeout | If the batch size has not been reached within this number of milliseconds, the members will be committed anyway. | No | 120000 | 30000 | Integer | . Batching . To increase the performance of this materialiser, members will be committed in batch to the triple store. However, it’s important to notice that this can have an impact on the data integrity. First of all, there could be a delay, with a maximum delay of the configured batch timeout, when the triple store will be up-to-date. Secondly, if something goes wrong halfway of a batch, all the members in that batch will not be committed to triple story and thus will be gone. So the more important data integrity is, the lower the batch-size and batch-timeout should be configured. If a more performant repository materialiser is desired, batch-size and batch-timeout should be configured somewhat higher. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-outputs/ldio-repository-sink#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-outputs/ldio-repository-sink#config", "relUrl": "/ldio/ldio-outputs/ldio-repository-sink#config" },"92": { "doc": "LDIO Transformers", "title": "Linked Data Interactions Orchestrator Transformers", "content": "The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders. Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/index#linked-data-interactions-orchestrator-transformers", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/index#linked-data-interactions-orchestrator-transformers", "relUrl": "/ldio/ldio-transformers/index#linked-data-interactions-orchestrator-transformers" },"93": { "doc": "LDIO Transformers", "title": "LDIO Transformers", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/index", "relUrl": "/ldio/ldio-transformers/index" },"94": { "doc": "Change Detection Filter", "title": "LDIO Change Detection Filter", "content": "Ldio:ChangeDetectionFilter . The LDIO Change Detection Filter, which is in fact a transformer, keeps track of each member with the same subject if the state has changed. If not, the member will be ignored, otherwise the member will be sent further through the pipeline. This can come in handy when you do not want to spam your server for example with duplicate state objects. Flow of the Change Detection Filter . flowchart LR ; PREV_TRANSFORMER[Previous transformer] --> State_Object((State\\n object)); State_Object --> FILTER(Change Detection\\nFilter); FILTER --> HASH((Hashed\\n model)) HASH --> Filtering{Contains\\n member with\\n same subject and\\n same hashed\\n model?}; Filtering -->|No| NEXT_TRANSFORMER[Next\\n transformer]; Filtering -->|Yes| Ignore[Ignore member]; . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-change-detection-filter#ldio-change-detection-filter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter#ldio-change-detection-filter", "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter#ldio-change-detection-filter" },"95": { "doc": "Change Detection Filter", "title": "Config", "content": "General properties . | Property | Description | Required | Default | Example | Supported values | . | state | ‘memory’, ‘sqlite’ or ‘postgres’ to indicate how the state should be persisted | No | memory | sqlite | ‘memory’, ‘sqlite’ or ‘postgres’ | . | keep-state | Indicates if the state should be persisted on shutdown (n/a for in memory states) | No | false | false | true or false | . SQLite properties . | Property | Description | Required | Default | Example | Supported values | . | sqlite.directory | Directory wherein the .db file can be saved | No | N/A | /ldio/sqlite | String | . Postgres properties . | Property | Description | Required | Default | Example | Supported values | . | postgres.url | JDBC URL of the Postgres database | No | N/A | jdbc:postgresql://test.postgres.database.azure.com:5432/sample | String | . | postgres.username | Username used to connect to Postgres database | No | N/A | myUsername@test | String | . | postgres.password | Password used to connect to Postgres database | No | N/A | myPassword | String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-change-detection-filter#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter#config", "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter#config" },"96": { "doc": "Change Detection Filter", "title": "Change Detection Filter", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-change-detection-filter", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-change-detection-filter", "relUrl": "/ldio/ldio-transformers/ldio-change-detection-filter" },"97": { "doc": "GeoJson To WKT Transformer", "title": "LDIO GeoJson To WKT Transformer", "content": "Ldio:GeoJsonToWktTransformer . The GeoJson to Wkt Transformer will transform any GeoJson statements (with predicate https://purl.org/geojson/vocab#geometry) to a wkt string. When the transform-to-rdf+wkt-enabled configuration is enabled, GeoJSON statements will be converted into RDF+WKT format. For example: . { \"https://purl.org/geojson/vocab#geojson:geometry\": { \"@type\": \"Point\", \"https://purl.org/geojson/vocab#geojson:coordinates\": [ 100.0, 0.0 ] } } . becomes: . { \"http://www.w3.org/ns/locn#geometry\": { \"@value\": \"POINT (100 0)\", \"@type\": \"http://www.opengis.net/ont/geosparql#wktLiteral\" } } . With transform-to-rdf+wkt-enabled set to true it becomes: . @prefix geojson: <https://purl.org/geojson/vocab#> . @prefix sf: <http://www.opengis.net/ont/sf#> . @prefix geo: <http://www.opengis.net/ont/geosparql#> . @prefix locn: <http://www.w3.org/ns/locn#> . <http://example.com/features/point> a geojson:Feature; locn:geometry [ a sf:Point; geo:asWKT \"POINT (100 0)\"^^geo:wktLiteral ] . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-geojson-to-wkt#ldio-geojson-to-wkt-transformer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt#ldio-geojson-to-wkt-transformer", "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt#ldio-geojson-to-wkt-transformer" },"98": { "doc": "GeoJson To WKT Transformer", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | transform-to-rdf+wkt-enabled | Transform GeoJson to RDF+WKT format, defaults to false and the default format is WKT | No | false | false | true/false | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-geojson-to-wkt#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt#config", "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt#config" },"99": { "doc": "GeoJson To WKT Transformer", "title": "GeoJson To WKT Transformer", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-geojson-to-wkt", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-geojson-to-wkt", "relUrl": "/ldio/ldio-transformers/ldio-geojson-to-wkt" },"100": { "doc": "Http Enricher Transformer", "title": "LDIO Http Enricher", "content": "Ldio:HttpEnricher . A transformer which allows to send a GET or POST HTTP request to a dynamic URL provided by the model. The response is converted to linked data and added to the incoming model. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-http-enricher#ldio-http-enricher", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher#ldio-http-enricher", "relUrl": "/ldio/ldio-transformers/ldio-http-enricher#ldio-http-enricher" },"101": { "doc": "Http Enricher Transformer", "title": "Config", "content": "| Property | Description | Required | Default | Supported values | Example | . | adapter.name | This transformer requires an ldio-adapter to convert the responses to linked data. | Yes | N/A | Paths of supported LDIO Adapters | Ldio:RdfAdapter | . | adapter.config.xxx | Optional config that may be required by the adapter | No | N/A | Paths of supported LDIO Adapters | Ldio:RdfAdapter | . | url-property-path | Path defining the url that needs to be selected on the model for the http request. | Yes | N/A | Valid property paths | http://example.org/url | . | header-property-path | Path defining the headers that needs to be selected on the model for the http request. | No | N/A | Valid property paths | http://example.org/header | . | body-property-path | Path defining the body that needs to be selected on the model to be added when a POST http request is used. | No | N/A | Valid property paths | http://example.org/meta/http://example.org/body | . | http-method-property-path | Path defining the http method that needs to be selected on the model for the http request. | No | GET | GET or POST | GET | . LDIO Http Requester properties . Authentication properties . | Property | Description | Required | Default | Supported values | Example | . | auth.type | The type of authentication required by the LDES server | No | NO_AUTH | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | OAUTH2_CLIENT_CREDENTIALS | . | auth.api-key | The api key when using auth.type ‘API_KEY’ | No | N/A | String | myKey | . | auth.api-key-header | The header for the api key when using auth.type ‘API_KEY’ | No | X-API-KEY | String | X-API-KEY | . | auth.client-id | The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | myId | . | auth.client-secret | The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | String | mySecret | . | auth.token-endpoint | The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . | auth.scope | The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ | No | N/A | HTTP and HTTPS urls | http://localhost:8000/token | . Retry properties . | Property | Description | Required | Default | Supported values | Example | . | retries.enabled | Indicates if the http client should retry http requests when the server cannot be reached. | No | true | Boolean value | true | . | retries.max | Max number of retries the http client should do when retries.enabled = true | No | 5 | Integer | 100 | . | retries.statuses-to-retry | Custom comma seperated list of http status codes that can trigger a retry in the http client. | No | N/A | Comma seperated list of Integers | 410,451 | . When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry: . | 429 | 5xx (500 and above) | . Rate limit properties . | Property | Description | Required | Default | Supported values | Example | . | rate-limit.enabled | Indicates if the http client should limit http requests when calling the server. | No | false | true or false | false | . | rate-limit.limit | Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true | No | 500 | Integer | 100 | . | rate-limit.period | Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true | No | PT1M | ISO 8601 Duration | PT1H | . Http headers . | Property | Description | Required | Default | Supported values | Example | . | http.headers.[].key/value | A list of custom http headers can be added. A key and value has to be provided for every header. | No | N/A | String | role | . Example Http Requester config config: http: headers: - key: role value: developer - key: alt-role value: programmer auth: type: API_KEY api-key: my-secret api-key-header: x-api-key retries: enabled: true max: 10 statuses-to-retry: 410,451 rate-limit: enabled: true period: P1D limit: 1000 . Note that all adapters are supported. When the adapter requires additional config, this can be added as seen below in the example. Example: . This example contains a JsonToLdAdapter which needs “core-context” as config. At the bottom there is also “auth” config provided for the request executor. - name: Ldio:HttpEnricher config: adapter: name: Ldio:JsonToLdAdapter config: core-context: file:///ldio/jsonld/observation.jsonld url-property-path: <http://example.org/url> header-property-path: <http://example.org/meta>/<http://example.org/headers> body-property-path: <http://example.org/meta>/<http://example.org/body> http-method-property-path: <http://example.org/meta>/<http://example.org/method> auth: type: API_KEY api-key: my-secret api-key-header: x-api-key . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-http-enricher#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher#config", "relUrl": "/ldio/ldio-transformers/ldio-http-enricher#config" },"102": { "doc": "Http Enricher Transformer", "title": "Http Enricher Transformer", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-http-enricher", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-http-enricher", "relUrl": "/ldio/ldio-transformers/ldio-http-enricher" },"103": { "doc": "Skolemisation Transformer", "title": "LDIO Skolemisation Transformer", "content": "Ldio:SkolemisationTransformer . A transformer which skolemises the incoming model. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-skolemisation-transformer#ldio-skolemisation-transformer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#ldio-skolemisation-transformer", "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#ldio-skolemisation-transformer" },"104": { "doc": "Skolemisation Transformer", "title": "What is Skolemisation", "content": "In the context of Linked Data, Skolemisation is a process used to handle blank nodes or anonymous nodes in RDF (Resource Description Framework) graphs. These nodes, which lack unique identifiers, are frequently employed in RDF/S knowledge bases to represent complex attributes or resources with known properties but unknown identities. Skolemisation in Linked Data involves the transformation of these blank nodes into Skolem Uniform Resource Identifiers ( URIs). The process enhances the clarity makes it easier to reference these nodes in future datasets. This process is particularly useful when dealing with substantial volumes of unstructured data distributed across diverse sources. By improving the accuracy and relevance of RDF summaries in relation to original datasets, Skolemisation enhances the efficiency and effectiveness of subsequent queries against these summaries. In summary, Skolemisation in Linked Data provides a way to handle the complexity introduced by blank nodes in RDF graphs, thereby enhancing the clarity, interoperability, and usability of the data. Example . Suppose we have the following RDF triples with a blank node represented as _:: . _:bnode <http://purl.org/dc/terms/title> \"The Lord of the Rings\" . _:bnode <http://purl.org/dc/terms/creator> \"J.R.R. Tolkien\" . In this example, _: is a blank node that represents a resource (a book in this case) with known properties (title and creator) but an unknown identity. Through Skolemisation, we can replace the blank node with a Skolem URI. The Skolem URI is typically a URL that is unique to the blank node and is generated by the system handling the RDF data. Here’s how it might look: . <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/title> \"The Lord of the Rings\" . <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/creator> \"J.R.R. Tolkien\" . In this Skolemized version, the blank node has been replaced with the Skolem URI http://example.com/.well-known/genid/123456. This URI is unique to the resource previously represented by the blank node, and can now be used to reference this resource in other datasets. This is a simple example, but it illustrates the basic process of Skolemisation in Linked Data. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-skolemisation-transformer#what-is-skolemisation", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#what-is-skolemisation", "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#what-is-skolemisation" },"105": { "doc": "Skolemisation Transformer", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | skolemDomain | Skolemisation domain | true | N/A | http://example.com | Any valid URI | . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:SkolemisationTransformer config: skolemDomain: http://example.com . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-skolemisation-transformer#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer#config", "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer#config" },"106": { "doc": "Skolemisation Transformer", "title": "Skolemisation Transformer", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-skolemisation-transformer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-skolemisation-transformer", "relUrl": "/ldio/ldio-transformers/ldio-skolemisation-transformer" },"107": { "doc": "SPARQL Construct", "title": "LDIO SPARQL Construct", "content": "Ldio:SparqlConstructTransformer . The SPARQL Construct Transformer will modify the model based on the given SPARQL Construct Query. SPARQL Construct is a query language used in semantic Web technologies to create RDF (Resource Description Framework) graphs from existing RDF data. It allows users to specify a pattern of data they wish to extract from the RDF data and construct a new graph based on that pattern. The SPARQL Construct query language provides a powerful way to create new RDF data by using existing data as the input. It can be used to transform RDF data into different formats, as well as to simplify the structure of RDF data by aggregating or filtering data. This SPARQL Construct Transfomer building block can be used to execute model transformations. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-sparql-construct#ldio-sparql-construct", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#ldio-sparql-construct", "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#ldio-sparql-construct" },"108": { "doc": "SPARQL Construct", "title": "Splitting models using SPARQL Construct", "content": "This component can be used to split models into multiple models using graphs. For example, the below query will create a dataset containing multiple models defined by ‘GRAPH’. The SPARQL construct component will extract all named models from the dataset and add all statements from the default model. The component will then return a collection of models. CONSTRUCT { GRAPH ?s { ?s ?p ?o } } WHERE { ?s ?p ?o } . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-sparql-construct#splitting-models-using-sparql-construct", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#splitting-models-using-sparql-construct", "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#splitting-models-using-sparql-construct" },"109": { "doc": "SPARQL Construct", "title": "SPARQL functions", "content": "We support some additional geo functions that can call inside your SPARQL Construct query, . with the following namespace: . prefix geoc: https://opengis.net/def/function/geosparql/custom# . | Function | Description | Input | Output | . | geoc:lineAtIndex | get LineString from MultiLineString by index. | MultiLineString(wktLiteral) & index | LineString(wktLiteral) | . | geoc:firstCoordinate | get first Coordinate of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:lastCoordinate | get last Coordinate of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:lineLength | calculate total line length of LineString. | LineString(wktLiteral) | distance in meters | . | geoc:midPoint | calculate midpoint of LineString. | LineString(wktLiteral) | Coordinate(wktLiteral) | . | geoc:pointAtFromStart | calculate point on LineString by distance. | LineString(wktLiteral) & distance in meters | Coordinate(wktLiteral) | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-sparql-construct#sparql-functions", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#sparql-functions", "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#sparql-functions" },"110": { "doc": "SPARQL Construct", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | query | Path to content of SPARQL Query/content of SPARQL query. | Yes | N/A | query.rq | Path/String | . | infer | Include original model in end result. | No | false | false | true or false | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-sparql-construct#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct#config", "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct#config" },"111": { "doc": "SPARQL Construct", "title": "SPARQL Construct", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-sparql-construct", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-sparql-construct", "relUrl": "/ldio/ldio-transformers/ldio-sparql-construct" },"112": { "doc": "Version Materializer", "title": "LDIO Version Materializer", "content": "Ldio:VersionMaterialiser . The Version Materializer will transform a Version Object to a State Object. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-materializer#ldio-version-materializer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#ldio-version-materializer", "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#ldio-version-materializer" },"113": { "doc": "Version Materializer", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | versionOf-property | Property that points to the versionOfPath. | Yes | N/A | “http://purl.org/dc/terms/isVersionOf” | String | . | restrict-to-members | Only returns the statements of the node containing the versionOf property, including potential nested blank nodes. | No | false | false | true or false | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-materializer#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#config", "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#config" },"114": { "doc": "Version Materializer", "title": "Example", "content": "Version Object . A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model. An example would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix dc: <http://purl.org/dc/terms/> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member#2024-01-01T13:00:00+01:00> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ] ; prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; dc:isVersionOf <http://example.org/Something> ; . State Object . For each version object, the transformer will generate a corresponding state object and remove all statements that include the versionOf predicate. An example of the created state object by the previous version object would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2023-08-18T13:08:00+01:00\"^^xsd:DateTime ] . prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:VersionMaterialiser config: versionOf-property: http://purl.org/dc/terms/isVersionOf . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-materializer#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer#example", "relUrl": "/ldio/ldio-transformers/ldio-version-materializer#example" },"115": { "doc": "Version Materializer", "title": "Version Materializer", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-materializer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-materializer", "relUrl": "/ldio/ldio-transformers/ldio-version-materializer" },"116": { "doc": "Version Object Creator", "title": "LDIO Version Object Creator", "content": "Ldio:VersionObjectCreator . The Version Object Creator will transform a State Object to a Version Object. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-object-creator#ldio-version-object-creator", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#ldio-version-object-creator", "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#ldio-version-object-creator" },"117": { "doc": "Version Object Creator", "title": "Config", "content": "| Property | Description | Required | Default | Example | Supported values | . | date-observed-property | Property path (IRI format ‘<>’) that points to a literal which should be used as timestampPath. Defaults to current timestamp. | No | Current Timestamp | <https://example.org/ObservedAt> | String | . | member-type | Defines the RDF type of the object to be transformed to a version object. | Yes | N/A | https://example.org/Person | String | . | delimiter | Defines how the version object id will be constructed. (versionOf + delimiter + dateObserved) | No | / | / | String | . | generatedAt-property | A statement will be added to the model with the generatedAt value and the given property. | No | http://www.w3.org/ns/prov#generatedAtTime | http://www.w3.org/ns/prov#generatedAtTime | String | . | versionOf-property | A statement will be added to the model with the versionOf value and the given property. | No | http://purl.org/dc/terms/isVersionOf | http://purl.org/dc/terms/isVersionOf | String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-object-creator#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#config", "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#config" },"118": { "doc": "Version Object Creator", "title": "Example", "content": "State Object . A state object is an entity that represents the most recent state of an object, and in this context, the subject is not unique. Below is an example presented in RDF format: Below is an example presented in RDF format: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.org/member> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2023-08-18T13:08:00+01:00\"^^xsd:DateTime ] . A property path can be provided for the date-observed-property. You can provide the following date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp> to select time:inXSDDateTimeStamp within ex:created. Version Object . A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model. The transformer will perform three key tasks: . | Modify the named subject with a unique identifier based on the provided date-observed-property and delimiter | Add a timestamp statement | Add a versionOf statement | . An example of the created version object by the previous state object would be: . @prefix time: <http://www.w3.org/2006/time#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix dc: <http://purl.org/dc/terms/> . @prefix prov: <http://www.w3.org/ns/prov#> . <http://example.org/member#2024-01-01T13:00:00+01:00> a ex:Something ; ex:created [ a time:Instant ; time:inXSDDateTimeStamp \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ] ; prov:generatedAtTime \"2024-01-01T13:00:00+01:00\"^^xsd:DateTime ; dc:isVersionOf <http://example.org/Something> ; . Configuration . The YAML configuration of this example would be as follows: . transformers: - name: Ldio:VersionObjectCreator config: member-type: - http://example.org/Something - http://example.org/SomethingElse delimiter: \"#\" date-observed-property: <http://example.org/created>/<http://www.w3.org/2006/time#inXSDDateTimeStamp> generatedAt-property: http://www.w3.org/ns/prov#generatedAtTime versionOf-property: http://purl.org/dc/terms/isVersionOf . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-object-creator#example", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator#example", "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator#example" },"119": { "doc": "Version Object Creator", "title": "Version Object Creator", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/ldio-transformers/ldio-version-object-creator", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/ldio-transformers/ldio-version-object-creator", "relUrl": "/ldio/ldio-transformers/ldio-version-object-creator" },"120": { "doc": "Pipeline Management", "title": "Pipeline Management", "content": " ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/index", "relUrl": "/ldio/pipeline-management/index" },"121": { "doc": "LDES Client Status", "title": "LDES Client Status", "content": "Just like the LDIO pipelines have a status, so does the Ldio:LdesClient. The client status can be fetched when a pipeline that has a running status, and of course when it contains an LDES client as input component. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status", "relUrl": "/ldio/pipeline-management/ldes-client-status" },"122": { "doc": "LDES Client Status", "title": "Overview Of The Status Flow", "content": "graph LR ; REPLICATING --> SYNCHRONISING; REPLICATING --> COMPLETED; SYNCHRONISING --> COMPLETED; SYNCHRONISING --> ERROR; REPLICATING --> ERROR; . The above diagram shows the flow between the different statuses of the client. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status#overview-of-the-status-flow", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#overview-of-the-status-flow", "relUrl": "/ldio/pipeline-management/ldes-client-status#overview-of-the-status-flow" },"123": { "doc": "LDES Client Status", "title": "REPLICATING", "content": "The startup status of the client. This status indicates that the LDES client have not yet fetched all the available fragments of a view (or views if so configured) . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status#replicating", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#replicating", "relUrl": "/ldio/pipeline-management/ldes-client-status#replicating" },"124": { "doc": "LDES Client Status", "title": "SYNCHRONISING", "content": "This status indicates that all the fragments of the configured view(s) have been fetched at least once, and there is at least one fragment that does not have an immutable state yet. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status#synchronising", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#synchronising", "relUrl": "/ldio/pipeline-management/ldes-client-status#synchronising" },"125": { "doc": "LDES Client Status", "title": "ERROR", "content": "This status indicates that an error has occurred somewhere while REPLICATING or SYNCHRONISING . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status#error", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#error", "relUrl": "/ldio/pipeline-management/ldes-client-status#error" },"126": { "doc": "LDES Client Status", "title": "COMPLETED", "content": "This status indicates that all the fragments of the configured view has been fetched at least once and all those have an immutable state, or in other words, the end of the LDES has been reached. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/ldes-client-status#completed", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/ldes-client-status#completed", "relUrl": "/ldio/pipeline-management/ldes-client-status#completed" },"127": { "doc": "Management of Pipelines", "title": "Management of Pipelines", "content": "Pipelines in LDIO can be created in YAML or JSON configuration (although all example configurations are made in YAML, these can also be formatted in JSON). A default pipeline looks as follows: . name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Transformer config: foo: bar . | Note that one orchestrator can have multiple pipelines | Note that one pipeline can have multiple LDI Transformers and LDI Outputs | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/management-of-pipelines", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines", "relUrl": "/ldio/pipeline-management/management-of-pipelines" },"128": { "doc": "Management of Pipelines", "title": "Anatomy of a pipeline", "content": "Each pipeline is built up of the following components: . | LDIO Input: A component that will receive data (not necessarily LD) to then feed the LDIO pipeline. | LDIO Adapter: To be used in conjunction with the LDIO Input, the LDIO Adapter will transform the provided content into and internal Linked Data model and sends it down the pipeline. | LDIO Transformer: A component that takes in a Linked Data model, transforms/modifies it and then puts it back on the pipeline. | LDIO Output: A component that will take in Linked Data and will export it to external sources. | . stateDiagram-v2 direction LR LDI_Input --> LDI_Transformer : LD LDI_Transformer --> LDI_Output : LD state LDI_Input { direction LR [*] --> LDI_Adapter : Non LD state LDI_Adapter { direction LR [*] --> adapt adapt --> [*] } LDI_Adapter --> [*] : LD } state LDI_Transformer { direction LR [*] --> transform transform --> [*] } state LDI_Output { direction LR [*] --> [*] } . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/management-of-pipelines#anatomy-of-a-pipeline", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#anatomy-of-a-pipeline", "relUrl": "/ldio/pipeline-management/management-of-pipelines#anatomy-of-a-pipeline" },"129": { "doc": "Management of Pipelines", "title": "Persistence of Pipelines", "content": "By default, all pipelines defined after startup (via management API) will be lost on restart. To prevent this behaviour, add the orchestrator.directory property as follows: . orchestrator: directory: \"{directory in application folder}\" . If this directory does not exist, it will be created. NOTE: An application config can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml). ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/management-of-pipelines#persistence-of-pipelines", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#persistence-of-pipelines", "relUrl": "/ldio/pipeline-management/management-of-pipelines#persistence-of-pipelines" },"130": { "doc": "Management of Pipelines", "title": "Pausing & Resuming LDIO", "content": "Sometimes it might be preferred to pause an LDIO pipeline instead of deleting and recreating it. The endpoints to manage pipelines can be found here . The exact behaviour of a paused pipeline depends on its input component and can be found in the documentation of these components. However, it will always complete its current run through the pipeline and then seize sending any output. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/management-of-pipelines#pausing--resuming-ldio", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/management-of-pipelines#pausing--resuming-ldio", "relUrl": "/ldio/pipeline-management/management-of-pipelines#pausing--resuming-ldio" },"131": { "doc": "Pipeline Management API", "title": "Pipeline Management API", "content": "Swagger UI | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-api", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-api", "relUrl": "/ldio/pipeline-management/pipeline-api" },"132": { "doc": "Pipeline Status", "title": "Pipeline Status", "content": "An individual ldio-pipeline can be in one of several different statuses. These different statuses and their behaviour are dependent on the input component of the pipeline. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status", "relUrl": "/ldio/pipeline-management/pipeline-status" },"133": { "doc": "Pipeline Status", "title": "Overview Of The Status Flow", "content": "graph LR ; INIT --> RUNNING; INIT --> STOPPED; RUNNING --> STOPPED; RUNNING --> HALTED; HALTED --> RUNNING; HALTED --> STOPPED; . The above diagram shows the flow between the different statuses of the pipeline. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#overview-of-the-status-flow", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#overview-of-the-status-flow", "relUrl": "/ldio/pipeline-management/pipeline-status#overview-of-the-status-flow" },"134": { "doc": "Pipeline Status", "title": "INIT", "content": "The startup step of the ldio pipeline. This is the preparation step before the input component can receive data and pass it on to the rest of the pipeline. In most components this step will take little time. The only exception for now is the client-connector. It is not possible to pause the pipeline while in this state. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#init", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#init", "relUrl": "/ldio/pipeline-management/pipeline-status#init" },"135": { "doc": "Pipeline Status", "title": "RUNNING", "content": "This status indicates that the ldio pipeline is running and that the input component is ready to or currently receiving or fetching data. This is the only state in which the pipeline can be paused. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#running", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#running", "relUrl": "/ldio/pipeline-management/pipeline-status#running" },"136": { "doc": "Pipeline Status", "title": "HALTED", "content": "Every ldio pipeline can be paused, the exact behavior of which depends on the ldio input component used. A more in depth explanation can be found on the pages for the individual input components. Currently, the HALTED status can only be reached through manually pausing the pipeline through the pipeline-api. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#halted", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#halted", "relUrl": "/ldio/pipeline-management/pipeline-status#halted" },"137": { "doc": "Pipeline Status", "title": "STOPPED", "content": "When a pipeline is deleted, it will first change to the STOPPED status, this ensures the state is correctly saved in stateful components and that the entire pipeline can be gracefully shutdown. This status will only last a short while before the pipeline is deleted and the status can no longer be queried. The pipeline can be stopped from any other status. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#stopped", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#stopped", "relUrl": "/ldio/pipeline-management/pipeline-status#stopped" },"138": { "doc": "Pipeline Status", "title": "Status Change Source", "content": "The ldio pipeline keeps track of if the last status change was triggered manually or automatic. Manually changing the status can be done through the pipeline-api. When in the RUNNING state, this indicates if the pipeline has been started (automatic) or unpaused (manual). ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/pipeline-status#status-change-source", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/pipeline-status#status-change-source", "relUrl": "/ldio/pipeline-management/pipeline-status#status-change-source" },"139": { "doc": "Startup Configuration", "title": "Startup Configuration", "content": "On startup, pipelines can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml) that looks as follows: . orchestrator: pipelines: - name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Output config: foo: bar . Since the introduction of dynamic pipelines . Since version 2.1.0, it is possible to manage pipelines on the fly. If pipelines must be instantiated on startup, those pipelines can be added to a configured directory. First of all, to configure the directory, the /ldio/application.yml should look like this: . orchestrator: directory: <PIPELINE_DIRECTORY> . The folder contains a yaml file for each pipeline. It is the preferred way to call the file the same way as the name of the pipeline, in this case, that would be my-first-pipeline.yml: . name: my-first-pipeline input: name: name of LDI Input config: foo: bar adapter: name: name of LDI Adapter config: foo: bar transformers: - name: name of LDI Transformer config: foo: bar outputs: - name: name of LDI Output config: foo: bar . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldio/pipeline-management/startup-config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldio/pipeline-management/startup-config", "relUrl": "/ldio/pipeline-management/startup-config" },"140": { "doc": "Linked Data Interactions For Apache NiFi", "title": "Linked Data Interactions For Apache NiFi", "content": "Apache Nifi is an easy to use, powerful, and reliable system to process and distribute data. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-nifi/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/index", "relUrl": "/ldi-nifi/index" },"141": { "doc": "Linked Data Interactions For Apache NiFi", "title": "Set up NiFi instance with LDI processors", "content": "The processors can be imported into a NiFi docker instance via volume binding: . | Create a docker-compose.yml file with the following content in a new directory services: nifi: image: apache/nifi:2.0.0 environment: SINGLE_USER_CREDENTIALS_USERNAME: admin SINGLE_USER_CREDENTIALS_PASSWORD: ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB ports: - 8443:8443 volumes: - ./nifi-ext:/opt/nifi/nifi-current/nar_extensions:rw . | Create a directory nifi-ext in your current directory. | Download either the ...-nar-bundle.jar and unpack this or download the individual required processors (.nar extension) from the nexus repository. Next, place the required processors in the nifi-ext directory. | Finally, start your instance. docker compose up . | Log in at https://localhost:8443/nifi with the credentials mentioned in step 1 | All downloaded extensions are available under the be.vlaanderen.informatievlaanderen.ldes.ldi.nifi group. | . All documentation and notes about configuration are available in the NiFi component itself. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-nifi/index#set-up-nifi-instance-with-ldi-processors", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/index#set-up-nifi-instance-with-ldi-processors", "relUrl": "/ldi-nifi/index#set-up-nifi-instance-with-ldi-processors" },"142": { "doc": "LDI NiFi Processors", "title": "LDI NiFi Processors", "content": "Due to special requests, non conformance to the LDI APIs or extra complexity, a few processors were only implemented in NiFi. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-nifi/processors/index", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/processors/index", "relUrl": "/ldi-nifi/processors/index" },"143": { "doc": "SPARQL Interactions Processors", "title": "SPARQL Interactions Processors", "content": "The SPARQL Interactions Processors is a bundle of the LDI SPARQL Construct and also a SPARQL SELECT Processor. The SPARQL SELECT provides the option to query your dataset. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-nifi/processors/sparql-interactions", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-nifi/processors/sparql-interactions", "relUrl": "/ldi-nifi/processors/sparql-interactions" },"144": { "doc": "Linked Data Interactions LDES Discoverer", "title": "Linked Data Interactions LDES Discoverer", "content": "A lightweight application that discovers the structure of an LDES or a view by retrieving all the tree node relations of that LDES or view. A use case for this could be when you are only interested in a part of the event stream. To know what part you can follow, the structure can be discovered first. ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-standalones/ldes-discoverer", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer", "relUrl": "/ldi-standalones/ldes-discoverer" },"145": { "doc": "Linked Data Interactions LDES Discoverer", "title": "Config", "content": "Base configuration . | Property | Description | Required | Default | Example | Supported values | . | url | Url where from the discoverer needs to start | true | N/A | http://example.com/my-api | HTTP and HTTPS url | . | source-format | The ‘Content-Type’ that should be requested to the server. | false | text/turtle | application/n-quads | Any type supported by Apache Jena | . Optional config . Authentication . | Property | Description | Default | Example | Supported values | . | auth-type | The type of authentication required by the LDES server | NO_AUTH | OAUTH2_CLIENT_CREDENTIALS | NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS | . | api-key | The api key when using auth-type ‘API_KEY’ | N/A | myKey | String | . | api-key-header | The header for the api key when using auth-type ‘API_KEY’ | X-API-KEY | X-API-KEY | String | . | client-id | The client identifier when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | myId | String | . | client-secret | The client secret when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | mySecret | String | . | token-endpoint | The token endpoint when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | http://localhost:8000/token | HTTP and HTTPS urls | . | scope | The Oauth2 scope when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ | N/A | http://localhost:8000/token | HTTP and HTTPS urls | . Further customization . | Property | Description | Default | Example | Supported values | . | disable-retry | Boolean flag that disables retrying to send http requests when the server cannot be reached. (enabled when omitted) | N/A | N/A | N/A | . | retry-limit | Max number of retries the http client should do (only on absence of disable-retry) | 5 | 100 | Integer | . | retry-statuses | Custom comma seperated list of http status codes that can trigger a retry in the http client. | N/A | 410,451 | Comma seperated list of Integers | . | rate-limit | Limit of requests per period, which is defined below, that the http client should do | N/A | 500 | Integer | . | rate-limit-period | Period in which the limit of requests, which is defined above, can be reached by the http client | PT1M | PT1H | ISO 8601 Duration | . | header | Parameter for each individual header that is required | N/A | Connection: keep-alive | String | . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-standalones/ldes-discoverer#config", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer#config", "relUrl": "/ldi-standalones/ldes-discoverer#config" },"146": { "doc": "Linked Data Interactions LDES Discoverer", "title": "How to run", "content": "This tutorial will show how to use the discoverer in Docker. In this example, we will try to discover the structure of an event stream called observations. For simplicity, we recommend passing the config as arguments. Run the ldes-discoverer with minimal config . docker run ldes/ldes-discoverer --url=\"http://ldes-server/observations\" . Run the ldes-discoverer with rate-limit, authentication and two additional headers . docker run ldes/ldes-discoverer --url=\"http://ldes-server/observations\" --retry-limit=3 --rate-limit=400 \\ --header=\"Connection: keep alive\" --header=\"X-Source-App: ldes-discoverer\" \\ --auth-type=API_KEY --api-key=\"my-secret-api-key\" . NOTE: when an url contains a & symbol, which will be picked up by the shell as an operator. For instance, running docker run ldes/ldes-discoverer --url=http://ldes-server/observations?year=2023&month=05&day=11 will result in the shell trying to execute three different command, where the last two will be month=05 and day=11, which will fail of course. To resolve this, make sure the url is encapsulated in quotation marks. Example output . In the logging of the application, both the total number of relations and the relations itself will be displayed. This will be present as the last logging statement of the app and would look something like this: . 2024-02-08T14:26:25.279+01:00 INFO 48176 --- [ main] b.v.i.l.l.d.common.LdesDiscovererExecutor : http://ldes-server/observations contains a total of 10 relations: http://ldes-server/observations +- http://ldes-server/observations/by-time | +- http://ldes-server/observations/by-time?year=2022 | +- http://ldes-server/observations/by-time?year=2022&month=08 | +- http://ldes-server/observations/by-time?year=2023 | +- http://ldes-server/observations/by-time?year=2023&month=05 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=07 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=16 | +- http://ldes-server/observations/by-time?year=2023&month=05&day=20 +- http://ldes-server/observations/paged +- http://ldes-server/observations/paged?pageNumber=1 . ", - "url": "/VSDS-Linked-Data-Interactions/2.11.0/ldi-standalones/ldes-discoverer#how-to-run", + "url": "/VSDS-Linked-Data-Interactions/2.12.0/ldi-standalones/ldes-discoverer#how-to-run", "relUrl": "/ldi-standalones/ldes-discoverer#how-to-run" } diff --git a/latest/index.html b/latest/index.html index 69e133f61..568f93c5d 100644 --- a/latest/index.html +++ b/latest/index.html @@ -1 +1 @@ - Home | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions Project

Introduction

The Linked Data Interactions project is an effort to make interactions with Linked Data more fluently by providing easy building blocks.

This project was created in function of the VSDS project

Supported Frameworks

Currently, we support 2 frameworks to use these building blocks in:

Component support over frameworks

As the LDI team is rather small and focused on supporting the VSDS project, we sometimes have to postpone full integration of our building blocks in all supported frameworks.

However, since the LDI project is open source, feel free to contribute and/or create issues at our GitHub project


+ Home | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions Project

Introduction

The Linked Data Interactions project is an effort to make interactions with Linked Data more fluently by providing easy building blocks.

This project was created in function of the VSDS project

Supported Frameworks

Currently, we support 2 frameworks to use these building blocks in:

Component support over frameworks

As the LDI team is rather small and focused on supporting the VSDS project, we sometimes have to postpone full integration of our building blocks in all supported frameworks.

However, since the LDI project is open source, feel free to contribute and/or create issues at our GitHub project


diff --git a/latest/ldi-nifi/index.html b/latest/ldi-nifi/index.html index 8deb5c26a..c9c75e91b 100644 --- a/latest/ldi-nifi/index.html +++ b/latest/ldi-nifi/index.html @@ -1,4 +1,4 @@ - Linked Data Interactions For Apache NiFi | Linked Data Interactions

Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Linked Data Interactions For Apache NiFi

Apache Nifi is an easy to use, powerful, and reliable system to process and distribute data.

Set up NiFi instance with LDI processors

The processors can be imported into a NiFi docker instance via volume binding:

  1. Create a docker-compose.yml file with the following content in a new directory
     services:
    +             Linked Data Interactions For Apache NiFi | Linked Data Interactions             

    Skip to main content Link Menu Expand (external link) Document Search Copy Copied

    Linked Data Interactions For Apache NiFi

    Apache Nifi is an easy to use, powerful, and reliable system to process and distribute data.

    Set up NiFi instance with LDI processors

    The processors can be imported into a NiFi docker instance via volume binding:

    1. Create a docker-compose.yml file with the following content in a new directory
       services:
          nifi:
            image: apache/nifi:2.0.0
            environment:
      diff --git a/latest/ldi-nifi/processors/index.html b/latest/ldi-nifi/processors/index.html
      index 8928a0283..e271c4167 100644
      --- a/latest/ldi-nifi/processors/index.html
      +++ b/latest/ldi-nifi/processors/index.html
      @@ -1 +1 @@
      -             LDI NiFi Processors | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDI NiFi Processors

      Due to special requests, non conformance to the LDI APIs or extra complexity, a few processors were only implemented in NiFi.


      Table of contents


      + LDI NiFi Processors | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDI NiFi Processors

      Due to special requests, non conformance to the LDI APIs or extra complexity, a few processors were only implemented in NiFi.


      Table of contents


      diff --git a/latest/ldi-nifi/processors/sparql-interactions.html b/latest/ldi-nifi/processors/sparql-interactions.html index 0a6096ba0..234137bc9 100644 --- a/latest/ldi-nifi/processors/sparql-interactions.html +++ b/latest/ldi-nifi/processors/sparql-interactions.html @@ -1 +1 @@ - SPARQL Interactions Processors | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      SPARQL Interactions Processors

      The SPARQL Interactions Processors is a bundle of the LDI SPARQL Construct and also a SPARQL SELECT Processor.

      The SPARQL SELECT provides the option to query your dataset.


      + SPARQL Interactions Processors | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      SPARQL Interactions Processors

      The SPARQL Interactions Processors is a bundle of the LDI SPARQL Construct and also a SPARQL SELECT Processor.

      The SPARQL SELECT provides the option to query your dataset.


      diff --git a/latest/ldi-standalones/ldes-discoverer.html b/latest/ldi-standalones/ldes-discoverer.html index 135c19249..9c86cfaf3 100644 --- a/latest/ldi-standalones/ldes-discoverer.html +++ b/latest/ldi-standalones/ldes-discoverer.html @@ -1,4 +1,4 @@ - Linked Data Interactions LDES Discoverer | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions LDES Discoverer

      A lightweight application that discovers the structure of an LDES or a view by retrieving all the tree node relations of that LDES or view.

      A use case for this could be when you are only interested in a part of the event stream. To know what part you can follow, the structure can be discovered first.

      Config

      Base configuration

      Property Description Required Default Example Supported values
      url Url where from the discoverer needs to start true N/A http://example.com/my-api HTTP and HTTPS url
      source-format The ‘Content-Type’ that should be requested to the server. false text/turtle application/n-quads Any type supported by Apache Jena

      Optional config

      Authentication

      Property Description Default Example Supported values
      auth-type The type of authentication required by the LDES server NO_AUTH OAUTH2_CLIENT_CREDENTIALS NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS
      api-key The api key when using auth-type ‘API_KEY’ N/A myKey String
      api-key-header The header for the api key when using auth-type ‘API_KEY’ X-API-KEY X-API-KEY String
      client-id The client identifier when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A myId String
      client-secret The client secret when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A mySecret String
      token-endpoint The token endpoint when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls
      scope The Oauth2 scope when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls

      Further customization

      Property Description Default Example Supported values
      disable-retry Boolean flag that disables retrying to send http requests when the server cannot be reached. (enabled when omitted) N/A N/A N/A
      retry-limit Max number of retries the http client should do (only on absence of disable-retry) 5 100 Integer
      retry-statuses Custom comma seperated list of http status codes that can trigger a retry in the http client. N/A 410,451 Comma seperated list of Integers
      rate-limit Limit of requests per period, which is defined below, that the http client should do N/A 500 Integer
      rate-limit-period Period in which the limit of requests, which is defined above, can be reached by the http client PT1M PT1H ISO 8601 Duration
      header Parameter for each individual header that is required N/A Connection: keep-alive String

      How to run

      This tutorial will show how to use the discoverer in Docker. In this example, we will try to discover the structure of an event stream called observations.

      For simplicity, we recommend passing the config as arguments.

      Run the ldes-discoverer with minimal config

      docker run ldes/ldes-discoverer --url="http://ldes-server/observations"
      +             Linked Data Interactions LDES Discoverer | Linked Data Interactions             

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions LDES Discoverer

      A lightweight application that discovers the structure of an LDES or a view by retrieving all the tree node relations of that LDES or view.

      A use case for this could be when you are only interested in a part of the event stream. To know what part you can follow, the structure can be discovered first.

      Config

      Base configuration

      Property Description Required Default Example Supported values
      url Url where from the discoverer needs to start true N/A http://example.com/my-api HTTP and HTTPS url
      source-format The ‘Content-Type’ that should be requested to the server. false text/turtle application/n-quads Any type supported by Apache Jena

      Optional config

      Authentication

      Property Description Default Example Supported values
      auth-type The type of authentication required by the LDES server NO_AUTH OAUTH2_CLIENT_CREDENTIALS NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS
      api-key The api key when using auth-type ‘API_KEY’ N/A myKey String
      api-key-header The header for the api key when using auth-type ‘API_KEY’ X-API-KEY X-API-KEY String
      client-id The client identifier when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A myId String
      client-secret The client secret when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A mySecret String
      token-endpoint The token endpoint when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls
      scope The Oauth2 scope when using auth-type ‘OAUTH2_CLIENT_CREDENTIALS’ N/A http://localhost:8000/token HTTP and HTTPS urls

      Further customization

      Property Description Default Example Supported values
      disable-retry Boolean flag that disables retrying to send http requests when the server cannot be reached. (enabled when omitted) N/A N/A N/A
      retry-limit Max number of retries the http client should do (only on absence of disable-retry) 5 100 Integer
      retry-statuses Custom comma seperated list of http status codes that can trigger a retry in the http client. N/A 410,451 Comma seperated list of Integers
      rate-limit Limit of requests per period, which is defined below, that the http client should do N/A 500 Integer
      rate-limit-period Period in which the limit of requests, which is defined above, can be reached by the http client PT1M PT1H ISO 8601 Duration
      header Parameter for each individual header that is required N/A Connection: keep-alive String

      How to run

      This tutorial will show how to use the discoverer in Docker. In this example, we will try to discover the structure of an event stream called observations.

      For simplicity, we recommend passing the config as arguments.

      Run the ldes-discoverer with minimal config

      docker run ldes/ldes-discoverer --url="http://ldes-server/observations"
       

      Run the ldes-discoverer with rate-limit, authentication and two additional headers

      docker run ldes/ldes-discoverer --url="http://ldes-server/observations" --retry-limit=3 --rate-limit=400 \
        --header="Connection: keep alive" --header="X-Source-App: ldes-discoverer" \
        --auth-type=API_KEY --api-key="my-secret-api-key"
      diff --git a/latest/ldio/examples/ex1-basicHttp.html b/latest/ldio/examples/ex1-basicHttp.html
      index 65c32349b..e108d6c07 100644
      --- a/latest/ldio/examples/ex1-basicHttp.html
      +++ b/latest/ldio/examples/ex1-basicHttp.html
      @@ -1,4 +1,4 @@
      -             Basic Http In to Console | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Basic Http In to Console

      Used Components

      Setup

      For this setup, we will start with a Http Listener who will take in data and write it back out via the console

      ldio.config.yaml:

      orchestrator:
      +             Basic Http In to Console | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Basic Http In to Console

      Used Components

      Setup

      For this setup, we will start with a Http Listener who will take in data and write it back out via the console

      ldio.config.yaml:

      orchestrator:
         pipelines:
           - name: data
             description: "This pipeline uses a HTTP listener to read incoming RDF data and writes them to the console"
      diff --git a/latest/ldio/examples/ex2-scrape-api.html b/latest/ldio/examples/ex2-scrape-api.html
      index 97ba22829..09f5c8d5b 100644
      --- a/latest/ldio/examples/ex2-scrape-api.html
      +++ b/latest/ldio/examples/ex2-scrape-api.html
      @@ -1,4 +1,4 @@
      -             Scraping an API | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Scraping an API

      Used Components

      Setup

      For this setup, we will periodically scrape a public API, map it with RML to Linked Data, Transform it to a Version Object and write it to console.

      RML Mapping

      Since RML can sometimes be hard on human eyes, we’ll convert our YARRRML to RML via Matey.

      Through this, we can convert this YARRRML to the following RML.

      prefixes:
      +             Scraping an API | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Scraping an API

      Used Components

      Setup

      For this setup, we will periodically scrape a public API, map it with RML to Linked Data, Transform it to a Version Object and write it to console.

      RML Mapping

      Since RML can sometimes be hard on human eyes, we’ll convert our YARRRML to RML via Matey.

      Through this, we can convert this YARRRML to the following RML.

      prefixes:
        ex: "http://example.com/"
        cs: "http://www.cheapshark.com/"
        ldi: "http://www.vlaanderen.be/ns/ldi#"
      diff --git a/latest/ldio/examples/ex3-enrich-model.html b/latest/ldio/examples/ex3-enrich-model.html
      index 1f31007f1..1ce5faf30 100644
      --- a/latest/ldio/examples/ex3-enrich-model.html
      +++ b/latest/ldio/examples/ex3-enrich-model.html
      @@ -1,4 +1,4 @@
      -             Enrich a model | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Enrich A Model

      As part of this example, we will store some Car data in a Graph Database. We will later use that data to extend our user data Model to include the Car data.

      Used Components

      Setup

      For this setup, we will have two pipelines:

      • A to-graph pipeline that will take in our “Car” Linked Data and send it straight to a GraphDB
      • A enriched pipeline that will extend the data with the saved car data

      RDF4J Server

      To save the “Car” data, we first need to set up a GraphDB Server. This can be done by mounting a rdf4j workbench image.

      docker run -d -p 8081:8080 -e JAVA_OPTS="-Xms1g -Xmx4g" eclipse/rdf4j-workbench:latest
      +             Enrich a model | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Enrich A Model

      As part of this example, we will store some Car data in a Graph Database. We will later use that data to extend our user data Model to include the Car data.

      Used Components

      Setup

      For this setup, we will have two pipelines:

      • A to-graph pipeline that will take in our “Car” Linked Data and send it straight to a GraphDB
      • A enriched pipeline that will extend the data with the saved car data

      RDF4J Server

      To save the “Car” data, we first need to set up a GraphDB Server. This can be done by mounting a rdf4j workbench image.

      docker run -d -p 8081:8080 -e JAVA_OPTS="-Xms1g -Xmx4g" eclipse/rdf4j-workbench:latest
       

      Once spun up, a simple repository can be configured via doing the following curl command:

      test-db.ttl:

      @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
       @prefix rep: <http://www.openrdf.org/config/repository#>.
       @prefix sr: <http://www.openrdf.org/config/repository/sail#>.
      diff --git a/latest/ldio/examples/index.html b/latest/ldio/examples/index.html
      index d512a8e04..c3c53c36a 100644
      --- a/latest/ldio/examples/index.html
      +++ b/latest/ldio/examples/index.html
      @@ -1 +1 @@
      -             Examples | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions Orchestrator Examples

      Through the table of contents, you will find examples of the LDIO config that can be placed inside the ldio.config.yml to get the desired results.


      Table of contents


      + Examples | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions Orchestrator Examples

      Through the table of contents, you will find examples of the LDIO config that can be placed inside the ldio.config.yml to get the desired results.


      Table of contents


      diff --git a/latest/ldio/index.html b/latest/ldio/index.html index eed1ae9f0..221f7192f 100644 --- a/latest/ldio/index.html +++ b/latest/ldio/index.html @@ -1,4 +1,4 @@ - The Linked Data Interactions Orchestrator | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      The Linked Data Interactions Orchestrator

      A lightweight application maintained by the LDI team. Its creation came when a more lightweight alternative for Apache NiFi was needed.

      Docker Compose

      The easiest way to start working with the LDIO is by using Docker. The image is located on the Docker Hub.

      To set up your environment, start by creating a new folder dedicated to your LDIO project. Within this folder, create two files: a docker-compose.yml and a YAML configuration file. The YAML file can be named according to your preference and can be added to the volume bindings pointing to the ldio/application.yml file.

      To enable Swagger UI, debug logging, or monitoring, please follow the instructions provided below on how to incorporate them into the LDIO YAML configuration file.

      docker-compose.yml:

      version: '3.3'
      +             The Linked Data Interactions Orchestrator | Linked Data Interactions             

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      The Linked Data Interactions Orchestrator

      A lightweight application maintained by the LDI team. Its creation came when a more lightweight alternative for Apache NiFi was needed.

      Docker Compose

      The easiest way to start working with the LDIO is by using Docker. The image is located on the Docker Hub.

      To set up your environment, start by creating a new folder dedicated to your LDIO project. Within this folder, create two files: a docker-compose.yml and a YAML configuration file. The YAML file can be named according to your preference and can be added to the volume bindings pointing to the ldio/application.yml file.

      To enable Swagger UI, debug logging, or monitoring, please follow the instructions provided below on how to incorporate them into the LDIO YAML configuration file.

      docker-compose.yml:

      version: '3.3'
       services:
         ldio-workbench:
           container_name: ldio-workbench
      diff --git a/latest/ldio/ldio-adapters/index.html b/latest/ldio/ldio-adapters/index.html
      index fa1d70970..ccafe65cf 100644
      --- a/latest/ldio/ldio-adapters/index.html
      +++ b/latest/ldio/ldio-adapters/index.html
      @@ -1 +1 @@
      -             LDIO Adapters | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Adapters

      Adapters are be used in conjunction with the LDI Input. They will transform the provided content into and internal Linked Data model and sends it down the pipeline for further processing.

      Overview

      Adapter Description Inputs Advantages Disadvantages
      JSON to JSON-LD Receives JSON messages and adds linked data context to transform the messages to JSON-LD
      • JSON
      • Easy to set up: plug in context
      • Only works with JSON as input
      • Slower performance when deserializing model
      RDF Takes in an RDF string and converts it into an internal linked data model
      • RDF string
      • Easy to set up: no configuration needed
      • Only works with RDF as input
      • Only supports valid RDF MIME types
      RML Transform a non-linked data object (JSON/CSV/XML) to RDF object
      • JSON
      • CSV
      • XML
      • Most powerful adapter
      • Can convert multiple input objects
      • RML knowledge needed to do mapping
      NGSIv2 to NGSI-LD Converts NGSIv2 to an NGSI-LD model
      • NGSIv2 (JSON)
       
      • Only works with NGSIv2 as input
      • Slower performance when deserializing model

      Table of contents


      + LDIO Adapters | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Adapters

      Adapters are be used in conjunction with the LDI Input. They will transform the provided content into and internal Linked Data model and sends it down the pipeline for further processing.

      Overview

      Adapter Description Inputs Advantages Disadvantages
      JSON to JSON-LD Receives JSON messages and adds linked data context to transform the messages to JSON-LD
      • JSON
      • Easy to set up: plug in context
      • Only works with JSON as input
      • Slower performance when deserializing model
      RDF Takes in an RDF string and converts it into an internal linked data model
      • RDF string
      • Easy to set up: no configuration needed
      • Only works with RDF as input
      • Only supports valid RDF MIME types
      RML Transform a non-linked data object (JSON/CSV/XML) to RDF object
      • JSON
      • CSV
      • XML
      • Most powerful adapter
      • Can convert multiple input objects
      • RML knowledge needed to do mapping
      NGSIv2 to NGSI-LD Converts NGSIv2 to an NGSI-LD model
      • NGSIv2 (JSON)
       
      • Only works with NGSIv2 as input
      • Slower performance when deserializing model

      Table of contents


      diff --git a/latest/ldio/ldio-adapters/ldio-json-to-json-ld.html b/latest/ldio/ldio-adapters/ldio-json-to-json-ld.html index e77c3b27e..408136ffd 100644 --- a/latest/ldio/ldio-adapters/ldio-json-to-json-ld.html +++ b/latest/ldio/ldio-adapters/ldio-json-to-json-ld.html @@ -1 +1 @@ - Json To JsonLd Transformer | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Json To JsonLd Adapter

      Ldio:JsonToLdAdapter

      The json-to-ld-adapter receives json messages and adds a linked data context to transform the messages to json-ld.

      Config

      Property Description Required Default Example Supported values
      context URI of json-ld context Or an JSON-LD context object. Yes N/A http://example.com/my-api URI or Json Object (containing “@context” entry)
      force-content-type Flag that indicates if application/json should be forced as mime type. No false true true or false
      max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

      + Json To JsonLd Transformer | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Json To JsonLd Adapter

      Ldio:JsonToLdAdapter

      The json-to-ld-adapter receives json messages and adds a linked data context to transform the messages to json-ld.

      Config

      Property Description Required Default Example Supported values
      context URI of json-ld context Or an JSON-LD context object. Yes N/A http://example.com/my-api URI or Json Object (containing “@context” entry)
      force-content-type Flag that indicates if application/json should be forced as mime type. No false true true or false
      max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

      diff --git a/latest/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html b/latest/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html index d7bc0dbf0..2f8207d85 100644 --- a/latest/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html +++ b/latest/ldio/ldio-adapters/ldio-ngsiv2-to-ld.html @@ -1 +1 @@ - NGSIv2 To LD Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO NGSIv2 To LD Adapter

      Ldio:NgsiV2ToLdAdapter

      This adapter will transform a NGSI V2 input into NGSI LD.

      Jackson is used to first deserialize the input to java objects which can then be serialized to the LD format.

      Notes

      The algorithm applies several deviations from the standard formats. These deviations are:

      1. The observedAt attribute is added to every property, its value is determined by the dateObserved attribute of the input.
      2. The timestamp attribute of a metadata property normally determines the observedAt property but is ignored in this algorithm.

      Config

      Property Description Required Default Example Supported values
      core-context URI of a core json-ld context. Yes N/A http://example.com/my-api HTTP and HTTPS urls
      ld-context URI of a custom json-ld context. No N/A http://example.com/my-api HTTP and HTTPS urls
      data-identifier Identifier that points to data in provided json. Yes N/A data String

      + NGSIv2 To LD Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO NGSIv2 To LD Adapter

      Ldio:NgsiV2ToLdAdapter

      This adapter will transform a NGSI V2 input into NGSI LD.

      Jackson is used to first deserialize the input to java objects which can then be serialized to the LD format.

      Notes

      The algorithm applies several deviations from the standard formats. These deviations are:

      1. The observedAt attribute is added to every property, its value is determined by the dateObserved attribute of the input.
      2. The timestamp attribute of a metadata property normally determines the observedAt property but is ignored in this algorithm.

      Config

      Property Description Required Default Example Supported values
      core-context URI of a core json-ld context. Yes N/A http://example.com/my-api HTTP and HTTPS urls
      ld-context URI of a custom json-ld context. No N/A http://example.com/my-api HTTP and HTTPS urls
      data-identifier Identifier that points to data in provided json. Yes N/A data String

      diff --git a/latest/ldio/ldio-adapters/ldio-rdf-adapter.html b/latest/ldio/ldio-adapters/ldio-rdf-adapter.html index 383dee1b8..5253b51ef 100644 --- a/latest/ldio/ldio-adapters/ldio-rdf-adapter.html +++ b/latest/ldio/ldio-adapters/ldio-rdf-adapter.html @@ -1 +1 @@ - RDF Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO RDF Adapter

      Ldio:RdfAdapter

      As the most basic adapter, the RDF Adapter will take in an RDF string and convert it into an internal Linked Data model based on the given content type. This internal Linked Data model is then available for utilization in various other components, such as transformers and outputs.

      Notes

      This Adapter only supports valid RDF mime types

      Config

      Property Description Required Default Example Supported values
      max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

      + RDF Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO RDF Adapter

      Ldio:RdfAdapter

      As the most basic adapter, the RDF Adapter will take in an RDF string and convert it into an internal Linked Data model based on the given content type. This internal Linked Data model is then available for utilization in various other components, such as transformers and outputs.

      Notes

      This Adapter only supports valid RDF mime types

      Config

      Property Description Required Default Example Supported values
      max-jsonld-cache-capacity After retrieving an external JSON-LD context, it is cached for reuse. This property allows to specify the size of this cache (number of stored contexts). No 100 100 Integer

      diff --git a/latest/ldio/ldio-adapters/ldio-rml-adapter.html b/latest/ldio/ldio-adapters/ldio-rml-adapter.html index 67ce372a1..9014f866e 100644 --- a/latest/ldio/ldio-adapters/ldio-rml-adapter.html +++ b/latest/ldio/ldio-adapters/ldio-rml-adapter.html @@ -1 +1 @@ - RML Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO RML Adapter

      Ldio:RmlAdapter

      The RML Adapter allows a user to transform a non-LD object (json/CSV/XML) to an RDF object.

      This is done by providing a RML mapping file. For more details on how to form a correct RML mapping, visit the RML documentation.

      Config

      Property Description Required Default Example Supported values
      mapping Path to content of RML/content of RML mapping. Yes N/A mapping.ttl Path/String

      + RML Adapter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO RML Adapter

      Ldio:RmlAdapter

      The RML Adapter allows a user to transform a non-LD object (json/CSV/XML) to an RDF object.

      This is done by providing a RML mapping file. For more details on how to form a correct RML mapping, visit the RML documentation.

      Config

      Property Description Required Default Example Supported values
      mapping Path to content of RML/content of RML mapping. Yes N/A mapping.ttl Path/String

      diff --git a/latest/ldio/ldio-inputs/index.html b/latest/ldio/ldio-inputs/index.html index b9d616331..8b1c80a1a 100644 --- a/latest/ldio/ldio-inputs/index.html +++ b/latest/ldio/ldio-inputs/index.html @@ -1 +1 @@ - LDIO Inputs | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Inputs

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      + LDIO Inputs | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Inputs

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      diff --git a/latest/ldio/ldio-inputs/ldio-amqp-in.html b/latest/ldio/ldio-inputs/ldio-amqp-in.html index 6a4c33b96..5d14eedd3 100644 --- a/latest/ldio/ldio-inputs/ldio-amqp-in.html +++ b/latest/ldio/ldio-inputs/ldio-amqp-in.html @@ -1,4 +1,4 @@ - AMQP In | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO AMQP In

      Ldio:AmqpIn

      The LDIO AMQP In listens to messages from an AMQP 1.0 queue.

      Config

      Property Description Required Default Example Supported values
      remote-url URI to AMQP queue Yes N/A amqp://server:61616 In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]]
      queue Name of the queue Yes N/A quickstart-events String
      username Username used in authentication Yes N/A client String
      password Password used in the authentication Yes N/A secret String
      content-type Content-type suggestion* for received messages of queue No application/n-quads application/n-quads Any content type supported by Apache Jena
      • When the header of the message contains a “contentType” property, the listener will use the content type provided by the header.

      Example

            input:
      +             AMQP In | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO AMQP In

      Ldio:AmqpIn

      The LDIO AMQP In listens to messages from an AMQP 1.0 queue.

      Config

      Property Description Required Default Example Supported values
      remote-url URI to AMQP queue Yes N/A amqp://server:61616 In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]]
      queue Name of the queue Yes N/A quickstart-events String
      username Username used in authentication Yes N/A client String
      password Password used in the authentication Yes N/A secret String
      content-type Content-type suggestion* for received messages of queue No application/n-quads application/n-quads Any content type supported by Apache Jena
      • When the header of the message contains a “contentType” property, the listener will use the content type provided by the header.

      Example

            input:
               name: Ldio:AmqpIn
               config:
                 remote-url: amqp://localhost:61616
      diff --git a/latest/ldio/ldio-inputs/ldio-http-in-poller.html b/latest/ldio/ldio-inputs/ldio-http-in-poller.html
      index 5d7bb094a..8146364e1 100644
      --- a/latest/ldio/ldio-inputs/ldio-http-in-poller.html
      +++ b/latest/ldio/ldio-inputs/ldio-http-in-poller.html
      @@ -1,4 +1,4 @@
      -             HTTP In Poller | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP In Poller

      Ldio:HttpInPoller

      The LDIO Http In Poller is a basic Http Poller that will poll a target URL on a specified interval.

      Config

      General properties

      Property Description Required Default Example Supported values
      url Target URL to poll from. Yes N/A http://example.com/my-api HTTP and HTTPS urls (lists are supported)
      cron Cron expression to declare when the polling should take place 1 Yes2 N/A */10 * * * * * Spring Cron Expression
      interval Polling interval declared in ISO 8601 format. Yes2 N/A PT1S ISO 8601 formatted String
      continueOnFail Indicated if continue if polling results in failure No true true true or false

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
      +             HTTP In Poller | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP In Poller

      Ldio:HttpInPoller

      The LDIO Http In Poller is a basic Http Poller that will poll a target URL on a specified interval.

      Config

      General properties

      Property Description Required Default Example Supported values
      url Target URL to poll from. Yes N/A http://example.com/my-api HTTP and HTTPS urls (lists are supported)
      cron Cron expression to declare when the polling should take place 1 Yes2 N/A */10 * * * * * Spring Cron Expression
      interval Polling interval declared in ISO 8601 format. Yes2 N/A PT1S ISO 8601 formatted String
      continueOnFail Indicated if continue if polling results in failure No true true true or false

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
               http:
                 headers:
                   - key: role
      diff --git a/latest/ldio/ldio-inputs/ldio-http-in.html b/latest/ldio/ldio-inputs/ldio-http-in.html
      index 1f8e32466..f289d051a 100644
      --- a/latest/ldio/ldio-inputs/ldio-http-in.html
      +++ b/latest/ldio/ldio-inputs/ldio-http-in.html
      @@ -1 +1 @@
      -             HTTP In | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP In

      Ldio:HttpIn

      The LDIO Http In is a basic Http Listener.

      Data can be written to http://{hostname}:{port}/{pipeline name}

      Config

      This component has no required config

      Pausing

      When paused, this component will return an 503 response to any HTTP-calls it receives


      + HTTP In | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP In

      Ldio:HttpIn

      The LDIO Http In is a basic Http Listener.

      Data can be written to http://{hostname}:{port}/{pipeline name}

      Config

      This component has no required config

      Pausing

      When paused, this component will return an 503 response to any HTTP-calls it receives


      diff --git a/latest/ldio/ldio-inputs/ldio-kafka-in.html b/latest/ldio/ldio-inputs/ldio-kafka-in.html index 37f3a939c..a5acdd75e 100644 --- a/latest/ldio/ldio-inputs/ldio-kafka-in.html +++ b/latest/ldio/ldio-inputs/ldio-kafka-in.html @@ -1,4 +1,4 @@ - Kafka In | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Kafka In

      Ldio:KafkaIn

      The LDIO Kafka In listens to messages from a kafka topic.

      Two security protocols are supported:

      Config

      Property Description Required Default Example Supported values
      content-type Any content type supported by Apache Jena Yes N/A application/n-quads Any type supported by Apache Jena
      bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
      topics Names of the topics (comma separated) Yes N/A quickstart-events String
      group-id Group identifier the consumer belongs to No generated value group-1 String
      security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
      sasl-jaas-user Username used in the security protocol No null client String
      sasl-jaas-password Password used in the security protocol No null secret String

      Example

      NO SECURITY

      outputs:
      +             Kafka In | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Kafka In

      Ldio:KafkaIn

      The LDIO Kafka In listens to messages from a kafka topic.

      Two security protocols are supported:

      Config

      Property Description Required Default Example Supported values
      content-type Any content type supported by Apache Jena Yes N/A application/n-quads Any type supported by Apache Jena
      bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
      topics Names of the topics (comma separated) Yes N/A quickstart-events String
      group-id Group identifier the consumer belongs to No generated value group-1 String
      security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
      sasl-jaas-user Username used in the security protocol No null client String
      sasl-jaas-password Password used in the security protocol No null secret String

      Example

      NO SECURITY

      outputs:
         - name: Ldio:KafkaIn
           config:
             content-type: application/n-quads
      diff --git a/latest/ldio/ldio-inputs/ldio-ldes-client-connector.html b/latest/ldio/ldio-inputs/ldio-ldes-client-connector.html
      index 02e62f351..d0477802d 100644
      --- a/latest/ldio/ldio-inputs/ldio-ldes-client-connector.html
      +++ b/latest/ldio/ldio-inputs/ldio-ldes-client-connector.html
      @@ -1,4 +1,4 @@
      -             LDES Client with Connector | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Ldes Client Connector

      Ldio:LdesClientConnector

      An EDC (Eclipse dataspace Connector) LDIO wrapper component for the ldio ldes client to add EDC support to this component. If you’d like to know how to configure the LDES Client, we refer to the ldio ldes client. The additional functionality provided by this component makes it possible to use the Ldes Client to consume an LDES through an EDC connector. This component exposes two endpoints:

      1. http://://transfer The Ldio component will start the data transfer with the connector. You have to send the transfer request to the LdioLdesClientConnector instead of the EDC consumer connector. The LDIO Ldes Client Connector will start the transfer with the connector and also keep the transfer alive while consuming the LDES (e.g. request a new token when it expires).
      2. http://://token This endpoint should never be called directly. This is the callback to be provided in the transfer request. The EDC connector will use this callback endpoint to provide the LDES Client with a token.

      img

      Config

      Property Description Required Default Example Supported values
      connector-transfer-url The transfer url of the EDC connector which has to be called to start a transfer Yes N/A http://consumer-connector:29193/management/v2/transferprocesses HTTP and HTTPS urls
      proxy-url-to-replace Makes it possible to proxy a part of the url of the LDES**. Indicates which part of the url should be replaced. No empty string http://ldes-behind-connectors.dev string
      proxy-url-replacement Makes it possible to proxy a part of the url of the LDES**. Indicates the replacement url part. No memory http://consumer-connector:29193 string

      ** The url mentioned here are the actual url’s used by the LDES Server (hostname). These are included in the results bodies to indicate relations, etc. This is a temporary solution until the client and server support relative urls.

      Examples

      input:
      +             LDES Client with Connector | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Ldes Client Connector

      Ldio:LdesClientConnector

      An EDC (Eclipse dataspace Connector) LDIO wrapper component for the ldio ldes client to add EDC support to this component. If you’d like to know how to configure the LDES Client, we refer to the ldio ldes client. The additional functionality provided by this component makes it possible to use the Ldes Client to consume an LDES through an EDC connector. This component exposes two endpoints:

      1. http://://transfer The Ldio component will start the data transfer with the connector. You have to send the transfer request to the LdioLdesClientConnector instead of the EDC consumer connector. The LDIO Ldes Client Connector will start the transfer with the connector and also keep the transfer alive while consuming the LDES (e.g. request a new token when it expires).
      2. http://://token This endpoint should never be called directly. This is the callback to be provided in the transfer request. The EDC connector will use this callback endpoint to provide the LDES Client with a token.

      img

      Config

      Property Description Required Default Example Supported values
      connector-transfer-url The transfer url of the EDC connector which has to be called to start a transfer Yes N/A http://consumer-connector:29193/management/v2/transferprocesses HTTP and HTTPS urls
      proxy-url-to-replace Makes it possible to proxy a part of the url of the LDES**. Indicates which part of the url should be replaced. No empty string http://ldes-behind-connectors.dev string
      proxy-url-replacement Makes it possible to proxy a part of the url of the LDES**. Indicates the replacement url part. No memory http://consumer-connector:29193 string

      ** The url mentioned here are the actual url’s used by the LDES Server (hostname). These are included in the results bodies to indicate relations, etc. This is a temporary solution until the client and server support relative urls.

      Examples

      input:
         name: Ldio:LdesClientConnector
         config:
           url: http://consumer-connector:29291/public
      diff --git a/latest/ldio/ldio-inputs/ldio-ldes-client.html b/latest/ldio/ldio-inputs/ldio-ldes-client.html
      index 2636afddf..31b41980f 100644
      --- a/latest/ldio/ldio-inputs/ldio-ldes-client.html
      +++ b/latest/ldio/ldio-inputs/ldio-ldes-client.html
      @@ -1,4 +1,4 @@
      -             LDES Client | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO LDES Client

      The LDES Client is a component which can be used by data consumers to replicate and synchronize an LDES.
      When replication or synchronization is halted, the LDES Client is able to resume where it has stopped. More information on how consumption of an LDES works can be found here.

      Processing fragments

      One or more URLs need to be configured in the LDES Client. If more URLs are configured, they need to be part of the same LDES.
      The configured fragments (URLs) will be processed and all relations will be added to the (non-persisted) queue.
      As long as the LDES Client runs, new fragments that need to be processed can be added to the queue. The LDES Client will keep track of the mutable and immutable fragments it did already process. When an immutable fragment that already has been processed is added to the queue, it will be ignored.

      Mutable fragments usually have a max-age set in the Cache-control header. If this isn’t the case, a default expiration interval will be used to set an expiration date on the fragment. When the max-age or default expiration interval of a fragment expires, the fragment will be put into the queue again so that the LDES Client fetches it again.

      Processing members within fragments

      The LDES Client keeps track of the processed members of mutable fragments, to make sure members are only processed once within a fragment. When the fragment is marked as immutable, and no members can be added anymore, the LDES Client will stop keeping track of members processed within that fragment.

      Filtering

      Exactly-once-filter

      To have the possibility to filter out already received members, the “exactly-once-filter” can be enabled in configuration. The filter will check whether a member was already processed in other fragments.
      The IDs of all processed members will be remembered by the filter and when a duplicate member is processed, it will be filtered out before sending it to the output of the Client.

      Note that this filter can not be enabled with version materialisation.

      Latest-state-filter

      When version materialisation is enabled, state objects that does not represent the latest state can be filter out by enabling the “latest-state-filter” in the configuration.

      Both the versionOf and the timestamp of the version object members will be remembered by the filter. When a new member with the same versionOf and a timestamp that is before or equal to the latest remembered timestamp, the member will be filtered out. When a member is processed that has a later timestamp than the last remembered member, that last remembered member will be overwritten and the new member will be processed.

      Flow of the Latest State Filter

      flowchart LR
      +             LDES Client | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO LDES Client

      The LDES Client is a component which can be used by data consumers to replicate and synchronize an LDES.
      When replication or synchronization is halted, the LDES Client is able to resume where it has stopped. More information on how consumption of an LDES works can be found here.

      Processing fragments

      One or more URLs need to be configured in the LDES Client. If more URLs are configured, they need to be part of the same LDES.
      The configured fragments (URLs) will be processed and all relations will be added to the (non-persisted) queue.
      As long as the LDES Client runs, new fragments that need to be processed can be added to the queue. The LDES Client will keep track of the mutable and immutable fragments it did already process. When an immutable fragment that already has been processed is added to the queue, it will be ignored.

      Mutable fragments usually have a max-age set in the Cache-control header. If this isn’t the case, a default expiration interval will be used to set an expiration date on the fragment. When the max-age or default expiration interval of a fragment expires, the fragment will be put into the queue again so that the LDES Client fetches it again.

      Processing members within fragments

      The LDES Client keeps track of the processed members of mutable fragments, to make sure members are only processed once within a fragment. When the fragment is marked as immutable, and no members can be added anymore, the LDES Client will stop keeping track of members processed within that fragment.

      Filtering

      Exactly-once-filter

      To have the possibility to filter out already received members, the “exactly-once-filter” can be enabled in configuration. The filter will check whether a member was already processed in other fragments.
      The IDs of all processed members will be remembered by the filter and when a duplicate member is processed, it will be filtered out before sending it to the output of the Client.

      Note that this filter can not be enabled with version materialisation.

      Latest-state-filter

      When version materialisation is enabled, state objects that does not represent the latest state can be filter out by enabling the “latest-state-filter” in the configuration.

      Both the versionOf and the timestamp of the version object members will be remembered by the filter. When a new member with the same versionOf and a timestamp that is before or equal to the latest remembered timestamp, the member will be filtered out. When a member is processed that has a later timestamp than the last remembered member, that last remembered member will be overwritten and the new member will be processed.

      Flow of the Latest State Filter

      flowchart LR
       ;
           CLIENT[LDIO LDES Client] --> Version_Object((Version\n object));
           Version_Object --> Latest_State_Filter(Latest State\nFilter);
      diff --git a/latest/ldio/ldio-outputs/index.html b/latest/ldio/ldio-outputs/index.html
      index 612dcccda..f66d9bccb 100644
      --- a/latest/ldio/ldio-outputs/index.html
      +++ b/latest/ldio/ldio-outputs/index.html
      @@ -1 +1 @@
      -             LDIO Outputs | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Outputs

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      + LDIO Outputs | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Orchestrator Outputs

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      diff --git a/latest/ldio/ldio-outputs/ldio-amqp-out.html b/latest/ldio/ldio-outputs/ldio-amqp-out.html index d49b645a7..d61f7572d 100644 --- a/latest/ldio/ldio-outputs/ldio-amqp-out.html +++ b/latest/ldio/ldio-outputs/ldio-amqp-out.html @@ -1,4 +1,4 @@ - AMQP Out | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO AMQP Out

      Ldio:AmqpOut

      The LDIO AMQP Out sends messages to an AMQP 1.0 queue. The content-type configured in the rdf-writer.content-type is added as a header to the message with key “contentType”.

      Config

      Property Description Required Default Supported values Example
      remote-url URI to AMQP queue Yes N/A In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] amqp://server:61616
      queue Name of the queue Yes N/A String quickstart-events
      username Username used in authentication Yes N/A String client
      password Password used in the authentication Yes N/A String secret

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
      +             AMQP Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO AMQP Out

      Ldio:AmqpOut

      The LDIO AMQP Out sends messages to an AMQP 1.0 queue. The content-type configured in the rdf-writer.content-type is added as a header to the message with key “contentType”.

      Config

      Property Description Required Default Supported values Example
      remote-url URI to AMQP queue Yes N/A In line with amqp[s]://hostname:port[?option=value[&option2=value...]] or amqpws[s]://hostname:port[/path][?option=value[&option2=value...]] amqp://server:61616
      queue Name of the queue Yes N/A String quickstart-events
      username Username used in authentication Yes N/A String client
      password Password used in the authentication Yes N/A String secret

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
               rdf-writer:
                 content-type: application/n-quads
       

      Format as JSON-LD with given frame:

            config:
      diff --git a/latest/ldio/ldio-outputs/ldio-console-out.html b/latest/ldio/ldio-outputs/ldio-console-out.html
      index 35e31a0b0..9f35a1757 100644
      --- a/latest/ldio/ldio-outputs/ldio-console-out.html
      +++ b/latest/ldio/ldio-outputs/ldio-console-out.html
      @@ -1,4 +1,4 @@
      -             Console Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Console Out

      Ldio:ConsoleOut

      The LDIO Console Out will output its given model to the console.

      Config

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
      +             Console Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Console Out

      Ldio:ConsoleOut

      The LDIO Console Out will output its given model to the console.

      Config

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
               rdf-writer:
                 content-type: application/n-quads
       

      Format as JSON-LD with given frame:

            config:
      diff --git a/latest/ldio/ldio-outputs/ldio-http-out.html b/latest/ldio/ldio-outputs/ldio-http-out.html
      index 680884c27..6005e18fb 100644
      --- a/latest/ldio/ldio-outputs/ldio-http-out.html
      +++ b/latest/ldio/ldio-outputs/ldio-http-out.html
      @@ -1,4 +1,4 @@
      -             HTTP Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP Out

      Ldio:HttpOut

      The LDIO HTTP Out is a basic Http Client that will send the given Linked Data model to a target url.

      Config

      Property Description Required Default Example Supported values
      endpoint Target url. Yes N/A http://example.com/endpoint HTTP and HTTPS urls

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
      +             HTTP Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO HTTP Out

      Ldio:HttpOut

      The LDIO HTTP Out is a basic Http Client that will send the given Linked Data model to a target url.

      Config

      Property Description Required Default Example Supported values
      endpoint Target url. Yes N/A http://example.com/endpoint HTTP and HTTPS urls

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
               rdf-writer:
                 content-type: application/n-quads
       

      Format as JSON-LD with given frame:

            config:
      diff --git a/latest/ldio/ldio-outputs/ldio-http-sparql-out.html b/latest/ldio/ldio-outputs/ldio-http-sparql-out.html
      index 1ee718693..c1a9a395c 100644
      --- a/latest/ldio/ldio-outputs/ldio-http-sparql-out.html
      +++ b/latest/ldio/ldio-outputs/ldio-http-sparql-out.html
      @@ -1,4 +1,4 @@
      -             HTTP Sparql Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      HTTP Sparql Out

      Ldio:HttpSparqlOut

      The HTTP SPARQL Out component can be used to write data to a SPARQL host, with Virtuoso as the most common known one.

      Config

      Property Description Required Default Example Supported values
      endpoint The url of the sparql host Yes N/A http://localhost:8890/sparql URL
      graph The graph whereto must be written No N/A http://example.graph.com String
      skolemisation.skolemDomain If the skolem domain is set, skolemisation will be triggered before the triples are written to the sparql host No N/A http://example.org Any valid IRI
      replacement.enabled Whether the old nodes must be replaced by the new ones No true false Boolean value
      replacement.depth How deep the default delete query must delete nested nodes from the existing subject, will be ignored if replacement.deleteFunctionis set No 10 15 Integer
      replacement.deleteFunction If this property is set, then the default delete function will be overridden with this delete function No N/A DELETE { ?s ?p ?o} WHERE { ?s ?p ?o } String

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
      +             HTTP Sparql Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      HTTP Sparql Out

      Ldio:HttpSparqlOut

      The HTTP SPARQL Out component can be used to write data to a SPARQL host, with Virtuoso as the most common known one.

      Config

      Property Description Required Default Example Supported values
      endpoint The url of the sparql host Yes N/A http://localhost:8890/sparql URL
      graph The graph whereto must be written No N/A http://example.graph.com String
      skolemisation.skolemDomain If the skolem domain is set, skolemisation will be triggered before the triples are written to the sparql host No N/A http://example.org Any valid IRI
      replacement.enabled Whether the old nodes must be replaced by the new ones No true false Boolean value
      replacement.depth How deep the default delete query must delete nested nodes from the existing subject, will be ignored if replacement.deleteFunctionis set No 10 15 Integer
      replacement.deleteFunction If this property is set, then the default delete function will be overridden with this delete function No N/A DELETE { ?s ?p ?o} WHERE { ?s ?p ?o } String

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
               http:
                 headers:
                   - key: role
      diff --git a/latest/ldio/ldio-outputs/ldio-kafka-out.html b/latest/ldio/ldio-outputs/ldio-kafka-out.html
      index 357de527b..2551e1888 100644
      --- a/latest/ldio/ldio-outputs/ldio-kafka-out.html
      +++ b/latest/ldio/ldio-outputs/ldio-kafka-out.html
      @@ -1,4 +1,4 @@
      -             Kafka Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Kafka Out

      Ldio:KafkaOut

      The LDIO Kafka Out sends messages to a kafka topic. Two security protocols are supported:

      Config

      Property Description Required Default Example Supported values
      bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
      topic Name of the topic Yes N/A quickstart-events String
      key-property-path Optional property path to extract the kafka key from the data model No null http://purl.org/dc/terms/title ARQ property path
      security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
      sasl-jaas-user Username used in the security protocol No null client String
      sasl-jaas-password Password used in the security protocol No null secret String
      frame-type RDF type of the objects that need to be included for JSON-LD framing. No N/A http://purl.org/goodrelations/v1#Offering Any RDF type

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
      +             Kafka Out | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Kafka Out

      Ldio:KafkaOut

      The LDIO Kafka Out sends messages to a kafka topic. Two security protocols are supported:

      Config

      Property Description Required Default Example Supported values
      bootstrap-servers Comma separated list of uris of the bootstrap servers Yes N/A localhost:9012 url
      topic Name of the topic Yes N/A quickstart-events String
      key-property-path Optional property path to extract the kafka key from the data model No null http://purl.org/dc/terms/title ARQ property path
      security-protocol Security protocol to be used to connect to the kafka broker No NO_AUTH SASL_SSL_PLAIN SASL_SSL_PLAIN or NO_AUTH
      sasl-jaas-user Username used in the security protocol No null client String
      sasl-jaas-password Password used in the security protocol No null secret String
      frame-type RDF type of the objects that need to be included for JSON-LD framing. No N/A http://purl.org/goodrelations/v1#Offering Any RDF type

      RDF Writer Properties

      Property Description Required Default Supported values Example
      rdf-writer.content-type Target content type. No text/turtle Any type supported by Apache Jena application/ld+json
      rdf-writer.frame Additional JSON-LD Frame to format the outputted JSON-LD Object. No N/A Any valid JSON Object that describes a JSON-LD Frame See https://www.w3.org/TR/json-ld11-framing/#sample-library-frame
      Example RDF Writer config

      Format as N-Quads:

            config:
               rdf-writer:
                 content-type: application/n-quads
       

      Format as JSON-LD with given frame:

            config:
      diff --git a/latest/ldio/ldio-outputs/ldio-repository-sink.html b/latest/ldio/ldio-outputs/ldio-repository-sink.html
      index ad4b03145..05b8fd907 100644
      --- a/latest/ldio/ldio-outputs/ldio-repository-sink.html
      +++ b/latest/ldio/ldio-outputs/ldio-repository-sink.html
      @@ -1 +1 @@
      -             Repository Sink | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Repository Sink

      Ldio:RepositorySink

      The repository Sink is used to flush an LDES stream into a triplestore. Any triplestore that supports the RDF4J remote repository API can be used.

      Config

      Property Description Required Default Example Supported values
      sparql-host The url of the server hosting the repository Yes N/A http://repositoryServer URL
      repository-id The rdf4j repository id Yes N/A repoId String
      named-graph If set, the triples will be written to this named graph No N/A http://name Any valid IRI
      batch-size Number of members or models that will be committed at once No 500 500 Integer
      batch-timeout If the batch size has not been reached within this number of milliseconds, the members will be committed anyway. No 120000 30000 Integer

      Batching

      To increase the performance of this materialiser, members will be committed in batch to the triple store. However, it’s important to notice that this can have an impact on the data integrity. First of all, there could be a delay, with a maximum delay of the configured batch timeout, when the triple store will be up-to-date. Secondly, if something goes wrong halfway of a batch, all the members in that batch will not be committed to triple story and thus will be gone.

      So the more important data integrity is, the lower the batch-size and batch-timeout should be configured. If a more performant repository materialiser is desired, batch-size and batch-timeout should be configured somewhat higher.


      + Repository Sink | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Repository Sink

      Ldio:RepositorySink

      The repository Sink is used to flush an LDES stream into a triplestore. Any triplestore that supports the RDF4J remote repository API can be used.

      Config

      Property Description Required Default Example Supported values
      sparql-host The url of the server hosting the repository Yes N/A http://repositoryServer URL
      repository-id The rdf4j repository id Yes N/A repoId String
      named-graph If set, the triples will be written to this named graph No N/A http://name Any valid IRI
      batch-size Number of members or models that will be committed at once No 500 500 Integer
      batch-timeout If the batch size has not been reached within this number of milliseconds, the members will be committed anyway. No 120000 30000 Integer

      Batching

      To increase the performance of this materialiser, members will be committed in batch to the triple store. However, it’s important to notice that this can have an impact on the data integrity. First of all, there could be a delay, with a maximum delay of the configured batch timeout, when the triple store will be up-to-date. Secondly, if something goes wrong halfway of a batch, all the members in that batch will not be committed to triple story and thus will be gone.

      So the more important data integrity is, the lower the batch-size and batch-timeout should be configured. If a more performant repository materialiser is desired, batch-size and batch-timeout should be configured somewhat higher.


      diff --git a/latest/ldio/ldio-transformers/index.html b/latest/ldio/ldio-transformers/index.html index fb405fcec..9c88abcd7 100644 --- a/latest/ldio/ldio-transformers/index.html +++ b/latest/ldio/ldio-transformers/index.html @@ -1 +1 @@ - LDIO Transformers | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions Orchestrator Transformers

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      + LDIO Transformers | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Linked Data Interactions Orchestrator Transformers

      The LDI Core module contains the components maintained by the VSDS team in order to accommodate the onboarding of LDES onboarders.

      Each component can be wrapped in a desired implementation framework (LDI-orchestrator, NiFi, …) to be used.


      Table of contents


      diff --git a/latest/ldio/ldio-transformers/ldio-change-detection-filter.html b/latest/ldio/ldio-transformers/ldio-change-detection-filter.html index 500106f66..7308bb380 100644 --- a/latest/ldio/ldio-transformers/ldio-change-detection-filter.html +++ b/latest/ldio/ldio-transformers/ldio-change-detection-filter.html @@ -1,4 +1,4 @@ - Change Detection Filter | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Change Detection Filter

      Ldio:ChangeDetectionFilter

      The LDIO Change Detection Filter, which is in fact a transformer, keeps track of each member with the same subject if the state has changed. If not, the member will be ignored, otherwise the member will be sent further through the pipeline. This can come in handy when you do not want to spam your server for example with duplicate state objects.

      Flow of the Change Detection Filter

      flowchart LR
      +             Change Detection Filter | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Change Detection Filter

      Ldio:ChangeDetectionFilter

      The LDIO Change Detection Filter, which is in fact a transformer, keeps track of each member with the same subject if the state has changed. If not, the member will be ignored, otherwise the member will be sent further through the pipeline. This can come in handy when you do not want to spam your server for example with duplicate state objects.

      Flow of the Change Detection Filter

      flowchart LR
       ;
           PREV_TRANSFORMER[Previous transformer] --> State_Object((State\n object));
           State_Object --> FILTER(Change Detection\nFilter);
      diff --git a/latest/ldio/ldio-transformers/ldio-geojson-to-wkt.html b/latest/ldio/ldio-transformers/ldio-geojson-to-wkt.html
      index 7b9c0cc17..d4fd233b4 100644
      --- a/latest/ldio/ldio-transformers/ldio-geojson-to-wkt.html
      +++ b/latest/ldio/ldio-transformers/ldio-geojson-to-wkt.html
      @@ -1,4 +1,4 @@
      -             GeoJson To WKT Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO GeoJson To WKT Transformer

      Ldio:GeoJsonToWktTransformer

      The GeoJson to Wkt Transformer will transform any GeoJson statements (with predicate https://purl.org/geojson/vocab#geometry) to a wkt string.

      When the transform-to-rdf+wkt-enabled configuration is enabled, GeoJSON statements will be converted into RDF+WKT format.

      For example:

      {
      +             GeoJson To WKT Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO GeoJson To WKT Transformer

      Ldio:GeoJsonToWktTransformer

      The GeoJson to Wkt Transformer will transform any GeoJson statements (with predicate https://purl.org/geojson/vocab#geometry) to a wkt string.

      When the transform-to-rdf+wkt-enabled configuration is enabled, GeoJSON statements will be converted into RDF+WKT format.

      For example:

      {
         "https://purl.org/geojson/vocab#geojson:geometry": {
           "@type": "Point",
           "https://purl.org/geojson/vocab#geojson:coordinates": [
      diff --git a/latest/ldio/ldio-transformers/ldio-http-enricher.html b/latest/ldio/ldio-transformers/ldio-http-enricher.html
      index bb3d6e29b..f329be493 100644
      --- a/latest/ldio/ldio-transformers/ldio-http-enricher.html
      +++ b/latest/ldio/ldio-transformers/ldio-http-enricher.html
      @@ -1,4 +1,4 @@
      -             Http Enricher Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Http Enricher

      Ldio:HttpEnricher

      A transformer which allows to send a GET or POST HTTP request to a dynamic URL provided by the model. The response is converted to linked data and added to the incoming model.

      Config

      Property Description Required Default Supported values Example
      adapter.name This transformer requires an ldio-adapter to convert the responses to linked data. Yes N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
      adapter.config.xxx Optional config that may be required by the adapter No N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
      url-property-path Path defining the url that needs to be selected on the model for the http request. Yes N/A Valid property paths http://example.org/url
      header-property-path Path defining the headers that needs to be selected on the model for the http request. No N/A Valid property paths http://example.org/header
      body-property-path Path defining the body that needs to be selected on the model to be added when a POST http request is used. No N/A Valid property paths http://example.org/meta/http://example.org/body
      http-method-property-path Path defining the http method that needs to be selected on the model for the http request. No GET GET or POST GET

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
      +             Http Enricher Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Http Enricher

      Ldio:HttpEnricher

      A transformer which allows to send a GET or POST HTTP request to a dynamic URL provided by the model. The response is converted to linked data and added to the incoming model.

      Config

      Property Description Required Default Supported values Example
      adapter.name This transformer requires an ldio-adapter to convert the responses to linked data. Yes N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
      adapter.config.xxx Optional config that may be required by the adapter No N/A Paths of supported LDIO Adapters Ldio:RdfAdapter
      url-property-path Path defining the url that needs to be selected on the model for the http request. Yes N/A Valid property paths http://example.org/url
      header-property-path Path defining the headers that needs to be selected on the model for the http request. No N/A Valid property paths http://example.org/header
      body-property-path Path defining the body that needs to be selected on the model to be added when a POST http request is used. No N/A Valid property paths http://example.org/meta/http://example.org/body
      http-method-property-path Path defining the http method that needs to be selected on the model for the http request. No GET GET or POST GET

      LDIO Http Requester properties

      Authentication properties

      Property Description Required Default Supported values Example
      auth.type The type of authentication required by the LDES server No NO_AUTH NO_AUTH, API_KEY or OAUTH2_CLIENT_CREDENTIALS OAUTH2_CLIENT_CREDENTIALS
      auth.api-key The api key when using auth.type ‘API_KEY’ No N/A String myKey
      auth.api-key-header The header for the api key when using auth.type ‘API_KEY’ No X-API-KEY String X-API-KEY
      auth.client-id The client identifier when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String myId
      auth.client-secret The client secret when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A String mySecret
      auth.token-endpoint The token endpoint when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token
      auth.scope The Oauth2 scope when using auth.type ‘OAUTH2_CLIENT_CREDENTIALS’ No N/A HTTP and HTTPS urls http://localhost:8000/token

      Retry properties

      Property Description Required Default Supported values Example
      retries.enabled Indicates if the http client should retry http requests when the server cannot be reached. No true Boolean value true
      retries.max Max number of retries the http client should do when retries.enabled = true No 5 Integer 100
      retries.statuses-to-retry Custom comma seperated list of http status codes that can trigger a retry in the http client. No N/A Comma seperated list of Integers 410,451

      When retries are enabled, the following statuses are always retried, regardless of the configured statuses-to-retry:

      • 429
      • 5xx (500 and above)

      Rate limit properties

      Property Description Required Default Supported values Example
      rate-limit.enabled Indicates if the http client should limit http requests when calling the server. No false true or false false
      rate-limit.limit Limit of requests per period, which is defined below, that the http client should do when rate-limit.enabled = true No 500 Integer 100
      rate-limit.period Period in which the limit of requests, which is defined above, can be reached by the http client when rate-limit.enabled = true No PT1M ISO 8601 Duration PT1H

      Http headers

      Property Description Required Default Supported values Example
      http.headers.[].key/value A list of custom http headers can be added. A key and value has to be provided for every header. No N/A String role
      Example Http Requester config
            config:
               http:
                 headers:
                   - key: role
      diff --git a/latest/ldio/ldio-transformers/ldio-skolemisation-transformer.html b/latest/ldio/ldio-transformers/ldio-skolemisation-transformer.html
      index 95afee07d..3b7c55214 100644
      --- a/latest/ldio/ldio-transformers/ldio-skolemisation-transformer.html
      +++ b/latest/ldio/ldio-transformers/ldio-skolemisation-transformer.html
      @@ -1,4 +1,4 @@
      -             Skolemisation Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Skolemisation Transformer

      Ldio:SkolemisationTransformer

      A transformer which skolemises the incoming model.

      What is Skolemisation

      In the context of Linked Data, Skolemisation is a process used to handle blank nodes or anonymous nodes in RDF (Resource Description Framework) graphs. These nodes, which lack unique identifiers, are frequently employed in RDF/S knowledge bases to represent complex attributes or resources with known properties but unknown identities.

      Skolemisation in Linked Data involves the transformation of these blank nodes into Skolem Uniform Resource Identifiers ( URIs). The process enhances the clarity makes it easier to reference these nodes in future datasets.

      This process is particularly useful when dealing with substantial volumes of unstructured data distributed across diverse sources. By improving the accuracy and relevance of RDF summaries in relation to original datasets, Skolemisation enhances the efficiency and effectiveness of subsequent queries against these summaries.

      In summary, Skolemisation in Linked Data provides a way to handle the complexity introduced by blank nodes in RDF graphs, thereby enhancing the clarity, interoperability, and usability of the data.

      Example

      Suppose we have the following RDF triples with a blank node represented as _::

      _:bnode <http://purl.org/dc/terms/title> "The Lord of the Rings" .
      +             Skolemisation Transformer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Skolemisation Transformer

      Ldio:SkolemisationTransformer

      A transformer which skolemises the incoming model.

      What is Skolemisation

      In the context of Linked Data, Skolemisation is a process used to handle blank nodes or anonymous nodes in RDF (Resource Description Framework) graphs. These nodes, which lack unique identifiers, are frequently employed in RDF/S knowledge bases to represent complex attributes or resources with known properties but unknown identities.

      Skolemisation in Linked Data involves the transformation of these blank nodes into Skolem Uniform Resource Identifiers ( URIs). The process enhances the clarity makes it easier to reference these nodes in future datasets.

      This process is particularly useful when dealing with substantial volumes of unstructured data distributed across diverse sources. By improving the accuracy and relevance of RDF summaries in relation to original datasets, Skolemisation enhances the efficiency and effectiveness of subsequent queries against these summaries.

      In summary, Skolemisation in Linked Data provides a way to handle the complexity introduced by blank nodes in RDF graphs, thereby enhancing the clarity, interoperability, and usability of the data.

      Example

      Suppose we have the following RDF triples with a blank node represented as _::

      _:bnode <http://purl.org/dc/terms/title> "The Lord of the Rings" .
       _:bnode <http://purl.org/dc/terms/creator> "J.R.R. Tolkien" .
       

      In this example, _: is a blank node that represents a resource (a book in this case) with known properties (title and creator) but an unknown identity.

      Through Skolemisation, we can replace the blank node with a Skolem URI. The Skolem URI is typically a URL that is unique to the blank node and is generated by the system handling the RDF data. Here’s how it might look:

      <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/title> "The Lord of the Rings" .
       <http://example.com/.well-known/genid/123456> <http://purl.org/dc/terms/creator> "J.R.R. Tolkien" .
      diff --git a/latest/ldio/ldio-transformers/ldio-sparql-construct.html b/latest/ldio/ldio-transformers/ldio-sparql-construct.html
      index db146afdc..347553706 100644
      --- a/latest/ldio/ldio-transformers/ldio-sparql-construct.html
      +++ b/latest/ldio/ldio-transformers/ldio-sparql-construct.html
      @@ -1,4 +1,4 @@
      -             SPARQL Construct | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO SPARQL Construct

      Ldio:SparqlConstructTransformer

      The SPARQL Construct Transformer will modify the model based on the given SPARQL Construct Query.

      SPARQL Construct is a query language used in semantic Web technologies to create RDF (Resource Description Framework) graphs from existing RDF data. It allows users to specify a pattern of data they wish to extract from the RDF data and construct a new graph based on that pattern.

      The SPARQL Construct query language provides a powerful way to create new RDF data by using existing data as the input. It can be used to transform RDF data into different formats, as well as to simplify the structure of RDF data by aggregating or filtering data.

      This SPARQL Construct Transfomer building block can be used to execute model transformations.

      Splitting models using SPARQL Construct

      This component can be used to split models into multiple models using graphs. For example, the below query will create a dataset containing multiple models defined by ‘GRAPH’. The SPARQL construct component will extract all named models from the dataset and add all statements from the default model. The component will then return a collection of models.

      CONSTRUCT {
      +             SPARQL Construct | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO SPARQL Construct

      Ldio:SparqlConstructTransformer

      The SPARQL Construct Transformer will modify the model based on the given SPARQL Construct Query.

      SPARQL Construct is a query language used in semantic Web technologies to create RDF (Resource Description Framework) graphs from existing RDF data. It allows users to specify a pattern of data they wish to extract from the RDF data and construct a new graph based on that pattern.

      The SPARQL Construct query language provides a powerful way to create new RDF data by using existing data as the input. It can be used to transform RDF data into different formats, as well as to simplify the structure of RDF data by aggregating or filtering data.

      This SPARQL Construct Transfomer building block can be used to execute model transformations.

      Splitting models using SPARQL Construct

      This component can be used to split models into multiple models using graphs. For example, the below query will create a dataset containing multiple models defined by ‘GRAPH’. The SPARQL construct component will extract all named models from the dataset and add all statements from the default model. The component will then return a collection of models.

      CONSTRUCT {
           GRAPH ?s {
               ?s ?p ?o
           }
      diff --git a/latest/ldio/ldio-transformers/ldio-version-materializer.html b/latest/ldio/ldio-transformers/ldio-version-materializer.html
      index b8bba297b..d3f8d3bb6 100644
      --- a/latest/ldio/ldio-transformers/ldio-version-materializer.html
      +++ b/latest/ldio/ldio-transformers/ldio-version-materializer.html
      @@ -1,4 +1,4 @@
      -             Version Materializer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Version Materializer

      Ldio:VersionMaterialiser

      The Version Materializer will transform a Version Object to a State Object.

      Config

      Property Description Required Default Example Supported values
      versionOf-property Property that points to the versionOfPath. Yes N/A “http://purl.org/dc/terms/isVersionOf” String
      restrict-to-members Only returns the statements of the node containing the versionOf property, including potential nested blank nodes. No false false true or false

      Example

      Version Object

      A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model.

      An example would be:

      @prefix time: <http://www.w3.org/2006/time#> .
      +             Version Materializer | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Version Materializer

      Ldio:VersionMaterialiser

      The Version Materializer will transform a Version Object to a State Object.

      Config

      Property Description Required Default Example Supported values
      versionOf-property Property that points to the versionOfPath. Yes N/A “http://purl.org/dc/terms/isVersionOf” String
      restrict-to-members Only returns the statements of the node containing the versionOf property, including potential nested blank nodes. No false false true or false

      Example

      Version Object

      A version object is an entity that represents the state of an object at a specific point in time and associates it with a unique identifier (member ID). This identifier serves as the subject within the context of the RDF data model.

      An example would be:

      @prefix time: <http://www.w3.org/2006/time#> .
       @prefix ex:   <http://example.org/> .
       @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
       @prefix dc: <http://purl.org/dc/terms/> .
      diff --git a/latest/ldio/ldio-transformers/ldio-version-object-creator.html b/latest/ldio/ldio-transformers/ldio-version-object-creator.html
      index 57bafff2a..6896af25c 100644
      --- a/latest/ldio/ldio-transformers/ldio-version-object-creator.html
      +++ b/latest/ldio/ldio-transformers/ldio-version-object-creator.html
      @@ -1,4 +1,4 @@
      -             Version Object Creator | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Version Object Creator

      Ldio:VersionObjectCreator

      The Version Object Creator will transform a State Object to a Version Object.

      Config

      Property Description Required Default Example Supported values
      date-observed-property Property path (IRI format ‘<>’) that points to a literal which should be used as timestampPath. Defaults to current timestamp. No Current Timestamp <https://example.org/ObservedAt> String
      member-type Defines the RDF type of the object to be transformed to a version object. Yes N/A https://example.org/Person String
      delimiter Defines how the version object id will be constructed. (versionOf + delimiter + dateObserved) No / / String
      generatedAt-property A statement will be added to the model with the generatedAt value and the given property. No http://www.w3.org/ns/prov#generatedAtTime http://www.w3.org/ns/prov#generatedAtTime String
      versionOf-property A statement will be added to the model with the versionOf value and the given property. No http://purl.org/dc/terms/isVersionOf http://purl.org/dc/terms/isVersionOf String

      Example

      State Object

      A state object is an entity that represents the most recent state of an object, and in this context, the subject is not unique. Below is an example presented in RDF format: Below is an example presented in RDF format:

      @prefix time: <http://www.w3.org/2006/time#> .
      +             Version Object Creator | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDIO Version Object Creator

      Ldio:VersionObjectCreator

      The Version Object Creator will transform a State Object to a Version Object.

      Config

      Property Description Required Default Example Supported values
      date-observed-property Property path (IRI format ‘<>’) that points to a literal which should be used as timestampPath. Defaults to current timestamp. No Current Timestamp <https://example.org/ObservedAt> String
      member-type Defines the RDF type of the object to be transformed to a version object. Yes N/A https://example.org/Person String
      delimiter Defines how the version object id will be constructed. (versionOf + delimiter + dateObserved) No / / String
      generatedAt-property A statement will be added to the model with the generatedAt value and the given property. No http://www.w3.org/ns/prov#generatedAtTime http://www.w3.org/ns/prov#generatedAtTime String
      versionOf-property A statement will be added to the model with the versionOf value and the given property. No http://purl.org/dc/terms/isVersionOf http://purl.org/dc/terms/isVersionOf String

      Example

      State Object

      A state object is an entity that represents the most recent state of an object, and in this context, the subject is not unique. Below is an example presented in RDF format: Below is an example presented in RDF format:

      @prefix time: <http://www.w3.org/2006/time#> .
       @prefix ex:   <http://example.org/> .
       @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
       
      diff --git a/latest/ldio/pipeline-management/index.html b/latest/ldio/pipeline-management/index.html
      index 8c6e3a5ad..ad335dda0 100644
      --- a/latest/ldio/pipeline-management/index.html
      +++ b/latest/ldio/pipeline-management/index.html
      @@ -1 +1 @@
      -             Pipeline Management | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied + Pipeline Management | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied diff --git a/latest/ldio/pipeline-management/ldes-client-status.html b/latest/ldio/pipeline-management/ldes-client-status.html index aa5385d50..f95b598b2 100644 --- a/latest/ldio/pipeline-management/ldes-client-status.html +++ b/latest/ldio/pipeline-management/ldes-client-status.html @@ -1,4 +1,4 @@ - LDES Client Status | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDES Client Status

      Just like the LDIO pipelines have a status, so does the Ldio:LdesClient. The client status can be fetched when a pipeline that has a running status, and of course when it contains an LDES client as input component.

      Overview Of The Status Flow

      graph LR
      +             LDES Client Status | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      LDES Client Status

      Just like the LDIO pipelines have a status, so does the Ldio:LdesClient. The client status can be fetched when a pipeline that has a running status, and of course when it contains an LDES client as input component.

      Overview Of The Status Flow

      graph LR
       ;
           REPLICATING --> SYNCHRONISING;
           REPLICATING --> COMPLETED;
      diff --git a/latest/ldio/pipeline-management/management-of-pipelines.html b/latest/ldio/pipeline-management/management-of-pipelines.html
      index 406b09aa9..39aeb2217 100644
      --- a/latest/ldio/pipeline-management/management-of-pipelines.html
      +++ b/latest/ldio/pipeline-management/management-of-pipelines.html
      @@ -1,4 +1,4 @@
      -             Management of Pipelines | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Management of Pipelines

      Pipelines in LDIO can be created in YAML or JSON configuration (although all example configurations are made in YAML, these can also be formatted in JSON).

      A default pipeline looks as follows:

        name: my-first-pipeline
      +             Management of Pipelines | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Management of Pipelines

      Pipelines in LDIO can be created in YAML or JSON configuration (although all example configurations are made in YAML, these can also be formatted in JSON).

      A default pipeline looks as follows:

        name: my-first-pipeline
         input:
           name: name of LDI Input
           config:
      diff --git a/latest/ldio/pipeline-management/pipeline-api.html b/latest/ldio/pipeline-management/pipeline-api.html
      index 339555ba7..ea1700629 100644
      --- a/latest/ldio/pipeline-management/pipeline-api.html
      +++ b/latest/ldio/pipeline-management/pipeline-api.html
      @@ -1 +1 @@
      -             Pipeline Management API | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied
      Swagger UI

      + Pipeline Management API | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied
      Swagger UI

      diff --git a/latest/ldio/pipeline-management/pipeline-status.html b/latest/ldio/pipeline-management/pipeline-status.html index 5d44a16c0..d39f1440c 100644 --- a/latest/ldio/pipeline-management/pipeline-status.html +++ b/latest/ldio/pipeline-management/pipeline-status.html @@ -1,4 +1,4 @@ - Pipeline Status | Linked Data Interactions

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Pipeline Status

      An individual ldio-pipeline can be in one of several different statuses. These different statuses and their behaviour are dependent on the input component of the pipeline.

      Overview Of The Status Flow

      graph LR
      +             Pipeline Status | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Pipeline Status

      An individual ldio-pipeline can be in one of several different statuses. These different statuses and their behaviour are dependent on the input component of the pipeline.

      Overview Of The Status Flow

      graph LR
       ;
           INIT --> RUNNING;
           INIT --> STOPPED;
      diff --git a/latest/ldio/pipeline-management/startup-config.html b/latest/ldio/pipeline-management/startup-config.html
      index e25ab8efd..d2d758ed2 100644
      --- a/latest/ldio/pipeline-management/startup-config.html
      +++ b/latest/ldio/pipeline-management/startup-config.html
      @@ -1,4 +1,4 @@
      -             Startup Configuration | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Startup Configuration

      On startup, pipelines can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml) that looks as follows:

      orchestrator:
      +             Startup Configuration | Linked Data Interactions            

      Skip to main content Link Menu Expand (external link) Document Search Copy Copied

      Startup Configuration

      On startup, pipelines can be defined by creating an application YAML file in the LDIO directory (in docker, this correlates to /ldio/application.yml) that looks as follows:

      orchestrator:
         pipelines:
           - name: my-first-pipeline
             input: