CINXE.COM
About Us | Code.org
<!DOCTYPE html> <html dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script charset="UTF-8" src="https://cdn.cookielaw.org/consent/27cca70a-7db3-4852-9ef0-a6660fd0977d/OtAutoBlock.js" type="text/javascript"></script> <script charset="UTF-8" data-domain-script="27cca70a-7db3-4852-9ef0-a6660fd0977d" src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript"></script> <script> function OptanonWrapper() { } </script> <meta content="EWBLxcxuqqtcdWikkxAOnMoaawa6XDoEPlvwO6wOg-A" name="google-site-verification"> <meta content="Code.org" property="og:site_name"> <meta content="About Us" property="og:title"> <meta content="500177453358606" property="fb:app_id"> <meta content="article" property="og:type"> <meta content="https://www.facebook.com/Code.org" property="article:publisher"> <meta content="https://code.org/about" property="og:url"> <meta content="https://code.org/images/default-og-image.png" property="og:image"> <meta content="1220" property="og:image:width"> <meta content="640" property="og:image:height"> <meta content="https://code.org/images/default-og-image.png" property="twitter:image:src"> <title>About Us | Code.org</title> <link href="/images/favicon.ico" rel="shortcut icon"> <link href="/images/apple-touch-icon-precomposed.png" rel="apple-touch-icon"> <script src="https://www.googleoptimize.com/optimize.js?id=OPT-KBX3C3L"></script> <script data-statsig-api-client-key="client-vmRbxXpfzwSHFlsYHgqFMfMqa6zFnr7PHfZYnhNtItg"></script> <script data-managed-test-server="false"></script> <script data-ge-region=""></script> <link href="/css/generated/fonts.css" rel="stylesheet" type="text/css"> <style> /*! * Bootstrap v3.3.2 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}footer{display:block}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}h1{margin:0.67em 0;font-size:2em}small{font-size:80%}img{border:0}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button,input,select{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button{-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"]{box-sizing:border-box;padding:0px}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000 !important;text-shadow:none !important;background:0 0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100% !important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.label{border:1px solid #000}}@font-face{font-family:'Glyphicons Halflings';src:url(/fonts/glyphicons-halflings-regular.eot);src:url(/fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(/fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(/fonts/glyphicons-halflings-regular.woff) format("woff"),url(/fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}p{margin:0 0 10px}.small,small{font-size:85%}ol,ul{margin-top:0;margin-bottom:10px}ol ul,ul ul{margin-bottom:0}.row{margin-right:-15px;margin-left:-15px}table{background-color:transparent}th{text-align:left}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active{background-image:none}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.dropdown{position:relative}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}@media (min-width: 992px){.modal-lg{width:900px}}.carousel{position:relative}.modal-footer:after,.modal-footer:before,.row:after,.row:before{display:table;content:" "}.modal-footer:after,.row:after{clear:both}@-ms-viewport{width:device-width}:root{--brand_primary_light: #abdfe5;--brand_primary_medium: #7bc6cf;--brand_primary_default: #0093a4;--brand_primary_dark: #008291;--brand_secondary_light: #e0d1ec;--brand_secondary_default: #8c52ba;--brand_secondary_dark: #6f488e;--brand_accent_default: #ed6060;--light_gray200: #d1d4d8;--neutral_white: #ffffff;--neutral_light: #f7f8fa;--neutral_dark10: #eaebeb;--neutral_dark20: #d4d5d7;--neutral_dark30: #bfc1c3;--neutral_dark40: #a9acaf;--neutral_dark50: #94979b;--neutral_dark60: #7f8286;--neutral_dark70: #6a6e73;--neutral_dark80: #54595e;--neutral_dark90: #3f444b;--neutral_dark: #292f36;--orange: #ffa400;--barlowSemiCondensed-semibold: "Barlow Semi Condensed Semibold", sans-serif;--barlowSemiCondensed-medium: "Barlow Semi Condensed Medium", sans-serif;--main-font: "Metropolis", "Noto Sans", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;--thin-font-weight: 100;--extra-light-font-weight: 200;--light-font-weight: 300;--regular-font-weight: 400;--medium-font-weight: 500;--semi-bold-font-weight: 600;--bold-font-weight: 700;--extra-bold-font-weight: 800;--black-font-weight: 900;--swiper-pagination-color: var(--brand_primary_default);--swiper-pagination-bullet-size: 1rem;--swiper-pagination-bullet-inactive-color: var(--brand_primary_light);--swiper-pagination-bullet-inactive-opacity: 1;--swiper-pagination-bullet-horizontal-gap: 0.5rem}html{height:100%;font-size:100%;scroll-behavior:smooth}body{background-color:var(--neutral_white);height:100%;font-family:var(--main-font);font-weight:var(--regular-font-weight);font-style:normal;font-size:14px;color:var(--neutral_dark);margin:0}h1,.heading-xxl{font-family:var(--barlowSemiCondensed-semibold);font-size:3rem;line-height:1.16;margin:1em 0 0.5em 0}h2,.heading-xl{font-family:var(--barlowSemiCondensed-semibold);font-size:2.125rem;line-height:1.24;margin:1em 0 0.5em 0}h3,.heading-lg{font-family:var(--barlowSemiCondensed-semibold);font-size:1.75rem;line-height:1.28;margin-bottom:0.5em}h4,.heading-md{font-family:var(--barlowSemiCondensed-medium);font-size:1.5rem;line-height:1.32;margin-bottom:0.5em}h5,.heading-sm{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);font-size:1.25rem;line-height:1.4;margin-bottom:0.5em}h6,.heading-xs{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);font-size:1rem;line-height:1.48;margin-bottom:0.5em}h1,h2,h3,h4,h5,h6{text-wrap:balance}h1.white,h2.white,h3.white,h4.white,h5.white,h6.white,p.white,figcaption.white,span.white,a:not(.link-button).white{color:var(--neutral_white) !important}p{line-height:1.48;margin-bottom:1em}.body-one{font-size:1.25rem;line-height:1.4;margin-bottom:1em}.body-two{font-size:1rem;line-height:1.48;margin-bottom:1em}.body-three{font-size:0.875rem;line-height:1.54;margin-bottom:1em}.body-four{font-size:0.75rem;line-height:1.64;margin-bottom:1em}figcaption,.video_caption_link{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);font-size:0.875rem;margin:0.5em 0 1em;line-height:1.4}.overline-one{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);text-transform:uppercase;letter-spacing:0.04rem;font-size:0.875rem;line-height:1.6;color:var(--brand_primary_default)}.overline-two{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);text-transform:uppercase;letter-spacing:0.04rem;font-size:0.75rem;line-height:1.64;color:var(--brand_primary_default)}.overline-three{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);text-transform:uppercase;letter-spacing:0.04rem;font-size:0.625rem;line-height:1.76;color:var(--brand_primary_default)}strong{font-family:var(--main-font);font-weight:var(--bold-font-weight)}em{font-family:var(--main-font);font-style:italic}a:any-link{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);color:var(--brand_secondary_default);text-decoration:underline;transition:color ease-in-out 0.2s}a:is(:hover, :active){color:var(--brand_secondary_dark)}a:link:has(*){text-decoration:none}a.link-button,button,.btn,input[type="submit"]{display:inline-block;color:var(--neutral_white);background:var(--brand_secondary_default);border:2px solid var(--brand_secondary_default);border-radius:4px;padding:0.75rem 1rem;margin:0.5rem 0;font-size:1rem;font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);line-height:1;text-decoration:none;text-align:center;transition:all ease-in-out 0.2s}a.link-button:hover,button:hover,.btn:hover,input[type="submit"]:hover{background:var(--brand_secondary_dark);border-color:var(--brand_secondary_dark);color:var(--neutral_white);text-decoration:none;cursor:pointer}a.link-button:focus,button:focus,.btn:focus,input[type="submit"]:focus{outline:var(--brand_primary_default) solid 2px;outline-offset:2px}a.link-button:focus:not(:focus-visible),button:focus:not(:focus-visible),.btn:focus:not(:focus-visible),input[type="submit"]:focus:not(:focus-visible){outline:none}a.link-button.secondary,button.secondary,.btn.secondary,input[type="submit"].secondary{background:none;border-color:var(--neutral_dark);color:var(--neutral_dark)}a.link-button.secondary:hover,button.secondary:hover,.btn.secondary:hover,input[type="submit"].secondary:hover{background:var(--neutral_dark10)}a.link-button.secondary.white,button.secondary.white,.btn.secondary.white,input[type="submit"].secondary.white{background:none;border-color:var(--neutral_white);color:var(--neutral_white)}a.link-button.secondary.white:hover,button.secondary.white:hover,.btn.secondary.white:hover,input[type="submit"].secondary.white:hover{background:var(--neutral_dark90)}a.link-button.white,button.white,.btn.white,input[type="submit"].white{background:var(--neutral_white);border-color:var(--neutral_white);color:var(--neutral_dark)}a.link-button.white:hover,button.white:hover,.btn.white:hover,input[type="submit"].white:hover{background:var(--neutral_dark10);border-color:var(--neutral_dark10)}a.link-button.black,button.black,.btn.black,input[type="submit"].black{background:var(--neutral_dark);border-color:var(--neutral_dark);color:var(--neutral_white)}a.link-button.black:hover,button.black:hover,.btn.black:hover,input[type="submit"].black:hover{background:black;border-color:black}a.link-button.has-icon .flex-wrapper,button.has-icon .flex-wrapper,.btn.has-icon .flex-wrapper,input[type="submit"].has-icon .flex-wrapper{display:flex;align-items:center;gap:0.5rem}a.link-button.has-icon.has-external-link,button.has-icon.has-external-link,.btn.has-icon.has-external-link,input[type="submit"].has-icon.has-external-link{display:inline-flex;gap:0.25rem}a.link-button.has-icon.has-external-link::after,button.has-icon.has-external-link::after,.btn.has-icon.has-external-link::after,input[type="submit"].has-icon.has-external-link::after{margin-top:2px}a.link-button:disabled,a.link-button.disabled,button:disabled,button.disabled,.btn:disabled,.btn.disabled,input[type="submit"]:disabled,input[type="submit"].disabled{cursor:default;background:var(--neutral_dark20);border:2px solid var(--neutral_dark20);color:var(--neutral_dark70)}a.link-button.big,button.big,.btn.big,input[type="submit"].big{font-size:1.25rem;padding-inline:1.25rem}a.link-button.small,button.small,.btn.small,input[type="submit"].small{font-size:0.875rem;padding:0.5rem 0.75rem}@media (max-width: 640px){a.link-button,button,.btn,input[type="submit"]{line-height:1.2}}.modal-header button.close{min-width:unset;margin-top:2px}.modal-header button.close:hover{background:none;border:none}.has-external-link a::after,a.has-external-link::after{display:inline-block;font:var(--fa-font-solid);content:"\f08e";font-size:0.875em;margin-inline:4px 2px}.has-external-link a.link-button::after,a.link-button.has-external-link::after{margin-inline:4px 0}html[dir="rtl"] .has-external-link a::after,html[dir="rtl"] a.has-external-link::after{transform:scaleX(-1)}li>ul{margin-top:10px;margin-bottom:10px}ul{list-style:none;padding:0;margin:20px}ul li{padding-left:1em;text-indent:-0.7em}ul li:before{content:"• ";color:var(--neutral_dark)}.invisiblelist li:before{content:""}img{border:none}th{background-color:var(--brand_primary_default);color:var(--neutral_white);padding:15px;border-color:var(--neutral_white);border-width:1px;border-style:solid;border-top-color:var(--brand_primary_default);border-left-color:var(--brand_primary_default);border-right-color:var(--brand_primary_default)}td{border-width:1px;border-color:#8d8a8a;border-style:solid;padding:15px}.centered{text-align:center !important}.wrap-balance{text-wrap:balance}.wrap-pretty{text-wrap:pretty}.no-border{border:none !important}.or-divider-line{position:relative;text-align:center;margin:0.75rem 0}.or-divider-line::after{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--neutral_dark20);z-index:0}.or-divider-line>p{position:relative;display:inline-block;font-weight:500;font-size:0.625rem;text-transform:uppercase;margin:0 4px 0;padding:5px 5px 4px;background:var(--neutral_white);border:1px solid var(--neutral_dark20);border-radius:50%;outline:4px solid var(--neutral_white);z-index:1}nav.main{background-color:var(--brand_primary_default);margin:0;padding:0.25rem 1rem;position:relative;display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:3rem}nav .left,nav .right{display:flex;flex-direction:row;align-items:center}nav .left{gap:2rem}nav .right{gap:0.5rem;justify-content:end}nav.main ul{margin:0;padding:0;display:flex;justify-content:start;gap:2rem}nav.main ul li{padding:0;text-indent:0;list-style:none;color:var(--neutral_white)}nav.main ul li::before{content:""}nav.main ul li a{color:var(--neutral_white);text-decoration:none;font-weight:var(--regular-font-weight);cursor:pointer}nav.main ul li a:hover{padding-bottom:2px;border-bottom:2px solid var(--orange)}nav.main img.logo{width:42px}nav.main i.fa-fw{line-height:1}nav.main .create_menu,nav.main .user_menu,nav.main .button-signin,nav.main .button-create-account{border:2px solid var(--neutral_white);border-radius:4px;color:var(--neutral_white);font-size:0.875rem;font-weight:var(--regular-font-weight);text-decoration:none;padding:7px 12px;margin:0}nav.main .button-create-account{background-color:var(--neutral_white);color:var(--brand_primary_default);font-weight:var(--semi-bold-font-weight)}nav.main .create_menu,nav.main .user_menu{border:2px solid;margin:0;display:flex;gap:2px;cursor:pointer}nav.main .create_menu i,nav.main .user_menu i{font-size:1.5rem;width:auto}nav.main .create_menu i.create_menu_arrow_down,nav.main .user_menu i.user_menu_arrow_down{margin-top:-4px}nav.main .create_menu i.create_menu_arrow_up,nav.main .user_menu i.user_menu_arrow_up{margin-top:-1px}nav.main .help_button{padding:0;height:unset;margin-inline-end:-6px}nav.main .help_button .help_icon{padding:0;height:unset}nav.main .help_button .help_contents{top:44px}nav.main #hamburger #hamburger-icon{margin-top:-2px;margin-inline-start:6px}nav.main #hamburger #hamburger-contents{top:51px;right:-3px}@media (min-width: 1268px){nav.main #hamburger-contents>div.show-small-desktop,nav.main #hamburger-contents>div.show-mobile{display:none !important}}@media (min-width: 1024px) and (max-width: 1268px){nav.main .left ul li.hide-small-desktop{display:none !important}nav.main #hamburger-contents>div.show-small-desktop{display:block !important}nav.main #hamburger-contents>div.show-mobile{display:none !important}}@media (max-width: 1023px){nav.main .left ul{display:none}nav.main #hamburger-contents>div.show-mobile{display:block !important}}@media (max-width: 425px){nav.main .button-signin.desktop,nav.main .button-create-account.desktop{display:none}}aside.top-skinny-banner{background:var(--neutral_dark);display:flex}aside.top-skinny-banner.light-theme{background:var(--neutral_dark10)}aside.top-skinny-banner.light-theme *{color:var(--neutral_dark) !important}aside.top-skinny-banner *{color:var(--neutral_white)}aside.top-skinny-banner .content-wrapper{width:100%;padding:1rem;display:flex;justify-content:center;gap:0.5rem}aside.top-skinny-banner .content-wrapper>i{margin-top:2px}aside.top-skinny-banner .content-wrapper>a{text-decoration:none;font-weight:var(--normal-font-weight)}aside.top-skinny-banner .content-wrapper>a:hover{text-decoration:underline}aside.top-skinny-banner>button{all:unset;padding:1rem 1.1rem;margin-top:2px;cursor:pointer;text-align:center;align-self:start;opacity:0.7;transition:opacity 0.2s ease-in-out}aside.top-skinny-banner>button:hover{opacity:1}aside.top-skinny-banner>button:focus{outline:5px auto -webkit-focus-ring-color}aside.top-skinny-banner>button:focus:not(:focus-visible){outline:none}.carousel-wrapper{position:relative;margin:2rem 0 0}.carousel-wrapper p{font-family:var(--barlowSemiCondensed-medium),sans-serif}.carousel-wrapper .action-block p{font-family:var(--main-font),sans-serif}swiper-slide{display:flex;align-items:stretch;height:auto}.carousel-wrapper .swiper-nav-prev,.carousel-wrapper .swiper-nav-next{position:absolute;top:40%;border:0;height:48px}.carousel-wrapper .swiper-nav-prev{background:url("/images/carousel/prev.svg") no-repeat;left:-4rem;border:0}html[dir="rtl"] .carousel-wrapper .swiper-nav-prev{background:url("/images/carousel/next.svg") no-repeat;left:unset;right:-4rem}.carousel-wrapper .swiper-nav-next{background:url("/images/carousel/next.svg") no-repeat;right:-4rem}html[dir="rtl"] .carousel-wrapper .swiper-nav-next{background:url("/images/carousel/prev.svg") no-repeat;right:unset;left:-4rem}.carousel-wrapper .swiper-button-disabled{opacity:0.5}@media screen and (max-width: 1024px){.carousel-wrapper .swiper-nav-prev,.carousel-wrapper .swiper-nav-next{display:none}}.carousel-wrapper.video-carousel swiper-slide{display:block;text-align:initial}.carousel-wrapper.video-carousel .swiper-nav-prev,.carousel-wrapper.video-carousel .swiper-nav-next{top:28%}.carousel-wrapper.one-col .swiper-nav-prev,.carousel-wrapper.one-col .swiper-nav-next{top:33%}#homepage .clear{clear:both}.narrow_hr{margin-top:10px;margin-bottom:10px;border:0;border-top-width:1px;border-top-style:solid;border-top-color:var(--neutral_dark20)}.grey_input{font-size:14px;height:34px;background-color:#e2e4e3;border:none;padding:5px;color:#595959;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px}#petition_form a{font-family:var(--main-font)}#petition_form a:link,#petition_form a:visited{color:#dcdcdc;text-decoration:none}#petition_form a:hover,#petition_form a:active{color:#fff;text-decoration:underline}.listed_supporter{font-family:var(--main-font);font-weight:var(--bold-font-weight);font-weight:normal}.greybox{background-color:var(--neutral_dark80);color:var(--neutral_white);padding:20px;text-align:center;overflow:hidden}#about_nav{margin:3.5rem 0 0 0}.about_list_item_selected{color:var(--brand_secondary_default);font-family:var(--main-font);font-weight:var(--bold-font-weight)}a.about_list_item{color:var(--neutral_dark60);font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);text-decoration:none}a.about_list_item:hover{color:var(--brand_secondary_default)}.dropdown{border-color:#ccc;border-radius:5px}@media screen and (max-width: 450px){#index .count h1{font-size:32px;line-height:32px}#index .count h2{font-size:40px;line-height:40px}#index .count h3{font-size:32px;line-height:48px}#index .count h4{font-size:16px;line-height:16px}}label{font-family:var(--main-font);font-weight:var(--semi-bold-font-weight);font-weight:normal}.wrapper{min-height:100%;margin-bottom:-80px}.push{height:80px}#pageheader-wrapper .headerlink:link,#pageheader-wrapper .headerlink:visited{color:var(--neutral_white);text-decoration:none}#pageheader-wrapper .headerlink:hover,#pageheader-wrapper .headerlink:active{color:var(--neutral_white);border-bottom:solid 2px #ffa400}#pageheader-wrapper .learnoption:hover{text-decoration:underline}#pagefooter{width:100%;height:170px;padding:20px;overflow:hidden;background-color:var(--neutral_dark);box-sizing:border-box}#pagefooter .content{color:var(--neutral_white);font-size:14px;font-weight:normal;width:970px;margin:0 auto}#pagefooter .dim{display:inline-block;opacity:0.8}.powered-by-aws{width:100%;margin-top:12px}.whitefooterlink:link{color:var(--neutral_white);font-size:14px;font-family:var(--main-font);font-weight:var(--regular-font-weight);text-decoration:none}.whitefooterlink:hover{color:var(--neutral_white);font-size:14px;font-family:var(--main-font);font-weight:var(--regular-font-weight);text-decoration:underline}.whitefooterlink:visited{color:var(--neutral_white);font-size:14px;font-family:var(--main-font);font-weight:var(--regular-font-weight)}#sign_in_or_user{margin:.6875em 0 0 30px}#sign_in_or_user .button-signin{text-decoration:none;-webkit-appearance:none;-webkit-user-select:none;-webkit-writing-mode:horizontal-tb;align-items:flex-start;background-color:#ffa400;border-color:#ffa400;background-image:none;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom-style:solid;border-bottom-width:1px;border-image-outset:0px;border-image-repeat:stretch;border-image-slice:100%;border-image-source:none;border-image-width:1;border-left-style:solid;border-left-width:1px;border-right-style:solid;border-right-width:1px;border-top-left-radius:4px;border-top-right-radius:4px;border-top-style:solid;border-top-width:1px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:var(--main-font);font-weight:var(--regular-font-weight);font-size:14px;height:35px;letter-spacing:normal;line-height:22px;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:-6px;padding-bottom:6px;padding-left:12px;padding-right:12px;padding-top:6px;text-align:center;text-indent:0px;text-shadow:none;text-transform:none;vertical-align:middle;white-space:nowrap;word-spacing:0px;writing-mode:lr-tb} </style> <style> .user_menu,.create_menu,.help_button{user-select:none;height:38px;position:relative}.user_menu .create_button,.user_menu .display_name,.user_menu .pairing_name,.create_menu .create_button,.create_menu .display_name,.create_menu .pairing_name,.help_button .create_button,.help_button .display_name,.help_button .pairing_name{max-width:120px;display:inline-block;float:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.rtl .user_menu .create_button,.rtl .user_menu .display_name,.rtl .user_menu .pairing_name,.rtl .create_menu .create_button,.rtl .create_menu .display_name,.rtl .create_menu .pairing_name,.rtl .help_button .create_button,.rtl .help_button .display_name,.rtl .help_button .pairing_name{float:right;padding-left:3px}.user_menu .user_menu_arrow_down,.user_menu .user_menu_arrow_up,.user_menu .create_menu_arrow_down,.user_menu .create_menu_arrow_up,.create_menu .user_menu_arrow_down,.create_menu .user_menu_arrow_up,.create_menu .create_menu_arrow_down,.create_menu .create_menu_arrow_up,.help_button .user_menu_arrow_down,.help_button .user_menu_arrow_up,.help_button .create_menu_arrow_down,.help_button .create_menu_arrow_up{font-size:1.5rem;margin-top:-4px}.rtl .user_menu .user_menu_arrow_down,.rtl .user_menu .user_menu_arrow_up,.rtl .user_menu .create_menu_arrow_down,.rtl .user_menu .create_menu_arrow_up,.rtl .create_menu .user_menu_arrow_down,.rtl .create_menu .user_menu_arrow_up,.rtl .create_menu .create_menu_arrow_down,.rtl .create_menu .create_menu_arrow_up,.rtl .help_button .user_menu_arrow_down,.rtl .help_button .user_menu_arrow_up,.rtl .help_button .create_menu_arrow_down,.rtl .help_button .create_menu_arrow_up{float:left}html[dir='rtl'] .user_menu .user_menu_arrow_down,html[dir='rtl'] .user_menu .user_menu_arrow_up,html[dir='rtl'] .user_menu .create_menu_arrow_down,html[dir='rtl'] .user_menu .create_menu_arrow_up,html[dir='rtl'] .create_menu .user_menu_arrow_down,html[dir='rtl'] .create_menu .user_menu_arrow_up,html[dir='rtl'] .create_menu .create_menu_arrow_down,html[dir='rtl'] .create_menu .create_menu_arrow_up,html[dir='rtl'] .help_button .user_menu_arrow_down,html[dir='rtl'] .help_button .user_menu_arrow_up,html[dir='rtl'] .help_button .create_menu_arrow_down,html[dir='rtl'] .help_button .create_menu_arrow_up{float:left}.user_menu .user_menu_arrow_up,.user_menu .create_menu_arrow_up,.create_menu .user_menu_arrow_up,.create_menu .create_menu_arrow_up,.help_button .user_menu_arrow_up,.help_button .create_menu_arrow_up{margin-top:-2px}.user_menu .user_options,.user_menu .create_options,.create_menu .user_options,.create_menu .create_options,.help_button .user_options,.help_button .create_options{top:50px}.user_menu .help_contents,.create_menu .help_contents,.help_button .help_contents{top:58px}.user_menu .user_options,.user_menu .create_options,.user_menu .help_contents,.create_menu .user_options,.create_menu .create_options,.create_menu .help_contents,.help_button .user_options,.help_button .create_options,.help_button .help_contents{position:absolute;right:0px;background-color:#fff;border:1px solid #5b6770}.user_menu .user_options a,.user_menu .create_options a,.user_menu .help_contents a,.create_menu .user_options a,.create_menu .create_options a,.create_menu .help_contents a,.help_button .user_options a,.help_button .create_options a,.help_button .help_contents a{color:#5b6770 !important;transition:background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;-moz-transition:background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;-webkit-transition:background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;-o-transition:background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out}.user_menu .user_options a:hover,.user_menu .create_options a:hover,.user_menu .help_contents a:hover,.create_menu .user_options a:hover,.create_menu .create_options a:hover,.create_menu .help_contents a:hover,.help_button .user_options a:hover,.help_button .create_options a:hover,.help_button .help_contents a:hover{background-color:#e7e8ea;text-decoration:none}.user_menu{padding:7px 14px}.user_menu .user_options{z-index:100001;text-align:left;white-space:nowrap;padding:0}.user_menu .user_options[dir='rtl'] a{text-align:right}.user_menu .user_options .display_name{font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:600;font-style:normal;background-color:#5b6770;color:#fff;padding:10px;text-align:center;cursor:default}.user_menu .user_options a{display:block;padding:10px;font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:600;font-style:normal}.user_menu .user_options a+a{border-top:1px solid #5b6770}.user_menu .user_options.hide-responsive-menu{display:none}.help_button{padding-left:16px;padding-top:4px;display:inline-block;float:left;z-index:99;position:relative}.help_button.hide-mobile{display:block}.help_button .hide-mobile{display:block}@media (max-width: 1268px){.help_button.show-small-desktop,.help_button .show-small-desktop{display:none}}.help_button .help_icon{padding:11px 0 16px 0;font-size:22px;color:#fff;cursor:pointer;height:20px;vertical-align:middle;text-decoration:none}.help_button .help_contents{z-index:100001;text-align:left;white-space:nowrap;padding:0;right:0px}.help_button .help_contents[dir='rtl'] a{text-align:right}.help_button .help_contents a{display:block;padding:10px;font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:600;font-style:normal}.help_button .help_contents a+a{border-top:1px solid #5b6770}@media (max-width: 1023px){.help_button.hide-mobile{display:none}.help_button .hide-mobile{display:none}}.create_menu .create_options{width:max-content;z-index:10000;border-bottom:0}.create_menu .create_options a{font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:600;font-style:normal;min-width:240px;font-size:14px;border-bottom:1px solid #5b6770;box-sizing:content-box;white-space:nowrap;cursor:pointer}.create_menu .create_options img{height:70px;width:70px}.create_menu .create_options .project_link_box{display:block}.create_menu .create_options .project_link_box .project_link{display:inline-block;padding:0 10px 0 4px;line-height:67px}.create_menu .create_options #view_all_projects{height:70px;padding-left:10px}@media screen and (max-width: 1023px){.create_menu.show-small-desktop{display:none !important}}@media screen and (max-width: 1120px){.create_menu.hide-mobile{display:none}} </style> <meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"> <link href="/css/brstrap.css" rel="stylesheet" type="text/css"> <link href="/css/common.css" rel="stylesheet" type="text/css"> <link href="/css/video-responsive.css" rel="stylesheet" type="text/css"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <script>window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"10f957f1ae","applicationID":"3346604","transactionName":"IV8LTUAOWVwER0ljWAxREUtTThpRA1oTRA==","queueTime":0,"applicationTime":469,"agent":""}</script> <script>(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["*"]},session_trace:{sampling_rate:0.0,mode:"FIXED_RATE",enabled:true,error_sampling_rate:0.0}};(window.NREUM||(NREUM={})).loader_config={xpid:"UQYGVVBQGwADUFdUBwU=",licenseKey:"10f957f1ae",applicationID:"3346604"};;/*! For license information please see nr-loader-full-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>d});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function d(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>p,xN:()=>g});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const d="[data-nr-mask]",u=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function g(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,u());const r=(0,s.nY)(e);r&&(r.init=l[e])}function p(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},d={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},u={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!u[e])throw new Error("Runtime for ".concat(e," was never set"));return u[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");u[e]={...(0,n.a)(t,d),...c},Object.hasOwnProperty.call(u[e],"harvestCount")||Object.defineProperty(u[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=u[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.274.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>d,RI:()=>i,WN:()=>f,bv:()=>o,gm:()=>a,lR:()=>l,m:()=>c,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>d});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function d(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function u(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(u(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)g(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function g(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>d});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),d=function e(t,r){var n={},s={},u={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:g,addEventListener:g,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(d.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=p(e),u=c.length,l=0;l<u;l++)c[l].apply(a,r);var g=v()[s[e]];g&&g.push([f,e,r,a]);return a},get:m,listeners:p,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function g(e,t){n[e]=p(e).concat(t)}function p(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),u=(0,n.Zm)();u.ee||(u.ee=d)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>d});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function d(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>d,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},d={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>u,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>d,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function d(e){let t=a();return t.initializedAgents?.[e]}function u(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),h(a.gm,f),h(c.prototype,f)),t.on(d+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(u+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],d=e[c];u(d)||(e[c]=r(d,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return u(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){d([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,u,l;try{a=this,o=[...arguments],u="function"==typeof n?n(o,a):n||{}}catch(t){d([t,"",[o,a,s],u],e)}i(r+"start",[o,a,s],u,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],u,c),e}finally{i(r+"end",[o,a,l],u,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){d([t,r,n,i],e)}s=a}}}function d(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function u(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,Zp:()=>i,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>u,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>d,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},d={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},u=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>d,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function d(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>d,Rz:()=>u,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,d="fn"+s,u="pushState",l=1e3},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),d=r(5289),u=r(6154),l=r(944),f=r(3969),h=r(384),g=r(6344);const p=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",g.G4.RECORD,g.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),R=r(3785),x=r(2646),w=r(3434);function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,w.YM)(i),a=new x.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function A(){const e=(0,h.pV)();p.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var S=r(9417),_=r(5603),O=r(5284);const N=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let I=!1;function P(e,t={},p,x){let{init:w,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=p;const H=(0,h.pV)();P||(w=H.init,P=H.info,j=H.loader_config),(0,S.xN)(e.agentIdentifier,w||{}),(0,_.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},u.bv&&(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const D=(0,S.D0)(e.agentIdentifier),L=[P.beacon,P.errorBeacon];I||(D.proxy.assets&&(N(D.proxy.assets),L.push(D.proxy.assets)),D.proxy.beacon&&L.push(D.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===D.soft_navigations.enabled&&D.feature_flags.includes("soft_nav")),C.denyList=[...D.ajax.deny_list||[],...D.ajax.block_internal?L:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const p={};var x=s.ee.get(e),w=x.get("tracer");E[e]=b.g.OFF,x.on(g.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var A="api-",S=A+"ixn-";function _(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(A,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}p.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,x),(0,R.R)(x,e,t,r)},p.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,x),T(x,e,t,{customAttributes:r,level:i})},m.forEach((e=>{p[e]=I(A,e,!0,"api")})),p.addPageAction=I(A,"addPageAction",!0,n.K7.genericEvents),p.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(A,"setPageViewName",!0)()},p.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return _(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},p.setUserId=function(e){if("string"==typeof e||null===e)return _("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},p.setApplicationVersion=function(e){if("string"==typeof e||null===e)return _("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},p.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,x),x.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},p[g.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(g.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},p[g.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(g.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},p.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const N=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,x),h||(0,a.p)(S+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(w.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw w.emit("fn-err",[arguments,this,t],r),t}finally{w.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,x),i&&(0,a.p)(e+t,[(0,v.t)(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(891).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),x.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{N[e]=I(S,e,void 0,h?n.K7.softNav:n.K7.spa)})),p.setCurrentRouteName=h?I(S,"routeName",void 0,n.K7.softNav):I(A,"routeName",!0,n.K7.spa),p.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,x),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},u.RI?(0,d.GG)((()=>P()),!0):P(),p}(e.agentIdentifier,x,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),I=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({95:"nr-full-compressor",222:"nr-full-recorder",891:"nr-full"}[e]+"-1.274.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var l=d[u];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={891:"sha512-Sx2xJQrHp2m/Ngn/ZcfBCUwNr2Xy/C5urYtWpfm3bWpil4spXOQGTtNwIfF5HvPGioGASn9QTyE4Z+zC7r7wcg==",222:"sha512-hMte3OWgwwYeisSiD7WCIx/6tT16zLaPjag9uF4tIZp7ybOvrJKbeyzhe4fz1tDbkdcdOMm8dvgPPLBatSAGeA==",95:"sha512-MPaT9dkHv16XzwEUVZPyqpN1do/Er1XFAZoIAPYWylmv+iGIThqN+GwQq27pUyAX7sNXVJQVZezH96p53Ks3Pg=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(g);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},g=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={959:0,85:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,d=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);d<a.length;d++)o=a[d],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function d(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var u=i(425);var l=i(1687),f=i(4234),h=i(5289),g=i(6154),p=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(891).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(891).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(891).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};g.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,p.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class R extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var x=i(384);var w=i(9908),T=i(2843),A=i(3878),E=i(782),S=i(1863);class _ extends b{static featureName=E.T;constructor(e,t=!0){super(e,E.T,t),g.RI&&((0,T.u)((()=>(0,w.p)("docHidden",[(0,S.t)()],void 0,E.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,w.p)("winPagehide",[(0,S.t)()],void 0,E.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class N extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return D(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(D(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function H(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return D(e.error)?e.error:C(e)}function D(e){return e instanceof Error&&!!e.stack}class L extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(e=>{this.abortHandler&&(0,w.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),g.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,w.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",(e=>{this.abortHandler&&(0,w.p)("err",[H(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var K=i(8990);let M=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,K.I)(e,U,(function(){return M++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,s=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=g.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(p?p.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var p=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===d||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",Q=["arrayBuffer","blob","json","text","formData"],J=g.gm.Request,ee=g.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(J&&ee&&g.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,Q.forEach((e=>{r(J[te],e,X),r(ee[te],e,X)})),r(g.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),d={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),d}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),de=["load","error","abort","timeout"],ue=de.length,le=(0,x.dV)().o.REQ,fe=(0,x.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,w.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};ge(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=x,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){T(t,e)}),(0,A.jT)(!1)),g.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},ge(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<ue;s++)r.addEventListener(de[s],this.listener,(0,A.jT)(!1))}function d(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function u(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function p(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:g.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),ge(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function R(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function x(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<ue;t++)e.removeEventListener(de[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCazptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function T(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,w.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",d),t.on("xhr-load-added",u),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",p),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",R)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function ge(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const pe={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!g.RI||pe[t.debugId]++||(pe[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:Re,d3:xe,Kp:we,TZ:Te,Lc:Ae,uP:Ee,Rz:Se}=be;class _e extends b{static featureName=Te;constructor(e,t=!0){super(e,Te,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ee,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,w.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Se+xe,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+we,(function(e){(0,w.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,w.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:Re,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class Ne extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,p.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,w.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,p.Aw)(this.agentIdentifier)}#d=!1;async#c(e){if(!this.#d){this.#d=!0;try{const{Recorder:t}=await Promise.all([i.e(891),i.e(222)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3333);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){super(e,Ie.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled];g.RI&&e.init.user_actions.enabled&&(Ie.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,w.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),Ie.qN.forEach((e=>(0,A.sp)(e,(e=>(0,w.p)("ua",[e],void 0,this.featureName,this.ee)))))),r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var je=i(993),Ce=i(3785);class ke extends b{static featureName=je.TZ;constructor(e,t=!0){super(e,je.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,Ce.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),g.gm?(this.features={},(0,x.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,u.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=d(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,x.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,_,_e,Ne,he,N,L,Pe,ke],loaderType:"pro"})})()})();</script> <script data-ot-ignore="" src="/js/jquery.min.js"></script> <!-- GA4 measurement ID for code.org --> <script> window.userAnalyticsDimensions = { 'dimension1': 'en', 'dimension4': '', }; </script> <!-- Google tag (gtag.js) --> <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-L9HT5MZ3HD"></script> <script data-googlemeasurement='{"id":"G-L9HT5MZ3HD"}' src="/assets/js/code.org/views/theme_google_analyticswp378ab7644ebc46817c7d.min.js"></script> <script data-ot-ignore="" src="/assets/js/en_us/common_localewpbd06ee05559ebc680331.js"></script> <script data-ot-ignore="" src="/assets/js/webpack-runtimewpa39b0df234fa5e9ca808.min.js"></script> <script data-ot-ignore="" src="/assets/js/vendorswp6da692c4044e8d40185c.min.js"></script> <script data-ot-ignore="" defer src="/assets/js/code.org/views/theme_common_head_afterwpe37dbb32a2eb9f423f95.min.js"></script> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript> <iframe height="0" src="https://www.googletagmanager.com/ns.html?id=GTM-TZZBRK5" style="display:none;visibility:hidden" width="0"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <style> #warning-banner{position:absolute;z-index:1000;overflow:hidden;width:100%;box-sizing:border-box;padding:1rem;background-color:#6C468A;display:flex;align-items:center;gap:0.75rem}#warning-banner #dismiss-icon{margin-left:auto}#warning-banner #warning-icon{padding-right:10px}#warning-banner a,#warning-banner a:visited{font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:700;font-style:normal;color:white;text-decoration:underline}#warning-banner a:hover{background:transparent}#warning-banner p{color:#FFFFFF;margin-bottom:0;font-size:0.875rem}#warning-banner #message{float:left;width:90%}#warning-banner #hide-warning{position:relative}#warning-banner #hide-warning .close{float:right;font-size:20px}.warning-sign{font-size:16px;color:#efcd1c} </style> <div class="wrapper"> <div id="warning-banner" style="display: none;"> <i class="fa fa-warning warning-sign"></i> <p>Your browser is not supported. Please upgrade your browser to <a href="https://support.code.org/hc/en-us/articles/202591743">one of our supported browsers</a>. You can try viewing the page, but expect functionality to be broken.</p> </div> <style> #pageheader-wrapper{z-index:99}#hamburger{display:inline-block;position:relative}#hamburger.hide-always{display:none}#hamburger.show-mobile{display:none}#hamburger.hide-mobile{display:block}#hamburger.show-always{display:block}#hamburger .hide-always{display:none}#hamburger .show-mobile{display:none !important}#hamburger .hide-mobile{display:block}#hamburger .show-always{display:block}#hamburger.show-small-desktop,#hamburger .show-small-desktop{display:none}#hamburger #hamburger-icon{cursor:pointer;height:20px;vertical-align:middle;text-decoration:none}#hamburger #hamburger-contents{font-size:1rem;list-style:none;margin:0;width:290px;position:absolute;top:64px;inset-inline-end:0;background-color:#0093A4;max-height:100vh;overflow-y:auto;border-radius:4px;box-shadow:0px 2px 6px rgba(0,0,0,0.2);z-index:1022}#hamburger #hamburger-contents .item{color:#fff;line-height:1.5;text-indent:0;list-style-type:none;margin-block:1rem;margin-inline:1rem;display:flex;justify-content:space-between;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#hamburger #hamburger-contents .item:last-of-type{border-bottom:none}#hamburger #hamburger-contents .item::before{content:none}#hamburger #hamburger-contents .item a{font-family:"Metropolis", "Noto Sans", "Noto Sans Math", "Noto Sans Arabic", "Noto Sans Armenian", "Noto Sans Bengali", "Noto Sans SC", "Noto Sans TC", "Noto Sans Devanagari", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans Kannada", "Noto Sans Khmer", "Noto Sans KR", "Noto Sans Myanmar", "Noto Sans Sinhala", "Noto Sans Tamil", "Noto Sans Telugu", "Noto Sans Thai", "Noto Sans Thaana", sans-serif;font-weight:400;font-style:normal;color:#fff;text-decoration:none}#hamburger #hamburger-contents .item a html[dir=rtl],.rtl #hamburger #hamburger-contents .item a{float:right}#hamburger #hamburger-contents.hide-responsive-menu{display:none}#hamburger #hamburger-contents .hide-about{display:none}#hamburger #hamburger-contents .hide-educate{display:none}#hamburger #hamburger-contents .hamburger-expandable-item{cursor:pointer}#hamburger #hamburger-contents .hamburger-expandable-item .text{float:left;max-width:210px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#hamburger #hamburger-contents .hamburger-expandable-item .text html[dir=rtl],.rtl #hamburger #hamburger-contents .hamburger-expandable-item .text{float:right}#hamburger #hamburger-contents .hamburger-expandable-item .arrow-down,#hamburger #hamburger-contents .hamburger-expandable-item .arrow-up{font-size:1.5rem;float:right;margin-block-start:-4px}#hamburger #hamburger-contents .hamburger-expandable-item .arrow-down html[dir=rtl],.rtl #hamburger #hamburger-contents .hamburger-expandable-item .arrow-down,#hamburger #hamburger-contents .hamburger-expandable-item .arrow-up html[dir=rtl],.rtl #hamburger #hamburger-contents .hamburger-expandable-item .arrow-up{float:left}#hamburger #hamburger-contents .hamburger-expandable-item .arrow-up{display:none}#hamburger #hamburger-contents .hamburger-expandable-item i{width:unset}#hamburger #hamburger-contents .hamburger-expandable-items{margin-left:20px;display:none}#hamburger #hamburger-contents .hamburger-expandable-items .item{max-width:220px;margin-top:0px}#hamburger #hamburger-contents .divider{height:1px;background:#007785;margin:0.75rem 0}@media (min-width: 1269px){#hamburger #hamburger-contents .divider.hide-large-desktop{display:none !important}}@media (max-width: 1268px){#hamburger.show-small-desktop,#hamburger .show-small-desktop{display:block !important}}@media (max-width: 1023px){#hamburger.show-mobile,#hamburger .show-mobile{display:block !important}#hamburger .show-mobile.item{display:flex !important}#hamburger.hide-mobile,#hamburger .hide-mobile{display:none}#hamburger #hamburger{padding-left:0}}#hamburger:not(.user-is-tabbing){outline:none}#hamburger #hamburger-icon{padding:10px 28px 16px 0;float:right;margin-top:7px;margin-inline-start:3px;display:inline-block}#hamburger #hamburger-icon span,#hamburger #hamburger-icon span::before,#hamburger #hamburger-icon span::after{cursor:pointer;height:3px;width:25px;border-radius:2px;background:#fff;position:absolute;display:block;content:'';margin-top:2px;margin-bottom:2px}#hamburger #hamburger-icon span{transition:all 500ms ease-in-out}html[dir=rtl] #hamburger #hamburger-icon span{margin-right:-25px}html[dir=rtl] #hamburger #hamburger-icon span::before{margin-right:0}html[dir=rtl] #hamburger #hamburger-icon span::after{margin-right:0}#hamburger #hamburger-icon span::before{transition:all 500ms ease-in-out;top:-10px}#hamburger #hamburger-icon span::after{transition:all 500ms ease-in-out;bottom:-10px}#hamburger #hamburger-icon.active span{background-color:transparent}#hamburger #hamburger-icon.active span::before{top:-2px;transform:rotate(45deg)}#hamburger #hamburger-icon.active span::after{top:-2px;transform:rotate(-45deg)}#hamburger-sign-up-buttons .button-wrapper{box-sizing:border-box;background-color:#0093A4;text-align:center;padding:1rem 1rem 0.5rem;display:flex;flex-direction:column;gap:0.5rem}#hamburger-sign-up-buttons .button-wrapper .header_button{margin:unset;width:100%;text-align:center}@media (min-width: 426px){#hamburger-sign-up-buttons{display:none}} </style> <nav class="main"> <div class="left"> <a href="//code.org"> <img alt="Code.org Home" class="logo" src="/images/logo.svg"> </a> <ul id="headerlinks"> <li class="hide-mobile"> <a class="headerlink" href="//code.org/students" id="header-learn">Learn</a> </li> <li class="hide-mobile"> <a class="headerlink" href="//code.org/teach" id="header-teach">Teach</a> </li> <li class="hide-mobile"> <a class="headerlink" href="//code.org/administrators" id="header-districts">Districts</a> </li> <li class="hide-small-desktop"> <a class="headerlink" href="//code.org/promote" id="header-stats">Stats</a> </li> <li class="hide-small-desktop"> <a class="headerlink" href="//code.org/help" id="header-help">Help Us</a> </li> <li class="hide-small-desktop"> <a class="headerlink" href="//studio.code.org/incubator" id="header-incubator">Incubator</a> </li> <li class="hide-small-desktop"> <a class="headerlink" href="//code.org/about" id="header-about">About</a> </li> </ul> </div> <div class="right"> <script data-amplitude-api-key="f6db63e17bf19aabe85f563a7fdab4ad"></script> <script data-statsig-api-client-key="client-vmRbxXpfzwSHFlsYHgqFMfMqa6zFnr7PHfZYnhNtItg"></script> <script data-managed-test-server="false"></script> <script data-createmenuoptions='["spritelab","artist","applab","gamelab","dance","music","view_all"]' data-issignedout="true" data-pageactionname="null" data-pagecontrollername="null" data-usertype="null" src="/assets/js/userHeaderEventLoggerwp99f123b7e42f09336968.min.js"></script> <div class="header_button create_menu show-small-desktop" id="header_create_menu" role="button" tabindex="0"> <span class="create_button"> New project </span> <i class="create_menu_arrow_down fa fa-caret-down"></i> <i class="create_menu_arrow_up fa fa-caret-up" style="display: none"></i> <div class="create_options" dir="ltr" style="display: none"> <a class="project_link_box" href="//studio.code.org/projects/spritelab/new" id="create_menu_option_spritelab"> <img src="/shared/images/fill-70x70/courses/logo_spritelab.png"> <div class="project_link" id="create_dropdown_spritelab"> <div class="text">Sprite Lab</div> </div> </a> <a class="project_link_box" href="//studio.code.org/projects/artist/new" id="create_menu_option_artist"> <img src="/shared/images/fill-70x70/courses/logo_artist.png"> <div class="project_link" id="create_dropdown_artist"> <div class="text">Artist </div> </div> </a> <a class="project_link_box" href="//studio.code.org/projects/applab/new" id="create_menu_option_applab"> <img src="/shared/images/fill-70x70/courses/logo_applab_square.png"> <div class="project_link" id="create_dropdown_applab"> <div class="text">App Lab </div> </div> </a> <a class="project_link_box" href="//studio.code.org/projects/gamelab/new" id="create_menu_option_gamelab"> <img src="/shared/images/fill-70x70/courses/logo_gamelab_square.png"> <div class="project_link" id="create_dropdown_gamelab"> <div class="text">Game Lab</div> </div> </a> <a class="project_link_box" href="//studio.code.org/projects/dance/new" id="create_menu_option_dance"> <img src="/shared/images/fill-70x70/courses/logo_dance.png"> <div class="project_link" id="create_dropdown_dance"> <div class="text">Dance Party</div> </div> </a> <a class="project_link_box" href="//code.org/music" id="create_menu_option_music"> <img src="/shared/images/fill-70x70/courses/logo_music.png"> <div class="project_link" id="create_dropdown_music"> <div class="text">Music Lab</div> </div> </a> <a class="project_link_box" href="//studio.code.org/projects" id="create_menu_option_view_all"> <div class="project_link" id="view_all_projects"> View all projects... </div> </a> </div> </div> <a class="linktag button-signin desktop" href="//studio.code.org/users/sign_in" id="signin_button"> <div class="header_button header_user" id="header_user_signin"> <span>Sign in</span> </div> </a> <a class="linktag button-create-account desktop" href="//studio.code.org/users/sign_up" id="create_account_button"> <div class="header_button header_user" id="header_user_create_account"> <span>Create account</span> <div class="signin_callout_wrapper"></div> </div> </a> <script> window.cookieEnvSuffix = ''; // Use function closure to avoid cluttering global namespace. (function() { // Ideally would use environment_specific_cookie_name, but that's not currently // available to us in pegasus var cookieKey = '_shortName' + window.cookieEnvSuffix; // Share cookie with top-level domain. var topLevelDomain = document.location.hostname.split('.').slice(-2).join('.'); // Provide current_user.short_name to cached pages via session cookie. // There is apps code that also depends on this query-selector, so if changes are made // here we should be sure to also update other locations. var displayNameSpan = document.querySelector('#header_display_name'); function retrieveUserShortName(element) { if (element) { var cookieMeta = "path=/;domain=" + topLevelDomain; var cookieMatch = document.cookie.match('(^|;) ?' + cookieKey + '=([^;]*)(;|$)'); var storedName = cookieMatch && cookieMatch[2]; var dataName = element.dataset.shortname; var id = element.dataset.id; if (storedName && !id) { // Use textContent to prevent HTML injection vulnerability element.textContent = element.textContent.replace(dataName, decodeURI(storedName)); } } } retrieveUserShortName(displayNameSpan); function hideUserOptions() { $('.user_options').slideUp(); $('.user_menu_arrow_down').show(); $('.user_menu_arrow_up').hide(); $(document).off('click', hideUserOptions); } $(document).ready(function() { $('.user_menu').on('keypress click', function (e) { if ((e.type === 'keypress' && e.which === 13) || e.type === 'click') { if ($('.user_options').is(':hidden')) { e.stopPropagation(); $('.user_options').slideDown(); $('.user_menu_arrow_down').hide(); $('.user_menu_arrow_up').show(); $(document).on('keypress click', hideUserOptions); hideCreateOptions() $("#hamburger-icon").removeClass('active'); $("#help-icon").removeClass('active'); $('#hamburger #hamburger-contents').slideUp(); $('#help-button #help-contents').slideUp(); } } }); $('.user_options').click(function (e) { e.stopPropagation(); // Clicks inside the popup shouldn't close it }); $('.user_options a:last').click(function (e) { // this partial can be on non-dashboard pages. if (typeof dashboard !== 'undefined') { dashboard.clientState.reset(); } else { // Keep in sync with clientState#reset. try { sessionStorage.clear(); } catch (e) {} } }); }); function hideCreateOptions() { $('.create_options').slideUp(); $('.create_menu_arrow_down').show(); $('.create_menu_arrow_up').hide(); $(document).off('click', hideCreateOptions); } $(document).ready(function() { $('.create_menu').on('keypress click', function (e) { if ((e.type === 'keypress' && e.which === 13) || e.type === 'click') { if ($('.create_options').is(':hidden')) { e.stopPropagation(); $('.create_options').slideDown(); $('.create_menu_arrow_down').hide(); $('.create_menu_arrow_up').show(); $(document).on('keypress click', hideCreateOptions); hideUserOptions() $("#hamburger-icon").removeClass('active'); $("#help-icon").removeClass('active'); $('#hamburger #hamburger-contents').slideUp(); $('#help-button #help-contents').slideUp(); } } }); $('.create_options').click(function (e) { e.stopPropagation(); // Clicks inside the popup shouldn't close it }); }); if (typeof dashboard !== 'undefined') { dashboard.pairing.init('//studio.code.org/pairing', hideUserOptions, false); } })(); </script> <div aria-label="Help Menu" class="help_button show-small-desktop" id="help-button" tabindex="0"> <div class="help_contents" dir="ltr" id="help-contents" style="display: none"> <a class="linktag" href="https://support.code.org" id="support" rel="noopener noreferrer nofollow" target="_blank">Help and support </a> <a class="linktag" href="https://support.code.org/hc/en-us/requests/new" id="report-bug" rel="noopener noreferrer nofollow" target="_blank">Report a problem</a> </div> <i class="help_icon clicktag fa fa-question-circle hide-mobile" id="help-icon"> <span style="pointer-events: none"></span> </i> </div> <div aria-label="Menu" class="show-small-desktop" id="hamburger" tabindex="0"> <div class="hide-responsive-menu" id="hamburger-contents"> <div id="hamburger-sign-up-buttons"> <div class="button-wrapper"> <a class="linktag button-signin" href="//studio.code.org/users/sign_in" id="signin_button"> <div class="header_button header_user" id="header_user_signin"> <span>Sign in</span> <div class="signin_callout_wrapper"></div> </div> </a> <a class="linktag button-create-account" href="//studio.code.org/users/sign_up" id="create_account_button"> <div class="header_button header_user" id="header_user_create_account"> <span>Create account</span> </div> </a> </div> <div class="divider"></div> </div> <div class="show-mobile"> <div class="item"> <a class="hamburgerlink" href="//code.org/students" id="learn" target="_self">Learn</a> </div> </div> <div class="hamburger-expandable-item item show-mobile" id="educate_entries" tabindex="0"> <div class="text">Teach</div> <i class="arrow-down fa fa-caret-down"></i> <i class="arrow-up fa fa-caret-up"></i> </div> <div class="hamburger-expandable-items" id="educate_entries-items"> <div class="item"> <a class="hamburgerlink" href="//code.org/teach" id="educate-overview">Educator Overview</a> </div> <div class="item"> <a class="hamburgerlink" href="//studio.code.org/catalog" id="educate_courses">Course Catalog</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/curriculum/elementary-school">Elementary School</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/curriculum/middle-school">Middle School</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/curriculum/high-school">High School</a> </div> <div class="item"> <a class="hamburgerlink" href="https://hourofcode.com">Hour of Code</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/curriculum/3rd-party">Beyond Code.org</a> </div> <div class="item"> <a class="hamburgerlink" href="https://forum.code.org/">Online Community</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/it">Technical Requirements</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/educate/resources/videos">Tools and Videos</a> </div> </div> <div class="show-mobile"> <div class="item"> <a class="hamburgerlink" href="//code.org/administrators" id="districts" target="_self">Districts</a> </div> </div> <div class="show-small-desktop"> <div class="item"> <a class="hamburgerlink" href="//code.org/promote" id="stats" target="_self">Stats</a> </div> </div> <div class="show-small-desktop"> <div class="item"> <a class="hamburgerlink" href="//code.org/help" id="help-us" target="_self">Help Us</a> </div> </div> <div class="show-small-desktop"> <div class="item"> <a class="hamburgerlink" href="//studio.code.org/incubator" id="incubator" target="_self">Incubator</a> </div> </div> <div class="hamburger-expandable-item item show-small-desktop" id="about_entries" tabindex="0"> <div class="text">About</div> <i class="arrow-down fa fa-caret-down"></i> <i class="arrow-up fa fa-caret-up"></i> </div> <div class="hamburger-expandable-items" id="about_entries-items"> <div class="item"> <a class="hamburgerlink" href="//code.org/about" id="about-us">About Us</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/leadership">Leadership</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/donors">Donors</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/partners">Partners</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/team">Full Team</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/news">Newsroom</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/about/jobs">Careers</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/contact">Contact Us</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/faq">FAQs</a> </div> </div> <div class="hamburger-expandable-item item" id="legal_entries" tabindex="0"> <div class="text">Privacy & Legal</div> <i class="arrow-down fa fa-caret-down"></i> <i class="arrow-up fa fa-caret-up"></i> </div> <div class="hamburger-expandable-items" id="legal_entries-items"> <div class="item"> <a class="hamburgerlink" href="//code.org/privacy">Privacy Policy</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/cookies">Cookie Notice</a> </div> <div class="item"> <a class="hamburgerlink" href="//code.org/tos">Terms of Service</a> </div> </div> <div class="divider show-small-desktop" id="before-help"></div> <div class="show-small-desktop"> <div class="item"> <a class="hamburgerlink" href="https://support.code.org" id="support" rel="noopener noreferrer nofollow" target="_blank">Help and support </a> </div> </div> <div class="show-small-desktop"> <div class="item"> <a class="hamburgerlink" href="https://support.code.org/hc/en-us/requests/new" id="report-bug" rel="noopener noreferrer nofollow" target="_blank">Report a problem</a> </div> </div> </div> <div class="clicktag show-small-desktop" id="hamburger-icon"> <span style="pointer-events: none"></span> </div> </div> </div> </nav> <div class="container_responsive"> <div> <main class="col-80-right"> <h1> About Us </h1> <div style="float: left; width: 280px; margin-right: 5%"> <style> .videothumbnail { cursor: pointer; width: 100%; } .videothumbnail .thumbnail-wrapper { position: relative; } .videothumbnail .thumbnail-wrapper .thumbnail-image { width: 100%; } .video-thumbnail-wrapper { position: relative; } .video-thumbnail-wrapper .play-button-wrapper { all: unset; position: absolute; border-radius: 100%; transition: background ease-in-out .2s; } .video-thumbnail-wrapper .play-button-wrapper:hover { background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper:focus { outline: #009EB0 solid 2px; outline-offset: 2px; background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper img.play { position: absolute; top: 0 !important; left: 0; width: 100%; z-index: 100; } .play-button-center .play-button-wrapper { top: 50%; left: 50%; transform: translate(-50%, -50%); width: 6em; height: 5.95em; background: rgba(0, 0, 0, 0.2); } .play-button-caption .play-button-wrapper { bottom: 5px; left: 5px; width: 40px; height: 40px; z-index: 100; } .play-button-caption .thumbnail-wrapper .video_caption_link::after { content: ' '; position: absolute; left: 0; bottom: 0; height: 50px; background-color: black; line-height: 50px; width: 100%; opacity: 0.4; z-index: -1; } .play-button-caption .thumbnail-wrapper .video_caption_link { position: absolute; bottom: 0; height: 50px; color: white; background-color: transparent; line-height: 50px; width: 100%; padding-left: 50px; z-index: 10; } .play-button-none img.play { display: none; } </style> <div class="videothumbnail play-button-center" onclick="return showVideo_codeorg_recruiting()"> <div class="thumbnail-wrapper"> <div class="video-thumbnail-wrapper"> <img alt="Video thumbnail" class="thumbnail-image" src="//i.ytimg.com/vi/mTGSiB4kB18/mqdefault.jpg"> <button class="play-button-wrapper"> <img alt="Play video " class="play" src="/shared/images/play-button.png"> </button> </div> <div class="video_caption_link"></div> </div> </div> <div class="modal fade" id="showVideo_codeorg_recruiting"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header" style="border-bottom-width: 0px; padding-top: 0px; padding-bottom: 4px; height:48px"> <button class="close" data-dismiss="modal" style="height: 48px" type="button"> <span aria-hidden="true" style="font-size:48px">×</span> <span class="sr-only">Close</span> </button> <div style="clear:both"></div> </div> <div class="modal-body" style="padding-top: 0px"> <style> .vjs-tech:focus, .vjs-poster:focus { outline: 0; } .download-link { display: inline-block; margin-top: 1rem; font-size: 1rem; } .download-link i::before { color: var(--brand_secondary_default); } </style> <div style="text-align:right;"> <link href="/css/generated/video_with_fallback-styles.css" rel="stylesheet"> <figure class="video-with-fallback"> <div class="videodiv"> <img src="/images/16x9.png"> <div class="insert_video_player" data-download-path="http://videos.code.org/social/about-codeorg.mp4" data-poster-path="//i.ytimg.com/vi/mTGSiB4kB18/mqdefault.jpg" data-video-code="mTGSiB4kB18"></div> </div> </figure> <div style="float:left"> <script> $(document).ready(function() { setupPopupWindows(); }); // This is a separate function so that popup links that might appear later than documentReady // (such as in modal popup windows) can be set up as popup windows too. function setupPopupWindows() { // Unbind previous click handlers before binding this new one, since this function finds all // window-popup links, even ones it would have setup already. $('a.window-popup').unbind().bind('click', function() { // Don't open a new window for Facebook on the mobile front page. if ($('body').hasClass('mobile-front') && $(this).hasClass('btn-facebook')) { return false; } var url = $(this).attr('href'); var width = 640; var height = 480; var left = (screen.width/2)-(width/2); var top = (screen.height/2)-(height/2); share = window.open(url,'Share', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); if (window.focus) { share.focus() } return false; }); } </script> <style> .share-buttons { display: flex; justify-content: start; gap: 1rem; @media (max-width: 640px) { flex-wrap: wrap; & a { margin: 0; } } } </style> <div class="share-buttons"> <a class="link-button secondary small window-popup share-button-facebook" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fyoutu.be%2FmTGSiB4kB18"> <i class="fa-brands fa-facebook"></i> Share on Facebook </a> <a class="link-button secondary small window-popup share-button-twitter" href="https://twitter.com/intent/tweet?related=codeorg&text=Meet+the+team+at+%40codeorg+and+see+how+much+they%E2%80%99ve+done%21+%28Thanks+%40apartovi+for+supporting+%40codeorg%29&url=https%3A%2F%2Fyoutu.be%2FmTGSiB4kB18"> <i class="fa-brands fa-twitter"></i> Share on Twitter </a> </div> </div> <div class="download-link"> <i class="fa-solid fa-download"></i> <a href="http://videos.code.org/social/about-codeorg.mp4"> Download video </a> </div> </div> </div> </div> </div> </div> <style> .modal{ text-align: center; } </style> <script> window["showVideo_codeorg_recruiting"] = function() { $("#showVideo_codeorg_recruiting").modal('show'); setupPopupWindows(); window["playVideo_codeorg_recruiting"](true); }; $(document).ready(function() { $("#showVideo_codeorg_recruiting").on('hidden.bs.modal', function () { // Pause the video. window["playVideo_codeorg_recruiting"](false); }); }); window["playVideo_codeorg_recruiting"] = function(play) { var fallbackVideo = $("#showVideo_codeorg_recruiting video"); var youtubeIframeContent = null; var videoDiv = $("#showVideo_codeorg_recruiting .videodiv"); if (videoDiv.length > 0) { var iframe = videoDiv[0].getElementsByTagName("iframe"); if (iframe.length > 0) { youtubeIframeContent = iframe[0].contentWindow; } } if (fallbackVideo.length > 0) { videojs(fallbackVideo[0], {}, function() { play ? this.play() : this.pause(); }); } else if (youtubeIframeContent) { func = play ? 'playVideo' : 'pauseVideo'; youtubeIframeContent.postMessage('{"event":"command","func":"' + func + '","args":""}', '*'); } } </script> </div> <div class="col-50"> Code.org® is an education innovation nonprofit dedicated to the vision that every student in every school has the opportunity to learn computer science and artificial intelligence as part of their core K-12 education. We expand access to and participation in computer science in schools, with a focus on increasing participation by young women and students from other underrepresented groups. The leading provider of K-12 computer science curriculum in the largest school districts in the United States, Code.org also organizes the annual <a href="http://hourofcode.com/">Hour of Code</a> campaign, which has engaged more than 15% of all students in the world. Code.org is supported by generous donors including Microsoft, Amazon, Google and <a href="/about/supporters">many others.</a> </div> <div class="div" style="clear: both;"></div> <h2> Over 80 million students and 2 million teachers on Code.org </h2> <section> <div class="col-33"> <center> <img src="/images/marketing/diversity/code_gender.png" style="max-width: 100%"> </center> </div> <div class="col-33"> <center> <img src="/images/marketing/diversity/code_urg.png" style="max-width: 100%"> </center> </div> <div class="col-33"> <center> <img src="/images/marketing/diversity/code_frl.png" style="max-width: 100%"> </center> </div> </section> <div class="div" style="clear: both;"> <figcaption style="text-align: center; font-size: 13px"> Code.org participation from the 2021-2022 school year. <a href="/diversity">See disaggregated data.</a> </figcaption> <br> Code.org increases diversity in computer science by reaching students of all backgrounds where they are — at their skill-level, in their schools, and in ways that inspire them to keep learning. The vast majority of the students on Code.org are from student groups historically underrepresented in computer science. Increasing diversity in computer science is foundational to our work, and <a href="/diversity">we encourage you to read more about our efforts</a>. </div> <h2> Code.org in the News </h2> <section> <p> See all past <a href="/about/news">news and announcements</a> </p> <div class="col-45" style="float: left; margin: 1%"> <style> .videothumbnail { cursor: pointer; width: 100%; } .videothumbnail .thumbnail-wrapper { position: relative; } .videothumbnail .thumbnail-wrapper .thumbnail-image { width: 100%; } .video-thumbnail-wrapper { position: relative; } .video-thumbnail-wrapper .play-button-wrapper { all: unset; position: absolute; border-radius: 100%; transition: background ease-in-out .2s; } .video-thumbnail-wrapper .play-button-wrapper:hover { background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper:focus { outline: #009EB0 solid 2px; outline-offset: 2px; background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper img.play { position: absolute; top: 0 !important; left: 0; width: 100%; z-index: 100; } .play-button-center .play-button-wrapper { top: 50%; left: 50%; transform: translate(-50%, -50%); width: 6em; height: 5.95em; background: rgba(0, 0, 0, 0.2); } .play-button-caption .play-button-wrapper { bottom: 5px; left: 5px; width: 40px; height: 40px; z-index: 100; } .play-button-caption .thumbnail-wrapper .video_caption_link::after { content: ' '; position: absolute; left: 0; bottom: 0; height: 50px; background-color: black; line-height: 50px; width: 100%; opacity: 0.4; z-index: -1; } .play-button-caption .thumbnail-wrapper .video_caption_link { position: absolute; bottom: 0; height: 50px; color: white; background-color: transparent; line-height: 50px; width: 100%; padding-left: 50px; z-index: 10; } .play-button-none img.play { display: none; } </style> <div class="videothumbnail play-button-center" onclick="return showVideo_Nasdaq()"> <div class="thumbnail-wrapper"> <div class="video-thumbnail-wrapper"> <img alt="Video thumbnail" class="thumbnail-image" src="//i.ytimg.com/vi/zxcBZg7jYlc/mqdefault.jpg"> <button class="play-button-wrapper"> <img alt="Play video Nasdaq interviews Code.org founder Hadi Partovi" class="play" src="/shared/images/play-button.png"> </button> </div> <div class="video_caption_link">Nasdaq interviews Code.org founder Hadi Partovi</div> </div> </div> <div class="modal fade" id="showVideo_Nasdaq"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header" style="border-bottom-width: 0px; padding-top: 0px; padding-bottom: 4px; height:48px"> <button class="close" data-dismiss="modal" style="height: 48px" type="button"> <span aria-hidden="true" style="font-size:48px">×</span> <span class="sr-only">Close</span> </button> <div style="clear:both"></div> </div> <div class="modal-body" style="padding-top: 0px"> <style> .vjs-tech:focus, .vjs-poster:focus { outline: 0; } .download-link { display: inline-block; margin-top: 1rem; font-size: 1rem; } .download-link i::before { color: var(--brand_secondary_default); } </style> <div style="text-align:right;"> <link href="/css/generated/video_with_fallback-styles.css" rel="stylesheet"> <figure class="video-with-fallback"> <div class="videodiv"> <img src="/images/16x9.png"> <div class="insert_video_player" data-poster-path="//i.ytimg.com/vi/zxcBZg7jYlc/mqdefault.jpg" data-video-code="zxcBZg7jYlc"></div> </div> </figure> <div style="float:left"> <script> $(document).ready(function() { setupPopupWindows(); }); // This is a separate function so that popup links that might appear later than documentReady // (such as in modal popup windows) can be set up as popup windows too. function setupPopupWindows() { // Unbind previous click handlers before binding this new one, since this function finds all // window-popup links, even ones it would have setup already. $('a.window-popup').unbind().bind('click', function() { // Don't open a new window for Facebook on the mobile front page. if ($('body').hasClass('mobile-front') && $(this).hasClass('btn-facebook')) { return false; } var url = $(this).attr('href'); var width = 640; var height = 480; var left = (screen.width/2)-(width/2); var top = (screen.height/2)-(height/2); share = window.open(url,'Share', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); if (window.focus) { share.focus() } return false; }); } </script> <style> .share-buttons { display: flex; justify-content: start; gap: 1rem; @media (max-width: 640px) { flex-wrap: wrap; & a { margin: 0; } } } </style> <div class="share-buttons"> </div> </div> </div> </div> </div> </div> </div> <style> .modal{ text-align: center; } </style> <script> window["showVideo_Nasdaq"] = function() { $("#showVideo_Nasdaq").modal('show'); setupPopupWindows(); window["playVideo_Nasdaq"](true); }; $(document).ready(function() { $("#showVideo_Nasdaq").on('hidden.bs.modal', function () { // Pause the video. window["playVideo_Nasdaq"](false); }); }); window["playVideo_Nasdaq"] = function(play) { var fallbackVideo = $("#showVideo_Nasdaq video"); var youtubeIframeContent = null; var videoDiv = $("#showVideo_Nasdaq .videodiv"); if (videoDiv.length > 0) { var iframe = videoDiv[0].getElementsByTagName("iframe"); if (iframe.length > 0) { youtubeIframeContent = iframe[0].contentWindow; } } if (fallbackVideo.length > 0) { videojs(fallbackVideo[0], {}, function() { play ? this.play() : this.pause(); }); } else if (youtubeIframeContent) { func = play ? 'playVideo' : 'pauseVideo'; youtubeIframeContent.postMessage('{"event":"command","func":"' + func + '","args":""}', '*'); } } </script> </div> <div class="col-45" style="float: left; margin: 1%"> <style> .videothumbnail { cursor: pointer; width: 100%; } .videothumbnail .thumbnail-wrapper { position: relative; } .videothumbnail .thumbnail-wrapper .thumbnail-image { width: 100%; } .video-thumbnail-wrapper { position: relative; } .video-thumbnail-wrapper .play-button-wrapper { all: unset; position: absolute; border-radius: 100%; transition: background ease-in-out .2s; } .video-thumbnail-wrapper .play-button-wrapper:hover { background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper:focus { outline: #009EB0 solid 2px; outline-offset: 2px; background: #6F488E; } .video-thumbnail-wrapper .play-button-wrapper img.play { position: absolute; top: 0 !important; left: 0; width: 100%; z-index: 100; } .play-button-center .play-button-wrapper { top: 50%; left: 50%; transform: translate(-50%, -50%); width: 6em; height: 5.95em; background: rgba(0, 0, 0, 0.2); } .play-button-caption .play-button-wrapper { bottom: 5px; left: 5px; width: 40px; height: 40px; z-index: 100; } .play-button-caption .thumbnail-wrapper .video_caption_link::after { content: ' '; position: absolute; left: 0; bottom: 0; height: 50px; background-color: black; line-height: 50px; width: 100%; opacity: 0.4; z-index: -1; } .play-button-caption .thumbnail-wrapper .video_caption_link { position: absolute; bottom: 0; height: 50px; color: white; background-color: transparent; line-height: 50px; width: 100%; padding-left: 50px; z-index: 10; } .play-button-none img.play { display: none; } </style> <div class="videothumbnail play-button-center" onclick="return showVideo_codeorg_cbs()"> <div class="thumbnail-wrapper"> <div class="video-thumbnail-wrapper"> <img alt="Video thumbnail" class="thumbnail-image" src="//i.ytimg.com/vi/sUXfjzzHO5g/mqdefault.jpg"> <button class="play-button-wrapper"> <img alt="Play video Code.org's work covered by CBS This Morning" class="play" src="/shared/images/play-button.png"> </button> </div> <div class="video_caption_link">Code.org's work covered by CBS This Morning</div> </div> </div> <div class="modal fade" id="showVideo_codeorg_cbs"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header" style="border-bottom-width: 0px; padding-top: 0px; padding-bottom: 4px; height:48px"> <button class="close" data-dismiss="modal" style="height: 48px" type="button"> <span aria-hidden="true" style="font-size:48px">×</span> <span class="sr-only">Close</span> </button> <div style="clear:both"></div> </div> <div class="modal-body" style="padding-top: 0px"> <style> .vjs-tech:focus, .vjs-poster:focus { outline: 0; } .download-link { display: inline-block; margin-top: 1rem; font-size: 1rem; } .download-link i::before { color: var(--brand_secondary_default); } </style> <div style="text-align:right;"> <link href="/css/generated/video_with_fallback-styles.css" rel="stylesheet"> <figure class="video-with-fallback"> <div class="videodiv"> <img src="/images/16x9.png"> <div class="insert_video_player" data-poster-path="//i.ytimg.com/vi/sUXfjzzHO5g/mqdefault.jpg" data-video-code="sUXfjzzHO5g"></div> </div> </figure> <div style="float:left"> <script> $(document).ready(function() { setupPopupWindows(); }); // This is a separate function so that popup links that might appear later than documentReady // (such as in modal popup windows) can be set up as popup windows too. function setupPopupWindows() { // Unbind previous click handlers before binding this new one, since this function finds all // window-popup links, even ones it would have setup already. $('a.window-popup').unbind().bind('click', function() { // Don't open a new window for Facebook on the mobile front page. if ($('body').hasClass('mobile-front') && $(this).hasClass('btn-facebook')) { return false; } var url = $(this).attr('href'); var width = 640; var height = 480; var left = (screen.width/2)-(width/2); var top = (screen.height/2)-(height/2); share = window.open(url,'Share', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); if (window.focus) { share.focus() } return false; }); } </script> <style> .share-buttons { display: flex; justify-content: start; gap: 1rem; @media (max-width: 640px) { flex-wrap: wrap; & a { margin: 0; } } } </style> <div class="share-buttons"> </div> </div> </div> </div> </div> </div> </div> <style> .modal{ text-align: center; } </style> <script> window["showVideo_codeorg_cbs"] = function() { $("#showVideo_codeorg_cbs").modal('show'); setupPopupWindows(); window["playVideo_codeorg_cbs"](true); }; $(document).ready(function() { $("#showVideo_codeorg_cbs").on('hidden.bs.modal', function () { // Pause the video. window["playVideo_codeorg_cbs"](false); }); }); window["playVideo_codeorg_cbs"] = function(play) { var fallbackVideo = $("#showVideo_codeorg_cbs video"); var youtubeIframeContent = null; var videoDiv = $("#showVideo_codeorg_cbs .videodiv"); if (videoDiv.length > 0) { var iframe = videoDiv[0].getElementsByTagName("iframe"); if (iframe.length > 0) { youtubeIframeContent = iframe[0].contentWindow; } } if (fallbackVideo.length > 0) { videojs(fallbackVideo[0], {}, function() { play ? this.play() : this.pause(); }); } else if (youtubeIframeContent) { func = play ? 'playVideo' : 'pauseVideo'; youtubeIframeContent.postMessage('{"event":"command","func":"' + func + '","args":""}', '*'); } } </script> </div> <div class="div" style="clear: both;"></div> </section> <h2> Our goals and metrics </h2> <section> <table> <thead> <tr> <th> Code.org Goal </th> <th> Accomplishment </th> </tr> </thead> <tbody> <tr> <td> Improve diversity in CS <em>(US students)</em> </td> <td> 45% of Code.org students are young women, 50% are students from marginalized racial and ethnic groups, and 46% of US students are in high needs schools. Read more about <a href="/diversity">our approach to diversity.</a> </td> </tr> <tr> <td> Inspire students </td> <td> Hundreds of millions have tried the <a href="http://hourofcode.com/">Hour of Code</a>. (1,734,966,543 served. 49% female) </td> </tr> <tr> <td> Reach classrooms </td> <td> 2,626,541 teachers have signed up to teach our intro courses on <a href="http://studio.code.org">Code Studio</a> and 88,064,133 students are enrolled. </td> </tr> <tr> <td> Prep new CS teachers </td> <td> We've prepared more than 106,000 new teachers to teach CS across grades K-12. Learn about our <a href="/educate">professional learning programs.</a> </td> </tr> <tr> <td> Change school district curriculum </td> <td> We've partnered with <a href="/educate/partner-districts">180+ of the largest school districts</a> and 60 regional partners to <a href="/educate/curriculum">add CS to school curriculum</a>. <a href="/educate/districts">Learn about becoming a regional partner.</a> </td> </tr> <tr> <td> Set up policies to support CS </td> <td> <a href="https://advocacy.code.org">Policies changed in 50 U.S. states</a> to establish CS education standards, make CS courses count towards high school graduation, etc. <a href="/advocacy/landscape.pdf">(details)</a> </td> </tr> <tr> <td> Go global </td> <td> Our courses are available in over 67 languages, used in 180+ countries. </td> </tr> </tbody> </table> <center style="margin-top: 10px"> <font size="1"> Source: Code Studio Activity and <a href="https://docs.google.com/document/d/1gySkItxiJn_vwb8HIIKNXqen184mRtzDX12cux0ZgZk/pub">surveys of participating educators</a> </font> </center> </section> <div class="row" id="infobottom" style="font-weight: 400; font-size: 16px; color: #6A6E73; margin-left: 10px; margin-right: 10px; margin-top: 20px;"> <div class="col-33" style="text-align:center; margin-top: 20px;"> <img alt="" src="/images/stats-kid1.jpg" style="width: 70%"> <br> "Every single day yielded the same results— 100% engagement." - Nina Nichols Peery, Teacher </div> <div class="col-33" style="text-align:center; margin-top: 20px;"> <img alt="" src="/images/stats-kid2.jpg" style="width: 70%"> <br> "I knew this was a <strong>once-in-a-lifetime</strong> chance." - Mariana Alzate, 5th grader </div> <div class="col-33" style="text-align:center; margin-top: 20px;"> <img alt="" src="/images/stats-kid3.jpg" style="width: 70%"> <br> "I have <strong>never, ever</strong> seen my students so excited about learning." - Frank Martinez, Teacher </div> </div> <h2> More information, history, and philosophy </h2> <p> In 2013, Code.org was launched by twin brothers <a href="/about/leadership/hadi_partovi">Hadi</a> and <a href="https://www.crunchbase.com/person/ali-partovi#/entity">Ali Partovi</a> with a <a href="https://www.youtube.com/watch?v=nKIu9yen5nc">video</a> promoting computer science. This video became #1 on YouTube for a day, and 15,000 schools reached out to us for help. Since then, we've expanded from a bootstrapped staff of volunteers to build a full organization supporting a worldwide movement. We believe that a quality computer science education should be available to every child, not just a lucky few. </p> <p> To support our goal, we do work across the education spectrum: designing our own courses or partnering with others, training teachers, partnering with large school districts, helping change government policies, expanding internationally via partnerships, and marketing to break stereotypes. </p> <p> Our work builds upon <a href="https://docs.google.com/document/d/1rdEUqAkYtKPMD4UeEmpZCAau4_AdIOGbZDqLkePAQrY/pub">decades of effort, by countless organizations and individuals</a> who have helped establish, fund, and spread computer science education. We're thankful to benefit from the tireless help of the broader computer science education community, and <a href="/about/supporters">we thank all the partners and individuals who have supported our impact over the years</a>). </p> <ul> <li> <a href="/about/annual-report">Code.org Annual Report</a> </li> <li> <a href="/about/values">Our core values and messaging guidelines</a> </li> <li> <a href="https://www.youtube.com/watch?v=m-U9wzC9xLk">TEDx talk by our founder Hadi Partovi about why computer science is for all (VIDEO)</a> </li> </ul> <div class="divider"> <hr> </div> <h2> A unifying approach in a divided world </h2> <p> Code.org's global role in the K-12 computer science movement is only possible because we use a unifying approach across diverse and often divided stakeholders. At a time of increasing polarization, the idea of increasing opportunity for students unites people from across the political spectrum. Code.org's team members, students, teachers, and supporters have diverse and diverging viewpoints, and they are all welcome in our mission. <a href="/about/unifying">Read more.</a> </p> <div class="divider"> <hr> </div> <h2> Code.org's International Reach </h2> <p> Over 40% of our website traffic comes from outside of the United States and that number continues to climb. In order to expand global access to computer science, our team works closely with <a href="https://code.org/about/partners">more than 100 international partners</a>, helping them to promote the Hour of Code, advocate for policy change, and train teachers. We are making computer science part of the international education discourse by partnering with ministries of education from around the world and working with international organizations like the Organization for Economic Co-operation and Development and the United Nations Educational, Scientific and Cultural Organization. </p> <h2> Our commitment to accessibility </h2> <p> Code.org believes computer science is foundational for all students and we are committed to equity, access, and opportunity in our organizational <a href="/about/values">values.</a> To achieve this goal, we work to identify and eliminate barriers that prevent the inclusion and full participation of students and educators with disabilities. To learn more about our efforts, see our <a href="/accessibility">accessibility statement.</a> </p> <div class="divider"> <hr> </div> <h2> Our commitment to free curriculum and open source technology </h2> <p> All curriculum resources and tutorials we author will forever be free to use and openly licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons</a> license, allowing others to make derivative education resources for non-commercial purposes. If you are interested in licensing our materials for commercial purposes, <a href="/contact">contact us</a>. Our courses are translated for worldwide use or by speakers of different languages. Our technology is developed as an <a href="https://github.com/code-dot-org/code-dot-org">open source project.</a> </p> <div class="divider"> <hr> </div> <h2> Code.org Advocacy Coalition </h2> <p> The <a href="/advocacy">Code.org Advocacy Coalition</a> is a bipartisan coalition of corporations and nonprofits that work together to help establish US federal and state policies to expand and sustain access to K-12 computer science and to broaden participation and diversity in the field. We bring together <a href="https://youtu.be/W5QGo_Yb_Pc?list=PLzdnOPI1iJNfygSF8gKBUq7fT4Y61_h2I">Republican and Democratic political leaders</a> in common cause supporting expanding access to and participation in K-12 computer science. </p> <div class="divider"> <hr> </div> <h2> K-12 Computer Science Framework </h2> <p> Code.org is a member of the steering committee that helped establish the <a href="http://k12cs.org">K-12 Computer Science Framework</a> - a high-level guide for states, districts, and organizations implementing computer science education. The Framework has won the support of hundreds of academics, K-12 educators, software companies, nonprofits, and states. </p> <div class="divider"> <hr> </div> <h2> Code.org Donors </h2> <p> Code.org® is a registered public 501c3 nonprofit, with support from the general public. We are grateful for the generous support we've received from <a href="/about/donors">individuals and organizations</a> who support our vision. </p> <p> Code.org's accomplishments (above) demonstrate our ability to leverage those dollars into strong outcomes. But given our nonprofit ambition that every child in every school should have access to computer science — to become literate citizens in today's digital world and to test their interests in exploring CS further as a career — we have a long way to go to meet a fundraising goal that will support that vision. </p> <p> <a class="link-button" href="/donate"> Make a donation </a> or <a> </a><a href="/about/donors">see our list of donors</a> </p> <p> Code.org IRS form 990 for <a href="/files/irs-form.pdf">2014</a>, <a href="/files/irs-form-2015.pdf">2015</a>, <a href="/files/irs-form-2016.pdf">2016</a>, <a href="/files/irs-form-2017.pdf">2017</a>, <a href="/files/irs-form-2018.pdf">2018</a>, <a href="/files/irs-form-2019.pdf">2019</a>, <a href="/files/irs-form-2020.pdf">2020</a>, <a href="/files/irs-form-2021.pdf">2021</a>, and <a href="/files/irs-form-2022.pdf">2022</a>. <a href="/about/donation-policy">Donation Policy.</a> </p> <div class="divider"> <hr> </div> <h2> Follow us </h2> <p> <a href="https://code.org/about/hear-from-us">Sign up to receive status updates</a> about progress in the K-12 computer science movement and about the work of Code.org. Or follow Code.org on social media: </p> <style> .flex-container { display: flex; gap: 1.25rem; } </style> <div class="flex-container"> <a href="https://www.facebook.com/Code.org" target="_blank"> <i class="fa fa-facebook fa-lg"></i> </a> <a href="https://twitter.com/codeorg" target="_blank"> <i class="fa fa-twitter fa-lg"></i> </a> <a href="https://www.instagram.com/codeorg" target="_blank"> <i class="fa fa-instagram fa-lg"></i> </a> <a href="https://www.tiktok.com/@code.org" target="_blank"> <i class="fa-brands fa-tiktok fa-lg"></i> </a> </div> <div class="divider"> <hr> </div> <style> .about-seals { display: flex; justify-content: space-between; flex-wrap: wrap; margin: 2rem 0; } @media screen and (max-width: 600px) { .about-seals { gap: 2rem; justify-content: center; } } img.best-of-stem { width: 135px; } @media screen and (max-width: 970px) { img.best-of-stem { width: 115px; } } img.common-sense { height: 118px; } @media screen and (max-width: 970px) { img.common-sense { height: 100px; } } img.privacy-pledge { width: 100px; } @media screen and (max-width: 970px) { img.privacy-pledge { width: 85px; } } img.charity-nav { width: 115px; } @media screen and (max-width: 970px) { img.charity-nav { width: 99px; } } .guidestar a { display: inline-block; position: relative; z-index: 1; } .guidestar object { width: 117px; height: 134px; position: relative; top: -8px; z-index: -1; } @media screen and (max-width: 970px) { .guidestar object { width: 97px; height: 116px; } } </style> <div class="about-seals"> <a href="https://www.bestofstemawards.com/" rel="noopener noreferrer" target="_blank"> <img class="best-of-stem" src="/images/about/seals/best_of_stem_2024.png"> </a> <a href="https://www.commonsense.org/education/reviews/codeorg" rel="noopener noreferrer" target="_blank"> <img class="common-sense" src="/images/about/seals/common_sense_selection_seals_learning.svg"> </a> <a class="guidestar" href="https://www.guidestar.org/profile/46-0858543" rel="noopener noreferrer" target="_blank"> <object data="https://widgets.guidestar.org/gximage2?o=9218725&l=v4" type="image/svg+xml"> <img src="/images/guidestar-logo.svg"> </object> </a> <a href="http://studentprivacypledge.org" rel="noopener noreferrer" target="_blank"> <img class="privacy-pledge" src="/images/student_privacy_pledge.png"> </a> <a href="https://www.charitynavigator.org/ein/460858543" rel="noopener noreferrer" target="_blank"> <img class="charity-nav" src="/images/about/seals/charity-navigator-seal.png"> </a> </div> </main> <div class="left-nav desktop-feature"> <div id="about_nav"> <span class="about_list"> <span class="about_list_item_selected">About Us</span> <hr class="narrow_hr"> <a class="about_list_item" href="/about/values">Values</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/leadership">Leadership</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/supporters">Supporters</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/partners">Partners</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/team">Full Team</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/news">Newsroom</a> <hr class="narrow_hr"> <a class="about_list_item" href="/about/careers">Careers</a> <hr class="narrow_hr"> <a class="about_list_item" href="/contact">Contact Us</a> <hr class="narrow_hr"> <a class="about_list_item" href="/faq">FAQs</a> <hr class="narrow_hr"> </span> </div> </div> </div> <div id="clearboth" style="clear:both"></div> <div class="desktop-feature"> <br> <br> <br> </div> </div> <div class="push"></div> </div> <div class="desktop-feature"> <footer id="pagefooter"> <div class="content"> <div class="left" style="float:left; max-width: 80%;"> <a class="whitefooterlink" href="/privacy" style="color: #ffa400;"> Privacy Policy </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/cookies"> Cookie Notice </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/about"> About </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/partners"> Partners </a> <div class="dim"> | </div> <a class="whitefooterlink" href="https://medium.com/@codeorg" target="_blank"> Blog </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/donate"> Donate </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/shop"> Store </a> <div class="dim"> | </div> <a class="whitefooterlink" href="http://support.code.org/" id="support" target="_blank"> Support </a> <div class="dim"> | </div> <a class="whitefooterlink" href="/tos"> Terms </a> <small class="dim"> "© Code.org, 2024. Code.org®, the CODE logo, Hour of Code® and CS Discoveries® are trademarks of Code.org." <br> Built on GitHub from Microsoft </small> <div class="powered-by-aws"> <a href="https://aws.amazon.com/what-is-cloud-computing"> <img alt="Powered by AWS Cloud Computing" src="/shared/images/Powered-By_logo-horiz_RGB_REV.png" style="width: 190px"> </a> </div> </div> <div class="right" style="float:right"> <div class="language-dropdown"> <form accept-charset="UTF-8" action="/about" method="post"> <select class="default" name="set_locale" onchange="this.form.submit();" style="color: black; width: 100%; max-width: 162.5px;"> <option value="ar-SA">العربية</option> <option value="az-AZ">Azərbaycan dili</option> <option value="bg-BG">български</option> <option value="bs-BA">Bosanski</option> <option value="ca-ES">Català</option> <option value="cs-CZ">Čeština</option> <option value="da-DK">Dansk</option> <option value="de-DE">Deutsch</option> <option value="dv-MV">ދިވެހި</option> <option value="el-GR">Ελληνικά</option> <option selected value="en-US">English</option> <option value="es-ES">Español (España)</option> <option value="es-MX">Español (LATAM)</option> <option value="et-EE">Eesti</option> <option value="eu-ES">Euskara</option> <option value="fa-IR">فارسی</option> <option value="fi-FI">Suomi</option> <option value="fil-PH">Filipino</option> <option value="fr-FR">Français</option> <option value="ga-IE">Gaeilge</option> <option value="gl-ES">Galego</option> <option value="he-IL">עברית</option> <option value="hi-IN">हिन्दी</option> <option value="hr-HR">Hrvatski</option> <option value="hu-HU">Magyar</option> <option value="hy-AM">Հայերեն</option> <option value="id-ID">Bahasa Indonesia</option> <option value="is-IS">Íslenska</option> <option value="it-IT">Italiano</option> <option value="ja-JP">日本語</option> <option value="ka-GE">ქართული</option> <option value="kk-KZ">Қазақша</option> <option value="km-KH">ភាសាខ្មែរ</option> <option value="kn-IN">ಕನ್ನಡ</option> <option value="ko-KR">한국어</option> <option value="ky-KG">Кыргызча</option> <option value="lt-LT">Lietuvių</option> <option value="lv-LV">Latviešu</option> <option value="mi-NZ">Māori (NZ)</option> <option value="mn-MN">Монгол хэл</option> <option value="mr-IN">मराठी</option> <option value="ms-MY">بهاس ملايو</option> <option value="my-MM">ဗမာစာ</option> <option value="nl-NL">Nederlands</option> <option value="nn-NO">Norsk (Nynorsk)</option> <option value="no-NO">Norsk (Bokmål)</option> <option value="pl-PL">Polski</option> <option value="pt-BR">Português (Brasil)</option> <option value="pt-PT">Português (Portugal)</option> <option value="ro-RO">Română</option> <option value="ru-RU">Pусский</option> <option value="se-FI">Davvisámegiella</option> <option value="si-LK">සිංහල</option> <option value="sk-SK">Slovenčina</option> <option value="sl-SI">Slovenščina</option> <option value="sm-WS">Sāmoa</option> <option value="sq-AL">Shqip</option> <option value="sr-SP">Cрпски</option> <option value="sv-SE">Svenska</option> <option value="ta-IN">தமிழ்</option> <option value="te-IN">తెలుగు</option> <option value="th-TH">ภาษาไทย</option> <option value="tr-TR">Türkçe</option> <option value="uk-UA">Українська</option> <option value="ur-PK">اردو</option> <option value="uz-UZ">Oʻzbekcha</option> <option value="vi-VN">Tiếng Việt</option> <option value="zh-CN">简体字</option> <option value="zh-TW">繁體字</option> </select> </form> </div> <div class="social-media" style="margin-top: 10px; margin-left: 10px;"> <small> <a aria-label="Code.org on Facebook" class="whitefooterlink" href="https://www.facebook.com/Code.org/" style="text-decoration: none;" target="_blank"> <i class="fa fa-facebook fa-lg"></i> </a> <a aria-label="Code.org on Twitter" class="whitefooterlink" href="https://twitter.com/codeorg" style="text-decoration: none;" target="_blank"> <i class="fa fa-twitter fa-lg"></i> </a> <a aria-label="Code.org on Instagram" class="whitefooterlink" href="https://www.instagram.com/codeorg/" style="text-decoration: none;" target="_blank"> <i class="fa fa-instagram fa-lg"></i> </a> <a aria-label="Code.org on Medium.com" class="whitefooterlink" href="https://medium.com/@codeorg" style="text-decoration: none;" target="_blank"> <img alt="" src="/images/icons/medium-monogram-white.png" style="width: 20px"> </a> </small> </div> </div> </div> </footer> </div> <div class="mobile-headers mobile-feature"> <style> #footer-links{float:right;color:white;font-size:12px;z-index:2}#footer-links ul{list-style:none;margin:0;padding:0}#footer-links ul li{display:inline;text-indent:0;padding:0}#footer-links ul li:before{content:none}#footer-links ul li:after{content:"|";margin:0 12px;opacity:0.5}#footer-links ul li:last-child:after{content:none}#footer-links a{color:white;font-weight:normal;font-family:var(--main-font);text-decoration:none}#footer-links a:hover{opacity:1.0}#footer-toggle{display:none;text-align:center;border-bottom:1px solid #aaa2bd;padding:8px 16px;margin:0 24px;cursor:pointer;margin-bottom:10px}#copyright,#copyright-non-en{float:left;color:white;font-size:12px;opacity:0.8}.social-media a{text-decoration:none;color:white}#non-en{height:90px;background-color:var(--brand_secondary_default)}#non-en .language-dropdown select{margin-top:20px;margin-left:25px}#copyright-non-en{margin-left:25px;padding-top:5px}@media screen and (max-width: 970px){#pagefooter{overflow:visible;padding:0;height:240px}.language-dropdown{padding-bottom:10px;padding-right:10px}.social-language-box{text-align:center}.social-media,.social-language-box .language-dropdown{text-align:center;display:inline;width:40%;padding-bottom:3px;margin-top:10px}.powered-by-aws{float:none;width:100%;text-align:center}#footer-links{float:none;margin-bottom:20px;padding-top:20px;text-align:center}#copyright{float:none;text-align:center;padding-top:10px;padding-bottom:10px}}@media screen and (min-width: 0px) and (max-width: 600px){#pagefooter{overflow:visible;padding:0;height:280px}#footer-links{position:relative;margin:0;padding-top:0px}#footer-links ul{display:none;position:absolute;bottom:38px;width:100%;background-color:#5c3f7f}#footer-links ul li{display:block;text-align:center;margin:0 24px;padding:8px 16px;border-bottom:1px solid #aaa2bd}#footer-links ul li:after{content:none}#footer-links ul li a{display:block;width:100%}#footer-toggle{display:block}#copyright{padding-left:10px;padding-right:10px}#privacy a{color:#ffa400;opacity:1;font-family:var(--main-font);font-weight:var(--semi-bold-font-weight)}#privacy a:hover{opacity:0.5}#down{display:none}.social-media,.language-dropdown{width:100%;display:block;padding-right:0px}.powered-by-aws{width:100%;text-align:center}} </style> <script defer src="/js/mobile-footer.js"></script> <footer id="pagefooter"> <div id="footer-links"> <ul> <li id="privacy"> <a href="/privacy" style="color: #ffa400;"> Privacy Policy </a> </li> <li> <a href="/cookies"> Cookie Notice </a> </li> <li> <a href="/about"> About </a> </li> <li> <a href="/partners"> Partners </a> </li> <li> <a href="https://medium.com/@codeorg" target="_blank"> Blog </a> </li> <li> <a href="/donate"> Donate </a> </li> <li> <a href="/shop"> Store </a> </li> <li> <a href="https://support.code.org/" id="support" target="_blank"> Support </a> </li> <li> <a href="/tos"> Terms </a> </li> </ul> <div id="footer-toggle"> Code.org <i class="fa fa-chevron-up" id="up"></i> <i class="fa fa-chevron-down" id="down"></i> </div> </div> <div class="social-language-box"> <div class="language-dropdown"> <form accept-charset="UTF-8" action="/about" method="post"> <select class="default" name="set_locale" onchange="this.form.submit();" style="color: black; width: 100%; max-width: 162.5px;"> <option value="ar-SA">العربية</option> <option value="az-AZ">Azərbaycan dili</option> <option value="bg-BG">български</option> <option value="bs-BA">Bosanski</option> <option value="ca-ES">Català</option> <option value="cs-CZ">Čeština</option> <option value="da-DK">Dansk</option> <option value="de-DE">Deutsch</option> <option value="dv-MV">ދިވެހި</option> <option value="el-GR">Ελληνικά</option> <option selected value="en-US">English</option> <option value="es-ES">Español (España)</option> <option value="es-MX">Español (LATAM)</option> <option value="et-EE">Eesti</option> <option value="eu-ES">Euskara</option> <option value="fa-IR">فارسی</option> <option value="fi-FI">Suomi</option> <option value="fil-PH">Filipino</option> <option value="fr-FR">Français</option> <option value="ga-IE">Gaeilge</option> <option value="gl-ES">Galego</option> <option value="he-IL">עברית</option> <option value="hi-IN">हिन्दी</option> <option value="hr-HR">Hrvatski</option> <option value="hu-HU">Magyar</option> <option value="hy-AM">Հայերեն</option> <option value="id-ID">Bahasa Indonesia</option> <option value="is-IS">Íslenska</option> <option value="it-IT">Italiano</option> <option value="ja-JP">日本語</option> <option value="ka-GE">ქართული</option> <option value="kk-KZ">Қазақша</option> <option value="km-KH">ភាសាខ្មែរ</option> <option value="kn-IN">ಕನ್ನಡ</option> <option value="ko-KR">한국어</option> <option value="ky-KG">Кыргызча</option> <option value="lt-LT">Lietuvių</option> <option value="lv-LV">Latviešu</option> <option value="mi-NZ">Māori (NZ)</option> <option value="mn-MN">Монгол хэл</option> <option value="mr-IN">मराठी</option> <option value="ms-MY">بهاس ملايو</option> <option value="my-MM">ဗမာစာ</option> <option value="nl-NL">Nederlands</option> <option value="nn-NO">Norsk (Nynorsk)</option> <option value="no-NO">Norsk (Bokmål)</option> <option value="pl-PL">Polski</option> <option value="pt-BR">Português (Brasil)</option> <option value="pt-PT">Português (Portugal)</option> <option value="ro-RO">Română</option> <option value="ru-RU">Pусский</option> <option value="se-FI">Davvisámegiella</option> <option value="si-LK">සිංහල</option> <option value="sk-SK">Slovenčina</option> <option value="sl-SI">Slovenščina</option> <option value="sm-WS">Sāmoa</option> <option value="sq-AL">Shqip</option> <option value="sr-SP">Cрпски</option> <option value="sv-SE">Svenska</option> <option value="ta-IN">தமிழ்</option> <option value="te-IN">తెలుగు</option> <option value="th-TH">ภาษาไทย</option> <option value="tr-TR">Türkçe</option> <option value="uk-UA">Українська</option> <option value="ur-PK">اردو</option> <option value="uz-UZ">Oʻzbekcha</option> <option value="vi-VN">Tiếng Việt</option> <option value="zh-CN">简体字</option> <option value="zh-TW">繁體字</option> </select> </form> </div> <div class="social-media"> <a aria-label="Code.org on Facebook" class="social-icon" href="https://www.facebook.com/Code.org" target="_blank"> <i class="fa fa-facebook fa-lg"></i> </a> <a aria-label="Code.org on Twitter" class="social-icon" href="https://twitter.com/codeorg" target="_blank"> <i class="fa fa-twitter fa-lg"></i> </a> <a aria-label="Code.org on Instagram" class="social-icon" href="https://www.instagram.com/codeorg" target="_blank"> <i class="fa fa-instagram fa-lg"></i> </a> <a aria-label="Code.org on Medium.com" class="social-icon" href="https://medium.com/@codeorg" target="_blank"> <img alt="" src="/images/icons/medium-monogram-white.png" style="width: 20px"> </a> </div> </div> <div id="copyright"> © Code.org, 2024. Code.org®, the CODE logo and Hour of Code® are trademarks of Code.org. <br> Built on GitHub from Microsoft </div> <div class="powered-by-aws"> <a href="https://aws.amazon.com/what-is-cloud-computing"> <img alt="Powered by AWS Cloud Computing" src="/shared/images/Powered-By_logo-horiz_RGB_REV.png" style="width: 190px"> </a> </div> </footer> </div> <script defer src="/js/bootstrap.min.js" type="text/javascript"></script> <div class="modal fade" id="selectLanguage"> <div class="modal-dialog" width="500px"> <div class="modal-content"> <div class="modal-header"> <button class="close" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> <span class="sr-only">Close</span> </button> <img class="lazyload" data-src="/images/fit-320/avatars/flag_sphere.png" style="width: 256px; height: 256px;"> </div> <div class="modal-body"> <h4 class="modal-title">Please select your language</h4> <form accept-charset="UTF-8" action="/about" method="post"> <select class="default" name="set_locale" onchange="this.form.submit();" style="color: black; width: 100%; max-width: 162.5px;"> <option value="ar-SA">العربية</option> <option value="az-AZ">Azərbaycan dili</option> <option value="bg-BG">български</option> <option value="bs-BA">Bosanski</option> <option value="ca-ES">Català</option> <option value="cs-CZ">Čeština</option> <option value="da-DK">Dansk</option> <option value="de-DE">Deutsch</option> <option value="dv-MV">ދިވެހި</option> <option value="el-GR">Ελληνικά</option> <option selected value="en-US">English</option> <option value="es-ES">Español (España)</option> <option value="es-MX">Español (LATAM)</option> <option value="et-EE">Eesti</option> <option value="eu-ES">Euskara</option> <option value="fa-IR">فارسی</option> <option value="fi-FI">Suomi</option> <option value="fil-PH">Filipino</option> <option value="fr-FR">Français</option> <option value="ga-IE">Gaeilge</option> <option value="gl-ES">Galego</option> <option value="he-IL">עברית</option> <option value="hi-IN">हिन्दी</option> <option value="hr-HR">Hrvatski</option> <option value="hu-HU">Magyar</option> <option value="hy-AM">Հայերեն</option> <option value="id-ID">Bahasa Indonesia</option> <option value="is-IS">Íslenska</option> <option value="it-IT">Italiano</option> <option value="ja-JP">日本語</option> <option value="ka-GE">ქართული</option> <option value="kk-KZ">Қазақша</option> <option value="km-KH">ភាសាខ្មែរ</option> <option value="kn-IN">ಕನ್ನಡ</option> <option value="ko-KR">한국어</option> <option value="ky-KG">Кыргызча</option> <option value="lt-LT">Lietuvių</option> <option value="lv-LV">Latviešu</option> <option value="mi-NZ">Māori (NZ)</option> <option value="mn-MN">Монгол хэл</option> <option value="mr-IN">मराठी</option> <option value="ms-MY">بهاس ملايو</option> <option value="my-MM">ဗမာစာ</option> <option value="nl-NL">Nederlands</option> <option value="nn-NO">Norsk (Nynorsk)</option> <option value="no-NO">Norsk (Bokmål)</option> <option value="pl-PL">Polski</option> <option value="pt-BR">Português (Brasil)</option> <option value="pt-PT">Português (Portugal)</option> <option value="ro-RO">Română</option> <option value="ru-RU">Pусский</option> <option value="se-FI">Davvisámegiella</option> <option value="si-LK">සිංහල</option> <option value="sk-SK">Slovenčina</option> <option value="sl-SI">Slovenščina</option> <option value="sm-WS">Sāmoa</option> <option value="sq-AL">Shqip</option> <option value="sr-SP">Cрпски</option> <option value="sv-SE">Svenska</option> <option value="ta-IN">தமிழ்</option> <option value="te-IN">తెలుగు</option> <option value="th-TH">ภาษาไทย</option> <option value="tr-TR">Türkçe</option> <option value="uk-UA">Українська</option> <option value="ur-PK">اردو</option> <option value="uz-UZ">Oʻzbekcha</option> <option value="vi-VN">Tiếng Việt</option> <option value="zh-CN">简体字</option> <option value="zh-TW">繁體字</option> </select> </form> </div> <div class="modal-footer"> <button class="btn btn-primary" data-dismiss="modal" type="button">Submit</button> </div> </div> </div> </div> <style> .modal{ text-align: center; } </style> <script> function setCookie(key, value, days) { var expires = new Date(); expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000)); document.cookie = key + '=' + value + ';expires=' + expires.toUTCString(); } function getCookie(key) { var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)'); return keyValue ? keyValue[2] : null; } $( document ).ready(function() { already_shown = !!getCookie('_loc_notice'); if(!already_shown) { $.getJSON( "/v2/client-location", function( data ) { country_code = data['country_code']; if(country_code != 'US') { $('#selectLanguage').modal('show') } }); setCookie('_loc_notice', '1', 365) } }); </script> <script src="/js/font_awesome_icon_class.js"></script> </body> </html>