1<!DOCTYPE html> 2<html lang="en-US"> 3<head> 4<meta charset="UTF-8"/> 5<meta name="twitter:widgets:csp" content="on"/> 6<link rel="profile" href="http://gmpg.org/xfn/11"/> 7<link rel="pingback" href="https://www.openfabrics.org/xmlrpc.php"/> 8 9<title>OFMF: Getting Started – OpenFabrics Alliance</title> 10<meta name='robots' content='max-image-preview:large' /> 11<meta name="dlm-version" content="5.3.1"><link rel='dns-prefetch' href='//fonts.googleapis.com' /> 12<link rel="alternate" type="application/rss+xml" title="OpenFabrics Alliance » Feed" href="https://www.openfabrics.org/feed/" /> 13<link rel="alternate" type="application/rss+xml" title="OpenFabrics Alliance » Comments Feed" href="https://www.openfabrics.org/comments/feed/" /> 14<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.openfabrics.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.openfabrics.org%2Fofmf-getting-started%2F" /> 15<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.openfabrics.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.openfabrics.org%2Fofmf-getting-started%2F&format=xml" /> 16<style id="wp-img-auto-sizes-contain-inline-css"> 17img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 18/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 19</style> 20<link rel='stylesheet' id='zn_all_g_fonts-css' href='//fonts.googleapis.com/css?family=Poppins:300,regular,500,600,700|Open+Sans:300,300italic,regular,italic,600,600italic,700,700italic,800,800italic|Roboto+Slab:100,300,regular,700|Josefin+Slab&ver=7.1.2' media='all' /> 21<style id="wp-emoji-styles-inline-css"> 22 23 img.wp-smiley, img.emoji { 24 display: inline !important; 25 border: none !important; 26 box-shadow: none !important; 27 height: 1em !important; 28 width: 1em !important; 29 margin: 0 0.07em !important; 30 vertical-align: -0.1em !important; 31 background: none !important; 32 padding: 0 !important; 33 } 34/*# sourceURL=wp-emoji-styles-inline-css */ 35</style> 36<style id="wp-block-library-inline-css"> 37:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
37--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 38 39/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 40</style> 41<style id="classic-theme-styles-inline-css"> 42/*! This file is auto-generated */ 43.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 44/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 45</style> 46 47<style id="global-styles-inline-css"> 48:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
480) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
48.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 49/*# sourceURL=global-styles-inline-css */ 50</style> 51 52<link rel='stylesheet' id='sr7css-css' href='//www.openfabrics.org/wp-content/plugins/revslider/public/css/sr7.css?ver=1790435102' media='all' /> 53<link rel='stylesheet' id='dlm-frontend-css' href='https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/css/frontend-tailwind.min.css?ver=5.3.1' media='all' /> 54<link rel='stylesheet' id='kallyas-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/style.css?ver=4.26.0' media='all' /> 55<link rel='stylesheet' id='th-bootstrap-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/bootstrap.min.css?ver=4.26.0' media='all' /> 56<link rel='stylesheet' id='th-theme-template-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/template.min.css?ver=4.26.0' media='all' /> 57<link rel='stylesheet' id='zion-frontend-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/framework/zion-builder/assets/css/znb_frontend.css?ver=1.4.0' media='all' /> 58<link rel='stylesheet' id='5002-layout.css-css' href='https://www.openfabrics.org/wp-content/uploads/zion-builder/cache/5002-layout.css?ver=59674a12652cfb8d3063c5dd6045f57f' media='all' /> 59<link rel='stylesheet' id='kallyas-child-css' href='https://www.openfabrics.org/wp-content/themes/kallyas-child/style.css?ver=4.26.0' media='all' /> 60<link rel='stylesheet' id='th-theme-print-stylesheet-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/print.css?ver=4.26.0' media='print' /> 61<link rel='stylesheet' id='th-theme-options-styles-css' href='//www.openfabrics.org/wp-content/uploads/zn_dynamic.css?ver=1790433495' media='all' /> 62<link rel='stylesheet' id='buttons-css' href='https://www.openfabrics.org/wp-includes/css/buttons.min.css?ver=7.1.2' media='all' /> 63<link rel='stylesheet' id='dashicons-css' href='https://www.openfabrics.org/wp-includes/css/dashicons.min.css?ver=7.1.2' media='all' /> 64<link rel='stylesheet' id='mediaelement-css' href='https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17' media='all' /> 65<link rel='stylesheet' id='wp-mediaelement-css' href='https://www.openfabrics.org/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=7.1.2' media='all' /> 66<link rel='stylesheet' id='media-views-css' href='https://www.openfabrics.org/wp-includes/css/media-views.min.css?ver=7.1.2' media='all' /> 67<link rel='stylesheet' id='imgareaselect-css' href='https://www.openfabrics.org/wp-includes/js/imgareaselect/imgareaselect.css?ver=0.9.8' media='all' />
68<script async data-wp-strategy="async" id="tp-tools-js" src="//www.openfabrics.org/wp-content/plugins/revslider/public/js/libs/tptools.js?ver=1790435102"></script>
vendor: 1 bytes, line 68
68
69<script async data-wp-strategy="async" id="sr7-js" src="//www.openfabrics.org/wp-content/plugins/revslider/public/js/sr7.js?ver=1790435102"></script>
vendor: 1 bytes, line 69
69
70<script id="jquery-core-js" src="https://www.openfabrics.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 70
70
71<script id="jquery-migrate-js" src="https://www.openfabrics.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 71
71
72<script id="utils-js-extra"> 73var userSettings = {"url":"/","uid":"0","time":"1790850868","secure":"1"}; 74//# sourceURL=utils-js-extra 75</script>
vendor: 1 bytes, line 75
75
76<script id="utils-js" src="https://www.openfabrics.org/wp-includes/js/utils.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 76
76
77<script id="moxiejs-js" src="https://www.openfabrics.org/wp-includes/js/plupload/moxie.min.js?ver=1.3.5.1"></script>
vendor: 1 bytes, line 77
77
78<script id="plupload-js" src="https://www.openfabrics.org/wp-includes/js/plupload/plupload.min.js?ver=2.1.9"></script>
78 79<link rel="https://api.w.org/" href="https://www.openfabrics.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.openfabrics.org/wp-json/wp/v2/pages/5002" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.openfabrics.org/xmlrpc.php?rsd" /> 80<meta name="generator" content="WordPress 7.1.2" /> 81<link rel="canonical" href="https://www.openfabrics.org/ofmf-getting-started/" /> 82<link rel='shortlink' href='https://www.openfabrics.org/?p=5002' /> 83<!-- Analytics by WP Statistics - https://wp-statistics.com --> 84 <meta name="theme-color" 85 content="#00588c"> 86 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/> 87 88 <!--[if lte IE 8]> 89
89<script type="text/javascript"> 90 var $buoop = { 91 vs: {i: 10, f: 25, o: 12.1, s: 7, n: 9} 92 }; 93 94 $buoop.ol = window.onload; 95 96 window.onload = function () { 97 try { 98 if ($buoop.ol) { 99 $buoop.ol() 100 } 101 } 102 catch (e) { 103 } 104 105 var e = document.createElement("script"); 106 e.setAttribute("type", "text/javascript"); 107 e.setAttribute("src", "https://browser-update.org/update.js"); 108 document.body.appendChild(e); 109 }; 110 </script>
110 111 <![endif]--> 112 113 <!-- for IE6-8 support of HTML5 elements --> 114 <!--[if lt IE 9]> 115
115<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
115 116 <![endif]--> 117 118 <!-- Fallback for animating in viewport --> 119 <noscript> 120 <style type="text/css" media="screen"> 121 .zn-animateInViewport {visibility: visible;} 122 </style> 123 </noscript> 124 <style> 125 #wpadminbar #wp-admin-bar-amelia-menu > .ab-item svg { 126 color: #a7aaad; 127 } 128 129 #wpadminbar #wp-admin-bar-amelia-menu:hover > .ab-item svg { 130 color: #72aee6; 131 } 132 133 #wpadminbar #wp-admin-bar-amelia-menu > .ab-item .ab-icon img { 134 width: 20px; 135 height: 20px; 136 padding: 0; 137 object-fit: contain; 138 } 139 </style><link rel="preconnect" href="https://fonts.googleapis.com"> 140<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin> 141<meta name="generator" content="Powered by Slider Revolution 7.2.0 - responsive, Mobile-Friendly Slider Plugin for WordPress with comfortable drag and drop interface." />
142<script> 143 window._tpt ??= {}; 144 window.SR7 ??= {}; 145 _tpt.R ??= {}; 146 _tpt.R.fonts ??= {}; 147 _tpt.R.fonts.customFonts??= {}; 148 SR7.devMode = false; 149 SR7.F ??= {}; 150 SR7.G ??= {}; 151 SR7.LIB ??= {}; 152 SR7.E ??= {}; 153 SR7.E.gAddons ??= {}; 154 SR7.E.php ??= {}; 155 SR7.E.php["home_url"] = "https:\/\/www.openfabrics.org\/"; 156 SR7.E.php["current_page_link"] = "https:\/\/www.openfabrics.org\/ofmf-getting-started\/"; 157 SR7.E.basicMetas = ["home_url","current_page_link"]; 158 SR7.E.nonce = 'd994b1e648'; 159 SR7.E.ajaxurl = 'https://www.openfabrics.org/wp-admin/admin-ajax.php'; 160 SR7.E.resturl = 'https://www.openfabrics.org/wp-json/'; 161 SR7.E.slug_path = 'revslider/revslider.php'; 162 SR7.E.slug = 'revslider'; 163 SR7.E.plugin_url = 'https://www.openfabrics.org/wp-content/plugins/revslider/'; 164 SR7.E.wp_plugin_url = 'https://www.openfabrics.org/wp-content/plugins/'; 165 SR7.E.revision = '7.2.0'; 166 SR7.E.latest_revision = '7.2.1'; 167 SR7.E.fontBaseUrl = ''; 168 SR7.G.breakPoints = [1240,1024,778,480]; 169 SR7.G.fSUVW = false; 170 SR7.E.modules = ['module','page','slide','layer','layerix','draw','animate','transitions','srtools','canvas','defaults','carousel','navigation','media','modifiers','story','bgpattern','counter','glow','surface','migration']; 171 SR7.E.libs = ['THREE','WEBGL','EFFECTS']; 172 SR7.E.css = ['csslp','cssbtns','cssfilters','cssnav','cssmedia']; 173 SR7.E.resources ??= {}; 174 SR7.E.resources["module"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 175 SR7.E.resources["slide"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 176 SR7.E.resources["layer"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 177 SR7.E.resources["draw"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 178 SR7.E.resources["animate"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 179 SR7.E.resources["transitions"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 180 SR7.E.resources["srtools"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 181 SR7.E.resources["canvas"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 182 SR7.E.resources["carousel"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 183 SR7.E.resources["navigation"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 184 SR7.E.resources["media"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 185 SR7.E.resources["modifiers"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js"; 186 SR7.E.ytnc = false; 187 SR7.JSON ??= {}; 188/*! Slider Revolution 7.0 - Page Processor */ 189!function(){"use strict";window.SR7??={},window._tpt??={},SR7.F??={},SR7.F.getModuleSticky??=t=>t?"top"===t.sticky||"bottom"===t.sticky?t.sticky:!0===t.fixed||"top"===t.fixed?"top":"none":"none",SR7.F.isStickyTop??=t=>"top"===SR7.F.getModuleSticky(t?.settings),SR7.F.isStickyBottom??=t=>"bottom"===SR7.F.getModuleSticky(t?.settings),_tpt.pickSrc??=t=>(window.devicePixelRatio||1)>=2&&t.n2||t.n1,_tpt.vpHUnits??=new Set(["vh","lvh","svh","dvh"]),_tpt.vpHUnit??=t=>{const e=(String(t).match(/[a-z]+$/i)||[""])[0];return!(!_tpt.vpHUnits.has(e)||isNaN(parseFloat(t)))&&e},_tpt.vpH??=(t="lvh")=>{const e=window.innerWidth+"x"+window.innerHeight;if(_tpt.__vpH?.key!==e){if(!document.body)return window.innerHeight;const t=document.createElement("div");t.style.cssText="position:absolute;left:-9999px;top:0;width:0;visibility:hidden;pointer-events:none",document.body.appendChild(t);const s={key:e};for(const e of["vh","lvh","svh","dvh"])t.style.height="",t.style.height="100"+e,s[e]=t.getBoundingClientRect().height||window.innerHeight;t.remove(),_tpt.__vpH=s}return _tpt.__vpH[t]??window.innerHeight},_tpt.toPxH??=t=>{const e=_tpt.vpHUnit(t);return e?Math.round(parseFloat(t)/100*_tpt.vpH(e)):parseFloat(t)},SR7.version="Slider Revolution 7.1.0",_tpt.getMobileZoom=()=>_tpt.is_mobile?document.documentElement.clientWidth/window.innerWidth:1,_tpt.getWinDim=function(t){let e=SR7.F?.modal?.visible&&SR7.M[SR7.F.module.getIdByAlias(SR7.F.modal.requested)];_tpt.scrollBar=window.innerWidth!==document.documentElement.clientWidth||e&&window.innerWidth!==e.c.module.clientWidth,_tpt.winW=_tpt.getMobileZoom()*window.innerWidth-(_tpt.scrollBar||"prepare"===t?_tpt.scrollBarW??_tpt.mesureScrollBar():0),_tpt.win
189H=_tpt.getMobileZoom()*window.innerHeight,_tpt.winWAll=document.documentElement.clientWidth},SR7.F.isCarousel=t=>!SR7.E.backend&&"carousel"===SR7.M[t].settings.type,SR7.F.moduleType=t=>SR7.E.backend&&"carousel"===SR7.M[t].settings.type?"standard":SR7.M[t].settings.type,SR7.F.getAutoSlideStep=t=>"carousel"===SR7.M[t]?.settings?.type&&"reverse"===SR7.M[t]?.settings?.carousel?.aDir?"-1":"+1",SR7.F.navDirFlipped=t=>!!SR7.F.getRTLMode?.(t)!=("-1"===SR7.F.getAutoSlideStep(t)),_tpt.getResponsiveLevel=function(t){return SR7.G.fSUVW?_tpt.closestGE(t,window.innerWidth):_tpt.closestGE(t,_tpt.winWAll)},_tpt.mesureScrollBar=function(){let t=document.createElement("div");return t.className="RSscrollbar-measure",t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t),_tpt.scrollBarW=t.offsetWidth-t.clientWidth,document.body.removeChild(t),_tpt.scrollBarW},_tpt.loadCSS??=async function(t,e,s){return s?_tpt.R.fonts.required[e].status=1:(_tpt.R[e]??={},_tpt.R[e].status=1),new Promise((i,o)=>
189{if(_tpt.isStylesheetLoaded(t))s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i();else{const n=document.createElement("link");n.rel="stylesheet";let l="text",r="css";n["type"]=l+"/"+r,n.href=t,n.onload=()=>{s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i()},n.onerror=()=>{s?_tpt.R.fonts.required[e].status=3:_tpt.R[e].status=3,o(new Error(`Failed to load CSS: ${t}`))},document.head.appendChild(n)}})},_tpt.addContainer??=function(t){const{tag:e="div",id:s,class:i,datas:o,textContent:n,iHTML:l}=t,r=document.createElement(e);if(s&&""!==s&&(r.id=s),i&&""!==i&&(r.className=i),o)for(const[t,e]of Object.entries(o))"style"==t?r.style.cssText=e:r.setAttribute(`data-${t}`,e);return n&&(r.textContent=n),l&&(r.innerHTML=l),r},_tpt.collector??=function(){return{fragment:new DocumentFragment,add(t){var e=_tpt.addContainer(t);return this.fragment.appendChild(e),e},append(t){t.appendChild(this.fragment)}}},_tpt.isStylesheetLoaded??=function(t){let e=t.split("?")[0];return Array.from(document.querySelectorAll('link[rel="stylesheet"], link[rel="preload"]')).some(t=>t.href.split("?")[0]===e)},_tpt.preloader??={spans:[10,0,4,2,5,9,0,4,4,2,6,3,4,1,2,1,1,12,3,3,5,9,2,3,3,4],requests:new Map,preloaderTemplates:new Map,show:function(t,e){if(!e||!t)return;const{type:s,color:i}=e;if(s<0||"off"===s)return;const o=`preloader_${s}`;let n=this.preloaderTemplates.get(o);n||(n=this.build(s,i),this.preloaderTemplates.set(o,n)),this.requests.has(t)||this.requests.set(t,{count:0});const l=this.requests.get(t);clearTimeout(l.timer),l.count++,1===l.count&&(l.timer=setTimeout(()=>{l.preloaderClone=n.cloneNode(!0),l.anim&&l.anim.kill(),void 0!==_tpt.gsap?l.anim=_tpt.gsap.fromTo(l.preloaderClone,1,{opacity:0},{opacity:1}):l.preloaderClone.classList.add("sr7-fade-in"),t.appendChild(l.preloaderClone)},150))},hide:function(t){if(!this.requests.has(t))return;const e=this.requests.get(t);e.count--,e.count<0&&(e.count=0),e.anim&&e.anim.kill(),0===e.count&&(clearTimeout(e.timer),e.preloaderClone&&(e.preloaderClone.classList.remove("sr7-fade-in"),e.anim=_tpt.gsap.to(e.preloaderClone,.3,{opacity:0,onComplete:function(){e.preloaderClone.remove()}})))},state:function(t){if(!this.requests.has(t))return!1;return this.requests.get(t).count>0},build:(t,e="#ffffff",s="")=>{if(t<0||"off"===t)return null;let i=parseInt(t);if(isNaN(i))return null;if(0!==i&&5!==i||(i=6),t="prlt"+i,_tpt.loadCSS(SR7.E.plugin_url+"public/css/preloaders/t"+i+".css","preloader_"+t),isNaN(i)||i<6){const o=`background-color:${e}`,n=1===i||2==i?o:"",l=3===i||4==i?o:"",r=_tpt.collector();["dot1","dot2","bounce1","bounce2","bounce3"].forEach(t=>r.add({tag:"div",class:t,datas:{style:l}}));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`,datas:{style:n}});return r.append(d),d}{let o={};if(7===i){let t;e.startsWith("#")?(t=e.replace("#",""),t=`rgba(${parseInt(t.substring(0,2),16)}, ${parseInt(t.substring(2,4),16)}, ${parseInt(t.substring(4,6),16)}, `):e.startsWith("rgb")&&(t=e.slice(e.indexOf("(")+1,e.lastIndexOf(")")).split(",").map(t=>t.trim()),t=`rgba(${t[0]}, ${t[1]}, ${t[2]}, `),t&&(o.style=`border-top-color: ${t}0.65); border-bottom-color: ${t}0.15); border-left-color: ${t}0.65); border-right-color: ${t}0.15)`)}else 12===i&&(o.style=`background:${e}`);const n=_tpt.preloader.spans[i-6],l=_tpt.collector(),r=l.add({tag:"div",class:"sr7-prl-inner",datas:o});Array.from({length:n}).forEach(()=>r.appendChild(l.add({tag:"span",datas:{style:`background:${e}`}})));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`});return l.append(d),d}}},SR7.preLoader={show:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.show(e||SR7.M[t].c.module,SR7.M[t]?.settings?.pLoader??{color:"#fff",type:10})},hide:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.hide(e||SR7.M[t].c.module)},state:(t,e)=>_tpt.preloader.state(e||SR7.M[t].c.module)},_tpt.prepareModuleHeight=function(t){window.SR7.M??={},window.SR7.M[t.id]??={},"ignore"==t.googleFont&&(SR7.E.ignoreGoogleFont=!0);let e=window.SR7.M[t.id];if(null==_tpt.scrollBarW&&_tpt.mesureScrollBar(),e.c??={},e.states??={},e.settings??={},e.settings.size??={},"top"===t.sticky||"bottom"===t.sticky?e.settings.sticky=t.sticky:t.fixed&&(e.settings.sticky="top"),"top"===e.settings.sticky&&(e.settings.fixed=!0),t.stickyReserve&&(e.settings.size.stickyReserve=!0),e.c.module=document.querySelector('sr7-module[id="'+t.id+'"]'),e.c.adjuster=e.c.module.getElementsByTagName("sr7-adjuster")[0],e.c.content=e.c.module.getElementsByTagName("sr7-content")[0],SR7.E.backend||"carousel"!==t.type||(e.c.carousel=e.c.content.getElementsByTagName("sr7-carousel")[0]),null==e.c.module||null==e.c.module)return;t.plType&&t.plColor&&(e.settings.pLoader={type:t.plType,color:t.plColor}),"string"==typeof t.mh&&t.mh.includes(",")&&(t.mh=t.mh.split(",")),void 0===t.plType||"off"===t.plType||SR7.preLo
189ader.state(t.id)&&SR7.preLoader.state(t.id,e.c.module)||SR7.preLoader.show(t.id,e.c.module),_tpt.winW||_tpt.getWinDim("prepare"),_tpt.getWinDim();let s=""+e.c.module.dataset?.modal;"modal"==s||"true"==s||"undefined"!==s&&"false"!==s||(e.settings.size.fullHeight=t.size.fullHeight,e.settings.size.fullWidth=t.size.fullWidth,e.LEV??=_tpt.getResponsiveLevel(window.SR7.G.breakPoints,t.id),t.vpt=_tpt.fillArray(t.vpt,5),e.settings.vPort=t.vpt[e.LEV],void 0!==t.el&&"720"==t.el[4]&&t.gh[4]!==t.el[4]&&"960"==t.el[3]&&t.gh[3]!==t.el[3]&&"768"==t.el[2]&&t.gh[2]!==t.el[2]&&delete t.el,e.settings.size.height=null==t.el||null==t.el[e.LEV]||0==t.el[e.LEV]||"auto"==t.el[e.LEV]?_tpt.fillArray(t.gh,5,-1):_tpt.fillArray(t.el,5,-1),e.settings.size.width=_tpt.fillArray(t.gw,5,-1),e.settings.size.minHeight=_tpt.fillArray(t.mh??[0],5,-1),e.cacheSize={fullWidth:e.settings.size?.fullWidth,fullHeight:e.settings.size?.fullHeight},void 0!==t.off&&(t.off?.t&&(e.settings.size.m??={})&&(e.settings.size.m.t=t.off.t),t.off?.b&&(e.settings.size.m??={})&&(e.settings.size.m.b=t.off.b),t.off?.l&&(e.settings.size.p??={})&&(e.settings.size.p.l=t.off.l),t.off?.r&&(e.settings.size.p??={})&&(e.settings.size.p.r=t.off.r),e.offsetPrepared=!0),_tpt.updatePMHeight(t.id,t,!0))},_tpt.updatePMHeight=(t,e,s)=>{let i=SR7.M[t];if(null==i.settings)return _tpt.prepareModuleHeight(e);var o=i.settings.size.fullWidth?_tpt.winW:i.c.module.parentNode.offsetWidth;o=0===o||isNaN(o)?_tpt.winW:o;let n=i.settings.size.width[i.LEV]||i.settings.size.width[i.LEV++]||i.settings.size.width[i.LEV--]||o,l=i.settings.size.height[i.LEV]||i.settings.size.height[i.LEV++]||i.settings.size.height[i.LEV--]||0,r=i.settings.size.minHeight[i.LEV]||i.settings.size.minHeight[i.LEV++]||i.settings.size.minHeight[i.LEV--]||0;if(l="auto"==l?0:l,l=Math.floor(_tpt.toPxH(l)),"carousel"!==e.type&&(o-=parseInt(e.onw??0)||0),i.MP=!i.settings.size.fullWidth&&o<n||_tpt.winW<n?Math.min(1,o/n):1,e.size.fullScreen||e.size.fullHeight){let t=parseInt(e.fho)||0,s=(""+e.fho).indexOf("%")>-1;e.newh=_tpt.winH-(s?_tpt.winH*t/100:t)}else e.newh=i.MP*Math.max(l,r);if(e.newh+=(parseInt(e.onh??0)||0)+(parseInt(e.carousel?.pt)||0)+(parseInt(e.carousel?.pb)||0),void 0!==e.slideduration&&(e.newh=Math.max(e.newh,parseInt(e.slideduration)/3)),e.shdw&&_tpt.buildShadow(e.id,e),void 0!==i.c.adjuster&&(i.c.adjuster.style.height=e.newh+"px"),i.c.module.style.height=e.newh+"px",i.c.content.style.height=e.newh+"px",i.states.heightPrepared=!0,i.dims??={},i.dims.moduleRect=i.c.module.getBoundingClientRect(),i.c.content.style.left="-"+i.dims.moduleRect.left+"px",_tpt.updateStickyReserve(t,e.newh),!i.settings.size.fullWidth)return s&&requestAnimationFrame(()=>{o!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)}),void _tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0);_tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0),requestAnimationFrame(function(){s&&requestAnimationFrame(()=>{o!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)})}),i.earlyResizerFunction||(i.earlyResizerFunction=function(){requestAnimationFrame(function(){_tpt.getWinDim(),_tpt.moduleDefaults(e.id,e),_tpt.updateSlideBg(t,!0)})},window.addEventListener("resize",i.earlyResizerFunction))},_tpt.buildShadow=function(t,e){let s=SR7.M[t];null==s.c.shadow&&(s.c.shadow=document.createElement("sr7-module-shadow"),s.c.shadow.classList.add("sr7-shdw-"+e.shdw,"sr7-shdw-wait"),s.c.content.appendChild(s.c.shadow))},_tpt.showShadow=t=>SR7.M[t]?.c?.shadow?.classList.remove("sr7-shdw-wait"),_tpt.tf??=t=>"false"!=t&&0!=t&&("true"==t||1==t||t);const t=function(t){return"/"==(t=t.toLowerCase())[t.length-1]&&(t=t.slice(0,-1)),"http://"==t.slice(0,7)?t=t.slice(7):"https://"==t.slice(0,8)&&(t=t.slice(8)),t},e=function(t,e){return"/"==(""+t)[0]&&"/"==(""+t)[1]?(e?"https:":window.location.protocol)+t:(""+t).includes("://")?(e||t.includes("https")?"https:":window.location.protocol)+"//"+t.split("://").slice(1).join("://"):t},s=function(s,i){return!(!s||!i)&&(s==i||(s=e(s),i=e(i),s=t(s),i=t(i),(s=String(s))==(i=String(i))||"undefined"!==s&&"undefined"!==i&&(-1!==i.indexOf(s)||-1!==s.indexOf(i))))};_tpt.updateStickyBodyPad=()=>
189{if(SR7.E?.backend)return;let t=0;for(const e in SR7.M){const s=SR7.M[e];s?.settings&&"bottom"===SR7.F.getModuleSticky(s.settings)&&_tpt.tf(s.settings?.size?.stickyReserve)&&(t=Math.max(t,parseInt(s.states?.stickyReserveH)||parseInt(s.dims?.module?.h)||0))}document.body.style.paddingBottom=t>0?t+"px":""},_tpt.updateStickyReserve=(t,e)=>{const s=SR7.M[t];if(!s?.c?.module||SR7.E?.backend)return;const i=SR7.F.getModuleSticky(s.settings),o=_tpt.tf(s.settings?.size?.stickyReserve);e=parseInt(e)||parseInt(s.dims?.module?.h)||parseInt(s.c.content?.offsetHeight)||0,s.states.stickyReserveH="none"!==i&&o&&e>0?e:0,"top"===i&&o&&e>0?(s.c.stickySpacer??=document.createElement("sr7-sticky-spacer"),s.c.stickySpacer.isConnected||s.c.module.parentNode?.insertBefore(s.c.stickySpacer,s.c.module),s.c.stickySpacer.style.height=e+"px"):s.c.stickySpacer&&(s.c.stickySpacer.remove(),s.c.stickySpacer=null),_tpt.updateStickyBodyPad()},_tpt.bgStyle=async(t,e,i,o,n)=>{const l=SR7.M[t];e=e??l.settings;const r=SR7.F.getModuleSticky(e);if(!SR7.E.backend){if(l.c.module.classList.remove("sr7-top-fixed","sr7-bottom-sticky"),l.c.module.style.position="",l.c.module.style.width="",l.c.module.style.top="",l.c.module.style.left="",l.c.module.style.bottom="",l.c.module.style.pointerEvents="",l.c.module.style.zIndex="","carousel"===e.type&&(e.size?.fullWidth??l.settings?.size?.fullWidth)||(l.c.module.style.overflowY=""),l.c.content.style.pointerEvents="",l.c.content.style.overflow="","none"!==r){const t="true"===String(e.size?.overflow??l.settings?.size?.overflow);l.c.module.style.width="100%",l.c.module.style.left="0px",l.c.module.style.zIndex="5000",l.c.content.style.overflow=t?"visible":"hidden","top"===r?(l.c.module.classList.add("sr7-top-fixed"),l.c.module.style.position="fixed",l.c.module.style.top="0px",l.c.module.style.pointerEvents="none",l.c.content.style.pointerEvents="none"):"bottom"===r&&(l.c.module.classList.add("sr7-bottom-sticky"),l.c.module.style.position="fixed",l.c.module.style.bottom="0px",l.c.module.style.top="auto")}_tpt.updateStickyReserve(t,e.newh??(parseInt(l.c.content?.offsetHeight)||0))}if(null==l.c.bgcanvas){let t=document.createElement("sr7-module-bg"),r=!1;if("string"==typeof e?.bg?.color&&e?.bg?.color.includes("{"))if(_tpt.gradient&&_tpt.gsap)e.bg.color=_tpt.gradient.convert(e.bg.color);else try{let t=JSON.parse(e.bg.color);(t?.orig||t?.string)&&(e.bg.color=JSON.parse(e.bg.color))}catch{return}let d="string"==typeof e?.bg?.color?e?.bg?.color||"transparent":e?.bg?.color?.string??e?.bg?.color?.orig??e?.bg?.color?.color??"transparent";if(t.style["background"+(String(d).includes("grad")?"":"Color")]=d,("transparent"!==d||n)&&(r=!0),l.offsetPrepared&&(t.style.visibility="hidden"),e?.bg?.image?.src&&!Array.isArray(e.bg.image.srcs)&&"false"!==String(e?.bg?.image?.u)&&(e.bg.image.src=((t,e)=>{let i;const o=t.c.module.getElementsByTagName("image_lists");if(void 0!==o[0]){const t=o[0].getElementsByTagName("img");if(void 0!==t[0])for(let o in t)if(!i&&Object.prototype.hasOwnProperty.call(t,o)){let n=t[o].dataset.src||t[o].getAttribute("src")||t[o].getAttribute("data -src"),l=t[o].dataset.src2||t[o].getAttribute("src2")||t[o].getAttribute("data -src2");n&&s(atob(t[o].dataset.dbsrc),e)&&(i=_tpt.pickSrc({n1:n,n2:l}))}}return i??e})(l,e?.bg?.image?.src),t.style.backgroundImage=`url(${e?.bg?.image.src})`,t.style.backgroundSize=""==(e.bg.image?.size??"")?"cover":e.bg.image.size,t.style.backgroundPosition=e.bg.image.position??parseInt(e.bg.image.pos?.x??0)+"% "+parseInt(e.bg.image.pos?.y??0)+"%",""==e.bg.image.repeat&&(e.bg.image.repeat="no-repeat"),t.style.backgroundRepeat=_tpt.tf(e.bg.image.rx)&&_tpt.tf(e.bg.image.ry)?"repeat":_tpt.tf(e.bg.image.rx)?"repeat-x":_tpt.tf(e.bg.image.ry)?"repeat-y":e.bg.image.repeat??"no-repeat",r=!0),("none"!==(e?.bg?.mesh?.k??"none")||(e?.bg?.mesh?.gr??0)>0||"none"!==(e?.bg?.mot?.a??"none"))&&(r=!0),!r)return;if(l.c.bgcanvas=t,e.size.fullWidth?t.style.width=_tpt.winW-(i&&_tpt.winH<document.body.offsetHeight?_tpt.scrollBarW:0)+"px":o&&(t.style.width=l.c.module.offsetWidth+"px"),e.sbt?.use)l.c.content.appendChild(l.c.bgcanvas);else{const t=l.c.module.querySelector(":scope > img.sr7-lcpimg");t?l.c.module.insertBefore(l.c.bgcanvas,t):l.c.module.appendChild(l.c.bgcanvas)}}l.c.bgcanvas.style.height=void 0!==e.newh?e.newh+"px":(SR7.E.backend||"carousel"!==e.type?l.dims.content.h:l.dims.module.h)+"px",l.c.bgcanvas.style.left=!i&&e.sbt?.use||l.c.bgcanvas.closest("SR7-CONTENT")?"0px":"-"+(l?.dims?.moduleRect?.left??0)+"px"},_tpt.updateSlideBg=function(t,e,s=!1,i=0){const o=SR7.M[t];if(void 0===o){if(i>=5)return;return setTimeout(()=>_tpt.updateSlideBg(t,e,s,i+1),100)}const n=o.settings;(o?.c?.bgcanvas||!0===s)&&n.size.fullWidth&&(o.c.bgcanvas.style.width=_tpt.winW-(e&&_tpt.win
189H<document.body.offsetHeight?_tpt.scrollBarW:0)+"px")},_tpt.moduleDefaults=(t,e)=>{let s=SR7.M[t];null!=s&&null!=s.c&&null!=s.c.module&&(s.dims??={},s.dims.moduleRect=s.c.module.getBoundingClientRect(),s.c.content.style.left="-"+s.dims.moduleRect.left+"px",s.c.content.style.width=_tpt.winW-_tpt.scrollBarW+"px",_tpt.bgStyle(t,e,window.innerWidth==_tpt.winW),SR7.E.backend||"carousel"!==e.type||(s.c.module.style.overflow=s.settings?.size?.fullWidth?"hidden":"visible"))},_tpt.getOffset=t=>{var e=t.getBoundingClientRect(),s=window.pageXOffset||document.documentElement.scrollLeft,i=window.pageYOffset||document.documentElement.scrollTop;return{top:e.top+i,left:e.left+s}},_tpt.fillArray=function(t,e){let s,i;t=Array.isArray(t)?t:[t];let o=Array(e),n=t.length;for(i=0;i<t.length;i++)o[i+(e-n)]=t[i],null==s&&"#"!==t[i]&&(s=t[i]);for(let t=0;t<e;t++)void 0!==o[t]&&"#"!=o[t]||(o[t]=s),s=o[t];return o},_tpt.closestGE=function(t,e){let s=Number.MAX_VALUE,i=-1;for(let o=0;o<t.length;o++)t[o]-1>=e&&t[o]-1-e<s&&(s=t[o]-1-e,i=o);return++i},_tpt.R??={},_tpt.R.page=_tpt.extend?_tpt.extend(_tpt.R.page,{status:2,version:"7.1.0"}):{status:2,version:"7.1.0"}}();</script>
189 190<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 190-191
190 191<script async src="https://www.googletagmanager.com/gtag/js?id=
191G-Q5WJ6JHWDJ
vendor: 12 bytes, line 191
191"></script>
192<script> 193
vendor: 134 bytes, lines 193-197
193window.dataLayer = window.dataLayer || []; 194 function gtag(){dataLayer.push(arguments);} 195 gtag('js', new Date()); 196 197 gtag('config', '
197G-Q5WJ6JHWDJ
vendor: 4 bytes, line 197
197');
198</script>
198</head> 199 200<body class="wp-singular page-template-default page page-id-5002 wp-theme-kallyas wp-child-theme-kallyas-child locale-en-us res1170 kl-skin--light" itemscope="itemscope" itemtype="https://schema.org/WebPage" > 201 202 203<div class="login_register_stuff"> <!-- Login/Register Modal forms - hidden by default to be opened through modal --> 204 <div id="login_panel" class="loginbox-popup auth-popup mfp-hide"> 205 <div class="inner-container login-panel auth-popup-panel"> 206 <h3 class="m_title_ext auth-popup-title" itemprop="alternativeHeadline" >SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES</h3> 207 <form id="login_form" name="login_form" method="post" class="zn_form_login znhg-ajax-login-form" action="https://www.openfabrics.org/fzpl/"> 208 209 <div class="zn_form_login-result"></div> 210 211 <div class="form-group kl-fancy-form"> 212 <input type="text" id="kl-username" name="log" class="form-control inputbox kl-fancy-form-input kl-fw-input" 213 placeholder="eg: james_smith"/> 214 <label class="kl-font-alt kl-fancy-form-label">USERNAME</label> 215 </div> 216 217 <div class="form-group kl-fancy-form"> 218 <input type="password" id="kl-password" name="pwd" class="form-control inputbox kl-fancy-form-input kl-fw-input" 219 placeholder="type password"/> 220 <label class="kl-font-alt kl-fancy-form-label">PASSWORD</label> 221 </div> 222 223 224 <label class="zn_remember auth-popup-remember" for="kl-rememberme"> 225 <input type="checkbox" name="rememberme" id="kl-rememberme" value="forever" class="auth-popup-remember-chb"/> 226 Remember Me </label> 227 228 <input type="submit" id="login" name="submit_button" class="btn zn_sub_button btn-fullcolor btn-md" 229 value="LOG IN"/> 230 231 <input type="hidden" value="login" class="" name="zn_form_action"/> 232 <input type="hidden" value="zn_do_login" class="" name="action"/> 233 234 <div class="links auth-popup-links"> 235 <a href="#forgot_panel" class="kl-login-box auth-popup-link">FORGOT YOUR PASSWORD?</a> 236 </div> 237 </form> 238 </div> 239 </div> 240 <!-- end login panel --> 241 <div id="forgot_panel" class="loginbox-popup auth-popup forgot-popup mfp-hide"> 242 <div class="inner-container forgot-panel auth-popup-panel"> 243 <h3 class="m_title m_title_ext text-custom auth-popup-title" itemprop="alternativeHeadline" >FORGOT YOUR DETAILS?</h3> 244 <form id="forgot_form" name="login_form" method="post" class="zn_form_lost_pass" action="https://www.openfabrics.org/fzpl/?action=lostpassword"> 245 <div class="zn_form_login-result"></div> 246 <div class="form-group kl-fancy-form"> 247 <input type="text" id="forgot-email" name="user_login" class="form-control inputbox kl-fancy-form-input kl-fw-input" placeholder="..."/> 248 <label class="kl-font-alt kl-fancy-form-label">USERNAME OR EMAIL</label> 249 </div> 250 <input type="hidden" name="wc_reset_password" value="true"> 251 <input type="hidden" id="_wpnonce" name="_wpnonce" value="7313042df3" /><input type="hidden" name="_wp_http_referer" value="/ofmf-getting-started/" /> <div class="form-group"> 252 <input type="submit" id="recover" name="submit" class="btn btn-block zn_sub_button btn-fullcolor btn-md" value="SEND MY DETAILS!"/> 253 </div> 254 <div class="links auth-popup-links"> 255 <a href="#login_panel" class="kl-login-box auth-popup-link">AAH, WAIT, I REMEMBER NOW!</a> 256 </div> 257 </form> 258 </div> 259 </div><!-- end forgot pwd. panel --> 260 </div><!-- end login register stuff --> <div id="fb-root"></div> 261
261<script>(function (d, s, id) { 262 var js, fjs = d.getElementsByTagName(s)[0]; 263 if (d.getElementById(id)) {return;} 264 js = d.createElement(s); js.id = id; 265 js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0"; 266 fjs.parentNode.insertBefore(js, fjs); 267 }(document, 'script', 'facebook-jssdk'));</script>
267 268 269 270<div id="page_wrapper"> 271 272<header id="header" class="site-header style7 cta_button header--fixed headerstyle-xs--image_color sticky-resize headerstyle--image_color site-header--relative nav-th--light sheader-sh--default" data-original-sticky-textscheme="sh--default" role="banner" itemscope="itemscope" itemtype="https://schema.org/WPHeader" > 273 <div class="kl-header-bg "></div> <div class="site-header-wrapper sticky-top-area"> 274 275 <div class="site-header-top-wrapper topbar-style--default sh--default"> 276 277 <div class="siteheader-container container"> 278 279 280 281 282 <div class="fxb-row site-header-row site-header-top "> 283 284 <div class='fxb-col fxb fxb-start-x fxb-center-y fxb-basis-auto site-header-col-left site-header-top-left'> 285 </div> 286 287 <div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto site-header-col-right site-header-top-right'> 288 289 <div id="search" class="sh-component header-search headsearch--def"> 290 291 <a href="#" class="searchBtn header-search-button"> 292 <span class="glyphicon glyphicon-search kl-icon-white"></span> 293 </a> 294 295 <div class="search-container header-search-container"> 296 297<form id="searchform" class="gensearch__form" action="https://www.openfabrics.org/" method="get"> 298 <input id="s" name="s" value="" class="inputbox gensearch__input" type="text" placeholder="SEARCH ..." /> 299 <button type="submit" id="searchsubmit" value="go" class="gensearch__submit glyphicon glyphicon-search"></button> 300 </form> </div> 301 </div> 302 303 </div> 304 305 </div><!-- /.site-header-top --> 306 307 <div class="separator site-header-separator "></div> 308 309 </div> 310 </div><!-- /.site-header-top-wrapper --> 311 312 <div class="kl-top-header site-header-main-wrapper clearfix header-no-bottom sh--default"> 313 314 <div class="container siteheader-container "> 315 316 <div class='fxb-col fxb-basis-auto'> 317 318 319 320<div class="fxb-row site-header-row site-header-main "> 321 322 <div class='fxb-col fxb fxb-start-x fxb-center-y fxb-basis-auto fxb-grow-0 fxb-sm-full site-header-col-left site-header-main-left'> 323 <div id="logo-container" class="logo-container logosize--contain zn-original-logo"> 324 <!-- Logo --> 325 <h3 class='site-logo logo ' id='logo'><a href='https://www.openfabrics.org/' class='site-logo-anch'><img class="logo-img site-logo-img" src="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabric_Horizontal_Logo-shadow.jpg" alt="OpenFabrics Alliance" title="Innovation in High Speed Fabrics" data-mobile-logo="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabricLogo.jpg" /></a></h3> <!-- InfoCard --> 326 </div> 327 328 <div class="separator site-header-separator visible-xs"></div> </div> 329 330 <div class='fxb-col fxb fxb-center-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-col-center site-header-main-center'> 331 <div class="sh-component main-menu-wrapper" role="navigation" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" > 332 333 <div class="zn-res-menuwrapper"> 334 <a href="#" class="zn-res-trigger zn-menuBurger zn-menuBurger--3--s zn-menuBurger--anim1 " id="zn-res-trigger"> 335 <span></span> 336 <span></span> 337 <span></span> 338 </a> 339 </div><!-- end responsive menu --> 340 <div id="main-menu" class="main-nav mainnav--sidepanel mainnav--active-text mainnav--pointer-dash nav-mm--light zn_mega_wrapper "><ul id="menu-main-menu" class="main-menu main-menu-nav zn_mega_menu "><li id="menu-item-150" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-150 main-menu-item-top menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/" class=" main-menu-link main-menu-link-top"><span>Home</span></a></li> 341<li id="menu-item-393" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor menu-item-has-children menu-item-393 active main-menu-item-top menu-item-even menu-item-depth-0"><a href="#" class=" main-menu-link main-menu-link-top"><span>Projects</span></a> 342<ul class="sub-menu clearfix"> 343 <li id="menu-item-4185" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-4185 active main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/openfabrics-management-framework/" class=" main-menu-link main-menu-link-sub"><span>
343Sunfish™</span></a> 344 <ul class="sub-menu clearfix"> 345 <li id="menu-item-5041" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5041 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/why-create-an-abstract-fabric-management-system/" class=" main-menu-link main-menu-link-sub"><span>Why Create an Abstract Fabric Management System</span></a></li> 346 <li id="menu-item-5040" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-5002 current_page_item menu-item-5040 active main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofmf-getting-started/" class=" main-menu-link main-menu-link-sub"><span>Sunfish: Getting Started</span></a></li> 347 <li id="menu-item-5053" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5053 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofmf-use-cases/" class=" main-menu-link main-menu-link-sub"><span>Sunfish Use Cases</span></a></li> 348 <li id="menu-item-5039" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5039 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/redfish-and-the-ofmf/" class=" main-menu-link main-menu-link-sub"><span>Redfish and Sunfish</span></a></li> 349 <li id="menu-item-5038" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5038 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/snia-and-the-ofmf/" class=" main-menu-link main-menu-link-sub"><span>SNIA and Sunfish</span></a></li> 350 </ul> 351</li> 352 <li id="menu-item-4204" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4204 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/openfabrics-interfaces/" class=" main-menu-link main-menu-link-sub"><span>OpenFabrics Interfaces (OFI)</span></a></li> 353 <li id="menu-item-748" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-748 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/advanced-network-software/" class=" main-menu-link main-menu-link-sub"><span>Advanced Networks Software</span></a> 354 <ul class="sub-menu clearfix"> 355 <li id="menu-item-381" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-381 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofed-for-linux/" class=" main-menu-link main-menu-link-sub"><span>OFED for Linux (Legacy)</span></a> 356 <ul class="sub-menu clearfix"> 357 <li id="menu-item-6021" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-6021 main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://www.openfabrics.org/wp-content/uploads/mediawiki/OpenFabrics-OFED-MediaWiki.pdf" class=" main-menu-link main-menu-link-sub"><span>OFED MediaWiki Pages</span></a></li> 358 <li id="menu-item-394" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-394 main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://downloads.openfabrics.org" class=" main-menu-link main-menu-link-sub"><span>Download OFED Components</span></a></li> 359 <li id="menu-item-395" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-395 main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://downloads.openfabrics.org/OFED" class=" main-menu-link main-menu-link-sub"><span>Download OFED Releases</span></a></li> 360 <li id="menu-item-396" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-396 main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://bugs.openfabrics.org" class=" main-menu-link main-menu-link-sub"><span>Search OFED Bugs</span></a></li> 361 </ul> 362</li> 363 </ul> 364</li> 365 <li id="menu-item-387" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-387 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/active-project-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Project Mailing Lists</span></a></li> 366 <li id="menu-item-4230" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4230 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/working-groups-2/" class=" main-menu-link main-menu-link-sub"><span>Completed Projects</span></a></li> 367 <li id="menu-item-647" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-647 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Mailing Lists</span></a></li> 368</ul> 369</li> 370<li id="menu-item-791" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-791 main-menu-item-top menu-item-even menu-item-depth-0"><a href="http://www.openfabrics.org/openfabrics-business-calendar" class=" main-menu-link main-menu-link-top"><span>Calendar</span></a></li> 371<li id="menu-item-4253" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-4253 main-menu-item-top menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/blogs" class=" main-menu-link main-menu-link-top"><span>Blogs</span></a></li> 372<li id="menu-item-468" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-468 main-menu-item-top menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/earlier-developer-and-user-workshops/" class=" main-menu-link main-menu-link-top"><span>Workshops</span></a> 373<ul class="sub-menu clearfix"> 374 <li id="menu-item-5727" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-5727 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>2025/2026 Webinar Series</span></a> 375 <ul class="sub-menu clearfix"> 376 <li id="menu-item-5692" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5692 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-1/" class=" main-menu-link main-menu-link-sub"><span>Webinar #1: Getting Started with UltraEthernet</span></a></li> 377 <li id="menu-item-5806" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5806 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-2/" class=" main-menu-link main-menu-link-sub"><span>Webinar #2: Coding for Libfabric</span></a></li> 378 <li id="menu-item-5877" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5877 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-3/" class=" main-menu-link main-menu-link-sub"><span>Webinar #3: Exploring OFA Sunfish</span></a></li> 379 <li id="menu-item-5932" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5932 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-4/" class=" main-menu-link main-menu-link-sub"><span>Webinar #4: From Slingshot to Ultra Ethernet – Building a Transport Standard for Libfabric</span></a></li> 380 <li id="menu-item-6009" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-6009 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-2026-ofa-webinar-series-webinar-5/" class=" main-menu-link main-menu-link-sub"><span>Webinar #5: The Flux Framework: Modern, Hierarchical Resource Management for Managing HPC Workloads</span></a></li> 381 </ul> 382</li> 383 <li id="menu-item-5807" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5807 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/workshops-and-webinars-calendar/" class=" main-menu-link main-menu-link-sub"><span>Workshops and Webinars Calendar</span></a></li> 384</ul> 385</li> 386<li id="menu-item-4198" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4198 main-menu-item-top menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/membership-benefits-2/" class=" main-menu-link main-menu-link-top"><span>Membership</span></a></li> 387<li id="menu-item-389" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-389 main-menu-item-top menu-item-even menu-item-depth-0"><a href="#" class=" main-menu-link main-menu-link-top"><span>About</span></a> 388<ul class="sub-menu clearfix"> 389 <li id="menu-item-359" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-359 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-overview/" class=" main-menu-link main-menu-link-sub"><span>OFA Overview</span></a></li> 390 <li id="menu-item-5394" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5394 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-bylaws-and-policies/" class=" main-menu-link main-menu-link-sub"><span>OFA Bylaws and Policies</span></a></li> 391 <li id="menu-item-374" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-374 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/leadership-team/" class=" main-menu-link main-menu-link-sub"><span>Leadership Team</span></a> 392 <ul class="sub-menu clearfix"> 393 <li id="menu-item-5085" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5085 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/emeritus-leadership/" class=" main-menu-link main-menu-link-sub"><span>Leadership Emeritus</span></a></li> 394 </ul> 395</li> 396 <li id="menu-item-693" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-693 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Multimedia and Training</span></a> 397 <ul class="sub-menu clearfix"> 398 <li id="menu-item-694" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-694 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/multimedia/" class=" main-menu-link main-menu-link-sub"><span>Multimedia</span></a></li> 399 <li id="menu-item-384" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-384 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/training/" class=" main-menu-link main-menu-link-sub"><span>Training</span></a></li> 400 </ul> 401</li>
402 <li id="menu-item-4704" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4704 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Industry Alliance Program</span></a> 403 <ul class="sub-menu clearfix"> 404 <li id="menu-item-1032" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-1032 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/industry-alliance-program-overview/" class=" main-menu-link main-menu-link-sub"><span>Industry Alliance Program Overview</span></a></li> 405 <li id="menu-item-2757" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-2757 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/become-industry-alliance-partner/" class=" main-menu-link main-menu-link-sub"><span>Become an Industry Alliance Partner</span></a></li> 406 </ul> 407</li> 408 <li id="menu-item-695" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-695 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Press Room</span></a> 409 <ul class="sub-menu clearfix"> 410 <li id="menu-item-843" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-843 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/press-releases-2/" class=" main-menu-link main-menu-link-sub"><span>Press Releases</span></a></li> 411 <li id="menu-item-4806" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-4806 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofa-newsletter/" class=" main-menu-link main-menu-link-sub"><span>Subscribe to OFA Announcements</span></a></li> 412 <li id="menu-item-375" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-375 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/media-kit/" class=" main-menu-link main-menu-link-sub"><span>Media Kit</span></a></li> 413 <li id="menu-item-702" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-702 main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/contact-the-press-room/" class=" main-menu-link main-menu-link-sub"><span>Contact Press</span></a></li> 414 </ul> 415</li> 416 <li id="menu-item-383" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-383 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/privacy-statement/" class=" main-menu-link main-menu-link-sub"><span>Privacy Statement</span></a></li> 417 <li id="menu-item-4225" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4225 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/organization-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Organization Mailing Lists</span></a></li> 418 <li id="menu-item-4209" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4209 main-menu-item-sub menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/contact-the-press-room-2/" class=" main-menu-link main-menu-link-sub"><span>Contact the OFA</span></a></li> 419</ul> 420</li> 421</ul></div> </div> 422 <!-- end main_menu --> 423 </div> 424 425 <div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-col-right site-header-main-right'> 426 427 <div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-main-right-top'> 428 <div style="display: flex;padding-top: 10px;"><a href="https://www.openfabrics.org/?page_id=4186" class="sh-component ctabutton cta-button-0 kl-cta-custom btn btn-fullcolor btn-custom-color hidden-xs cta-icon--before btn--rounded" target="_self" itemprop="url" ><span>JOIN NOW</span></a></div> </div> 429 430 431 </div> 432 433</div><!-- /.site-header-main --> 434 435 436 </div> 437 438 </div><!-- /.siteheader-container --> 439 440 </div><!-- /.site-header-main-wrapper --> 441 442 443 444 </div><!-- /.site-header-wrapper --> 445 </header> 446<div class="zn_pb_wrapper clearfix zn_sortable_content" data-droplevel="0"> <section class="zn_section eluid4e1d932b section-sidemargins section--no " id="eluid4e1d932b" > 447 448 449 <div class="zn_section_size container zn-section-height--auto z
449n-section-content_algn--top "> 450 451 <div class="row "> 452 453 <div class="eluid4b291789 col-md-9 col-sm-9 znColumnElement" id="eluid4b291789" > 454 455 456 <div class="znColumnElement-innerWrapper-eluid4b291789 znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-left " > 457 458 <div class="znColumnElement-innerContent"> <div class="zn_text_box eluidb727750d zn_text_box-light element-scheme--light" ><h4 class="zn_text_box-title zn_text_box-title--style2 ">Sunfish: Getting Started</h4><p><em><strong>This HOW-TO guide assumes that the installer is both familiar with Linux and Linux servers with network connectivity running.</strong></em></p> 459<p>In this how-to, a <a href="https://rockylinux.org/download" target="_self">Rocky Linux server</a> installation is used as a guide.</p> 460<p style="padding-left: 40px;"><span style="color: #231f20;">#> systemctl set-default multi-user.target</span></p> 461<p style="padding-left: 40px;"><span style="color: #231f20;">#> yum update</span></p> 462<p style="padding-left: 40px;"><span style="color: #231f20;">#> yum install screen git.</span></p> 463<p style="padding-left: 40px;"><span style="color: #231f20;">#> sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config</span></p> 464<p style="padding-left: 40px;"><span style="color: #231f20;">#> reboot</span></p> 465<p style="padding-left: 40px;"><span style="color: #231f20;">$> mkdir Swordfish</span></p> 466<p style="padding-left: 40px;"><span style="color: #231f20;">$> python3 -m venv ~/Swordfish; cd ~Swordfish</span></p> 467<p style="padding-left: 40px;"><span style="color: #231f20;">$> source Swordfish/bin/activate</span></p> 468<p style="padding-left: 40px;"><span style="color: #231f20;">$> echo 'source Swordfish/bin/activate' >> ~/.bash_profile</span></p> 469<p style="padding-left: 40px;"><span style="color: #231f20;">$> pip install flask flask_restful flask_httpauth</span></p> 470<p style="padding-left: 40px;"><span style="color: #231f20;">$> pip install requests aniso8601 markupsafe pytz</span></p> 471<p style="padding-left: 40px;"><span style="color: #231f20;">$> pip install itsdangerous StringGenerator urllib3</span></p> 472<p style="padding-left: 40px;"><span style="color: #231f20;">$> pip install --upgrade pip</span></p> 473<p style="padding-left: 40px;"><span style="color: #231f20;">$> git clone https://github.com/DMTF/Redfish-Interface-Emulator.git</span></p> 474<p style="padding-left: 40px;"><span style="color: #231f20;">$> cd Redfish-Interface-Emulator</span></p> 475<p style="padding-left: 40px;"><span style="color: #231f20;">$> git log</span></p> 476<p style="padding-left: 40px;"><span style="color: #231f20;">$> git remote add Swordfish-API https://github.com/SNIA/Swordfish-API-Emulator.git</span></p> 477<p style="padding-left: 40px;"><span style="color: #231f20;">$> git log ; # Note where the HEAD is</span></p> 478<p style="padding-left: 40px;"><span style="color: #231f20;">$> git remote; # Note the remote list contains 2 remotes</span></p> 479<p style="padding-left: 40px;"><span style="color: #231f20;">$> git log</span></p> 480<p style="padding-left: 40px;"><span style="color: #231f20;">$> git branch swordfish ; #> New branch at the HEAD to build up Swordfish from</span></p> 481<p style="padding-left: 40px;"><span style="color: #231f20;">$> git checkout swordfish ; #> move to new branch before a fetch</span></p> 482<p style="padding-left: 40px;"><span style="color: #231f20;">$> git fetch Swordfish-API</span></p> 483<p style="padding-left: 40px;"><span style="color: #231f20;">$> git log ; # Check all of the Swordfish commits</span></p> 484<p style="padding-left: 40px;"><span style="color: #231f20;">$> git diff be770566 swordfish</span></p> 485<p style="padding-left: 40px;"><span style="color: #231f20;">$> ls ; # look for g.py</span></p> 486<p style="padding-left: 40px;"><span style="color: #231f20;">$> python emulator.py</span></p> 487</div> </div> 488 </div> 489 490 491 </div> 492 493 </div> 494 </div> 495 496 </section> 497 498 499 </div><div class="znpb-footer-smart-area" >
499 <section class="zn_section eluid7de3c6d2 section-sidemargins section--no " id="eluid7de3c6d2" > 500 501 502 <div class="zn_section_size container custom_width_perc zn-section-height--custom_height zn-section-content_algn--top "> 503 504 <div class="row gutter-0"> 505 506 <div class="eluide4056018 col-md-12 col-sm-12 znColumnElement" id="eluide4056018" > 507 508 509 <div class="znColumnElement-innerWrapper-eluide4056018 znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-center " > 510 511 <div class="znColumnElement-innerContent"> 512 <div class="zn_custom_container eluide0d98004 smart-cnt--default clearfix" > 513 514 <div class="row zn_col_container-smart_container "> 515 516 <div class="eluidba8ad95e col-md-12 col-sm-12 znColumnElement" id="eluidba8ad95e" > 517 518 519 <div class="znColumnElement-innerWrapper-eluidba8ad95e znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-center " > 520 521 <div class="znColumnElement-innerContent"> <div class="th-spacer clearfix eluid14057a33 "></div><div class="image-boxes imgbox-simple eluid2ddb0267 " ><div class="image-boxes-holder imgboxes-wrapper u-mb-0 "><div class="image-boxes-img-wrapper img-align-center"><img class="image-boxes-img img-responsive " src="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabricLogo-100x100_c.jpg" alt="" title="logo-gallery_OpenFabricLogo" /></div></div></div><div class="elm-socialicons eluidc51cf655 text-center sc-icon--center elm-socialicons--light element-scheme--light" ><ul class="elm-social-icons sc--clean sh--rounded sc-lay--normal clearfix"><li class="elm-social-icons-item"><a href="https://www.linkedin.com/groups/2417201" class="elm-sc-link elm-sc-icon-0" target="_blank" rel="noopener" itemprop="url" ><span class="elm-sc-icon " data-zniconfam="kl-social-icons" data-zn_icon=""></span></a><div class="clearfix"></div></li><li class="elm-social-icons-item"><a href="https://twitter.com/openfabrics?lang=en" class="elm-sc-link elm-sc-icon-1" target="_blank" rel="noopener" itemprop="url" ><span class="elm-sc-icon " data-zniconfam="kl-social-icons" data-zn_icon=""></span></a><div class="clearfix"></div></li></ul></div><div class="zn_text_box eluid694aa5d8 zn_text_box-light element-scheme--light" ><p style="text-align: center;"><span style="color: #ffffff;"><strong><a style="color: #ffffff;" href="https://www.openfabrics.org/privacy-statement/">Privacy Statement</a>    <a style="color: #ffffff;" href="https://www.openfabrics.org/membership-benefits-2/">Membership Information </a>      </strong><strong><a style="color: #ffffff;" href="https://www.openfabrics.org/contact-the-press-room-2/">Contact</a></strong></span></p> 522</div><div class="zn_text_box eluid5fd2106d zn_text_box-light element-scheme--light" ><p style="text-align: center;"><span style="color: #ffffff; font-size: 13px;">Copyright © 2004-2026 OpenFabrics Alliance. All rights reserved.</span></p> 523</div> </div> 524 </div> 525 526 527 </div> 528 </div> 529 </div><!-- /.zn_custom_container --> 530 531 532 </div> 533 </div> 534 535 536 </div> 537 538 </div> 539 </div> 540 541 </section> 542 543 544 </div></div><!-- end page_wrapper --> 545 546<a href="#" id="totop" class="u-trans-all-2s js-scroll-event" data-forch="300" data-visibleclass="on--totop">TOP</a> 547
548<script type="speculationrules"> 549{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/kallyas-child/*","/wp-content/themes/kallyas/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 550</script>
550 551 552
552<script type="text/html" id="tmpl-media-frame"> 553 <div class="media-frame-title" id="media-frame-title"></div> 554 <h2 class="media-frame-menu-heading">Actions</h2> 555 <button type="button" class="button button-link media-frame-menu-toggle" aria-expanded="false"> 556 Menu <span class="dashicons dashicons-arrow-down" aria-hidden="true"></span> 557 </button> 558 <div class="media-frame-menu"></div> 559 <div class="media-frame-tab-panel"> 560 <div class="media-frame-router"></div> 561 <div class="media-frame-content"></div> 562 </div> 563 <h2 class="media-frame-actions-heading screen-reader-text"> 564 Selected media actions </h2> 565 <div class="media-frame-toolbar"></div> 566 <div class="media-frame-uploader"></div> 567 </script>
567 568 569
569<script type="text/html" id="tmpl-media-modal"> 570 <div id="wp-media-modal" tabindex="0" class="media-modal wp-core-ui" role="dialog" aria-labelledby="media-frame-title"> 571 <# if ( data.hasCloseButton ) { #> 572 <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> 573 Close dialog </span></button> 574 <# } #> 575 <div class="media-modal-content" role="document"></div> 576 </div> 577 <div class="media-modal-backdrop"></div> 578 </script>
578 579 580
580<script type="text/html" id="tmpl-uploader-window"> 581 <div class="uploader-window-content"> 582 <div class="uploader-editor-title">Drop files to upload</div> 583 </div> 584 </script>
584 585 586
586<script type="text/html" id="tmpl-uploader-editor"> 587 <div class="uploader-editor-content"> 588 <div class="uploader-editor-title">Drop files to upload</div> 589 </div> 590 </script>
590 591 592
592<script type="text/html" id="tmpl-uploader-inline"> 593 <# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #> 594 <# if ( data.canClose ) { #> 595 <button class="close dashicons dashicons-no"><span class="screen-reader-text"> 596 Close uploader </span></button> 597 <# } #> 598 <div class="uploader-inline-content {{ messageClass }}"> 599 <# if ( data.message ) { #> 600 <h2 class="upload-message">{{ data.message }}</h2> 601 <# } #> 602 <div class="upload-ui"> 603 <h2 class="upload-instructions drop-instructions">Drop files to upload</h2> 604 <p class="upload-instructions drop-instructions">or</p> 605 <button type="button" class="browser button button-hero" aria-describedby="post-upload-info">Select Files</button> 606 </div> 607 608 <div class="upload-inline-status"></div> 609 610 <div class="post-upload-ui" id="post-upload-info"> 611 612 <p class="max-upload-size"> 613 Maximum upload file size: 8 MB. </p> 614 615 <# if ( data.suggestedWidth && data.suggestedHeight ) { #> 616 <p class="suggested-dimensions"> 617 Suggested image dimensions: {{data.suggestedWidth}} by {{data.suggestedHeight}} pixels. </p> 618 <# } #> 619 620 </div> 621 </div> 622 </script>
622 623 624
624<script type="text/html" id="tmpl-media-library-view-switcher"> 625 <a href="https://www.openfabrics.org/wp-admin/upload.php?mode=list" class="view-list"> 626 <span class="screen-reader-text"> 627 List view </span> 628 </a> 629 <a href="https://www.openfabrics.org/wp-admin/upload.php?mode=grid" class="view-grid current" aria-current="page"> 630 <span class="screen-reader-text"> 631 Grid view </span> 632 </a> 633 </script>
633 634 635
635<script type="text/html" id="tmpl-uploader-status"> 636 <h2>Uploading</h2> 637 638 <div class="media-progress-bar"><div></div></div> 639 <div class="upload-details"> 640 <span class="upload-count"> 641 <span class="upload-index"></span> / <span class="upload-total"></span> 642 </span> 643 <span class="upload-detail-separator">–</span> 644 <span class="upload-filename"></span> 645 </div> 646 <div class="upload-errors"></div> 647 <button type="button" class="button upload-dismiss-errors">Dismiss errors</button> 648 </script>
648 649 650
650<script type="text/html" id="tmpl-uploader-status-error"> 651 <span class="upload-error-filename word-wrap-break-word">{{{ data.filename }}}</span> 652 <span class="upload-error-message">{{ data.message }}</span> 653 </script>
653 654 655
655<script type="text/html" id="tmpl-edit-attachment-frame"> 656 <div class="edit-media-header"> 657 <button class="left dashicons"<# if ( ! data.hasPrevious ) { #> disabled<# } #>><span class="screen-reader-text">Edit previous media item</span></button> 658 <button class="right dashicons"<# if ( ! data.hasNext ) { #> disabled<# } #>><span class="screen-reader-text">Edit next media item</span></button> 659 <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">Close dialog</span></button> 660 </div> 661 <div class="media-frame-title"></div> 662 <div class="media-frame-content"></div> 663 </script>
663 664 665
665<script type="text/html" id="tmpl-attachment-details-two-column"> 666 <div class="attachment-media-view {{ data.orientation }}"> 667 <h2 class="screen-reader-text">Attachment Preview</h2> 668 <div class="thumbnail thumbnail-{{ data.type }}"> 669 <# if ( data.uploading ) { #> 670 <div class="media-progress-bar"><div></div></div> 671 <# } else if ( data.sizes && data.sizes.full ) { #> 672 <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" /> 673 <# } else if ( data.sizes && data.sizes.large ) { #> 674 <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" /> 675 <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #> 676 <img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" /> 677 <# } #> 678 679 <# if ( 'audio' === data.type ) { #> 680 <div class="wp-media-wrapper wp-audio"> 681 <audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> 682 <source type="{{ data.mime }}" src="{{ data.url }}" /> 683 </audio> 684 </div> 685 <# } else if ( 'video' === data.type ) { 686 var w_rule = ''; 687 if ( data.width ) { 688 w_rule = 'width: ' + data.width + 'px;'; 689 } else if ( wp.media.view.settings.contentWidth ) { 690 w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; 691 } 692 #> 693 <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> 694 <video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata" 695 <# if ( data.width ) { #>width="{{ data.width }}"<# } #> 696 <# if ( data.height ) { #>height="{{ data.height }}"<# } #> 697 <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> 698 <source type="{{ data.mime }}" src="{{ data.url }}" /> 699 </video> 700 </div> 701 <# } #> 702 703 <div class="attachment-actions"> 704 <# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #> 705 <button type="button" class="button edit-attachment">Edit Image</button> 706 <# } else if ( 'pdf' === data.subtype && data.sizes ) { #> 707 <p>Document Preview</p> 708 <# } #> 709 </div> 710 </div> 711 </div> 712 <div class="attachment-info"> 713 <span class="settings-save-status" role="status"> 714 <span class="spinner"></span> 715 <span class="saved">Saved.</span> 716 </span> 717 <div class="details"> 718 <h2 class="screen-reader-text"> 719 Details </h2> 720 <div class="uploaded"><strong>Uploaded on:</strong> {{ data.dateFormatted }}</div> 721 <div class="uploaded-by word-wrap-break-word"> 722 <strong>Uploaded by:</strong> 723 <# if ( data.authorLink ) { #> 724 <a href="{{ data.authorLink }}">{{ data.authorName }}</a> 725 <# } else { #> 726 {{ data.authorName }} 727 <# } #> 728 </div> 729 <# if ( data.uploadedToTitle ) { #> 730 <div class="uploaded-to"> 731 <strong>Uploaded to:</strong> 732 <# if ( data.uploadedToLink ) { #> 733 <a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a> 734 <# } else { #> 735 {{ data.uploadedToTitle }} 736 <# } #> 737 </div> 738 <# } #> 739 <div class="filename"><strong>File name:</strong> {{ data.filename }}</div> 740 <div class="file-type"><strong>File type:</strong> {{ data.mime }}</div> 741 <div class="file-size"><strong>File size:</strong> {{ data.filesizeHumanReadable }}</div> 742 <# if ( 'image' === data.type && ! data.uploading ) { #> 743 <# if ( data.width && data.height ) { #> 744 <div class="dimensions"><strong>Dimensions:</strong> 745 {{ data.width }} by {{ data.height }} pixels </div> 746 <# } #> 747 748 <# if ( data.originalImageURL && data.originalImageName ) { #> 749 <div class="word-wrap-break-word"> 750 <strong>Original image:</strong> 751 <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> 752 </div> 753 <# } #> 754 <# } #> 755 756 <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> 757 <div class="file-length"><strong>Length:</strong> 758 <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> 759 <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> 760 </div> 761 <# } #> 762 763 <# if ( 'audio' === data.type && data.meta.bitrate ) { #> 764 <div class="bitrate"> 765 <strong>Bitrate:</strong> {{ Math.round( data.meta.bitrate / 1000 ) }}kb/s 766 <# if ( data.meta.bitrate_mode ) { #> 767 {{ ' ' + data.meta.bitrate_mode.toUpperCase() }} 768 <# } #> 769 </div> 770 <# } #> 771 772 <# if ( data.mediaStates ) { #> 773 <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> 774 <# } #> 775 776 <div class="compat-meta"> 777 <# if ( data.compat && data.compat.meta ) { #> 778 {{{ data.compat.meta }}} 779 <# } #>
780 </div> 781 </div> 782 783 <div class="settings"> 784 <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> 785 <# if ( 'image' === data.type ) { #> 786 <span class="setting alt-text has-description" data-setting="alt"> 787 <label for="attachment-details-two-column-alt-text" class="name">Alternative Text</label> 788 <textarea id="attachment-details-two-column-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> 789 </span> 790 <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> 791 <# } #> 792 <span class="setting" data-setting="title"> 793 <label for="attachment-details-two-column-title" class="name">Title</label> 794 <input type="text" id="attachment-details-two-column-title" value="{{ data.title }}" {{ maybeReadOnly }} /> 795 </span> 796 <# if ( 'audio' === data.type ) { #> 797 <span class="setting" data-setting="artist"> 798 <label for="attachment-details-two-column-artist" class="name">Artist</label> 799 <input type="text" id="attachment-details-two-column-artist" value="{{ data.artist || data.meta.artist || '' }}" /> 800 </span> 801 <span class="setting" data-setting="album"> 802 <label for="attachment-details-two-column-album" class="name">Album</label> 803 <input type="text" id="attachment-details-two-column-album" value="{{ data.album || data.meta.album || '' }}" /> 804 </span> 805 <# } #> 806 <span class="setting" data-setting="caption"> 807 <# if ( 'image' === data.type ) { #> 808 <label for="attachment-details-two-column-caption" class="name">Image Caption</label> 809 <# } else { #> 810 <label for="attachment-details-two-column-caption" class="name">Short Description</label> 811 <# } #> 812 <textarea id="attachment-details-two-column-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> 813 </span> 814 <span class="setting" data-setting="description"> 815 <label for="attachment-details-two-column-description" class="name">Description</label> 816 <textarea id="attachment-details-two-column-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> 817 </span> 818 <span class="setting" data-setting="url"> 819 <label for="attachment-details-two-column-copy-link" class="name">File URL:</label> 820 <input type="text" class="attachment-details-copy-link ltr" id="attachment-details-two-column-copy-link" value="{{ data.url }}" readonly />
821 <span class="copy-to-clipboard-container"> 822 <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-two-column-copy-link">Copy URL to clipboard</button> 823 <span class="success hidden" aria-hidden="true">Copied!</span> 824 </span> 825 </span> 826 <div class="attachment-compat"></div> 827 </div> 828 829 <div class="actions"> 830 <# if ( data.link ) { #> 831 <a class="view-attachment" href="{{ data.link }}">View attachment page</a> 832 <# } #> 833 <# if ( data.can.save ) { #> 834 <# if ( data.link ) { #> 835 <span class="links-separator">|</span> 836 <# } #> 837 <a href="{{ data.editLink }}">Edit more details</a> 838 <# } #> 839 <# if ( data.can.save && data.link ) { #> 840 <span class="links-separator">|</span> 841 <a href="{{ data.url }}" download>Download file</a> 842 <# } #> 843 <# if ( ! data.uploading && data.can.remove ) { #> 844 <# if ( data.link || data.can.save ) { #> 845 <span class="links-separator">|</span> 846 <# } #> 847 <button type="button" class="button-link delete-attachment">Delete permanently</button> 848 <# } #> 849 </div> 850 </div> 851 </script>
851 852 853
853<script type="text/html" id="tmpl-attachment"> 854 <div class="attachment-preview js--select-attachment type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}"> 855 <div class="thumbnail"> 856 <# if ( data.uploading ) { #> 857 <div class="media-progress-bar"><div style="width: {{ data.percent }}%"></div></div> 858 <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> 859 <div class="centered"> 860 <img src="{{ data.size.url }}" draggable="false" alt="" /> 861 </div> 862 <# } else { #> 863 <div class="centered"> 864 <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #> 865 <img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" /> 866 <# } else if ( data.sizes ) { 867 if ( data.sizes.medium ) { #> 868 <img src="{{ data.sizes.medium.url }}" class="thumbnail" draggable="false" alt="" /> 869 <# } else { #> 870 <img src="{{ data.sizes.full.url }}" class="thumbnail" draggable="false" alt="" /> 871 <# } #> 872 <# } else { #> 873 <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> 874 <# } #> 875 </div> 876 <div class="filename"> 877 <div>{{ data.filename }}</div> 878 </div> 879 <# } #> 880 </div> 881 <# if ( data.buttons.close ) { #> 882 <button type="button" class="button-link attachment-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> 883 Remove </span></button> 884 <# } #> 885 </div> 886 <# if ( data.buttons.check ) { #> 887 <button type="button" class="check" tabindex="-1"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> 888 Deselect </span></button> 889 <# } #> 890 <# 891 var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; 892 if ( data.describe ) { 893 if ( 'image' === data.type ) { #> 894 <input type="text" value="{{ data.caption }}" class="describe" data-setting="caption" 895 aria-label="Caption" 896 placeholder="Caption…" {{ maybeReadOnly }} /> 897 <# } else { #> 898 <input type="text" value="{{ data.title }}" class="describe" data-setting="title" 899 <# if ( 'video' === data.type ) { #> 900 aria-label="Video title" 901 placeholder="Video title…" 902 <# } else if ( 'audio' === data.type ) { #> 903 aria-label="Audio title" 904 placeholder="Audio title…" 905 <# } else { #> 906 aria-label="Media title" 907 placeholder="Media title…" 908 <# } #> {{ maybeReadOnly }} /> 909 <# } 910 } #> 911 </script>
911 912 913
913<script type="text/html" id="tmpl-attachment-details"> 914 <h2> 915 Attachment Details <span class="settings-save-status" role="status"> 916 <span class="spinner"></span> 917 <span class="saved">Saved.</span> 918 </span> 919 </h2> 920 <div class="attachment-info"> 921 922 <# if ( 'audio' === data.type ) { #> 923 <div class="wp-media-wrapper wp-audio"> 924 <audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> 925 <source type="{{ data.mime }}" src="{{ data.url }}" /> 926 </audio> 927 </div> 928 <# } else if ( 'video' === data.type ) { 929 var w_rule = ''; 930 if ( data.width ) { 931 w_rule = 'width: ' + data.width + 'px;'; 932 } else if ( wp.media.view.settings.contentWidth ) { 933 w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; 934 } 935 #> 936 <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> 937 <video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata" 938 <# if ( data.width ) { #>width="{{ data.width }}"<# } #> 939 <# if ( data.height ) { #>height="{{ data.height }}"<# } #> 940 <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> 941 <source type="{{ data.mime }}" src="{{ data.url }}" /> 942 </video> 943 </div> 944 <# } else { #> 945 <div class="thumbnail thumbnail-{{ data.type }}"> 946 <# if ( data.uploading ) { #> 947 <div class="media-progress-bar"><div></div></div> 948 <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> 949 <img src="{{ data.size.url }}" draggable="false" alt="" /> 950 <# } else { #> 951 <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> 952 <# } #> 953 </div> 954 <# } #> 955 956 <div class="details"> 957 <div class="filename">{{ data.filename }}</div> 958 <div class="uploaded">{{ data.dateFormatted }}</div> 959 960 <div class="file-size">{{ data.filesizeHumanReadable }}</div> 961 <# if ( 'image' === data.type && ! data.uploading ) { #> 962 <# if ( data.width && data.height ) { #> 963 <div class="dimensions"> 964 {{ data.width }} by {{ data.height }} pixels </div> 965 <# } #> 966 967 <# if ( data.originalImageURL && data.originalImageName ) { #> 968 <div class="word-wrap-break-word"> 969 Original image: <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> 970 </div> 971 <# } #> 972 973 <# if ( data.can.save && data.sizes ) { #> 974 <a class="edit-attachment" href="{{ data.editLink }}&image-editor" target="_blank">Edit Image</a> 975 <# } #> 976 <# } #> 977 978 <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> 979 <div class="file-length">Length: <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> 980 <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> 981 </div> 982 <# } #> 983 984 <# if ( data.mediaStates ) { #> 985 <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> 986 <# } #> 987 988 <# if ( ! data.uploading && data.can.remove ) { #> 989 <button type="button" class="button-link delete-attachment">Delete permanently</button> 990 <# } #> 991 992 <div class="compat-meta"> 993 <# if ( data.compat && data.compat.meta ) { #> 994 {{{ data.compat.meta }}} 995 <# } #> 996 </div> 997 </div> 998 </div> 999 <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> 1000 <# if ( 'image' === data.type ) { #> 1001 <span class="setting alt-text has-description" data-setting="alt"> 1002 <label for="attachment-details-alt-text" class="name">Alt Text</label> 1003 <textarea id="attachment-details-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> 1004 </span> 1005 <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> 1006 <# } #> 1007 <span class="setting" data-setting="title"> 1008 <label for="attachment-details-title" class="name">Title</label> 1009 <input type="text" id="attachment-details-title" value="{{ data.title }}" {{ maybeReadOnly }} /> 1010 </span> 1011 <# if ( 'audio' === data.type ) { #> 1012 <span class="setting" data-setting="artist"> 1013 <label for="attachment-details-artist" class="name">Artist</label> 1014 <input type="text" id="attachment-details-artist" value="{{ data.artist || data.meta.artist || '' }}" /> 1015 </span> 1016 <span class="setting" data-setting="album"> 1017 <label for="attachment-details-album" class="name">Album</label> 1018 <input type="text" id="attachment-details-album" value="{{ data.album || data.meta.album || '' }}" /> 1019 </span> 1020 <# } #> 1021 <span class="setting" data-setting="caption"> 1022 <# if ( 'image' === data.type ) { #> 1023 <label for="attachment-details-caption" class="name">Image Caption</label> 1024 <# } else { #> 1025 <label for="attachment-details-caption" class="name">Short Description</label> 1026 <# } #> 1027 <textarea id="attachment-details-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> 1028 </span> 1029 <span class="setting" data-setting="description"> 1030 <label for="attachment-details-description" class="name">Description</label> 1031 <textarea id="attachment-details-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> 1032 </span> 1033 <span class="setting" data-setting="url"> 1034 <label for="attachment-details-copy-link" class="name">File URL:</label> 1035 <input type="text" class="attachment-details-copy-link ltr" id="attachment-details-copy-link" value="{{ data.url }}" readonly />
1036 <div class="copy-to-clipboard-container"> 1037 <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-copy-link">Copy URL to clipboard</button> 1038 <span class="success hidden" aria-hidden="true">Copied!</span> 1039 </div> 1040 </span> 1041 </script>
1041 1042 1043
1043<script type="text/html" id="tmpl-media-selection"> 1044 <div class="selection-info"> 1045 <span class="count"></span> 1046 <# if ( data.editable ) { #> 1047 <button type="button" class="button-link edit-selection">Edit Selection</button> 1048 <# } #> 1049 <# if ( data.clearable ) { #> 1050 <button type="button" class="button-link clear-selection">Clear</button> 1051 <# } #> 1052 </div> 1053 <div class="selection-view"></div> 1054 </script>
1054 1055 1056
1056<script type="text/html" id="tmpl-attachment-display-settings"> 1057 <h2>Attachment Display Settings</h2> 1058 1059 <# if ( 'image' === data.type ) { #> 1060 <span class="setting align"> 1061 <label for="attachment-display-settings-alignment" class="name">Alignment</label> 1062 <select id="attachment-display-settings-alignment" class="alignment" 1063 data-setting="align" 1064 <# if ( data.userSettings ) { #> 1065 data-user-setting="align" 1066 <# } #>> 1067 1068 <option value="left"> 1069 Left </option> 1070 <option value="center"> 1071 Center </option> 1072 <option value="right"> 1073 Right </option> 1074 <option value="none" selected> 1075 None </option> 1076 </select> 1077 </span> 1078 <# } #> 1079 1080 <span class="setting"> 1081 <label for="attachment-display-settings-link-to" class="name"> 1082 <# if ( data.model.canEmbed ) { #> 1083 Embed or Link <# } else { #> 1084 Link To <# } #> 1085 </label> 1086 <select id="attachment-display-settings-link-to" class="link-to" 1087 data-setting="link" 1088 <# if ( data.userSettings && ! data.model.canEmbed ) { #> 1089 data-user-setting="urlbutton" 1090 <# } #>> 1091 1092 <# if ( data.model.canEmbed ) { #> 1093 <option value="embed" selected> 1094 Embed Media Player </option> 1095 <option value="file"> 1096 <# } else { #> 1097 <option value="none" selected> 1098 None </option> 1099 <option value="file"> 1100 <# } #> 1101 <# if ( data.model.canEmbed ) { #> 1102 Link to Media File <# } else { #> 1103 Media File <# } #> 1104 </option> 1105 <option value="post"> 1106 <# if ( data.model.canEmbed ) { #> 1107 Link to Attachment Page <# } else { #> 1108 Attachment Page <# } #> 1109 </option> 1110 <# if ( 'image' === data.type ) { #> 1111 <option value="custom"> 1112 Custom URL </option> 1113 <# } #> 1114 </select> 1115 </span> 1116 <span class="setting"> 1117 <label for="attachment-display-settings-link-to-custom" class="name">URL</label> 1118 <input type="text" id="attachment-display-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> 1119 </span> 1120 1121 <# if ( 'undefined' !== typeof data.sizes ) { #> 1122 <span class="setting"> 1123 <label for="attachment-display-settings-size" class="name">Size</label> 1124 <select id="attachment-display-settings-size" class="size" name="size" 1125 data-setting="size" 1126 <# if ( data.userSettings ) { #> 1127 data-user-setting="imgsize" 1128 <# } #>> 1129 <# 1130 var size = data.sizes['thumbnail']; 1131 if ( size ) { #> 1132 <option value="thumbnail" > 1133 Thumbnail – {{ size.width }} × {{ size.height }} 1134 </option> 1135 <# } #> 1136 <# 1137 var size = data.sizes['medium']; 1138 if ( size ) { #> 1139 <option value="medium" > 1140 Medium – {{ size.width }} × {{ size.height }} 1141 </option> 1142 <# } #> 1143 <# 1144 var size = data.sizes['large']; 1145 if ( size ) { #> 1146 <option value="large" > 1147 Large – {{ size.width }} × {{ size.height }} 1148 </option> 1149 <# } #> 1150 <# 1151 var size = data.sizes['full']; 1152 if ( size ) { #> 1153 <option value="full" selected='selected'> 1154 Full Size – {{ size.width }} × {{ size.height }} 1155 </option> 1156 <# } #> 1157 </select> 1158 </span> 1159 <# } #> 1160 </script>
1160 1161 1162
1162<script type="text/html" id="tmpl-gallery-settings"> 1163 <h2>Gallery Settings</h2> 1164 1165 <span class="setting"> 1166 <label for="gallery-settings-link-to" class="name">Link To</label> 1167 <select id="gallery-settings-link-to" class="link-to" 1168 data-setting="link" 1169 <# if ( data.userSettings ) { #> 1170 data-user-setting="urlbutton" 1171 <# } #>> 1172 1173 <option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' === wp.media.galleryDefaults.link ) { 1174 #>selected="selected"<# } 1175 #>> 1176 Attachment Page </option> 1177 <option value="file" <# if ( 'file' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> 1178 Media File </option> 1179 <option value="none" <# if ( 'none' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> 1180 None </option> 1181 </select> 1182 </span> 1183 1184 <span class="setting"> 1185 <label for="gallery-settings-columns" class="name select-label-inline">Columns</label> 1186 <select id="gallery-settings-columns" class="columns" name="columns" 1187 data-setting="columns"> 1188 <option value="1" <# 1189 if ( 1 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1190 #>> 1191 1 </option> 1192 <option value="2" <# 1193 if ( 2 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1194 #>> 1195 2 </option> 1196 <option value="3" <# 1197 if ( 3 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1198 #>> 1199 3 </option> 1200 <option value="4" <# 1201 if ( 4 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1202 #>> 1203 4 </option> 1204 <option value="5" <# 1205 if ( 5 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1206 #>> 1207 5 </option> 1208 <option value="6" <# 1209 if ( 6 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1210 #>> 1211 6 </option> 1212 <option value="7" <# 1213 if ( 7 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1214 #>> 1215 7 </option> 1216 <option value="8" <# 1217 if ( 8 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1218 #>> 1219 8 </option> 1220 <option value="9" <# 1221 if ( 9 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } 1222 #>> 1223 9 </option> 1224 </select> 1225 </span> 1226 1227 <span class="setting"> 1228 <input type="checkbox" id="gallery-settings-random-order" data-setting="_orderbyRandom" /> 1229 <label for="gallery-settings-random-order" class="checkbox-label-inline">Random Order</label> 1230 </span> 1231 1232 <span class="setting size"> 1233 <label for="gallery-settings-size" class="name">Size</label> 1234 <select id="gallery-settings-size" class="size" name="size" 1235 data-setting="size" 1236 <# if ( data.userSettings ) { #> 1237 data-user-setting="imgsize" 1238 <# } #> 1239 > 1240 <option value="thumbnail"> 1241 Thumbnail </option> 1242 <option value="medium"> 1243 Medium </option> 1244 <option value="large"> 1245 Large </option> 1246 <option value="full"> 1247 Full Size </option> 1248 </select> 1249 </span> 1250 </script>
1250 1251 1252
1252<script type="text/html" id="tmpl-playlist-settings"> 1253 <h2>Playlist Settings</h2> 1254 1255 <# var emptyModel = _.isEmpty( data.model ), 1256 isVideo = 'video' === data.controller.get('library').props.get('type'); #> 1257 1258 <span class="setting"> 1259 <input type="checkbox" id="playlist-settings-show-list" data-setting="tracklist" <# if ( emptyModel ) { #> 1260 checked="checked" 1261 <# } #> /> 1262 <label for="playlist-settings-show-list" class="checkbox-label-inline"> 1263 <# if ( isVideo ) { #> 1264 Show Video List <# } else { #> 1265 Show Tracklist <# } #> 1266 </label> 1267 </span> 1268 1269 <# if ( ! isVideo ) { #> 1270 <span class="setting"> 1271 <input type="checkbox" id="playlist-settings-show-artist" data-setting="artists" <# if ( emptyModel ) { #> 1272 checked="checked" 1273 <# } #> /> 1274 <label for="playlist-settings-show-artist" class="checkbox-label-inline"> 1275 Show Artist Name in Tracklist </label> 1276 </span> 1277 <# } #> 1278 1279 <span class="setting"> 1280 <input type="checkbox" id="playlist-settings-show-images" data-setting="images" <# if ( emptyModel ) { #> 1281 checked="checked" 1282 <# } #> /> 1283 <label for="playlist-settings-show-images" class="checkbox-label-inline"> 1284 Show Images </label> 1285 </span> 1286 </script>
1286 1287 1288
1288<script type="text/html" id="tmpl-embed-link-settings"> 1289 <span class="setting link-text"> 1290 <label for="embed-link-settings-link-text" class="name">Link Text</label> 1291 <input type="text" id="embed-link-settings-link-text" class="alignment" data-setting="linkText" /> 1292 </span> 1293 <div class="embed-container" style="display: none;"> 1294 <div class="embed-preview"></div> 1295 </div> 1296 </script>
1296 1297 1298
1298<script type="text/html" id="tmpl-embed-image-settings"> 1299 <div class="wp-clearfix"> 1300 <div class="thumbnail"> 1301 <img src="{{ data.model.url }}" draggable="false" alt="" /> 1302 </div> 1303 </div> 1304 1305 <span class="setting alt-text has-description"> 1306 <label for="embed-image-settings-alt-text" class="name">Alternative Text</label> 1307 <textarea id="embed-image-settings-alt-text" data-setting="alt" aria-describedby="alt-text-description"></textarea> 1308 </span> 1309 <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> 1310 1311 <span class="setting caption"> 1312 <label for="embed-image-settings-caption" class="name">Caption</label> 1313 <textarea id="embed-image-settings-caption" data-setting="caption"></textarea> 1314 </span> 1315 1316 <fieldset class="setting-group"> 1317 <legend class="name">Align</legend> 1318 <span class="setting align"> 1319 <span class="button-group button-large" data-setting="align"> 1320 <button class="button" value="left"> 1321 Left </button> 1322 <button class="button" value="center"> 1323 Center </button> 1324 <button class="button" value="right"> 1325 Right </button> 1326 <button class="button active" value="none"> 1327 None </button> 1328 </span> 1329 </span> 1330 </fieldset> 1331 1332 <fieldset class="setting-group"> 1333 <legend class="name">Link To</legend> 1334 <span class="setting link-to"> 1335 <span class="button-group button-large" data-setting="link"> 1336 <button class="button" value="file"> 1337 Image URL </button> 1338 <button class="button" value="custom"> 1339 Custom URL </button> 1340 <button class="button active" value="none"> 1341 None </button> 1342 </span> 1343 </span> 1344 <span class="setting"> 1345 <label for="embed-image-settings-link-to-custom" class="name">URL</label> 1346 <input type="text" id="embed-image-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> 1347 </span> 1348 </fieldset> 1349 </script>
1349 1350 1351
1351<script type="text/html" id="tmpl-image-details"> 1352 <div class="media-embed"> 1353 <div class="embed-media-settings"> 1354 <div class="column-settings"> 1355 <span class="setting alt-text has-description"> 1356 <label for="image-details-alt-text" class="name">Alternative Text</label> 1357 <textarea id="image-details-alt-text" data-setting="alt" aria-describedby="alt-text-description">{{ data.model.alt }}</textarea> 1358 </span> 1359 <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> 1360 1361 <span class="setting caption"> 1362 <label for="image-details-caption" class="name">Caption</label> 1363 <textarea id="image-details-caption" data-setting="caption">{{ data.model.caption }}</textarea> 1364 </span> 1365 1366 <h2>Display Settings</h2> 1367 <fieldset class="setting-group"> 1368 <legend class="legend-inline">Align</legend> 1369 <span class="setting align"> 1370 <span class="button-group button-large" data-setting="align"> 1371 <button class="button" value="left"> 1372 Left </button> 1373 <button class="button" value="center"> 1374 Center </button> 1375 <button class="button" value="right"> 1376 Right </button> 1377 <button class="button active" value="none"> 1378 None </button> 1379 </span> 1380 </span> 1381 </fieldset> 1382 1383 <# if ( data.attachment ) { #> 1384 <# if ( 'undefined' !== typeof data.attachment.sizes ) { #> 1385 <span class="setting size"> 1386 <label for="image-details-size" class="name">Size</label> 1387 <select id="image-details-size" class="size" name="size" 1388 data-setting="size" 1389 <# if ( data.userSettings ) { #> 1390 data-user-setting="imgsize" 1391 <# } #>> 1392 <# 1393 var size = data.sizes['thumbnail']; 1394 if ( size ) { #> 1395 <option value="thumbnail"> 1396 Thumbnail – {{ size.width }} × {{ size.height }} 1397 </option> 1398 <# } #> 1399 <# 1400 var size = data.sizes['medium']; 1401 if ( size ) { #> 1402 <option value="medium"> 1403 Medium – {{ size.width }} × {{ size.height }} 1404 </option> 1405 <# } #> 1406 <# 1407 var size = data.sizes['large']; 1408 if ( size ) { #> 1409 <option value="large"> 1410 Large – {{ size.width }} × {{ size.height }} 1411 </option> 1412 <# } #> 1413 <# 1414 var size = data.sizes['full']; 1415 if ( size ) { #> 1416 <option value="full"> 1417 Full Size – {{ size.width }} × {{ size.height }} 1418 </option> 1419 <# } #> 1420 <option value="custom"> 1421 Custom Size </option> 1422 </select> 1423 </span> 1424 <# } #> 1425 <div class="custom-size wp-clearfix<# if ( data.model.size !== 'custom' ) { #> hidden<# } #>"> 1426 <span class="custom-size-setting"> 1427 <label for="image-details-size-width">Width</label> 1428 <input type="number" id="image-details-size-width" aria-describedby="image-size-desc" data-setting="customWidth" step="1" value="{{ data.model.customWidth }}" /> 1429 </span> 1430 <span class="sep" aria-hidden="true">×</span> 1431 <span class="custom-size-setting"> 1432 <label for="image-details-size-height">Height</label> 1433 <input type="number" id="image-details-size-height" aria-describedby="image-size-desc" data-setting="customHeight" step="1" value="{{ data.model.customHeight }}" /> 1434 </span> 1435 <p id="image-size-desc" class="description">Image size in pixels</p> 1436 </div> 1437 <# } #> 1438 1439 <span class="setting link-to"> 1440 <label for="image-details-link-to" class="name">Link To</label> 1441 <select id="image-details-link-to" data-setting="link"> 1442 <# if ( data.attachment ) { #> 1443 <option value="file"> 1444 Media File </option> 1445 <option value="post"> 1446 Attachment Page </option> 1447 <# } else { #> 1448 <option value="file"> 1449 Image URL </option> 1450 <# } #> 1451 <option value="custom"> 1452 Custom URL </option> 1453 <option value="none"> 1454 None </option> 1455 </select> 1456 </span> 1457 <span class="setting"> 1458 <label for="image-details-link-to-custom" class="name">URL</label> 1459 <input type="text" id="image-details-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> 1460 </span> 1461 1462 <div class="advanced-section"> 1463 <h2><button type="button" class="button-link advanced-toggle">Advanced Options</button></h2> 1464 <div class="advanced-settings hidden"> 1465 <div class="advanced-image"> 1466 <span class="setting title-text"> 1467 <label for="image-details-title-attribute" class="name">Image Title Attribute</label> 1468 <input type="text" id="image-details-title-attribute" data-setting="title" value="{{ data.model.title }}" /> 1469 </span> 1470 <span class="setting extra-classes"> 1471 <label for="image-details-css-class" class="name">Image CSS Class</label> 1472 <input type="text" id="image-details-css-class" data-setting="extraClasse
1472s" value="{{ data.model.extraClasses }}" /> 1473 </span> 1474 </div> 1475 <div class="advanced-link"> 1476 <span class="setting link-target"> 1477 <input type="checkbox" id="image-details-link-target" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>> 1478 <label for="image-details-link-target" class="checkbox-label">Open link in a new tab</label> 1479 </span> 1480 <span class="setting link-rel"> 1481 <label for="image-details-link-rel" class="name">Link Rel</label> 1482 <input type="text" id="image-details-link-rel" data-setting="linkRel" value="{{ data.model.linkRel }}" /> 1483 </span> 1484 <span class="setting link-class-name"> 1485 <label for="image-details-link-css-class" class="name">Link CSS Class</label> 1486 <input type="text" id="image-details-link-css-class" data-setting="linkClassName" value="{{ data.model.linkClassName }}" /> 1487 </span> 1488 </div> 1489 </div> 1490 </div> 1491 </div> 1492 <div class="column-image"> 1493 <div class="image"> 1494 <img src="{{ data.model.url }}" draggable="false" alt="" /> 1495 <# if ( data.attachment && window.imageEdit ) { #> 1496 <div class="actions"> 1497 <input type="button" class="edit-attachment button" value="Edit Original" /> 1498 <input type="button" class="replace-attachment button" value="Replace" /> 1499 </div> 1500 <# } #> 1501 </div> 1502 </div> 1503 </div> 1504 </div> 1505 </script>
1505 1506 1507
1507<script type="text/html" id="tmpl-image-editor"> 1508 <div id="media-head-{{ data.id }}"></div> 1509 <div id="image-editor-{{ data.id }}"></div> 1510 </script>
1510 1511 1512
1512<script type="text/html" id="tmpl-audio-details"> 1513 <# var ext, html5types = { 1514 mp3: wp.media.view.settings.embedMimes.mp3, 1515 ogg: wp.media.view.settings.embedMimes.ogg 1516 }; #> 1517 1518 <div class="media-embed media-embed-details"> 1519 <div class="embed-media-settings embed-audio-settings"> 1520 <audio crossorigin="anonymous" style="visibility: hidden" 1521 controls 1522 class="wp-audio-shortcode" 1523 width="{{ _.isUndefined( data.model.width ) ? 400 : data.model.width }}" 1524 preload="{{ _.isUndefined( data.model.preload ) ? 'none' : data.model.preload }}" 1525 <# 1526 if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { 1527 #> autoplay<# 1528 } 1529 if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { 1530 #> loop<# 1531 } 1532 #> 1533> 1534 <# if ( ! _.isEmpty( data.model.src ) ) { #> 1535 <source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> 1536 <# } #> 1537 1538 <# if ( ! _.isEmpty( data.model.mp3 ) ) { #> 1539 <source src="{{ data.model.mp3 }}" type="{{ wp.media.view.settings.embedMimes[ 'mp3' ] }}" /> 1540 <# } #> 1541 <# if ( ! _.isEmpty( data.model.ogg ) ) { #> 1542 <source src="{{ data.model.ogg }}" type="{{ wp.media.view.settings.embedMimes[ 'ogg' ] }}" /> 1543 <# } #> 1544 <# if ( ! _.isEmpty( data.model.flac ) ) { #> 1545 <source src="{{ data.model.flac }}" type="{{ wp.media.view.settings.embedMimes[ 'flac' ] }}" /> 1546 <# } #> 1547 <# if ( ! _.isEmpty( data.model.m4a ) ) { #> 1548 <source src="{{ data.model.m4a }}" type="{{ wp.media.view.settings.embedMimes[ 'm4a' ] }}" /> 1549 <# } #> 1550 <# if ( ! _.isEmpty( data.model.wav ) ) { #> 1551 <source src="{{ data.model.wav }}" type="{{ wp.media.view.settings.embedMimes[ 'wav' ] }}" /> 1552 <# } #> 1553 </audio> 1554 1555 <# if ( ! _.isEmpty( data.model.src ) ) { 1556 ext = data.model.src.split('.').pop(); 1557 if ( html5types[ ext ] ) { 1558 delete html5types[ ext ]; 1559 } 1560 #> 1561 <span class="setting"> 1562 <label for="audio-details-source" class="name">URL</label> 1563 <input type="text" id="audio-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> 1564 <button type="button" class="button-link remove-setting">Remove audio source</button> 1565 </span> 1566 <# } #> 1567 <# if ( ! _.isEmpty( data.model.mp3 ) ) { 1568 if ( ! _.isUndefined( html5types.mp3 ) ) { 1569 delete html5types.mp3; 1570 } 1571 #> 1572 <span class="setting"> 1573 <label for="audio-details-mp3-source" class="name">MP3</label> 1574 <input type="text" id="audio-details-mp3-source" readonly data-setting="mp3" value="{{ data.model.mp3 }}" /> 1575 <button type="button" class="button-link remove-setting">Remove audio source</button> 1576 </span> 1577 <# } #> 1578 <# if ( ! _.isEmpty( data.model.ogg ) ) { 1579 if ( ! _.isUndefined( html5types.ogg ) ) { 1580 delete html5types.ogg; 1581 } 1582 #> 1583 <span class="setting"> 1584 <label for="audio-details-ogg-source" class="name">OGG</label> 1585 <input type="text" id="audio-details-ogg-source" readonly data-setting="ogg" value="{{ data.model.ogg }}" /> 1586 <button type="button" class="button-link remove-setting">Remove audio source</button> 1587 </span> 1588 <# } #> 1589 <# if ( ! _.isEmpty( data.model.flac ) ) { 1590 if ( ! _.isUndefined( html5types.flac ) ) { 1591 delete html5types.flac; 1592 } 1593 #> 1594 <span class="setting"> 1595 <label for="audio-details-flac-source" class="name">FLAC</label> 1596 <input type="text" id="audio-details-flac-source" readonly data-setting="flac" value="{{ data.model.flac }}" /> 1597 <button type="button" class="button-link remove-setting">Remove audio source</button> 1598 </span> 1599 <# } #> 1600 <# if ( ! _.isEmpty( data.model.m4a ) ) { 1601 if ( ! _.isUndefined( html5types.m4a ) ) { 1602 delete html5types.m4a; 1603 } 1604 #> 1605 <span class="setting"> 1606 <label for="audio-details-m4a-source" class="name">M4A</label> 1607 <input type="text" id="audio-details-m4a-source" readonly data-setting="m4a" value="{{ data.model.m4a }}" /> 1608 <button type="button" class="button-link remove-setting">Remove audio source</button> 1609 </span> 1610 <# } #> 1611 <# if ( ! _.isEmpty( data.model.wav ) ) { 1612 if ( ! _.isUndefined( html5types.wav ) ) { 1613 delete html5types.wav; 1614 } 1615 #> 1616 <span class="setting"> 1617 <label for="audio-details-wav-source" class="name">WAV</label> 1618 <input type="text" id="audio-details-wav-source" readonly data-setting="wav" value="{{ data.model.wav }}" /> 1619 <button type="button" class="button-link remove-setting">Remove audio source</button> 1620 </span> 1621 <# } #> 1622 1623 <# if ( ! _.isEmpty( html5types ) ) { #> 1624 <fieldset class="setting-group"> 1625 <legend class="name">Add alternate sources for maximum HTML5 playback</legend> 1626 <span class="setting"> 1627 <span class="button-large"> 1628 <# _.each( html5types, function (mime, type) { #> 1629 <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> 1630 <# } ) #> 1631 </span> 1632 </span> 1633 </fieldset> 1634 <# } #> 1635 1636 <fieldset class="setting-group"> 1637 <legend class="name">Preload</legend> 1638 <span class="setting preload"> 1639 <span class="button-group button-large" data-setting="preload"> 1640 <button class="button" value="auto">Auto</button> 1641 <button class="button" value="metadata">Metadata</button> 1642 <button class="button active" value="none">None</button> 1643 </span> 1644 </span> 1645 </fieldset> 1646 1647 <span class="setting-group"> 1648 <span class="setting checkbox-setting autoplay"> 1649 <input type="checkbox" id="audio-details-autoplay" data-setting="autoplay" /> 1650 <label for="audio-details-autoplay" class="checkbox-label">Autoplay</label> 1651 </span> 1652 1653 <span class="setting checkbox-setting"> 1654 <input type="checkbox" id="audio-details-loop" data-setting="loop" /> 1655 <label for="audio-details-loop" class="checkbox-label">Loop</label> 1656 </span> 1657 </span> 1658 </div> 1659 </div> 1660 </script>
1660 1661 1662
1662<script type="text/html" id="tmpl-video-details"> 1663 <# var ext, html5types = { 1664 mp4: wp.media.view.settings.embedMimes.mp4, 1665 ogv: wp.media.view.settings.embedMimes.ogv, 1666 webm: wp.media.view.settings.embedMimes.webm 1667 }; #> 1668 1669 <div class="media-embed media-embed-details"> 1670 <div class="embed-media-settings embed-video-settings"> 1671 <div class="wp-video-holder"> 1672 <# 1673 var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width, 1674 h = ! data.model.height ? 360 : data.model.height; 1675 1676 if ( data.model.width && w !== data.model.width ) { 1677 h = Math.ceil( ( h * w ) / data.model.width ); 1678 } 1679 #> 1680 1681 <# var w_rule = '', classes = [], 1682 w, h, settings = wp.media.view.settings, 1683 isYouTube = isVimeo = false; 1684 1685 if ( ! _.isEmpty( data.model.src ) ) { 1686 isYouTube = data.model.src.match(/youtube|youtu\.be/); 1687 isVimeo = -1 !== data.model.src.indexOf('vimeo'); 1688 } 1689 1690 if ( settings.contentWidth && data.model.width >= settings.contentWidth ) { 1691 w = settings.contentWidth; 1692 } else { 1693 w = data.model.width; 1694 } 1695 1696 if ( w !== data.model.width ) { 1697 h = Math.ceil( ( data.model.height * w ) / data.model.width ); 1698 } else { 1699 h = data.model.height; 1700 } 1701 1702 if ( w ) { 1703 w_rule = 'width: ' + w + 'px; '; 1704 } 1705 1706 if ( isYouTube ) { 1707 classes.push( 'youtube-video' ); 1708 } 1709 1710 if ( isVimeo ) { 1711 classes.push( 'vimeo-video' ); 1712 } 1713 1714#> 1715<div style="{{ w_rule }}" class="wp-video"> 1716<video crossorigin="anonymous" controls 1717 class="wp-video-shortcode {{ classes.join( ' ' ) }}" 1718 <# if ( w ) { #>width="{{ w }}"<# } #> 1719 <# if ( h ) { #>height="{{ h }}"<# } #> 1720 <# 1721 if ( ! _.isUndefined( data.model.poster ) && data.model.poster ) { 1722 #> poster="{{ data.model.poster }}"<# 1723 } #> 1724 preload ="{{ _.isUndefined( data.model.preload ) ? 'metadata' : data.model.preload }}" 1725 <# 1726 if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { 1727 #> autoplay<# 1728 } 1729 if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { 1730 #> loop<# 1731 } 1732 #> 1733> 1734 <# if ( ! _.isEmpty( data.model.src ) ) { 1735 if ( isYouTube ) { #> 1736 <source src="{{ data.model.src }}" type="video/youtube" /> 1737 <# } else if ( isVimeo ) { #> 1738 <source src="{{ data.model.src }}" type="video/vimeo" /> 1739 <# } else { #> 1740 <source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> 1741 <# } 1742 } #> 1743 1744 <# if ( data.model.mp4 ) { #> 1745 <source src="{{ data.model.mp4 }}" type="{{ settings.embedMimes[ 'mp4' ] }}" /> 1746 <# } #> 1747 <# if ( data.model.m4v ) { #> 1748 <source src="{{ data.model.m4v }}" type="{{ settings.embedMimes[ 'm4v' ] }}" /> 1749 <# } #> 1750 <# if ( data.model.webm ) { #> 1751 <source src="{{ data.model.webm }}" type="{{ settings.embedMimes[ 'webm' ] }}" /> 1752 <# } #> 1753 <# if ( data.model.ogv ) { #> 1754 <source src="{{ data.model.ogv }}" type="{{ settings.embedMimes[ 'ogv' ] }}" /> 1755 <# } #> 1756 <# if ( data.model.flv ) { #> 1757 <source src="{{ data.model.flv }}" type="{{ settings.embedMimes[ 'flv' ] }}" /> 1758 <# } #> 1759 {{{ data.model.content }}} 1760</video> 1761</div> 1762 1763 <# if ( ! _.isEmpty( data.model.src ) ) { 1764 ext = data.model.src.split('.').pop(); 1765 if ( html5types[ ext ] ) { 1766 delete html5types[ ext ]; 1767 } 1768 #> 1769 <span class="setting"> 1770 <label for="video-details-source" class="name">URL</label> 1771 <input type="text" id="video-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> 1772 <button type="button" class="button-link remove-setting">Remove video source</button> 1773 </span> 1774 <# } #> 1775 <# if ( ! _.isEmpty( data.model.mp4 ) ) { 1776 if ( ! _.isUndefined( html5types.mp4 ) ) { 1777 delete html5types.mp4; 1778 } 1779 #> 1780 <span class="setting"> 1781 <label for="video-details-mp4-source" class="name">MP4</label> 1782 <input type="text" id="video-details-mp4-source" readonly data-setting="mp4" value="{{ data.model.mp4 }}" /> 1783 <button type="button" class="button-link remove-setting">Remove video source</button> 1784 </span> 1785 <# } #> 1786 <# if ( ! _.isEmpty( data.model.m4v ) ) { 1787 if ( ! _.isUndefined( html5types.m4v ) ) { 1788 delete html5types.m4v; 1789 } 1790 #> 1791 <span class="setting">
1792 <label for="video-details-m4v-source" class="name">M4V</label> 1793 <input type="text" id="video-details-m4v-source" readonly data-setting="m4v" value="{{ data.model.m4v }}" /> 1794 <button type="button" class="button-link remove-setting">Remove video source</button> 1795 </span> 1796 <# } #> 1797 <# if ( ! _.isEmpty( data.model.webm ) ) { 1798 if ( ! _.isUndefined( html5types.webm ) ) { 1799 delete html5types.webm; 1800 } 1801 #> 1802 <span class="setting"> 1803 <label for="video-details-webm-source" class="name">WEBM</label> 1804 <input type="text" id="video-details-webm-source" readonly data-setting="webm" value="{{ data.model.webm }}" /> 1805 <button type="button" class="button-link remove-setting">Remove video source</button> 1806 </span> 1807 <# } #> 1808 <# if ( ! _.isEmpty( data.model.ogv ) ) { 1809 if ( ! _.isUndefined( html5types.ogv ) ) { 1810 delete html5types.ogv; 1811 } 1812 #> 1813 <span class="setting"> 1814 <label for="video-details-ogv-source" class="name">OGV</label> 1815 <input type="text" id="video-details-ogv-source" readonly data-setting="ogv" value="{{ data.model.ogv }}" /> 1816 <button type="button" class="button-link remove-setting">Remove video source</button> 1817 </span> 1818 <# } #> 1819 <# if ( ! _.isEmpty( data.model.flv ) ) { 1820 if ( ! _.isUndefined( html5types.flv ) ) { 1821 delete html5types.flv; 1822 } 1823 #> 1824 <span class="setting"> 1825 <label for="video-details-flv-source" class="name">FLV</label> 1826 <input type="text" id="video-details-flv-source" readonly data-setting="flv" value="{{ data.model.flv }}" /> 1827 <button type="button" class="button-link remove-setting">Remove video source</button> 1828 </span> 1829 <# } #> 1830 </div> 1831 1832 <# if ( ! _.isEmpty( html5types ) ) { #> 1833 <fieldset class="setting-group"> 1834 <legend class="name">Add alternate sources for maximum HTML5 playback</legend> 1835 <span class="setting"> 1836 <span class="button-large"> 1837 <# _.each( html5types, function (mime, type) { #> 1838 <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> 1839 <# } ) #> 1840 </span> 1841 </span> 1842 </fieldset> 1843 <# } #> 1844 1845 <# if ( ! _.isEmpty( data.model.poster ) ) { #> 1846 <span class="setting"> 1847 <label for="video-details-poster-image" class="name">Poster Image</label> 1848 <input type="text" id="video-details-poster-image" readonly data-setting="poster" value="{{ data.model.poster }}" /> 1849 <button type="button" class="button-link remove-setting">Remove poster image</button> 1850 </span> 1851 <# } #> 1852 1853 <fieldset class="setting-group"> 1854 <legend class="name">Preload</legend> 1855 <span class="setting preload"> 1856 <span class="button-group button-large" data-setting="preload"> 1857 <button class="button" value="auto">Auto</button> 1858 <button class="button" value="metadata">Metadata</button> 1859 <button class="button active" value="none">None</button> 1860 </span> 1861 </span> 1862 </fieldset> 1863 1864 <span class="setting-group"> 1865 <span class="setting checkbox-setting autoplay"> 1866 <input type="checkbox" id="video-details-autoplay" data-setting="autoplay" /> 1867 <label for="video-details-autoplay" class="checkbox-label">Autoplay</label> 1868 </span> 1869 1870 <span class="setting checkbox-setting"> 1871 <input type="checkbox" id="video-details-loop" data-setting="loop" /> 1872 <label for="video-details-loop" class="checkbox-label">Loop</label> 1873 </span> 1874 </span> 1875 1876 <span class="setting" data-setting="content"> 1877 <# 1878 var content = ''; 1879 if ( ! _.isEmpty( data.model.content ) ) { 1880 var tracks = jQuery( data.model.content ).filter( 'track' ); 1881 _.each( tracks.toArray(), function( track, index ) { 1882 content += track.outerHTML; #> 1883 <label for="video-details-track-{{ index }}" class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</label> 1884 <input class="content-track" type="text" id="video-details-track-{{ index }}" aria-describedby="video-details-track-desc-{{ index }}" value="{{ track.outerHTML }}" />
1885 <span class="description" id="video-details-track-desc-{{ index }}"> 1886 The srclang, label, and kind values can be edited to set the video track language and kind. </span> 1887 <button type="button" class="button-link remove-setting remove-track">Remove video track</button><br /> 1888 <# } ); #> 1889 <# } else { #> 1890 <span class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</span><br /> 1891 <em>There are no associated subtitles.</em> 1892 <# } #> 1893 <textarea class="hidden content-setting">{{ content }}</textarea> 1894 </span> 1895 </div> 1896 </div> 1897 </script>
1897 1898 1899
1899<script type="text/html" id="tmpl-editor-gallery"> 1900 <# if ( data.attachments.length ) { #> 1901 <div class="gallery gallery-columns-{{ data.columns }}"> 1902 <# _.each( data.attachments, function( attachment, index ) { #> 1903 <dl class="gallery-item"> 1904 <dt class="gallery-icon"> 1905 <# if ( attachment.thumbnail ) { #> 1906 <img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="{{ attachment.alt }}" /> 1907 <# } else { #> 1908 <img src="{{ attachment.url }}" alt="{{ attachment.alt }}" /> 1909 <# } #> 1910 </dt> 1911 <# if ( attachment.caption ) { #> 1912 <dd class="wp-caption-text gallery-caption"> 1913 {{{ data.verifyHTML( attachment.caption ) }}} 1914 </dd> 1915 <# } #> 1916 </dl> 1917 <# if ( index % data.columns === data.columns - 1 ) { #> 1918 <br style="clear: both;" /> 1919 <# } #> 1920 <# } ); #> 1921 </div> 1922 <# } else { #> 1923 <div class="wpview-error"> 1924 <div class="dashicons dashicons-format-gallery"></div><p>No items found.</p> 1925 </div> 1926 <# } #> 1927 </script>
1927 1928 1929
1929<script type="text/html" id="tmpl-crop-content"> 1930 <img class="crop-image" src="{{ data.url }}" alt="Image crop area preview. Requires mouse interaction." /> 1931 <div class="upload-errors"></div> 1932 </script>
1932 1933 1934
1934<script type="text/html" id="tmpl-site-icon-preview-crop"> 1935 <style> 1936 :root{ 1937 --site-icon-url: url( "{{ data.url }}" ); 1938 } 1939 </style> 1940 <h2>Site Icon Preview</h2> 1941 <p>As an app icon and a browser icon.</p> 1942 <div class="site-icon-preview crop"> 1943 <div class="image-preview-wrap app-icon-preview"> 1944 <img id="preview-app-icon" src="{{ data.url }}" class="app-icon-preview" alt="Preview as an app icon" /> 1945 </div> 1946 <div class="site-icon-preview-browser"> 1947 <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="browser-buttons"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 20a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm18 0a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm24-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12Z" /></svg> 1948 <div class="site-icon-preview-tab"> 1949 <div class="image-preview-wrap browser"> 1950 <img id="preview-favicon" src="{{ data.url }}" class="browser-icon-preview" alt="Preview as a browser icon" /> 1951 </div> 1952 <div class="site-icon-preview-site-title" aria-hidden="true"><# print( 'OpenFabrics Alliance' ) #></div> 1953 <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="close-button"> 1954 <path d="M12 13.0607L15.7123 16.773L16.773 15.7123L13.0607 12L16.773 8.28772L15.7123 7.22706L12 10.9394L8.28771 7.22705L7.22705 8.28771L10.9394 12L7.22706 15.7123L8.28772 16.773L12 13.0607Z" /> 1955 </svg> 1956 </div> 1957 </div> 1958 </div> 1959 </div> 1960 </script>
1960 1961 1962
1962<script id="dlm-xhr-js-extra"> 1963var dlmXHRtranslations = {"error":"An error occurred while trying to download the file. Please try again.","not_found":"Download does not exist.","no_file_path":"No file path defined.","no_file_paths":"No file paths defined.","filetype":"Download is not allowed for this file type.","file_access_denied":"Access denied to this file.","access_denied":"Access denied. You do not have permission to download this file.","security_error":"Something is wrong with the file path.","file_not_found":"File not found."}; 1964//# sourceURL=dlm-xhr-js-extra 1965</script>
vendor: 1 bytes, line 1965
1965
1966<script id="dlm-xhr-js-before"> 1967const dlmXHR = {"xhr_links":{"class":["download-link","download-button"]},"prevent_duplicates":true,"ajaxUrl":"https:\/\/www.openfabrics.org\/wp-admin\/admin-ajax.php","countExcluded":false}; dlmXHRinstance = {}; const dlmXHRGlobalLinks = "https://www.openfabrics.org/training-content/"; const dlmNonXHRGlobalLinks = []; dlmXHRgif = "https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/images/dlm-spinner.svg"; const dlmXHRProgress = "1"; const dlmXHRInlineSpinner = true 1968//# sourceURL=dlm-xhr-js-before 1969</script>
vendor: 1 bytes, line 1969
1969
1970<script id="dlm-xhr-js" src="https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/js/dlm-xhr.min.js?ver=5.3.1"></script>
vendor: 1 bytes, line 1970
1970
1971<script id="kallyas_vendors-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/js/plugins.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1971
1971
1972<script id="scrollmagic-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/scrollmagic/scrollmagic.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1972
1972
1973<script id="zn-script-js-extra"> 1974var zn_do_login = {"ajaxurl":"/wp-admin/admin-ajax.php","add_to_cart_text":"Item Added to cart!"}; 1975var ZnThemeAjax = {"ajaxurl":"/wp-admin/admin-ajax.php","zn_back_text":"Back","zn_color_theme":"light","res_menu_trigger":"1160","top_offset_tolerance":"","logout_url":"https://www.openfabrics.org/fzpl/?action=logout&redirect_to=https%3A%2F%2Fwww.openfabrics.org&_wpnonce=061a15b1e2"}; 1976var ZnSmoothScroll = {"type":"yes","touchpadSupport":"yes"}; 1977//# sourceURL=zn-script-js-extra 1978</script>
vendor: 1 bytes, line 1978
1978
1979<script id="zn-script-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/js/znscript.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1979
1979
1980<script id="smooth_scroll-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/smooth_scroll/SmoothScroll.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1980
1980
1981<script id="zn_animated_text_typed-js" src="https://www.openfabrics.org/wp-content/plugins/animated-text-element//assets/js/typed.min.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1981
1981
1982<script id="zn_animated_text_script-js" src="https://www.openfabrics.org/wp-content/plugins/animated-text-element//assets/js/script.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1982
1982
1983<script id="slick-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/slick/slick.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1983
1983
1984<script id="zion-frontend-js-js-extra"> 1985var ZionBuilderFrontend = {"allow_video_on_mobile":""}; 1986//# sourceURL=zion-frontend-js-js-extra 1987</script>
vendor: 1 bytes, line 1987
1987
1988<script id="zion-frontend-js-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/framework/zion-builder/dist/znpb_frontend.js?ver=1.4.0"></script>
vendor: 1 bytes, line 1988
1988
1989<script id="wp-statistics-tracker-js-extra"> 1990var WP_Statistics_Tracker_Object = {"requestUrl":"https://www.openfabrics.org/wp-json/wp-statistics/v2","ajaxUrl":"https://www.openfabrics.org/wp-admin/admin-ajax.php","hitParams":{"wp_statistics_hit":1,"source_type":"page","source_id":5002,"search_query":"","signature":"d09647f1cf9f89d853190a42026bf780","endpoint":"hit"},"option":{"dntEnabled":false,"bypassAdBlockers":false,"consentIntegration":{"name":null,"status":[]},"isPreview":false,"userOnline":false,"isWpConsentApiActive":false},"isLegacyEventLoaded":"","customEventAjaxUrl":"https://www.openfabrics.org/wp-admin/admin-ajax.php?action=wp_statistics_custom_event&nonce=6750649f83","onlineParams":{"wp_statistics_hit":1,"source_type":"page","source_id":5002,"search_query":"","signature":"d09647f1cf9f89d853190a42026bf780","action":"wp_statistics_online_check"},"jsCheckTime":"60000"}; 1991//# sourceURL=wp-statistics-tracker-js-extra 1992</script>
vendor: 1 bytes, line 1992
1992
1993<script id="wp-statistics-tracker-js" src="https://www.openfabrics.org/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.16.14"></script>
vendor: 1 bytes, line 1993
1993
1994<script id="underscore-js" src="https://www.openfabrics.org/wp-includes/js/underscore.min.js?ver=1.13.8"></script>
vendor: 1 bytes, line 1994
1994
1995<script id="shortcode-js" src="https://www.openfabrics.org/wp-includes/js/shortcode.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 1995
1995
1996<script id="backbone-js" src="https://www.openfabrics.org/wp-includes/js/backbone.min.js?ver=1.6.1"></script>
vendor: 1 bytes, line 1996
1996
1997<script id="wp-util-js-extra"> 1998var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}}; 1999//# sourceURL=wp-util-js-extra 2000</script>
vendor: 1 bytes, line 2000
2000
2001<script id="wp-util-js" src="https://www.openfabrics.org/wp-includes/js/wp-util.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2001
2001
2002<script id="wp-backbone-js" src="https://www.openfabrics.org/wp-includes/js/wp-backbone.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2002
2002
2003<script id="media-models-js-extra"> 2004var _wpMediaModelsL10n = {"settings":{"ajaxurl":"/wp-admin/admin-ajax.php","post":{"id":0}}}; 2005//# sourceURL=media-models-js-extra 2006</script>
vendor: 1 bytes, line 2006
2006
2007<script id="media-models-js" src="https://www.openfabrics.org/wp-includes/js/media-models.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2007
2007
2008<script id="wp-plupload-js-extra"> 2009var pluploadL10n = {"queue_limit_exceeded":"You have attempted to queue too many files.","file_exceeds_size_limit":"%s exceeds the maximum upload size for this site.","zero_byte_file":"This file is empty. Please try another.","invalid_filetype":"This file cannot be processed by the web server.","not_an_image":"This file is not an image. Please try another.","image_memory_exceeded":"Memory exceeded. Please try another smaller file.","image_dimensions_exceeded":"This is larger than the maximum size. Please try another.","default_error":"An error occurred in the upload. Please try again later.","missing_upload_url":"There was a configuration error. Please contact the server administrator.","upload_limit_exceeded":"You may only upload 1 file.","http_error":"Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.","http_error_image":"The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.","upload_failed":"Upload failed.","big_upload_failed":"Please try uploading this file with the %1$sbrowser uploader%2$s.","big_upload_queued":"%s exceeds the maximum upload size for the multi-file uploader when used in your browser.","io_error":"IO error.","security_error":"Security error.","file_cancelled":"File canceled.","upload_stopped":"Upload stopped.","dismiss":"Dismiss","crunching":"Crunching\u2026","deleted":"moved to the Trash.","error_uploading":"\u201c%s\u201d has failed to upload.","unsupported_image":"The server cannot process HEIC images. Convert it to JPEG before uploading.","noneditable_image":"The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.","file_url_copied":"The file URL has been copied to your clipboard"}; 2010var _wpPluploadSettings = {"defaults":{"file_data_name":"async-upload","url":"/wp-admin/async-upload.php","filters":{"max_file_size":"8388608b","mime_types":[{"extensions":"jpg,jpeg,jpe,gif,png,bmp,tiff,tif,webp,avif,ico,heic,heif,heics,heifs,asf,asx,wmv,wmx,wm,avi,divx,flv,mov,qt,mpeg,mpg,mpe,mp4,m4v,ogv,webm,mkv,3gp,3gpp,3g2,3gp2,txt,asc,c,cc,h,srt,csv,tsv,ics,rtx,css,vtt,dfxp,mp3,m4a,m4b,aac,ra,ram,wav,x-wav,ogg,oga,flac,mid,midi,wma,wax,mka,rtf,pdf,class,tar,zip,gz,gzip,rar,7z,psd,xcf,doc,pot,pps,ppt,wri,xla,xls,xlt,xlw,mdb,mpp,docx,docm,dotx,dotm,xlsx,xlsm,xlsb,xltx,xltm,xlam,pptx,pptm,ppsx,ppsm,potx,potm,ppam,sldx,sldm,onetoc,onetoc2,onetmp,onepkg,oxps,xps,odt,odp,ods,odg,odc,odb,odf,wp,wpd,key,numbers,pages,svg,ttf,woff,eot,woff2"}]},"avif_upload_error":true,"heic_upload_error":true,"multipart_params":{"action":"upload-attachment","_wpnonce":"39304ab441"}},"browser":{"mobile":false,"supported":true},"limitExceeded":false}; 2011//# sourceURL=wp-plupload-js-extra 2012</script>
vendor: 1 bytes, line 2012
2012
2013<script id="wp-plupload-js" src="https://www.openfabrics.org/wp-includes/js/plupload/wp-plupload.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2013
2013
2014<script id="jquery-ui-core-js-before"> 2015jQuery.uiBackCompat = true; 2016//# sourceURL=jquery-ui-core-js-before 2017</script>
vendor: 1 bytes, line 2017
2017
2018<script id="jquery-ui-core-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2018
2018
2019<script id="jquery-ui-mouse-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/mouse.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2019
2019
2020<script id="jquery-ui-sortable-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/sortable.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2020
2020
2021<script id="mediaelement-core-js-before"> 2022var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}}; 2023//# sourceURL=mediaelement-core-js-before 2024</script>
vendor: 1 bytes, line 2024
2024
2025<script id="mediaelement-core-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17"></script>
vendor: 1 bytes, line 2025
2025
2026<script id="mediaelement-migrate-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2026
2026
2027<script id="mediaelement-js-extra"> 2028var _wpmejsSettings = {"pluginPath":"/wp-includes/js/mediaelement/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"}; 2029//# sourceURL=mediaelement-js-extra 2030</script>
vendor: 1 bytes, line 2030
2030
2031<script id="wp-mediaelement-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2031
2031
2032<script id="wp-api-request-js-extra"> 2033var wpApiSettings = {"root":"https://www.openfabrics.org/wp-json/","nonce":"4cbfc7c609","versionString":"wp/v2/"}; 2034//# sourceURL=wp-api-request-js-extra 2035</script>
vendor: 1 bytes, line 2035
2035
2036<script id="wp-api-request-js" src="https://www.openfabrics.org/wp-includes/js/api-request.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2036
2036
2037<script id="wp-dom-ready-js" src="https://www.openfabrics.org/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 2037
2037
2038<script id="wp-hooks-js" src="https://www.openfabrics.org/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 2038
2038
2039<script id="wp-i18n-js" src="https://www.openfabrics.org/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 2039
2039
2040<script id="wp-i18n-js-after"> 2041wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 2042//# sourceURL=wp-i18n-js-after 2043</script>
vendor: 1 bytes, line 2043
2043
2044<script id="wp-a11y-js" src="https://www.openfabrics.org/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 2044
2044
2045<script id="clipboard-js" src="https://www.openfabrics.org/wp-includes/js/clipboard.min.js?ver=2.0.11"></script>
vendor: 1 bytes, line 2045
2045
2046<script id="media-views-js-extra"> 2047var _wpMediaViewsL10n = {"mediaFrameDefaultTitle":"Media","url":"URL","addMedia":"Add media","search":"Search","select":"Select","cancel":"Cancel","update":"Update","replace":"Replace","remove":"Remove","back":"Back","selected":"%d selected","dragInfo":"Drag and drop to reorder media files.","uploadFilesTitle":"Upload files","uploadImagesTitle":"Upload images","mediaLibraryTitle":"Media Library","insertMediaTitle":"Add media","createNewGallery":"Create a new gallery","createNewPlaylist":"Create a new playlist","createNewVideoPlaylist":"Create a new video playlist","returnToLibrary":"\u2190 Go to library","allMediaItems":"All media items","allDates":"All dates","noItemsFound":"No items found.","insertIntoPost":"Insert into post","unattached":"Unattached","mine":"Mine","trash":"Trash","uploadedToThisPost":"Uploaded to this post","warnDelete":"You are about to permanently delete this item from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkDelete":"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkTrash":"You are about to trash these items.\n 'Cancel' to stop, 'OK' to delete.","bulkSelect":"Bulk select","trashSelected":"Move to Trash","restoreSelected":"Restore from Trash","deletePermanently":"Delete permanently","errorDeleting":"Error in deleting the attachment.","apply":"Apply","filterByDate":"Filter by date","filterByType":"Filter by type","searchLabel":"Search media","searchMediaLabel":"Search media","searchMediaPlaceholder":"Search media items...","mediaFound":"Number of media items found: %d","noMedia":"No media items found.","noMediaTryNewSearch":"No media items found. Try a different search.","mediaItemViewed":"Viewing media item: %s","attachmentDetails":"Attachment details","insertFromUrlTitle":"Insert from URL","setFeaturedImageTitle":"Featured image","setFeaturedImage":"Set featured image","createGalleryTitle":"Create gallery","editGalleryTitle":"Edit gallery","cancelGalleryTitle":"\u2190 Cancel gallery","insertGallery":"Insert gallery","updateGallery":"Update gallery","addToGallery":"Add to gallery","addToGalleryTitle":"Add to gallery","reverseOrder":"Reverse order","imageDetailsTitle":"Image details","imageReplaceTitle":"Replace image","imageDetailsCancel":"Cancel edit","editImage":"Edit image","chooseImage":"Choose image","selectAndCrop":"Select and crop","skipCropping":"Skip cropping","cropImage":"Crop image","cropYourImage":"Crop your image","cropping":"Cropping\u2026","suggestedDimensions":"Suggested image dimensions: %1$s by %2$s pixels.","cropError":"There has been an error cropping your image.","audioDetailsTitle":"Audio details","audioReplaceTitle":"Replace audio","audioAddSourceTitle":"Add audio source","audioDetailsCancel":"Cancel edit","videoDetailsTitle":"Video details","videoReplaceTitle":"Replace video","videoAddSourceTitle":"Add video source","videoDetailsCancel":"Cancel edit","videoSelectPosterImageTitle":"Select poster image","videoAddTrackTitle":"Add subtitles","playlistDragInfo":"Drag and drop to reorder tracks.","createPlaylistTitle":"Create audio playlist","editPlaylistTitle":"Edit audio playlist","cancelPlaylistTitle":"\u2190 Cancel audio playlist","insertPlaylist":"Insert audio playlist","updatePlaylist":"Update audio playlist","addToPlaylist":"Add to audio playlist","addToPlaylistTitle":"Add to Audio Playlist","videoPlaylistDragInfo":"Drag and drop to reorder videos.","createVideoPlaylistTitle":"Create video playlist","editVideoPlaylistTitle":"Edit video playlist","cancelVideoPlaylistTitle":"\u2190 Cancel video playlist","insertVideoPlaylist":"Insert video playlist","updateVideoPlaylist":"Update video playlist","addToVideoPlaylist":"Add to video playlist","addToVideoPlaylistTitle":"Add to video Playlist","filterAttachments":"Filter media","attachmentsList":"Media list","settings":{"tabs":[],"tabUrl":"https://www.openfabrics.org/wp-admin/media-upload.php?chromeless=1","mimeTypes":{"image":"Images","audio":"Audio","video":"Video","application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,application/vnd.ms-word.template.macroEnabled.12,application/vnd.oasis.opendocument.text,application/vnd.apple.pages,application/pdf,application/vnd.ms-xpsdocument,application/oxps,application/rtf,application/wordperfect,application/octet-stream":"Documents","application/vnd.apple.numbers,application/vnd.oasis.opendocument.spreadsheet,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/vnd.ms-excel.sheet.binary.macroEnabled.12":"Spreadsheets","application/x-gzip,application/rar,a
2047pplication/x-tar,application/zip,application/x-7z-compressed":"Archives"},"captions":true,"nonce":{"sendToEditor":"c4d20bd21d","setAttachmentThumbnail":"a098482017"},"post":{"id":0},"defaultProps":{"link":"","align":"","size":""},"attachmentCounts":{"audio":1,"video":1},"oEmbedProxyUrl":"https://www.openfabrics.org/wp-json/oembed/1.0/proxy","embedExts":["mp3","ogg","flac","m4a","wav","mp4","m4v","webm","ogv","flv"],"embedMimes":{"mp3":"audio/mpeg","ogg":"audio/ogg","flac":"audio/flac","m4a":"audio/mpeg","wav":"audio/wav","mp4":"video/mp4","m4v":"video/mp4","webm":"video/webm","ogv":"video/ogg","flv":"video/x-flv"},"contentWidth":"1170","months":[{"year":"2026","month":"8","text":"August 2026"},{"year":"2026","month":"4","text":"April 2026"},{"year":"2026","month":"2","text":"February 2026"},{"year":"2025","month":"11","text":"November 2025"},{"year":"2025","month":"10","text":"October 2025"},{"year":"2025","month":"8","text":"August 2025"},{"year":"2025","month":"7","text":"July 2025"},{"year":"2025","month":"5","text":"May 2025"},{"year":"2025","month":"3","text":"March 2025"},{"year":"2024","month":"4","text":"April 2024"},{"year":"2023","month":"9","text":"September 2023"},{"year":"2023","month":"8","text":"August 2023"},{"year":"2023","month":"4","text":"April 2023"},{"year":"2023","month":"3","text":"March 2023"},{"year":"2023","month":"1","text":"January 2023"},{"year":"2022","month":"12","text":"December 2022"},{"year":"2022","month":"11","text":"November 2022"},{"year":"2022","month":"6","text":"June 2022"},{"year":"2022","month":"4","text":"April 2022"},{"year":"2022","month":"3","text":"March 2022"},{"year":"2022","month":"2","text":"February 2022"},{"year":"2022","month":"1","text":"January 2022"},{"year":"2021","month":"11","text":"November 2021"},{"year":"2021","month":"10","text":"October 2021"},{"year":"2021","month":"8","text":"August 2021"},{"year":"2021","month":"7","text":"July 2021"},{"year":"2021","month":"4","text":"April 2021"},{"year":"2021","month":"3","text":"March 2021"},{"year":"2021","month":"2","text":"February 2021"},{"year":"2021","month":"1","text":"January 2021"},{"year":"2020","month":"12","text":"December 2020"},{"year":"2020","month":"11","text":"November 2020"},{"year":"2020","month":"10","text":"October 2020"},{"year":"2020","month":"8","text":"August 2020"},{"year":"2020","month":"7","text":"July 2020"},{"year":"2020","month":"6","text":"June 2020"},{"year":"2020","month":"5","text":"May 2020"},{"year":"2020","month":"4","text":"April 2020"},{"year":"2020","month":"2","text":"February 2020"},{"year":"2020","month":"1","text":"January 2020"},{"year":"2019","month":"11","text":"November 2019"},{"year":"2019","month":"9","text":"September 2019"},{"year":"2019","month":"6","text":"June 2019"},{"year":"2019","month":"4","text":"April 2019"},{"year":"2019","month":"3","text":"March 2019"},{"year":"2019","month":"2","text":"February 2019"},{"year":"2019","month":"1","text":"January 2019"},{"year":"2018","month":"12","text":"December 2018"},{"year":"2018","month":"11","text":"November 2018"},{"year":"2018","month":"9","text":"September 2018"},{"year":"2018","month":"8","text":"August 2018"},{"year":"2018","month":"7","text":"July 2018"},{"year":"2018","month":"6","text":"June 2018"}],"mediaTrash":0,"infiniteScrolling":1}}; 2048//# sourceURL=media-views-js-extra 2049</script>
vendor: 1 bytes, line 2049
2049
2050<script id="media-views-js" src="https://www.openfabrics.org/wp-includes/js/media-views.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2050
2050
2051<script id="media-editor-js" src="https://www.openfabrics.org/wp-includes/js/media-editor.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2051
2051
2052<script id="media-audiovideo-js" src="https://www.openfabrics.org/wp-includes/js/media-audiovideo.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2052
2052
2053<script id="wp-emoji-settings" type="application/json"> 2054{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.openfabrics.org/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 2055</script>
vendor: 1 bytes, line 2055
2055
2056<script type="module"> 2057/*! This file is auto-generated */ 2058var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 2059//# sourceURL=https://www.openfabrics.org/wp-includes/js/wp-emoji-loader.min.js 2060</script>
2060 2061<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 2062 <defs> 2063 2064 <symbol id="icon-znb_close-thin" viewBox="0 0 100 100"> 2065 <path d="m87.801 12.801c-1-1-2.6016-1-3.5 0l-33.801 33.699-34.699-34.801c-1-1-2.6016-1-3.5 0-1 1-1 2.6016 0 3.5l34.699 34.801-34.801 34.801c-1 1-1 2.6016 0 3.5 0.5 0.5 1.1016 0.69922 1.8008 0.69922s1.3008-0.19922 1.8008-0.69922l34.801-34.801 33.699 33.699c0.5 0.5 1.1016 0.69922 1.8008 0.69922 0.69922 0 1.3008-0.19922 1.8008-0.69922 1-1 1-2.6016 0-3.5l-33.801-33.699 33.699-33.699c0.89844-1 0.89844-2.6016 0-3.5z"/> 2066 </symbol> 2067 2068 2069 <symbol id="icon-znb_play" viewBox="0 0 22 28"> 2070 <path d="M21.625 14.484l-20.75 11.531c-0.484 0.266-0.875 0.031-0.875-0.516v-23c0-0.547 0.391-0.781 0.875-0.516l20.75 11.531c0.484 0.266 0.484 0.703 0 0.969z"></path> 2071 </symbol> 2072 2073 </defs> 2074</svg> 2075</body> 2076</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.